@jaybeeuu/agent-cortex 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +437 -0
  2. package/README.md +46 -15
  3. package/agents/README.md +22 -10
  4. package/agents/plan/agent.md +2 -2
  5. package/agents/ralph/agent.md +128 -91
  6. package/agents/ralph/claude/frontmatter.json +3 -3
  7. package/agents/ralph/claude/wake.md +46 -0
  8. package/agents/ralph/pi/{polling.md → wake.md} +35 -20
  9. package/agents/ralph-plan/agent.md +23 -11
  10. package/bin/agent-cortex.mjs +66 -4
  11. package/bin/installers/claude.mjs +262 -77
  12. package/bin/installers/pi.mjs +200 -24
  13. package/extensions/agent-guardrails/README.md +1 -1
  14. package/extensions/agent-guardrails/guardrails.ts +1 -1
  15. package/extensions/agent-guardrails/index.ts +1 -1
  16. package/extensions/agent-modes/discover.test.ts +2 -2
  17. package/extensions/output-style/README.md +58 -0
  18. package/extensions/output-style/index.ts +23 -0
  19. package/extensions/output-style/output-style.md +43 -0
  20. package/extensions/output-style/output-style.test.ts +50 -0
  21. package/extensions/output-style/output-style.ts +32 -0
  22. package/extensions/output-style/package.json +19 -0
  23. package/hooks/claude/scripts/notify.mjs +8 -1
  24. package/lib/cli.mjs +91 -2
  25. package/package.json +29 -4
  26. package/scripts/check-changeset.mjs +4 -0
  27. package/scripts/check-no-sync.mjs +5 -1
  28. package/scripts/check-skill-frontmatter.mjs +21 -0
  29. package/scripts/lib/compose-agent.mjs +69 -9
  30. package/scripts/lib/fs.mjs +10 -2
  31. package/scripts/lib/migrate.mjs +736 -0
  32. package/scripts/lib/release-gates.mjs +21 -1
  33. package/scripts/lib/skill-frontmatter.mjs +152 -0
  34. package/scripts/lib/skill-links.mjs +52 -0
  35. package/scripts/lib/verify-worker-tree.mjs +25 -0
  36. package/scripts/resolve-publish-command.mjs +4 -0
  37. package/skills/engineering/design-an-interface/SKILL.md +3 -3
  38. package/skills/engineering/grill-with-docs/SKILL.md +3 -5
  39. package/skills/engineering/improve-codebase-architecture/SKILL.md +5 -4
  40. package/skills/engineering/tdd/SKILL.md +5 -7
  41. package/skills/engineering/technical-direction/SKILL.md +5 -5
  42. package/skills/planning/classify-bead/REFERENCE.md +3 -3
  43. package/skills/planning/classify-bead/SKILL.md +14 -9
  44. package/skills/planning/classify-bead/scripts/classify-bead.mjs +5 -4
  45. package/skills/planning/create-task/REFERENCE.md +52 -3
  46. package/skills/planning/create-task/SKILL.md +70 -26
  47. package/skills/planning/create-task/scripts/{create-chores.ts → create-chores.mjs} +48 -23
  48. package/skills/planning/flesh-out-idea/REFERENCE.md +116 -0
  49. package/skills/planning/flesh-out-idea/SKILL.md +146 -0
  50. package/skills/planning/prd-to-tasks/REFERENCE.md +54 -5
  51. package/skills/planning/prd-to-tasks/SKILL.md +22 -16
  52. package/skills/planning/record-idea/FORMAT.md +66 -17
  53. package/skills/planning/record-idea/SKILL.md +48 -24
  54. package/skills/planning/request-refactor-plan/SKILL.md +4 -4
  55. package/skills/planning/spec-to-tickets/SKILL.md +5 -5
  56. package/skills/planning/write-a-prd/SKILL.md +8 -9
  57. package/skills/planning/write-a-ticket/SKILL.md +4 -6
  58. package/skills/productivity/bd-tool/SKILL.md +15 -10
  59. package/skills/productivity/grill-me/SKILL.md +5 -0
  60. package/skills/productivity/init-beads/SKILL.md +3 -3
  61. package/skills/productivity/migration/REFERENCE.md +227 -0
  62. package/skills/productivity/migration/SKILL.md +188 -0
  63. package/skills/productivity/validate-agent-dir/scripts/{validate-agent-dir.ts → validate-agent-dir.mjs} +49 -28
  64. package/skills/productivity/write-a-skill/SKILL.md +5 -5
  65. package/skills/review/maintain-agent-docs/SKILL.md +5 -7
  66. package/skills/review/refactor-skill/SKILL.md +4 -3
  67. package/skills/review/review-security/SKILL.md +3 -5
  68. package/skills/style/style-code/SKILL.md +5 -10
  69. package/skills/style/style-comms/SKILL.md +5 -7
  70. package/skills/style/style-documentation/SKILL.md +5 -6
  71. package/skills/style/style-tests/SKILL.md +5 -7
  72. package/skills/workflow/git-workflow/SKILL.md +28 -4
  73. package/skills/workflow/hitl-collab/SKILL.md +4 -6
  74. package/skills/workflow/plan/SKILL.md +41 -30
  75. package/skills/workflow/ralph/REFERENCE.md +209 -55
  76. package/skills/workflow/ralph/SKILL.md +89 -50
  77. package/skills/workflow/ralph/scripts/pending-gates.mjs +134 -0
  78. package/skills/workflow/run-pipeline-stage/SKILL.md +72 -71
  79. package/skills/workflow/run-pipeline-stage/playbooks/code.md +11 -0
  80. package/skills/workflow/run-pipeline-stage/playbooks/document.md +12 -0
  81. package/skills/workflow/run-pipeline-stage/playbooks/fix.md +12 -0
  82. package/skills/workflow/run-pipeline-stage/playbooks/review.md +11 -0
  83. package/skills/workflow/run-pipeline-stage/playbooks/verify.md +13 -0
  84. package/skills/workflow/run-pipeline-stage/prompts/stage-runner.md +73 -1
  85. package/token-map.README.md +9 -4
  86. package/token-map.json +13 -6
  87. package/.agents/skills/style-versioning/SKILL.md +0 -172
  88. package/.changeset/README.md +0 -8
  89. package/.changeset/config.json +0 -11
  90. package/.github/workflows/ci.yml +0 -302
  91. package/.junie/guidelines.md +0 -87
  92. package/.junie/mcp/mcp.json +0 -10
  93. package/AGENTS.md +0 -151
  94. package/agents/ralph/claude/polling.md +0 -31
  95. package/agents-native/ralph.md +0 -193
  96. package/docs/claude-hooks.md +0 -128
  97. package/docs/commit-signing.md +0 -231
  98. package/docs/ideas/auto-model-selection.md +0 -75
  99. package/docs/ideas/ban-content-assertion-tests.md +0 -75
  100. package/docs/ideas/bead-progress-notes-for-session-resumption.md +0 -75
  101. package/docs/ideas/classify-beads-via-deterministic-script-with-agent-fallback.md +0 -70
  102. package/docs/ideas/ctx-alias-version-and-update-commands.md +0 -65
  103. package/docs/ideas/ctx-feedback-command-for-capturing-ideas-from-any-machine.md +0 -67
  104. package/docs/ideas/dedicated-review-tests-skill.md +0 -71
  105. package/docs/ideas/deployment-beads-for-post-merge-pipelines.md +0 -36
  106. package/docs/ideas/design-and-delivery-as-separate-bead-trees/design-and-delivery-as-separate-bead-trees.md +0 -99
  107. package/docs/ideas/enable-signed-commit-enforcement-changesets-bot-commits-must-be-signed.md +0 -42
  108. package/docs/ideas/extension-manifests.md +0 -121
  109. package/docs/ideas/improve-pi-system-prompt.md +0 -37
  110. package/docs/ideas/map-every-cortex-tool-to-a-real-pi-equivalent.md +0 -95
  111. package/docs/ideas/model-selector.md +0 -40
  112. package/docs/ideas/pi-task-memory.md +0 -34
  113. package/docs/ideas/qa-extension.md +0 -43
  114. package/docs/ideas/record-idea-implementation-questions.md +0 -68
  115. package/docs/ideas/record-ideas-as-beads.md +0 -115
  116. package/docs/ideas/self-flushing-session.md +0 -72
  117. package/docs/ideas/state-in-beads-not-md.md +0 -69
  118. package/docs/ideas/subagent-visibility.md +0 -72
  119. package/docs/ideas/task-session-context.local.md +0 -95
  120. package/docs/ideas/task-session-context.md +0 -89
  121. package/docs/ideas/test-data-creation-helpers.md +0 -92
  122. package/docs/ideas/test-planning-stage-bead-in-feature-planning.md +0 -68
  123. package/docs/ideas/unified-ci-pipeline.md +0 -28
  124. package/docs/ideas/unify-the-ticket-and-task-decomposition-workflows.md +0 -71
  125. package/docs/ideas/worktree-housekeeping-for-closed-beads.md +0 -39
  126. package/docs/inspirations.md +0 -33
  127. package/docs/research/disable-model-invocation.md +0 -82
  128. package/docs/research/gas-city-research.md +0 -256
  129. package/docs/research/skill-design-research.md +0 -286
  130. package/docs/research/skill-improvements-analysis.md +0 -117
  131. package/docs/research/skill-patterns-research.md +0 -24
  132. package/docs/skills/skill-anatomy.md +0 -197
  133. package/docs/technical-direction/harness-config.md +0 -177
  134. package/docs/technical-direction/migration-execution-labels.md +0 -177
  135. package/docs/user-preferences.md +0 -17
  136. package/extensions/agent-guardrails/tsconfig.json +0 -12
  137. package/extensions/agent-modes/tsconfig.json +0 -12
  138. package/extensions/session-start/tsconfig.json +0 -12
  139. package/extensions/skill-stats/pnpm-lock.yaml +0 -329
  140. package/extensions/skill-stats/tsconfig.json +0 -12
  141. package/extensions/subagent/agents/planner.md +0 -37
  142. package/extensions/subagent/agents/reviewer.md +0 -35
  143. package/extensions/subagent/agents/scout.md +0 -50
  144. package/extensions/subagent/agents/worker.md +0 -24
  145. package/extensions/subagent/prompts/implement-and-review.md +0 -10
  146. package/extensions/subagent/prompts/implement.md +0 -10
  147. package/extensions/subagent/prompts/scout-and-plan.md +0 -9
  148. package/extensions/subagent/tsconfig.json +0 -12
  149. package/pi/keybindings.json +0 -3
  150. package/pi/settings.json +0 -34
  151. package/pnpm-workspace.yaml +0 -14
  152. package/skills/planning/create-task/scripts/package.json +0 -14
  153. package/skills/planning/create-task/scripts/pnpm-lock.yaml +0 -342
  154. package/skills/planning/create-task/scripts/tsconfig.json +0 -12
  155. package/skills/planning/record-idea/scripts/new-idea.sh +0 -89
  156. package/skills/productivity/validate-agent-dir/scripts/package.json +0 -15
  157. package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +0 -329
  158. package/skills/productivity/validate-agent-dir/scripts/pnpm-workspace.yaml +0 -2
  159. package/skills/productivity/validate-agent-dir/scripts/tsconfig.json +0 -19
  160. package/skills/productivity/validate-agent-dir/scripts/validate-agent-dir.test.ts +0 -317
  161. package/skills/workflow/run-pipeline-stage/REFERENCE.md +0 -22
  162. package/skills/workflow/run-pipeline-stage/scripts/generate-progress.test.ts +0 -682
  163. package/skills/workflow/run-pipeline-stage/scripts/generate-progress.ts +0 -588
  164. package/skills/workflow/run-pipeline-stage/scripts/package.json +0 -15
  165. package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +0 -342
  166. package/skills/workflow/run-pipeline-stage/scripts/pnpm-workspace.yaml +0 -2
  167. package/skills/workflow/run-pipeline-stage/scripts/tsconfig.json +0 -12
  168. package/test/classify-bead.test.mjs +0 -277
  169. package/test/claude-installer.test.mjs +0 -308
  170. package/test/cli.test.mjs +0 -314
  171. package/test/create-chores.test.mjs +0 -85
  172. package/test/fake-bd.test.mjs +0 -72
  173. package/test/fs.test.mjs +0 -76
  174. package/test/helpers/fake-bd.mjs +0 -87
  175. package/test/helpers/fake-claude.mjs +0 -152
  176. package/test/helpers/fake-pi.mjs +0 -132
  177. package/test/installer.test.mjs +0 -664
  178. package/test/notify-hook.test.mjs +0 -63
  179. package/test/pi-installer.test.mjs +0 -785
  180. package/test/pi-register.test.mjs +0 -342
  181. package/test/pi-sweep.test.mjs +0 -619
  182. package/test/release-gates.test.mjs +0 -190
  183. package/test/verify-worker-tree.test.mjs +0 -120
