@event4u/agent-config 9.0.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +22 -204
  3. package/MIGRATION.md +14 -0
  4. package/README.md +2 -2
  5. package/dist/agent-src/commands/explain-run.md +88 -0
  6. package/dist/agent-src/commands/implement-ticket.md +2 -0
  7. package/dist/agent-src/commands/pr/create/description-only.md +138 -8
  8. package/dist/agent-src/commands/pr/create.md +16 -5
  9. package/dist/agent-src/commands/review/changes.md +22 -0
  10. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +41 -6
  11. package/dist/agent-src/contexts/execution/verify-budget.md +15 -0
  12. package/dist/agent-src/rules/cross-source-consistency.md +92 -0
  13. package/dist/agent-src/rules/delegation-policy.md +1 -1
  14. package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -0
  15. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  16. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +146 -0
  17. package/dist/agent-src/skills/llm-provider-knowledge/evals/triggers.json +20 -0
  18. package/dist/agent-src/skills/po-discovery/SKILL.md +2 -0
  19. package/dist/agent-src/skills/refine-ticket/SKILL.md +7 -0
  20. package/dist/agent-src/skills/roadmap-writing/SKILL.md +14 -0
  21. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +26 -5
  22. package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +18 -0
  23. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +14 -2
  24. package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +79 -0
  25. package/dist/agent-src/skills/subagent-orchestration/schemas/adversarial-findings.json +56 -0
  26. package/dist/agent-src/skills/token-optimizer/SKILL.md +10 -4
  27. package/dist/agent-src/templates/agent-settings.md +28 -0
  28. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  29. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +4 -1
  30. package/dist/discovery/deprecation-report.md +1 -1
  31. package/dist/discovery/discovery-manifest.json +105 -28
  32. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  33. package/dist/discovery/discovery-manifest.summary.md +5 -5
  34. package/dist/discovery/orphan-report.md +1 -1
  35. package/dist/discovery/packs.json +16 -12
  36. package/dist/discovery/trust-report.md +8 -8
  37. package/dist/discovery/workspaces.json +12 -8
  38. package/dist/install/install.mjs +47 -31
  39. package/dist/mcp/registry-manifest.json +3 -3
  40. package/dist/router.json +1 -1
  41. package/dist/scripts/_lib/agent_settings.js +4 -1
  42. package/dist/scripts/_lib/agent_settings.js.map +1 -1
  43. package/dist/server/schemas/settings.js +10 -0
  44. package/dist/server/schemas/settings.js.map +1 -1
  45. package/docs/CLAIMS.md +10 -3
  46. package/docs/MIGRATION.md +20 -0
  47. package/docs/architecture.md +4 -4
  48. package/docs/archive/CHANGELOG-pre-9.2.0.md +276 -0
  49. package/docs/benchmark.md +24 -0
  50. package/docs/command-flows.md +1 -1
  51. package/docs/contracts/agents-layout.md +1 -1
  52. package/docs/contracts/consumer-bridge.md +55 -63
  53. package/docs/contracts/install-layout.md +1 -1
  54. package/docs/contracts/migrate-command.md +1 -1
  55. package/docs/customization.md +22 -1
  56. package/docs/decisions/ADR-020-global-only-consumer-scope.md +34 -0
  57. package/docs/decisions/ADR-122-adversarial-verification-council.md +136 -0
  58. package/docs/decisions/INDEX.md +1 -0
  59. package/docs/design/adversarial-council-eval.md +106 -0
  60. package/docs/featured-skills.md +2 -2
  61. package/docs/getting-started-by-role.md +1 -1
  62. package/docs/getting-started.md +2 -2
  63. package/docs/governance-advantage.md +1 -1
  64. package/docs/guidelines/agent-infra/api-cost-levers.md +126 -0
  65. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  66. package/docs/installation.md +2 -1
  67. package/docs/maintainers/dev-mode.md +3 -2
  68. package/docs/proof.md +7 -7
  69. package/package.json +1 -1
  70. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +4 -1
  71. package/src/config/agent-settings.template.yml +81 -0
  72. package/src/config/gitignore-block.txt +16 -6
  73. package/src/scripts/_cli/cmd_conformance.ts +2 -2
  74. package/src/scripts/_cli/cmd_doctor.ts +162 -13
  75. package/src/scripts/_cli/cmd_refresh.ts +35 -118
  76. package/src/scripts/_lib/adversarial_council_gate.test.ts +112 -0
  77. package/src/scripts/_lib/adversarial_council_gate.ts +98 -0
  78. package/src/scripts/_lib/adversarial_reconcile.test.ts +197 -0
  79. package/src/scripts/_lib/adversarial_reconcile.ts +187 -0
  80. package/src/scripts/_lib/agent_settings.ts +4 -1
  81. package/src/scripts/_lib/verify_budget.ts +4 -1
  82. package/src/scripts/ai_council/clients.ts +68 -6
  83. package/src/scripts/ai_council/pricing.ts +62 -0
  84. package/src/scripts/council_cli.ts +19 -3
  85. package/src/scripts/install.ts +44 -45
  86. package/src/scripts/lint_agents_layout.ts +10 -4
  87. package/src/scripts/lint_breaking_changes_index.ts +303 -0
  88. package/src/scripts/mcp_server/tools.ts +1 -3
  89. package/src/scripts/schemas/agent-settings.schema.json +28 -0
  90. package/src/scripts/self_review_gate.test.ts +11 -0
  91. package/src/scripts/self_review_gate.ts +7 -1
  92. package/src/scripts/skill_eval_coverage.ts +4 -1
  93. package/src/server/schemas/settings.ts +24 -0
