@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
@@ -63,10 +63,12 @@ execute. The epic bead is the source of truth — no intermediate plan file.
63
63
  `## Success Criteria`; `--validate` rejects it otherwise:
64
64
 
65
65
  ```bash
66
- bd create "<Phase Title>" --type epic --description "<epic body from REFERENCE.md>" --validate
66
+ bd create "<Phase Title>" --type epic -l execution:hitl --description "<epic body from REFERENCE.md>" --validate
67
67
  bd lint <epic-id>
68
68
  ```
69
69
 
70
+ An epic is a container and a person decides when it closes, so it is `execution:hitl` in its own right — not because of what its children are.
71
+
70
72
  8. Tag each epic with a priority (`p3` default; adjust for p4/p5), and `workflow:ralph`
71
73
  when running under ralph-plan or ralph.
72
74
 
@@ -76,13 +78,13 @@ execute. The epic bead is the source of truth — no intermediate plan file.
76
78
  invoke `create-task` for each — it handles AFK/HITL classification and pipeline
77
79
  expansion. Pass the task body template from REFERENCE.md, the priority, and the parent
78
80
  epic ID.
79
- 10. Once all tasks exist, tag the epic with the aggregate classification: HITL if any task
80
- is HITL, otherwise AFK.
81
+ 10. Do not aggregate a child's classification onto its epic. Every bead states its own execution class, and a container's class is `execution:hitl` because a human owns it — copying `execution:afk` upward because the children happen to be AFK labels a human-owned container as agent work.
82
+ 11. When a slice is really several deliverables, use the feature shape from `create-task` steps 5–6 instead of fattening one task: a feature bead owns a planning bead that blocks one impl child per deliverable (`REFERENCE.md` → Feature → planning → impl sequence). The planning bead is where the design the PRD left open gets settled, so `bd ready` surfaces the impl children only once planning closes.
81
83
 
82
84
  ### Phase 5 — Report
83
85
 
84
- 11. Present the full bead tree: each epic with its tasks, classifications, and IDs.
85
- 12. If invoked by `ralph-plan`, signal completion so it can proceed; if invoked directly,
86
+ 12. Present the full bead tree: each epic with its tasks, classifications, and IDs.
87
+ 13. If invoked by `ralph-plan`, signal completion so it can proceed; if invoked directly,
86
88
  summarise the tree and confirm the user is happy before finishing.
87
89
 
88
90
  ## Red Flags
@@ -105,13 +107,11 @@ execute. The epic bead is the source of truth — no intermediate plan file.
105
107
  | "This phase is too small for acceptance criteria" | If it is too small for criteria, merge it with another phase. Every deliverable needs a definition of done. |
106
108
  | "I know the tasks — no need to check with the user" | The phase breakdown still needs approval, and the full tree is presented in Phase 5. |
107
109
 
108
- ## Cross-skill references
110
+ ## See Also
109
111
 
110
- - **`create-task`** — invoked for every task bead; handles classification and pipeline
111
- expansion.
112
- - **`write-a-prd`** — use first when the feature is not yet specified.
113
- - **`style-comms`** — invoke before Phase 2 when you need help writing clear phase
114
- descriptions.
112
+ - [create-task](../create-task/SKILL.md) — invoked for every task bead; owns classification and pipeline expansion.
113
+ - [write-a-prd](../write-a-prd/SKILL.md) — load first when the feature is not yet specified.
114
+ - [style-comms](../../style/style-comms/SKILL.md) — load before the phase-description step when the writing reads loosely.
115
115
 
116
116
  ## Examples
117
117
 
