Problem / Motivation
Step 5 (approval gate) presents memory-route candidates using the Memory-recommendation template, which already carries Route, Destination hint, Trigger moment, and the draft content. That is the handoff artifact — the user reads it, types approval, and a downstream actor (user or hub agent) has everything needed to make the write.
Step 9 then instructs:
Surface the approved recommendations one more time at the end of the run with the harness-specific destination clearly marked, so the next handoff has everything it needs.
The re-surface is identical to what Step 5 already showed. Hit in practice today (2026-05-11 session, simpler-grants-protocol project): after the user typed approved at the Step 5 gate, the skill re-printed the same template per Step 9. The user read it as a re-confirmation request and replied "I already approved this, why are you confirming again?"
Root cause is structural, not interpretive — the skill text literally says "one more time," so faithful execution produces the double-print. AGENTS.md (Step 7) and daily-plan (Step 8) routes do not have this issue because their Step 9-equivalents are actual write steps, not surface steps.
Proposed behavior
Drop the re-surface in Step 9. Step 5's approval-gate output is the handoff. Post-edit, Step 9 reads roughly:
Step 9: Hand off approved memory recommendations
Memory-route candidates have no automated write step. After the Step 5 approval gate, the skill's job is done — the user (or a separate Claude Code session with memory-access tooling that can write to ~/.claude/projects/*/memory/) makes the actual write per the Step 5 output.
No additional print, no "one more time."
Scope
In scope
- Edit Step 9 of
plugins/cairn-notes/skills/session-review/SKILL.md to remove the "Surface the approved recommendations one more time at the end of the run..." sentence.
- Keep Step 9's framing of the no-automated-write contract and the user/hub-agent split — only the redundant surface goes.
- CHANGELOG entry under
## [Unreleased].
Out of scope
- Touching the "Do NOT write to harness memory directly" guardrail. It is portability-correct (different harnesses have different memory write access; the skill is designed to run on multiple platforms) and stays.
- AGENTS.md (Step 7) and daily-plan (Step 8) routes. Their Step-equivalents are actual write steps via the Edit tool, not re-surface steps. No regression risk there.
- The Step 5 Memory-recommendation template itself. It already carries everything a downstream actor needs.
Implementation hints
Closest precedent for the edit shape: PR #56 (which closed #13) added the collaboration lens including the Step 9 re-surface as part of introducing the memory route. The redundancy was an artifact of that lens-addition mirroring the AGENTS.md/daily-plan write-step pattern even though memory has no write step the skill performs. The fix reverses only that mirror, not the lens or the no-direct-write contract.
Lint: python3 scripts/lint-frontmatter.py plugins/cairn-notes/skills/session-review/SKILL.md.
Acceptance criteria
Problem / Motivation
Step 5 (approval gate) presents memory-route candidates using the Memory-recommendation template, which already carries
Route,Destination hint,Trigger moment, and the draft content. That is the handoff artifact — the user reads it, types approval, and a downstream actor (user or hub agent) has everything needed to make the write.Step 9 then instructs:
The re-surface is identical to what Step 5 already showed. Hit in practice today (2026-05-11 session, simpler-grants-protocol project): after the user typed
approvedat the Step 5 gate, the skill re-printed the same template per Step 9. The user read it as a re-confirmation request and replied "I already approved this, why are you confirming again?"Root cause is structural, not interpretive — the skill text literally says "one more time," so faithful execution produces the double-print. AGENTS.md (Step 7) and daily-plan (Step 8) routes do not have this issue because their Step 9-equivalents are actual write steps, not surface steps.
Proposed behavior
Drop the re-surface in Step 9. Step 5's approval-gate output is the handoff. Post-edit, Step 9 reads roughly:
No additional print, no "one more time."
Scope
In scope
plugins/cairn-notes/skills/session-review/SKILL.mdto remove the "Surface the approved recommendations one more time at the end of the run..." sentence.## [Unreleased].Out of scope
Implementation hints
Closest precedent for the edit shape: PR #56 (which closed #13) added the collaboration lens including the Step 9 re-surface as part of introducing the memory route. The redundancy was an artifact of that lens-addition mirroring the AGENTS.md/daily-plan write-step pattern even though memory has no write step the skill performs. The fix reverses only that mirror, not the lens or the no-direct-write contract.
Lint:
python3 scripts/lint-frontmatter.py plugins/cairn-notes/skills/session-review/SKILL.md.Acceptance criteria
session-review/SKILL.mdno longer instructs a re-surface of approved memory recommendations.Route,Destination hint,Trigger moment, and draft content.## [Unreleased].