@@ -1,6 +1,6 @@
1
1
  # Subagent dispatch prompts
2
2
 
3
- One file per mode in [`SKILL.md`](../SKILL.md) § *The seven modes*. Each
3
+ One file per mode in [`SKILL.md`](../SKILL.md) § *The nine modes*. Each
4
4
  prompt is the **literal template** the orchestrator hands to the
5
5
  subagent on dispatch — externalized so prompt edits do not bloat the
6
6
  skill above the 400-line sunset trigger.
@@ -14,6 +14,7 @@ skill above the 400-line sunset trigger.
14
14
  | do-competitively | [`do-competitively.md`](do-competitively.md) |
15
15
  | judge-with-debate | [`judge-with-debate.md`](judge-with-debate.md) |
16
16
  | do-in-worktrees | [`do-in-worktrees.md`](do-in-worktrees.md) |
17
+ | adversarial-verification-council | [`adversarial-verification-council.md`](adversarial-verification-council.md) |
17
18
 
18
19
  ## Contract
19
20
 
@@ -33,8 +34,19 @@ hits (Anthropic `cache_control: ephemeral`) across the cohort — the prefix is
33
34
  cached after the first sibling and served from cache for the rest, cutting
34
35
  input-token cost proportionally to cohort size.
35
36
 
37
+ **Break-even + failure modes.** A cache write costs ~1.25× the base input rate
38
+ (5-min TTL); a read costs ~0.1×. So the prefix pays off once **≥ 2** siblings
39
+ read it — a lone subagent with no sibling reuse only pays the write premium and
40
+ saves nothing. The cache is a **byte-exact prefix match**: any drift in the
41
+ shared prefix (a timestamp, a per-sibling id, reordered text) forces a re-write
42
+ instead of a read, and the prefix must be re-hit within the **5-minute TTL**, so
43
+ dispatch siblings promptly rather than trickling them. This is why the win is
44
+ real for **fan-out** (many siblings, one prefix) and marginal for one-shot
45
+ dispatch. Verify a cohort is actually reading, not re-writing, by checking
46
+ `usage.cache_read_input_tokens > 0` on the 2nd+ sibling.
47
+
36
48
  ## Loading
37
49
 
38
50
  `tests/test_subagent_prompt_loading.py` asserts that every mode named
39
- in `SKILL.md` § *The seven modes* has a loadable prompt file under this
51
+ in `SKILL.md` § *The nine modes* has a loadable prompt file under this
40
52
  directory and that each prompt mentions all four status enum values.
