@event4u/agent-config 9.2.0 → 9.4.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +111 -0
- package/CONTRIBUTING.md +14 -0
- package/README.md +12 -4
- package/dist/agent-src/commands/contribution-precheck.md +100 -0
- package/dist/agent-src/commands/fix/route.md +49 -0
- package/dist/agent-src/commands/fix.md +4 -2
- package/dist/agent-src/commands/tdd/green.md +32 -0
- package/dist/agent-src/commands/tdd/red.md +33 -0
- package/dist/agent-src/commands/tdd/refactor.md +31 -0
- package/dist/agent-src/commands/tdd.md +50 -0
- package/dist/agent-src/commands/team.md +4 -0
- package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +81 -2
- package/dist/agent-src/contexts/model-recommendations.md +6 -0
- package/dist/agent-src/rules/architecture.md +7 -0
- package/dist/agent-src/rules/token-efficiency.md +7 -0
- package/dist/agent-src/skills/adversarial-review/SKILL.md +5 -0
- package/dist/agent-src/skills/ai-council/SKILL.md +3 -0
- package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -0
- package/dist/agent-src/skills/decision-record/SKILL.md +35 -1
- package/dist/agent-src/skills/decision-record/evals/triggers.json +82 -12
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +119 -0
- package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +142 -0
- package/dist/agent-src/skills/fe-design/SKILL.md +1 -0
- package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -0
- package/dist/agent-src/skills/learning-tutor/SKILL.md +215 -0
- package/dist/agent-src/skills/persona-improvement/SKILL.md +81 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +10 -0
- package/dist/agent-src/skills/rice-prioritization/SKILL.md +1 -0
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -1
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +14 -24
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +253 -30
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +19 -10
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +15 -6
- package/dist/mcp/registry-manifest.json +3 -3
- package/docs/CLAIMS.md +16 -2
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +84 -0
- package/docs/anti-reskin-gate.md +60 -0
- package/docs/architecture.md +3 -3
- package/docs/catalog.md +303 -278
- package/docs/command-flows.md +10 -3
- package/docs/comparison.yaml +10 -0
- package/docs/contracts/adoption-signal-floor.md +17 -0
- package/docs/contracts/ai-council-config.md +25 -0
- package/docs/contracts/command-clusters.md +2 -1
- package/docs/contracts/mcp-tool-inventory.md +25 -22
- package/docs/contracts/tier-3-contrib-plugin.md +12 -4
- package/docs/decisions/ADR-122-adversarial-verification-council.md +1 -1
- package/docs/development.md +10 -1
- package/docs/featured-skills.md +2 -2
- package/docs/getting-started-by-role.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/component-oriented-and-oop-development.md +181 -0
- package/docs/proof.md +10 -6
- package/docs/self-review-gate.md +14 -0
- package/docs/setup/per-ide/antigravity.md +8 -3
- package/docs/us-vs-the-category.md +38 -0
- package/docs/wedge/production-validator/README.md +24 -0
- package/docs/wedge/production-validator/first-run-check.sh +42 -0
- package/package.json +3 -2
- package/src/scripts/_lib/catalog_score.ts +64 -0
- package/src/scripts/_lib/shingle_similarity.ts +146 -0
- package/src/scripts/ai_council/clients.ts +50 -1
- package/src/scripts/ai_council/config.ts +28 -3
- package/src/scripts/ai_council/low_impact.ts +16 -0
- package/src/scripts/ai_council/necessity.ts +11 -0
- package/src/scripts/ai_council/orchestrator.ts +78 -26
- package/src/scripts/ai_council/pricing.ts +59 -0
- package/src/scripts/ai_council/prompts.ts +7 -0
- package/src/scripts/ai_council/stance_tally.ts +42 -5
- package/src/scripts/build_catalog_index.ts +188 -0
- package/src/scripts/council_cli.ts +56 -1
- package/src/scripts/generate_index.ts +6 -3
- package/src/scripts/hook_manifest.yaml +17 -6
- package/src/scripts/install-hooks.sh +32 -17
- package/src/scripts/lint_originality.ts +464 -0
- package/src/scripts/mcp_server/catalog_tools.ts +114 -0
- package/src/scripts/mcp_server/consumer_tool_catalog.json +46 -0
- package/src/scripts/pr_url_reminder_hook.ts +177 -0
- package/src/scripts/schemas/flow.schema.json +17 -0
- package/src/scripts/schemas/skill.schema.json +166 -32
- package/src/scripts/self_review_gate.test.ts +48 -0
- package/src/scripts/self_review_gate.ts +73 -5
- package/src/scripts/validate_flow_teams.ts +127 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Bootstrap shim for the event4u agent-config suite. This plugin ships ONLY the dispatcher hooks plus one install-pointer skill — ALL content (skills, rules, commands) is installed via `npx -y @event4u/agent-config init`, which writes the file projection AND registers the same hooks in ~/.claude/settings.json. DEPRECATED as a content channel; kept so the marketplace listing stays discoverable and existing installs keep working hooks.",
|
|
9
|
-
"version": "9.
|
|
9
|
+
"version": "9.4.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -166,6 +166,29 @@ gated on the telemetry from 6.0.0-C. Deferred to 6.0.0-C: a
|
|
|
166
166
|
`skills_discoverable` field, reactive just-in-time pack activation, and the
|
|
167
167
|
per-pack budget lint.
|
|
168
168
|
|
|
169
|
+
### Added — team mode: governed cross-model review (default-off, `road-to-team-mode`)
|
|
170
|
+
|
|
171
|
+
A new default-off `/team` command family (`review`, `adversarial`, `delegate`,
|
|
172
|
+
`status`) that governs the official `openai/codex-plugin-cc` as the Claude-Code
|
|
173
|
+
transport — a second strong model reviewing the real working-tree diff (depth),
|
|
174
|
+
the complement to the council's neutral-artefact breadth.
|
|
175
|
+
|
|
176
|
+
- **Default-off + fail-closed.** With `ai_team.enabled: false` (default) no
|
|
177
|
+
command is suggested and invocation prints an enable pointer — byte-identical
|
|
178
|
+
to pre-roadmap behaviour. On Claude-Code hosts the wrappers are thin
|
|
179
|
+
delegations to `/codex:*`; absent the plugin they fail closed with the
|
|
180
|
+
`agent-config doctor --check team` remediation, never a silent no-op.
|
|
181
|
+
- **Multi-host fallback (review lens only).** On non-Claude-Code hosts
|
|
182
|
+
`/team:review` sends a size-capped repo-diff bundle through the existing
|
|
183
|
+
subscription `OpenAICliClient`, with an honest capability-delta header.
|
|
184
|
+
- **Governed, not rebuilt.** Nothing upstream-maintained is reimplemented; the
|
|
185
|
+
Review-Gate stays upstream's (we add an opt-in loop-bound + ledger line), and
|
|
186
|
+
`/team:delegate` (write access) sits behind a second opt-in
|
|
187
|
+
`ai_team.allow_delegate: false`. Config: `docs/contracts/ai-team-config.md`.
|
|
188
|
+
- **No quality claim yet.** Cross-model defect-finding lift is unproven until
|
|
189
|
+
the Phase 5 benchmark runs (spend-gated); the docs describe workflow value
|
|
190
|
+
only, never a lift claim.
|
|
191
|
+
|
|
169
192
|
### Breaking — v4.0.0 unified setup (`road-to-unified-setup`)
|
|
170
193
|
|
|
171
194
|
`v4.0.0` is a **hard-cut** release. The legacy Python installer at
|
|
@@ -1033,6 +1056,94 @@ our recommendation order, not its support status.
|
|
|
1033
1056
|
> that forces a new era split (`# Era: 9.3.x`, etc.) — see
|
|
1034
1057
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
1035
1058
|
|
|
1059
|
+
## [9.4.0](https://github.com/event4u-app/agent-config/compare/9.3.0...9.4.0) (2026-07-20)
|
|
1060
|
+
|
|
1061
|
+
### Features
|
|
1062
|
+
|
|
1063
|
+
* **self-review:** large-diff / claim-affecting ai-council escalation (detect + recommend) ([1308e22](https://github.com/event4u-app/agent-config/commit/1308e220179600424d4ac590ae9295b522f3f22c))
|
|
1064
|
+
* **council:** cross-round prompt-cache read unlock ([5faf32b](https://github.com/event4u-app/agent-config/commit/5faf32bc3b0522e7e0af3b28a108ce808133a56e))
|
|
1065
|
+
* **council:** auto model-tiering gated on the A1<->A3 cache coupling ([1a693bf](https://github.com/event4u-app/agent-config/commit/1a693bffe79addde715becc9a366c5185e9545b9))
|
|
1066
|
+
* **council:** stance repair fires only on genuinely unparseable STANCE ([40196bd](https://github.com/event4u-app/agent-config/commit/40196bdac2489dc50ac1213976e776d94f3f89c7))
|
|
1067
|
+
* **adoption:** wedge promise, opt-in first-run instrument, honest positioning surface ([c93e314](https://github.com/event4u-app/agent-config/commit/c93e314b102ba437afcbef994306a5f0c42d2476))
|
|
1068
|
+
* **routing:** reciprocal cluster routing for the weighted-matrix mode ([6be7bc5](https://github.com/event4u-app/agent-config/commit/6be7bc5b7d042bdfc000c5a51270a7c9da5a2f28))
|
|
1069
|
+
* **skill:** weighted-matrix mode in decision-record ([7eaf4db](https://github.com/event4u-app/agent-config/commit/7eaf4db125eebe19cb0d57ac32f15f917530b206))
|
|
1070
|
+
* **command:** /contribution-precheck — contributor self-service gate subset ([5e7de9b](https://github.com/event4u-app/agent-config/commit/5e7de9b6b828653bb0e49e1711f42ee56c18e4cd))
|
|
1071
|
+
* **catalog:** provenance source column + CREDITS.md ([10cca8a](https://github.com/event4u-app/agent-config/commit/10cca8af8a244aa30d0ee036126e24c506c82e48))
|
|
1072
|
+
* **ci:** wire lint_originality --changed as the originality-gate PR job ([00c3754](https://github.com/event4u-app/agent-config/commit/00c3754df8d9a95c30a84c294bfb3ab9cfbbe509))
|
|
1073
|
+
* **skills:** add learning-tutor skill — six structured tutoring modes ([8ed343d](https://github.com/event4u-app/agent-config/commit/8ed343d282ad669489866cda84a6a214f1943ca6))
|
|
1074
|
+
* **skill:** evaluate-llm-feature — black-box LLM-feature evaluator ([b94249f](https://github.com/event4u-app/agent-config/commit/b94249fb067c39d8fa5c8f4fa6cfe2b1290e336b))
|
|
1075
|
+
* **flows:** optional team annotation + resolver ([7b14ed5](https://github.com/event4u-app/agent-config/commit/7b14ed5cbba5bec6b4e5500fb68c6770ad7d5f87))
|
|
1076
|
+
* **mcp:** lazy catalog router — index, scoring, stub tools ([d17b9e0](https://github.com/event4u-app/agent-config/commit/d17b9e05fc5742f922177febab086c4723796029))
|
|
1077
|
+
* **originality:** anti-reskin shingle-overlap gate ([dae4760](https://github.com/event4u-app/agent-config/commit/dae4760c7b041844bde10fa3e2eb6ae5f34a9fa6))
|
|
1078
|
+
|
|
1079
|
+
### Bug Fixes
|
|
1080
|
+
|
|
1081
|
+
* **skill:** keep subagent-orchestration under the 400-line size gate ([c419da9](https://github.com/event4u-app/agent-config/commit/c419da949db135c6c1723d85e78906669ee881a2))
|
|
1082
|
+
* **portability:** drop task-ci literals from the shipped precheck command ([a0d83d3](https://github.com/event4u-app/agent-config/commit/a0d83d33984847143749131fe0e01509c72edbbb))
|
|
1083
|
+
* **ci:** CAPABILITIES 277 count + defang injection-probe examples ([c1d4036](https://github.com/event4u-app/agent-config/commit/c1d4036dd615fa2bcbd670e66583f8eac15fbb6a))
|
|
1084
|
+
* **originality:** close the adversarial DF batch-masking hole ([dd84403](https://github.com/event4u-app/agent-config/commit/dd8440363a7ecda67934cca27cb0df4b69ba34e6))
|
|
1085
|
+
* **mcp:** version the catalog-index cache filename ([93d980a](https://github.com/event4u-app/agent-config/commit/93d980aff254ceb9d31bf290f36a249377e81eea))
|
|
1086
|
+
|
|
1087
|
+
### Documentation
|
|
1088
|
+
|
|
1089
|
+
* **team:** CHANGELOG entry + close-out (Phase 6 + prereqs); upstream re-verified ([a6405c5](https://github.com/event4u-app/agent-config/commit/a6405c5ade5e4e1a22c7cb60eaf0d31f7f212b9e))
|
|
1090
|
+
* **team:** three-way router disambiguation cross-links (council / team / subagents) ([f82ed16](https://github.com/event4u-app/agent-config/commit/f82ed168f81c48ef98b0e561f44bc13c8691ce77))
|
|
1091
|
+
* **self-review:** document the escalation path; flip Phase 1 step (part c) ([9f26716](https://github.com/event4u-app/agent-config/commit/9f267166b1305f9833f89ae8119638105ecd42c1))
|
|
1092
|
+
* **roadmap:** archive road-to-api-cost-optimization — A3 executed, fully closed ([94e2044](https://github.com/event4u-app/agent-config/commit/94e20444f215491d6f5350b09910d37a928a090e))
|
|
1093
|
+
* **cost:** B2 index-branch pointers (deferred follow-up closed) ([7d68245](https://github.com/event4u-app/agent-config/commit/7d68245ebc013b5fa05f0790473e910e45227a5e))
|
|
1094
|
+
* **roadmap:** adoption roadmap — second autonomous slice landed ([0febec6](https://github.com/event4u-app/agent-config/commit/0febec66d629dc2cca6410bfaa07c841711e1966))
|
|
1095
|
+
* **announcements:** draft the honest-launch story (drafted, not posted) ([8e1b757](https://github.com/event4u-app/agent-config/commit/8e1b757f53f367c1fdc7d7150eed4ff8edc1e426))
|
|
1096
|
+
* **roadmap:** archive road-to-weighted-decision-matrix — fully executed ([4586dcd](https://github.com/event4u-app/agent-config/commit/4586dcd5432c618ffd007af2f0977a24249945aa))
|
|
1097
|
+
* **roadmap:** originality-gate + contributor-funnel roadmap, executed and parked ([4d0e73b](https://github.com/event4u-app/agent-config/commit/4d0e73b67298cd78b509778514ab170fcc75e930))
|
|
1098
|
+
* **probe:** anti-reskin-gate demand probe + extraction floor ([b849580](https://github.com/event4u-app/agent-config/commit/b8495802f93a966bcf5808e01b15b93e4017fd9a))
|
|
1099
|
+
* **roadmap:** complete + archive the ecosystem-harvest index hub ([e1752d1](https://github.com/event4u-app/agent-config/commit/e1752d176fbf948aff364fb1271532164bb2b755))
|
|
1100
|
+
* regenerate proof page for the new skill count (277) ([2476284](https://github.com/event4u-app/agent-config/commit/247628404098690ba2f68fa1bef6fdba1753ee13))
|
|
1101
|
+
* **roadmap:** complete + archive ecosystem-harvest domain-watch ([d07e81e](https://github.com/event4u-app/agent-config/commit/d07e81e017a90e92863d9bcffd1818b232fefaeb))
|
|
1102
|
+
* **domain-watch:** watch-notes for the two gated verticals ([26bb9dd](https://github.com/event4u-app/agent-config/commit/26bb9dd77c7c6adb1bebc9677f5096d8e66ef999))
|
|
1103
|
+
* **roadmap:** correct the flip-gate checkbox and tighten the flow-team criterion ([89a2d26](https://github.com/event4u-app/agent-config/commit/89a2d26721090cc7545a19ef73877689a445420f))
|
|
1104
|
+
* **roadmap:** persona-library harvest — executed and archived ([1c6940a](https://github.com/event4u-app/agent-config/commit/1c6940a2693c94ad366ddc31f791d13870da6d07))
|
|
1105
|
+
* correct outdated Antigravity host claims ([fca90e2](https://github.com/event4u-app/agent-config/commit/fca90e2c3413465e0a4bfbfd65d1da01ea15bef7))
|
|
1106
|
+
|
|
1107
|
+
### Chores
|
|
1108
|
+
|
|
1109
|
+
* **meta:** sync pack README with shortened precheck description ([601fdc1](https://github.com/event4u-app/agent-config/commit/601fdc111553d8d4c55796d43c3203d938b5c179))
|
|
1110
|
+
* **ci:** wire lint-originality and validate-flow-teams into the pipeline ([48bc88a](https://github.com/event4u-app/agent-config/commit/48bc88a2ce24bfffd1f98e4194163986b3adf245))
|
|
1111
|
+
|
|
1112
|
+
Tests: 7833 (+63 since 9.3.0)
|
|
1113
|
+
|
|
1114
|
+
## [9.3.0](https://github.com/event4u-app/agent-config/compare/9.2.0...9.3.0) (2026-07-16)
|
|
1115
|
+
|
|
1116
|
+
### Features
|
|
1117
|
+
|
|
1118
|
+
* **ergonomics:** harvest ergonomics plate — tdd cluster, fix:route, persona-improvement, hand-off examples ([e8be16f](https://github.com/event4u-app/agent-config/commit/e8be16f2a0194a6b6cb3b2ed4a9899db31067d1d))
|
|
1119
|
+
* **review:** wire reuse + OOP-shape lens into the review/orchestration surfaces ([067175a](https://github.com/event4u-app/agent-config/commit/067175a04c1d49c356bf8e42c4cb0f23b3d91473))
|
|
1120
|
+
* **hooks:** PostToolUse PR-URL reminder — reply-shape backstop for direct-answers ([1bf82a1](https://github.com/event4u-app/agent-config/commit/1bf82a1f23fd2fac7ae86fe1fae3cc6b3e0da657))
|
|
1121
|
+
|
|
1122
|
+
### Bug Fixes
|
|
1123
|
+
|
|
1124
|
+
* **counts:** regenerate command-flows.md (+5 commands) + map explain-run orphan into surface-map ([a6254e4](https://github.com/event4u-app/agent-config/commit/a6254e434e966eaca9e697093980dfc3cc04a8d8))
|
|
1125
|
+
* **hooks:** pre-push gate mirrors the full CI consistency check locally ([ebd706f](https://github.com/event4u-app/agent-config/commit/ebd706fb1e978189954ca838bc41bd3f536ee560))
|
|
1126
|
+
|
|
1127
|
+
### Documentation
|
|
1128
|
+
|
|
1129
|
+
* refresh guideline counts (100 -> 101) after the new dev-standard guideline ([02ac1a5](https://github.com/event4u-app/agent-config/commit/02ac1a53214b5cd22eecee873e2b81286c01a6b2))
|
|
1130
|
+
* **standards:** apply council findings — paradigm-appropriate + minimal-diff precedence ([474b1c6](https://github.com/event4u-app/agent-config/commit/474b1c68b8a28dd1f5302b135fbe69876696ea6f))
|
|
1131
|
+
* **standards:** component-oriented + OOP-first development standard ([5bd62bd](https://github.com/event4u-app/agent-config/commit/5bd62bdf14208f65ae166b954a5c7b4e49211ffa))
|
|
1132
|
+
* **roadmaps:** council-review + apply findings to feedback-9.2.0 followups ([dc187d4](https://github.com/event4u-app/agent-config/commit/dc187d4b83debda1c4f8c551acfc6400149da520))
|
|
1133
|
+
* **roadmaps:** draft feedback-9.2.0 follow-ups roadmap ([69d363d](https://github.com/event4u-app/agent-config/commit/69d363df10f5e9dd6605ba6af370ac1d477a5a92))
|
|
1134
|
+
* **roadmaps:** spawn adversarial-council benchmark follow-up; mark deferred arm moved ([36a69d9](https://github.com/event4u-app/agent-config/commit/36a69d9f00b4a236535ea01bf8dd36a4d82f1293))
|
|
1135
|
+
|
|
1136
|
+
### Refactoring
|
|
1137
|
+
|
|
1138
|
+
* **subagent-orchestration:** relocate worker-prompt contract to spawn-contract context ([de38ce1](https://github.com/event4u-app/agent-config/commit/de38ce12ff167eafe7a0631f1088ed244e2b85bf))
|
|
1139
|
+
|
|
1140
|
+
### Chores
|
|
1141
|
+
|
|
1142
|
+
* **harvest:** close second-sweep coverage plate — all folds verified, proposals parked, archived ([7af8a75](https://github.com/event4u-app/agent-config/commit/7af8a75305289bd1f2d36498bea362b789b0f610))
|
|
1143
|
+
* **roadmaps:** archive completed adversarial-verification-council roadmap ([fc34874](https://github.com/event4u-app/agent-config/commit/fc34874a608644d89ab12aa0147d5f6237a4f9ca))
|
|
1144
|
+
|
|
1145
|
+
Tests: 7770 (+6 since 9.2.0)
|
|
1146
|
+
|
|
1036
1147
|
## [9.2.0](https://github.com/event4u-app/agent-config/compare/9.1.0...9.2.0) (2026-07-14)
|
|
1037
1148
|
|
|
1038
1149
|
### Features
|
package/CONTRIBUTING.md
CHANGED
|
@@ -127,6 +127,20 @@ the review floor, not around it.
|
|
|
127
127
|
specific consumer project, domain, or stack. The
|
|
128
128
|
[`augment-portability`](dist/agent-src/rules/augment-portability.md) rule and
|
|
129
129
|
`scripts/check_portability.py` enforce this in CI.
|
|
130
|
+
- **External contributions get credited.** A merged community skill carries
|
|
131
|
+
`provenance: community` in its frontmatter — the public catalog
|
|
132
|
+
([`docs/catalog.md`](docs/catalog.md)) renders it as `community` in the
|
|
133
|
+
`source` column — and gets a row in [`CREDITS.md`](CREDITS.md)
|
|
134
|
+
(§ Community contributions). Maintainers add both on merge; if you were
|
|
135
|
+
missed, open an issue — attribution gaps are treated as bugs.
|
|
136
|
+
- **Originality is CI-gated.** Every PR touching skills, personas, or domain
|
|
137
|
+
commands runs `lint_originality --changed` (the anti-reskin gate, see the
|
|
138
|
+
`originality-gate` job in `.github/workflows/skill-lint.yml`). Run it
|
|
139
|
+
locally before pushing:
|
|
140
|
+
`./scripts-run src/scripts/lint_originality --changed <changed files>` —
|
|
141
|
+
or run the whole contributor precheck in one pass via the
|
|
142
|
+
[`/contribution-precheck`](src/domains/meta/contribution-precheck/command.md)
|
|
143
|
+
command (frontmatter schema + skill lint + originality, Node-only).
|
|
130
144
|
|
|
131
145
|
## Agent-assisted contribution workflow
|
|
132
146
|
|
package/README.md
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [](https://www.npmjs.com/package/@event4u/agent-config) [](https://glama.ai/mcp/servers/event4u-app/agent-config)
|
|
6
6
|
|
|
7
|
-
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/)
|
|
8
8
|
|
|
9
9
|
> **Choose your experience — developer · founder · content · agency · finance · ops. Add packs. Get a focused command set, not a 500-artefact dump.** Bring your own AI provider.
|
|
10
10
|
|
|
11
|
-
**Try it in 30 seconds** — drop one read-only subagent into any repo and watch it gate "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step.
|
|
11
|
+
**Try it in 30 seconds** — drop one read-only subagent into any repo and watch it gate "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step. Start at the proof, not the catalog: **[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/)**.
|
|
12
|
+
|
|
13
|
+

|
|
12
14
|
|
|
13
15
|
**Every public claim in this README is machine-checked — [verify it yourself](docs/proof.md).** In a market that runs on unbacked headline numbers, this one binds each claim to resolvable evidence or fails its own build.
|
|
14
16
|
|
|
@@ -120,8 +122,14 @@ is generated from source: a claim→evidence table (every public claim binds to
|
|
|
120
122
|
resolvable pointer, or CI fails), honest-null benchmarks *including the runs where
|
|
121
123
|
the package changed nothing*, and a "verify it yourself" block you run on a fresh
|
|
122
124
|
checkout. The proof page fails CI if it drifts from its sources — reproducibility
|
|
123
|
-
is the proof. Browse it on the deployed docs site:
|
|
124
|
-
[event4u-app.github.io/agent-config](https://event4u-app.github.io/agent-config).
|
|
125
|
+
is the proof. Browse it on the deployed docs site — the proof page is the primary entry:
|
|
126
|
+
[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/).
|
|
127
|
+
The honest comparison frame lives at
|
|
128
|
+
[`docs/us-vs-the-category.md`](docs/us-vs-the-category.md).
|
|
129
|
+
|
|
130
|
+
Maintaining a skills catalog yourself? The **anti-reskin gate** that blocks
|
|
131
|
+
find-replace re-skin PRs here runs on your catalog too —
|
|
132
|
+
[`docs/anti-reskin-gate.md`](docs/anti-reskin-gate.md).
|
|
125
133
|
|
|
126
134
|
Audit-disciplined by construction — every memory consult, decision
|
|
127
135
|
key, and hook concern lands in `agents/runtime/state/` so you can replay it.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: contribution-precheck
|
|
4
|
+
pack: meta
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
skills: [lint-skills, check-refs]
|
|
8
|
+
description: "Contributor self-service precheck: run the PR-relevant lint subset (skill linter, originality gate, frontmatter schema) on changed files locally — a verdict with fix hints before opening a PR."
|
|
9
|
+
suggestion:
|
|
10
|
+
eligible: false
|
|
11
|
+
rationale: "Package-internal — contributors to event4u/agent-config invoke it explicitly before opening a PR."
|
|
12
|
+
workspaces:
|
|
13
|
+
- agent-config-maintainer
|
|
14
|
+
packs:
|
|
15
|
+
- meta
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# contribution-precheck
|
|
19
|
+
|
|
20
|
+
Run the same gates a PR will hit — locally, Node-only, before pushing. Mirrors
|
|
21
|
+
the CI enforcement path (`originality-gate` + skill-lint jobs in
|
|
22
|
+
`.github/workflows/skill-lint.yml`) so a contributor never learns about a
|
|
23
|
+
failure from remote CI first.
|
|
24
|
+
|
|
25
|
+
Requires only Node + installed `node_modules` (the `./scripts-run` shim invokes
|
|
26
|
+
`tsx` directly — no task runner, no full CI toolchain).
|
|
27
|
+
|
|
28
|
+
## Instructions
|
|
29
|
+
|
|
30
|
+
### 1. Compute the changed set
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
BASE=$(git merge-base origin/main HEAD 2>/dev/null || echo HEAD)
|
|
34
|
+
CHANGED=$(git diff --name-only --diff-filter=ACMR "$BASE" -- \
|
|
35
|
+
'src/skills/*/SKILL.md' \
|
|
36
|
+
'src/agent-src/personas/*.md' \
|
|
37
|
+
'src/domains/**/command.md' \
|
|
38
|
+
| grep -v '^src/agent-src/personas/_' || true)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Uncommitted work counts: append `git diff --name-only` + `git diff --cached
|
|
42
|
+
--name-only` output filtered to the same patterns. Empty set → report
|
|
43
|
+
"nothing to precheck — no changed skills / personas / domain commands" and
|
|
44
|
+
stop (that is an honest no-op, not a pass).
|
|
45
|
+
|
|
46
|
+
### 2. Run the three gates, in order
|
|
47
|
+
|
|
48
|
+
| Gate | Command | Mirrors |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| Frontmatter schema | `./scripts-run src/scripts/validate_frontmatter --root src` | CI schema validation |
|
|
51
|
+
| Skill lint | `./scripts-run src/scripts/skill_linter <changed SKILL.md files>` | `skill-lint` job (`--changed`) |
|
|
52
|
+
| Originality (anti-reskin) | `./scripts-run src/scripts/lint_originality --changed $CHANGED` | `originality-gate` job |
|
|
53
|
+
|
|
54
|
+
Notes:
|
|
55
|
+
|
|
56
|
+
- `skill_linter` takes positional paths — pass the changed `SKILL.md` files
|
|
57
|
+
explicitly (its own `--changed` derivation filters to the projected trees,
|
|
58
|
+
not `src/`, and would silently check nothing on authored edits).
|
|
59
|
+
- `lint_originality --changed` needs the explicit file list from step 1 — it
|
|
60
|
+
does not self-derive.
|
|
61
|
+
|
|
62
|
+
### 3. Emit the verdict
|
|
63
|
+
|
|
64
|
+
One compact block, worst gate first:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Precheck: <N> changed file(s)
|
|
68
|
+
✅|❌ frontmatter — <0 failing | list failing files + first error each>
|
|
69
|
+
✅|❌ skill lint — <pass/warn/fail counts | per-file errors>
|
|
70
|
+
✅|❌ originality — <no overlap ≥ WARN | offending pair + overlap %>
|
|
71
|
+
Verdict: READY | FIX FIRST (<n> blocking finding(s))
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
For every ❌ add one fix hint: the failing file, the rule/pair it tripped, and
|
|
75
|
+
the smallest change that clears it (e.g. "overlap 72% with `<skill>` — rewrite
|
|
76
|
+
the shared procedure sections in your own words; find-replace re-skins score
|
|
77
|
+
~100% because entities are neutralized").
|
|
78
|
+
|
|
79
|
+
### 4. Degraded mode (no git remote / shallow clone)
|
|
80
|
+
|
|
81
|
+
`origin/main` missing → fall back to `git diff --name-only HEAD` (working
|
|
82
|
+
tree) for step 1 and say so in the verdict header. Never claim the CI result
|
|
83
|
+
will match exactly in degraded mode — the PR gate diffs against the real base.
|
|
84
|
+
|
|
85
|
+
## Gotcha
|
|
86
|
+
|
|
87
|
+
- A clean precheck is **necessary, not sufficient** — remote CI additionally
|
|
88
|
+
runs the per-pack matrix, security linters and reference checks. The
|
|
89
|
+
precheck covers the gates that most commonly fail external contributions.
|
|
90
|
+
- Do not "fix" an originality failure by shuffling words until the score dips
|
|
91
|
+
under the threshold — the entity-neutralized shingle gate is calibrated for
|
|
92
|
+
find-replace re-skins; a borderline score means the artifact needs its own
|
|
93
|
+
substance, not better camouflage.
|
|
94
|
+
|
|
95
|
+
## Do NOT
|
|
96
|
+
|
|
97
|
+
- Do NOT run the full local CI pipeline as a substitute — this command exists precisely so a
|
|
98
|
+
contributor without the full toolchain gets a verdict.
|
|
99
|
+
- Do NOT skip step 1's empty-set report — "0 files checked" is INCONCLUSIVE,
|
|
100
|
+
never a pass (same guard as CI).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: fix-route
|
|
4
|
+
pack: engineering-base
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
sub: route
|
|
8
|
+
cluster: fix
|
|
9
|
+
description: Classify a vaguely-described problem and dispatch to the right fix sub-command (or name the specialist skill when it is not a fix task)
|
|
10
|
+
argument-hint: "[free-text problem description]"
|
|
11
|
+
suggestion:
|
|
12
|
+
eligible: true
|
|
13
|
+
trigger_description: "something's broken but I'm not sure which fixer — throw me a problem and route it"
|
|
14
|
+
trigger_context: "user describes a problem without naming a specific fix sub-command"
|
|
15
|
+
workspaces:
|
|
16
|
+
- agent-config-maintainer
|
|
17
|
+
packs:
|
|
18
|
+
- meta
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# /fix route
|
|
22
|
+
|
|
23
|
+
The classify-and-dispatch front door for the `/fix` family. Adapted from the
|
|
24
|
+
ecosystem source's `/smart-fix` — folded into the `fix` verb (ADR-041
|
|
25
|
+
controlled-verb vocabulary) rather than a new top-level verb. It runs the
|
|
26
|
+
`/fix` auto-detection over a free-text problem and routes; when the problem is
|
|
27
|
+
not a fix task, it names the right specialist instead of forcing a fix sub.
|
|
28
|
+
|
|
29
|
+
## Instructions
|
|
30
|
+
|
|
31
|
+
1. Read the free-text problem.
|
|
32
|
+
2. Run the `/fix` cluster's detection table (see the cluster head) over it:
|
|
33
|
+
CI failure → `fix ci`; broken cross-refs → `fix refs`; PR review threads →
|
|
34
|
+
`fix pr-comments`; code-comment noise → `fix comments`; seeder/FK →
|
|
35
|
+
`fix seeder`; type/lint/format errors → `fix quality`; project-leak in the
|
|
36
|
+
shared package → `fix portability`.
|
|
37
|
+
3. **HIGH confidence** → route to that sub-command and follow its instructions.
|
|
38
|
+
4. **Not a fix task** (a new feature, an analysis, a design question) → do NOT
|
|
39
|
+
force a fix sub; name the correct surface instead (`/feature`, a
|
|
40
|
+
`project-analysis-*` skill, `improve-before-implement`, etc.) and stop.
|
|
41
|
+
5. **LOW confidence / ≥ 2 conflict** → print the fix menu and ask; in
|
|
42
|
+
non-interactive mode emit `ambiguous_routing` and stop (per the
|
|
43
|
+
non-interactive-contract). Never guess past LOW.
|
|
44
|
+
|
|
45
|
+
## Rules
|
|
46
|
+
|
|
47
|
+
- **Dispatch only — no fixing here.** This sub classifies and hands off; the routed sub-command does the work under its own rules.
|
|
48
|
+
- **One route per turn.** Do NOT chain.
|
|
49
|
+
- **Do NOT commit or push** — the routed sub-command's rules govern that.
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: fix
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
argument-hint: "[ci|refs|portability|seeder|pr-comments|comments|quality] [args]"
|
|
5
|
+
argument-hint: "[ci|refs|portability|seeder|pr-comments|comments|quality|route] [args]"
|
|
6
6
|
pack: engineering-base
|
|
7
7
|
intent: "Fix-workflow dispatcher — ci, pr-comments, refs, seeder, portability, comments, quality"
|
|
8
|
-
routes_to: [fix-ci, fix-pr-comments, fix-refs, fix-seeder, fix-portability, fix-comments, fix-quality]
|
|
8
|
+
routes_to: [fix-ci, fix-pr-comments, fix-refs, fix-seeder, fix-portability, fix-comments, fix-quality, fix-route]
|
|
9
9
|
replaces: []
|
|
10
10
|
tier: 1
|
|
11
11
|
visibility: advanced
|
|
@@ -39,6 +39,7 @@ with a single entry point + sub-command dispatch.
|
|
|
39
39
|
| `/fix pr-comments` | `commands/fix/pr-comments.md` | Fix and reply to all open review comments — **bot + human, classified per comment**; dedupes by comment id + reply marker |
|
|
40
40
|
| `/fix comments` | `commands/fix/comments.md` | Review the **code comments** in the current branch's diff and simplify, shorten, or remove each one (≠ `pr-comments`, which targets GitHub review threads) |
|
|
41
41
|
| `/fix quality` | `commands/fix/quality.md` | Run the quality pipeline (type-checker / linter / formatter, PHP and/or JS/TS) and fix every error — auto-detects language from changed files |
|
|
42
|
+
| `/fix route` | `commands/fix/route.md` | Classify a vaguely-described problem and dispatch to the right fix sub (or name the specialist when it is not a fix task) — the `/smart-fix` front door, folded into the `fix` verb |
|
|
42
43
|
|
|
43
44
|
Sub-command names match the locked contract in
|
|
44
45
|
[`docs/contracts/command-clusters.md`](../docs/contracts/command-clusters.md).
|
|
@@ -84,6 +85,7 @@ into it and removed.
|
|
|
84
85
|
> 5. pr-comments — address open review comments (bot / human / both)
|
|
85
86
|
> 6. comments — simplify / shorten / remove code comments in the branch diff
|
|
86
87
|
> 7. quality — run the quality pipeline and fix every error
|
|
88
|
+
> 8. route — describe the problem; I classify and dispatch
|
|
87
89
|
|
|
88
90
|
## Rules
|
|
89
91
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: tdd-green
|
|
4
|
+
pack: engineering-base
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
cluster: tdd
|
|
8
|
+
sub: green
|
|
9
|
+
skills: [test-driven-development]
|
|
10
|
+
description: TDD green phase — write the minimum production code to make the failing test pass; no test edits
|
|
11
|
+
argument-hint: "[failing test | context]"
|
|
12
|
+
suggestion:
|
|
13
|
+
eligible: true
|
|
14
|
+
trigger_description: "make the failing test pass"
|
|
15
|
+
trigger_context: "a failing test exists, ready to implement"
|
|
16
|
+
workspaces:
|
|
17
|
+
- agent-config-maintainer
|
|
18
|
+
packs:
|
|
19
|
+
- meta
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# /tdd green
|
|
23
|
+
|
|
24
|
+
Drives the **Implement** phase of
|
|
25
|
+
[`test-driven-development`](../../../skills/test-driven-development/SKILL.md).
|
|
26
|
+
|
|
27
|
+
## Instructions
|
|
28
|
+
|
|
29
|
+
1. Write the **minimum** production code to make the failing test pass — no scope beyond the one case.
|
|
30
|
+
2. Honor the Implement Forbidden block: **no `tests/**` edits** — changing the assertion to fit the code is the canonical violation; a genuinely-wrong test → STOP and ask, never silently edit.
|
|
31
|
+
3. Run the test; confirm green.
|
|
32
|
+
4. Output: the green run. Hand to `/tdd refactor` (or `/tdd red` for the next case).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: tdd-red
|
|
4
|
+
pack: engineering-base
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
cluster: tdd
|
|
8
|
+
sub: red
|
|
9
|
+
skills: [test-driven-development]
|
|
10
|
+
description: TDD red phase — enumerate cases, write ONE failing test, watch it fail at an assertion (not an import error)
|
|
11
|
+
argument-hint: "[behavior to test]"
|
|
12
|
+
suggestion:
|
|
13
|
+
eligible: true
|
|
14
|
+
trigger_description: "write the failing test first"
|
|
15
|
+
trigger_context: "starting a new behavior test-first"
|
|
16
|
+
workspaces:
|
|
17
|
+
- agent-config-maintainer
|
|
18
|
+
packs:
|
|
19
|
+
- meta
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# /tdd red
|
|
23
|
+
|
|
24
|
+
Drives the **Design → Test-Red** phases of
|
|
25
|
+
[`test-driven-development`](../../../skills/test-driven-development/SKILL.md).
|
|
26
|
+
|
|
27
|
+
## Instructions
|
|
28
|
+
|
|
29
|
+
1. State the behavior in one sentence; enumerate the cases (happy / boundary / error).
|
|
30
|
+
2. Write ONE failing test for the first case.
|
|
31
|
+
3. Run it; confirm it fails at an **assertion**, not an import/collection error.
|
|
32
|
+
4. Honor the Test-Red Forbidden block: **no production edits** (diff = `tests/**` only).
|
|
33
|
+
5. Output: the failing test + its observed failure reason. Hand to `/tdd green`.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: tdd-refactor
|
|
4
|
+
pack: engineering-base
|
|
5
|
+
tier: 2
|
|
6
|
+
visibility: internal
|
|
7
|
+
cluster: tdd
|
|
8
|
+
sub: refactor
|
|
9
|
+
skills: [test-driven-development]
|
|
10
|
+
description: TDD refactor phase — clean up (rename, deduplicate) while keeping the test green
|
|
11
|
+
argument-hint: "[target | context]"
|
|
12
|
+
suggestion:
|
|
13
|
+
eligible: true
|
|
14
|
+
trigger_description: "refactor while the test stays green"
|
|
15
|
+
trigger_context: "test is green, ready to clean up"
|
|
16
|
+
workspaces:
|
|
17
|
+
- agent-config-maintainer
|
|
18
|
+
packs:
|
|
19
|
+
- meta
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# /tdd refactor
|
|
23
|
+
|
|
24
|
+
Drives the **Refactor** step of
|
|
25
|
+
[`test-driven-development`](../../../skills/test-driven-development/SKILL.md).
|
|
26
|
+
|
|
27
|
+
## Instructions
|
|
28
|
+
|
|
29
|
+
1. Refactor (rename, deduplicate, extract) ONLY while the test stays green — re-run after each change.
|
|
30
|
+
2. If a change reddens the test, revert it; refactoring never changes behavior.
|
|
31
|
+
3. Output: the cleaned diff + a final green run. Loop back to `/tdd red` for the next behavior.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
model_tier: medium
|
|
3
|
+
name: tdd
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
argument-hint: "[red|green|refactor] [behavior | args]"
|
|
6
|
+
pack: engineering-base
|
|
7
|
+
tier: 2
|
|
8
|
+
visibility: internal
|
|
9
|
+
description: TDD orchestrator — routes to red (failing test), green (minimum code), refactor (clean while green)
|
|
10
|
+
cluster: tdd
|
|
11
|
+
type: orchestrator
|
|
12
|
+
auto_detect: true
|
|
13
|
+
suggestion:
|
|
14
|
+
eligible: true
|
|
15
|
+
trigger_description: "write the failing test first, make the test pass, refactor while green"
|
|
16
|
+
trigger_context: "user is driving a change test-first and names a TDD phase"
|
|
17
|
+
workspaces:
|
|
18
|
+
- agent-config-maintainer
|
|
19
|
+
packs:
|
|
20
|
+
- meta
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# /tdd
|
|
24
|
+
|
|
25
|
+
Thin ergonomic split over the [`test-driven-development`](../../skills/test-driven-development/SKILL.md)
|
|
26
|
+
skill — one sub-command per phase of that skill's mode contract. **No logic
|
|
27
|
+
lives here**; each sub loads the skill and drives its named phase.
|
|
28
|
+
|
|
29
|
+
## Sub-commands
|
|
30
|
+
|
|
31
|
+
| Sub-command | Routes to | Purpose |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `/tdd red` | `commands/tdd/red.md` | Design → Test-Red: enumerate cases, write ONE failing test, watch it fail at an assertion |
|
|
34
|
+
| `/tdd green` | `commands/tdd/green.md` | Implement: write the minimum code to pass; no test edits |
|
|
35
|
+
| `/tdd refactor` | `commands/tdd/refactor.md` | Refactor: clean up while the test stays green |
|
|
36
|
+
|
|
37
|
+
## Dispatch
|
|
38
|
+
|
|
39
|
+
1. Parse `/tdd <sub> [args]`. Explicit sub → route. Otherwise infer the phase
|
|
40
|
+
from observable state via the skill's mode-inference table (no test yet →
|
|
41
|
+
red; test failing at an assertion → green; green + defect → red again).
|
|
42
|
+
2. Load [`test-driven-development`](../../skills/test-driven-development/SKILL.md)
|
|
43
|
+
and drive ONLY the named phase, honoring that phase's Forbidden block.
|
|
44
|
+
3. LOW confidence / bare `/tdd` → show the three-row menu and ask.
|
|
45
|
+
|
|
46
|
+
## Rules
|
|
47
|
+
|
|
48
|
+
- **One phase per turn.** Do NOT chain red→green→refactor silently — each sub is one turn.
|
|
49
|
+
- **No logic duplication.** The behavior is the skill's; these commands only select the phase.
|
|
50
|
+
- **Do NOT commit or push.**
|
|
@@ -146,6 +146,10 @@ measured improvement.
|
|
|
146
146
|
|
|
147
147
|
- `/council` — breadth under a neutrality contract; the complement, not the
|
|
148
148
|
competitor.
|
|
149
|
+
- `subagent-orchestration` skill — the in-session, same-weights variant (no
|
|
150
|
+
network, no spend); team is cross-model with repo access. The three-way
|
|
151
|
+
router split: council = independent breadth, team = collaborative depth,
|
|
152
|
+
subagents = in-session same-weights.
|
|
149
153
|
- `adversarial-review` skill — the free single-model first rung below
|
|
150
154
|
`/team adversarial`.
|
|
151
155
|
- `docs/contracts/ai-team-config.md` — the `ai_team` settings block
|
|
@@ -10,6 +10,7 @@ before writing or reviewing code); this file is the catalog.
|
|
|
10
10
|
| File | Topic |
|
|
11
11
|
|---|---|
|
|
12
12
|
| `code-clarity.md` | Cross-language clarity rules — inline single-use values, carve-outs (side effects, loops, type narrowing, debugger) |
|
|
13
|
+
| `component-oriented-and-oop-development.md` | Reuse-first components (FE) + OOP-where-it-reduces-complexity (backend); carve-out index; bounded by the anti-over-engineering anchors |
|
|
13
14
|
|
|
14
15
|
## PHP (`docs/guidelines/php/`)
|
|
15
16
|
|
|
@@ -41,11 +41,90 @@ private-data leg stays narrow: the composer rejects inline bodies (multi-line /
|
|
|
41
41
|
oversized entries), accepts only ref-like tokens, and caps the count. Anything
|
|
42
42
|
dropped is recorded in `warnings` and surfaced — never silently widened.
|
|
43
43
|
|
|
44
|
+
## Bundle resolver — bind to the existing surfaces
|
|
45
|
+
|
|
46
|
+
The brief is **resolved**, not hand-built. `resolveBundle(slice)` maps a task
|
|
47
|
+
slice to a concrete bundle by selecting from what the package already ships — no
|
|
48
|
+
parallel registry:
|
|
49
|
+
|
|
50
|
+
- **Role-profile via reused `judge-*` lenses** — a review slice → `judge-code-quality`,
|
|
51
|
+
security → `judge-security-auditor`, tests → `judge-test-coverage`, bug-hunt →
|
|
52
|
+
`judge-bug-hunter`. The lens rides as the leading persona so the subagent loads it.
|
|
53
|
+
- **Role-mode** per slice kind (review → `reviewer`, tests → `tester`, plan → `planner`, …).
|
|
54
|
+
- **Tier** per slice kind (`lite|medium|high`), consumed by `subagent-routing`.
|
|
55
|
+
- **Knowledge refs** filtered by the **ADR-100 guard** (`filterKnowledgeByPolicy`):
|
|
56
|
+
a cross-project bundle drops `proprietary` refs; the drop is recorded.
|
|
57
|
+
|
|
58
|
+
Every resolved bundle emits an auditable `(role_mode, judge_lens, tier,
|
|
59
|
+
knowledge_ref_count, dropped_proprietary)` signature (`bundleAuditLine`) into the
|
|
60
|
+
[`orchestration-telemetry`](orchestration-telemetry.md) object — counts + ids
|
|
61
|
+
only, never bodies.
|
|
62
|
+
|
|
44
63
|
## Reference implementation
|
|
45
64
|
|
|
46
65
|
[`src/scripts/_lib/subagent_spawn.ts`](../../../../src/scripts/_lib/subagent_spawn.ts)
|
|
47
|
-
(`composeSpawnBrief`)
|
|
48
|
-
|
|
66
|
+
(`composeSpawnBrief`) + [`src/scripts/_lib/subagent_bundle.ts`](../../../../src/scripts/_lib/subagent_bundle.ts)
|
|
67
|
+
(`resolveBundle`, `filterKnowledgeByPolicy`, `bundleAuditLine`), covered by
|
|
68
|
+
[`tests/scripts/_lib_subagent_spawn.test.ts`](../../../../tests/scripts/_lib_subagent_spawn.test.ts)
|
|
69
|
+
+ [`tests/scripts/_lib_subagent_bundle.test.ts`](../../../../tests/scripts/_lib_subagent_bundle.test.ts).
|
|
70
|
+
|
|
71
|
+
## Worker-prompt rules — verbatim at spawn
|
|
72
|
+
|
|
73
|
+
Relocated from the `subagent-orchestration` skill body (road-to-feedback-9.2.0
|
|
74
|
+
Phase 2, size-budget split). Every dispatched worker prompt obeys these rules —
|
|
75
|
+
they prevent the two classic handoff failures: lossy re-summarization dropping
|
|
76
|
+
the user's requirements, and over-scripted prompts that break on first
|
|
77
|
+
contingency.
|
|
78
|
+
|
|
79
|
+
- **(a) User constraints verbatim.** Pass the user's
|
|
80
|
+
constraints/exclusions/preferences into the worker prompt **verbatim** — never
|
|
81
|
+
a paraphrase (a paraphrase silently drops requirements).
|
|
82
|
+
- **(b) Describe the goal, don't script the approach.** State the outcome and
|
|
83
|
+
let the worker choose the path; over-scripting breaks on contingencies.
|
|
84
|
+
- **(c) Translate environment paths.** Orchestrator-local paths do not exist in
|
|
85
|
+
the worker's sandbox — resolve/translate them at spawn.
|
|
86
|
+
- **(d) Pre-declared check-in conditions.** The worker names, at spawn time, the
|
|
87
|
+
conditions under which it will halt and ask ("if login required", "if
|
|
88
|
+
multiple candidates found") — so interrupts are predictable, not surprises.
|
|
89
|
+
- **(e) Attach relevant knowledge — read-only (road-to-opt-subagent-harvest
|
|
90
|
+
P3).** Before dispatch, look up the slice's key identifiers via
|
|
91
|
+
`memory_lookup` / the knowledge cards and attach the top hits to the
|
|
92
|
+
worker prompt AS LEADS — labelled per the source-discovery discipline
|
|
93
|
+
(negative facts + pointers durable; positive structure = hypothesis to
|
|
94
|
+
re-confirm, never a build input). The WRITE half stays forbidden: a
|
|
95
|
+
subagent's output is never auto-persisted into memory — promotion is
|
|
96
|
+
always the human-gated flow (ADR-098 floor). Auto-surface, never
|
|
97
|
+
auto-write.
|
|
98
|
+
|
|
99
|
+
## Hand-off worked examples — step N output feeds step N+1
|
|
100
|
+
|
|
101
|
+
Relocated from the `subagent-orchestration` skill (ecosystem-harvest ergonomics
|
|
102
|
+
U4, size-budget split). Ordered modes (`do-in-steps`) pass each step's return
|
|
103
|
+
as the next step's context; the failure this prevents is re-deriving state the
|
|
104
|
+
previous step established, or dropping a decision it made.
|
|
105
|
+
|
|
106
|
+
**Ordered chain (do-in-steps).** Step 1 returns a structured result; step 2's
|
|
107
|
+
worker prompt embeds it verbatim as "context from step 1", never a paraphrase:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Step 1 (analyze) → returns: { entrypoints: [...], risk_notes: "..." }
|
|
111
|
+
Step 2 (implement) worker prompt:
|
|
112
|
+
"Context from step 1 (verbatim, do not re-derive):
|
|
113
|
+
entrypoints = [...]; risk_notes = '...'
|
|
114
|
+
Your task: <goal>. Use the entrypoints above; do not re-scan."
|
|
115
|
+
Step 3 (verify) worker prompt:
|
|
116
|
+
"Context: step 2 changed <files>. Assert <invariant>."
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Fan-out → synthesis (do-in-parallel + a synthesis step).** Each parallel
|
|
120
|
+
worker returns one envelope; the synthesis step receives ALL of them as an
|
|
121
|
+
ordered list and is told what to reconcile ("merge the N findings; a finding
|
|
122
|
+
present in ≥2 returns is high-confidence"). The synthesis prompt names the
|
|
123
|
+
cross-item comparison — it does not just concatenate.
|
|
124
|
+
|
|
125
|
+
The rule both encode: **the receiving prompt embeds the prior return verbatim
|
|
126
|
+
and states what to do with it** — the same verbatim-first discipline as the
|
|
127
|
+
worker-prompt rules above, applied across a step boundary.
|
|
49
128
|
|
|
50
129
|
## Related
|
|
51
130
|
|