session-review: add collaboration lens for cross-project user-preference signal#56
Merged
Merged
Conversation
…nce signal Step 1 now scans with two lenses (technical + collaboration). Signal Test Q2 softened to allow cross-project user-collaboration preferences alongside project-specific findings. Categorization Criteria split into vault-routes (AGENTS.md / .notes/ / daily plan) and memory-routes (harness memory for user-preference / project-motivation / external-system-pointer signal). Hub Capture Triggers in AGENTS.md now carry an explicit scope note: the table covers vault-note capture; cross-project user-collaboration preferences route to the harness memory system. The plugin owns the router, not the memory destination — Step 9 hands approved memory recommendations off to the user / hub agent rather than writing them. Closes #13.
- Memory routing in Step 1.5 was lens-keyed, but project-motivation and
external-system-pointer rows can surface from technical-lens reads. Route
by destination row (not lens) and rephrase Q2 as a vault-vs-memory fork.
- Q4 (readable in six months) used Obsidian-only language (wikilinks,
Saturday); broaden to cover memory records too.
- Step 5 now requires human approval explicitly — a hub agent invoking the
skill autonomously can't self-approve on the user's behalf, since the
collaboration lens is fed by session content.
- Define `{slug}` in the Memory recommendation destination hint
(`~/.claude/projects/` directory, abs path with `/` → `-`).
- Tighten the Memory template approval line; drop the redundant restatement
of "skill doesn't write to memory" (covered by template preamble + Step 9
+ Guardrails already).
Three-lens review surfaced 3 Major + 4 Minor + 4 Nit findings; all 11 accepted and folded in. - SKILL.md Step 1.5/Step 3 — reconcile the routing rule. Step 1.5 already said "by destination row, not by lens"; Step 3 contradicted it by splitting on lens. Routing rule now lives in one authoritative place (Step 1.5) and Step 3 references it. - SKILL.md Step 1.5 — restore Q3 (future-actionable) for memory-route candidates. The previous "Q3 is implicit" framing made the filter more permissive than advertised. - SKILL.md memory-routes table — add a scoping note under the external-system-pointer row so private internal-infra pointers don't leak into cross-project memory readable by every future agent. - SKILL.md memory-recommendation template — require third-person declarative phrasing for the draft paragraph so prompt-injection-shaped session content stands out at the approval gate. Add slug-verification hint (`ls ~/.claude/projects/`) so a hub agent acting on the destination hint doesn't silently write to the wrong path. Drop the "no second gate" footer clause that confused more than it clarified. - SKILL.md Step 5 — reshape new sentence positively (per AGENTS.md positive-prompts convention) and trim the misleading "since the collaboration lens by design is fed by session content" rationale (the rule applies to every route). - SKILL.md guardrails — replace duplicated both-lenses guard with a cross-reference to Edge Cases — No survivors. - AGENTS.md Capture Triggers Scope paragraph — drop the abstract closing sentence; the concrete sentences already say it. - CHANGELOG.md — trim the 5-clause Unreleased entry to one sentence per the changelog convention.
Pass-2 review surfaced 1 Major + 5 Minor + 1 Nit; six accepted, one acknowledged with no edit (security observational). - SKILL.md scoping note (external-system-pointer) — trim to one sentence; the example list and trailing clause were doing the same work. - SKILL.md Step 4 — add "Memory recommendation" to the list of templates so an agent reading Step 4 in isolation has a cue to use it for memory-route survivors. - SKILL.md memory-recommendation intro — drop the prompt-injection-vector mechanism sentence; the gate-visibility sentence carries the rule and the word "injection" still cues the careful reader. - SKILL.md memory-recommendation destination hint — drop the redundant /-to-- transformation explanation; the `ls ~/.claude/projects/` verify hint covers it. - SKILL.md Step 3 — drop redundant "always memory-route" example; Step 1.5 is the authoritative statement, Step 3 just cross-refers. - AGENTS.md Scope paragraph — drop "(e.g., Claude Code auto-memory)" parenthetical; AGENTS.md framing (line 3) is cross-tool, the SKILL.md cross-reference carries the harness-specific detail. The security observational finding (internal-vs-public infra is an LLM judgment call) is acknowledged: no structural enforcement is possible at the markdown-skill layer; the scoping note + approval gate are the correct mitigation.
Pass-3 review surfaced 1 Minor + 3 Nit; all four accepted. - SKILL.md memory template — replace hardcoded "Bryan prefers X" with "[User] prefers X" per AGENTS.md "never hard-code user-specific values" convention. Skill bodies ship to anyone; the example must be generic. - SKILL.md Step 1.5 — drop the "and a collaboration-lens finding is always memory-route" subclaim (implied by "by row, not by lens"; the lens definition doesn't allow a vault row to absorb a collab finding anyway) and the now-unneeded "See Step 3" pointer (Step 3 already cross-references Step 1.5 — one direction is enough). - SKILL.md Edge Cases / No survivors — clarify the both-vs-three oscillation by enumerating the three channels (technical lens, collaboration lens, daily-plan scan).
Pass-4 review surfaced 2 Nits; both accepted. - SKILL.md guardrail "No signal" — change "confirming both lenses ran" to "confirming all three channels came up empty" so it matches the pass-3 Edge Cases definition (technical lens + collab lens + Step 1.6 daily-plan scan). Without this, an agent satisfying the literal guardrail could skip Step 1.6 and still declare no-signal. - SKILL.md Step 3 — drop "Routing is by row, not by lens" restatement; the rule lives in Step 1.5 and Step 3 already cross-references it.
5 tasks
This was referenced May 1, 2026
SnowboardTechie
added a commit
that referenced
this pull request
May 6, 2026
…gnal (#80) ## Summary Adds a third lens to `session-review`'s Step 1 alongside the existing technical (vault) and collaboration (memory) lenses. The new **plugin-improvement lens** scans for moments where an Athena Notes agent or skill misbehaved or has a clear sharp edge worth filing, runs them through the Signal Test with issue-route tunings, surfaces survivors as drafts at the Step 5 approval gate, and on approval invokes `/issue-create` with the draft body as seed text. Two gates total: this skill's Step 5 catches "is this worth filing?", `/issue-create`'s Stage 3.4 catches "is the post correct?". Strictly scoped — only `plugins/athena-notes/` agents and skills. Cross-plugin gripes continue routing through the collaboration lens to memory; generic engineering tech-debt is `engineering:tech-debt`'s territory. Mirrors the structural shape of [#56](#56) (the collaboration-lens precedent [#75](#75) cites): Step 1 lens addition, Signal Test extension, categorization-table row, output template, handoff step, edge-case + guardrail updates, plus the same one-line `AGENTS.md` scope-note extension and `CHANGELOG` bullet. Closes [#75](#75). ## Test plan - [x] `python3 scripts/lint-frontmatter.py plugins/athena-notes/skills/session-review/SKILL.md` passes (skill body is LLM instructions; no test suite touches `session-review`). - [x] Readback of the edited Step 1 / Step 1.5 / Categorization Criteria / Output Templates / Step 10 / Edge Cases / Guardrails sections to confirm the three lenses are syntactically parallel. - [x] Confirmed a session with zero plugin-improvement signal produces identical output for the existing channels — no Step changed its behavior conditional on the new lens. - [x] Verified the GitHub-issue draft template's section headings match `/issue-create` Stage 1.3's six default-structure headings exactly (Problem / Motivation, Proposed behavior, Scope (in/out), Implementation hints, Acceptance criteria, Open questions) so Stage 2.1's "skip if already answered" fires on each area. - [x] Self-review: four passes of the `correctness` / `security` / `simplicity` lenses; 15 findings accepted across passes, 7 push-backs, 3 skips. Audit at `~/.claude/issue-work/SnowboardTechie-athena-notes-75/summary.md`. ## Changelog - [x] **Non-release PR** — added a bullet under `## [Unreleased]` in `CHANGELOG.md`.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a collaboration lens to
session-reviewso the skill can catch cross-project user-collaboration signal (how the user thinks, what they anchor on) — not just technical artifacts. Routes those findings to the harness memory system instead of vault notes; the plugin owns the router, not the destination.AGENTS.mdcarry an explicit scope note: the table covers vault-note capture; cross-project preferences route to harness memory persession-review's lens.Closes #13.
Self-review findings
Three-lens self-review surfaced 1 Major + 5 Minor + 3 Nit findings. 7 accepted and fixed in the second commit (
809bd42); 2 pushed back with rationale (Q1/Q3 inline justification stays — helps an LLM interpreter judge edge cases; Step 9 dir-level path stays — different scope from the template's file-level destination hint).The Major was a real routing bug introduced in the first commit: memory-routes table had
project motivationandexternal-system pointerrows that the lens-keyed routing in Step 1.5 never reached, since those can surface from the technical lens (e.g., discovering an auth migration is compliance-driven). Fixed by routing-by-destination-row, not by lens, and rephrasing Q2 as a vault-vs-memory sub-list (which collaterally addresses the simplicity Q2-density nit). Full triage in~/.claude/issue-work/SnowboardTechie-athena-notes-13/summary.md.Test plan
python3 scripts/lint-frontmatter.py plugins/athena-notes/skills/session-review/SKILL.md plugins/athena-notes/AGENTS.md— passes (14 agents, 18 skills validated).frontmatter-lint,docs-lint,version-check(CHANGELOG.md is in the diff alongside the versionable paths so version-check is satisfied; non-release PR — noplugin.jsonbump).Functional verification of the new collaboration-lens flow happens the next time
/session-reviewruns against a session with collab signal — markdown skill bodies don't have unit tests in this repo.Changelog
## [Unreleased]inCHANGELOG.md.vX.Y.Z) — N/Aplugins/athena-notes/skills/session-review/SKILL.md)