@@ -0,0 +1,79 @@
1
+ # Prompt — adversarial-verification-council
2
+
3
+ Mode reference: [`../SKILL.md`](../SKILL.md) § *9. adversarial-verification-council*.
4
+ Contract: ADR-122. Advisory only — the panel finds defects, it never gates the
5
+ change.
6
+
7
+ ## Skeptic prompt (run N times in parallel, one per DISTINCT model)
8
+
9
+ Each skeptic runs on a different model (cross-model Iron Law; cross-*vendor* for
10
+ the high-risk tier). Assign each skeptic one or more `judge-*` lenses as its
11
+ *checklist* — the lens says WHAT to examine; this prompt sets the adversarial
12
+ HOW (find breakage, not confirm correctness).
13
+
14
+ ```
15
+ You are SKEPTIC {{skeptic_id}} red-teaming a real, already-verified change.
16
+ Other skeptics on different models review the same change independently. Your
17
+ job is to BREAK it — find defects a first-pass review would miss.
18
+
19
+ POSTURE: adversarial. Assume the change is subtly wrong until you have looked.
20
+ Do NOT reach for "looks fine". Disagreement across skeptics IS the value.
21
+ If a judge lens you apply has a self-refutation/severity-calibration step, use
22
+ it ONLY to calibrate your OWN findings' severity — it never suppresses a defect
23
+ another skeptic might catch (cross-model quorum, not self-censorship).
24
+
25
+ LENS(ES): {{judge_lenses}} # e.g. judge-bug-hunter, judge-security-auditor
26
+ TASK: {{task_description}}
27
+ DIFF: {{diff}}
28
+ TEST OUTPUT: {{test_output}}
29
+ VERIFY CONTEXT: {{prior_verification}} # what the first-pass judge already passed
30
+
31
+ Look hardest at what survives a competent first pass: cross-file interaction
32
+ effects, subtle logic inversions that read as plausible, security masked by
33
+ correct-looking patterns, edge cases in complex state, missing invisible
34
+ controls (authz/tenant/validation), hollow or stubbed implementations.
35
+
36
+ RETURN — two blocks:
37
+
38
+ 1) A status envelope (schemas/subagent-status.json): status=DONE with
39
+ evidence[] summarizing what you examined; DONE_WITH_CONCERNS / BLOCKED /
40
+ NEEDS_CONTEXT per the taxonomy.
41
+
42
+ 2) A fenced ```json block: an array of findings, each:
43
+ {"severity":"critical|high|medium|low",
44
+ "category":"correctness|security|test-coverage|quality|injection|completeness|...",
45
+ "location":"file:line",
46
+ "description":"what breaks and why"}
47
+ Empty array [] if you genuinely found nothing — do NOT invent findings to
48
+ look busy (false positives are measured against you).
49
+
50
+ OPTIONAL "refutes": if you examined a specific location+category and are
51
+ confident it is NOT a defect, add:
52
+ {"refutes":["<file:line>::<category-lowercased>", ...]}
53
+ Only refute what you actually examined.
54
+
55
+ NAME ONE FAILURE MODE you actively looked for, even if you did not find it.
56
+ ```
57
+
58
+ ## Reconciliation (deterministic — NOT an LLM step)
59
+
60
+ The orchestrator feeds every skeptic's findings array (+ any `refutes`) to
61
+ [`_lib/adversarial_reconcile.ts`](../../scripts/_lib/adversarial_reconcile.ts)
62
+ `reconcileFindings([...])`. That pure function:
63
+
64
+ - dedups by `location::category`, strict-er severity wins;
65
+ - records `raised_by[]` (provenance) and `refuted_by[]`;
66
+ - sets `confidence` (high = corroborated by a panel quorum);
67
+ - demotes a lone finding refuted by a strict majority of the rest into
68
+ `false_positives_suppressed[]` (never dropped).
69
+
70
+ Output is one `adversarial-findings.json` envelope, findings-by-severity. It is
71
+ **presented to the human as advisory** — the mode never accepts/rejects or gates
72
+ the change.
73
+
74
+ ## Gated-only rule
75
+
76
+ `adversarial-verification-council` is N-skeptics = N+ subagent calls (cross-vendor
77
+ adds external spend). Runs only when `subagents.adversarial_council != off` AND
78
+ the change is explicitly high-risk (security, tenant, migration, public API).
79
+ Routine changes use `do-and-judge`; go/no-go decisions use `judge-with-debate`.
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft-07/schema#",
3
+ "$id": "https://event4u.dev/agent-config/schemas/adversarial-findings.json",
4
+ "title": "Adversarial Findings Envelope",
5
+ "description": "Reconciled output of the adversarial-verification-council mode (subagent-orchestration Mode 9). A model-diverse skeptic panel red-teams a real, already-verified change; each skeptic returns findings; reconciliation (src/scripts/_lib/adversarial_reconcile.ts) dedups them into this envelope with per-finding provenance and a cross-model confidence signal. ADVISORY ONLY — never gates a change (Hard Floor). Hand-validated by adversarial_reconcile.test.ts (no jsonschema runtime dep).",
6
+ "type": "object",
7
+ "required": ["panel", "findings", "false_positives_suppressed"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "panel": {
11
+ "type": "object",
12
+ "required": ["models", "skeptic_count"],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "models": {
16
+ "type": "array",
17
+ "minItems": 1,
18
+ "items": {"type": "string", "minLength": 1},
19
+ "description": "Distinct model ids of the skeptics. For the registered claim + high-risk tier these are cross-vendor (provider-level diversity)."
20
+ },
21
+ "skeptic_count": {
22
+ "type": "integer",
23
+ "minimum": 1,
24
+ "description": "Number of skeptics on the panel (== models.length)."
25
+ }
26
+ }
27
+ },
28
+ "findings": {
29
+ "type": "array",
30
+ "description": "Surviving findings, most-severe first. Advisory — a human decides what is actionable.",
31
+ "items": {"$ref": "#/definitions/finding"}
32
+ },
33
+ "false_positives_suppressed": {
34
+ "type": "array",
35
+ "description": "Findings raised by one skeptic and refuted by a majority of the rest. Demoted here (not dropped) for auditability.",
36
+ "items": {"$ref": "#/definitions/finding"}
37
+ }
38
+ },
39
+ "definitions": {
40
+ "finding": {
41
+ "type": "object",
42
+ "required": ["id", "severity", "category", "location", "description", "raised_by", "refuted_by", "confidence"],
43
+ "additionalProperties": false,
44
+ "properties": {
45
+ "id": {"type": "string", "minLength": 1, "description": "Stable id, deterministic from the reconciled key order (avc-NNN)."},
46
+ "severity": {"type": "string", "enum": ["critical", "high", "medium", "low"], "description": "Most-severe severity among the skeptics that raised it (strict-er wins)."},
47
+ "category": {"type": "string", "minLength": 1, "description": "Defect class: correctness | security | test-coverage | quality | injection | completeness | ..."},
48
+ "location": {"type": "string", "minLength": 1, "description": "file:line (or the closest anchor the skeptic could give)."},
49
+ "description": {"type": "string", "minLength": 1, "description": "What the defect is and why it breaks."},
50
+ "raised_by": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}, "description": "Model ids that independently raised this finding — the provenance + corroboration signal."},
51
+ "refuted_by": {"type": "array", "items": {"type": "string", "minLength": 1}, "description": "Model ids that examined this finding and judged it NOT a defect."},
52
+ "confidence": {"type": "string", "enum": ["high", "medium", "low"], "description": "high = corroborated by a panel quorum; medium = corroborated below quorum (or lone raiser on a solo panel); low = single raiser on a multi-skeptic panel."}
53
+ }
54
+ }
55
+ }
56
+ }
@@ -64,10 +64,15 @@ INTENT
64
64
  │ → cite [agent-handoff](../../../.claude/skills/agent-handoff/SKILL.md)
65
65
  │ (structured handoff envelope; resume in fresh chat)
66
66
  │
67
- └── Cost-aware decision (model pick, budget, stop-criterion)
68
- → cite /cost:report (when shipped) — until then, fall back to
69
- [token-efficiency](../../rules/token-efficiency.md) and
70
- [direct-answers § Brevity by Default](../../rules/direct-answers.md)
67
+ ├── Cost-aware decision (model pick, budget, stop-criterion)
68
+ │ → cite /cost:report (when shipped) — until then, fall back to
69
+ │ [token-efficiency](../../rules/token-efficiency.md) and
70
+ │ [direct-answers § Brevity by Default](../../rules/direct-answers.md)
71
+ │
72
+ └── API-bill lever (stable prefix reused across calls · non-interactive
73
+ bulk cohort · model/effort pick against the paid Anthropic bill)
74
+ → cite [api-cost-levers](../../../docs/guidelines/agent-infra/api-cost-levers.md)
75
+ (prompt caching ~0.1x reads · Batch -50% · model tiering · effort)
71
76
  ```
