@jaybeeuu/agent-cortex 2.1.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 +387 -0
- package/README.md +33 -13
- package/agents/README.md +22 -10
- package/agents/plan/agent.md +2 -2
- package/agents/ralph/agent.md +126 -88
- 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 +182 -68
- 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/hooks/claude/scripts/notify.mjs +8 -1
- package/lib/cli.mjs +91 -2
- package/package.json +27 -3
- package/scripts/check-changeset.mjs +4 -0
- package/scripts/check-no-sync.mjs +5 -1
- 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 +23 -6
- 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 +182 -51
- package/skills/workflow/ralph/SKILL.md +89 -50
- 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 -153
- package/agents/ralph/claude/polling.md +0 -31
- package/agents-native/ralph.md +0 -203
- package/docs/claude-hooks.md +0 -144
- 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 -43
- 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 -200
- 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/output-style/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 -806
- package/test/notify-hook.test.mjs +0 -63
- package/test/pending-gates.test.mjs +0 -147
- 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/skill-frontmatter.test.mjs +0 -137
- package/test/verify-worker-tree.test.mjs +0 -120
package/docs/inspirations.md
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Inspirations
|
|
2
|
-
|
|
3
|
-
A living record of external repos and promoted internal research that inform agent-cortex skill and agent design.
|
|
4
|
-
|
|
5
|
-
## Internal research docs
|
|
6
|
-
|
|
7
|
-
- [Gas City research](research/gas-city-research.md)
|
|
8
|
-
- [Skill pattern research notes](research/skill-patterns-research.md)
|
|
9
|
-
- [Skill design research](research/skill-design-research.md)
|
|
10
|
-
- [Skill improvements analysis](research/skill-improvements-analysis.md)
|
|
11
|
-
|
|
12
|
-
## addyosmani/agent-skills
|
|
13
|
-
|
|
14
|
-
**URL**: https://github.com/addyosmani/agent-skills
|
|
15
|
-
**Last reviewed**: 2026-05-26
|
|
16
|
-
**Type**: Public skill collection (Claude Code / OpenCode)
|
|
17
|
-
|
|
18
|
-
### Structure patterns worth noting
|
|
19
|
-
|
|
20
|
-
| Pattern | Description | Adopted? |
|
|
21
|
-
|---|---|---|
|
|
22
|
-
| Consistent skeleton | Every skill follows a shared, predictable section model | Partially |
|
|
23
|
-
| "When NOT to use" | Explicit out-of-scope conditions in every skill | Planned |
|
|
24
|
-
| "Common Rationalizations" | Debunks excuses for skipping process steps | Planned |
|
|
25
|
-
| "Red Flags" | Concrete anti-patterns to detect during execution | Planned |
|
|
26
|
-
| Verification checklist | Completion gate in each skill | Planned |
|
|
27
|
-
| Cross-references | `See Also` links to related skills | Planned |
|
|
28
|
-
|
|
29
|
-
## Matt Pocock — skills repo
|
|
30
|
-
|
|
31
|
-
**URL**: https://github.com/mattpocock/skills
|
|
32
|
-
**Last reviewed**: 2026-05-26
|
|
33
|
-
**Type**: Public skill collection
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# `disable-model-invocation` across harnesses
|
|
2
|
-
|
|
3
|
-
Decision record for the frontmatter field this repo uses to keep rare or destructive
|
|
4
|
-
skills out of automatic model routing (bead `agnt-ctx-yf24`).
|
|
5
|
-
|
|
6
|
-
**Verdict:** rely on it for pi and Claude Code.
|
|
7
|
-
|
|
8
|
-
## What the field does
|
|
9
|
-
|
|
10
|
-
`disable-model-invocation: true` removes a skill from the list the model is offered.
|
|
11
|
-
The user can still invoke it explicitly. It does not summarise, rewrite, or
|
|
12
|
-
otherwise change how the body loads, which is what `docs/skills/skill-anatomy.md`
|
|
13
|
-
previously implied.
|
|
14
|
-
|
|
15
|
-
## Preservation and honouring
|
|
16
|
-
|
|
17
|
-
| Harness | Field survives materialisation | Loader honours it | Evidence |
|
|
18
|
-
| --- | --- | --- | --- |
|
|
19
|
-
| pi 1.4.0 | Yes — byte-identical copy | Yes — hidden from the prompt, `/skill:name` still works | `bin/installers/pi.mjs:182-204`, `scripts/lib/compose-agent.mjs:69-95`; `dist/core/skills.js:262` (parse) and `:279` (filter); `docs/skills.md:53` |
|
|
20
|
-
| Claude Code 2.1.294 | Yes — byte-identical copy | Yes — Claude cannot invoke it, `/skill-name` still works | `bin/installers/claude.mjs:160-201`, same token helper; [Claude Code skills docs](https://code.claude.com/docs/en/skills) ("Control who invokes a skill") |
|
|
21
|
-
|
|
22
|
-
Both materialisers copy `SKILL.md` as text and rewrite only `{{TOOL:...}}` /
|
|
23
|
-
`{{PATH:...}}` tokens, so frontmatter keys they do not know pass through untouched —
|
|
24
|
-
nothing re-serialises YAML. Verified by installing both harnesses into
|
|
25
|
-
`/var/tmp/dmi-check` and diffing `skills/productivity/teach/SKILL.md` (the repo's
|
|
26
|
-
only current user of the field): both copies are byte-identical to the source.
|
|
27
|
-
`claude plugin validate /var/tmp/dmi-check/claude/skills` passes, i.e. Claude Code's
|
|
28
|
-
own validator accepts the field rather than warning about it.
|
|
29
|
-
|
|
30
|
-
pi was probed against the materialised tree with its own loader: 32 skills loaded,
|
|
31
|
-
31 advertised, `teach` parsed with `disableModelInvocation: true` and absent from
|
|
32
|
-
`formatSkillsForPrompt` output.
|
|
33
|
-
|
|
34
|
-
## Per-harness detail
|
|
35
|
-
|
|
36
|
-
**pi.** Documented and implemented. `docs/skills.md:53`: "Set
|
|
37
|
-
`disable-model-invocation: true` in frontmatter when a skill should be available only
|
|
38
|
-
through its explicit command", with the frontmatter table listing it as "Hide the
|
|
39
|
-
skill from automatic model selection".
|
|
40
|
-
|
|
41
|
-
**Claude Code.** Documented, and the docs are explicit about the enforcement: "Claude
|
|
42
|
-
can't invoke the skill on its own … If Claude tries anyway, Claude Code blocks the
|
|
43
|
-
call and instructs it not to reproduce the deploy steps another way", and it "removes
|
|
44
|
-
the skill from Claude's context entirely".
|
|
45
|
-
|
|
46
|
-
Two Claude-specific caveats:
|
|
47
|
-
|
|
48
|
-
- The field is a Claude Code extension, not part of the
|
|
49
|
-
[Agent Skills spec](https://agentskills.io/specification), whose six fields
|
|
50
|
-
(`name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools`)
|
|
51
|
-
are otherwise exhaustive. Claude Code ignores unknown fields, but packing or
|
|
52
|
-
uploading a skill to claude.ai (or through the Skills API) "fails with a hard error
|
|
53
|
-
instead of ignoring the field". Our plugin path is unaffected; a skill we ever
|
|
54
|
-
publish to claude.ai must drop the field.
|
|
55
|
-
- `skillOverrides` does not apply to plugin skills, and our install is a plugin. The
|
|
56
|
-
frontmatter field itself still applies there — only that settings-based alternative
|
|
57
|
-
is unavailable.
|
|
58
|
-
|
|
59
|
-
## Options for "explicit invocation only", evaluated
|
|
60
|
-
|
|
61
|
-
| Option | Portable? | Enforced? | Verdict |
|
|
62
|
-
| --- | --- | --- | --- |
|
|
63
|
-
| `disable-model-invocation: true` | pi + Claude Code yes | Yes | **Recommended** where suppressing auto-routing is the point and the explicit path is a human typing `/name` |
|
|
64
|
-
| Naming convention (e.g. `manual-*`) | Yes | No — no harness reads names | Rejected: a human signal we already get from the body |
|
|
65
|
-
| `metadata:` block | Yes (spec-legal) | No — pi and Claude read top-level keys only | Rejected: documentation that looks like enforcement |
|
|
66
|
-
| Keep such skills out of `skills/` | Yes | Yes, by not shipping the skill | Rejected: gives up the per-harness install entirely |
|
|
67
|
-
|
|
68
|
-
## Recommendation
|
|
69
|
-
|
|
70
|
-
Use the field when the danger is fuzzy automatic matching and the intended explicit
|
|
71
|
-
path is a human typing `/skill-name`: that is the case for a migration skill whose
|
|
72
|
-
`--apply` renames labels workspace-wide.
|
|
73
|
-
|
|
74
|
-
## Reproducing
|
|
75
|
-
|
|
76
|
-
```sh
|
|
77
|
-
node bin/agent-cortex.mjs install claude --output /var/tmp/dmi-check/claude
|
|
78
|
-
node bin/agent-cortex.mjs install pi --output /var/tmp/dmi-check/pi
|
|
79
|
-
diff skills/productivity/teach/SKILL.md /var/tmp/dmi-check/claude/skills/teach/SKILL.md
|
|
80
|
-
diff skills/productivity/teach/SKILL.md /var/tmp/dmi-check/pi/skills/productivity/teach/SKILL.md
|
|
81
|
-
claude plugin validate /var/tmp/dmi-check/claude/skills
|
|
82
|
-
```
|
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
# Gas City Research Notes
|
|
2
|
-
|
|
3
|
-
This is a promoted research note.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Research conducted 2026-05-03/04. Source: `gastownhall/gascity` and related `gastownhall/*` repos.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## What is Gas City?
|
|
11
|
-
|
|
12
|
-
Gas City is a Go-based multi-agent orchestration SDK (`gc` CLI, v1.0.0, released 2026-04-21, MIT licence).
|
|
13
|
-
It manages **live interactive agent sessions** (Claude Code, Codex CLI, etc. running in tmux) rather than
|
|
14
|
-
making raw LLM API calls. It is not a replacement for LLM API access — it is a rack manager for persistent
|
|
15
|
-
agent processes.
|
|
16
|
-
|
|
17
|
-
Gas City is built on the **MEOW stack** (Molecular Expression of Work) — the same `bd` (beads) tooling
|
|
18
|
-
already in use in this repo.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## The MEOW Stack
|
|
23
|
-
|
|
24
|
-
MEOW = **Molecular Expression of Work**. A layered work-decomposition and tracking infrastructure:
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
Formulas / Orders ← TOML templates defining workflow shape + when it fires
|
|
28
|
-
↑
|
|
29
|
-
Molecules / Wisps ← durable chained bead workflows; instances of formulas
|
|
30
|
-
↑
|
|
31
|
-
Epics ← hierarchical bead grouping (parent/child beads)
|
|
32
|
-
↑
|
|
33
|
-
Beads ← atomic git-backed work units (the bd CLI)
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Core insight:** work is the primitive, not orchestration. The controller is a thin layer on top of the
|
|
37
|
-
MEOW stack. Work definition and tracking is what matters; orchestration shape is configurable on top.
|
|
38
|
-
|
|
39
|
-
**GUPP (Gas Town Universal Propulsion Principle):** *"If you find something on your hook, you run it."*
|
|
40
|
-
Agents are stateless pistons; the bead store is the engine.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Key Concepts
|
|
45
|
-
|
|
46
|
-
### Rigs
|
|
47
|
-
A **rig** is an external project directory (git repo) registered with a city. Each rig gets its own beads
|
|
48
|
-
database, agent hooks, and pack expansion. One city can manage multiple rigs (multiple repos) — this is
|
|
49
|
-
the primary multi-repo use case.
|
|
50
|
-
|
|
51
|
-
```toml
|
|
52
|
-
# city.toml
|
|
53
|
-
[[rigs]]
|
|
54
|
-
name = "my-api"
|
|
55
|
-
|
|
56
|
-
[[rigs]]
|
|
57
|
-
name = "my-frontend"
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### City
|
|
61
|
-
A deployment of packs + rigs under one controller. The controller runs as a persistent Go process managing
|
|
62
|
-
all sessions in all rigs.
|
|
63
|
-
|
|
64
|
-
### Packs / Formulas
|
|
65
|
-
Reusable TOML configuration bundles. A **formula** is a TOML workflow template defining steps and
|
|
66
|
-
dependencies. A **molecule** is an instance of a formula — materialised as beads in the store.
|
|
67
|
-
|
|
68
|
-
### Convergence
|
|
69
|
-
The outer retry loop. When a wisp closes, the controller's `HandleWispClosed()` (a 9-step deterministic
|
|
70
|
-
Go algorithm) evaluates a gate and decides: `iterate` (new wisp), `approved` (done), `no_convergence`
|
|
71
|
-
(blocked), or `waiting_manual` (human required).
|
|
72
|
-
|
|
73
|
-
### Orders
|
|
74
|
-
Scheduled formula dispatch. Five trigger types: `cooldown`, `cron`, `condition` (shell exit 0), `event`
|
|
75
|
-
(bead.closed on city bus), `manual`. Can dispatch a formula to an agent pool, or run a shell script
|
|
76
|
-
directly (`exec` orders — no LLM involved).
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## What Gas City Gives Us
|
|
81
|
-
|
|
82
|
-
| Capability | Status |
|
|
83
|
-
|---|---|
|
|
84
|
-
| Multi-repo orchestration (rigs) | ✅ Native — primary use case |
|
|
85
|
-
| Rack / dashboard (`gc status`, SPA) | ✅ Built-in |
|
|
86
|
-
| Agent lifecycle (crash recovery, idle-kill, restart) | ✅ Built-in |
|
|
87
|
-
| Worktree isolation (per-agent git branch) | ✅ `isolation = "worktree"` in agent config |
|
|
88
|
-
| Concurrent feature work (multiple agents, multiple branches) | ✅ Via pool + worktree isolation |
|
|
89
|
-
| Scheduling / reactive triggers (Orders) | ✅ 5 trigger types |
|
|
90
|
-
| Deterministic workflow routing | ✅ Controller is Go state machine (no LLM in routing path) |
|
|
91
|
-
| Formula-based step sequencing | ✅ TOML DAG, `needs` dependencies, executed by `bd` |
|
|
92
|
-
| Feature backlog isolation (separate bead stores) | ⚠️ Requires separate rigs; not automatic |
|
|
93
|
-
| Cross-repo bead dependencies | ❌ Not supported — issue #587, milestone `1.0+`, no timeline |
|
|
94
|
-
| Native loops in formulas | ❌ Formulas are DAGs; loops require the convergence engine |
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Architecture: Determinism vs. Agents
|
|
99
|
-
|
|
100
|
-
Gas City has a sharp boundary. The Go controller owns all routing; LLMs only do work and emit a verdict.
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
Agent works through formula steps
|
|
104
|
-
→ writes convergence.agent_verdict = "approve" | "block"
|
|
105
|
-
→ closes wisp
|
|
106
|
-
|
|
107
|
-
Controller HandleWispClosed() [pure Go, 9-step algorithm]
|
|
108
|
-
→ reads verdict (scoped to this wisp by agent_verdict_wisp)
|
|
109
|
-
→ runs gate shell script (exit 0 = pass, exit 1 = fail)
|
|
110
|
-
→ ActionApproved → state=terminated, done
|
|
111
|
-
→ ActionIterate → pour new wisp, re-dispatch to agent
|
|
112
|
-
→ ActionNoConvergence → state=terminated, blocked
|
|
113
|
-
→ ActionWaitingManual → human must gc conv approve
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**ACL enforcement:** agents can only write `convergence.agent_verdict` and
|
|
117
|
-
`convergence.agent_verdict_wisp`. All other `convergence.*` keys require a controller token — agents
|
|
118
|
-
cannot fake state transitions.
|
|
119
|
-
|
|
120
|
-
**Exec orders** bypass agents entirely — a shell script runs directly on the controller. Fully
|
|
121
|
-
deterministic, no LLM.
|
|
122
|
-
|
|
123
|
-
### Compared to LangGraph / Temporal
|
|
124
|
-
|
|
125
|
-
- Like Temporal: the convergence handler is crash-safe and idempotent (speculative-pour-before-commit).
|
|
126
|
-
- Unlike LangGraph: there is no Go-level `add_edge(A, B)` for application steps. Step ordering is
|
|
127
|
-
declared in TOML and executed by `bd`'s dependency graph — static, not dynamic code.
|
|
128
|
-
- The session reconciler and convergence state machine are code-defined graphs; the intra-molecule step
|
|
129
|
-
DAG is `bd`-managed.
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Multi-Feature Concurrent Work
|
|
134
|
-
|
|
135
|
-
**Three Jira tickets, one repo:**
|
|
136
|
-
|
|
137
|
-
1. Create a bead per ticket
|
|
138
|
-
2. Configure a coder pool with `isolation = "worktree"`
|
|
139
|
-
3. Gas City auto-creates a git worktree per agent instance (`.gc/worktrees/<rig>/<agent>/`) on a unique
|
|
140
|
-
branch (`gc/coder-<timestamp>`)
|
|
141
|
-
4. Agents work concurrently on separate branches; beads are in the shared rig store
|
|
142
|
-
5. Each branch → PR → merge independently; git resolves file conflicts at merge time
|
|
143
|
-
|
|
144
|
-
**Sub-task breakdown (architect → coder pattern):**
|
|
145
|
-
|
|
146
|
-
1. Create an epic bead for the ticket (HITL: spend time with an agent decomposing into child beads)
|
|
147
|
-
2. Child beads are labelled for the coder pool
|
|
148
|
-
3. One coder agent claims the epic, works child beads sequentially in its worktree/branch
|
|
149
|
-
4. Separate agents handle other tickets concurrently
|
|
150
|
-
|
|
151
|
-
**True backlog isolation** (separate bead stores per feature) requires registering each feature worktree
|
|
152
|
-
as its own rig — doable, more setup, only needed for truly independent multi-ticket sub-backlogs.
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## Worktrees: What's Automatic vs. Manual
|
|
157
|
-
|
|
158
|
-
`isolation = "worktree"` in an agent's config causes Gas City to automatically:
|
|
159
|
-
- Run `git worktree add .gc/worktrees/<rig>/<agent>/ -b gc/<agent>-<timestamp>`
|
|
160
|
-
- Place a `.beads/redirect` file in the worktree pointing back to the shared rig bead store
|
|
161
|
-
- Store `work_dir` in the bead metadata for restart recovery
|
|
162
|
-
|
|
163
|
-
You do NOT manually run `git worktree add`. The controller handles it.
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Bead Store Isolation Notes
|
|
168
|
-
|
|
169
|
-
- One `.beads/` database per rig directory — strictly enforced
|
|
170
|
-
- Worktrees share the parent rig's bead store via `.beads/redirect`
|
|
171
|
-
- Two cities registering the same rig path silently share the same bead DB (acknowledged bug, issue #587)
|
|
172
|
-
- `dolt_host`/`dolt_port` overrides exist as a manual escape hatch for pointing rigs at different stores
|
|
173
|
-
- Concurrent workstreams within one rig: use labels (`pool:feature-a`, `pool:feature-b`) — same DB,
|
|
174
|
-
logically partitioned
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## Implications for agent-cortex / ralph / run-beads
|
|
179
|
-
|
|
180
|
-
### Formulas for the TDD pipeline
|
|
181
|
-
|
|
182
|
-
The run-beads TDD pipeline (test-writing → coding → test-reviewing → verifying → reviewing → fixing →
|
|
183
|
-
documenting) maps naturally to a formula:
|
|
184
|
-
|
|
185
|
-
```toml
|
|
186
|
-
[[steps]]
|
|
187
|
-
id = "test-writing"
|
|
188
|
-
title = "Write failing tests"
|
|
189
|
-
|
|
190
|
-
[[steps]]
|
|
191
|
-
id = "coding"
|
|
192
|
-
title = "Make the tests pass"
|
|
193
|
-
needs = ["test-writing"]
|
|
194
|
-
|
|
195
|
-
[[steps]]
|
|
196
|
-
id = "test-reviewing"
|
|
197
|
-
title = "Review the tests"
|
|
198
|
-
needs = ["coding"]
|
|
199
|
-
|
|
200
|
-
[[steps]]
|
|
201
|
-
id = "verifying"
|
|
202
|
-
title = "Run the test suite"
|
|
203
|
-
needs = ["test-reviewing"]
|
|
204
|
-
|
|
205
|
-
[[steps]]
|
|
206
|
-
id = "reviewing"
|
|
207
|
-
title = "Code review"
|
|
208
|
-
needs = ["verifying"]
|
|
209
|
-
|
|
210
|
-
[[steps]]
|
|
211
|
-
id = "documenting"
|
|
212
|
-
title = "Document the changes"
|
|
213
|
-
needs = ["reviewing"]
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
`bd` handles the step ordering via the dependency graph. Each step is a bead that unlocks when the
|
|
217
|
-
previous closes. No LLM in the sequencing path.
|
|
218
|
-
|
|
219
|
-
**The loop** (retry if gate fails) requires Gas City's convergence engine — `bd` alone executes DAGs, not
|
|
220
|
-
loops. Until Gas City is adopted, ralph (or an equivalent outer loop) is still needed for this.
|
|
221
|
-
|
|
222
|
-
### What moves to the deterministic layer
|
|
223
|
-
|
|
224
|
-
With Gas City:
|
|
225
|
-
- Step sequencing → formula `needs` dependencies (TOML, `bd`)
|
|
226
|
-
- Pass/fail routing → gate shell scripts (run tests, typecheck, lint)
|
|
227
|
-
- Retry loop → convergence engine (Go, deterministic)
|
|
228
|
-
- `generate-progress.ts` → largely replaceable by `gc status` / `bd` queries
|
|
229
|
-
- Ralph's dispatch table → formula + gate config
|
|
230
|
-
|
|
231
|
-
### The remaining gap
|
|
232
|
-
|
|
233
|
-
Cross-repo dependencies (e.g. "don't merge the API until the frontend bead closes") are not natively
|
|
234
|
-
supported. Workaround: a `condition` Order that shell-polls the upstream rig's `bd` state.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Community / Maturity
|
|
239
|
-
|
|
240
|
-
- Version: v1.0.0 (stable, 2026-04-21) — 610 commits in the v0.15.1→1.0.0 sprint
|
|
241
|
-
- Language: Go (1.25+)
|
|
242
|
-
- `gastownhall/beads` (the `bd` CLI): 23,049 ⭐, 1,510 forks
|
|
243
|
-
- Daily commit cadence; team self-hosts using Gas City (highest-signal feedback loop)
|
|
244
|
-
- MIT licence
|
|
245
|
-
- Active milestones: `1.0+`
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Open Issues Relevant to Us
|
|
250
|
-
|
|
251
|
-
| Issue | Title | Status |
|
|
252
|
-
|---|---|---|
|
|
253
|
-
| #587 | Multi-city rig and bead-state separation (Pack/City v2) | Open, accepted, no design yet |
|
|
254
|
-
| #907 | Hardcoded 'hq' DB name prevents multi-city Dolt sharing | Open, `1.0+` |
|
|
255
|
-
|
|
256
|
-
[Inspirations](../inspirations.md)
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
# Skill Design Research: Recommendations for agent-cortex
|
|
2
|
-
|
|
3
|
-
This is a promoted research note.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*Researched: 2026-05-26 — compares `mattpocock/skills` (commit b8be62f) against this repo's skills, cross-referenced with empirical prompt-engineering literature.*
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 1. Executive Summary
|
|
11
|
-
|
|
12
|
-
Three parallel research streams were combined:
|
|
13
|
-
|
|
14
|
-
1. **Structural analysis** of `mattpocock/skills` (14 active skills, authored by Matt Pocock)
|
|
15
|
-
2. **Inventory** of the 31 skills in this repo (`agent-cortex`)
|
|
16
|
-
3. **Literature review** of prompt/skill design research (Anthropic, Google, 10+ papers)
|
|
17
|
-
|
|
18
|
-
The headline finding: **agent-cortex skills are well-structured but systematically over-long, under-exampled, and too passive in their body text.** The mattpocock repo is ahead on progressive disclosure, cross-skill composability, and opinionated philosophy. The research literature backs all three of those design choices.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## 2. Comparison: mattpocock/skills vs agent-cortex
|
|
23
|
-
|
|
24
|
-
### 2.1 Structure
|
|
25
|
-
|
|
26
|
-
| Dimension | mattpocock/skills | agent-cortex | Delta |
|
|
27
|
-
|---|---|---|---|
|
|
28
|
-
| YAML front-matter | `name`, `description`, optional `argument-hint`, `disable-model-invocation` | `name`, `description` | Missing 2 fields |
|
|
29
|
-
| Description format | "What it does. Use when [natural-language triggers]." | Same — consistent | ✅ Aligned |
|
|
30
|
-
| Body sections | No enforced schema; phase headers, checklists, philosophy, anti-patterns | No enforced schema; varies widely | Similar |
|
|
31
|
-
| Typical SKILL.md length | 7–160 lines; strict 100-line soft cap | 29–169 lines; soft cap documented but not enforced | agent-cortex skews longer |
|
|
32
|
-
| Progressive disclosure | `REFERENCE.md` + named supporting `.md` files linked inline | `REFERENCE.md` on 3 skills only | Under-used in agent-cortex |
|
|
33
|
-
| Named supporting docs | `tests.md`, `mocking.md`, `ADR-FORMAT.md`, `CONTEXT-FORMAT.md`, `DEEPENING.md`, etc. | None — overflow goes to `REFERENCE.md` only | mattpocock more granular |
|
|
34
|
-
| Checklists | Used as explicit phase gates (`- [ ]`) | Rare | Missing in agent-cortex |
|
|
35
|
-
| Cross-skill references | Explicit inline calls: "run `/grill-with-docs`" | Implicit — no inline cross-refs | agent-cortex weaker |
|
|
36
|
-
| Shared vocabulary file | `CONTEXT.md` at repo root; skills told to read it | None | Missing in agent-cortex |
|
|
37
|
-
| Skill manifest | Flat JSON array of skill paths | Same | ✅ Aligned |
|
|
38
|
-
| `disable-model-invocation` | Used for pure prompt-injection skills | Used by `teach`; semantics now documented in `docs/skills/skill-anatomy.md` | Field adopted; rationale corrected |
|
|
39
|
-
| Missing SKILL.md | 0 | 1 (`prd-to-epics`) | Bug in agent-cortex |
|
|
40
|
-
|
|
41
|
-
### 2.2 Tone and Voice
|
|
42
|
-
|
|
43
|
-
| Dimension | mattpocock/skills | agent-cortex | Delta |
|
|
44
|
-
|---|---|---|---|
|
|
45
|
-
| Body voice | Imperative, 2nd person ("Read the full issue. Ask.") | Mixed — imperative in some, descriptive in others | Inconsistent in agent-cortex |
|
|
46
|
-
| Emphasis style | **bold** for key decisions; minimal CAPS | Occasional ALL-CAPS (`CRITICAL`, `MUST`) | Over-emphasis in agent-cortex |
|
|
47
|
-
| Conciseness | Punchy; no filler; "say it once" | Some skills have verbose rationale paragraphs | agent-cortex wordier |
|
|
48
|
-
| Examples | Inline code blocks, before/after contrasts, XML output templates | Sparse — only a handful of skills include examples | agent-cortex under-exampled |
|
|
49
|
-
| Philosophy | Explicitly baked in (Kent Beck references, banned practices with `DO NOT`) | Workflow-focused; philosophy largely absent | agent-cortex skips the "why" |
|
|
50
|
-
| Anti-pattern sections | Common (`## Anti-Pattern:`, before/after code blocks) | Absent | Missing in agent-cortex |
|
|
51
|
-
| Negative instructions | Mixed: "DO NOT write all tests first" (hard gate) + positive framing elsewhere | Heavy use of "do not", "never", "don't" | agent-cortex over-uses negatives |
|
|
52
|
-
|
|
53
|
-
### 2.3 Description Field Quality
|
|
54
|
-
|
|
55
|
-
Both repos follow the same two-part format: capability sentence + `"Use when..."`. The mattpocock descriptions tend to list *exact user vocabulary* (quoted phrases: `"diagnose this"`, `"let me play with it"`) which is more precise as a routing signal. agent-cortex descriptions are sometimes more abstract.
|
|
56
|
-
|
|
57
|
-
**mattpocock example** (precise triggers):
|
|
58
|
-
> "Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says 'diagnose this' / 'debug this', reports a bug, says something is broken/throwing/failing, or describes a performance regression."
|
|
59
|
-
|
|
60
|
-
**agent-cortex example** (vaguer triggers):
|
|
61
|
-
> "Create a task bead, classify it as AFK or HITL, and if AFK expand it into pipeline stage chores plus a HITL PR gate. Use when starting tracked work with implementation and review gates — 'create a task for this', 'track this end-to-end', or 'get this into the ralph pipeline'."
|
|
62
|
-
|
|
63
|
-
The agent-cortex description leads with internal mechanics ("task bead", "AFK", "HITL") rather than what the user is trying to accomplish — the quoted triggers were added in a later refactor, but the jargon remains.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## 3. Evidence-Backed Recommendations
|
|
68
|
-
|
|
69
|
-
### Rec 1 — Progressive Disclosure: Split overlong skills
|
|
70
|
-
|
|
71
|
-
**Evidence**: Anthropic Claude Code best practices: *"Bloated CLAUDE.md files cause Claude to ignore your actual instructions!"* LIMA (Zhou et al., NeurIPS 2023) confirms quality beats quantity — 1,000 curated examples matched GPT-4; adding more degraded focus. Schulhoff et al. (ACL 2024, arXiv:2406.06608) found structure + clarity most consistently effective across 58 techniques.
|
|
72
|
-
|
|
73
|
-
**Current state**: 11 of 28 agent-cortex skills exceed 100 lines (`run-beads` is 169, `style-code` 151). Only 3 have `REFERENCE.md`.
|
|
74
|
-
|
|
75
|
-
**Recommendation**: Split all skills over ~100 lines. Prefer *named, purpose-specific files* over a catch-all `REFERENCE.md`:
|
|
76
|
-
- `REFERENCE.md` — rarely-needed edge cases
|
|
77
|
-
- `EXAMPLES.md` — worked examples (if multiple)
|
|
78
|
-
- `FORMAT.md` — output schemas / templates
|
|
79
|
-
- `WORKFLOW.md` — detailed step expansions
|
|
80
|
-
|
|
81
|
-
Candidates to split immediately: `run-beads`, `style-code`, `tdd`, `ralph`.
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
### Rec 2 — Consistent Imperative Voice in Skill Bodies
|
|
86
|
-
|
|
87
|
-
**Evidence**: The "26 Principles" paper (Bsharat et al., arXiv:2312.16171, VILA Lab 2024) tested 26 prompting principles on GPT-3.5/4 and LLaMA, finding an average **57.7% quality improvement** on GPT-4. Direct command framing (Principle 16) and specificity (Principle 5) had the largest gains on large models. Anthropic explicitly: *"treat the model as a brilliant but new employee who lacks context on your norms"* — this framing implies 2nd-person imperative.
|
|
88
|
-
|
|
89
|
-
**Current state**: agent-cortex mixes voices. Some skills are tight and imperative (`review-security`); others narrate what the skill *will* do rather than commanding the agent to do it.
|
|
90
|
-
|
|
91
|
-
**Recommendation**:
|
|
92
|
-
- Skill body: imperative, 2nd person. "Run `gitleaks protect --staged`", not "The skill runs gitleaks."
|
|
93
|
-
- Description field: third-person declarative. "Scans git changes for secrets."
|
|
94
|
-
- Remove all-caps emphasis (`CRITICAL`, `MUST`). Anthropic Claude Code notes: *"Where you might have said 'CRITICAL: You MUST use this tool when...', you can use more normal prompting like 'Use this tool when...'"* — over-emphasis backfires with modern models.
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
### Rec 3 — Replace Negative Instructions with Positive Framing
|
|
99
|
-
|
|
100
|
-
**Evidence**: Anthropic Prompting Best Practices gives an explicit side-by-side:
|
|
101
|
-
> ❌ `"Do not use markdown in your response"`
|
|
102
|
-
> ✅ `"Your response should be composed of smoothly flowing prose paragraphs."`
|
|
103
|
-
|
|
104
|
-
The "26 Principles" paper lists "affirmative instructions, no 'don't'" as Principle 3 with consistent cross-model gains. Mechanistically, negative instructions require the model to hold a prohibited concept in working memory and suppress it — more error-prone than activating the desired pattern directly.
|
|
105
|
-
|
|
106
|
-
**Current state**: agent-cortex skills have frequent negative phrasing: "Do not work a HITL bead", "Don't commit without scanning", "Never use relative paths."
|
|
107
|
-
|
|
108
|
-
**Recommendation**:
|
|
109
|
-
|
|
110
|
-
| Instead of | Use |
|
|
111
|
-
|---|---|
|
|
112
|
-
| "Do not work a HITL bead" | "Inform the user it requires human action and stop" |
|
|
113
|
-
| "Never use relative paths" | "Use absolute paths — agents may change CWD mid-session" |
|
|
114
|
-
| "Don't commit without scanning" | "Always run `review-security` before committing" |
|
|
115
|
-
|
|
116
|
-
Reserve "do not" for hard correctness/safety constraints that genuinely need an explicit backstop. For stylistic preferences, positive framing only.
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
### Rec 4 — Include Rationale for Non-Obvious Rules
|
|
121
|
-
|
|
122
|
-
**Evidence**: Anthropic best practices: *"Providing context or motivation behind your instructions, such as explaining why such behavior is important, can help Claude better understand your goals and deliver more targeted responses. Claude is smart enough to generalize from the explanation."* Chain-of-Thought (Wei et al., NeurIPS 2022, arXiv:2201.11903) showed that *reasoning traces* — not just input→output — dramatically outperform bare instructions. The "26 Principles" paper Principles 2 and 5 (explain purpose, specify stakes) were among the highest-impact on GPT-4.
|
|
123
|
-
|
|
124
|
-
**Current state**: agent-cortex skills state rules but rarely explain them. A reader (or agent) encountering "Use absolute paths" won't know why.
|
|
125
|
-
|
|
126
|
-
**Recommendation**: Add one-sentence rationale for any non-obvious rule. Pattern:
|
|
127
|
-
|
|
128
|
-
```markdown
|
|
129
|
-
Use absolute paths — agents may change CWD mid-session, breaking relative references.
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Do **not** write paragraphs of rationale. One sentence is enough; the model generalises from it.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
### Rec 5 — Add Worked Examples to Key Skills
|
|
137
|
-
|
|
138
|
-
**Evidence**: Chain-of-Thought (Wei et al., NeurIPS 2022): *"prompting a 540B-parameter language model with just 8 chain-of-thought exemplars achieves state-of-the-art accuracy on GSM8K, surpassing even fine-tuned GPT-3."* Anthropic: *"A few well-crafted examples can dramatically improve accuracy and consistency."* Recommendation: 3–5 examples, wrapped in `<example>` tags, covering diverse cases. APE (Zhou et al., ICLR 2023, arXiv:2211.01910) found example-seeded instructions outperformed hand-written instructions on 19/24 tasks. Selective Annotation (Su et al., arXiv:2209.01975) showed *diverse* examples give a 12.9% relative gain over random ones.
|
|
139
|
-
|
|
140
|
-
**Current state**: most agent-cortex skills have no worked examples. `run-beads` has a `---REPORT---` output template; `review-security` shows exact commands. These are the strongest skills.
|
|
141
|
-
|
|
142
|
-
**Recommendation**: For each skill, identify what the agent produces as output and include 1 complete worked example. For CLI-heavy skills, show exact commands with substitution markers. For decision-heavy skills, add a decision table.
|
|
143
|
-
|
|
144
|
-
```markdown
|
|
145
|
-
## Example Output
|
|
146
|
-
|
|
147
|
-
---REPORT---
|
|
148
|
-
Bead: bd-42 "Add login page"
|
|
149
|
-
Status: ✅ done
|
|
150
|
-
PR: https://github.com/org/repo/pull/99
|
|
151
|
-
---
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Extract to `EXAMPLES.md` if more than ~30 lines.
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
### Rec 6 — Add Explicit Phase Gates (Checklists)
|
|
159
|
-
|
|
160
|
-
**Evidence**: Schulhoff et al. (ACL 2024) found structured verification steps consistently reduce hallucination and task-deviation. Anthropic Building Effective Agents: *"Give Claude a way to verify its work."* The mattpocock `diagnose` and `tdd` skills use `- [ ]` checklists as explicit gates between phases — the agent cannot proceed without the checklist being satisfied.
|
|
161
|
-
|
|
162
|
-
**Current state**: agent-cortex multi-phase skills (`ralph`, `run-beads`, `tdd`) describe phases in prose but have no explicit verification gates.
|
|
163
|
-
|
|
164
|
-
**Recommendation**: For any multi-phase skill, add a short checklist at the end of each phase:
|
|
165
|
-
|
|
166
|
-
```markdown
|
|
167
|
-
## Phase 1 — Explore
|
|
168
|
-
|
|
169
|
-
- Read the bead description and all linked files
|
|
170
|
-
- Identify the affected modules
|
|
171
|
-
- [ ] Can you describe the change in one sentence?
|
|
172
|
-
- [ ] Do you know which files will change?
|
|
173
|
-
|
|
174
|
-
Move to Phase 2 only when both boxes are checked.
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
### Rec 7 — Sharpen Description Trigger Vocabulary
|
|
180
|
-
|
|
181
|
-
**Evidence**: Anthropic Building Effective Agents: *"Think of this as writing a great docstring for a junior developer on your team."* For agents, descriptions are the only routing signal. FLAN (Wei et al., ICLR 2022) showed instruction-tuned models generalise from natural language task descriptions — use the vocabulary a user would *actually speak*, not internal system jargon. Anthropic tool use note: `"Use when"` language *actively counteracts* the model's default tendency to solve problems without invoking tools.
|
|
182
|
-
|
|
183
|
-
**Current state**: some agent-cortex descriptions describe internal mechanics rather than user intent. E.g., `create-task`: *"Use when starting tracked work with implementation and review gates — 'create a task for this', 'track this end-to-end', or 'get this into the ralph pipeline'."* — rewritten to add quoted user triggers (per this rec), though it still leans on internal jargon like "ralph pipeline" a user wouldn't say.
|
|
184
|
-
|
|
185
|
-
**Recommendation**: Rewrite descriptions to lead with user-vocabulary triggers. Include 2–4 quoted phrases or scenario patterns a user might say:
|
|
186
|
-
|
|
187
|
-
```yaml
|
|
188
|
-
description: >
|
|
189
|
-
Break a piece of work into a tracked task with a full implementation pipeline.
|
|
190
|
-
Use when the user says "create a task", "let's track this", "add a bead", "file this
|
|
191
|
-
as a ticket", or wants to turn a conversation into actionable work.
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
### Rec 8 — Establish Composability via Explicit Cross-References
|
|
197
|
-
|
|
198
|
-
**Evidence**: Anthropic Building Effective Agents promotes "orchestration" patterns where agents compose tools rather than re-implementing logic. mattpocock's skills reference each other by name inline (e.g., "run `/grill-with-docs`"), creating a composable skill library. Meta-prompting (Suzgun et al., arXiv:2401.12954) found high-level orchestration instructions (+17.1%) outperform monolithic step-by-step skills.
|
|
199
|
-
|
|
200
|
-
**Current state**: agent-cortex skills are largely self-contained monoliths. `ralph` calls `run-beads` but this is the only explicit cross-reference.
|
|
201
|
-
|
|
202
|
-
**Recommendation**: Where a skill currently duplicates logic from another skill, replace the duplication with an explicit invocation: *"Run the `review-security` skill before committing."* Document the skill dependency graph informally in `AGENTS.md`.
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
### Rec 9 — Add `argument-hint` to Input-Driven Skills
|
|
207
|
-
|
|
208
|
-
**Evidence**: Anthropic tool design (Building Effective Agents, Appendix 2): *"Is it obvious how to use this tool? ... This is especially important when using many similar tools."* The `argument-hint` front-matter field (present in mattpocock's plugin schema) surfaces a prompt to the user at invocation time — preventing input ambiguity before the skill runs.
|
|
209
|
-
|
|
210
|
-
**Current state**: agent-cortex plugin schema doesn't include `argument-hint`. Skills like `write-a-ticket`, `run-beads` take implicit input that could benefit from a hint.
|
|
211
|
-
|
|
212
|
-
**Recommendation**: Add `argument-hint` support to `plugin.json` schema and add hints to skills that take input:
|
|
213
|
-
|
|
214
|
-
```yaml
|
|
215
|
-
argument-hint: "Describe the bug or paste the error message"
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
### Rec 10 — Fix prd-to-epics Missing SKILL.md
|
|
221
|
-
|
|
222
|
-
**Current state**: Resolved in #16 — the broken `skills/prd-to-epics/` directory was removed; epic/task decomposition is consolidated into the `prd-to-tasks` skill (see CHANGELOG 1.0.0).
|
|
223
|
-
|
|
224
|
-
**Recommendation**: Either write the missing `SKILL.md` or remove the directory. This is a straightforward bug.
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## 4. Prioritised Change List
|
|
229
|
-
|
|
230
|
-
| Priority | Change | Effort | Evidence strength |
|
|
231
|
-
|---|---|---|---|
|
|
232
|
-
| P0 | Fix missing `prd-to-epics/SKILL.md` | Low | N/A — broken |
|
|
233
|
-
| P1 | Split skills > 100 lines (7 candidates) | Medium | Strong — Anthropic production data |
|
|
234
|
-
| P1 | Convert negative instructions to positive framing | Low | Strong — 26 Principles paper, Anthropic |
|
|
235
|
-
| P1 | Sharpen description trigger vocabulary (use user-vocab) | Low | Strong — FLAN, Anthropic tool use docs |
|
|
236
|
-
| P2 | Add imperative voice to passive skill bodies | Medium | Strong — 26 Principles paper |
|
|
237
|
-
| P2 | Remove ALL-CAPS emphasis | Low | Medium — Anthropic Claude Code guide |
|
|
238
|
-
| P2 | Add 1-sentence rationale to non-obvious rules | Low | Strong — CoT, 26 Principles |
|
|
239
|
-
| P2 | Add worked examples to output-producing skills | Medium | Strong — Wei et al. CoT, Anthropic |
|
|
240
|
-
| P3 | Add phase-gate checklists to multi-phase skills | Medium | Medium — Schulhoff survey, mattpocock pattern |
|
|
241
|
-
| P3 | Add explicit cross-skill references | Low | Medium — Meta-prompting paper |
|
|
242
|
-
| P3 | Add `argument-hint` support and populate | Medium | Medium — Anthropic tool design |
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## 5. What mattpocock Does That We Should Consider Adopting Wholesale
|
|
247
|
-
|
|
248
|
-
These are patterns present in `mattpocock/skills` that have no equivalent here and are backed by evidence:
|
|
249
|
-
|
|
250
|
-
1. **`CONTEXT.md` at repo root** — a shared domain glossary that all skills read. Prevents terminology drift across skills and gives the agent grounding in project domain terms. (The `grill-with-docs` skill builds this automatically.)
|
|
251
|
-
|
|
252
|
-
2. **Philosophy sections in skills** — `tdd` doesn't just describe TDD, it argues *why* horizontal slicing is wrong. This bakes intent into the skill so the agent handles novel cases correctly (backed by CoT rationale evidence).
|
|
253
|
-
|
|
254
|
-
3. **`disable-model-invocation: true`** — hides a skill from automatic model routing so only an explicit `/skill-name` invocation reaches it. See `docs/research/disable-model-invocation.md` for per-harness behaviour and caveats.
|
|
255
|
-
|
|
256
|
-
4. **Composability by design** — skills reference each other by slash-command inline. This keeps each skill shorter and creates a network of reusable primitives rather than monolithic blobs.
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## 6. What We Do Well That mattpocock Doesn't
|
|
261
|
-
|
|
262
|
-
1. **Richer plugin manifest** — MCP server declarations, richer metadata.
|
|
263
|
-
2. **Bundled scripts** — `run-beads`, `create-task`, `review-security`, `record-idea` all include deterministic scripts that reduce regeneration of boilerplate. mattpocock has this for `diagnose` and `git-guardrails` only.
|
|
264
|
-
3. **Task tracking integration** — `bd` / beads integration is deeply embedded across skills; mattpocock uses GitHub Issues directly without an equivalent agent-native tracker.
|
|
265
|
-
4. **HITL/AFK distinction** — explicitly modelled and surfaced in `run-beads`, `classify-bead`, etc. mattpocock's `to-issues` introduces the concept but doesn't enforce it system-wide.
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Sources
|
|
270
|
-
|
|
271
|
-
| Source | Key Findings Used |
|
|
272
|
-
|---|---|
|
|
273
|
-
| Anthropic Prompting Best Practices | Positive framing, numbered steps, XML tags, 3–5 examples, rationale inclusion, query placement (+30%) |
|
|
274
|
-
| Anthropic Building Effective Agents | Tool documentation = system prompt importance; ACI design; poka-yoke; verification criteria |
|
|
275
|
-
| Anthropic Claude Code Best Practices | Conciseness critical; bloated files → ignored rules; positive examples > negative instructions; no ALL-CAPS |
|
|
276
|
-
| Google Vertex AI Clear Instructions | Specificity + constraints → precise output |
|
|
277
|
-
| Bsharat et al. (2024) arXiv:2312.16171 | 26 prompting principles; avg +57.7% quality / +36.4% correctness on GPT-4 |
|
|
278
|
-
| Wei et al. (2022) arXiv:2201.11903 (CoT) | 8 CoT examples beat fine-tuned models; reasoning traces > bare instructions |
|
|
279
|
-
| Wei et al. (2021) arXiv:2109.01652 (FLAN) | Natural-language commands generalise better than passive descriptions |
|
|
280
|
-
| Zhou et al. (2022) arXiv:2211.01910 (APE) | Example-seeded instructions beat human instructions on 19/24 tasks |
|
|
281
|
-
| Zhou et al. (2023) arXiv:2305.11206 (LIMA) | 1,000 curated examples ≈ GPT-4 quality; quality >> volume |
|
|
282
|
-
| Suzgun et al. (2024) arXiv:2401.12954 | High-level orchestration +17.1% vs standard prompting |
|
|
283
|
-
| Schulhoff et al. (2024) arXiv:2406.06608 | ACL survey of 58 techniques; structure + clarity most consistently effective |
|
|
284
|
-
| mattpocock/skills (commit b8be62f) | Structural reference; progressive disclosure; composability; checklists |
|
|
285
|
-
|
|
286
|
-
[Inspirations](../inspirations.md)
|