@jaybeeuu/agent-cortex 1.41.1 → 1.42.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/.github/workflows/ci.yml +5 -5
- package/CHANGELOG.md +23 -0
- package/agents/ralph-plan/agent.md +7 -3
- package/agents/ralph-plan.agent.md +7 -3
- package/claude-extras/scripts/statusline-command.sh +0 -0
- package/docs/ideas/ban-content-assertion-tests.md +3 -1
- package/docs/ideas/dedicated-review-tests-skill.md +71 -0
- package/docs/ideas/unify-the-ticket-and-task-decomposition-workflows.md +71 -0
- package/package.json +5 -2
- package/plugin.json +1 -1
- package/scripts/install-instructions.sh +0 -0
- package/scripts/sync-plugin-version.sh +0 -0
- package/skills/engineering/grill-with-docs/SKILL.md +3 -2
- package/skills/engineering/improve-codebase-architecture/REFERENCE.md +5 -0
- package/skills/engineering/improve-codebase-architecture/SKILL.md +2 -1
- package/skills/planning/create-task/SKILL.md +8 -3
- package/skills/planning/create-task/scripts/create-chores.ts +4 -1
- package/skills/planning/prd-to-tasks/REFERENCE.md +2 -2
- package/skills/planning/prd-to-tasks/SKILL.md +9 -4
- package/skills/planning/request-refactor-plan/FORMAT.md +5 -0
- package/skills/planning/request-refactor-plan/SKILL.md +3 -2
- package/skills/planning/spec-to-tickets/REFERENCE.md +82 -0
- package/skills/planning/spec-to-tickets/SKILL.md +143 -0
- package/skills/planning/write-a-prd/FORMAT.md +6 -0
- package/skills/planning/write-a-prd/SKILL.md +9 -6
- package/skills/planning/write-a-ticket/EXAMPLES.md +133 -0
- package/skills/planning/write-a-ticket/SKILL.md +77 -59
- package/skills/productivity/bd-tool/SKILL.md +27 -2
- package/skills/productivity/grill-me/SKILL.md +11 -0
- package/skills/review/review-security/scripts/install-gitleaks.sh +0 -0
- package/skills/workflow/plan/SKILL.md +20 -8
- package/skills/workflow/ralph/REFERENCE.md +3 -1
- package/skills/workflow/run-pipeline-stage/SKILL.md +6 -1
- package/skills/workflow/using-agent-skills/SKILL.md +1 -0
- package/test/create-chores.test.mjs +12 -0
- package/test/fake-bd.test.mjs +72 -0
- package/test/helpers/fake-bd.mjs +26 -6
- package/extensions/agent-guardrails/node_modules/.bin/pi +0 -21
- package/extensions/agent-guardrails/node_modules/.bin/tsc +0 -21
- package/extensions/agent-guardrails/node_modules/.bin/tsserver +0 -21
- package/extensions/agent-guardrails/node_modules/.bin/tsx +0 -21
- package/extensions/agent-modes/node_modules/.bin/pi +0 -21
- package/extensions/agent-modes/node_modules/.bin/tsc +0 -21
- package/extensions/agent-modes/node_modules/.bin/tsserver +0 -21
- package/extensions/agent-modes/node_modules/.bin/tsx +0 -21
- package/extensions/skill-stats/node_modules/.bin/pi +0 -21
- package/extensions/skill-stats/node_modules/.bin/tsc +0 -21
- package/extensions/skill-stats/node_modules/.bin/tsserver +0 -21
- package/extensions/skill-stats/node_modules/.bin/tsx +0 -21
- package/extensions/skill-stats/pnpm-lock.yaml +0 -329
- package/extensions/subagent/node_modules/.bin/pi +0 -21
- package/extensions/subagent/node_modules/.bin/pi-ai +0 -21
- package/extensions/subagent/node_modules/.bin/tsc +0 -21
- package/extensions/subagent/node_modules/.bin/tsserver +0 -21
- package/extensions/subagent/node_modules/.bin/tsx +0 -21
- package/skills/planning/create-task/scripts/node_modules/.bin/tsc +0 -21
- package/skills/planning/create-task/scripts/node_modules/.bin/tsserver +0 -21
- package/skills/planning/create-task/scripts/node_modules/.bin/tsx +0 -21
- package/skills/planning/create-task/scripts/pnpm-lock.yaml +0 -342
- package/skills/productivity/validate-agent-dir/scripts/node_modules/.bin/tsc +0 -21
- package/skills/productivity/validate-agent-dir/scripts/node_modules/.bin/tsserver +0 -21
- package/skills/productivity/validate-agent-dir/scripts/node_modules/.bin/tsx +0 -21
- package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +0 -329
- package/skills/workflow/run-pipeline-stage/scripts/node_modules/.bin/tsc +0 -21
- package/skills/workflow/run-pipeline-stage/scripts/node_modules/.bin/tsserver +0 -21
- package/skills/workflow/run-pipeline-stage/scripts/node_modules/.bin/tsx +0 -21
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +0 -342
package/.github/workflows/ci.yml
CHANGED
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
- name: Setup pnpm
|
|
23
23
|
uses: pnpm/action-setup@v4
|
|
24
24
|
with:
|
|
25
|
-
version:
|
|
25
|
+
version: 12
|
|
26
26
|
run_install: false
|
|
27
27
|
|
|
28
28
|
- name: Cache pnpm store
|
|
@@ -103,7 +103,7 @@ jobs:
|
|
|
103
103
|
- name: Setup pnpm
|
|
104
104
|
uses: pnpm/action-setup@v4
|
|
105
105
|
with:
|
|
106
|
-
version:
|
|
106
|
+
version: 12
|
|
107
107
|
run_install: false
|
|
108
108
|
|
|
109
109
|
- name: Install dependencies
|
|
@@ -136,7 +136,7 @@ jobs:
|
|
|
136
136
|
- name: Setup pnpm
|
|
137
137
|
uses: pnpm/action-setup@v4
|
|
138
138
|
with:
|
|
139
|
-
version:
|
|
139
|
+
version: 12
|
|
140
140
|
run_install: false
|
|
141
141
|
|
|
142
142
|
- name: Install dependencies
|
|
@@ -169,7 +169,7 @@ jobs:
|
|
|
169
169
|
- name: Setup pnpm
|
|
170
170
|
uses: pnpm/action-setup@v4
|
|
171
171
|
with:
|
|
172
|
-
version:
|
|
172
|
+
version: 12
|
|
173
173
|
run_install: false
|
|
174
174
|
|
|
175
175
|
- name: Install dependencies
|
|
@@ -257,7 +257,7 @@ jobs:
|
|
|
257
257
|
- name: Setup pnpm
|
|
258
258
|
uses: pnpm/action-setup@v4
|
|
259
259
|
with:
|
|
260
|
-
version:
|
|
260
|
+
version: 12
|
|
261
261
|
run_install: false
|
|
262
262
|
|
|
263
263
|
- name: Install dependencies
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.42.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3da7e6e: Bead quality gate: required sections now drive the planning interview, and every substantive
|
|
8
|
+
bead is validated at creation with `bd create --validate` and reviewed with `bd lint`.
|
|
9
|
+
|
|
10
|
+
- The type's required sections are documented once in `bd-tool` and referenced by the
|
|
11
|
+
interview-driving skills (`write-a-prd`, `request-refactor-plan`, `prd-to-tasks`, `plan`,
|
|
12
|
+
`ralph-plan`) and the grilling primitives (`grill-me`, `grill-with-docs`). Planning is complete
|
|
13
|
+
only when there is enough agreed detail to fill every required section, and agents must confirm
|
|
14
|
+
inferred answers with the human instead of inventing them.
|
|
15
|
+
- Substantive `bd create` calls carry `--validate`; each bead-creating flow runs a scoped
|
|
16
|
+
`bd lint` review and fixes flagged beads.
|
|
17
|
+
- Templates now satisfy the contract: PRD and `prd-to-tasks` epics carry `## Success Criteria`;
|
|
18
|
+
the refactor and architecture templates, the PR gate, and the ralph-plan planning gates carry
|
|
19
|
+
`## Acceptance Criteria`. Chore beads stay exempt and instead point at the parent requirements
|
|
20
|
+
bead.
|
|
21
|
+
- The stateful fake `bd` test helper models `--validate`, with tests covering rejection of a
|
|
22
|
+
section-less bead and the PR gate's validated status.
|
|
23
|
+
|
|
24
|
+
- fdf8ead: Add `spec-to-tickets` for turning a PRD/RFC/spec into an agreed ticket map, then drafting each ticket body with the human in dependency order. Tighten `write-a-ticket` to a Context/Scope/Changes/Acceptance body with length budgets and a no-open-questions rule.
|
|
25
|
+
|
|
3
26
|
## 1.41.1
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
|
@@ -39,7 +39,7 @@ Dispatch parallel **explore** sub-agents — one per independent research area.
|
|
|
39
39
|
- If the task requires designing a new module API or interface, invoke **design-an-interface** to generate and compare options. Write the output to `.agent-cortex/working-docs/interface-design.md`.
|
|
40
40
|
|
|
41
41
|
### 4. Grill the user
|
|
42
|
-
After reviewing exploration findings, invoke the **grill-me** skill to surface and resolve outstanding design questions. Keep grilling until there are no open questions that would block implementation. Record answers in `.agent-cortex/working-docs/decisions.md`.
|
|
42
|
+
After reviewing exploration findings, invoke the **grill-me** skill to surface and resolve outstanding design questions. Keep grilling until there are no open questions that would block implementation. The grill is complete only when there is enough agreed detail to fill every required section of the target bead type (task/feature → `## Acceptance Criteria`; epic → `## Success Criteria`; see the beads skill). Never invent an answer — surface it as an assumption and confirm it. Record answers in `.agent-cortex/working-docs/decisions.md`.
|
|
43
43
|
|
|
44
44
|
### 5. Write the plan
|
|
45
45
|
Update the top-level bead's `design` field with a high-level implementation plan. Invoke the **style-comms** skill first so the plan matches the project's communication style.
|
|
@@ -56,14 +56,18 @@ For each new feature bead and each new task bead, create a HITL planning gate be
|
|
|
56
56
|
Every planning gate description must be cold-start-ready so another person can pick it up without prior chat context. Include all of: (1) what is being built and why, (2) decisions already made, (3) open questions/risks, and (4) references (bead IDs, files, or docs) used during planning.
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
gate_id=$(bd create "Plan: <feature title>" --type task --description "<planning context, decisions, open questions, and references>
|
|
59
|
+
gate_id=$(bd create "Plan: <feature title>" --type task --description "<planning context, decisions, open questions, and references>
|
|
60
|
+
|
|
61
|
+
## Acceptance Criteria
|
|
62
|
+
|
|
63
|
+
- [ ] User confirms planning is sufficient for this feature/task." --validate)
|
|
60
64
|
bd tag <planning-gate-id> implementation-type:hitl
|
|
61
65
|
bd dep add <feature-or-task-id> <planning-gate-id> # feature/task depends on planning gate (gate blocks implementation)
|
|
62
66
|
```
|
|
63
67
|
|
|
64
68
|
Do not close planning gates in bulk. Only close a gate after the user explicitly confirms that exact feature/task is ready to implement; leave all unconfirmed gates open and blocking.
|
|
65
69
|
|
|
66
|
-
Before handing off, ensure every bead created in this step carries an `implementation-type` label — check `bd label list <id>` yourself. Do not spawn `classify-bead` here: planning gates were tagged inline above and `create-task` classifies its beads internally. Only invoke it for a bead that genuinely lacks both the label and a `## Type` field.
|
|
70
|
+
Before handing off, ensure every bead created in this step carries an `implementation-type` label — check `bd label list <id>` yourself. Do not spawn `classify-bead` here: planning gates were tagged inline above and `create-task` classifies its beads internally. Only invoke it for a bead that genuinely lacks both the label and a `## Type` field. Then run `bd lint <id>` for every bead created in this step and fix any missing sections before handoff.
|
|
67
71
|
|
|
68
72
|
Tag every bead created in this step with `workflow:ralph`:
|
|
69
73
|
|
|
@@ -47,7 +47,7 @@ Dispatch parallel **explore** sub-agents — one per independent research area.
|
|
|
47
47
|
- If the task requires designing a new module API or interface, invoke **design-an-interface** to generate and compare options. Write the output to `.agent-cortex/working-docs/interface-design.md`.
|
|
48
48
|
|
|
49
49
|
### 4. Grill the user
|
|
50
|
-
After reviewing exploration findings, invoke the **grill-me** skill to surface and resolve outstanding design questions. Keep grilling until there are no open questions that would block implementation. Record answers in `.agent-cortex/working-docs/decisions.md`.
|
|
50
|
+
After reviewing exploration findings, invoke the **grill-me** skill to surface and resolve outstanding design questions. Keep grilling until there are no open questions that would block implementation. The grill is complete only when there is enough agreed detail to fill every required section of the target bead type (task/feature → `## Acceptance Criteria`; epic → `## Success Criteria`; see the beads skill). Never invent an answer — surface it as an assumption and confirm it. Record answers in `.agent-cortex/working-docs/decisions.md`.
|
|
51
51
|
|
|
52
52
|
### 5. Write the plan
|
|
53
53
|
Update the top-level bead's `design` field with a high-level implementation plan. Invoke the **style-comms** skill first so the plan matches the project's communication style.
|
|
@@ -64,14 +64,18 @@ For each new feature bead and each new task bead, create a HITL planning gate be
|
|
|
64
64
|
Every planning gate description must be cold-start-ready so another person can pick it up without prior chat context. Include all of: (1) what is being built and why, (2) decisions already made, (3) open questions/risks, and (4) references (bead IDs, files, or docs) used during planning.
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
gate_id=$(bd create "Plan: <feature title>" --type task --description "<planning context, decisions, open questions, and references>
|
|
67
|
+
gate_id=$(bd create "Plan: <feature title>" --type task --description "<planning context, decisions, open questions, and references>
|
|
68
|
+
|
|
69
|
+
## Acceptance Criteria
|
|
70
|
+
|
|
71
|
+
- [ ] User confirms planning is sufficient for this feature/task." --validate)
|
|
68
72
|
bd tag <planning-gate-id> implementation-type:hitl
|
|
69
73
|
bd dep add <feature-or-task-id> <planning-gate-id> # feature/task depends on planning gate (gate blocks implementation)
|
|
70
74
|
```
|
|
71
75
|
|
|
72
76
|
Do not close planning gates in bulk. Only close a gate after the user explicitly confirms that exact feature/task is ready to implement; leave all unconfirmed gates open and blocking.
|
|
73
77
|
|
|
74
|
-
Before handing off, ensure every bead created in this step carries an `implementation-type` label — check `bd label list <id>` yourself. Do not spawn `classify-bead` here: planning gates were tagged inline above and `create-task` classifies its beads internally. Only invoke it for a bead that genuinely lacks both the label and a `## Type` field.
|
|
78
|
+
Before handing off, ensure every bead created in this step carries an `implementation-type` label — check `bd label list <id>` yourself. Do not spawn `classify-bead` here: planning gates were tagged inline above and `create-task` classifies its beads internally. Only invoke it for a bead that genuinely lacks both the label and a `## Type` field. Then run `bd lint <id>` for every bead created in this step and fix any missing sections before handoff.
|
|
75
79
|
|
|
76
80
|
Tag every bead created in this step with `workflow:ralph`:
|
|
77
81
|
|
|
File without changes
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Idea: ban-content-assertion-tests
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
|
-
|
|
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.
|
|
5
7
|
|
|
6
8
|
## Created
|
|
7
9
|
2026-08-30
|
|
@@ -0,0 +1,71 @@
|
|
|
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.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Idea: Unify the ticket and task decomposition workflows
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Backlog idea (not implementation-ready)
|
|
5
|
+
|
|
6
|
+
## Created
|
|
7
|
+
2026-10-13
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
The planning skills assume a fixed split between tickets and tasks, and implement
|
|
11
|
+
decomposition in three places that do not agree:
|
|
12
|
+
|
|
13
|
+
- `prd-to-tasks` slices a PRD into epics and task beads, then expands each task through
|
|
14
|
+
`create-task` into pipeline chore beads for ralph.
|
|
15
|
+
- `spec-to-tickets` slices a spec into a ticket map, drafts bodies, and creates tickets in
|
|
16
|
+
a tracker (Jira, GitLab, GitHub, or beads).
|
|
17
|
+
- `plan` Phase 2 re-implements the slicing logic inline rather than delegating.
|
|
18
|
+
|
|
19
|
+
There is no model for a ticket that itself needs breaking into tasks, and no single place
|
|
20
|
+
that owns decomposition. Which skill to use depends on the tracker rather than on the work.
|
|
21
|
+
|
|
22
|
+
## Who benefits
|
|
23
|
+
The author, and any agent running the planning skills. One decomposition path replaces
|
|
24
|
+
three overlapping ones, and a ticket in any tracker can be created and then broken into
|
|
25
|
+
tasks without switching skills.
|
|
26
|
+
|
|
27
|
+
## Proposed outcome
|
|
28
|
+
A single coherent model in which a ticket — in any tracker, including beads — can be
|
|
29
|
+
created and then decomposed into tasks, with the tracker acting as an adapter rather than
|
|
30
|
+
defining a separate skill. The exact shape is deliberately undecided; this record captures
|
|
31
|
+
the problem, not a design.
|
|
32
|
+
|
|
33
|
+
## Validity check
|
|
34
|
+
- Evidence we already have: three implementations of spec-to-units slicing (`plan` Phase 2
|
|
35
|
+
inline, `prd-to-tasks`, `spec-to-tickets`); `prd-to-tasks` has eight dependents plus a
|
|
36
|
+
generated agent file; the only substantive difference between the two decomposition
|
|
37
|
+
skills is the creation contract — `create-task` expands AFK tasks into ralph's chore
|
|
38
|
+
tree, while `spec-to-tickets` uses a generic tracker adapter.
|
|
39
|
+
- Riskiest assumption: not yet identified — this needs a thinking-through pass. Candidates
|
|
40
|
+
to test: (a) the ticket/task split can be unified without losing ralph's execution
|
|
41
|
+
contract; (b) the refactor is affordable given its blast radius; (c) the duplication is
|
|
42
|
+
causing enough harm to justify it at all.
|
|
43
|
+
- What would invalidate this idea: if ralph's requirements — chore-tree expansion via
|
|
44
|
+
`create-chores.ts`/`pipeline.json`, epic branches, AFK/HITL classification — cannot be
|
|
45
|
+
expressed as a tracker adapter behind one slicing skill, then the split is load-bearing
|
|
46
|
+
and should stay. It would also be invalidated if the duplication never produces concrete
|
|
47
|
+
drift.
|
|
48
|
+
|
|
49
|
+
## Constraints
|
|
50
|
+
- Ralph's execution contract is fixed and must keep working: chore expansion, the epic PR
|
|
51
|
+
flow, and AFK/HITL classification.
|
|
52
|
+
- Open beads `agnt-ctx-s5xd.4` and `agnt-ctx-s5xd.4.4` are already rewriting
|
|
53
|
+
`prd-to-tasks` and `plan`'s tagging for the `execution:` label model. Any refactor has to
|
|
54
|
+
land after that epic or it will collide.
|
|
55
|
+
- Skills target ~150 lines, so a unified decomposition skill would need its tracker
|
|
56
|
+
adapters and formats split into support files.
|
|
57
|
+
|
|
58
|
+
## Next validation step
|
|
59
|
+
Once the s5xd two-axis epic lands, enumerate exactly what `create-task` and ralph require
|
|
60
|
+
from a decomposition — classification, chore tree, epic hierarchy, labels — and test
|
|
61
|
+
whether each can be expressed as a tracker adapter behind one slicing skill. That is the
|
|
62
|
+
cheapest step that would firm up or kill the idea.
|
|
63
|
+
|
|
64
|
+
## Notes
|
|
65
|
+
- The open question at the heart of it: are "ticket" and "task" the same thing at different
|
|
66
|
+
granularities, or genuinely different things? Related: is a ticket a ralph task, or
|
|
67
|
+
something a ralph task is created from?
|
|
68
|
+
- Priority P3 by the author's call — it blocks other planning work rather than being
|
|
69
|
+
polish.
|
|
70
|
+
- Filed during the `write-a-ticket` / `spec-to-tickets` work (bead `agnt-ctx-vgzj`), where
|
|
71
|
+
the overlap first became concrete.
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaybeeuu/agent-cortex",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.42.0",
|
|
4
4
|
"description": "Personal PI package with custom agents, skills, and extensions",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package"
|
|
7
7
|
],
|
|
8
8
|
"license": "MIT",
|
|
9
|
-
"repository":
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/jaybeeuu/agent-cortex"
|
|
12
|
+
},
|
|
10
13
|
"bin": {
|
|
11
14
|
"agent-cortex": "./bin/agent-cortex.mjs"
|
|
12
15
|
},
|
package/plugin.json
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -27,7 +27,7 @@ description: "Grilling session that challenges your plan against the existing do
|
|
|
27
27
|
5. **Cross-reference with code.** When the user states how something works, check whether the code agrees. Surface contradictions the moment you find them.
|
|
28
28
|
6. **Update `CONTEXT.md` inline.** When a term resolves, write the entry right there — do not batch. Keep it a pure glossary: no implementation details, no specs, no scratch notes. Entry format and file-discovery rules live in `REFERENCE.md`.
|
|
29
29
|
7. **Offer ADRs sparingly.** Propose an ADR only when all three hold: hard to reverse, surprising without context, and the result of a real trade-off. If any is missing, skip it. ADR format lives in `REFERENCE.md`.
|
|
30
|
-
8. **Close when shared understanding is reached.** Confirm every design-tree branch is resolved or explicitly deferred,
|
|
30
|
+
8. **Close when shared understanding is reached.** Confirm every design-tree branch is resolved or explicitly deferred, that the glossary diff captures the session's new language, and — when the session feeds a bead — that there is enough agreed detail to fill every required section of the target bead type (see `bd-tool` → Required sections). Never invent section content; surface assumptions and confirm them.
|
|
31
31
|
|
|
32
32
|
## Red Flags
|
|
33
33
|
|
|
@@ -88,4 +88,5 @@ which voids an order before fulfilment. See cancellation.
|
|
|
88
88
|
- [ ] Terminology conflicts and vague terms called out the moment they appeared
|
|
89
89
|
- [ ] Claims cross-referenced against code; contradictions surfaced
|
|
90
90
|
- [ ] ADRs offered only when all three criteria held (offering none is a valid outcome)
|
|
91
|
-
- [ ] All design-tree branches resolved or explicitly deferred before closing
|
|
91
|
+
- [ ] All design-tree branches resolved or explicitly deferred before closing
|
|
92
|
+
- [ ] When feeding a bead, enough agreed detail to fill every required section; no fabricated answers
|
|
@@ -43,6 +43,11 @@ Describe the architectural friction:
|
|
|
43
43
|
- What integration risk exists in the seams between them
|
|
44
44
|
- Why this makes the codebase harder to navigate and maintain
|
|
45
45
|
|
|
46
|
+
## Acceptance Criteria
|
|
47
|
+
|
|
48
|
+
- [ ] <verifiable outcome 1>
|
|
49
|
+
- [ ] <verifiable outcome 2>
|
|
50
|
+
|
|
46
51
|
## Proposed Interface
|
|
47
52
|
|
|
48
53
|
The chosen interface design:
|
|
@@ -43,7 +43,7 @@ A **deep module** (John Ousterhout, "A Philosophy of Software Design") has a sma
|
|
|
43
43
|
|
|
44
44
|
6. **User picks an interface** (or accepts the recommendation).
|
|
45
45
|
|
|
46
|
-
7. **Create the refactor bead.** Run the `create-task` skill with a concise title, the description from the template in [REFERENCE.md](REFERENCE.md), and priority P2. Always use `create-task` — never `bd create` directly — because it classifies the bead and expands AFK work into pipeline stages ralph can execute. Do not ask the user to review before creating; share the bead ID.
|
|
46
|
+
7. **Create the refactor bead.** Run the `create-task` skill with a concise title, the description from the template in [REFERENCE.md](REFERENCE.md), and priority P2. The template's `## Acceptance Criteria` is required (enforced by `create-task`'s `--validate`) and must reflect outcomes the user agreed, not assumptions. Always use `create-task` — never `bd create` directly — because it classifies the bead and expands AFK work into pipeline stages ralph can execute. Do not ask the user to review before creating; share the bead ID.
|
|
47
47
|
|
|
48
48
|
## Red Flags
|
|
49
49
|
|
|
@@ -95,5 +95,6 @@ Output: numbered deepening candidates (cluster, coupling, dependency category, t
|
|
|
95
95
|
- [ ] At least two radically different designs, each with signature, usage example, hidden complexity, dependency strategy, and trade-offs
|
|
96
96
|
- [ ] Recommendation given in prose, with a hybrid proposed where elements combine well
|
|
97
97
|
- [ ] Refactor bead created via `create-task` at P2 using the REFERENCE.md description template
|
|
98
|
+
- [ ] Description carries agreed `## Acceptance Criteria`; the bead lints clean
|
|
98
99
|
- [ ] Bead ID reported and no review gate imposed before creation
|
|
99
100
|
- [ ] No unrelated areas explored or refactors proposed outside the chosen candidate
|
|
@@ -5,7 +5,7 @@ description: Create a task bead, classify it as AFK or HITL, and if AFK expand i
|
|
|
5
5
|
|
|
6
6
|
# Create Task
|
|
7
7
|
|
|
8
|
-
Turn a piece of work into a tracked bead, classify it for autonomous (AFK) or human-in-the-loop (HITL) execution, and — when AFK — expand it into the standard pipeline: one chore bead per stage plus a HITL PR gate task so a human always reviews the finished branch. Parameters: `title` (required), `description` (required), `priority` (0–3, default 2), `parent` (epic bead ID, optional — sets a `parent-child` dependency).
|
|
8
|
+
Turn a piece of work into a tracked bead, classify it for autonomous (AFK) or human-in-the-loop (HITL) execution, and — when AFK — expand it into the standard pipeline: one chore bead per stage plus a HITL PR gate task so a human always reviews the finished branch. Parameters: `title` (required), `description` (required), `priority` (0–3, default 2), `parent` (epic bead ID, optional — sets a `parent-child` dependency). The description must carry the task's required section — `## Acceptance Criteria` — which `--validate` enforces; fill it from agreed answers, not assumptions (see `bd-tool` → Required sections).
|
|
9
9
|
|
|
10
10
|
## When to use
|
|
11
11
|
|
|
@@ -21,10 +21,13 @@ Turn a piece of work into a tracked bead, classify it for autonomous (AFK) or hu
|
|
|
21
21
|
|
|
22
22
|
## Workflow
|
|
23
23
|
|
|
24
|
-
1. **Create the parent bead.**
|
|
24
|
+
1. **Create the parent bead.** The description must contain the task's required section —
|
|
25
|
+
`## Acceptance Criteria` — or `--validate` rejects creation. Fill it from agreed answers, not
|
|
26
|
+
assumptions (see `bd-tool` → Required sections).
|
|
25
27
|
|
|
26
28
|
```bash
|
|
27
|
-
bd create "<title>" --description "<description>" --priority <priority>
|
|
29
|
+
bd create "<title>" --description "<description>" --priority <priority> --validate
|
|
30
|
+
bd lint <new-id>
|
|
28
31
|
```
|
|
29
32
|
|
|
30
33
|
If a `parent` epic was provided, record the dependency:
|
|
@@ -65,6 +68,7 @@ Turn a piece of work into a tracked bead, classify it for autonomous (AFK) or hu
|
|
|
65
68
|
|
|
66
69
|
## Red Flags
|
|
67
70
|
|
|
71
|
+
- **Filling acceptance criteria with assumptions.** Fabricated criteria pass `--validate` but mislead the pipeline. The description is the interview's output — confirm it with the human instead.
|
|
68
72
|
- **Running the script from the wrong directory.** Chores land in whatever `.beads` tree `bd` resolves from cwd — the target project's root is the only safe cwd.
|
|
69
73
|
- **Spawning the `classify-bead` subagent when the classifier already resolved the bead.** The deterministic script is the short-circuit; a subagent is only for `escalate: true`.
|
|
70
74
|
- **Skipping the classifier and classifying by hand.** The rubric is a subagent's job; a hand-rolled guess drifts from it.
|
|
@@ -101,6 +105,7 @@ The full bead-property contract (titles, labels, dependencies per chore and for
|
|
|
101
105
|
## Verification checklist
|
|
102
106
|
|
|
103
107
|
- [ ] Parent bead exists with the correct title, description, and priority.
|
|
108
|
+
- [ ] Parent bead created with `--validate`, and `bd lint <id>` reports no missing sections.
|
|
104
109
|
- [ ] `parent-child` dependency added when a parent epic was supplied.
|
|
105
110
|
- [ ] `implementation-type` label present on the parent bead (`bd label list <id>`) — resolved by the classifier or, on escalation, the rubric subagent.
|
|
106
111
|
- [ ] HITL path: no pipeline chores created, caller told the classification. AFK path: script ran from the target project's cwd and its JSON contains every stage ID plus `featurePrReview`.
|
|
@@ -101,8 +101,11 @@ const prGateBeadId = run([
|
|
|
101
101
|
'bd', 'create', JSON.stringify(`[${parentId}] PR Review and Merge`),
|
|
102
102
|
'--type', 'task',
|
|
103
103
|
'--description', JSON.stringify(
|
|
104
|
-
'Human review gate: review and merge the agent PR into the feature branch before closing this feature.',
|
|
104
|
+
'Human review gate: review and merge the agent PR into the feature branch before closing this feature.\n\n## Acceptance Criteria\n\n- [ ] Agent PR reviewed and merged into the feature branch.',
|
|
105
105
|
),
|
|
106
|
+
// The gate is type `task`, so `--validate` enforces its `## Acceptance Criteria`
|
|
107
|
+
// section. Stage chores require no sections and deliberately omit the flag.
|
|
108
|
+
'--validate',
|
|
106
109
|
'--priority', priority,
|
|
107
110
|
'--labels', 'implementation-type:hitl,lifecycle:feature-pr',
|
|
108
111
|
'--parent', parentId,
|
|
@@ -7,7 +7,7 @@ Body templates used in the Phase 3 and Phase 4 workflow steps of `SKILL.md`.
|
|
|
7
7
|
Passed as the `--description` when creating an epic bead:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
bd create "<Phase Title>" --type epic --description "<epic body below>"
|
|
10
|
+
bd create "<Phase Title>" --type epic --description "<epic body below>" --validate
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
```markdown
|
|
@@ -23,7 +23,7 @@ A concise description of this phase. Scope and goal, not implementation details.
|
|
|
23
23
|
|
|
24
24
|
End-to-end behaviour for this phase. What a demo would show.
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Success Criteria
|
|
27
27
|
|
|
28
28
|
- [ ] Criterion 1
|
|
29
29
|
- [ ] Criterion 2
|
|
@@ -50,17 +50,21 @@ execute. The epic bead is the source of truth — no intermediate plan file.
|
|
|
50
50
|
complete through all integration layers, demoable or verifiable on its own, and
|
|
51
51
|
covering a specific set of user stories.
|
|
52
52
|
5. For each phase define its **title**, **user stories covered**, **what to build**
|
|
53
|
-
(end-to-end behaviour, not layer-by-layer), and **
|
|
53
|
+
(end-to-end behaviour, not layer-by-layer), and **success criteria** — the epic's required
|
|
54
|
+
`## Success Criteria`. The interview is complete only when every phase has agreed criteria;
|
|
55
|
+
never invent them.
|
|
54
56
|
6. Present the proposed phases and ask about granularity, merges or splits, and which
|
|
55
57
|
phases can run in parallel. Iterate until the user approves.
|
|
56
58
|
|
|
57
59
|
### Phase 3 — Create epics (one per phase)
|
|
58
60
|
|
|
59
61
|
7. Create epics in dependency order (blockers first) so you can reference real bead IDs,
|
|
60
|
-
using the epic body template in [REFERENCE.md](./REFERENCE.md)
|
|
62
|
+
using the epic body template in [REFERENCE.md](./REFERENCE.md). The body must carry
|
|
63
|
+
`## Success Criteria`; `--validate` rejects it otherwise:
|
|
61
64
|
|
|
62
65
|
```bash
|
|
63
|
-
bd create "<Phase Title>" --type epic --description "<epic body from REFERENCE.md>"
|
|
66
|
+
bd create "<Phase Title>" --type epic --description "<epic body from REFERENCE.md>" --validate
|
|
67
|
+
bd lint <epic-id>
|
|
64
68
|
```
|
|
65
69
|
|
|
66
70
|
8. Tag each epic with a priority (`p3` default; adjust for p4/p5), and `workflow:ralph`
|
|
@@ -127,7 +131,7 @@ Epic: "Phase 2 — Dashboard" (#127) — AFK (blocked by #123)
|
|
|
127
131
|
- [ ] Phase 1 complete: PRD confirmed, codebase explored, architectural decisions captured.
|
|
128
132
|
- [ ] Phase 2 complete: phases drafted and approved by the user.
|
|
129
133
|
- [ ] Phase 3 complete: epics created in dependency order and tagged (priority, plus
|
|
130
|
-
`workflow:ralph` under ralph-plan/ralph).
|
|
134
|
+
`workflow:ralph` under ralph-plan/ralph), and `bd lint` clean.
|
|
131
135
|
- [ ] Phase 4 complete: tasks created via `create-task`; epics carry the aggregate
|
|
132
136
|
`implementation-type` tag.
|
|
133
137
|
- [ ] Phase 5 complete: full bead tree presented and confirmed.
|
|
@@ -137,6 +141,7 @@ Epic: "Phase 2 — Dashboard" (#127) — AFK (blocked by #123)
|
|
|
137
141
|
- [ ] Every phase is a vertical slice covering all layers, not a horizontal layer.
|
|
138
142
|
- [ ] Every task is independently grabbable by a single agent.
|
|
139
143
|
- [ ] All epics are tagged with a priority (and `workflow:ralph` when under ralph).
|
|
144
|
+
- [ ] Epics created with `--validate`; `bd lint` reports no missing sections for the created tree.
|
|
140
145
|
- [ ] All tasks are classified AFK/HITL via `create-task`.
|
|
141
146
|
- [ ] Parent epics carry the aggregate `implementation-type` tag.
|
|
142
147
|
- [ ] No intermediate plan file was created — epics are the source of truth.
|
|
@@ -10,6 +10,11 @@ The problem that the developer is facing, from the developer's perspective.
|
|
|
10
10
|
|
|
11
11
|
The solution to the problem, from the developer's perspective.
|
|
12
12
|
|
|
13
|
+
## Acceptance Criteria
|
|
14
|
+
|
|
15
|
+
- [ ] <criterion 1>
|
|
16
|
+
- [ ] <criterion 2>
|
|
17
|
+
|
|
13
18
|
## Commits
|
|
14
19
|
|
|
15
20
|
A long, detailed implementation plan in plain English, broken into the tiniest commits possible. Each commit should leave the codebase in a working state.
|
|
@@ -32,7 +32,7 @@ description: Create a detailed refactor plan via user interview, split into tiny
|
|
|
32
32
|
- **description**: the refactor plan formatted with the template in `FORMAT.md`
|
|
33
33
|
- **priority**: P2
|
|
34
34
|
|
|
35
|
-
Always invoke `create-task` — never `bd create` directly. `create-task` classifies the bead and expands AFK tasks into pipeline stage beads for ralph.
|
|
35
|
+
Always invoke `create-task` — never `bd create` directly. `create-task` classifies the bead and expands AFK tasks into pipeline stage beads for ralph. The description must include the template's `## Acceptance Criteria` — the plan's definition of done, agreed in the interview rather than invented — or `create-task`'s `--validate` gate rejects it.
|
|
36
36
|
|
|
37
37
|
## Red Flags
|
|
38
38
|
|
|
@@ -81,4 +81,5 @@ Output: a P2 bead filed via `create-task` whose description follows the `FORMAT.
|
|
|
81
81
|
- [ ] Test coverage assessed; testing plan recorded when coverage is insufficient.
|
|
82
82
|
- [ ] Commit plan written with every commit leaving the codebase working.
|
|
83
83
|
- [ ] Decision Document contains decisions only — no file paths or code snippets.
|
|
84
|
-
- [ ] Bead filed via `create-task` with concise title, `FORMAT.md`-formatted description, priority P2.
|
|
84
|
+
- [ ] Bead filed via `create-task` with concise title, `FORMAT.md`-formatted description, priority P2.
|
|
85
|
+
- [ ] Description carries agreed `## Acceptance Criteria`; the bead was created with `--validate` and lints clean.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Spec to Tickets — Reference
|
|
2
|
+
|
|
3
|
+
Supporting formats for `spec-to-tickets`. Load this when writing the map, drafting tickets,
|
|
4
|
+
or creating them.
|
|
5
|
+
|
|
6
|
+
## Ticket map format
|
|
7
|
+
|
|
8
|
+
Written to `.agent-cortex/tickets/<spec-slug>-map.md` at Phase 3 step 8. `.agent-cortex/*`
|
|
9
|
+
is gitignored, so the map is a local review artefact — not a committed plan file.
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# <Spec title> — ticket map
|
|
13
|
+
|
|
14
|
+
- **Source:** <link or path to the PRD/RFC/spec>
|
|
15
|
+
- **Tracker:** <Jira | GitLab | GitHub | beads>
|
|
16
|
+
- **Status:** draft | agreed | created
|
|
17
|
+
|
|
18
|
+
## Shared decisions
|
|
19
|
+
|
|
20
|
+
- <schema/API/auth decision every ticket relies on, with a link>
|
|
21
|
+
|
|
22
|
+
## Tickets
|
|
23
|
+
|
|
24
|
+
| # | Title | Intent | Touches | Depends on | Ticket ID |
|
|
25
|
+
|---|---|---|---|---|---|
|
|
26
|
+
| T1 | Add grease sampling to the monitor | Read grease levels alongside oil on each poll | `src/monitor/` | — | — |
|
|
27
|
+
| T2 | Surface grease readings in the dashboard | Show grease next to oil on the status panel | `src/web/` | T1 | — |
|
|
28
|
+
|
|
29
|
+
## Ordering
|
|
30
|
+
|
|
31
|
+
T1 -> T2, T3 (T2 and T3 can run in parallel)
|
|
32
|
+
|
|
33
|
+
## Out of scope
|
|
34
|
+
|
|
35
|
+
- <work the spec mentions that these tickets deliberately exclude>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Set `Status` to `agreed` at Phase 3, and fill `Ticket ID` as each ticket is created in Phase 6.
|
|
39
|
+
|
|
40
|
+
## Ticket draft format
|
|
41
|
+
|
|
42
|
+
Written to `.agent-cortex/tickets/<spec-slug>/<NN>-<ticket-slug>.md` at Phase 4 step 10 —
|
|
43
|
+
one file per ticket, numbered in dependency order. Drafts are the review artefact for
|
|
44
|
+
Phase 5 and the source of the created ticket body.
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
# <Ticket title>
|
|
48
|
+
|
|
49
|
+
- **Map ref:** T1
|
|
50
|
+
- **Depends on:** T2, T3
|
|
51
|
+
- **Ticket ID:** — (filled at creation)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
<body from write-a-ticket>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Fill `Ticket ID` at Phase 6. Upload the body verbatim; record `Depends on` in the tracker's
|
|
59
|
+
own link or dependency field when it has one.
|
|
60
|
+
|
|
61
|
+
## Tracker adapters
|
|
62
|
+
|
|
63
|
+
The tracker and mechanism are chosen in Phase 1 step 2. These are illustrative examples,
|
|
64
|
+
not a fixed contract — confirm the real command or tool with the human before creating.
|
|
65
|
+
|
|
66
|
+
| Tracker | Example creation mechanism |
|
|
67
|
+
|---|---|
|
|
68
|
+
| GitHub | `gh issue create --title "<title>" --body-file <draft-body.md> --label <label>` |
|
|
69
|
+
| GitLab | `glab issue create --title "<title>" --description "<body>"` |
|
|
70
|
+
| Jira | the configured Jira CLI or MCP tool for issue creation |
|
|
71
|
+
| beads | `bd create "<title>" --description "<body>" --validate` |
|
|
72
|
+
|
|
73
|
+
Keep the approved draft verbatim — do not reformat it for the tracker. After creation,
|
|
74
|
+
copy the returned ID into the map's `Ticket ID` column, the draft's `Ticket ID` field, and
|
|
75
|
+
downstream `Depends on` cells.
|
|
76
|
+
|
|
77
|
+
## Worked run
|
|
78
|
+
|
|
79
|
+
Input: an approved RFC with eight numbered requirements and a target GitLab project.
|
|
80
|
+
Output: `.agent-cortex/tickets/checkout-v2-map.md` agreed in chat, eight drafts under
|
|
81
|
+
`.agent-cortex/tickets/checkout-v2/` reviewed as a set, then eight GitLab issues created in
|
|
82
|
+
dependency order with real IDs backfilled into the map and the drafts.
|