@event4u/agent-config 8.12.0 → 9.0.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 +164 -0
- package/README.md +1 -1
- package/dist/agent-src/commands/agent-handoff.md +35 -0
- package/dist/agent-src/commands/agents/init.md +1 -0
- package/dist/agent-src/commands/agents/optimize.md +1 -0
- package/dist/agent-src/commands/agents/user/accept.md +3 -2
- package/dist/agent-src/commands/agents/user/init.md +5 -4
- package/dist/agent-src/commands/agents/user/update.md +3 -2
- package/dist/agent-src/commands/agents/user.md +1 -0
- package/dist/agent-src/commands/agents.md +1 -0
- package/dist/agent-src/commands/analytics/show.md +1 -0
- package/dist/agent-src/commands/analytics.md +1 -0
- package/dist/agent-src/commands/analyze/decision.md +1 -0
- package/dist/agent-src/commands/analyze/incident.md +1 -0
- package/dist/agent-src/commands/analyze/near-miss.md +1 -0
- package/dist/agent-src/commands/analyze/postmortem.md +1 -0
- package/dist/agent-src/commands/analyze/premortem.md +1 -0
- package/dist/agent-src/commands/analyze/reference-repo.md +1 -0
- package/dist/agent-src/commands/analyze.md +3 -2
- package/dist/agent-src/commands/brand/identity.md +6 -5
- package/dist/agent-src/commands/brand/review.md +6 -5
- package/dist/agent-src/commands/brand/strategy.md +6 -4
- package/dist/agent-src/commands/brand/tokens.md +7 -6
- package/dist/agent-src/commands/brand/voice.md +5 -4
- package/dist/agent-src/commands/brand.md +9 -7
- package/dist/agent-src/commands/bug/fix.md +1 -0
- package/dist/agent-src/commands/bug/investigate.md +1 -0
- package/dist/agent-src/commands/bug.md +2 -1
- package/dist/agent-src/commands/challenge-me/vision.md +1 -0
- package/dist/agent-src/commands/challenge-me/with-docs.md +1 -0
- package/dist/agent-src/commands/challenge-me.md +28 -6
- package/dist/agent-src/commands/chat-history.md +1 -0
- package/dist/agent-src/commands/check-current-md.md +1 -0
- package/dist/agent-src/commands/commit.md +1 -0
- package/dist/agent-src/commands/context/create.md +3 -2
- package/dist/agent-src/commands/context.md +1 -0
- package/dist/agent-src/commands/cost/profile.md +1 -0
- package/dist/agent-src/commands/cost.md +2 -1
- package/dist/agent-src/commands/council/analysis.md +1 -0
- package/dist/agent-src/commands/council/debate.md +1 -0
- package/dist/agent-src/commands/council/default.md +21 -20
- package/dist/agent-src/commands/council/design.md +1 -0
- package/dist/agent-src/commands/council/optimize.md +1 -0
- package/dist/agent-src/commands/council/pr.md +1 -0
- package/dist/agent-src/commands/council.md +1 -0
- package/dist/agent-src/commands/estimate-ticket.md +1 -0
- package/dist/agent-src/commands/feature/dev.md +1 -0
- package/dist/agent-src/commands/feature/explore.md +1 -0
- package/dist/agent-src/commands/feature/plan.md +1 -0
- package/dist/agent-src/commands/feature/refactor.md +1 -0
- package/dist/agent-src/commands/feature/roadmap.md +1 -0
- package/dist/agent-src/commands/feature.md +2 -1
- package/dist/agent-src/commands/fix/pr-comments.md +19 -0
- package/dist/agent-src/commands/fix.md +2 -1
- package/dist/agent-src/commands/ghostwriter/delete.md +1 -0
- package/dist/agent-src/commands/ghostwriter/fetch.md +1 -0
- package/dist/agent-src/commands/ghostwriter/show.md +1 -0
- package/dist/agent-src/commands/ghostwriter/write.md +1 -0
- package/dist/agent-src/commands/ghostwriter.md +1 -0
- package/dist/agent-src/commands/grill-me.md +17 -12
- package/dist/agent-src/commands/humanize.md +1 -0
- package/dist/agent-src/commands/image/analyse.md +2 -1
- package/dist/agent-src/commands/image/create.md +1 -0
- package/dist/agent-src/commands/image/verify.md +1 -0
- package/dist/agent-src/commands/image.md +16 -12
- package/dist/agent-src/commands/implement-ticket.md +1 -0
- package/dist/agent-src/commands/judge/on-diff.md +1 -0
- package/dist/agent-src/commands/judge/solo.md +1 -0
- package/dist/agent-src/commands/judge/steps.md +1 -0
- package/dist/agent-src/commands/judge.md +1 -0
- package/dist/agent-src/commands/knowledge/cross-repo.md +1 -0
- package/dist/agent-src/commands/knowledge/forget.md +1 -0
- package/dist/agent-src/commands/knowledge/ingest.md +1 -0
- package/dist/agent-src/commands/knowledge/list.md +10 -0
- package/dist/agent-src/commands/knowledge.md +1 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +1 -0
- package/dist/agent-src/commands/memory/mine-session.md +1 -0
- package/dist/agent-src/commands/memory/promote.md +3 -2
- package/dist/agent-src/commands/memory.md +1 -0
- package/dist/agent-src/commands/mission/upgrade.md +45 -24
- package/dist/agent-src/commands/mode.md +1 -0
- package/dist/agent-src/commands/module/create.md +1 -0
- package/dist/agent-src/commands/module/explore.md +1 -0
- package/dist/agent-src/commands/module.md +1 -0
- package/dist/agent-src/commands/optimize/agents-dir.md +1 -0
- package/dist/agent-src/commands/optimize/project.md +1 -0
- package/dist/agent-src/commands/optimize/prompt.md +1 -0
- package/dist/agent-src/commands/optimize.md +2 -1
- package/dist/agent-src/commands/orchestrate.md +1 -0
- package/dist/agent-src/commands/override.md +1 -0
- package/dist/agent-src/commands/package.md +2 -1
- package/dist/agent-src/commands/post-as/ghostwriter.md +1 -0
- package/dist/agent-src/commands/post-as/me.md +1 -0
- package/dist/agent-src/commands/post-as.md +1 -0
- package/dist/agent-src/commands/pr/create/description-only.md +1 -0
- package/dist/agent-src/commands/pr/create.md +28 -0
- package/dist/agent-src/commands/prediction-pool.md +7 -6
- package/dist/agent-src/commands/prepare-for-review.md +1 -0
- package/dist/agent-src/commands/profile/activate.md +1 -0
- package/dist/agent-src/commands/profile/deactivate.md +1 -0
- package/dist/agent-src/commands/profile.md +1 -0
- package/dist/agent-src/commands/project.md +2 -1
- package/dist/agent-src/commands/refine-ticket.md +7 -0
- package/dist/agent-src/commands/research/deep.md +1 -0
- package/dist/agent-src/commands/research.md +1 -0
- package/dist/agent-src/commands/review/routing.md +1 -0
- package/dist/agent-src/commands/review.md +2 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -0
- package/dist/agent-src/commands/roadmap/materialize.md +1 -0
- package/dist/agent-src/commands/roadmap/process-full.md +1 -0
- package/dist/agent-src/commands/roadmap/process-phase.md +1 -0
- package/dist/agent-src/commands/roadmap/process-step.md +1 -0
- package/dist/agent-src/commands/roadmap.md +1 -0
- package/dist/agent-src/commands/security-audit-config.md +2 -1
- package/dist/agent-src/commands/skill/preview.md +1 -0
- package/dist/agent-src/commands/skill.md +1 -0
- package/dist/agent-src/commands/skills/discover.md +1 -0
- package/dist/agent-src/commands/skills.md +1 -0
- package/dist/agent-src/commands/sync/agent-settings.md +1 -0
- package/dist/agent-src/commands/sync.md +2 -1
- package/dist/agent-src/commands/team/adversarial.md +97 -0
- package/dist/agent-src/commands/team/delegate.md +110 -0
- package/dist/agent-src/commands/team/review.md +85 -0
- package/dist/agent-src/commands/team/status.md +123 -0
- package/dist/agent-src/commands/team-knowledge.md +8 -6
- package/dist/agent-src/commands/team.md +152 -0
- package/dist/agent-src/commands/tests/e2e-heal.md +1 -0
- package/dist/agent-src/commands/tests/e2e-plan.md +1 -0
- package/dist/agent-src/commands/tests/execute.md +1 -0
- package/dist/agent-src/commands/tests.md +2 -1
- package/dist/agent-src/commands/update-form-request-messages.md +1 -0
- package/dist/agent-src/commands/upstream-contribute.md +1 -0
- package/dist/agent-src/commands/video/from-script.md +3 -2
- package/dist/agent-src/commands/video/from-song.md +22 -21
- package/dist/agent-src/commands/video/scene.md +1 -0
- package/dist/agent-src/commands/video/stitch.md +2 -1
- package/dist/agent-src/commands/video/storyboard.md +1 -0
- package/dist/agent-src/commands/video.md +1 -0
- package/dist/agent-src/commands/work.md +1 -0
- package/dist/agent-src/commands/worktree/cleanup.md +8 -7
- package/dist/agent-src/commands/worktree/create.md +1 -0
- package/dist/agent-src/commands/worktree/verify.md +1 -0
- package/dist/agent-src/commands/worktree.md +1 -0
- package/dist/agent-src/rules/active-remediation.md +12 -36
- package/dist/agent-src/rules/artifact-drafting-protocol.md +7 -64
- package/dist/agent-src/rules/context-hygiene.md +19 -113
- package/dist/agent-src/rules/design-fidelity.md +4 -60
- package/dist/agent-src/rules/domain-adoption-policy.md +10 -106
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +12 -60
- package/dist/agent-src/rules/improve-before-implement.md +6 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +6 -86
- package/dist/agent-src/rules/size-enforcement.md +10 -0
- package/dist/agent-src/rules/tool-safety.md +17 -3
- package/dist/agent-src/skills/agent-security-review/SKILL.md +12 -1
- package/dist/agent-src/skills/ai-council/SKILL.md +11 -0
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +24 -2
- package/dist/agent-src/skills/code-review/SKILL.md +105 -93
- package/dist/agent-src/skills/code-review/checklists/backend.md +50 -0
- package/dist/agent-src/skills/code-review/checklists/database.md +19 -0
- package/dist/agent-src/skills/code-review/checklists/dependency.md +18 -0
- package/dist/agent-src/skills/code-review/checklists/docs.md +14 -0
- package/dist/agent-src/skills/code-review/checklists/frontend.md +19 -0
- package/dist/agent-src/skills/code-review/checklists/infra.md +17 -0
- package/dist/agent-src/skills/code-review/checklists/producing-the-review.md +62 -0
- package/dist/agent-src/skills/code-review/checklists/test-only.md +13 -0
- package/dist/agent-src/skills/code-review/evals/evals.json +53 -15
- package/dist/agent-src/skills/condense-memory/SKILL.md +3 -2
- package/dist/agent-src/skills/conventional-commits-writing/evals/evals.json +15 -0
- package/dist/agent-src/skills/docker/SKILL.md +10 -0
- package/dist/agent-src/skills/docx-authoring/SKILL.md +102 -0
- package/dist/agent-src/skills/github-ci/evals/evals.json +25 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +79 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +112 -0
- package/dist/agent-src/skills/humanizer/references/fixtures.md +70 -0
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +7 -1
- package/dist/agent-src/skills/laravel/SKILL.md +10 -0
- package/dist/agent-src/skills/launch-readiness/SKILL.md +35 -0
- package/dist/agent-src/skills/merge-conflicts/SKILL.md +30 -0
- package/dist/agent-src/skills/pdf-tools/SKILL.md +101 -0
- package/dist/agent-src/skills/quality-tools/evals/evals.json +15 -0
- package/dist/agent-src/skills/security-audit/SKILL.md +29 -0
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +90 -0
- package/dist/agent-src/skills/security-maturity-assessment/evals/triggers.json +52 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +79 -0
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +11 -3
- package/dist/agent-src/skills/subagent-orchestration/schemas/team-review-status.json +103 -0
- package/dist/agent-src/skills/terraform/SKILL.md +10 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +31 -0
- package/dist/agent-src/skills/threat-modeling/SKILL.md +15 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +30 -0
- package/dist/agent-src/templates/scripts/telemetry/report_renderer.ts +22 -9
- package/dist/agent-src/templates/scripts/telemetry_record.ts +5 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +378 -174
- 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 +16 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +14 -6
- package/dist/install/install.mjs +46 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +5 -0
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +11 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +9 -2
- package/docs/SKILL_CENSUS.md +8 -0
- package/docs/architecture.md +3 -3
- package/docs/benchmark.md +67 -2
- package/docs/catalog.md +10 -4
- package/docs/command-flows.md +6 -1
- package/docs/contracts/ai-council-config.md +9 -2
- package/docs/contracts/ai-team-config.md +224 -0
- package/docs/contracts/command-clusters.md +1 -0
- package/docs/contracts/prelaunch-diagnostics.md +151 -0
- package/docs/contracts/release-pr-gating.md +1 -0
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +9 -1
- package/docs/featured-skills.md +2 -2
- package/docs/getting-started-by-role.md +3 -1
- package/docs/getting-started.md +42 -1
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +45 -0
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +28 -0
- package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +76 -0
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +90 -0
- package/docs/guidelines/agent-infra/domain-adoption-gates.md +112 -0
- package/docs/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +99 -0
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +13 -0
- package/docs/guidelines/design-fidelity-mechanics.md +76 -0
- package/docs/maintainers/branch-protection.md +18 -0
- package/docs/parity/command-frontmatter.md +60 -0
- package/docs/proof.md +7 -6
- package/package.json +1 -1
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +30 -0
- package/src/agent-src/templates/scripts/telemetry/report_renderer.ts +22 -9
- package/src/agent-src/templates/scripts/telemetry_record.ts +5 -0
- package/src/config/agent-settings.template.yml +71 -7
- package/src/config/prelaunch-areas.yml +36 -0
- package/src/scripts/_cli/cmd_doctor.ts +288 -1
- package/src/scripts/_lib/claude_plugin.ts +114 -4
- package/src/scripts/_lib/orchestration_record.ts +5 -0
- package/src/scripts/_lib/tool_adapter_registry.ts +120 -0
- package/src/scripts/ai_team/config.ts +234 -0
- package/src/scripts/ai_team/review_gate.ts +636 -0
- package/src/scripts/ai_team/team_dispatch.ts +612 -0
- package/src/scripts/bench_ab_task_runner.ts +11 -1
- package/src/scripts/bench_parity_count.ts +279 -0
- package/src/scripts/build_linear_digest.ts +3 -1
- package/src/scripts/check_bridge_derivation.ts +172 -0
- package/src/scripts/check_consumer_scope_flip.ts +179 -0
- package/src/scripts/check_council_config_location.ts +115 -15
- package/src/scripts/check_host_loadability.ts +81 -0
- package/src/scripts/condense.ts +5 -0
- package/src/scripts/hook_manifest.yaml +12 -1
- package/src/scripts/install.ts +39 -0
- package/src/scripts/lint_handoffs.ts +42 -0
- package/src/scripts/lint_skill_descriptions.ts +228 -0
- package/src/scripts/lint_skill_descriptions_allowlist.json +1 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +145 -0
- package/src/scripts/lint_skill_scripts_readonly_allowlist.json +8 -0
- package/src/scripts/lint_supported_tools_matrix.ts +35 -0
- package/src/scripts/optimize_skill_description.ts +144 -0
- package/src/scripts/orchestration_record.ts +2 -1
- package/src/scripts/prelaunch_diagnostics.ts +248 -0
- package/src/scripts/rule_backlinks.ts +0 -0
- package/src/scripts/run_skill_evals.ts +70 -4
- package/src/scripts/schemas/command.schema.json +7 -0
- package/src/scripts/schemas/evals.schema.json +105 -14
- package/src/scripts/schemas/prelaunch-report.schema.json +107 -0
- package/src/scripts/schemas/skill.schema.json +18 -1
- package/src/scripts/schemas/subagent.schema.json +6 -0
- package/src/scripts/skill_linter.ts +43 -3
- package/src/scripts/smoke_host_loadability.sh +73 -0
- package/src/scripts/team_review_gate_hook.ts +115 -0
- package/src/scripts/trigger_eval_grandfather.json +1 -2
- package/src/scripts/utilization_report.ts +225 -0
- package/src/server/schemas/settings.ts +25 -0
package/docs/benchmark.md
CHANGED
|
@@ -453,7 +453,7 @@ covers only 14/89 rules (operator hand-labelling), a separate gap.
|
|
|
453
453
|
- Runner: `src/scripts/bench_quality_run.ts` (`--dry-run` free / live is
|
|
454
454
|
API-gated); gate: `src/scripts/check_quality_regression.ts` (inert until a
|
|
455
455
|
`quality-run.json` — gitignored — exists locally).
|
|
456
|
-
- Roadmap: `agents/roadmaps/road-to-token-saving.md` Phase 0.
|
|
456
|
+
- Roadmap: `agents/roadmaps/later/road-to-token-saving.md` Phase 0.
|
|
457
457
|
|
|
458
458
|
## Length-neutral judge RERUN (2026-07-12) — SECOND INCONCLUSIVE, gate CLOSED-BY-DIAGNOSIS
|
|
459
459
|
|
|
@@ -492,4 +492,69 @@ anchor-scoring against `must_include`/`must_not`, not pairwise LLM judging).
|
|
|
492
492
|
|
|
493
493
|
- Runner: `src/scripts/bench_quality_rerun.ts` (design-pinned constants:
|
|
494
494
|
band ±15%, κ floor 0.60, ρ flag 0.3, effect floor 10pp; `--max-usd` guard).
|
|
495
|
-
- Roadmap: `agents/roadmaps/road-to-opt-measurement-unblock.md` Phase 1.
|
|
495
|
+
- Roadmap: `agents/roadmaps/archive/road-to-opt-measurement-unblock.md` Phase 1.
|
|
496
|
+
|
|
497
|
+
## Cross-model parity count (2026-07-12) — PASS, `finding_floor` armed
|
|
498
|
+
|
|
499
|
+
The most-deferred portfolio item (cross-model parity eval, deferred across 4+
|
|
500
|
+
roadmaps) landed in its re-scoped form: council-transport execution instead of
|
|
501
|
+
an in-host subagent harness (`docs/design/cross-model-parity-eval.md`). Each
|
|
502
|
+
orchestration-corpus task is rendered self-contained (fixture files inlined)
|
|
503
|
+
and dispatched identically to two vendors; the output contract forces a
|
|
504
|
+
numbered findings list (or `NO FINDINGS`), counted with the **same**
|
|
505
|
+
`_count_findings` the `finding_floor` eval gate uses.
|
|
506
|
+
|
|
507
|
+
| Task | sonnet median | gpt-4o median | Calibrated floor |
|
|
508
|
+
|---|---|---|---|
|
|
509
|
+
| orch-01 multi-file analysis | 11 | 5 | 5 |
|
|
510
|
+
| orch-02 ordered refactor | 5 | 3 | 3 |
|
|
511
|
+
| orch-03 competitive impl | 3 | 0 | 1 (clamp) |
|
|
512
|
+
| pv-01 hollow detection | 2 | 2 | 2 |
|
|
513
|
+
| pv-02 negative control | 0 | 0 | — (control, excluded) |
|
|
514
|
+
|
|
515
|
+
Signal, honestly stated:
|
|
516
|
+
|
|
517
|
+
- **Real cross-vendor gap** — sonnet surfaces ~2× gpt-4o's findings on the
|
|
518
|
+
multi-file analysis task. A floor calibrated on sonnet alone would
|
|
519
|
+
systematically fail gpt-4o; the cross-host lower envelope
|
|
520
|
+
(`max(1, min over hosts of median)`) is the correct floor shape.
|
|
521
|
+
- **Planted defect is vendor-stable** — both vendors cite the hollow
|
|
522
|
+
`charge.ts` (2 findings each, zero variance across repeats).
|
|
523
|
+
- **Negative control perfect** — 0 findings from both vendors on clean code
|
|
524
|
+
across all repeats; the counting contract does not reward spurious findings.
|
|
525
|
+
|
|
526
|
+
Cost: $0.16 actual (30 calls; ceiling $8 authorized). `finding_floor` is now an
|
|
527
|
+
**enforcing** gate (comment flipped in `run_skill_evals.ts`); calibration data
|
|
528
|
+
in `internal/bench/reports/parity-count.json`.
|
|
529
|
+
|
|
530
|
+
- Runner: `src/scripts/bench_parity_count.ts` (pre-registered: 3 repeats,
|
|
531
|
+
2 vendors, envelope floor rule, controls excluded, `--max-usd` abort).
|
|
532
|
+
- Roadmap: `agents/roadmaps/archive/road-to-opt-measurement-unblock.md` Phase 3.
|
|
533
|
+
|
|
534
|
+
## Non-Claude lift replication, second vendor host (2026-07-12) — HONEST NULL
|
|
535
|
+
|
|
536
|
+
The `discipline_profile: auto` flip gate required a replicated lift on a
|
|
537
|
+
non-Claude host. Executed per the parked design (paired vanilla vs
|
|
538
|
+
`rules-kernel-dc` = the essential cut, 30 tasks × 3 seeds) on the codex CLI
|
|
539
|
+
host with `gpt-5.5` (ChatGPT account).
|
|
540
|
+
|
|
541
|
+
- **Capability:** 92% → 89% (McNemar p = 1.0) — no effect.
|
|
542
|
+
- **Discipline:** 1.000 → 0.892 (Δ = −0.108, Wilcoxon p = 0.0225 on 7
|
|
543
|
+
non-zero pairs) — no lift; directionally **negative** on this host.
|
|
544
|
+
- **Verdict:** NO replicated lift. `discipline_profile` keeps its
|
|
545
|
+
vendor-granular default (`unknown_defaults`, no `auto` flip) — consistent
|
|
546
|
+
with the 2026-07-10 two-host precedent (claude strong-host ceilings) and
|
|
547
|
+
the earlier gpt-5-mini replication failure on the same injection surface.
|
|
548
|
+
|
|
549
|
+
Limitations, published: the ChatGPT-account usage limit rejected 100 of 180
|
|
550
|
+
runs mid-corpus (plus 2 timeouts), leaving n = 37 valid pairs — the
|
|
551
|
+
truncation is **balanced across arms** (50/52), so it weakens power but does
|
|
552
|
+
not bias the comparison. An earlier same-day fire misfired entirely (model
|
|
553
|
+
pin omitted → all runs API-rejected, $0) and is excluded as a harness error,
|
|
554
|
+
not evidence. Raw report is local-only by design
|
|
555
|
+
(`internal/bench/reports/ab-v2/` is gitignored); this section + the roadmap
|
|
556
|
+
notes are the durable record. Re-open path: a full uncapped 180-run
|
|
557
|
+
replication on a per-token-billed key.
|
|
558
|
+
|
|
559
|
+
- Runner: `src/scripts/bench_ab_v2_run.ts --host codex` (checkpoint-resumable).
|
|
560
|
+
- Roadmap: `agents/roadmaps/archive/road-to-opt-measurement-unblock.md` Phase 2.
|
package/docs/catalog.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# agent-config — Public Catalog
|
|
2
2
|
|
|
3
|
-
Consumer-facing catalog of all **
|
|
3
|
+
Consumer-facing catalog of all **648 public artefacts** shipped by
|
|
4
4
|
this package. Internal package-maintenance rules and deprecation shims
|
|
5
5
|
are excluded.
|
|
6
6
|
|
|
@@ -179,7 +179,7 @@ are excluded.
|
|
|
179
179
|
| skill | [`messaging-architecture`](../dist/agent-src/skills/messaging-architecture/SKILL.md) | | Use when shaping the primary message, supporting proofs, and audience-by-message matrix from a locked positioning frame — before any copy or launch beat. Triggers on 'tighten the message stack'. |
|
|
180
180
|
| skill | [`migration-architect`](../dist/agent-src/skills/migration-architect/SKILL.md) | | Use when shaping a non-trivial migration — rollout phases, dual-write windows, cutover sequencing, deprecation cycles — hands off to the framework-specific migration skill for DDL once locked. |
|
|
181
181
|
| skill | [`mobile-e2e-strategy`](../dist/agent-src/skills/mobile-e2e-strategy/SKILL.md) | | Use when picking a mobile E2E framework — Detox / Appium / Maestro / XCUITest / Espresso — or planning iOS Simulator / Android Emulator coverage in CI for RN, Expo, or native apps. |
|
|
182
|
-
| skill | [`module-detect-on-the-fly`](../dist/agent-src/skills/module-detect-on-the-fly/SKILL.md) | | Use when editing a
|
|
182
|
+
| skill | [`module-detect-on-the-fly`](../dist/agent-src/skills/module-detect-on-the-fly/SKILL.md) | | Use when editing a module-shaped path (`Modules/*`, `packages/*`, `apps/*`) while `modules.enabled` is false — asks once to enable it; also the project/stack + task-runner detection reference. |
|
|
183
183
|
| skill | [`module-management`](../dist/agent-src/skills/module-management/SKILL.md) | | Use when working within any module under `modules.root_paths` from `.agent-project-settings.yml` — Laravel HMVC, Symfony DDD-lite, Node monorepo, Python src/, Go internal/, or a custom path. |
|
|
184
184
|
| skill | [`motion-choreographer`](../dist/agent-src/skills/motion-choreographer/SKILL.md) | | Use when turning a locked still + blueprint into a provider-tuned motion prompt — camera, primary + secondary motion, physics, native-audio sync. Triggers 'motion prompt for Veo/Kling/Sora'. |
|
|
185
185
|
| skill | [`multi-tenancy`](../dist/agent-src/skills/multi-tenancy/SKILL.md) | | Use when working with the multi-tenant architecture — customer DB switching, FQDN routing, tenant isolation, or cross-tenant operations. |
|
|
@@ -407,7 +407,7 @@ are excluded.
|
|
|
407
407
|
| rule | [`user-interrupt-priority`](../dist/agent-src/rules/user-interrupt-priority.md) | auto | New user instruction mid-flight — STOP the current task, run the new one in full, ASK before resuming |
|
|
408
408
|
| rule | [`verify-before-complete`](../dist/agent-src/rules/verify-before-complete.md) | always | Verify before completion — run tests and quality tools before claiming done |
|
|
409
409
|
|
|
410
|
-
## Commands (
|
|
410
|
+
## Commands (183)
|
|
411
411
|
|
|
412
412
|
| kind | name | cluster | description |
|
|
413
413
|
|---|---|---|---|
|
|
@@ -569,6 +569,11 @@ are excluded.
|
|
|
569
569
|
| command | [`team-knowledge`](../dist/agent-src/commands/team-knowledge.md) | cluster: team-knowledge | Team-knowledge orchestrator — routes to consolidate and bootstrap |
|
|
570
570
|
| command | [`team-knowledge-bootstrap`](../dist/agent-src/commands/team-knowledge/bootstrap.md) | cluster: team-knowledge | One-shot deterministic seed for a fresh project's knowledge layer — stages template pages from real config/directory detection, never LLM-invented claims. Review-then-commit. |
|
|
571
571
|
| command | [`team-knowledge-consolidate`](../dist/agent-src/commands/team-knowledge/consolidate.md) | cluster: team-knowledge | Review pending typed knowledge-observation events and file them into agents/knowledge/ pages as a human-reviewed batch — never writes without approval. |
|
|
572
|
+
| command | [`team`](../dist/agent-src/commands/team.md) | cluster: team | Team orchestrator — governed cross-model access layer (a second strong model reviews the real diff; read-only multi-host fallback); routes to review, adversarial, delegate, status |
|
|
573
|
+
| command | [`team-adversarial`](../dist/agent-src/commands/team/adversarial.md) | cluster: team | Thin wrapper — adversarial cross-model review on a named focus via the official plugin (/codex:adversarial-review). Escalation rung above the single-model adversarial-review skill. |
|
|
574
|
+
| command | [`team-delegate`](../dist/agent-src/commands/team/delegate.md) | cluster: team | Thin wrapper — hand a task to the second model as a native worker via the official plugin (/codex:rescue). The only write-access wrapper; double-gated behind ai_team.allow_delegate. |
|
|
575
|
+
| command | [`team-review`](../dist/agent-src/commands/team/review.md) | cluster: team | Thin wrapper — cross-model review of the current diff via the official plugin (/codex:review). Gated on ai_team.enabled; fails closed when the plugin is absent. |
|
|
576
|
+
| command | [`team-status`](../dist/agent-src/commands/team/status.md) | cluster: team | Thin wrapper — plugin job status via /codex:status plus a quota block showing the shared openai counter against both ceilings (team + council). Gated on ai_team.enabled; fails closed when the plugin… |
|
|
572
577
|
| command | [`tests`](../dist/agent-src/commands/tests.md) | cluster: tests | Tests orchestrator — routes to create, execute, e2e-plan, e2e-heal |
|
|
573
578
|
| command | [`tests-create`](../dist/agent-src/commands/tests/create.md) | cluster: tests | Write meaningful tests for the current branch — stack-adaptive (pest / phpunit / vitest / jest / pytest / …) |
|
|
574
579
|
| command | [`tests-e2e-heal`](../dist/agent-src/commands/tests/e2e-heal.md) | cluster: tests | Find, debug, and fix failing Playwright E2E tests |
|
|
@@ -590,7 +595,7 @@ are excluded.
|
|
|
590
595
|
| command | [`worktree-status`](../dist/agent-src/commands/worktree/status.md) | cluster: worktree | List active worktrees — ownership (scope lock), dirty state, ahead/behind, merge-readiness incl. verification evidence |
|
|
591
596
|
| command | [`worktree-verify`](../dist/agent-src/commands/worktree/verify.md) | cluster: worktree | Run the scoped verification for a worktree's declared change — narrow probes matched to the diff, never the full CI pipeline |
|
|
592
597
|
|
|
593
|
-
## Guidelines (
|
|
598
|
+
## Guidelines (91)
|
|
594
599
|
|
|
595
600
|
| kind | name | category | description |
|
|
596
601
|
|---|---|---|---|
|
|
@@ -629,6 +634,7 @@ are excluded.
|
|
|
629
634
|
| guideline | [`roadmap-progress-mechanics`](../docs/guidelines/agent-infra/roadmap-progress-mechanics.md) | agent-infra | |
|
|
630
635
|
| guideline | [`role-contracts`](../docs/guidelines/agent-infra/role-contracts.md) | agent-infra | |
|
|
631
636
|
| guideline | [`role-mode-router`](../docs/guidelines/agent-infra/role-mode-router.md) | agent-infra | |
|
|
637
|
+
| guideline | [`rule-body-migration-inventory`](../docs/guidelines/agent-infra/rule-body-migration-inventory.md) | agent-infra | |
|
|
632
638
|
| guideline | [`rule-type-governance`](../docs/guidelines/agent-infra/rule-type-governance.md) | agent-infra | |
|
|
633
639
|
| guideline | [`runtime-layer`](../docs/guidelines/agent-infra/runtime-layer.md) | agent-infra | |
|
|
634
640
|
| guideline | [`scqa-framework`](../docs/guidelines/agent-infra/scqa-framework.md) | agent-infra | |
|
package/docs/command-flows.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
> Every command is classified in `src/flows/surface-map.yaml` (coverage enforced by `scripts/lint_command_flow_coverage.py`). The four user-work flows carry rich definitions in `src/flows/<flow>.yaml`.
|
|
9
9
|
|
|
10
|
-
**
|
|
10
|
+
**183 commands** across **10 surfaces** (4 user-work flows + 6 platform/domain surfaces).
|
|
11
11
|
|
|
12
12
|
## User-work flows
|
|
13
13
|
|
|
@@ -135,6 +135,11 @@ _Deliberately-started features — not daily flow members, never buried as skill
|
|
|
135
135
|
- `roadmap-process-full` — Autonomously process every open step across every phase of a roadmap until the file is fully closed. Larges…
|
|
136
136
|
- `roadmap-process-phase` — Autonomously process every open step in the next or current phase of a roadmap, then stop. Default executio…
|
|
137
137
|
- `roadmap-process-step` — Autonomously process the single next open step of a roadmap and stop. Smallest execution scope of the /road…
|
|
138
|
+
- `team` — Team orchestrator — cross-model depth review (one strong model builds, a second reviews the real diff); rou…
|
|
139
|
+
- `team-adversarial` — Thin wrapper — adversarial cross-model review on a named focus via the official plugin (/codex:adversarial-…
|
|
140
|
+
- `team-delegate` — Thin wrapper — hand a task to the second model as a native worker via the official plugin (/codex:rescue).…
|
|
141
|
+
- `team-review` — Thin wrapper — cross-model review of the current diff via the official plugin (/codex:review). Gated on ai_…
|
|
142
|
+
- `team-status` — Thin wrapper — plugin job status via /codex:status plus a ledger line with today's cli_call_budget openai c…
|
|
138
143
|
|
|
139
144
|
### Platform surface — `agent-admin`
|
|
140
145
|
|
|
@@ -787,11 +787,18 @@ error) when any of these hold:
|
|
|
787
787
|
|
|
788
788
|
## Migration footprint (Phase 0)
|
|
789
789
|
|
|
790
|
+
> Historical record of the Step-2 consolidation. **The project-local file
|
|
791
|
+
> described below is no longer read** — ADR-104 (superseding ADR-093) moved
|
|
792
|
+
> the council config to the user-global location documented at the top of
|
|
793
|
+
> this contract. A `.ai-council.yml` under any project `agents/` tree is
|
|
794
|
+
> ignored. Read this section for provenance only, not for placement.
|
|
795
|
+
|
|
790
796
|
- `.agent-settings.yml` → 14-key inventory under `ai_council:` removed
|
|
791
797
|
after a one-line breadcrumb comment is in place pointing at this
|
|
792
798
|
contract.
|
|
793
799
|
- `.agent-settings.template.yml` → same removal.
|
|
794
|
-
- New file `agents/settings/.ai-council.yml` checked in with two enabled
|
|
800
|
+
- New file `agents/settings/.ai-council.yml` checked in with two enabled <!-- council-config-allowed -->
|
|
795
801
|
providers (anthropic + openai) and three disabled
|
|
796
802
|
(gemini + xai + perplexity). Models pre-filled from the Phase 0
|
|
797
|
-
default set; comments mirror this contract.
|
|
803
|
+
default set; comments mirror this contract. *(This project-tracked file
|
|
804
|
+
was later removed; per ADR-104 the config is user-global only.)*
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: beta
|
|
3
|
+
keep-beta-until: 2026-10-10
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI-Team Config (`ai_team` block)
|
|
7
|
+
|
|
8
|
+
**Purpose.** Lock the schema, validation, and quota rules for the `/team`
|
|
9
|
+
cross-model review family — one strong external model (via the codex CLI,
|
|
10
|
+
subscription-authed) reviewing inside the repo. Team mode is the **depth**
|
|
11
|
+
complement to the council's **breadth**; this contract is the boundary that
|
|
12
|
+
prevents drift across the settings template, the loader, the `/team`
|
|
13
|
+
wrappers, and the quota counter.
|
|
14
|
+
|
|
15
|
+
**Audience.** Authors of `src/scripts/ai_team/config.ts`, the `/team`
|
|
16
|
+
command family, the doctor `team` section, and the setup wizard. Also
|
|
17
|
+
reviewers checking that new team features keep the schema intact.
|
|
18
|
+
|
|
19
|
+
**Status.** Internal-locked. Changes require a contract version bump and a
|
|
20
|
+
revision entry in the consuming roadmap.
|
|
21
|
+
|
|
22
|
+
## File location
|
|
23
|
+
|
|
24
|
+
Unlike the council (ALWAYS user-global `.ai-council.yml` — see
|
|
25
|
+
[ai-council-config.md](ai-council-config.md)), the `ai_team` block lives in
|
|
26
|
+
the **project settings cascade**:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
<project>/.agent-settings.yml → ai_team: { … }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
read via `load_agent_settings` (`src/scripts/_lib/agent_settings.ts`) and
|
|
33
|
+
validated by `src/scripts/ai_team/config.ts:load_ai_team_config`. Team mode
|
|
34
|
+
is a per-project posture (default-off), not a per-developer credential
|
|
35
|
+
store — the codex CLI carries the subscription auth itself, so there is
|
|
36
|
+
nothing secret to centralize. The shipped defaults live in
|
|
37
|
+
`src/config/agent-settings.template.yml` and are mirrored by the wizard
|
|
38
|
+
schema (`src/server/schemas/settings.ts`, enforced by the schema↔template
|
|
39
|
+
parity test).
|
|
40
|
+
|
|
41
|
+
## Schema
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
ai_team:
|
|
45
|
+
enabled: <bool> # master switch, default false
|
|
46
|
+
model: <string> # default 'auto'
|
|
47
|
+
allow_delegate: <bool> # second opt-in for the write path, default false
|
|
48
|
+
max_calls_per_day: <int >= 0> # default 50; counts into the shared openai bucket
|
|
49
|
+
suppress_setup_hint: <bool> # default false; cosmetic wizard-hint suppression
|
|
50
|
+
review_gate: # managed governance of the plugin's Stop-hook Review Gate
|
|
51
|
+
managed: <bool> # default false = byte-identical pre-Phase-4 behavior
|
|
52
|
+
max_consecutive_blocks: <int >= 1> # default 3; circuit-breaker loop bound
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
| Key | Type | Default | Semantics |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| `enabled` | bool | `false` | Master switch. `false` = `/team` commands are never suggested and every invocation refuses with an enable pointer — byte-identical to pre-feature behavior. `true` = the family is live; per-command gates below still apply. |
|
|
58
|
+
| `model` | string | `'auto'` | Model handed to the codex CLI. `'auto'` = pass **no** `--model` flag; the codex CLI's own default applies. Any other value passes through **verbatim** as `--model <value>`. |
|
|
59
|
+
| `allow_delegate` | bool | `false` | Second opt-in for the **only** wrapper that delegates write access (`/team:delegate`). Refuses with an enable pointer until BOTH `enabled` and `allow_delegate` are `true`. |
|
|
60
|
+
| `max_calls_per_day` | int ≥ 0 | `50` | Per-day ceiling on team calls, read against the **shared** `cli_call_budget` openai bucket (see § Quota). `0` blocks all team calls. |
|
|
61
|
+
| `suppress_setup_hint` | bool | `false` | Suppress the one-line wizard/init recommendation to install the codex plugin on Claude-Code hosts. Cosmetic only. |
|
|
62
|
+
| `review_gate.managed` | bool | `false` | Managed governance of the codex plugin's Stop-hook Review Gate (Phase 4). `false` = no counting, no circuit breaker — the Stop path is byte-identical to pre-Phase-4 dispatch. `true` = consecutive BLOCK verdicts are counted per session (first-line `ALLOW:`/`BLOCK:` contract of the gate transcript; anything else is honestly `UNKNOWN` and never counted) and the circuit breaker trips at the bound. |
|
|
63
|
+
| `review_gate.max_consecutive_blocks` | int ≥ 1 | `3` | Circuit-breaker bound. At this many CONSECUTIVE BLOCKs in one session a visible notice is injected **exactly once** and the managed layer stops re-blocking — the user decides, never an infinite Claude↔Codex loop. An ALLOW verdict resets the counter. Unknown keys inside `review_gate` are rejected fail-closed, same as the parent block. |
|
|
64
|
+
|
|
65
|
+
### Why `model: 'auto'` instead of a pinned ID
|
|
66
|
+
|
|
67
|
+
A hardcoded model ID rots silently (the council's own CLI default is a
|
|
68
|
+
deliberate, documented *pin* — `DEFAULT_OPENAI_CLI_MODEL` in
|
|
69
|
+
`src/scripts/ai_council/clients.ts`, see
|
|
70
|
+
[ai-council-config.md](ai-council-config.md)). Team mode inverts that:
|
|
71
|
+
under a subscription the *strongest* available model is the rational
|
|
72
|
+
default, and only the codex CLI knows what that currently is. `'auto'`
|
|
73
|
+
therefore delegates the choice to the CLI; a set value is a user pin and
|
|
74
|
+
passes through verbatim — the loader never rewrites or "corrects" it.
|
|
75
|
+
|
|
76
|
+
**`review_gate` (Phase 4, shipped):** the loop-bound governance block is
|
|
77
|
+
live — module `src/scripts/ai_team/review_gate.ts` (counter state under
|
|
78
|
+
`agents/runtime/state/team-review-gate.json`, ledger under
|
|
79
|
+
`agents/runtime/team/events.log`, one `team.gate: BLOCK 2/3` /
|
|
80
|
+
`ALLOW reset` line per gate verdict). The gate itself stays upstream's;
|
|
81
|
+
upstream's own warning applies while it is enabled unmanaged: "The
|
|
82
|
+
review gate can create a long-running Claude/Codex loop and may drain
|
|
83
|
+
usage limits quickly." Any other key stays rejected fail-closed.
|
|
84
|
+
|
|
85
|
+
## Role semantics — the council-verdict design constraint
|
|
86
|
+
|
|
87
|
+
Verbatim from the consuming roadmap's council verdict, binding on every
|
|
88
|
+
team-mode phase:
|
|
89
|
+
|
|
90
|
+
> **Council verdict on team-mode frontmatter (claude-sonnet-4-5 + gpt-4o,
|
|
91
|
+
> 2026-07-12, unanimous REJECT):** skills/commands get NO `team_mode` /
|
|
92
|
+
> role frontmatter. Role semantics belong in the `ai_team` config block +
|
|
93
|
+
> prompt library (reusing subagent-orchestration's implementer/judge frame
|
|
94
|
+
> and status envelope), not smeared across 271 skill files while the
|
|
95
|
+
> feature's role model does not operationally exist. Revisit-if: Phase 2
|
|
96
|
+
> execution turns out to be blocked SPECIFICALLY on artefact-level role
|
|
97
|
+
> metadata — then re-open via decision-revisit-gate, not by silently
|
|
98
|
+
> adding the key.
|
|
99
|
+
|
|
100
|
+
Operationally: ALL role semantics (builder/reviewer/verifier selection,
|
|
101
|
+
eligibility) live HERE — in this `ai_team` block — plus the prompt
|
|
102
|
+
library, reusing `subagent-orchestration`'s implementer/judge frame and
|
|
103
|
+
its `subagent-status.json` envelope. **No `team_mode`/role frontmatter key
|
|
104
|
+
is added to skill/command/rule schemas.**
|
|
105
|
+
|
|
106
|
+
## Quota — one subscription, one counter
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
TEAM CALLS COUNT INTO THE EXISTING cli_call_budget OPENAI BUCKET.
|
|
110
|
+
ONE SUBSCRIPTION, ONE COUNTER. NEVER A PARALLEL COUNTER.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The daily CLI-call counter is already **generic per-provider** — no
|
|
114
|
+
team-specific counting system exists or may be built:
|
|
115
|
+
|
|
116
|
+
- **State file:** `~/.event4u/agent-config/cli-calls.json`
|
|
117
|
+
(`CLI_CALLS_FILENAME`, `src/scripts/ai_council/clients.ts:716`), shape
|
|
118
|
+
`{ date: "YYYY-MM-DD", counts: { <provider>: <int> } }`, resets on UTC
|
|
119
|
+
date rollover.
|
|
120
|
+
- **Read:** `load_cli_call_counts(path?)` —
|
|
121
|
+
`src/scripts/ai_council/clients.ts:738`. Returns today's per-provider
|
|
122
|
+
counts; empty on rollover.
|
|
123
|
+
- **Increment:** `record_cli_call(provider, path?)` —
|
|
124
|
+
`src/scripts/ai_council/clients.ts:774`. Returns the new total.
|
|
125
|
+
- **Gate + increment on the transport itself:** `CliClient.ask()` checks
|
|
126
|
+
the counter *before* spawning (`clients.ts` § quota gate, returns
|
|
127
|
+
`error: 'cli_quota_exhausted'` + a `block_quota` events-log line when
|
|
128
|
+
exhausted) and records the call *after* — even failed calls count, so a
|
|
129
|
+
broken CLI cannot burn the budget in a tight loop.
|
|
130
|
+
- **The openai bucket:** `OpenAICliClient` (`clients.ts:1275`) has
|
|
131
|
+
`name = 'openai'`; council CLI calls and team calls land on the **same**
|
|
132
|
+
`counts.openai` entry.
|
|
133
|
+
|
|
134
|
+
A `/team` invocation therefore reuses the existing seams, in preference
|
|
135
|
+
order:
|
|
136
|
+
|
|
137
|
+
1. **Through the transport** — construct `OpenAICliClient` with
|
|
138
|
+
`max_calls_per_day: <ai_team.max_calls_per_day>`; the gate, the
|
|
139
|
+
exhausted-error, the events-log line, and the increment all come for
|
|
140
|
+
free.
|
|
141
|
+
2. **Direct** (for `/team:status` rendering or a pre-flight check) —
|
|
142
|
+
`load_cli_call_counts()['openai'] ?? 0` to read,
|
|
143
|
+
`record_cli_call('openai')` to count. No new helper exists because
|
|
144
|
+
none is needed; adding a team-side duplicate of this counter is a
|
|
145
|
+
contract violation.
|
|
146
|
+
|
|
147
|
+
`ai_team.max_calls_per_day` and the council's
|
|
148
|
+
`cli_call_budget.max_calls_per_day.openai` are two *ceilings* over the
|
|
149
|
+
same *counter*: whichever path a call takes, it increments the one shared
|
|
150
|
+
bucket, and each surface enforces its own configured cap against that
|
|
151
|
+
shared count.
|
|
152
|
+
|
|
153
|
+
**Worked example — two ceilings, one counter.** Council ceiling
|
|
154
|
+
`cli_call_budget.max_calls_per_day.openai: 100`, team ceiling
|
|
155
|
+
`ai_team.max_calls_per_day: 50`, shared counter at 45 openai calls today:
|
|
156
|
+
both paths are open. Five team calls later the counter reads 50 — team
|
|
157
|
+
calls are now blocked (50 >= 50) while council CLI calls continue until
|
|
158
|
+
the counter reaches 100. Whichever path fires a call, the same counter
|
|
159
|
+
moves; each surface only decides where *its* ceiling sits on that shared
|
|
160
|
+
count. `/team status` renders exactly this state: the live counter, both
|
|
161
|
+
ceilings, and which path (if any) is currently blocked.
|
|
162
|
+
|
|
163
|
+
### Team-review envelope
|
|
164
|
+
|
|
165
|
+
Every `/team:review` return — plugin path and multi-host fallback alike — is emitted in the
|
|
166
|
+
team-review status envelope (`src/skills/subagent-orchestration/schemas/team-review-status.json`),
|
|
167
|
+
which extends the `subagent-status.json` frame: `status` (`DONE | DONE_WITH_CONCERNS |
|
|
168
|
+
NEEDS_CONTEXT | BLOCKED`), `findings[]` (`severity`/`evidence`/`suggested_fix`/`location?`),
|
|
169
|
+
`reviewed_ref` (HEAD sha of the bundle), `model` (`'auto'` = codex CLI default), and
|
|
170
|
+
`quota` (`{used, ceiling}` on the shared `cli_call_budget` openai bucket); unparseable model
|
|
171
|
+
output is preserved verbatim in `raw` with status `DONE_WITH_CONCERNS` — never silently dropped.
|
|
172
|
+
Plugin text is summarized INTO the envelope and preserved verbatim beneath — never rewritten.
|
|
173
|
+
<!-- PLACEHOLDER: the team-review-envelope subsection (review-gate ledger
|
|
174
|
+
line format `team.gate: BLOCK n/N` read by /team status) is inserted
|
|
175
|
+
here by the orchestrator in a later step. Do not remove this marker. -->
|
|
176
|
+
|
|
177
|
+
## Validation rules (fail-closed)
|
|
178
|
+
|
|
179
|
+
`load_ai_team_config` / `build_ai_team_config`
|
|
180
|
+
(`src/scripts/ai_team/config.ts`) raise `TeamConfigError` when:
|
|
181
|
+
|
|
182
|
+
1. `ai_team` is present but not a mapping,
|
|
183
|
+
2. any **unknown key** appears under `ai_team` (a typo must never
|
|
184
|
+
silently disable a gate),
|
|
185
|
+
3. `enabled` / `allow_delegate` / `suppress_setup_hint` is not a boolean,
|
|
186
|
+
4. `model` is not a non-empty string,
|
|
187
|
+
5. `max_calls_per_day` is not a non-negative integer (booleans rejected).
|
|
188
|
+
|
|
189
|
+
An **absent** `ai_team` block is not an error — it yields the defaults
|
|
190
|
+
(`AI_TEAM_DEFAULTS`) and the feature stays off.
|
|
191
|
+
|
|
192
|
+
## Default-off posture
|
|
193
|
+
|
|
194
|
+
Every team-mode capability is default-off. With the block absent or
|
|
195
|
+
`enabled: false`, all paths are byte-identical to pre-feature behavior:
|
|
196
|
+
no command suggestions, no wrapper execution, no quota consumption, no
|
|
197
|
+
wizard nagging beyond the single suppressible setup hint.
|
|
198
|
+
`/team:delegate` is doubly gated (`enabled` AND `allow_delegate`).
|
|
199
|
+
|
|
200
|
+
## No-claims constraint
|
|
201
|
+
|
|
202
|
+
No public claim about cross-model review quality ("a second model finds
|
|
203
|
+
errors the first never sees", "two strongest models catch each other's
|
|
204
|
+
errors", or any review-lift assertion) may exist anywhere in the tree
|
|
205
|
+
until the pre-registered three-arm defect-finding benchmark has produced
|
|
206
|
+
a verdict bound in CLAIMS.md. Workflow-value prose is allowed; lift
|
|
207
|
+
claims are not. An honest null keeps the feature documented as workflow
|
|
208
|
+
value only.
|
|
209
|
+
|
|
210
|
+
## Boundary vs. the council
|
|
211
|
+
|
|
212
|
+
Team mode and the council are complements, not variants — the council's
|
|
213
|
+
neutrality contract is untouched by team mode:
|
|
214
|
+
|
|
215
|
+
| Axis | Council ([ai-council-config.md](ai-council-config.md)) | Team (`ai_team`) |
|
|
216
|
+
|---|---|---|
|
|
217
|
+
| Shape | N members, breadth | One strong reviewer, depth |
|
|
218
|
+
| Repo access | NEVER (artefact text + neutral preamble only) | Full (reviewer runs inside the working tree) |
|
|
219
|
+
| Config location | User-global `.ai-council.yml` (ADR-104) | Project `.agent-settings.yml` cascade |
|
|
220
|
+
| Default models | Mid-tier, cost-conscious | Subscription's strongest (`model: 'auto'`) |
|
|
221
|
+
| Quota | `cli_call_budget` per provider | Same counter — shared openai bucket |
|
|
222
|
+
|
|
223
|
+
This link is deliberately one-directional (team → council); the council
|
|
224
|
+
contract does not reference team mode.
|
|
@@ -45,6 +45,7 @@ column 1 of this table.
|
|
|
45
45
|
| `council` | 3 | `default` · `pr` · `design` · `optimize` · `analysis` | `council` (legacy default lens) · `council-pr` · `council-design` · `council-optimize`; `analysis` added 2026-05-14 — wrapper for local analysis outputs with a Top-N consensus tail block consumed by `/roadmap create` |
|
|
46
46
|
| `challenge-me` | — | `vision` · `with-docs` | new — Pocock-inspired one-question-at-a-time interview; `vision` is the standard 95%-confidence variant, `with-docs` adds doc/glossary awareness with a session-scoped glossary and load-bearing claim-vs-code verification |
|
|
47
47
|
| `research` | 2 | `deep` · `report` | preliminary-research scaffolder ported from `Weizhena/Deep-Research-skills` (cluster head emits `outline.yaml` + `fields.yaml` against the `research-schema` contract). `:deep` populates per-item JSON in batches with native web-search + JSON-Schema self-validation (no Python runtime); `:report` renders `report.md` directly + optionally emits a `jq` template for deterministic regeneration. `add-items` / `add-fields` intentionally **not** ported — re-run `/research <topic>` to extend the field framework. |
|
|
48
|
+
| `team` | 2 | `review` · `adversarial` · `delegate` · `status` | new 2026-07-12 (road-to-team-mode Phase 2) — cross-model depth review: thin fail-closed delegations to the official codex plugin on Claude-Code hosts under `ai_team` governance ([`ai-team-config`](ai-team-config.md)); default-off (`ai_team.enabled: false`), `delegate` behind the second opt-in `allow_delegate`; internal visibility until the ADR promotion gate |
|
|
48
49
|
| `orchestrate` | — | _(none yet — cluster head only)_ | new — runtime executor for YAML pipelines under `.agent-config/orchestrations/` per the [`orchestration-dsl-v1`](orchestration-dsl-v1.md) contract; chains personas / skills / commands / sub-agents deterministically. Single cluster head; sub-commands deferred until a second verb is needed. |
|
|
49
50
|
| `sync` | 4 | `agent-settings` · `gitignore` · `gitignore-fix` | new cluster 2026-07-08 — absorbs the former single-sub `sync-gitignore` cluster (slug-neutral nests: `sync-agent-settings`, `sync-gitignore`, `sync-gitignore-fix` keep their slugs; the gitignore node keeps its own `fix` sub-dir, mirroring the `agents/user` deep-nest precedent). Bare `/sync` shows the menu. |
|
|
50
51
|
| `ghostwriter` | — | `fetch` · `write` · `list` · `show` · `delete` | new cluster 2026-05-15 — third voice primitive for AI-assisted writing in the public voice of a public figure. Hybrid storage: real-person profiles live consumer-side under `agents/reference/ghostwriter/<slug>.md` (gitignored by default); package source ships only `fictional: true` fixtures. Zero network code in the package — `:fetch` delegates web-fetch / web-search to the host agent. Mandatory disclosure footer on every `:write` output (no opt-out). Schema: [`ghostwriter-schema`](ghostwriter-schema.md). |
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Pre-Launch Diagnostics — finding IDs, epistemics, regression gate
|
|
2
|
+
|
|
3
|
+
> Contract for the consumer-facing launch diagnostic
|
|
4
|
+
> (road-to-ecosystem-harvest-prelaunch-diagnostics, Source L — a
|
|
5
|
+
> production-readiness diagnostic skill; provenance in the harvest index).
|
|
6
|
+
> The consumer-side sibling of the suite's own claims-ledger: a "ready"
|
|
7
|
+
> verdict cannot be reached by assertion.
|
|
8
|
+
>
|
|
9
|
+
> Schema: [`prelaunch-report.schema.json`](../../src/scripts/schemas/prelaunch-report.schema.json) ·
|
|
10
|
+
> Area vocabulary: [`prelaunch-areas.yml`](../../src/config/prelaunch-areas.yml) ·
|
|
11
|
+
> Tooling: [`prelaunch_diagnostics.ts`](../../src/scripts/prelaunch_diagnostics.ts) ·
|
|
12
|
+
> Skill surface: [`launch-readiness`](../../src/skills/launch-readiness/SKILL.md).
|
|
13
|
+
|
|
14
|
+
## 1 — Finding-ID grammar (immutable, diff-stable)
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
AC-<AREA>-NNN e.g. AC-AUTH-003, AC-RBK-001
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- `<AREA>` — the uppercase code of a coverage area from
|
|
21
|
+
[`prelaunch-areas.yml`](../../src/config/prelaunch-areas.yml). The vocabulary
|
|
22
|
+
is **append-only**: codes are never renamed or re-used.
|
|
23
|
+
- `NNN` — zero-padded, monotonically assigned per area, **never re-assigned**.
|
|
24
|
+
A finding that is retitled, re-scoped, or resolved keeps its ID forever; a
|
|
25
|
+
genuinely new problem gets the next number. Resolved findings stay in the
|
|
26
|
+
report with a flipped `status` — the entry never disappears, so baselines
|
|
27
|
+
diff cleanly across months.
|
|
28
|
+
- The **ID is the diff key**. Titles, evidence, and severity are mutable
|
|
29
|
+
metadata; two runs are compared by ID set + per-ID state, never by prose.
|
|
30
|
+
|
|
31
|
+
## 2 — Epistemics (Pass needs evidence; Unknown ≠ Pass)
|
|
32
|
+
|
|
33
|
+
Every coverage area carries exactly one state:
|
|
34
|
+
|
|
35
|
+
| State | Meaning | Requirement |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `pass` | Diagnosed clean | **Cited evidence required** — file:line, command output, run URL. A pass without evidence fails validation: that is assertion, not diagnosis. |
|
|
38
|
+
| `finding` | At least one open finding | The finding IDs live in `findings[]`. |
|
|
39
|
+
| `unknown` | Not diagnosed | The honest default. **Absence of findings is `unknown`, never an automatic `pass`.** An area missing from the report entirely is `unknown` by definition. |
|
|
40
|
+
| `not-applicable` | Does not exist on this surface | **Reason required** ("no DB → no migrations"). |
|
|
41
|
+
|
|
42
|
+
Verdict rule (the launch gate):
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
ANY OPEN P0 FINDING → NOT READY, REGARDLESS OF EVERY OTHER AREA.
|
|
46
|
+
ANY OPEN P1, OR A launch_gate AREA NOT AT pass/not-applicable → NOT READY.
|
|
47
|
+
READY IS THE RESIDUAL STATE, NEVER THE DEFAULT.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`launch_gate: true` areas (auth, migrations, secrets, rollback) block the
|
|
51
|
+
verdict while `unknown`; non-gate areas (observability, agent-governance)
|
|
52
|
+
surface as unknowns + questions but do not block alone.
|
|
53
|
+
|
|
54
|
+
## 3 — Coverage backbone
|
|
55
|
+
|
|
56
|
+
The area vocabulary is deliberately pruned to the stacks this suite targets:
|
|
57
|
+
**auth · migrations · secrets · observability · rollback · agent-governance**.
|
|
58
|
+
It is not a generic compliance matrix — new areas enter by appending to
|
|
59
|
+
`prelaunch-areas.yml` with a maintainer-reviewed `launch_gate` decision.
|
|
60
|
+
|
|
61
|
+
Every report may carry a `questions` list — **questions that would change the
|
|
62
|
+
diagnosis** ("is the admin panel exposed on the same origin?"). Questions are
|
|
63
|
+
the actionable rendering of unknowns; the next run should convert them into
|
|
64
|
+
evidence or findings.
|
|
65
|
+
|
|
66
|
+
## 4 — Regression gate (findings diff)
|
|
67
|
+
|
|
68
|
+
`prelaunch_diagnostics.ts diff <baseline.json> <current.json>` compares two
|
|
69
|
+
reports **by ID**:
|
|
70
|
+
|
|
71
|
+
- **new** — ID in current, not in baseline.
|
|
72
|
+
- **resolved** — open in baseline, `fixed` in current.
|
|
73
|
+
- **regressed** — a `launch_gate` area that was `pass` in the baseline and is
|
|
74
|
+
`finding`/`unknown` in current (Pass→Finding flip).
|
|
75
|
+
- **retitled findings do not appear in the diff** — the ID survives the
|
|
76
|
+
rename (acceptance-tested).
|
|
77
|
+
|
|
78
|
+
`--ci` mode exits non-zero when the diff contains a **new open P0/P1** or a
|
|
79
|
+
**Pass→Finding flip in a launch-gate area** — the consumer-side sibling of the
|
|
80
|
+
suite's claims-ledger CI. Everything else (new P2/P3, resolved findings,
|
|
81
|
+
question churn) reports informationally and exits 0.
|
|
82
|
+
|
|
83
|
+
## 5 — Suppression (evidence-backed, never silent)
|
|
84
|
+
|
|
85
|
+
A consumer may suppress a finding via the project-local suppression file
|
|
86
|
+
`agents/settings/prelaunch-suppressions.yml`:
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
schema_version: prelaunch-suppressions-v1
|
|
90
|
+
suppressions:
|
|
91
|
+
- id: AC-OBS-002
|
|
92
|
+
reason: "Dashboards land with the Q3 observability epic; alerting for the launch path exists."
|
|
93
|
+
evidence: "agents/evidence/prelaunch/obs-alerting.png"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
- A finding with `status: suppressed-with-evidence` MUST have a matching
|
|
97
|
+
suppression entry carrying **both** `reason` and `evidence` — validation
|
|
98
|
+
fails otherwise.
|
|
99
|
+
- Suppressed findings are excluded from the `--ci` triggers but **render in a
|
|
100
|
+
collapsible "suppressed" section** of the report output — the same
|
|
101
|
+
transparency contract as the review cluster's dropped-false-positives list.
|
|
102
|
+
Suppression hides nothing; it moves the item behind a fold with its receipt.
|
|
103
|
+
- Suppressing a P0 does not restore a ready verdict — P0 caps the verdict
|
|
104
|
+
regardless (§ 2).
|
|
105
|
+
|
|
106
|
+
## 6 — Consumer recipe (opt-in CI gating)
|
|
107
|
+
|
|
108
|
+
1. Run the diagnostic (via `launch-readiness` § epistemics) and save the
|
|
109
|
+
report to `agents/evidence/prelaunch/baseline.json`. Commit it.
|
|
110
|
+
2. Before a launch, produce a fresh `current.json` and run
|
|
111
|
+
`prelaunch_diagnostics.ts diff baseline.json current.json --ci` in the
|
|
112
|
+
pipeline — red on a new P0/P1 or a launch-gate Pass→Finding flip.
|
|
113
|
+
3. After the launch settles, promote `current.json` to the new committed
|
|
114
|
+
baseline (a reviewed diff, like any lockfile bump).
|
|
115
|
+
|
|
116
|
+
## 7 — Fix-loop discipline (Phase 3)
|
|
117
|
+
|
|
118
|
+
- Rank open findings by severity, then by launch-gate membership.
|
|
119
|
+
- Propose the **safest first approval batch** — explicitly the first *safe*
|
|
120
|
+
batch (reversible, small blast radius), not the full backlog. Approval is
|
|
121
|
+
the user's; the diagnostic never self-authorizes fixes
|
|
122
|
+
([`autonomous-execution`](../../src/rules/autonomous-execution.md) and the
|
|
123
|
+
reversibility floor govern, unrestated).
|
|
124
|
+
- Per-finding status vocabulary (schema-enforced): `open · fixed ·
|
|
125
|
+
accepted-risk · deferred-with-reason · suppressed-with-evidence ·
|
|
126
|
+
not-applicable` — everything except open/fixed carries a `reason`.
|
|
127
|
+
- **Rescore whenever evidence changes** — a fix, a new probe, or an answered
|
|
128
|
+
question re-runs the affected area, never the memory of it.
|
|
129
|
+
|
|
130
|
+
## 8 — Read-only guarantee
|
|
131
|
+
|
|
132
|
+
The diagnostic **never mutates a consumer project**: the tooling reads
|
|
133
|
+
reports and writes nothing outside its own output. Fixes flow through the
|
|
134
|
+
normal approval-gated engines, not through this contract.
|
|
135
|
+
|
|
136
|
+
## 9 — Score: council-locked (do not add)
|
|
137
|
+
|
|
138
|
+
The pass-1 council **dropped the 0–100 readiness score** (gameable false
|
|
139
|
+
precision). A severity-capped, never-published internal-ordering variant is
|
|
140
|
+
**surfaced for council re-evaluation in the roadmap's revisit note — not
|
|
141
|
+
adopted**. Until that revisit resolves: no numeric score field in the schema,
|
|
142
|
+
no score in any rendered output, no score in CI messages. The ID scheme,
|
|
143
|
+
epistemics, diff gate, and suppression above stand on their own.
|
|
144
|
+
|
|
145
|
+
## See also
|
|
146
|
+
|
|
147
|
+
- [`launch-readiness`](../../src/skills/launch-readiness/SKILL.md) — the skill
|
|
148
|
+
surface that produces the report.
|
|
149
|
+
- [`docs/proof.md`](../proof.md) — the suite-side claims-ledger this mirrors.
|
|
150
|
+
- `road-to-ecosystem-harvest-reliability-measurement` (archived) — measures the
|
|
151
|
+
*suite itself*; this contract measures the *consumer's launch surface*.
|
|
@@ -81,6 +81,7 @@ the feature-PR floor by adding:
|
|
|
81
81
|
| `release-validation.yml` (Phase B) | `changelog-entry` | CHANGELOG carries an entry matching the head-branch version |
|
|
82
82
|
| `release-validation.yml` (Phase B) | `version-consistency` | `package.json` / `marketplace.json` / pack manifests agree on the version |
|
|
83
83
|
| `consumer-matrix.yml` | `consumer-matrix` · `publish-dry-run` · `mcp-worker-dry-run` · `plugin-bootstrap` | pack-based consumer E2E + pre-tag dry-runs of the release-adjacent workflows — see the exemption note below |
|
|
84
|
+
| (maintainer-local) | `task smoke-host-loadability REQUIRE=1` | real-host loadability — `claude plugin validate` + temp-home plugin install + metadata cross-consistency (marketplace ↔ plugin dirs ↔ docs). Optional in CI (runners lack the claude CLI, the step self-skips); **required before a release is cut** — `REQUIRE=1` turns a missing CLI into a failure |
|
|
84
85
|
|
|
85
86
|
## Consumer-matrix exemption — the tarball window
|
|
86
87
|
|
|
@@ -44,7 +44,9 @@ filtered** to a small curated set (`MERGEABLE_KEYS` = `name`, `ide`,
|
|
|
44
44
|
ignored. `ai_council` is not on the whitelist, and council configuration lives
|
|
45
45
|
project-local in `agents/settings/.ai-council.yml` (per
|
|
46
46
|
[`ai-council-config`](../contracts/ai-council-config.md), the Phase-0 single
|
|
47
|
-
source of truth).
|
|
47
|
+
source of truth). <!-- Council placement superseded by ADR-104: the config is
|
|
48
|
+
now user-global only (`~/.event4u/agent-config/settings/.ai-council.yml`),
|
|
49
|
+
never project-local. The trust-boundary reasoning below is unaffected. -->
|
|
48
50
|
|
|
49
51
|
The maintainer questioned whether that project-local placement is a bug. The AI
|
|
50
52
|
council was asked to decide and **converged** that it is **not** a bug — the
|
|
@@ -72,6 +74,12 @@ personas, rule tier) **belongs in version control**, and onboarding stays clean
|
|
|
72
74
|
for council config is `agents/settings/.ai-council.yml`
|
|
73
75
|
([`ai-council-config`](../contracts/ai-council-config.md)); personas live in
|
|
74
76
|
the project surface. Neither is a user-global concern.
|
|
77
|
+
<!-- Superseded for the COUNCIL part by ADR-104: council config is now
|
|
78
|
+
user-global only, never project-local (personas are unaffected). -->
|
|
79
|
+
**Update (ADR-104):** the council half of this decision was reversed — the
|
|
80
|
+
council config now lives user-global only
|
|
81
|
+
(`~/.event4u/agent-config/settings/.ai-council.yml`) and the project tree is
|
|
82
|
+
never read. Personas stay project-local as stated.
|
|
75
83
|
|
|
76
84
|
3. **Only secrets and the curated identity whitelist are global.** Provider API
|
|
77
85
|
keys already live global in `~/.event4u/agent-config/<provider>.key` (0600);
|
package/docs/featured-skills.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Featured Skills
|
|
2
2
|
|
|
3
|
-
A curated subset of the
|
|
3
|
+
A curated subset of the 274 skills. Three tiers, one per primary audience. Full catalog lives in [`dist/agent-src/skills/`](../dist/agent-src/skills/); see also [`docs/catalog.md`](catalog.md) for the complete index and [`docs/featured-commands.md`](featured-commands.md) for command-level highlights.
|
|
4
4
|
|
|
5
5
|
> **Eval-gated messaging note.** Until `task bench --corpus non-dev` reports `selection_accuracy >= 0.60` (see `road-to-product-adoption.md` Phase 1), this page is documentation, not marketing. The entries below are the candidates the corpus tests against; their description quality is what the eval validates.
|
|
6
6
|
|
|
@@ -92,4 +92,4 @@ task lint-featured-skills
|
|
|
92
92
|
|
|
93
93
|
CI runs this in `taskfiles/ci-fast.yml`. Stale entries (renamed / removed skill or command) fail the build. See [`scripts/lint_featured_skills.py`](../src/scripts/lint_featured_skills.py) for the matcher.
|
|
94
94
|
|
|
95
|
-
→ Browse all
|
|
95
|
+
→ Browse all 274 skills: [`dist/agent-src/skills/`](../dist/agent-src/skills/) · all 183 commands: [`dist/agent-src/commands/`](../dist/agent-src/commands/)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Pick the entry that matches what you do day-to-day. Each section names the three skills you will reach for first and shows whether MCP (no terminal) or CLI (terminal) is the simpler install path for that role.
|
|
4
4
|
|
|
5
|
-
`agent-config` ships
|
|
5
|
+
`agent-config` ships 274 skills, 104 governed rules, and 183 commands. You do not need all of them. Each role below filters to the slice that pays back in week one; the rest stays available and shows up on demand when a task references it.
|
|
6
6
|
|
|
7
7
|
> **Taglines at a glance →** [`docs/role-experiences.md`](role-experiences.md) — the one-line pitch per role experience, in one table.
|
|
8
8
|
|
|
@@ -73,6 +73,8 @@ Cinematic-blueprint approach: the agent expands your script into a 12-block scen
|
|
|
73
73
|
- [`nextjs-patterns`](../dist/agent-src/skills/nextjs-patterns/SKILL.md) — App Router, Server Components, Server Actions, caching.
|
|
74
74
|
- [`quality-tools`](../dist/agent-src/skills/quality-tools/SKILL.md) — PHPStan, Rector, ECS error triage and fix loop.
|
|
75
75
|
|
|
76
|
+
Cross-model review of the real diff (**team mode**, default off) is documented in [Getting Started § Team mode](getting-started.md#team-mode--cross-model-review-default-off).
|
|
77
|
+
|
|
76
78
|
**Install path:** **CLI.** Run `npx @event4u/agent-config init --tools=claude-code,cursor` in the project root. MCP works too but loses git / file-system tooling that the IDE-integrated path gives you.
|
|
77
79
|
|
|
78
80
|
---
|