72
77
 
73
78
  ## Catalog
@@ -81,6 +86,7 @@ INTENT
81
86
  | `direct-answers` | `.agent-src.uncondensed/rules/direct-answers.md` | `brevity`, `flattery`, `severity`, `tiered` | Iron-Law brevity floor (kernel) |
82
87
  | `markitdown` | upstream: github.com/microsoft/markitdown | `PDF`, `DOCX`, `HTML`, `convert` | Document → markdown converter (authoritative-link only) |
83
88
  | `/cost:report` | TBD — an internal roadmap (local-only) | `cost`, `model spend`, `budget` | Per-session cost telemetry (planned) |
89
+ | `api-cost-levers` | `docs/guidelines/agent-infra/api-cost-levers.md` | `cache`, `caching`, `batch`, `tiering`, `effort` | Anthropic billing levers: prompt caching, Batch API, model tiering, effort/output right-sizing |
84
90
 
85
91
  ## Output format
86
92
 
@@ -402,8 +402,31 @@ commands:
402
402
  # When `true`: show title and body in copyable code blocks and ask
403
403
  # for adjustments before creating the PR.
404
404
  # `/create-pr:description-only` always previews — that is its sole purpose.
405
+ #
406
+ # detail_level: verbosity tier of the PR Description body.
407
+ # min (default) = title + 2-3 sentence what/why/impact + linked ticket;
408
+ # med = min + grouped changes + tests note;
409
+ # max = med + how-to-test + edge cases + reviewer guidance.
410
+ # Critical info (breaking changes, migrations, security, rollback) is
411
+ # ALWAYS included at every tier — the tier governs explanatory depth only.
412
+ #
413
+ # api_examples (default true): add a fenced JSON example for API-endpoint
414
+ # changes ONLY when grounded in a real source (DTO/resource, OpenAPI,
415
+ # fixture, probe); else a one-line pointer, never an invented example.
416
+ #
417
+ # screenshots (default false): capability-gated frontend screenshots.
418
+ # true attempts capture only when the host has browser/preview tooling;
419
+ # emits a note and leaves the placeholder when absent — never blocks the PR.
420
+ #
421
+ # ui_paths / api_paths: optional globs to make frontend / API detection
422
+ # explicit; empty = a light heuristic that fails open.
405
423
  create_pr:
406
424
  preview_description: false
425
+ detail_level: min
426
+ api_examples: true
427
+ screenshots: false
428
+ ui_paths: []
429
+ api_paths: []
407
430
 
408
431
  # --- Telemetry (artefact engagement, default-off) ---
409
432
  #
@@ -582,6 +605,11 @@ the canonical narrative lives in
582
605
  | `commands.suggestion.max_options` | integer | `4` | Max number of command suggestions before the always-present "run as-is" option (total rendered = `max_options + 1`). |
