fix(ci): green the trunk — dangerous-pattern excludes, markdownlint, skill-flow danglers, derived-artifact regen, stale bats (ag-ws4cl)

Trunk on main has been RED since 2026-06-08 (last green c9c3e270). Restores
every blocking gate to green on a branch. Five fix categories:

1. security / dangerous-pattern: add install-claude.sh, install-agy.sh, and
   install.sh to the curl|bash --exclude list in validate.yml. install.sh
   gained an AGY install-instructions echo (curl|bash) on 2026-06-09; the two
   new install scripts mirror the already-excluded install-codex/opencode set.

2. lint / markdownlint: fix 3 pre-existing failures without deleting content —
   MD037 (backtick the glob paths so * isn't read as emphasis) in
   dirty-main-attribution; two MD004 (rewrap so a continuation '+' isn't read
   as a plus-style bullet) in ag-s43tg-resume + skill-prune-phase2.

3. skill-flow danglers: the Phase-2 skill prune (40ee1c34f) deleted
   brainstorm/design/complexity/ratchet/audit-report/learning/
   operating-loop-skill/cass-memory but left consumes/metadata.dependencies/
   context_rel edges pointing at them. Removed the dangling edges from
   discovery, refactor, eval-outcomes, rpi, operationalize, agy-native, perf,
   test, acfs. converge (thin memo) now consumes the whitelisted command-help
   artifact; converge + beads-bv (orphaned when operating-loop-skill was pruned)
   added to skill-flow-standalone.txt with rationale.

4. derived-artifact drift: regenerated catalog.json, registry.json,
   context-map.md, and the 10 skills-codex .agentops-generated.json twins +
   manifest via scripts/regen-all.sh after the frontmatter edits.

5. stale bats: brainstorm-discovery-ideation.bats followed the deliberate
   bd->br tracker migration (f650d41bb) — assert br / ban bd — and the codex
   anti-leak guard now targets the real codex twin (skills-codex/discovery)
   instead of the shared Claude reference (which legitimately uses
   AskUserQuestion). install-sh-runtime-detection.bats updated to the new
   multi-vendor install-suggestion output format.

Did NOT touch tests/scripts/validate-skill-disposition-schema.bats: its
"bad revision origin/main" failure is a CI-env artifact (checkout lacks the
origin/main named ref); all 24 cases pass locally with the ref present and the
4 guarded files unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Boden Fuller
2026-06-14 14:31:32 -04:00
parent aa30a39ae6
commit 606c00e484
31 changed files with 75 additions and 118 deletions
+3
View File
@@ -718,6 +718,9 @@ jobs:
--exclude="install-codex.sh" \
--exclude="install-codex-plugin.sh" \
--exclude="install-codex-native-skills.sh" \
--exclude="install-claude.sh" \
--exclude="install-agy.sh" \
--exclude="install.sh" \
--exclude="ci-local-release.sh" \
. 2>/dev/null; then
echo "Found: $pattern"
+1 -11
View File
@@ -103,10 +103,8 @@ and [CDLC](https://github.com/boshu2/agentops/blob/main/docs/cdlc.md) for the ar
```mermaid
graph LR
acfs -- "supplier-to" --> operating-loop-skill
agy-headless-evidence -- "customer-of" --> agy-native
agy-headless-evidence -- "supplier-to" --> validate
agy-native -- "customer-of" --> operating-loop-skill
automation-shape-routing -- "supplier-to" --> operationalize
automation-shape-routing -- "supplier-to" --> skill-builder
automation-shape-routing -- "supplier-to" --> workflow-builder
@@ -175,7 +173,6 @@ graph LR
| `agent-native` | produces | docs/contracts/agent-runtime-profile.md |
| `agy-headless-evidence` | consumes | agy-native |
| `agy-headless-evidence` | produces | agy-evidence-dir |
| `agy-native` | consumes | operating-loop-skill |
| `agy-native` | produces | agy-run-evidence |
| `autodev` | consumes | evolve |
| `autodev` | consumes | rpi |
@@ -194,7 +191,7 @@ graph LR
| `continuity-loop` | consumes | ntm |
| `continuity-loop` | produces | .agents/continuity/state.json |
| `continuity-loop` | produces | escalation-message |
| `converge` | consumes | ao converge |
| `converge` | consumes | command-help |
| `converge` | produces | stdout |
| `converter` | produces | converted-skill |
| `council` | consumes | standards |
@@ -208,8 +205,6 @@ graph LR
| `crank` | produces | .agents/swarm/results/*.json |
| `crank` | produces | git-changes |
| `curate` | produces | .agents/research/*.md |
| `discovery` | consumes | brainstorm |
| `discovery` | consumes | design |
| `discovery` | consumes | plan |
| `discovery` | consumes | pre-mortem |
| `discovery` | consumes | research |
@@ -221,7 +216,6 @@ graph LR
| `doc` | produces | documentation |
| `domain` | produces | stdout |
| `eval-outcomes` | consumes | council |
| `eval-outcomes` | consumes | ratchet |
| `eval-outcomes` | consumes | validate |
| `eval-outcomes` | produces | skills/council/schemas/verdict.json |
| `evolve` | consumes | compile |
@@ -237,8 +231,6 @@ graph LR
| `implement` | consumes | domain |
| `implement` | produces | git-changes |
| `operationalize` | consumes | .agents/research/*.md |
| `operationalize` | consumes | audit-report |
| `operationalize` | consumes | learning |
| `operationalize` | produces | .agents/operationalize/*.md |
| `operationalize` | produces | routed-handoffs |
| `perf` | consumes | repo-context |
@@ -268,7 +260,6 @@ graph LR
| `recover` | produces | .agents/rpi/*.md |
| `red-team` | consumes | repo-context |
| `red-team` | produces | result.json |
| `refactor` | consumes | complexity |
| `refactor` | consumes | repo-context |
| `refactor` | produces | git-changes |
| `release` | produces | result.json |
@@ -282,7 +273,6 @@ graph LR
| `rpi` | consumes | crank |
| `rpi` | consumes | discovery |
| `rpi` | consumes | domain |
| `rpi` | consumes | ratchet |
| `rpi` | consumes | validate |
| `rpi` | produces | .agents/rpi/*.md |
| `scaffold` | produces | converted-skill |
@@ -13,9 +13,9 @@ bead: ag-xwjlc (seams epic)
- main's recent history is `aug/*` merge commits (aug/validate, aug/status,
aug/rpi, aug/review, aug/refactor ...) — an augmentation wave in progress.
- The working tree on host main is dirty with a large in-flight pass:
PRODUCT.md, docs/SKILLS.md, docs/contracts/* (context-map, dispositions,
PRODUCT.md, docs/SKILLS.md, `docs/contracts/*` (context-map, dispositions,
critical-skills), .github/workflows/validate.yml, skills/SKILL-TIERS.md, many
skills/*/SKILL.md (including uncommitted DELETIONS of vibe/ratchet/brainstorm/
`skills/*/SKILL.md` (including uncommitted DELETIONS of vibe/ratchet/brainstorm/
design/scenario/... — at committed HEAD those skills still exist), full
skills-codex/ + images/gemini/ regen surfaces. `git status --porcelain`
snapshot captured at decision time (~600 entries; see session evidence
@@ -63,8 +63,8 @@ hard constraint reserves for one writer:
scenario-test linkage, regen-all --check, context-map drift). Fix-forward on
red; the gate naming a stale surface is the designed trip-wire, not a thing
to disarm.
6. **One atomic commit** (removals + ledger + regen + the two tracked plan docs
+ trigger manifest), push main (carries 3384f5638 with it).
6. **One atomic commit** (removals + ledger + regen + the two tracked plan
docs + trigger manifest), push main (carries 3384f5638 with it).
`git revert <sha>` restores everything together.
7. **Verify:** `ls skills | wc -l` = 68; pinned-manifest grep all-GREEN;
`link-skill --all --relink`; `validate.yml` green on main.
+2 -2
View File
@@ -27,8 +27,8 @@ Skill count: 114 → **105** (97 user-facing + 8 internal).
- `scripts/skill-flow-standalone.txt`: 3 stale entries removed.
- `scripts/validate-agy-plugin.sh`: 10 stale core_skills removed (9 were Phase 1
misses — script was failing on main); `.agy-plugin/skills/` bundle pruned to 17
+ 9 drifted SKILL.mds resynced. Validator now PASSES (was failing).
misses — script was failing on main); `.agy-plugin/skills/` bundle pruned to
17 + 9 drifted SKILL.mds resynced. Validator now PASSES (was failing).
- `tests/docs/broken-links-allowlist.txt`: matches belong to the research skill's
own reference files (same basename) — no change needed.
- zsh footnote: the first sweep pass used unquoted `$names` word-splitting, which
+4 -13
View File
@@ -1,6 +1,6 @@
{
"schema_version": 2,
"generated_at": "2026-06-14T17:07:44Z",
"generated_at": "2026-06-14T18:25:10Z",
"summary": {
"skills": 72,
"hooks": 0,
@@ -1749,9 +1749,7 @@
"parity_policy": "required",
"aliases": [],
"supersedes": null,
"consumes": [
"operating-loop-skill"
],
"consumes": [],
"produces": [
"agy-run-evidence"
],
@@ -2163,7 +2161,7 @@
"aliases": [],
"supersedes": null,
"consumes": [
"ao converge"
"command-help"
],
"produces": [
"stdout"
@@ -2362,8 +2360,6 @@
"aliases": [],
"supersedes": null,
"consumes": [
"brainstorm",
"design",
"plan",
"pre-mortem",
"research",
@@ -2472,7 +2468,6 @@
"supersedes": null,
"consumes": [
"validate",
"ratchet",
"council"
],
"produces": [
@@ -2827,9 +2822,7 @@
"aliases": [],
"supersedes": null,
"consumes": [
".agents/research/*.md",
"audit-report",
"learning"
".agents/research/*.md"
],
"produces": [
".agents/operationalize/*.md",
@@ -3253,7 +3246,6 @@
"aliases": [],
"supersedes": null,
"consumes": [
"complexity",
"repo-context"
],
"produces": [
@@ -3387,7 +3379,6 @@
"crank",
"discovery",
"domain",
"ratchet",
"validate"
],
"produces": [
+2
View File
@@ -75,3 +75,5 @@ stash-hygiene-sweep # standalone external-boundary or library/analy
ubs # standalone external-boundary or library/analyzer skill; no peer skill edge by design
vibing-with-ntm # standalone external-boundary or library/analyzer skill; no peer skill edge by design
worktree-branch-rationalization # standalone external-boundary or library/analyzer skill; no peer skill edge by design
beads-bv # tracker-triage primitive; lost its only incoming edge when operating-loop-skill was pruned (ag-if7p) — leaf by design, like status/beads-workflow
converge # thin memo over the `ao converge` command (driving-adapter); no peer skill edge by design, like status
+10 -10
View File
@@ -1000,7 +1000,7 @@
{
"name": "acfs",
"source_skill": "skills/acfs",
"source_hash": "b0e2e35f958f5fa111dccc0ea1971d71c065a98303821c9d80a5c1412fc51faa",
"source_hash": "a0ec97af82529e00df46d325121b2e45621f8607dac2c3545364b87e91676979",
"generated_hash": "bf2564f612c7edeeb8a96b72649a33a2d8247b3b30a9ae52603d02c060bfb946"
},
{
@@ -1030,7 +1030,7 @@
{
"name": "agy-native",
"source_skill": "skills/agy-native",
"source_hash": "85309d247ad37bd783f62c3e554af93a377de80e07bfd2674dd26bcd824a58d0",
"source_hash": "b84c5f7d13b5665ebf8f3b7aa6e3408f20353022e9f05a1f1122316e39a0035a",
"generated_hash": "38f0627619fe29459b27ae125364737483302cdf18a77e13d6f4e3aef21ea34d"
},
{
@@ -1144,7 +1144,7 @@
{
"name": "converge",
"source_skill": "skills/converge",
"source_hash": "f7711e6ff9a7d4c212cd8a9242c3189649290bf96a2ba50074e16f9a9d8ce094",
"source_hash": "e73d0e90e5199e9b5c38bccfe11c10773ff1da131c6bf9f3cb8f673f836128ba",
"generated_hash": "4210749b835a469aac459ae9a6e66aaab9df62e2370f02575052f6eaf97b6264"
},
{
@@ -1210,7 +1210,7 @@
{
"name": "discovery",
"source_skill": "skills/discovery",
"source_hash": "f41d6f1c8d863cc8b5f848286a3e15a9f613158b0671bbe9a37c0d2001563288",
"source_hash": "b335f6eca9b88cf0878a788002052d1d3a926fcde2a58689786213eaabbe9f27",
"generated_hash": "38ab1cbc2a714653d6d0a3c675d8336bc3f6e4dfe6f388016573a5d4f26f9491"
},
{
@@ -1246,7 +1246,7 @@
{
"name": "eval-outcomes",
"source_skill": "skills/eval-outcomes",
"source_hash": "7f05f9bc5d0220e07ba01a51c90fc2fe9c552b885373e5db769019dde0cd37e1",
"source_hash": "064d6cc2cbc4112af98f4c5798e50c734974e76394b38e86f6d601b0e66bb110",
"generated_hash": "a7243ecfd6177318f1ef25babdeb0b9061d09b9c2f8d89495268ed1c46925bd0"
},
{
@@ -1354,7 +1354,7 @@
{
"name": "operationalize",
"source_skill": "skills/operationalize",
"source_hash": "c0e8a3458553325e204a7ea5793b6066257eaa8fe1be105a5de2bd590ae1afcf",
"source_hash": "82bcecb5ebf831dd49cdafda963293d84bfd9ce8d5ff224b9ba8f588e51d3b5a",
"generated_hash": "c2916dde8569046457c2b338df46f83edca1d8211892ff9acc2cd896920e807c"
},
{
@@ -1366,7 +1366,7 @@
{
"name": "perf",
"source_skill": "skills/perf",
"source_hash": "3af782988417a0d8ee32ef06801c3b8eb5a4e6d1c7c22a06369ff0e9b807db57",
"source_hash": "09389093bec9cd998d75ce784378f23e8cc10d58a7186fd8a349d70300336496",
"generated_hash": "044755509c7a50a2b6d10fc598b3197f826767220bffc5958b1cf3a7580885b2"
},
{
@@ -1492,7 +1492,7 @@
{
"name": "refactor",
"source_skill": "skills/refactor",
"source_hash": "5a0a4e7eea7df6453c444902c54bfeccb8a907e2cf71e3cb44f74392d9cfcaa6",
"source_hash": "8fecbf97ac26d84ebd29c78360c8aa940139aeb60deedfb776e183a9c1cfff39",
"generated_hash": "fa262113610755ebedd60a0c21d1a7f0b8359f215d05f67abd26360a03faeb0c"
},
{
@@ -1540,7 +1540,7 @@
{
"name": "rpi",
"source_skill": "skills/rpi",
"source_hash": "b87afe04860b7b3926f3647a99a05fcc22cbb6697f59ab4bd4a2a1a58943bafb",
"source_hash": "20fa14f17983163bdf55e626b18e2146ed4571fe00c8fba7eebfdd6587c67ab5",
"generated_hash": "9e1a058756851e44572b3992f93aa0377b60cdb8bff67c2ebb0310fb5db6f9bc"
},
{
@@ -1666,7 +1666,7 @@
{
"name": "test",
"source_skill": "skills/test",
"source_hash": "388e3bc02cf172fa69fdeab61b044d8aaca5f8d79d9ef679e9e6926a5f13004e",
"source_hash": "700d7605b340dd7ead3bb7169a7ea4d51ba08235c3372ad226d06b9e4cbda6b7",
"generated_hash": "82bfb16f9fbac7fce26a44c7cac7fd512fc4bb28464eda5adb7e2bd72b09a6be"
},
{
+1 -1
View File
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/acfs",
"layout": "modular",
"source_hash": "b0e2e35f958f5fa111dccc0ea1971d71c065a98303821c9d80a5c1412fc51faa",
"source_hash": "a0ec97af82529e00df46d325121b2e45621f8607dac2c3545364b87e91676979",
"generated_hash": "bf2564f612c7edeeb8a96b72649a33a2d8247b3b30a9ae52603d02c060bfb946"
}
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/agy-native",
"layout": "modular",
"source_hash": "85309d247ad37bd783f62c3e554af93a377de80e07bfd2674dd26bcd824a58d0",
"source_hash": "b84c5f7d13b5665ebf8f3b7aa6e3408f20353022e9f05a1f1122316e39a0035a",
"generated_hash": "38f0627619fe29459b27ae125364737483302cdf18a77e13d6f4e3aef21ea34d"
}
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/converge",
"layout": "modular",
"source_hash": "f7711e6ff9a7d4c212cd8a9242c3189649290bf96a2ba50074e16f9a9d8ce094",
"source_hash": "e73d0e90e5199e9b5c38bccfe11c10773ff1da131c6bf9f3cb8f673f836128ba",
"generated_hash": "4210749b835a469aac459ae9a6e66aaab9df62e2370f02575052f6eaf97b6264"
}
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/discovery",
"layout": "modular",
"source_hash": "f41d6f1c8d863cc8b5f848286a3e15a9f613158b0671bbe9a37c0d2001563288",
"source_hash": "b335f6eca9b88cf0878a788002052d1d3a926fcde2a58689786213eaabbe9f27",
"generated_hash": "38ab1cbc2a714653d6d0a3c675d8336bc3f6e4dfe6f388016573a5d4f26f9491"
}
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/eval-outcomes",
"layout": "stub",
"source_hash": "7f05f9bc5d0220e07ba01a51c90fc2fe9c552b885373e5db769019dde0cd37e1",
"source_hash": "064d6cc2cbc4112af98f4c5798e50c734974e76394b38e86f6d601b0e66bb110",
"generated_hash": "a7243ecfd6177318f1ef25babdeb0b9061d09b9c2f8d89495268ed1c46925bd0"
}
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/operationalize",
"layout": "modular",
"source_hash": "c0e8a3458553325e204a7ea5793b6066257eaa8fe1be105a5de2bd590ae1afcf",
"source_hash": "82bcecb5ebf831dd49cdafda963293d84bfd9ce8d5ff224b9ba8f588e51d3b5a",
"generated_hash": "c2916dde8569046457c2b338df46f83edca1d8211892ff9acc2cd896920e807c"
}
+1 -1
View File
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/perf",
"layout": "modular",
"source_hash": "3af782988417a0d8ee32ef06801c3b8eb5a4e6d1c7c22a06369ff0e9b807db57",
"source_hash": "09389093bec9cd998d75ce784378f23e8cc10d58a7186fd8a349d70300336496",
"generated_hash": "044755509c7a50a2b6d10fc598b3197f826767220bffc5958b1cf3a7580885b2"
}
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/refactor",
"layout": "modular",
"source_hash": "5a0a4e7eea7df6453c444902c54bfeccb8a907e2cf71e3cb44f74392d9cfcaa6",
"source_hash": "8fecbf97ac26d84ebd29c78360c8aa940139aeb60deedfb776e183a9c1cfff39",
"generated_hash": "fa262113610755ebedd60a0c21d1a7f0b8359f215d05f67abd26360a03faeb0c"
}
+1 -1
View File
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/rpi",
"layout": "modular",
"source_hash": "b87afe04860b7b3926f3647a99a05fcc22cbb6697f59ab4bd4a2a1a58943bafb",
"source_hash": "20fa14f17983163bdf55e626b18e2146ed4571fe00c8fba7eebfdd6587c67ab5",
"generated_hash": "9e1a058756851e44572b3992f93aa0377b60cdb8bff67c2ebb0310fb5db6f9bc"
}
+1 -1
View File
@@ -2,6 +2,6 @@
"generator": "manual-maintained",
"source_skill": "skills/test",
"layout": "modular",
"source_hash": "388e3bc02cf172fa69fdeab61b044d8aaca5f8d79d9ef679e9e6926a5f13004e",
"source_hash": "700d7605b340dd7ead3bb7169a7ea4d51ba08235c3372ad226d06b9e4cbda6b7",
"generated_hash": "82bfb16f9fbac7fce26a44c7cac7fd512fc4bb28464eda5adb7e2bd72b09a6be"
}
+2 -4
View File
@@ -11,9 +11,7 @@ hexagonal_role: driving-adapter
consumes: []
produces:
- substrate-health-report
context_rel:
- kind: supplier-to
with: operating-loop-skill
context_rel: []
skill_api_version: 1
user-invocable: true
context:
@@ -25,7 +23,7 @@ context:
intel_scope: topic
metadata:
tier: orchestration
dependencies: [ntm, account-rotation, cass-memory, dcg]
dependencies: [ntm, account-rotation, dcg]
external_dependencies: [fleet-ops]
stability: stable
output_contract: "Terminal report (acfs doctor/init verdict) + a stated next action; no files written unless a sub-tool persists state (br/cm)."
+2 -5
View File
@@ -7,13 +7,10 @@ practices:
- team-topologies
- continuous-delivery
hexagonal_role: driving-adapter
consumes:
- operating-loop-skill
consumes: []
produces:
- agy-run-evidence
context_rel:
- kind: customer-of
with: operating-loop-skill
context_rel: []
skill_api_version: 1
user-invocable: false
context:
+11 -30
View File
@@ -1,6 +1,6 @@
{
"schema_version": "1",
"generated_at": "2026-06-13T18:04:08Z",
"generated_at": "2026-06-14T18:26:50Z",
"skill_count": 72,
"skills": [
{
@@ -30,12 +30,7 @@
"pragmatic-programmer",
"continuous-delivery"
],
"context_rel": [
{
"kind": "supplier-to",
"with": "operating-loop-skill"
}
],
"context_rel": [],
"references_count": 0,
"codex_override_present": true
},
@@ -107,9 +102,7 @@
"description": "|-",
"hexagonal_role": "driving-adapter",
"user_invocable": false,
"consumes": [
"operating-loop-skill"
],
"consumes": [],
"produces": [
"agy-run-evidence"
],
@@ -117,12 +110,7 @@
"team-topologies",
"continuous-delivery"
],
"context_rel": [
{
"kind": "customer-of",
"with": "operating-loop-skill"
}
],
"context_rel": [],
"references_count": 1,
"codex_override_present": true
},
@@ -410,7 +398,7 @@
"hexagonal_role": "driving-adapter",
"user_invocable": false,
"consumes": [
"ao converge"
"command-help"
],
"produces": [
"stdout"
@@ -421,12 +409,12 @@
],
"context_rel": [],
"references_count": 0,
"codex_override_present": false
"codex_override_present": true
},
{
"name": "converter",
"description": "Convert AgentOps skill formats.",
"hexagonal_role": "generic",
"hexagonal_role": "driven-adapter",
"user_invocable": false,
"consumes": [],
"produces": [
@@ -533,8 +521,6 @@
"hexagonal_role": "domain",
"user_invocable": true,
"consumes": [
"brainstorm",
"design",
"plan",
"pre-mortem",
"research",
@@ -604,7 +590,6 @@
"user_invocable": false,
"consumes": [
"validate",
"ratchet",
"council"
],
"produces": [
@@ -621,7 +606,7 @@
{
"name": "evolve",
"description": "Run autonomous improvement loops.",
"hexagonal_role": "supporting",
"hexagonal_role": "domain",
"user_invocable": true,
"consumes": [
"rpi",
@@ -813,9 +798,7 @@
"hexagonal_role": "domain",
"user_invocable": false,
"consumes": [
".agents/research/*.md",
"audit-report",
"learning"
".agents/research/*.md"
],
"produces": [
".agents/operationalize/*.md",
@@ -964,7 +947,7 @@
},
{
"name": "pre-land-refuters",
"description": "Dispatch unbiased refuters (fresh Fable + read-only codex exec) to attack a completion claim before landing a large change. Triggers: pre-land validation, refute before push.",
"description": "Dispatch fresh-context refuters (model-agnostic by default; multi-model opt-in) to attack a completion claim at the mutate-shared-trunk pawl before landing, at any complexity. Triggers: pre-land validation, refute pre-push.",
"hexagonal_role": "driving-adapter",
"user_invocable": true,
"consumes": [
@@ -1150,7 +1133,6 @@
"hexagonal_role": "supporting",
"user_invocable": false,
"consumes": [
"complexity",
"repo-context"
],
"produces": [
@@ -1239,13 +1221,12 @@
{
"name": "rpi",
"description": "Run discovery, crank, validation.",
"hexagonal_role": "supporting",
"hexagonal_role": "domain",
"user_invocable": true,
"consumes": [
"crank",
"discovery",
"domain",
"ratchet",
"validate"
],
"produces": [
+1 -1
View File
@@ -6,7 +6,7 @@ practices:
- llm-eval-harness
hexagonal_role: driving-adapter
consumes:
- ao converge
- command-help
produces:
- stdout
context_rel: []
-4
View File
@@ -7,8 +7,6 @@ practices:
- mythical-man-month
hexagonal_role: domain
consumes:
- brainstorm
- design
- plan
- pre-mortem
- research
@@ -33,8 +31,6 @@ context:
metadata:
tier: meta
dependencies:
- brainstorm
- design
- research
- plan
- pre-mortem
+1 -2
View File
@@ -8,7 +8,6 @@ practices:
hexagonal_role: supporting
consumes:
- validate
- ratchet
- council
produces:
- skills/council/schemas/verdict.json
@@ -21,7 +20,7 @@ context:
intel_scope: topic
metadata:
tier: execution
dependencies: [validate, ratchet]
dependencies: [validate]
stability: experimental
output_contract: "skills/council/schemas/verdict.json (one council verdict record)"
---
-2
View File
@@ -9,8 +9,6 @@ practices:
hexagonal_role: domain
consumes:
- .agents/research/*.md
- audit-report
- learning
produces:
- .agents/operationalize/*.md
- routed-handoffs
-1
View File
@@ -26,7 +26,6 @@ metadata:
tier: execution
dependencies:
- standards
- complexity
output_contract: 'stdout: performance profile/benchmark report'
---
# Perf Skill
-2
View File
@@ -7,7 +7,6 @@ practices:
- design-patterns
hexagonal_role: supporting
consumes:
- complexity
- repo-context
produces:
- git-changes
@@ -25,7 +24,6 @@ metadata:
tier: execution
dependencies:
- standards
- complexity
- beads
output_contract: code changes with regression verification
---
-2
View File
@@ -15,7 +15,6 @@ consumes:
- crank
- discovery
- domain
- ratchet
- validate
produces:
- .agents/rpi/*.md
@@ -43,7 +42,6 @@ metadata:
- discovery
- crank
- validate
- ratchet
internal: false
output_contract: .agents/rpi/YYYY-MM-DD-*.md
---
-1
View File
@@ -25,7 +25,6 @@ metadata:
tier: execution
dependencies:
- standards
- complexity
output_contract: test files, coverage report
---
# Test Skill
@@ -89,22 +89,24 @@ assert_lacks() {
done
}
@test "bead-operationalization reference uses bd and bans br/bv tracker refs" {
assert_has "$REF_BEADS" "bd create"
assert_has "$REF_BEADS" "bd dep add"
@test "bead-operationalization reference uses br and bans the retired bd tracker" {
# Tracker contracts migrated bd -> br (commit f650d41bb); the reference docs
# are now repo-native br. The test follows the migration: assert br, ban bd.
assert_has "$REF_BEADS" "br create"
assert_has "$REF_BEADS" "br dep add"
assert_has "$REF_BEADS" "DO NOT OVERSIMPLIFY"
assert_has "$REF_BEADS" "DO NOT LOSE FEATURES"
# idea-wizard's br/bv tracker must NOT leak into the ported repo-native docs.
assert_lacks_regex "$REF_BEADS" '\b(br|bv)\s+(list|create|dep|ready|--robot)'
assert_lacks_regex "$REF_IDEATION" '\b(br|bv)\s+(list|create|dep|ready|--robot)'
assert_lacks_regex "$REF_RUBRIC" '\b(br|bv)\s+(list|create|dep|ready|--robot)'
# The retired bd tracker must NOT leak back into the repo-native docs.
assert_lacks_regex "$REF_BEADS" '\bbd\s+(list|create|dep|ready|--robot)'
assert_lacks_regex "$REF_IDEATION" '\bbd\s+(list|create|dep|ready|--robot)'
assert_lacks_regex "$REF_RUBRIC" '\bbd\s+(list|create|dep|ready|--robot)'
}
@test "ideation-mode reference documents the mode-selection rule and grounding" {
assert_has "$REF_IDEATION" "When to use which mode"
assert_has "$REF_IDEATION" "AGENTS.md"
assert_has "$REF_IDEATION" "bd list --json"
assert_has "$REF_IDEATION" "bd list --status closed --json"
assert_has "$REF_IDEATION" "br list --json"
assert_has "$REF_IDEATION" "br list --status closed --json"
}
@test "discovery SKILL wires the open-ended ideate path with operationalize and refine" {
@@ -130,11 +132,13 @@ assert_lacks() {
assert_has "$CODEX_BRAINSTORM" '--ideate'
assert_has "$CODEX_DISCOVERY" "Open-Ended Path"
assert_has "$CODEX_DISCOVERY" 'internal modes (absorbed, ag-s43tg)'
# Codex bodies must not leak Claude-era primitives (parity rule).
assert_lacks "$CODEX_BRAINSTORM" "AskUserQuestion"
# Codex bodies must not leak Claude-era primitives (parity rule). The
# brainstorm reference (goal-clarification-brainstorm.md) is the CLAUDE-side
# surface and legitimately uses AskUserQuestion, so the anti-leak guard
# applies to the genuine codex twin (skills-codex/discovery/SKILL.md), not
# to the shared Claude reference.
assert_lacks "$CODEX_DISCOVERY" "AskUserQuestion"
# Codex must use $skill notation, not /skill, for the new content.
assert_lacks "$CODEX_BRAINSTORM" "claude -p"
assert_lacks "$CODEX_DISCOVERY" "/brainstorm --ideate"
}
@@ -74,7 +74,10 @@ run_install_with_path() {
[[ "$output" == *"Detected Claude Code: yes"* ]]
[[ "$output" == *"Detected Codex CLI: no"* ]]
[[ "$output" == *"single-runtime mode (Claude Code only)"* ]]
[[ "$output" == *"install Codex CLI: https://github.com/openai/codex"* ]]
# install.sh now points single-runtime users at the other runtimes' install
# links (multi-vendor: Codex + Gemini/AGY) under a "install another runtime"
# banner. Assert the Codex link is offered.
[[ "$output" == *"Codex CLI: https://github.com/openai/codex"* ]]
}
@test "codex only: single-runtime + Claude install suggestion" {
@@ -88,7 +91,8 @@ run_install_with_path() {
[[ "$output" == *"Detected Claude Code: no"* ]]
[[ "$output" == *"Detected Codex CLI: yes"* ]]
[[ "$output" == *"single-runtime mode (Codex CLI only)"* ]]
[[ "$output" == *"install Claude Code: https://docs.anthropic.com/en/docs/claude-code"* ]]
# Assert the Claude install link is offered to the single-runtime Codex user.
[[ "$output" == *"Claude Code: https://docs.anthropic.com/en/docs/claude-code"* ]]
}
@test "neither present: warning + both install links" {