@@ -1,75 +0,0 @@
1
- # Idea: ban-content-assertion-tests
2
-
3
- ## Status
4
- Filed as epic `agnt-ctx-h9gt` (2026-10-06) — awaiting `prd-to-tasks`. Slice 1 (the
5
- `style-tests` ban) shipped earlier in `daa77c8` (PR #143); this epic covers the review-gate
6
- enforcement and the skill sweep.
7
-
8
- ## Created
9
- 2026-08-30
10
-
11
- ## Problem
12
- Ralph pipeline chores write tests that assert on static content — config files, markdown,
13
- terraform files, snapshots of files that never change behaviour. These tests do not prove
14
- behaviour; they assert content. They are irrelevant, unhelpful, and a straight waste of
15
- tokens: they take time to write and run, break on unrelated edits, and add maintenance
16
- weight for zero behavioural signal.
17
-
18
- ## Who benefits
19
- Every ralph-managed project. Chores stop burning tokens on meaningless tests, PRs stop
20
- carrying noise tests, and the suite stays a genuine behavioural signal instead of a content
21
- inventory. Reviewers (author + agents) get less churn to triage.
22
-
23
- ## Proposed outcome
24
- A blanket ban — **no carve-outs**: tests that assert static file contents (config, md, tf,
25
- or any snapshot of static content) are never written. They prove nothing about behaviour and
26
- belong to neither the suite nor the PR.
27
-
28
- Landing it:
29
- 1. **`style-tests`** — add an explicit red flag (and verification-checklist item): *asserting
30
- static file content — config/md/tf snapshots. If the file never changes behaviour, the test
31
- is a content assertion, not a behaviour test.* The existing "test behaviour, not
32
- implementation" / "every test has a cost" principles already point here — make it explicit.
33
- 2. **`ralph` + `run-pipeline-stage`** (minimum) — the pipeline instructions should warn stage
34
- runners not to write content-assertion tests; a review gate checks for them.
35
- 3. **Sweep the rest** — before implementation, review tdd, engineering, and other skills for
36
- anything that encourages or tolerates content-assertion tests, and align them with the ban.
37
-
38
- ## Validity check
39
- - Evidence we already have: `style-tests` already champions behaviour-over-structure and
40
- test-cost discipline — the red flag slots straight into its existing table without new
41
- philosophy. The observed trigger came from ralph runs producing such tests unprompted,
42
- which shows the current skills don't discourage it.
43
- - Riskiest assumption: distinguishing "asserts static content" from legitimate integration
44
- tests that happen to read files (e.g. a parser's golden output). The ban must be worded to
45
- hit the former without chilling the latter — the line is *whether the assertion proves the
46
- behaviour under test*, not whether a file is read.
47
- - What would invalidate this idea: if a case emerges where asserting file content IS the
48
- behaviour (a generator, a config compiler, a template renderer) and the blanket wording
49
- blocks a real test — the blanket ban explicitly accepts excluding those; if that carve-out
50
- turns out to be needed after all, the wording needs revisiting.
51
-
52
- ## Constraints
53
- - Blanket ban, no carve-outs in the initial landing.
54
- - Costs tokens and churn today — P1.
55
- - Keep `style-tests` ≤ ~100 lines: add the red flag + checklist item, don't expand philosophy.
56
- - Pipeline review gates (ralph HITL review) check for content-assertion tests before merge.
57
-
58
- ## Next validation step
59
- When preparing for work: sweep the skills (style-tests, ralph, run-pipeline-stage, tdd,
60
- engineering, plan) for current wording that tolerates or invites content-assertion tests;
61
- then land the red flag in `style-tests` plus explicit warnings in the ralph skills, and
62
- verify a subsequent ralph run stops producing them.
63
-
64
- ## Design so far / provenance
65
- Came from watching ralph pipeline runs generate tests that merely assert the contents of
66
- static files — e.g. config, md, and tf files — which is content-inventory, not behaviour
67
- proof. Stance locked in interview on 2026-08-30: blanket ban (no golden-file carve-out at
68
- initial landing); minimum skill scope = style-tests + ralph + run-pipeline-stage (+ tdd/
69
- engineering), with a broader skill sweep during prep; priority P1.
70
-
71
- ## Notes
72
- Recorded 2026-08-30 (P1). This is a deliberate exception to the default "write tests —
73
- red-green-refactor" posture: not all assertions are tests of behaviour, and an assertion on
74
- immutable content is cost without signal. The `style-tests` skill is the enforcement point;
75
- ralph/run-pipeline-stage are where it keeps happening.
@@ -1,75 +0,0 @@
1
- # Idea: bead progress notes for session resumption
2
-
3
- ## Status
4
- Recorded as bead `agnt-ctx-ul91` (2026-09-22) — awaiting `plan`. Merged with
5
- `state-in-beads-not-md.md` into one bead state model design (this file is Part 2: WHAT the
6
- progress trail contains).
7
-
8
- ## Created
9
- 2026-08-31
10
-
11
- ## Problem
12
- A bead's notes field today records little until close, and agents hold all working state in
13
- the session window. If a session is terminated mid-task, the context dies with it — a fresh
14
- agent has to re-discover everything: what's done, what's blocked, what was tried, what was
15
- learned. That re-discovery burns tokens on work that was already completed, and the bead gives
16
- no way to pick up where the previous agent left off.
17
-
18
- ## Who benefits
19
- The author (no lost momentum or re-discovery burn when sessions end), and every agent that
20
- picks up a bead mid-flight. The notes become a recovery contract: with a full progress trail on
21
- the bead, *any* agent — or a fresh session — can resume the thread without re-exploring.
22
-
23
- ## Proposed outcome
24
- A prompted discipline: agents append to the bead's notes field **as they work**, capturing
25
- whatever is needed to recreate state if the session terminated:
26
- - **Key milestones** — stage transitions, chunks of completed work
27
- - **Decisions and why** — including rejected options
28
- - **Blocks** — what's stuck, and on what
29
- - **Discoveries and gotchas** — non-obvious findings, traps, environment quirks
30
- - **Problems solved and their solutions** — so the same discovery isn't repeated
31
-
32
- This is a checkpoint trail, not a transcript: brief, scan-friendly, high-signal. The goal is
33
- that a new agent can read the notes and resume with zero wasted discovery tokens.
34
-
35
- The mechanism is prompting — skills/agent files instruct agents to update the bead's notes at
36
- milestones (not a mechanical extension at first). It may later become a slight extension of the
37
- session-managing agent: the session manager prompts/checks that the bead trail is current
38
- before a session ends or flushes.
39
-
40
- ## Validity check
41
- - Evidence we already have: `bd` supports multi-line markdown notes (`--notes`); ralph stages
42
- already transition beads through the pipeline, so milestone points exist to hook into;
43
- `state-in-beads-not-md` establishes bead fields as the home for this state.
44
- - Riskiest assumption: agents actually keep the trail updated under prompting alone — without a
45
- mechanical check, discipline may lapse, and the trail rots. The extension shape (session agent
46
- checks the trail is current pre-flush/close) is the likely fix, but that's a second step.
47
- - What would invalidate this idea: if notes grow into a transcript (cost + noise) instead of a
48
- checkpoint trail; or if resumption needs more than notes (e.g. a scratch file of raw state)
49
- anyway — then notes alone don't satisfy recovery.
50
-
51
- ## Constraints
52
- - **Checkpoint trail, not transcript** — brief and scan-friendly; verbosity defeats the purpose.
53
- - Prompting discipline first; a mechanism (session-agent check/extension) is the later step.
54
- - Must not slow the ralph/run-pipeline-stage loops — the note write is a milestone action, not
55
- a per-tool-call log.
56
- - Beads stay the single source of truth — no new scratch files (consistent with
57
- `state-in-beads-not-md`).
58
-
59
- ## Next validation step
60
- Pick one loop (run-pipeline-stage is the natural first) and add the milestone-note instruction
61
- to its skill: update `--notes` at stage start/end, decisions, blocks, discoveries. Verify a
62
- subsequent stage agent can resume purely from the notes (read `bd show` and continue) without
63
- re-reading the prior agent's log.
64
-
65
- ## Notes
66
- - Priority: **P2** — backlog, not blocking. Annoying drift, nothing broken.
67
- - **Dependency**: this is the missing content contract for `self-flushing-session` — a flushed
68
- session keeps only the bead ID, so the bead must carry enough trail to re-seed. Without these
69
- notes, flush/resume is lossy.
70
- - Distinct from `state-in-beads-not-md` (WHERE state lives — rule/principle) and
71
- `pi-task-memory` (cross-session memory store): this is the CONTENT of the bead's progress
72
- trail and the prompting discipline that keeps it current. Composes with all three.
73
- - User's framing: possibly "a slight extension of the agent that manages its session" — the
74
- session manager prompts/verifies the trail is current before session end, rather than a new
75
- standalone mechanism.
@@ -1,70 +0,0 @@
1
- # Idea: Classify beads via deterministic script with agent fallback
2
-
3
- ## Status
4
- Backlog idea (not implementation-ready)
5
-
6
- ## Created
7
- 2026-09-08
8
-
9
- ## Problem
10
- `classify-bead` is one of the most frequently invoked skills, yet every invocation spawns a
11
- subagent — even when the classification is settled by fully deterministic lookups (an existing
12
- `implementation-type` label or the legacy `## Type` field) that need no agent at all. The
13
- remaining cases need first-principles rubric judgement, which the skill itself says is simple
14
- enough for "a small, cheap model". Running a full-size agent for all of it burns tokens on
15
- work a script plus a small model could do, and the cost multiplies across every caller:
16
- `create-task`, bead pickups, and ralph's pipeline stages.
17
-
18
- ## Who benefits
19
- The author — classification is a top-called skill, so token spend per session drops
20
- meaningfully. Callers (`create-task`, pickups, ralph) get near-instant classification without a
21
- subagent round-trip, and keep the same semantics and output contract (AFK/HITL + the applied
22
- `bd tag` command).
23
-
24
- ## Proposed outcome
25
- A deterministic classifier executable that callers invoke directly instead of spawning an
26
- agent. It resolves the deterministic cases itself (existing label → legacy `## Type` field →
27
- simple heuristics); only when a bead genuinely needs first-principles judgement does it
28
- escalate — ideally to a small/cheap model rather than a full agent. The current skill becomes
29
- the escalation/fallback layer (or a thin wrapper describing the script), preserving the
30
- existing precedence, the AFK bias, and the never-reclassify-a-labelled-bead rule.
31
-
32
- ## Validity check
33
- - Evidence we already have: classification is one of the top-called skills with visibly high
34
- token cost; the skill's own workflow already encodes deterministic-first precedence
35
- (label → `## Type` → rubric), so many calls settle before any rubric reasoning; the skill
36
- already asserts a small, cheap model suffices for the rubric step; the rubric is small and
37
- stable, so it ports to a script cleanly.
38
- - Riskiest assumption: the deterministic share of real invocations is actually large — i.e.
39
- most beads already carry a label or `## Type` field when classified. If most calls genuinely
40
- need first-principles judgement, scripting the lookups saves little and the win shrinks to
41
- model size alone. Secondary risk: a small model matches a full agent's rubric accuracy.
42
- - What would invalidate this idea: measurement shows most invocations land in the rubric
43
- branch; or small-model accuracy is materially worse, causing AFK/HITL misroutes that surface
44
- as failures at human review gates or in ralph's pipeline; or script+escalation complexity
45
- across three harnesses (Copilot, pi, Claude Code) outweighs the token saving.
46
-
47
- ## Constraints
48
- - Must be invocable from every harness where the skill ships (Copilot CLI, pi, Claude Code)
49
- and from other skills' task-spawning paths.
50
- - Small-model routing depends on per-harness model configuration — ties into the
51
- `model-selector` / `auto-model-selection` backlog.
52
- - Must preserve the existing rules: never overwrite a recorded label, prefer AFK, and keep the
53
- reported output contract (classification + applied `bd tag` command).
54
- - The script must not load bead content into a calling agent's context when spawned as a task —
55
- same isolation property the current skill has.
56
-
57
- ## Next validation step
58
- Instrument or sample recent `classify-bead` invocations to measure the split between
59
- deterministic lookups (label / `## Type` present) and genuine rubric cases. This single number
60
- decides whether the win is "skip agent spawns entirely for most calls" (large) or "smaller
61
- model only" (modest) — cheap to gather, decisive for scope.
62
-
63
- ## Notes
64
- - Overlaps with `model-selector.md` and `auto-model-selection.md`: which small model the
65
- escalation uses is their problem to solve; this idea just wants the deterministic
66
- classification off the agent path.
67
- - The skill already pushes callers to check `bd label list <id>` before spawning — a script
68
- makes that check intrinsic instead of a caller-discipline reminder.
69
- - Classification output is a stable, tiny contract (two labels + one `bd tag`), which is what
70
- makes a scripted rewrite low-risk versus other skills.
@@ -1,65 +0,0 @@
1
- # Idea: ctx alias, version and update commands
2
-
3
- ## Status
4
- Backlog idea (not implementation-ready)
5
-
6
- ## Created
7
- 2026-09-02
8
-
9
- ## Problem
10
- `agent-cortex` is a long name to type, and there is no way to see what is actually
11
- installed across the harnesses (pi / claude / copilot) or to bring an installed
12
- runtime up to date. The user currently inspects state manually or re-runs
13
- `agent-cortex install <harness>` after a release with no idea what changed.
14
-
15
- ## Who benefits
16
- The author, in every coding session: a shorter command to reach the CLI, and two
17
- commands that answer "what's installed and is it current?" without remembering the
18
- install-manager internals. Anyone else using the plugin (published via npm) gets
19
- the same surface.
20
-
21
- ## Proposed outcome
22
- - `ctx` as a shell alias for `agent-cortex`, installed by the CLI itself (appends to
23
- the user's shell rc during setup/install).
24
- - `ctx version` reporting installed state per harness (pi / claude / copilot): which
25
- artifacts are installed, their versions, and whether they match the CLI's release.
26
- - `ctx update` re-running the install for each harness whose installed state is stale.
27
- - Nothing here changes what installation does — the commands read and reuse the
28
- install manager, not a parallel mechanism.
29
-
30
- ## Validity check
31
- - Evidence we already have: the install epics (pi harness `agnt-ctx-dfq3` first, then
32
- claude, then copilot) are already making the install manager authoritative per
33
- harness; the F9 integration smoke (`agnt-ctx-t7xu`) will verify installed state
34
- end-to-end and is the natural substrate for `version`.
35
- - Riskiest assumption: the install epics leave behind a stable, queryable notion of
36
- "what is installed" (a fingerprint: version + presence per harness) that `version`
37
- can read and `update` can compare against. If installed state stays implicit
38
- (symlinks, unversioned copies), `version`/`update` have nothing reliable to report and
39
- the idea deflates into a thin alias.
40
- - What would invalidate this idea: the harness epics ship without any record of
41
- per-harness installed version, or `update` turns out to be indistinguishable from
42
- a plain `install` (i.e. no stale/current distinction ever exists).
43
-
44
- ## Constraints
45
- - Must reuse the install manager (one code path for install, version, update) — no
46
- second mechanism that could drift.
47
- - Alias must be opt-in or clearly announced at install; overwriting an existing
48
- `ctx` command in the user's shell is unacceptable (collision check first).
49
- - No version coupling invented per harness — installed version means the agent-cortex
50
- release the harness artifact was materialised from.
51
-
52
- ## Next validation step
53
- When the pi install epic (F3–F6) lands, check whether the installed artifacts carry a
54
- version fingerprint (file header comment or manifest). If yes, `ctx version` has its
55
- data source and the idea is implementation-ready; if not, the smoke-test epic
56
- (`agnt-ctx-543s`) must be asked to define one, which is also where `ctx update` gets
57
- its stale-detection.
58
-
59
- ## Notes
60
- - Recorded from a session while the pi harness install manager epic was in flight;
61
- priority felt like P3 — after the install epics merge, not folded into them.
62
- - `ctx` is a common shell name (context tools, context-mode). The alias install must
63
- check for an existing command and surface the clash rather than silently override.
64
- - Idea belongs to the same surface as the install-manager epics: version/update are
65
- the read/refresh side of the same CLI.
@@ -1,67 +0,0 @@
1
- # Idea: ctx feedback command for capturing ideas from any machine
2
-
3
- ## Status
4
- Backlog idea (not implementation-ready)
5
-
6
- ## Created
7
- 2026-09-02
8
-
9
- ## Problem
10
- Ideas about agent-cortex (and the workflow around it) strike while working on the
11
- work laptop or other machines, where this repo — `docs/ideas/`, the beads tracker,
12
- the skills — is not the project in hand. Those ideas die or wait until back at the
13
- personal dev machine. There is no low-friction path from "idea in my head elsewhere"
14
- into this repo's backlog.
15
-
16
- ## Who benefits
17
- The author: a capture path that works from any machine with the CLI installed and
18
- no requirement to be inside the repo. Same benefit as the `ctx alias/version/update`
19
- idea — a shared, short command surface on the work machine.
20
-
21
- ## Proposed outcome
22
- - `ctx feedback` (or `agent-cortex feedback` until the alias exists) opens an
23
- interactive curated capture: prompt for the idea, one-line summary, optional
24
- context, and a check against existing issues/parked ideas to avoid duplicates.
25
- - The captured idea lands as a GitHub issue on the agent-cortex repo, tagged with a
26
- stable label (e.g. `idea`) so it is distinguishable from bug reports/chores.
27
- - Curated, not one-shot: the flow forces the two minutes of thought the
28
- `record-idea` skill requires, without requiring the skill's local scaffold.
29
- - Something downstream (a session, a manual sweep, or that skill itself) triages
30
- `idea` issues into `docs/ideas/` records or beads for actual prioritisation.
31
-
32
- ## Validity check
33
- - Evidence we already have: the author captures ideas regularly at the dev machine
34
- (`docs/ideas/` has 20+ records, two added today), and explicitly wants a way to do
35
- that from the work laptop. The `ctx` surface is already planned, so this rides an
36
- existing idea rather than inventing a new command family.
37
- - Riskiest assumption: the work laptop has working GitHub auth (gh CLI or token) for
38
- this repo. If it does not, the command needs its own credential story and the
39
- "from any machine" promise quietly becomes "from any machine with a GitHub token".
40
- - What would invalidate this idea: a second capture surface (issues) that never gets
41
- triaged into `docs/ideas/` — the repo would then have two idea stores drifting
42
- apart, and feedback issues would accumulate unread. Also invalidated if the work
43
- laptop auth friction turns out worse than the original "note it in a scratch file"
44
- path.
45
-
46
- ## Constraints
47
- - Must not duplicate the local capture flow — if the author is on the dev machine,
48
- `record-idea` (a proper record with validity check) stays the canonical path; the
49
- GitHub issue is the from-anywhere path.
50
- - Duplicate hygiene: the curated step must surface existing `idea` issues before
51
- creating a new one.
52
- - No new long-lived auth secrets on the work laptop beyond what gh already uses.
53
-
54
- ## Next validation step
55
- Check, on the work laptop, whether `gh auth status` (or an equivalent token) already
56
- covers the agent-cortex repo. If yes, the idea is implementation-ready — wire
57
- `ctx feedback` to `gh issue create` with the `idea` label. If not, that auth gap is
58
- the real problem to solve first.
59
-
60
- ## Notes
61
- - Recorded back-to-back with `ctx-alias-version-and-update-commands.md`; sharing the
62
- `ctx` surface and the P3 priority band.
63
- - Deliberately couples to GitHub issues (not the beads tracker): beads live on the
64
- dev machine's dolt state, which is the wrong sink for a machine that cannot see
65
- that state.
66
- - Needs a triage convention: either a periodic beat that converts `idea` issues into
67
- `docs/ideas/` records, or the record-idea skill grows a "from issue" input mode.
@@ -1,71 +0,0 @@
1
- # Idea: Dedicated review-tests skill
2
-
3
- ## Status
4
- Backlog idea (not implementation-ready) — priority P2 (moderate), timing: follows `agnt-ctx-h9gt`
5
-
6
- ## Created
7
- 2026-10-06
8
-
9
- ## Problem
10
- Test review has no home of its own in the ralph pipeline. The review stage invokes
11
- `review-security` for a dedicated security pass, then falls back to `style-code` and
12
- `style-tests` for everything else. `style-tests` is a *writing* skill — it states conventions
13
- before tests are authored — so a reviewer reading it has to invert authoring guidance into
14
- review findings. The result is that test defects are caught by whatever the reviewer happens to
15
- notice rather than by an explicit checklist, and each new class of defect (the content-assertion
16
- ban being the first) has to be bolted onto the review template individually.
17
-
18
- ## Who benefits
19
- - **The author**, who stops triaging test defects that a structured review should have caught.
20
- - **Ralph stage runners**, who get an explicit finding checklist instead of inferring one from a
21
- writing-conventions skill.
22
- - **Future skill authors**, who get one place to add a test-review rule rather than editing the
23
- review template, the review playbook, and `style-tests` in lockstep.
24
-
25
- ## Proposed outcome
26
- A `review-tests` skill — a peer to `review-security` — that specifies what a reviewer checks in
27
- a test suite: assertion quality (does each assertion prove the behaviour under test),
28
- mock discipline (boundaries only, never internals), test-data construction (vital data inline,
29
- fresh per test, no shared mutable fixtures), determinism (no sleeps, no real clocks, every async
30
- interaction awaited), and coverage gaps against the task's stated behaviours.
31
-
32
- Broad scope, narrow use: the skill is generic test-review guidance, invoked as a stage step by
33
- the ralph review playbook (and available to a human reviewer or a `git-workflow` PR review).
34
- Once it exists, the content-assertion check added by `agnt-ctx-h9gt` becomes one row inside it
35
- rather than a standing instruction in the review template.
36
-
37
- ## Validity check
38
- - Evidence we already have: the review stage already delegates to skills for every other
39
- concern (`review-security` for security, `style-code` for code shape, `style-documentation`
40
- for docs) — test review is the gap in an otherwise uniform pattern. The content-assertion
41
- ban was bolted onto the review template precisely because no skill owned test review.
42
- - Riskiest assumption: that a *review* checklist is meaningfully different from `style-tests`
43
- read critically. If a reviewer can derive the findings from the existing authoring skill with
44
- no loss, this becomes a second statement of the same rules — exactly the two-homes problem
45
- `agnt-ctx-h9gt` avoids by keeping `style-tests` canonical.
46
- - What would invalidate this idea: if `agnt-ctx-h9gt`'s review-gate change turns out to be
47
- sufficient — if the review stage, with the content-assertion check in hand, stops missing
48
- test defects — then the dedicated skill earns nothing and should be dropped.
49
-
50
- ## Constraints
51
- - `style-tests` stays the canonical statement of test conventions; `review-tests` must cite it
52
- and add only the reviewer's framing, or the two will drift.
53
- - Must not duplicate `review-security`'s ground or re-run the test suite (that is the verify
54
- stage's job).
55
- - Invoked from the review playbook, so it must be cheap to load — no expansion of the review
56
- stage's token budget beyond one skill read.
57
- - Follows `agnt-ctx-h9gt`; the content-assertion rule must not be restated in a second place
58
- until this skill exists to hold it.
59
-
60
- ## Next validation step
61
- After `agnt-ctx-h9gt` has run through the pipeline at least once, collect the test-related
62
- findings its review stage actually produces across a few PRs. If reviewers keep requesting
63
- changes on test grounds that the template does not name, that list is the skill's first
64
- checklist and the idea is confirmed; if the template covers them, drop the idea.
65
-
66
- ## Notes
67
- Floated by the author on 2026-10-06 while scoping `agnt-ctx-h9gt`. Stance locked in the
68
- interview: broad scope (generic test review, not a pipeline-specific gate), used in the ralph
69
- pipeline, priority P2 with the trigger being `agnt-ctx-h9gt`'s real-world review findings.
70
- Deliberately kept as an idea rather than folded into `agnt-ctx-h9gt` so it passes the same
71
- validity check as every other backlog entry.
@@ -1,36 +0,0 @@
1
- # Idea: deployment beads for post-merge pipelines
2
-
3
- ## Status
4
- Backlog idea (not implementation-ready)
5
-
6
- ## Created
7
- 2026-08-31
8
-
9
- ## Problem
10
- A task isn't done when the PR is merged — it's done when CI passes, it's merged, and in some cases *it's deployed*. Ralph's pipeline currently stops at `review` → open PR → human merge: there is no post-merge stage, so a merge that breaks CI or fails to deploy is discovered manually (or not at all). The definition of done is incomplete for projects with deployment/post-merge workflows.
11
-
12
- ## Who benefits
13
- The author, running ralph-managed projects with release/deploy pipelines (e.g. agent-cortex's changesets release flow). No more manual pipeline watching after a merge; post-merge breakage is tracked and surfaced through the same bead system as everything else, so nothing silently rots in a CI dashboard.
14
-
15
- ## Proposed outcome
16
- Deployment tracking becomes part of chore creation: when `create-task` (or `prd-to-tasks`) creates a task in a project that has a deployment/post-merge workflow, it also creates a **deployment bead** that gates "done" on the post-merge pipeline. A small/cheap model watches and reports on pipeline status. Failures are reported via a bead and **escalated to the author — never resolved by the agent**.
17
-
18
- ## Validity check
19
- - Evidence we already have: ralph already opens review-gated PRs and pauses for human merges (the HITL gate pattern); `unified-ci-pipeline` documents real release-pipeline friction (release fires even on failed checks). Post-merge watching is the natural continuation of that arc.
20
- - Riskiest assumption: a small model can reliably watch and report pipeline status cheaply enough that the watch cost doesn't exceed the failure-detection benefit. Also: that "has a deploy workflow" is detectable at chore-creation time rather than needing per-project config.
21
- - What would invalidate this idea: post-merge failures are rare enough that manual checking is fine; the watcher can't distinguish real failures from flaky CI without burning tokens; or existing CI-native notifications (GitHub Actions alerts) already cover the gap.
22
-
23
- ## Constraints
24
- - Must be cheap: small model, watch-and-report only. No internal LLM-driven resolution loops.
25
- - Failures escalate to the author (matches the HITL pattern) — the watcher reports, a human decides.
26
- - Must compose with the ralph pipeline as another stage/chore type, not fork it.
27
- - Deployment bead is created at chore-creation time where a post-merge workflow exists — part of `create-task`'s pipeline configuration (`skills/planning/create-task/pipeline.json`), generalised across ralph-managed projects.
28
-
29
- ## Next validation step
30
- Survey which ralph-managed projects actually have post-merge/deploy workflows, and map where a deployment bead would slot into `create-task`'s chore breakdown. Check whether the changesets release flow (agent-cortex) is the natural first consumer.
31
-
32
- ## Notes
33
- - Priority: **P2** — backlog, not blocking. Generalise: the deployment bead is part of chore creation, not a per-project add-on.
34
- - Distinct from `unified-ci-pipeline` (that idea is about CI speed + release gating, this is about post-merge/done definition).
35
- - Consistent with `state-in-beads-not-md`: the bead is the source of truth; pipeline status lands on a bead, not a scratch file.
36
- - "Escalated, not resolved" is the key design line — keeps the watcher cheap and keeps human judgment in the loop.
@@ -1,99 +0,0 @@
1
- # Idea: Design and delivery as separate bead trees
2
-
3
- ## Status
4
- Recorded as bead `agnt-ctx-rig0` (2026-09-22) — awaiting `plan`. Absorbs
5
- `test-planning-stage-bead-in-feature-planning.md`.
6
-
7
- ## Created
8
- 2026-09-03
9
-
10
- ## Problem
11
- Today one bead tree mixes intent with execution: a feature is decomposed
12
- straight into delivery chores, so the *design* — what the feature is, its
13
- sub-components, and how each part is *proven to work* — never exists as a
14
- first-class structure. Verification degrades to per-chore verify passes that
15
- drift with implementation, and nothing asks "what is the provable outcome of
16
- this feature?" up front.
17
-
18
- ## Who benefits
19
- - Planning agents (plan/prd-to-tasks) — design and verification get explicit
20
- structure instead of being implicit in delivery chores.
21
- - Ralph / run-pipeline-stage — delivery work runs against a design tree it
22
- doesn't need to understand; closure is mechanical.
23
- - The human reviewer — provable outcomes per feature give the PR gate a
24
- checkable "how do we know it's worked?" criterion.
25
- - The codebase — delivery slices can be minimal (no building a whole domain
26
- service to ship a slice), decoupled from design completeness.
27
-
28
- ## Proposed outcome
29
- Two first-class, linked bead trees in the tracker:
30
-
31
- 1. **Design tree** — an epic links to the features below it; a feature may
32
- nest further features/sub-components. Below each feature sit its
33
- **verification beads**: a demonstrable set that proves the design —
34
- "explicitly, what is the provable outcome of that feature? how do we know
35
- it's worked?" Verification is *part of the design stage*, not an
36
- afterthought of delivery.
37
- 2. **Delivery tree** — a separate structure of slices actually taken to
38
- delivery. Delivery slices deliberately differ from design slices (you may
39
- not need to build an entire domain service to deliver a slice of
40
- functionality). Delivery links to design but is not the same as design:
41
- each design and verification element is completed *by* a delivery bead,
42
- but the mapping is not 1-to-1 (one delivery slice can complete several
43
- design elements; one design element may need several delivery beads).
44
-
45
- Mechanics: one tracker, beads typed `design` / `verification` / `delivery`,
46
- plus a link class meaning "completes / is completed by" alongside today's
47
- "depends on". Ralph's contract shrinks: it does not need to understand the
48
- design tree any more than it already does — it can close a design bead when
49
- all delivery beads linked to it are completed.
50
-
51
- ## Validity check
52
- - Evidence we already have: the pipeline restructures around stages
53
- (create-task chores, ralph dispatch) tellingly reworked across #123/#124 —
54
- verification keeps needing re-planning per delivery; the companion idea
55
- "Test-planning stage bead in feature planning" independently converged on
56
- the same "provable outcome / how do we know it's done" question, which
57
- suggests a real structural gap, not a one-off itch.
58
- - Riskiest assumption: the double tree pays for itself — i.e. delivery slices
59
- are *often enough* genuinely different from design slices, so the second
60
- tree earns its bookkeeping; and bd (or a thin shim) can express typed beads
61
- + link classes without brittle hacks. If real workstreams map 1-to-1 most
62
- of the time, the extra tree is ceremony.
63
- - What would invalidate this idea: a pilot where the delivery tree mirrors the
64
- design tree slice-for-slice; or where ralph's close-when-delivery-done rule
65
- cannot be stated mechanically because delivery beads keep spanning design
66
- elements unpredictably (unbounded fan-in/fan-out breaks the closure rule).
67
-
68
- ## Constraints
69
- - One tracker, no new store: typed beads + a "completes" link class must fit
70
- the existing beads model and tooling (bd link CLI today only expresses
71
- "depends on").
72
- - Ralph's design-tree knowledge stays at the closure rule — no design
73
- semantics leak into the execution pipeline.
74
- - Restructures planning stages: a design stage (verification inside it) and a
75
- delivery stage, replacing the current single decomposition.
76
- - Backwards-compatible during rollout: existing single-tree epics keep
77
- working while new work adopts the split.
78
-
79
- ## Next validation step
80
- Pilot on the next new epic, without touching pipeline code: hand-draft the
81
- design tree (features → verification beads with stated provable outcomes) and
82
- the delivery tree as typed beads/docs, then check (a) how often delivery
83
- slices diverge from design slices, and (b) whether every design/verification
84
- element is closed by a mechanical all-delivery-beads-done rule. Also
85
- inventory bd's link/type/tag capabilities (bd link --help, tag support) to
86
- size the tracker work before proposing the pipeline change.
87
-
88
- ## Notes
89
- - User framing: "planning and design should create a tree of beads; the epic
90
- should be linked to the features below it; under each of those may be more
91
- features or sub components; then below that are the verification beads."
92
- - "Delivery then is a separate tree — the slices of a design which are taken
93
- to deliver will not, and should not be the same as the design slices."
94
- - Supersedes/absorbs the test-planning-stage-bead idea's motivation: the
95
- verification beads here generalise that idea's test-plan bead (provable
96
- outcome per feature). If this lands, fold the test-planning bead into the
97
- design stage rather than shipping it standalone.
98
- - Priority: medium — next planning-skill iteration. Pipeline-wide restructure;
99
- do not start until the current pipeline stabilises post-#127.
@@ -1,42 +0,0 @@
1
- # Idea: Enable signed-commit enforcement (changesets bot commits must be signed)
2
-
3
- ## Status
4
- Backlog idea (not implementation-ready)
5
-
6
- ## Created
7
- 2026-09-02
8
-
9
- ## Problem
10
- GitHub's signed-commits protection on `main` (the "Require commit signing" rule) is currently disabled in this repo. Enabling it hardens main against impersonated/forged commits — but the automated release flow depends on the changesets bot's unsigned "chore: version packages" commits (which bump `package.json`/`plugin.json`/`CHANGELOG.md`). Flipping the rule on as-is would break releases.
11
-
12
- ## Who benefits
13
- The author. Main-branch history becomes verifiably authentic — every commit attributable to a known key — protecting the npm-published package's supply chain, and releases keep flowing because the automation satisfies the same rule.
14
-
15
- ## Proposed outcome
16
- `main` requires signed commits AND the automated changesets release commits satisfy that requirement — i.e. enabling "Require commit signing" no longer breaks the version-packages / release pipeline. Direction: the automation signs its own commits inside CI (no manual release steps).
17
-
18
- ## Validity check
19
- - Evidence we already have: the rule is currently disabled (user statement). The release pipeline's version commits are created by the changesets action as `github-actions[bot]`, which does not sign by default — enabling the rule today fails those commits. Restructuring "how changesets works in CI" is therefore required, and this overlaps with the adjacent `unified-ci-pipeline` idea.
20
- - Riskiest assumption: that a clean path exists for GitHub Actions to produce signed commit(s) in this repo's flow without breaking or significantly complicating the automated loop (CI-hosted keys and ruleset exceptions both have setup costs and failure modes).
21
- - What would invalidate this idea: if the only workable fix forces human-run releases (moving versioning out of automation), the cost/benefit flips — the idea dies or reverts to the status quo of signing human commits only.
22
-
23
- ## Constraints
24
- - Scope: this repo only.
25
- - Must not break the changesets-driven versioning loop (`package.json`/`plugin.json`/`CHANGELOG.md` stay in lockstep automatically).
26
- - CI changes go through the normal PR + review flow.
27
- - The release job is also the target of the pending npm OIDC publish work (agnt-ctx-0zy8) — both touch the same job, so sequencing matters when this idea graduates.
28
-
29
- ## Next validation step
30
- Determine how the changesets commit gets signed in CI on this repo — cheapest prototype: scratch repo (or the version branch) exercising the signing path end-to-end without touching `main`'s rule, then evaluate the rule change on `main`.
31
-
32
- ## Notes
33
- Recorded 2026-09-02. Backlog capture only — no active work planned; revisit after the install-manager epic (pi/claude/copilot) settles. Adjacent to `docs/ideas/unified-ci-pipeline.md` (CI/release restructure).
34
-
35
- Updated 2026-10-28: `docs/commit-signing.md` records the investigation and the decided policy.
36
- The applied-rule read shows no `required_signatures` rule on `main` at repository or
37
- organization level (org ruleset *definitions* stay unreadable with a repository-scoped token),
38
- and Version Packages PRs land by squash merge, whose landing commit GitHub signs — so releases
39
- stay automated with no key in CI, and the CI signing key this idea points at is rejected as the
40
- default. That rejection does not settle the idea: GitHub checks head-branch commits through its
41
- test merge, so enabling enforcement would still require the signed CI commit, exactly as
42
- `Next validation step` describes.