583
606
  | `commands.suggestion.blocklist` | list of command names | `[]` | Commands that never appear as a suggestion. They still work when typed explicitly. |
584
607
  | `commands.create_pr.preview_description` | `true`, `false` | `false` | When `false`: `/create-pr` skips the title/body preview + adjust loop and uses the generated content directly. Saves agent tokens. When `true`: show title and body before creating and ask for adjustments. `/create-pr:description-only` always previews regardless of this setting. |
608
+ | `commands.create_pr.detail_level` | `min`, `med`, `max` | `min` | Verbosity tier of the PR Description body. `min` = title + 2-3 sentence what/why/impact + ticket; `med` = + grouped changes + tests note; `max` = + how-to-test + edge cases + reviewer guidance. Critical info (breaking / migration / security / rollback) is included at every tier. |
609
+ | `commands.create_pr.api_examples` | `true`, `false` | `true` | Add a grounded JSON example for API-endpoint changes; `true` includes one only from a real source (DTO/OpenAPI/fixture/probe), else a pointer, never invented; `false` = never. |
610
+ | `commands.create_pr.screenshots` | `true`, `false` | `false` | Capability-gated frontend screenshots. `true` attempts capture when browser/preview tooling is present; notes-and-skips otherwise, never blocks the PR. Before/after is best-effort. |
611
+ | `commands.create_pr.ui_paths` | glob list | `[]` | Optional globs pinning frontend detection; empty = light heuristic, fail-open. |
612
+ | `commands.create_pr.api_paths` | glob list | `[]` | Optional globs pinning API-endpoint detection; empty = light heuristic, fail-open. |
585
613
  | `verbosity.preview_artifacts` | `true`, `false` | `false` | Show generated commit messages, PR titles/bodies, branch names before acting. `false` = use generated content directly. See the token-frugality plate under `agents/roadmaps/` (Phase 2/3). |
586
614
  | `verbosity.routine_confirmations` | `true`, `false` | `false` | Confirmation prompts for routine workflow steps when there is one obvious answer ("looks good — commit?"). Iron-Law gates (`commit-policy`, `scope-control` git-ops, `non-destructive-by-default`) ALWAYS ask regardless. |
587
615
  | `verbosity.offer_council_in_delivery` | `true`, `false` | `false` | Offer "run AI Council on this?" inside delivery commands (`/feature-plan`, `/review-changes`, `/roadmap-create`). Council commands themselves are unaffected. |
@@ -39,7 +39,7 @@ schema_version: 1
39
39
  # CI guard: a release bump of `package.json` must update this value
40
40
  # in lockstep — see scripts/check_template_pin_drift.ts (road-to-
41
41
  # portable-runtime-and-update-check P3.3).
42
- agent_config_version: "9.0.0"
42
+ agent_config_version: "9.2.0"
43
43
 
44
44
  # --- Project identity ---
45
45
  project:
@@ -252,7 +252,10 @@ const _AGENTS_DIR_MARKERS: readonly string[] = [
252
252
  'roadmaps',
253
253
  'settings/.ai-council.yml',
254
254
  'roadmaps-progress.md',
255
- '.event4u-bridge.yml',
255
+ // `overrides/` is the guaranteed minimal-consumer surface (ADR-020).
256
+ // Replaced the retired `.event4u-bridge.yml` marker (ADR-020 amendment
257
+ // 2026-07-13) so a bare consumer `agents/` dir stays anchorable.
258
+ 'overrides',
256
259
  ];
257
260
 