@@ -122,8 +122,11 @@ Output: a dependency-ordered tree of epic and task beads:
122
122
  Epic: "Phase 1 — Auth" (#123) — HITL
123
123
  ├── Task 1 (#124) — AFK
124
124
  ├── Task 2 (#125) — HITL (visual review)
125
- └── Task 3 (#126) — AFK
126
- Epic: "Phase 2 — Dashboard" (#127) — AFK (blocked by #123)
125
+ ├── Task 3 (#126) — AFK
126
+ └── Feature 4 (#128) — HITL
127
+ ├── Plan: Feature 4 (#129) — HITL, blocks #130
128
+ └── Task 5 (#130) — AFK
129
+ Epic: "Phase 2 — Dashboard" (#127) — HITL (blocked by #123)
127
130
  ```
128
131
 
129
132
  ## Phase-gate checklists
@@ -132,8 +135,8 @@ Epic: "Phase 2 — Dashboard" (#127) — AFK (blocked by #123)
132
135
  - [ ] Phase 2 complete: phases drafted and approved by the user.
133
136
  - [ ] Phase 3 complete: epics created in dependency order and tagged (priority, plus
134
137
  `workflow:ralph` under ralph-plan/ralph), and `bd lint` clean.
135
- - [ ] Phase 4 complete: tasks created via `create-task`; epics carry the aggregate
136
- `implementation-type` tag.
138
+ - [ ] Phase 4 complete: tasks created via `create-task`; no execution label aggregated from
139
+ children onto a parent.
137
140
  - [ ] Phase 5 complete: full bead tree presented and confirmed.
138
141
 
139
142
  ## Verification checklist
@@ -143,6 +146,9 @@ Epic: "Phase 2 — Dashboard" (#127) — AFK (blocked by #123)
143
146
  - [ ] All epics are tagged with a priority (and `workflow:ralph` when under ralph).
144
147
  - [ ] Epics created with `--validate`; `bd lint` reports no missing sections for the created tree.
145
148
  - [ ] All tasks are classified AFK/HITL via `create-task`.
146
- - [ ] Parent epics carry the aggregate `implementation-type` tag.
149
+ - [ ] Every epic and feature container carries `execution:hitl`, and every task states its own
150
+ `execution:afk`/`execution:hitl`.
151
+ - [ ] Every impl child of a feature depends on that feature's planning bead.
152
+ - [ ] No execution label was aggregated from children onto a parent.
147
153
  - [ ] No intermediate plan file was created — epics are the source of truth.
148
154
  - [ ] The full bead tree was presented to the user, or to ralph-plan for its next step.
@@ -1,44 +1,93 @@
1
- # Idea Record Format
1
+ # Idea Bead Format
2
2
 
3
- `scripts/new-idea.sh` generates this scaffold into `docs/ideas/<slug>.md` (or `docs/ideas/<slug>/<slug>.md` with `--complex`). Fill every section — a record with unfilled sections has not been captured.
3
+ An idea record is a `bd` bead, not a file. `bd create` takes the whole record in one call; this
4
+ document maps the interview onto the bead's fields and lists the content each section needs.
4
5
 
5
- ## Scaffold
6
+ ## Record shape
6
7
 
7
- ```md
8
- # Idea: <title>
8
+ ```bash
9
+ bd create "Idea: <title>" \
10
+ -l kind:idea,execution:hitl \
11
+ -p <P0-P4> \
12
+ -d "<description>" \
13
+ --design "<design>" \
14
+ --notes "<notes>" \
15
+ --acceptance "<promotion criteria>" \
16
+ --validate --silent
17
+ ```
18
+
19
+ - `kind:idea` marks an unscoped idea; `execution:hitl` keeps it out of agent-workable queries.
20
+ Ideas stay `open` — hiding them from automation is done by label exclusion, not status.
21
+ - `-p` is the interview's priority. P4 (backlog) is the idea default; raise it when the user puts
22
+ the idea ahead of current work.
23
+ - `--acceptance` carries the promotion criteria. A `task` bead requires acceptance criteria, so
24
+ this is what keeps `bd lint` clean for ideas.
25
+ - `--validate` rejects the create when a required section is missing; `--silent` prints only the
26
+ new bead ID so the caller can report it.
27
+
28
+ ## Field mapping
29
+
30
+ Keep the `##` markers inside each field. `flesh-out-idea` locates sections by marker, so a
31
+ marker is the contract between capture and deepening.
9
32
 
10
- ## Status
11
- Backlog idea (not implementation-ready)
33
+ | Idea section | Bead field |
34
+ |---|---|
35
+ | Title | `--title` / positional argument, written as `Idea: <title>` |
36
+ | `## Problem`, `## Who benefits`, `## Proposed outcome` | `-d` / `--description` |
37
+ | `## How we might do it` | `--design` |
38
+ | `## Validity check`, `## Constraints`, `## Next validation step`, `## Design so far / provenance`, `## Notes` | `--notes` |
39
+ | Promotion criteria | `--acceptance` |
40
+ | Priority | `-p` |
41
+ | Anything referential (links, prior art, related beads) | `--context` |
12
42
 
13
- ## Created
14
- <YYYY-MM-DD>
43
+ `--description`, `--design`, and `--notes` each hold multiple `##` sections with the markers
44
+ preserved:
15
45
 
46
+ ```text
47
+ --description
16
48
  ## Problem
17
- <What problem does this idea address?>
49
+ <what problem does this idea address?>
18
50
 
19
51
  ## Who benefits
20
- <Who benefits and what improves for them?>
52
+ <who benefits and what improves for them?>
21
53
 
22
54
  ## Proposed outcome
23
- <What the idea would deliver, at a capability level — not implementation detail>
55
+ <what the idea would deliver, at a capability level — not implementation detail>
24
56
 
57
+ --design
58
+ ## How we might do it
59
+ <the rough mechanism: skill, extension, agent, script, convention, …>
60
+
61
+ --notes
25
62
  ## Validity check
26
63
  - Evidence we already have: <what supports this idea>
27
64
  - Riskiest assumption: <the assumption most likely to be wrong>
28
65
  - What would invalidate this idea: <the signal that kills it>
29
66
 
30
67
  ## Constraints
31
- <Hard limits: tech, process, scope, resourcing>
68
+ <hard limits: tech, process, scope, resourcing>
32
69
 
33
70
  ## Next validation step
34
- <The cheapest next thing that would firm up or kill the idea>
71
+ <the cheapest next thing that would firm up or kill the idea>
72
+
73
+ ## Design so far / provenance
74
+ <where the idea came from, partial designs, options already ruled out, links to the discussion>
35
75
 
36
76
  ## Notes
37
- <Anything worth keeping for future prioritisation or review>
77
+ <anything worth keeping for future prioritisation or review>
38
78
  ```
39
79
 
80
+ Status and creation date are not fields — `bd` tracks status, assignee, and timestamps natively,
81
+ so recording them again duplicates state that drifts.
82
+
40
83
  ## Guidance per section
41
84
 
42
85
  - Keep the record decision-oriented and scannable — it will be read during future prioritisation.
43
- - `Validity check` is mandatory: evidence grounds the idea, the riskiest assumption marks where it is weakest, and the invalidation signal tells you when to drop it.
44
- - `Next validation step` should be concrete enough to act on without re-deriving the context.
86
+ - `Validity check` is mandatory in spirit: evidence grounds the idea, the riskiest assumption
87
+ marks where it is weakest, and the invalidation signal tells you when to drop it.
88
+ - `Next validation step` should be concrete enough to act on without re-deriving the context.
89
+ - `Design so far / provenance` is where the implementation questions land: the rough mechanism,
90
+ constraints already spotted, and existing design thoughts or discarded options. When an answer
91
+ is unknown, record "not considered yet" — the marker stays so the deepening pass can fill it.
92
+ - Promotion criteria in `--acceptance` name what would move the idea out of the backlog: a
93
+ decision, a prototype result, or a dependency landing. Without it, "ready" is a feeling.
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: record-idea
3
- description: Capture an early-stage idea into a structured backlog record with a short interview and validity check before any implementation planning. Use when the user says "capture this idea", "file this under ideas", or shares an idea that is "not ready to build".
3
+ description: Capture an early-stage idea as a `kind:idea` bead with a short, validity-checking interview. Use when the user says "capture this idea", "file this under ideas", or shares an idea that is "not ready to build".
4
4
  ---
5
5
 
6
6
  # Record Idea
7
7
 
8
- Capture an idea that is not implementation-ready into `docs/ideas/`, pressure-testing it with a short high-level interview so the backlog stores a direction, not a slogan.
8
+ Capture an idea that is not implementation-ready as a `bd` bead labelled `kind:idea`, pressure-testing it with a short high-level interview so the backlog stores a direction, not a slogan. The bead is the record: it is searchable, prioritised, syncable, and promotable in place.
9
9
 
10
10
  ## When to use
11
11
 
@@ -18,62 +18,86 @@ Capture an idea that is not implementation-ready into `docs/ideas/`, pressure-te
18
18
  - The idea is ready to build and needs a requirements document — run `write-a-prd` instead.
19
19
  - The user wants an executable task created now — run `create-task` instead.
20
20
  - The idea needs an end-to-end feature plan — run `plan` instead.
21
+ - An idea bead already exists and needs deepening or promoting — run `flesh-out-idea` instead.
21
22
 
22
23
  ## Workflow
23
24
 
24
- 1. **Interview at a high level, one question at a time.** Ask what problem it solves and who benefits, how it might be done (rough approach only — no implementation detail), what would make it timely (triggers, dependencies, timing signals), and what priority it feels like relative to current work. Keep this short — it is a capture step, not a requirements session.
25
+ 1. **Interview at a high level, one question at a time.** Ask what problem it solves and who benefits, what outcome it would deliver (capability level, not implementation), what would make it timely (triggers, dependencies, timing signals), and what priority it feels like relative to current work. Default the priority to P4 (backlog) unless the user says otherwise.
25
26
 
26
27
  2. **Pressure-test briefly.** Challenge weak points such as scope, feasibility, and opportunity cost. The goal is a validity signal for the backlog, not a polished pitch.
27
28
 
28
- 3. **Choose the record shape.**
29
- - Simple idea: a single file `docs/ideas/<idea-name>.md`.
30
- - Complex idea: a folder `docs/ideas/<idea-name>/<idea-name>.md` with supporting docs alongside.
29
+ 3. **Ask the implementation questions — bounded, then stop.** After the high-level pass, ask these three, because they are cheap now and expensive to reconstruct later:
30
+ - **Rough mechanism** — what shape would this take (skill, extension, agent, script, convention, …)?
31
+ - **Known constraints or tradeoffs** — anything already spotted that would shape it?
32
+ - **Existing design thoughts** — anything already designed, sketched, or ruled out?
31
33
 
32
- 4. **Create the record file.** Run this skill's `scripts/new-idea.sh` helper with {{TOOL:bash}}:
34
+ Follow up adaptively at most twice, and only when an answer opens a thread worth pulling. The
35
+ off-ramp is explicit: at any point "enough — record it" ends the interview and the answers so
36
+ far become the record. "Not considered yet" is a recorded answer, not a prompt to dig. This is
37
+ capture, not solutionising: the moment the conversation drifts into implementation detail,
38
+ record what you have.
39
+
40
+ 4. **Create the idea bead.** One `bd create` is the whole record — no files, no scaffold script:
33
41
 
34
42
  ```bash
35
- bash <skill-scripts>/new-idea.sh --title "<idea title>" [--complex]
43
+ bd create "Idea: <title>" \
44
+ -l kind:idea,execution:hitl \
45
+ -p <P0-P4> \
46
+ -d "<## Problem, ## Who benefits, ## Proposed outcome>" \
47
+ --design "<## How we might do it>" \
48
+ --notes "<## Validity check, ## Constraints, ## Next validation step, ## Design so far / provenance>" \
49
+ --acceptance "<what would make this idea promotable>" \
50
+ --validate --silent
36
51
  ```
37
52
 
38
- Resolve `<skill-scripts>` as the absolute path to this skill's own `scripts/` directory — it sits next to this `SKILL.md`, and the install location varies by harness, so do not hardcode a repo path. The script generates the scaffold, prints the file path, and errors if the file already exists or the title normalises to an empty slug.
53
+ Keep the `##` markers inside each field — `flesh-out-idea` finds and updates sections by marker. `kind:idea` marks it as an unscoped idea and `execution:hitl` keeps it out of agent-workable queries. `--acceptance` carries the promotion criteria and satisfies the required-section gate for a `task` bead, so the record lints clean. See `FORMAT.md` for the field mapping and the content each section needs.
39
54
 
40
- 5. **Fill the scaffold.** Write concise, decision-oriented content from the interview into every section — see `FORMAT.md` for the section list. Leave no `TODO`: the validity check specifically needs evidence, the riskiest assumption, and what would invalidate the idea.
55
+ 5. **Verify the record.** `bd show <id>` to confirm the fields landed, and `bd lint <id>` to confirm no section is missing. Fix anything the lint flags before reporting.
41
56
 
42
- 6. **Report back.** Return the file path, a 2–3 sentence summary of the recorded idea, and the suggested priority with its likely timing signal.
57
+ 6. **Report back.** Return the bead ID, a 2–3 sentence summary of the recorded idea, and the suggested priority with its likely timing signal.
43
58
 
44
59
  ## Red Flags
45
60
 
46
61
  - Drifting into implementation detail during the interview — the record captures a direction, not a design.
62
+ - Chasing an adaptive follow-up past two rounds, or past the user's "enough" — capture that stalls stops being capture.
47
63
  - Skipping the pressure-test because the idea sounds good — weak points are cheapest to find here.
48
- - Leaving scaffold `TODO`s unfilled — an incomplete validity check is no check at all.
64
+ - Writing the idea into a markdown file instead of a bead — the bead is the record; a file is
65
+ invisible to `bd` queries and dies outside the backlog.
66
+ - Leaving a section that carries no information — record "not considered yet" rather than deleting the marker.
49
67
 
50
68
  ## Common Rationalizations
51
69
 
52
70
  | Rationalization | Rebuttal |
53
71
  |---|---|
54
- | "It's just an idea — write it down, don't interview me" | The two-minute interview is what makes the row reusable later; without it you store a slogan, not an idea. |
72
+ | "It's just an idea — write it down, don't interview me" | The two-minute interview is what makes the bead reusable later; without it you store a slogan, not an idea. |
55
73
  | "The user already knows what they want" | Knowing the direction is not the same as pressure-testing it. The validity check exists to catch what enthusiasm hides. |
74
+ | "The implementation questions are premature for an idea" | Three questions are cheaper now than a re-interview later, and they seed the provenance section the flesh-out pass reads. |
75
+ | "I'll skip `--acceptance` and fill it in later" | The record is a `task` bead: without it `bd lint` flags the idea and the promotion bar is undefined. |
56
76
 
57
77
  ## Philosophy / rationale
58
78
 
59
- - **Capture before it becomes plan-shaped.** Scoping too early forces decisions the idea has not earned yet; a backlog note keeps the option open at minimal cost. The validity check is what stops the backlog from filling with confident, doomed ideas.
79
+ - **Capture before it becomes plan-shaped.** Scoping too early forces decisions the idea has not earned yet; a backlog bead keeps the option open at minimal cost. The validity check is what stops the backlog from filling with confident, doomed ideas.
80
+ - **One home for backlog state.** Ideas live in `bd` next to the tasks and epics they become, so priority, dependencies, and search work the same way at every stage and promotion is a label change rather than a migration.
60
81
 
61
- ## Cross-skill references
82
+ ## See Also
62
83
 
63
- - When an idea passes its validity check and becomes implementation-ready, run `write-a-prd` to scope it properly.
64
- - For a full feature pipeline from idea to task breakdown, run `plan`.
84
+ - [flesh-out-idea](../flesh-out-idea/SKILL.md) — the next step when the idea needs deepening, promotion, or task children.
85
+ - [write-a-prd](../write-a-prd/SKILL.md) — load once the validity check passes and the idea is implementation-ready.
86
+ - [plan](../../workflow/plan/SKILL.md) — load when the idea should run the whole feature pipeline rather than just be recorded.
65
87
 
66
88
  ## Examples
67
89
 
68
90
  Input: "I keep accidentally committing secrets — capture that idea."
69
- Output: `docs/ideas/secret-scanning-gate.md` — a filled idea record with a validity check, priority, and next validation step. See `FORMAT.md` for the scaffold sections.
91
+
92
+ Output: `bd create "Idea: secret-scanning gate" -l kind:idea,execution:hitl -p 3 … --silent` → bead `proj-a1b2` — description holds the problem, who benefits, and the proposed outcome; `--design` the rough mechanism (a pre-commit hook); `--notes` the validity check, constraints, next validation step, and provenance; `--acceptance` the bar for promotion. See `FORMAT.md` for the full field mapping.
70
93
 
71
94
  ## Verification checklist
72
95
 
73
- - [ ] Interview covered who benefits, rough approach, timing, and priority.
96
+ - [ ] Interview covered the problem, who benefits, rough mechanism, timing, and priority.
74
97
  - [ ] Idea was pressure-tested; weak points were challenged.
75
- - [ ] Record file exists at `docs/ideas/<slug>.md` (script printed the path).
76
- - [ ] Every scaffold section is filled — no `TODO` left in the record.
77
- - [ ] Validity check records evidence, the riskiest assumption, and what would invalidate the idea.
78
- - [ ] Record contains no implementation detail.
79
- - [ ] Report returned the file path, summary, and suggested priority.
98
+ - [ ] Implementation questions were asked, with at most two adaptive follow-ups.
99
+ - [ ] A `kind:idea` + `execution:hitl` bead exists (`bd show <id>` confirms both labels).
100
+ - [ ] Description, `--design`, `--notes`, and `--acceptance` carry their `##` section markers.
101
+ - [ ] `bd lint <id>` is clean.
102
+ - [ ] Record contains no implementation detail beyond the recorded mechanism thoughts.
103
+ - [ ] Report returned the bead ID, summary, and suggested priority.
@@ -62,11 +62,11 @@ description: Create a detailed refactor plan via user interview, split into tiny
62
62
  - [ ] Phase 3 complete: commit plan written with every step leaving the codebase working.
63
63
  - [ ] Phase 4 complete: bead filed via `create-task` with priority P2.
64
64
 
65
- ## Cross-skill references
65
+ ## See Also
66
66
 
67
- - `create-task` — files the plan bead and expands it into pipeline stages. Mandatory; never call `bd create` directly.
68
- - `write-a-prd` — product-level planning that is not a code refactor.
69
- - `record-idea` — early-stage refactor ideas not ready for a full plan.
67
+ - [create-task](../create-task/SKILL.md) — mandatory next step: files the plan bead and expands it into pipeline stages.
68
+ - [write-a-prd](../write-a-prd/SKILL.md) — load when the change is product-level rather than a code refactor.
69
+ - [record-idea](../record-idea/SKILL.md) — load when the refactor idea is still too early for a commit-sized plan.
70
70
 
71
71
  ## Examples
72
72
 
@@ -115,12 +115,12 @@ Workflow at a glance:
115
115
  | "I'll note the open question in the ticket" | Only with the human's explicit agreement. Otherwise resolve it or spike it — an unagreed question is a blocked implementer. |
116
116
  | "One big ticket is simpler to track" | Big tickets hide scope and block parallel work. |
117
117
 
118
- ## Cross-skill references
118
+ ## See Also
119
119
 
120
- - **`write-a-ticket`** — invoked for every body; owns the ticket quality bar.
121
- - **`write-a-prd`** — use first when no spec exists.
122
- - **`prd-to-tasks`** — use when the output is beads for the ralph/bd loop, not external tickets.
123
- - **`style-comms`** — invoke when drafting the map's titles and intents.
120
+ - [write-a-ticket](../write-a-ticket/SKILL.md) — invoked for every ticket body; owns the ticket quality bar.
121
+ - [write-a-prd](../write-a-prd/SKILL.md) — load first when no spec exists.
122
+ - [prd-to-tasks](../prd-to-tasks/SKILL.md) — load when the output is beads for the ralph/bd loop rather than external tickets.
123
+ - [style-comms](../../style/style-comms/SKILL.md) — load when the map's titles and intents read loosely.
124
124
 
125
125
  ## Phase-gate checklist
126
126
 
@@ -25,7 +25,7 @@ description: Create a PRD through user interview, codebase exploration, and modu
25
25
  3. **Interview relentlessly.** Walk down each branch of the design tree, resolving dependencies between decisions one by one, until the user's understanding and yours are identical. The epic's required sections — `## Success Criteria` in particular — are the interview's target: it is complete only when there is enough agreed detail to fill every required section. Never invent an answer; surface it as an assumption and confirm it with the user.
26
26
  4. **Sketch the modules.** List the major modules to build or modify, actively looking for deep modules — ones that encapsulate rich behaviour behind a simple, stable interface testable in isolation. Confirm the list with the user, plus which modules they want tests written for.
27
27
  5. **Write the PRD.** Render the template in `FORMAT.md` (Problem Statement, Solution, User Stories, Success Criteria, Implementation Decisions, Testing Decisions, Out of Scope, Further Notes). Make the user-story list extremely extensive so it covers all aspects of the feature.
28
- 6. **File the bead.** Create the epic with `bd create "<title>" --type epic --priority P1 --body-file - --validate`, piping the rendered PRD to stdin, then run the `classify-bead` classifier (`node <this-skill-dir>/../classify-bead/scripts/classify-bead.mjs <epic-id>`, run from the target project's cwd) to label it AFK or HITL. Escalate to the `classify-bead` subagent only when the classifier reports `escalate: true`. Finally run `bd lint <epic-id>` and fix any missing sections before reporting.
28
+ 6. **File the bead.** Create the epic with `bd create "<title>" --type epic -l execution:hitl --priority P1 --body-file - --validate`, piping the rendered PRD to stdin. A PRD epic is a container a person owns, so it is `execution:hitl` in its own right — it is not classified; the work beads beneath it are. Finally run `bd lint <epic-id>` and fix any missing sections before reporting.
29
29
 
30
30
  Run the steps in order. Skip a step only when the user confirms it is unnecessary (e.g. the codebase is already explored).
31
31
 
@@ -52,15 +52,14 @@ Run the steps in order. Skip a step only when the user confirms it is unnecessar
52
52
 
53
53
  - [ ] Gate 1 — shared understanding: every design-tree branch resolved and the user confirms the summary.
54
54
  - [ ] Gate 2 — modules agreed: the module list and test expectations match the user's model of the solution.
55
- - [ ] Gate 3 — PRD filed: the epic bead contains the rendered template, carries an implementation-type label, and lints clean.
55
+ - [ ] Gate 3 — PRD filed: the epic bead contains the rendered template, carries `execution:hitl`, and lints clean.
56
56
 
57
- ## Cross-skill references
57
+ ## See Also
58
58
 
59
- - Use `record-idea` when the idea is not yet ready to build.
60
- - Use `write-a-ticket` when the spec targets an external tracker rather than a bead.
61
- - Use `spec-to-tickets` when an approved PRD/RFC must become a map of external tickets.
62
- - Run `prd-to-tasks` on the filed epic to break the PRD into an executable backlog.
63
- - Run the `classify-bead` classifier on the new epic — the repo labels every new bead AFK or HITL. Its `scripts/` directory sits next to this skill's directory in every harness, so `<this-skill-dir>/../classify-bead/scripts/classify-bead.mjs` resolves it. Escalate to its rubric subagent only when the classifier reports `escalate: true`.
59
+ - [prd-to-tasks](../prd-to-tasks/SKILL.md) — the next step after filing: breaks the epic into an executable backlog, and its `create-task` calls classify only the work beads, so never run `classify-bead` on the epic itself.
60
+ - [spec-to-tickets](../spec-to-tickets/SKILL.md) — load when the spec becomes tickets in an external tracker instead of beads.
61
+ - [write-a-ticket](../write-a-ticket/SKILL.md) — load when the output is a single externally tracked ticket.
62
+ - [record-idea](../record-idea/SKILL.md) — load when the idea is not yet ready to build.
64
63
 
65
64
  ## Examples
66
65
 
@@ -75,4 +74,4 @@ Output: an epic bead whose description is the rendered PRD — problem, solution
75
74
  - [ ] Every user story follows "As an <actor>, I want <feature>, so that <benefit>".
76
75
  - [ ] Codebase assertions verified against the repo before writing.
77
76
  - [ ] Implementation Decisions contains no file paths or code snippets.
78
- - [ ] Epic bead filed with type `epic`, priority P1, the rendered PRD as description, and an implementation-type label applied.
77
+ - [ ] Epic bead filed with type `epic`, priority P1, the rendered PRD as description, and `execution:hitl` applied — a PRD epic is human-owned by definition.
@@ -106,13 +106,11 @@ section when there are none.>
106
106
  - **Describe the behaviour, not the implementation.** The ticket owns the what and why; the implementer owns the how.
107
107
  - **A ticket must stand alone.** Link, don't copy — readers who need the full rationale open the linked document, not a paraphrase.
108
108
 
109
- ## Cross-skill references
109
+ ## See Also
110
110
 
111
- | When you need… | Use this skill |
112
- | ------------------------------------------------------- | ----------------- |
113
- | To break a spec into a map of tickets | `spec-to-tickets` |
114
- | Tone, structure, and concision for human-facing writing | `style-comms` |
115
- | A requirements document that precedes the ticket | `write-a-prd` |
111
+ - [spec-to-tickets](../spec-to-tickets/SKILL.md) — load when the spec needs a map of tickets rather than one.
112
+ - [style-comms](../../style/style-comms/SKILL.md) — load for tone and concision rules when the body reads loosely.
113
+ - [write-a-prd](../write-a-prd/SKILL.md) — load when the requirements document that precedes the ticket does not exist.
116
114
 
117
115
  See [EXAMPLES.md](./EXAMPLES.md) for worked before/after rewrites.
118
116
 
@@ -32,7 +32,8 @@ We use labels to track state. Key patterns:
32
32
  | Label | Purpose | Example |
33
33
  |---|---|---|
34
34
  | `stage:<id>` | Pipeline stage for chore beads | `stage:code`, `stage:verify` |
35
- | `implementation-type:<type>` | Who works it | `afk`, `hitl` |
35
+ | `execution:<class>` | Who works it — `afk` is agent-routable, `hitl` needs a human | `afk`, `hitl` |
36
+ | `kind:idea` | Unscoped backlog idea, always `execution:hitl` | `kind:idea` |
36
37
  | `lifecycle:<phase>` | Lifecycle gate | `feature-pr` |
37
38
  | `epic:<id>` | Parent epic link | `epic:abc-123` |
38
39
  | `priority:<level>` | Priority (0-3) | `priority:1` |
@@ -49,7 +50,7 @@ bd create "<title>" -d "<description>" -p <0-3> --validate
49
50
  For parent-child relationships (create with `--parent`):
50
51
 
51
52
  ```bash
52
- bd create "<title>" --parent <parent-id> --validate
53
+ bd create "<title>" --parent <parent-id> -d "<description with the type's required section>" --validate
53
54
  ```
54
55
 
55
56
  For blocking dependencies between beads:
@@ -102,14 +103,18 @@ Optional — beads work locally. Sync at session end when it's convenient.
102
103
  ## Key conventions
103
104
 
104
105
  - **Priority**: 0 = critical, 1 = high, 2 = medium, 3 = low, 4 = backlog. Aliased as P0-P4.
105
- - **HITL beads**: require human action — do not claim or implement them. Inform the user.
106
+ - **`execution:afk` / `execution:hitl`**: the execution axis, and a query filter only — no
107
+ auto-claim. `bd ready -l execution:afk` is the agent-workable view; an `execution:hitl` bead
108
+ needs a human, so do not claim or implement it. Inform the user.
109
+ - **Idea beads** (`kind:idea`): an open, unscoped idea (`execution:hitl`) that is promoted to an
110
+ epic once fleshed out. They stay `open` and carry no `execution:afk`, so a scoped
111
+ `bd ready -l execution:afk` view never lists them — but a bare `bd ready` does. Filter a
112
+ plain ready listing with `bd ready --exclude-label kind:idea`.
106
113
  - **Chore beads** (`--type chore`): auto-created pipeline stages. Do not create them manually — use `create-task`. Not ephemeral — they must stay visible to plain `bd ready` for ralph to discover them.
107
114
 
108
- ## Cross-skill references
115
+ ## See Also
109
116
 
110
- | When you need… | Use this skill |
111
- |---|---|
112
- | Creating a new task with pipeline expansion | `create-task` |
113
- | Executing a single pipeline stage | `run-pipeline-stage` |
114
- | Running the full end-to-end pipeline | `ralph` |
115
- | Classifying a bead's implementation type | `classify-bead` |
117
+ - [create-task](../../planning/create-task/SKILL.md) — creating a task that needs pipeline expansion.
118
+ - [classify-bead](../../planning/classify-bead/SKILL.md) — resolving a bead's execution class.
119
+ - [run-pipeline-stage](../../workflow/run-pipeline-stage/SKILL.md) — executing a single pipeline stage for a claimed bead.
120
+ - [ralph](../../workflow/ralph/SKILL.md) — running the whole ready backlog end to end.
@@ -19,3 +19,8 @@ interview is complete only when there is enough agreed detail to fill every requ
19
19
  Never invent section content. If you must infer an answer, state it as an assumption and get the
20
20
  human to confirm it before it becomes bead content. Leave unresolved branches open — an open
21
21
  question is better than a fabricated answer.
22
+
23
+ ## See Also
24
+
25
+ - [grill-with-docs](../../engineering/grill-with-docs/SKILL.md) — load when the decisions reached should land in CONTEXT.md or an ADR.
26
+ - [technical-direction](../../engineering/technical-direction/SKILL.md) — load when the grilled design needs a justified recommendation between options.
@@ -80,10 +80,10 @@ Print a brief summary: whether `bd` was installed or already present, whether be
80
80
  | "I'll skip `--stealth` so the user can see what happens" | Stealth mode is the contract of this skill — non-stealth init adds hooks and commits the user never asked for. |
81
81
  | "I should ask before installing software on the user's machine" | Installing `bd` is the requested outcome; asking adds friction and the skill is meant to run headless. |
82
82
 
83
- ## Cross-skill references
83
+ ## See Also
84
84
 
85
- - Use `bd-tool` for day-to-day beads usage once initialised — `bd prime`, `bd ready`, `bd create`, `bd close`.
86
- - Use `create-task` to create tasks with pipeline-stage expansion and a HITL review gate.
85
+ - [bd-tool](../bd-tool/SKILL.md) — day-to-day beads usage once the workspace exists.
86
+ - [create-task](../../planning/create-task/SKILL.md) — load when the first tracked task needs pipeline-stage expansion.
87
87
 
88
88
  ## Examples
89
89