@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.
- package/CHANGELOG.md +437 -0
- package/README.md +46 -15
- package/agents/README.md +22 -10
- package/agents/plan/agent.md +2 -2
- package/agents/ralph/agent.md +128 -91
- package/agents/ralph/claude/frontmatter.json +3 -3
- package/agents/ralph/claude/wake.md +46 -0
- package/agents/ralph/pi/{polling.md → wake.md} +35 -20
- package/agents/ralph-plan/agent.md +23 -11
- package/bin/agent-cortex.mjs +66 -4
- package/bin/installers/claude.mjs +262 -77
- package/bin/installers/pi.mjs +200 -24
- package/extensions/agent-guardrails/README.md +1 -1
- package/extensions/agent-guardrails/guardrails.ts +1 -1
- package/extensions/agent-guardrails/index.ts +1 -1
- package/extensions/agent-modes/discover.test.ts +2 -2
- package/extensions/output-style/README.md +58 -0
- package/extensions/output-style/index.ts +23 -0
- package/extensions/output-style/output-style.md +43 -0
- package/extensions/output-style/output-style.test.ts +50 -0
- package/extensions/output-style/output-style.ts +32 -0
- package/extensions/output-style/package.json +19 -0
- package/hooks/claude/scripts/notify.mjs +8 -1
- package/lib/cli.mjs +91 -2
- package/package.json +29 -4
- package/scripts/check-changeset.mjs +4 -0
- package/scripts/check-no-sync.mjs +5 -1
- package/scripts/check-skill-frontmatter.mjs +21 -0
- package/scripts/lib/compose-agent.mjs +69 -9
- package/scripts/lib/fs.mjs +10 -2
- package/scripts/lib/migrate.mjs +736 -0
- package/scripts/lib/release-gates.mjs +21 -1
- package/scripts/lib/skill-frontmatter.mjs +152 -0
- package/scripts/lib/skill-links.mjs +52 -0
- package/scripts/lib/verify-worker-tree.mjs +25 -0
- package/scripts/resolve-publish-command.mjs +4 -0
- package/skills/engineering/design-an-interface/SKILL.md +3 -3
- package/skills/engineering/grill-with-docs/SKILL.md +3 -5
- package/skills/engineering/improve-codebase-architecture/SKILL.md +5 -4
- package/skills/engineering/tdd/SKILL.md +5 -7
- package/skills/engineering/technical-direction/SKILL.md +5 -5
- package/skills/planning/classify-bead/REFERENCE.md +3 -3
- package/skills/planning/classify-bead/SKILL.md +14 -9
- package/skills/planning/classify-bead/scripts/classify-bead.mjs +5 -4
- package/skills/planning/create-task/REFERENCE.md +52 -3
- package/skills/planning/create-task/SKILL.md +70 -26
- package/skills/planning/create-task/scripts/{create-chores.ts → create-chores.mjs} +48 -23
- package/skills/planning/flesh-out-idea/REFERENCE.md +116 -0
- package/skills/planning/flesh-out-idea/SKILL.md +146 -0
- package/skills/planning/prd-to-tasks/REFERENCE.md +54 -5
- package/skills/planning/prd-to-tasks/SKILL.md +22 -16
- package/skills/planning/record-idea/FORMAT.md +66 -17
- package/skills/planning/record-idea/SKILL.md +48 -24
- package/skills/planning/request-refactor-plan/SKILL.md +4 -4
- package/skills/planning/spec-to-tickets/SKILL.md +5 -5
- package/skills/planning/write-a-prd/SKILL.md +8 -9
- package/skills/planning/write-a-ticket/SKILL.md +4 -6
- package/skills/productivity/bd-tool/SKILL.md +15 -10
- package/skills/productivity/grill-me/SKILL.md +5 -0
- package/skills/productivity/init-beads/SKILL.md +3 -3
- package/skills/productivity/migration/REFERENCE.md +227 -0
- package/skills/productivity/migration/SKILL.md +188 -0
- package/skills/productivity/validate-agent-dir/scripts/{validate-agent-dir.ts → validate-agent-dir.mjs} +49 -28
- package/skills/productivity/write-a-skill/SKILL.md +5 -5
- package/skills/review/maintain-agent-docs/SKILL.md +5 -7
- package/skills/review/refactor-skill/SKILL.md +4 -3
- package/skills/review/review-security/SKILL.md +3 -5
- package/skills/style/style-code/SKILL.md +5 -10
- package/skills/style/style-comms/SKILL.md +5 -7
- package/skills/style/style-documentation/SKILL.md +5 -6
- package/skills/style/style-tests/SKILL.md +5 -7
- package/skills/workflow/git-workflow/SKILL.md +28 -4
- package/skills/workflow/hitl-collab/SKILL.md +4 -6
- package/skills/workflow/plan/SKILL.md +41 -30
- package/skills/workflow/ralph/REFERENCE.md +209 -55
- package/skills/workflow/ralph/SKILL.md +89 -50
- package/skills/workflow/ralph/scripts/pending-gates.mjs +134 -0
- package/skills/workflow/run-pipeline-stage/SKILL.md +72 -71
- package/skills/workflow/run-pipeline-stage/playbooks/code.md +11 -0
- package/skills/workflow/run-pipeline-stage/playbooks/document.md +12 -0
- package/skills/workflow/run-pipeline-stage/playbooks/fix.md +12 -0
- package/skills/workflow/run-pipeline-stage/playbooks/review.md +11 -0
- package/skills/workflow/run-pipeline-stage/playbooks/verify.md +13 -0
- package/skills/workflow/run-pipeline-stage/prompts/stage-runner.md +73 -1
- package/token-map.README.md +9 -4
- package/token-map.json +13 -6
- package/.agents/skills/style-versioning/SKILL.md +0 -172
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -11
- package/.github/workflows/ci.yml +0 -302
- package/.junie/guidelines.md +0 -87
- package/.junie/mcp/mcp.json +0 -10
- package/AGENTS.md +0 -151
- package/agents/ralph/claude/polling.md +0 -31
- package/agents-native/ralph.md +0 -193
- package/docs/claude-hooks.md +0 -128
- package/docs/commit-signing.md +0 -231
- package/docs/ideas/auto-model-selection.md +0 -75
- package/docs/ideas/ban-content-assertion-tests.md +0 -75
- package/docs/ideas/bead-progress-notes-for-session-resumption.md +0 -75
- package/docs/ideas/classify-beads-via-deterministic-script-with-agent-fallback.md +0 -70
- package/docs/ideas/ctx-alias-version-and-update-commands.md +0 -65
- package/docs/ideas/ctx-feedback-command-for-capturing-ideas-from-any-machine.md +0 -67
- package/docs/ideas/dedicated-review-tests-skill.md +0 -71
- package/docs/ideas/deployment-beads-for-post-merge-pipelines.md +0 -36
- package/docs/ideas/design-and-delivery-as-separate-bead-trees/design-and-delivery-as-separate-bead-trees.md +0 -99
- package/docs/ideas/enable-signed-commit-enforcement-changesets-bot-commits-must-be-signed.md +0 -42
- package/docs/ideas/extension-manifests.md +0 -121
- package/docs/ideas/improve-pi-system-prompt.md +0 -37
- package/docs/ideas/map-every-cortex-tool-to-a-real-pi-equivalent.md +0 -95
- package/docs/ideas/model-selector.md +0 -40
- package/docs/ideas/pi-task-memory.md +0 -34
- package/docs/ideas/qa-extension.md +0 -43
- package/docs/ideas/record-idea-implementation-questions.md +0 -68
- package/docs/ideas/record-ideas-as-beads.md +0 -115
- package/docs/ideas/self-flushing-session.md +0 -72
- package/docs/ideas/state-in-beads-not-md.md +0 -69
- package/docs/ideas/subagent-visibility.md +0 -72
- package/docs/ideas/task-session-context.local.md +0 -95
- package/docs/ideas/task-session-context.md +0 -89
- package/docs/ideas/test-data-creation-helpers.md +0 -92
- package/docs/ideas/test-planning-stage-bead-in-feature-planning.md +0 -68
- package/docs/ideas/unified-ci-pipeline.md +0 -28
- package/docs/ideas/unify-the-ticket-and-task-decomposition-workflows.md +0 -71
- package/docs/ideas/worktree-housekeeping-for-closed-beads.md +0 -39
- package/docs/inspirations.md +0 -33
- package/docs/research/disable-model-invocation.md +0 -82
- package/docs/research/gas-city-research.md +0 -256
- package/docs/research/skill-design-research.md +0 -286
- package/docs/research/skill-improvements-analysis.md +0 -117
- package/docs/research/skill-patterns-research.md +0 -24
- package/docs/skills/skill-anatomy.md +0 -197
- package/docs/technical-direction/harness-config.md +0 -177
- package/docs/technical-direction/migration-execution-labels.md +0 -177
- package/docs/user-preferences.md +0 -17
- package/extensions/agent-guardrails/tsconfig.json +0 -12
- package/extensions/agent-modes/tsconfig.json +0 -12
- package/extensions/session-start/tsconfig.json +0 -12
- package/extensions/skill-stats/pnpm-lock.yaml +0 -329
- package/extensions/skill-stats/tsconfig.json +0 -12
- package/extensions/subagent/agents/planner.md +0 -37
- package/extensions/subagent/agents/reviewer.md +0 -35
- package/extensions/subagent/agents/scout.md +0 -50
- package/extensions/subagent/agents/worker.md +0 -24
- package/extensions/subagent/prompts/implement-and-review.md +0 -10
- package/extensions/subagent/prompts/implement.md +0 -10
- package/extensions/subagent/prompts/scout-and-plan.md +0 -9
- package/extensions/subagent/tsconfig.json +0 -12
- package/pi/keybindings.json +0 -3
- package/pi/settings.json +0 -34
- package/pnpm-workspace.yaml +0 -14
- package/skills/planning/create-task/scripts/package.json +0 -14
- package/skills/planning/create-task/scripts/pnpm-lock.yaml +0 -342
- package/skills/planning/create-task/scripts/tsconfig.json +0 -12
- package/skills/planning/record-idea/scripts/new-idea.sh +0 -89
- package/skills/productivity/validate-agent-dir/scripts/package.json +0 -15
- package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +0 -329
- package/skills/productivity/validate-agent-dir/scripts/pnpm-workspace.yaml +0 -2
- package/skills/productivity/validate-agent-dir/scripts/tsconfig.json +0 -19
- package/skills/productivity/validate-agent-dir/scripts/validate-agent-dir.test.ts +0 -317
- package/skills/workflow/run-pipeline-stage/REFERENCE.md +0 -22
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.test.ts +0 -682
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.ts +0 -588
- package/skills/workflow/run-pipeline-stage/scripts/package.json +0 -15
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +0 -342
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-workspace.yaml +0 -2
- package/skills/workflow/run-pipeline-stage/scripts/tsconfig.json +0 -12
- package/test/classify-bead.test.mjs +0 -277
- package/test/claude-installer.test.mjs +0 -308
- package/test/cli.test.mjs +0 -314
- package/test/create-chores.test.mjs +0 -85
- package/test/fake-bd.test.mjs +0 -72
- package/test/fs.test.mjs +0 -76
- package/test/helpers/fake-bd.mjs +0 -87
- package/test/helpers/fake-claude.mjs +0 -152
- package/test/helpers/fake-pi.mjs +0 -132
- package/test/installer.test.mjs +0 -664
- package/test/notify-hook.test.mjs +0 -63
- package/test/pi-installer.test.mjs +0 -785
- package/test/pi-register.test.mjs +0 -342
- package/test/pi-sweep.test.mjs +0 -619
- package/test/release-gates.test.mjs +0 -190
- 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.
|
|
80
|
-
|
|
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
|
-
|
|
85
|
-
|
|
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
|
-
##
|
|
110
|
+
## See Also
|
|
109
111
|
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
-
|
|
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
|
-
|
|
126
|
-
|
|
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`;
|
|
136
|
-
|
|
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
|
-
- [ ]
|
|
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
|
|
1
|
+
# Idea Bead Format
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
##
|
|
6
|
+
## Record shape
|
|
6
7
|
|
|
7
|
-
```
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
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
|
-
|
|
14
|
-
|
|
43
|
+
`--description`, `--design`, and `--notes` each hold multiple `##` sections with the markers
|
|
44
|
+
preserved:
|
|
15
45
|
|
|
46
|
+
```text
|
|
47
|
+
--description
|
|
16
48
|
## Problem
|
|
17
|
-
<
|
|
49
|
+
<what problem does this idea address?>
|
|
18
50
|
|
|
19
51
|
## Who benefits
|
|
20
|
-
<
|
|
52
|
+
<who benefits and what improves for them?>
|
|
21
53
|
|
|
22
54
|
## Proposed outcome
|
|
23
|
-
<
|
|
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
|
-
<
|
|
68
|
+
<hard limits: tech, process, scope, resourcing>
|
|
32
69
|
|
|
33
70
|
## Next validation step
|
|
34
|
-
<
|
|
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
|
-
<
|
|
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
|
|
44
|
-
|
|
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
|
|
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
|
|
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,
|
|
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. **
|
|
29
|
-
-
|
|
30
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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. **
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
-
##
|
|
82
|
+
## See Also
|
|
62
83
|
|
|
63
|
-
-
|
|
64
|
-
-
|
|
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
|
-
|
|
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
|
|
96
|
+
- [ ] Interview covered the problem, who benefits, rough mechanism, timing, and priority.
|
|
74
97
|
- [ ] Idea was pressure-tested; weak points were challenged.
|
|
75
|
-
- [ ]
|
|
76
|
-
- [ ]
|
|
77
|
-
- [ ]
|
|
78
|
-
- [ ]
|
|
79
|
-
- [ ]
|
|
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
|
-
##
|
|
65
|
+
## See Also
|
|
66
66
|
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
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
|
-
##
|
|
118
|
+
## See Also
|
|
119
119
|
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
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
|
|
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
|
|
55
|
+
- [ ] Gate 3 — PRD filed: the epic bead contains the rendered template, carries `execution:hitl`, and lints clean.
|
|
56
56
|
|
|
57
|
-
##
|
|
57
|
+
## See Also
|
|
58
58
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
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
|
|
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
|
-
##
|
|
109
|
+
## See Also
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
| `
|
|
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
|
-
-
|
|
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
|
-
##
|
|
115
|
+
## See Also
|
|
109
116
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
##
|
|
83
|
+
## See Also
|
|
84
84
|
|
|
85
|
-
-
|
|
86
|
-
-
|
|
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
|
|