258
261
  /**
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-07-13T16:33:05Z`
3
+ - Generated: `2026-07-14T13:40:54Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._
@@ -1102,7 +1102,7 @@
1102
1102
  },
1103
1103
  {
1104
1104
  "category": "command",
1105
- "checksum": "sha256:a202d7aa04b637885b9bae8e6cb9b5720adf72979bbd1e4c742a1ed28aff4dd9",
1105
+ "checksum": "sha256:acefd13ee30decae123744bf123fc1ea850a46c3c4950d4e4d0d153cfa2e5193",
1106
1106
  "install": {
1107
1107
  "default": true,
1108
1108
  "removable": false
@@ -1464,7 +1464,7 @@
1464
1464
  },
1465
1465
  {
1466
1466
  "category": "command",
1467
- "checksum": "sha256:8518fc42b63d6384ce3bbdd377e105b29edde98cbe4c512816a5e2dd1c5f79cf",
1467
+ "checksum": "sha256:c327db498d5de278aa46badcfc14995820f8f2a49e462d4e3e827265541611d2",
1468
1468
  "install": {
1469
1469
  "default": true,
1470
1470
  "removable": false
@@ -2024,7 +2024,7 @@
2024
2024
  },
2025
2025
  {
2026
2026
  "category": "command",
2027
- "checksum": "sha256:d0920f8622036de710a79580e62fe52dbac9aacb4a02ef51a883f887fe880dd4",
2027
+ "checksum": "sha256:5345a5d1bbe083a194fbeb8d6b24b84cfbccabfea01ddbb0e706fee65a52f352",
2028
2028
  "install": {
2029
2029
  "default": true,
2030
2030
  "removable": false
@@ -2057,7 +2057,7 @@
2057
2057
  },
2058
2058
  {
2059
2059
  "category": "command",
2060
- "checksum": "sha256:0b65a9541ce6e3a85e498ccccedb1ae10b71b764a89d439bf30dd4bc1d532cb9",
2060
+ "checksum": "sha256:aa8c4c8693b707d0c310dc813d520f8e07b2f7710591ed6e3e43065414f18f9a",
2061
2061
  "install": {
2062
2062
  "default": true,
2063
2063
  "removable": false
@@ -3295,6 +3295,32 @@
3295
3295
  "agent-config-maintainer"
3296
3296
  ]
3297
3297
  },
3298
+ {
3299
+ "category": "command",
3300
+ "checksum": "sha256:42adcd4d33a67e05d9d2af36acff477e1c9e28de18ceac7b0b021942d154d42d",
3301
+ "install": {
3302
+ "default": true,
3303
+ "removable": false
3304
+ },
3305
+ "lifecycle": "active",
3306
+ "name": "explain-run",
3307
+ "pack": "meta",
3308
+ "packs": [
3309
+ "meta"
3310
+ ],
3311
+ "path": "src/domains/meta/explain-run/command.md",
3312
+ "slug": "explain-run",
3313
+ "tier": 2,
3314
+ "trust": {
3315
+ "confidence": "high",
3316
+ "human_review_required": false,
3317
+ "level": "core"
3318
+ },
3319
+ "visibility": "internal",
3320
+ "workspaces": [
3321
+ "agent-config-maintainer"
3322
+ ]
3323
+ },
3298
3324
  {
3299
3325
  "category": "command",
3300
3326
  "checksum": "sha256:5ea87906367205616ee02acabd06cd14fc2b920bea1bb0986374b97ca8395ee7",
@@ -5518,6 +5544,29 @@
5518
5544
  "engineering"
5519
5545
  ]
5520
5546
  },
5547
+ {
5548
+ "category": "rule",
5549
+ "checksum": "sha256:c41abaaf955699738ccee56b1370b5149bc84ab1fa5f1b6baa24e2b873b9393d",
5550
+ "install": {
5551
+ "default": true,
5552
+ "removable": false
5553
+ },
5554
+ "lifecycle": "active",
5555
+ "packs": [
5556
+ "engineering-base",
5557
+ "product-basic"
5558
+ ],
5559
+ "path": "src/rules/cross-source-consistency.md",
5560
+ "trust": {
5561
+ "confidence": "high",
5562
+ "human_review_required": false,
5563
+ "level": "core"
5564
+ },
5565
+ "workspaces": [
5566
+ "engineering",
5567
+ "product"
5568
+ ]
5569
+ },
5521
5570
  {
5522
5571
  "category": "rule",
5523
5572
  "checksum": "sha256:f09f13f41eab26421f29cc731f8b1b737f9f37079c913416ba686bc9d45a8bc2",
@@ -5542,7 +5591,7 @@
5542
5591
  },
5543
5592
  {
5544
5593
  "category": "rule",
5545
- "checksum": "sha256:7eaac36c60b5c2cff3ca564f9c212aa4c02cf35c93afa442da461db08b96dcb9",
5594
+ "checksum": "sha256:a7fb7c005699c157c6c263011700ad3173c206c94f2aa6af1022ce8f73bd5b40",
5546
5595
  "install": {
5547
5596
  "default": true,
5548
5597
  "removable": false
@@ -9240,7 +9289,7 @@
9240
9289
  },
9241
9290
  {
9242
9291
  "category": "skill",
9243
- "checksum": "sha256:043dbe881bb6230e51a2116624a1df2fe3ef41b6387f3fd2466f6fafac687ee7",
9292
+ "checksum": "sha256:44b899d5e20f9df7ff6c314ddbdbde2acc3f113c70972711973406851880ca5f",
9244
9293
  "install": {
9245
9294
  "default": true,
9246
9295
  "removable": true
@@ -9328,7 +9377,7 @@
9328
9377
  },
9329
9378
  {
9330
9379
  "category": "skill",
9331
- "checksum": "sha256:dc4135f2700c2a5619216ee15a60fd2995d431c5b7f760e6bac001a2dbf99782",
9380
+ "checksum": "sha256:6852419c1125a3c85507533245a096064e35a41d57ed49b2c6394e370df99d47",
9332
9381
  "install": {
9333
9382
  "default": true,
9334
9383
  "removable": true
@@ -10536,6 +10585,34 @@
10536
10585
  "engineering"
10537
10586
  ]
10538
10587
  },
10588
+ {
10589
+ "category": "skill",
10590
+ "checksum": "sha256:6abf10a4cd93bf305637d403ad317d08d0256dd441858d7243322e482e13a1bb",
10591
+ "install": {
10592
+ "default": true,
10593
+ "removable": true
10594
+ },
10595
+ "lifecycle": "active",
10596
+ "name": "llm-provider-knowledge",
10597
+ "packs": [
10598
+ "meta"
10599
+ ],
10600
+ "path": "src/skills/llm-provider-knowledge/SKILL.md",
10601
+ "trust": {
10602
+ "confidence": "high",
10603
+ "human_review_required": false,
10604
+ "level": "experimental"
10605
+ },
10606
+ "workspaces": [
10607
+ "agent-config-maintainer",
10608
+ "engineering",
10609
+ "product",
10610
+ "founder",
10611
+ "small-business",
10612
+ "gtm",
10613
+ "ops"
10614
+ ]
10615
+ },
10539
10616
  {
10540
10617
  "category": "skill",
10541
10618
  "checksum": "sha256:62d98b2e295e68ce7d57e09dc6dc57791435b422ede5460c1f5edb3f708494df",
@@ -11374,7 +11451,7 @@
11374
11451
  },
11375
11452
  {
11376
11453
  "category": "skill",
11377
- "checksum": "sha256:c5e07dbdb98efa2391f8fd36aa5ae69d3fff762ddc3b359f23b78fb35601ffa5",
11454
+ "checksum": "sha256:873175a941baa7f10386d89f78ef87c10a00d2ca811bbcbd273bd8b2dc73bb07",
11378
11455
  "install": {
11379
11456
  "default": true,
11380
11457
  "removable": true
@@ -12012,7 +12089,7 @@
12012
12089
  },
12013
12090
  {
12014
12091
  "category": "skill",
12015
- "checksum": "sha256:78ba80e645243815c450fb087375dd06edd943c9d965411dda6d05ed3b2be0a2",
12092
+ "checksum": "sha256:00bedf510fe4b6adabbe4e4a7c16cd9a2259801b300d95879f0f22093741037c",
12016
12093
  "install": {
12017
12094
  "default": true,
12018
12095
  "removable": true
@@ -12210,7 +12287,7 @@
12210
12287
  },
12211
12288
  {
12212
12289
  "category": "skill",
12213
- "checksum": "sha256:7a9e002a68263c1654173fe007d4f6a6b9c6db1d00026428ca26dedc82e427c3",
12290
+ "checksum": "sha256:3803e4889057d8d1f0619ca4f9652b88729124a2aa2bdb83b31f2064c02ed104",
12214
12291
  "install": {
12215
12292
  "default": true,
12216
12293
  "removable": false
@@ -12760,7 +12837,7 @@
12760
12837
  },
12761
12838
  {
12762
12839
  "category": "skill",
12763
- "checksum": "sha256:97d4f70ad08349a307b8d4af9b9fa288dd5f33365cd1217bd4c66e7013717123",
12840
+ "checksum": "sha256:355f51b3ef319bb84a826f417b33c465e8991cd0dbf6c2cc645c7db9af9ebc6c",
12764
12841
  "install": {
12765
12842
  "default": true,
12766
12843
  "removable": false
@@ -13090,7 +13167,7 @@
13090
13167
  },
13091
13168
  {
13092
13169
  "category": "skill",
13093
- "checksum": "sha256:dd78527c8556401fd6ec48700087dac3068237938bc476b38464f15d53f15ce3",
13170
+ "checksum": "sha256:0fdbc771503a17f5e27eb5d9dc3d2325863cf4e67580421176f73c5c9c10bd01",
13094
13171
  "install": {
13095
13172
  "default": true,
13096
13173
  "removable": false
@@ -13481,7 +13558,7 @@
13481
13558
  "workspaces": []
13482
13559
  }
13483
13560
  ],
13484
- "checksum": "sha256:a01d13b0513f9f8f628ae5d753e3c46438a1eae564edef493a8f2fbbeadd6ace",
13561
+ "checksum": "sha256:c2e1ad4673f3bf59c601bfdf51040b155bbcc511f0af3622004ca1917bad10e9",
13485
13562
  "deprecations": [
13486
13563
  {
13487
13564
  "key": "tier",
@@ -13624,10 +13701,10 @@
13624
13701
  "reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
13625
13702
  }
13626
13703
  ],
13627
- "generated_at": "2026-07-13T16:33:05Z",
13704
+ "generated_at": "2026-07-14T13:40:54Z",
13628
13705
  "packs": [
13629
13706
  {
13630
- "artefact_count": 106,
13707
+ "artefact_count": 107,
13631
13708
  "description": "Framework-neutral engineering hygiene — git, tests, reviews.",
13632
13709
  "domain": "engineering",
13633
13710
  "human_review_required": 0,
@@ -13637,7 +13714,7 @@
13637
13714
  "trust_level_default": "core",
13638
13715
  "trust_summary": {
13639
13716
  "advisory": 0,
13640
- "core": 104,
13717
+ "core": 105,
13641
13718
  "experimental": 1,
13642
13719
  "professional": 1,
13643
13720
  "restricted": 0
@@ -13980,7 +14057,7 @@
13980
14057
  ]
13981
14058
  },
13982
14059
  {
13983
- "artefact_count": 11,
14060
+ "artefact_count": 12,
13984
14061
  "description": "Core PO/PM artefacts (ticket refinement, AC, estimation).",
13985
14062
  "domain": "product",
13986
14063
  "human_review_required": 0,
@@ -13999,7 +14076,7 @@
13999
14076
  "trust_level_default": "professional",
14000
14077
  "trust_summary": {
14001
14078
  "advisory": 0,
14002
- "core": 0,
14079
+ "core": 1,
14003
14080
  "experimental": 0,
14004
14081
  "professional": 11,
14005
14082
  "restricted": 0
@@ -14289,7 +14366,7 @@
14289
14366
  },
14290
14367
  {
14291
14368
  "always_on": true,
14292
- "artefact_count": 272,
14369
+ "artefact_count": 274,
14293
14370
  "description": "Artefacts that maintain this package (agent-config itself).",
14294
14371
  "domain": "meta",
14295
14372
  "human_review_required": 0,
@@ -14305,8 +14382,8 @@
14305
14382
  "trust_level_default": "core",
14306
14383
  "trust_summary": {
14307
14384
  "advisory": 0,
14308
- "core": 271,
14309
- "experimental": 1,
14385
+ "core": 272,
14386
+ "experimental": 2,
14310
14387
  "professional": 0,
14311
14388
  "restricted": 0
14312
14389
  },
@@ -14396,27 +14473,27 @@
14396
14473
  "scanner_version": "c24312e116f8",
14397
14474
  "stats": {
14398
14475
  "by_category": {
14399
- "command": 183,
14400
- "rule": 104,
14401
- "skill": 274,
14476
+ "command": 184,
14477
+ "rule": 105,
14478
+ "skill": 275,
14402
14479
  "subagent": 1,
14403
14480
  "template": 1
14404
14481
  },
14405
14482
  "by_lifecycle": {
14406
- "active": 547,
14483
+ "active": 550,
14407
14484
  "archived": 0,
14408
14485
  "deprecated": 0,
14409
14486
  "experimental": 16
14410
14487
  },
14411
14488
  "by_trust_level": {
14412
14489
  "advisory": 8,
14413
- "core": 437,
14414
- "experimental": 20,
14490
+ "core": 439,
14491
+ "experimental": 21,
14415
14492
  "professional": 98,
14416
14493
  "restricted": 0
14417
14494
  },
14418
14495
  "documented_unassigned_count": 26,
14419
- "total_artefacts": 563,
14496
+ "total_artefacts": 566,
14420
14497
  "unassigned_count": 0
14421
14498
  },
14422
14499
  "unassigned": [],
@@ -1 +1 @@
1
- bfce8bfcd500e36d9d77f783942e69a0aea231b590a176a283d9d95a047715f1 discovery-manifest.json
1
+ 662d30c8e6a940ea63e9a9d3fdd667a0acded956349c9f89dd21d0b8daf9727c discovery-manifest.json
@@ -1,8 +1,8 @@
1
1
  # Discovery Manifest — Summary
2
2
 
3
- - Generated: `2026-07-13T16:33:05Z`
3
+ - Generated: `2026-07-14T13:40:54Z`
4
4
  - Scanner: `c24312e116f8`
5
- - Artefacts: **563**
5
+ - Artefacts: **566**
6
6
  - Unassigned: **0**
7
7
 
8
8
  ## `engineering` — Engineering
@@ -11,7 +11,7 @@
11
11
 
12
12
  | Pack | Artefacts |
13
13
  |---|---|
14
- | `engineering-base` — Engineering Base | 106 |
14
+ | `engineering-base` — Engineering Base | 107 |
15
15
  | `git` — Git | 4 |
16
16
  | `php` — PHP | 6 |
17
17
  | `laravel` — Laravel | 25 |
@@ -31,7 +31,7 @@
31
31
 
32
32
  | Pack | Artefacts |
33
33
  |---|---|
34
- | `product-basic` — Product Basic | 11 |
34
+ | `product-basic` — Product Basic | 12 |
35
35
  | `product-discovery` — Product Discovery | 4 |
36
36
 
37
37
  ## `finance` — Finance
@@ -103,7 +103,7 @@
103
103
 
104
104
  | Pack | Artefacts |
105
105
  |---|---|
106
- | `meta` — Meta | 272 |
106
+ | `meta` — Meta | 274 |
107
107
  | `memory` — Memory | 9 |
108
108
  | `analytics` — Analytics | 4 |
109
109
  | `product-reasoning` — Product Reasoning | 11 |
@@ -1,6 +1,6 @@
1
1
  # Discovery — Orphan Report
2
2
 
3
- - Generated: `2026-07-13T16:33:05Z`
3
+ - Generated: `2026-07-14T13:40:54Z`
4
4
  - Orphan artefacts: **0**
5
5
 
6
6
  > An orphan is an artefact whose declared pack has no other members.