@event4u/agent-config 9.12.0 → 9.13.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 (130) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +80 -256
  3. package/README.md +1 -1
  4. package/dist/agent-src/rules/active-remediation.md +0 -2
  5. package/dist/agent-src/rules/architecture.md +0 -1
  6. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -4
  7. package/dist/agent-src/rules/autonomous-execution.md +1 -2
  8. package/dist/agent-src/rules/broken-access-control.md +0 -2
  9. package/dist/agent-src/rules/code-comment-discipline.md +0 -3
  10. package/dist/agent-src/rules/code-provenance.md +0 -3
  11. package/dist/agent-src/rules/communication-through-line.md +2 -3
  12. package/dist/agent-src/rules/content-quoting-floor.md +0 -2
  13. package/dist/agent-src/rules/context-hygiene.md +1 -3
  14. package/dist/agent-src/rules/decision-revisit-gate.md +0 -2
  15. package/dist/agent-src/rules/design-fidelity.md +29 -0
  16. package/dist/agent-src/rules/domain-adoption-policy.md +0 -3
  17. package/dist/agent-src/rules/downstream-changes.md +10 -1
  18. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -7
  19. package/dist/agent-src/rules/fast-path-marker-visibility.md +0 -1
  20. package/dist/agent-src/rules/git-history-discipline.md +0 -7
  21. package/dist/agent-src/rules/guidelines.md +0 -2
  22. package/dist/agent-src/rules/improve-before-implement.md +4 -2
  23. package/dist/agent-src/rules/invite-challenge.md +0 -4
  24. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -2
  25. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  26. package/dist/agent-src/rules/minimal-safe-diff.md +2 -2
  27. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  28. package/dist/agent-src/rules/no-attribution-footers.md +0 -3
  29. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +8 -5
  30. package/dist/agent-src/rules/no-pr-progress-comments.md +1 -3
  31. package/dist/agent-src/rules/no-roadmap-references.md +0 -2
  32. package/dist/agent-src/rules/output-discipline.md +0 -1
  33. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -2
  34. package/dist/agent-src/rules/preservation-guard.md +0 -3
  35. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  36. package/dist/agent-src/rules/secret-vcs-guard.md +0 -2
  37. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -2
  38. package/dist/agent-src/rules/session-canary.md +0 -2
  39. package/dist/agent-src/rules/size-enforcement.md +0 -5
  40. package/dist/agent-src/rules/source-confidentiality.md +0 -3
  41. package/dist/agent-src/rules/source-discovery-gate.md +0 -2
  42. package/dist/agent-src/rules/think-before-action.md +3 -3
  43. package/dist/agent-src/rules/token-budget-discipline.md +0 -1
  44. package/dist/agent-src/rules/token-efficiency.md +1 -2
  45. package/dist/agent-src/rules/tool-safety.md +0 -1
  46. package/dist/agent-src/rules/user-interaction.md +0 -3
  47. package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
  48. package/dist/agent-src/skills/agent-docs-writing/SKILL.md +8 -0
  49. package/dist/agent-src/skills/analysis-skill-router/SKILL.md +55 -86
  50. package/dist/agent-src/skills/character-consistency/SKILL.md +7 -4
  51. package/dist/agent-src/skills/decision-record/SKILL.md +8 -0
  52. package/dist/agent-src/skills/design-review/SKILL.md +11 -0
  53. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +8 -0
  54. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +34 -3
  55. package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
  56. package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -4
  57. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +201 -0
  58. package/dist/agent-src/skills/performance/SKILL.md +14 -0
  59. package/dist/agent-src/skills/pixar-storyteller/SKILL.md +8 -5
  60. package/dist/agent-src/skills/scene-expander/SKILL.md +9 -6
  61. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +10 -0
  62. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +14 -37
  63. package/dist/agent-src/skills/video-director/SKILL.md +9 -6
  64. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  65. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
  66. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
  67. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
  68. package/dist/agent-src/templates/scripts/work_engine/state.ts +55 -0
  69. package/dist/discovery/deprecation-report.md +1 -1
  70. package/dist/discovery/discovery-manifest.json +89 -67
  71. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  72. package/dist/discovery/discovery-manifest.summary.md +3 -3
  73. package/dist/discovery/orphan-report.md +1 -1
  74. package/dist/discovery/packs.json +6 -5
  75. package/dist/discovery/trust-report.md +2 -2
  76. package/dist/discovery/workspaces.json +5 -4
  77. package/dist/hooks/dispatch.js +174 -13
  78. package/dist/mcp/registry-manifest.json +3 -3
  79. package/dist/mcp/server.json +2 -2
  80. package/dist/mcp/server.mjs +750 -507
  81. package/dist/router.json +1 -1
  82. package/dist/scripts/condense.js +2 -2
  83. package/docs/MIGRATION.md +1 -1
  84. package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +71 -0
  85. package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +24 -1
  86. package/docs/guidelines/code-clarity.md +9 -2
  87. package/docs/guidelines/design-fidelity-mechanics.md +44 -0
  88. package/llms.txt +63 -27
  89. package/package.json +4 -4
  90. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
  91. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
  92. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
  93. package/src/agent-src/templates/scripts/work_engine/state.ts +55 -0
  94. package/src/config/agent-settings.template.yml +8 -0
  95. package/src/scripts/_lib/counted_probe.ts +142 -0
  96. package/src/scripts/_lib/overbuild_lens_contract.ts +196 -0
  97. package/src/scripts/_lib/release_scope.ts +207 -0
  98. package/src/scripts/ai_council/stance_tally.ts +37 -2
  99. package/src/scripts/audit_auto_rules.ts +9 -9
  100. package/src/scripts/audit_likelihood.ts +3 -3
  101. package/src/scripts/audit_overlap.ts +2 -2
  102. package/src/scripts/audit_skill_overlap.ts +233 -95
  103. package/src/scripts/audit_skill_overlap_allowlist.json +4 -0
  104. package/src/scripts/build_proof.ts +15 -1
  105. package/src/scripts/check_dependency_floors.ts +16 -6
  106. package/src/scripts/check_gate_coverage.ts +6 -6
  107. package/src/scripts/check_kernel_rule_bundle.ts +5 -4
  108. package/src/scripts/check_token_quality_golden.ts +0 -18
  109. package/src/scripts/code_graph/loader.ts +35 -6
  110. package/src/scripts/compile_router.ts +3 -8
  111. package/src/scripts/condense.ts +2 -2
  112. package/src/scripts/explain_run.ts +0 -1
  113. package/src/scripts/generate_pack_manifests.ts +3 -20
  114. package/src/scripts/hooks/block_kernel_rule_writes.ts +145 -10
  115. package/src/scripts/hooks/block_no_verify.ts +101 -0
  116. package/src/scripts/lint_agent_security.ts +5 -4
  117. package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
  118. package/src/scripts/lint_regression.ts +92 -1
  119. package/src/scripts/lint_skill_descriptions.ts +93 -5
  120. package/src/scripts/project_thin_rules.ts +2 -2
  121. package/src/scripts/release.ts +107 -3
  122. package/src/scripts/resolve_lint_scope.ts +53 -0
  123. package/src/scripts/router_telemetry.ts +0 -5
  124. package/src/scripts/runtime_dispatcher.ts +40 -0
  125. package/src/scripts/schemas/pack.schema.json +1 -5
  126. package/src/scripts/schemas/rule.schema.json +1 -2
  127. package/src/scripts/self_review_gate.ts +15 -73
  128. package/src/scripts/skill_linter.ts +93 -11
  129. package/src/scripts/sweep_dead_scan_roots.ts +550 -0
  130. package/src/scripts/trigger_coverage.ts +11 -37
@@ -9,10 +9,21 @@ triggers:
9
9
  - keyword: "design system"
10
10
  - keyword: "design spec"
11
11
  - keyword: "Figma"
12
+ - keyword: "handoff"
13
+ - keyword: "Claude Design"
12
14
  - phrase: "match the design"
13
15
  - phrase: "build this design"
14
16
  - phrase: "design fidelity"
15
17
  - phrase: "stick to the design"
18
+ - phrase: "design.html"
19
+ - phrase: "attached artifact"
20
+ - phrase: "provided artifact"
21
+ - phrase: "übernimm das design"
22
+ - phrase: "baue das nach"
23
+ - phrase: "bau das nach"
24
+ - phrase: "1:1 um"
25
+ - phrase: "1:1 nach"
26
+ - file_pattern: "*design.html"
16
27
  applies_to_user_types:
17
28
  - "creator"
18
29
  - "developer"
@@ -73,6 +84,24 @@ porting, or modifying UI to match it.
73
84
  - The user explicitly invites exploration ("show me options", "redesign this", "improve the layout") — that authorises deviation for that turn.
74
85
  - Non-UI surfaces (scripts, CLI, backend).
75
86
 
87
+ ## Routing — an attached artifact is a trigger, an attached HTML file is not
88
+
89
+ Matching is plain lower-cased substring containment on the prompt, plus fnmatch
90
+ over the open files. Three handover classes must reach this rule: an English
91
+ phrasing, a German one, and a prompt carrying **no** keyword at all because the
92
+ artifact is simply attached. The last is covered by `file_pattern: *design.html`
93
+ — the conventional handover filename, not `*.html`, which would fire on every
94
+ HTML edit in every project and be strictly worse than the gap it closes. A
95
+ handover under some other filename needs one word in the prompt.
96
+
97
+ The trigger set is deliberately phrase-heavy on the German side and on
98
+ `artifact`: a bare `artifact` keyword fires on "the CI build artifact is 40 MB".
99
+ `ROUTING_MATRIX` in
100
+ [`design_fidelity_routing.test.ts`](../../tests/scripts/design_fidelity_routing.test.ts)
101
+ pins both halves — every class that must route, and the near-misses that must
102
+ stay silent (fixture `daf-port-trigger-de`). Extending the set without adding a
103
+ near-miss row there is how an over-broad trigger lands.
104
+
76
105
  Body migrated to [`guideline:design-fidelity-mechanics`](../docs/guidelines/design-fidelity-mechanics.md) (per P4 of `road-to-kernel-and-router.md`) — surgical visual edits (targeted-edit vs redesign-trigger discipline, stable anchors), asset & imagery discipline (owned-asset path, third-party delivery is self-hosted by default, real-imagery-as-proof, iconography floor, no unrequested filler), deviation-surfacing shape, failure-mode catalog, `daf-*` fixtures.
77
106
  Trigger-set above activates this routing on demand, independent of the discipline profile (ADR-110).
78
107
 
@@ -4,9 +4,6 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "Adopting a new domain track (mobile, ML, IoT…) — demand/owner/CI gates BEFORE harvest"
6
6
  triggers:
7
- - intent: "adopt new domain"
8
- - intent: "harvest new domain track"
9
- - intent: "open a domain plate"
10
7
  - keyword: "mobile track"
11
8
  - keyword: "ml track"
12
9
  - keyword: "blockchain track"
@@ -4,7 +4,6 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "After EVERY code edit, find ALL downstream changes — callers, tests, imports, types, documentation"
6
6
  triggers:
7
- - intent: "after code edit"
8
7
  - keyword: "callers"
9
8
  - keyword: "imports"
10
9
  - keyword: "downstream"
@@ -81,6 +80,16 @@ Next.js / Python / Go) live in [`agent-docs-writing`](../skills/agent-docs-writi
81
80
  Before making a change that affects a **public API** (endpoint response, service method signature,
82
81
  event payload, job constructor), assess the impact:
83
82
 
83
+ **Why the surface, not just the contract, is the thing to keep small** (Hyrum's
84
+ Law): with enough consumers, every *observable* behaviour of a system becomes
85
+ something somebody depends on, regardless of what the documented contract
86
+ promises — iteration order, an error message's wording, a timing side effect, a
87
+ field that happens to be present. Two consequences, and they point in opposite
88
+ directions. Adding: a smaller exported surface is fewer accidental contracts to
89
+ honour later, so do not export what the caller does not need. Removing: the
90
+ list above is a floor, not a ceiling — an observable behaviour nobody documented
91
+ can still break someone when it disappears.
92
+
84
93
  ### Always ask the user first when:
85
94
 
86
95
  - Removing or renaming a public method/class
@@ -4,13 +4,6 @@ tier: "2b"
4
4
  description: "User names an external repo/file/URL as reference — fetch the actual tree and inspect; never summarize from README"
5
5
  alwaysApply: false
6
6
  triggers:
7
- - intent: "look at how X does it"
8
- - intent: "compare with reference repo"
9
- - intent: "use as template / vorlage"
10
- - intent: "wie macht es X"
11
- - intent: "vergleiche mit Y"
12
- - intent: "schau dir Z an"
13
- - intent: "study this competitor"
14
7
  - keyword: "github.com/"
15
8
  - keyword: "source of truth"
16
9
  - phrase: "reference repo"
@@ -7,7 +7,6 @@ triggers:
7
7
  - keyword: "fast-path"
8
8
  - keyword: "Resolved via low-impact council"
9
9
  - keyword: "low_impact"
10
- - intent: "low-impact council dispatch"
11
10
  validator_ignore:
12
11
  - type: "substring"
13
12
  pattern: ".agent-src.uncondensed/"
@@ -4,13 +4,6 @@ tier: "2a"
4
4
  alwaysApply: false
5
5
  description: "Git history — no unasked rebase/squash/amend; never drop foreign commits; pushed rewrite → re-push same turn"
6
6
  triggers:
7
- - intent: "rebase the branch"
8
- - intent: "squash commits"
9
- - intent: "clean up commit history"
10
- - intent: "fold this into the previous commit"
11
- - intent: "tidy history after pushing"
12
- - intent: "reseat the branch base"
13
- - intent: "exclude these commits from the branch"
14
7
  - keyword: "git rebase"
15
8
  - keyword: "rebase --onto"
16
9
  - keyword: "reset --hard"
@@ -6,8 +6,6 @@ alwaysApply: false
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/guidelines-mechanics.md
8
8
  triggers:
9
- - intent: "writing code"
10
- - intent: "reviewing code"
11
9
  - keyword: "convention"
12
10
  workspaces: [agent-config-maintainer, engineering]
13
11
  packs: [meta]
@@ -5,8 +5,6 @@ description: "Before features or architectural changes — validate against exis
5
5
  alwaysApply: false
6
6
  council_depth: deep
7
7
  triggers:
8
- - intent: "implement feature"
9
- - intent: "architectural change"
10
8
  - keyword: "refactor"
11
9
  - keyword: "implement"
12
10
  - keyword: "migration"
@@ -42,6 +40,10 @@ Before implementing:
42
40
 
43
41
  On a "build me an app / add this feature" ask, ONE reflexive pre-check before the three checks: **who asked · what breaks if unbuilt · what's the evidence?** Recommend **build** only at a real retention/activation blocker (evidence, not anxiety); else **defer/validate**, naming the missing evidence. Advisory — "just build it" proceeds immediately; no network lookup. Hierarchy + build/defer table: guideline § 8-pre.
44
42
 
43
+ ## The solution-size ladder — stop at the first rung that works
44
+
45
+ Once the demand gate says build, "does this already exist?" has an **ordered** answer set: need-to-exist → reuse-in-repo → stdlib / framework → **native platform** → installed dependency → smallest working form. Stop at the first rung that carries the requirement. Ordered **after** comprehension — it shortens the solution, never the reading. Two axes, not one: the ladder is *scope*; **shape** is the other half — of what must exist, the form with the least cognitive load, explicitly not the fewest keystrokes. Rungs, the platform-rung examples, and the precedence order when they pull against each other: guideline § 8b-ladder / § 8b-shape / § 8b-precedence.
46
+
45
47
  ## The three checks
46
48
 
47
49
  Run, in order: **1. Is the request clear?** · **2. Does it fit the existing architecture?** · **3. Is the approach sound?**
@@ -5,10 +5,6 @@ description: "Before executing a complex plan — ask 'am I solving the right pr
5
5
  alwaysApply: false
6
6
  council_depth: deep
7
7
  triggers:
8
- - intent: "complex plan"
9
- - intent: "design decision"
10
- - intent: "architectural plan"
11
- - intent: "multi-step implementation"
12
8
  - keyword: "plan"
13
9
  - keyword: "design"
14
10
  - keyword: "architecture"
@@ -4,8 +4,6 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "IDE-attached sibling repo detected — prompt once to opt into cross-repo awareness, persist local-only"
6
6
  triggers:
7
- - intent: "work across two projects"
8
- - intent: "sibling repository"
9
7
  - keyword: "linked project"
10
8
  - keyword: "cross-repo"
11
9
  - keyword: "sibling repo"
@@ -4,7 +4,6 @@ tier: "2b"
4
4
  description: "Generating markdown with code blocks — prevent broken nesting"
5
5
  alwaysApply: false
6
6
  triggers:
7
- - intent: "markdown with code blocks"
8
7
  - keyword: "triple backticks"
9
8
  - file_pattern: "*.md"
10
9
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
@@ -4,11 +4,11 @@ tier: "2a"
4
4
  alwaysApply: false
5
5
  description: "Writing or reviewing a diff — smallest change that solves the problem; no drive-by edits or reformatting"
6
6
  triggers:
7
- - intent: "writing a diff"
8
- - intent: "reviewing a diff"
9
7
  - keyword: "drive-by"
10
8
  - keyword: "rewrite"
11
9
  - keyword: "fix"
10
+ - phrase: "from scratch"
11
+ - phrase: "second system"
12
12
  routes_to:
13
13
  - "guideline:agent-infra/minimal-safe-diff-mechanics"
14
14
  workspaces: [engineering]
@@ -5,7 +5,6 @@ description: "CLI tool needed for the task is not installed — ask before worki
5
5
  triggers:
6
6
  - keyword: "command not found"
7
7
  - keyword: "not installed"
8
- - intent: "install tool"
9
8
  routes_to:
10
9
  - "guideline:agent-infra/missing-tool-handling"
11
10
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
@@ -4,9 +4,6 @@ tier: "3"
4
4
  alwaysApply: false
5
5
  description: "PR/issue/comment/commit bodies — no 'Generated with' / 'Co-authored by' / 'opened by' attribution footers"
6
6
  triggers:
7
- - intent: "PR body"
8
- - intent: "commit message"
9
- - intent: "Jira comment"
10
7
  - keyword: "co-authored"
11
8
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
12
9
  packs: [meta]
@@ -4,13 +4,16 @@ tier: "3"
4
4
  alwaysApply: false
5
5
  description: "PR/issue/commit titles and comments — no decorative emojis; bodies only with an in-artifact legend"
6
6
  triggers:
7
- - intent: "PR title"
8
- - intent: "PR body"
9
- - intent: "commit message"
10
- - intent: "issue title"
11
- - intent: "post PR comment"
12
7
  - keyword: "gh pr create"
13
8
  - keyword: "git commit"
9
+ - keyword: "🤖"
10
+ - keyword: "🚀"
11
+ - keyword: "🎉"
12
+ - keyword: "✨"
13
+ - keyword: "🔥"
14
+ - keyword: "💡"
15
+ - keyword: "👍"
16
+ - keyword: "❤️"
14
17
  workspaces: [agent-config-maintainer, engineering]
15
18
  packs: [meta]
16
19
  ---
@@ -4,11 +4,9 @@ tier: "2a"
4
4
  alwaysApply: false
5
5
  description: "PR comments — no unsolicited progress/status/CI narration unless personal.pr_progress_comments is true"
6
6
  triggers:
7
- - intent: "post PR comment"
8
- - intent: "PR status update"
9
- - intent: "CI fix progress"
10
7
  - keyword: "gh pr comment"
11
8
  - keyword: "PullRequestComment"
9
+ - phrase: "status comment"
12
10
  workspaces: [agent-config-maintainer, engineering]
13
11
  packs: [meta]
14
12
  ---
@@ -8,8 +8,6 @@ triggers:
8
8
  - path_prefix: "agents/runtime/council/questions/"
9
9
  - path_prefix: "agents/runtime/council/responses/"
10
10
  - path_prefix: "agents/runtime/council/sessions/"
11
- - intent: "link from stable artifact"
12
- - intent: "link to council artefact"
13
11
  routes_to:
14
12
  - "skill:ai-council"
15
13
  - "skill:agent-docs-writing"
@@ -3,7 +3,6 @@ type: "auto"
3
3
  tier: "2a"
4
4
  description: "No placeholder prose in generated code/UI — no truncation shorthands; on budget overflow emit a clean PAUSED breakpoint"
5
5
  triggers:
6
- - intent: "generating code or multi-section output"
7
6
  - keyword: "// rest of component"
8
7
  - keyword: "for brevity"
9
8
  - keyword: "rest follows the same pattern"
@@ -4,8 +4,6 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "Field with multiple non-boolean states — prefer an enum over string/numeric literals; old-style literals found → note, finish the task, ask after"
6
6
  triggers:
7
- - intent: "modeling a field with multiple states"
8
- - intent: "adding a status or type field"
9
7
  - keyword: "enum"
10
8
  - keyword: "status"
11
9
  - keyword: "kind"
@@ -4,9 +4,6 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "Merging/refactoring/condensing skills, rules, commands, or guidelines — prevent quality loss"
6
6
  triggers:
7
- - intent: "merge skill"
8
- - intent: "condense rule"
9
- - intent: "refactor artifact"
10
7
  - keyword: "Iron Law"
11
8
  validator_ignore:
12
9
  - type: "substring"
@@ -6,7 +6,6 @@ alwaysApply: false
6
6
  triggers:
7
7
  - keyword: "active_role"
8
8
  - keyword: "role-mode"
9
- - intent: "mode marker"
10
9
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
11
10
  packs: [meta]
12
11
  ---
@@ -4,8 +4,6 @@ tier: "2a"
4
4
  alwaysApply: false
5
5
  description: "Writing a credential into a tracked file or committing one in any VCS (git/svn/hg) — STOP, show the match, ask, offer alternatives; never silently"
6
6
  triggers:
7
- - intent: "writing a credential or API key into a file"
8
- - intent: "committing or staging changes that may contain a secret"
9
7
  - keyword: "secret"
10
8
  - keyword: "password"
11
9
  - keyword: "credential"
@@ -4,8 +4,6 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "Writing/generating code — generalize (no overfit/tautological tests), supply the invisible cross-cutting controls, never invent an API/field/package"
6
6
  triggers:
7
- - intent: "writing or generating code"
8
- - intent: "implementing a feature"
9
7
  - keyword: "implement"
10
8
  - keyword: "endpoint"
11
9
  - keyword: "query"
@@ -4,8 +4,6 @@ tier: "2a"
4
4
  description: "personal.canary_name set — open every new task by name (liveness canary); keep the reply-close markers alive (ONE end-summary, PR URL last)"
5
5
  alwaysApply: false
6
6
  triggers:
7
- - intent: "starting a new task or a new conversation"
8
- - intent: "opening the first reply to a request"
9
7
  - keyword: "canary"
10
8
  - keyword: "canary_name"
11
9
  - phrase: "session canary"
@@ -3,11 +3,6 @@ type: "manual"
3
3
  tier: "mechanical-already"
4
4
  description: "Creating or editing rules, skills, commands, guidelines, AGENTS.md, or copilot-instructions.md — enforce size and scope limits"
5
5
  alwaysApply: false
6
- triggers:
7
- - intent: "create rule"
8
- - intent: "create skill"
9
- - intent: "create command"
10
- - intent: "create guideline"
11
6
  workspaces: [agent-config-maintainer]
12
7
  packs: [meta]
13
8
  ---
@@ -10,9 +10,6 @@ triggers:
10
10
  - path_prefix: "docs/"
11
11
  - path_prefix: "agents/evidence/"
12
12
  - path_prefix: "agents/roadmaps/"
13
- - intent: "adopt or harvest from an external repo"
14
- - intent: "compare against another package"
15
- - intent: "attribute an idea to an external source"
16
13
  validator_ignore:
17
14
  - type: "substring"
18
15
  pattern: "external_sources_denylist"
@@ -7,8 +7,6 @@ load_context:
7
7
  - ../contexts/execution/evidence-discipline.md
8
8
  - ../contexts/execution/project-intelligence.md
9
9
  triggers:
10
- - intent: "before coding"
11
- - intent: "DB-driven work"
12
10
  - keyword: "schema"
13
11
  - keyword: "endpoint"
14
12
  - phrase: "new API"
@@ -6,9 +6,9 @@ alwaysApply: false
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/think-before-action-mechanics.md
8
8
  triggers:
9
- - intent: "before coding"
10
- - intent: "before debugging"
11
- - intent: "before modifying"
9
+ - phrase: "before coding"
10
+ - phrase: "before debugging"
11
+ - phrase: "before modifying"
12
12
  - keyword: "implement"
13
13
  - keyword: "debug"
14
14
  - keyword: "refactor"
@@ -5,7 +5,6 @@ description: "rich-class skills are exempt from telegraph + thin-projector trims
5
5
  triggers:
6
6
  - keyword: "token_budget_class"
7
7
  - keyword: "rich skill"
8
- - intent: "editing a rich-tagged skill"
9
8
  workspaces: [agent-config-maintainer]
10
9
  packs: [meta]
11
10
  ---
@@ -6,9 +6,8 @@ alwaysApply: false
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/token-efficiency-mechanics.md
8
8
  triggers:
9
- - intent: "verbose CLI output"
10
- - intent: "fetching logs"
11
9
  - keyword: "minimize tool calls"
10
+ - phrase: "fetching logs"
12
11
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
13
12
  packs: [meta]
14
13
  ---
@@ -5,7 +5,6 @@ description: "Skill uses external tools — enforce allowlist, deny-by-default,
5
5
  triggers:
6
6
  - keyword: "allowed_tools"
7
7
  - keyword: "tool registry"
8
- - intent: "external API"
9
8
  workspaces: [agent-config-maintainer, engineering]
10
9
  packs: [meta]
11
10
  enforced_by:
@@ -6,9 +6,6 @@ alwaysApply: false
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/user-interaction-mechanics.md
8
8
  triggers:
9
- - intent: "ask user a question"
10
- - intent: "numbered options"
11
- - intent: "summarizing progress"
12
9
  - keyword: "option"
13
10
  - keyword: "recommendation"
14
11
  - phrase: "what do you recommend"
@@ -4,7 +4,6 @@ tier: "2a"
4
4
  description: "New user instruction mid-flight — STOP the current task, run the new one in full, ASK before resuming"
5
5
  alwaysApply: false
6
6
  triggers:
7
- - intent: "new instruction while a task is running"
8
7
  - keyword: "weiter"
9
8
  - keyword: "resume"
10
9
  - keyword: "continue"
@@ -237,6 +237,14 @@ numbered options; do NOT auto-rewrite prose without the user's knowledge:
237
237
  - Do NOT duplicate content that's already in `AGENTS.md` or `.github/copilot-instructions.md`.
238
238
  - Do NOT write docs just to document what you did — only document things others need to know.
239
239
  - If unsure whether a doc needs updating, **ask the user**.
240
+ - **Sibling-routing sentences are edited as a set, never alone.** When a skill's
241
+ `description:` carries a routing clause naming an overlapping sibling
242
+ (`Animated → pixar-storyteller`), editing it obliges re-reading every sibling
243
+ it names and every sibling that names it, so no user phrase ends up routed to
244
+ two skills and none ends up routed to neither. One-sided edits are how a
245
+ cluster's descriptions drift back into ambiguity between sweeps;
246
+ `lint_skill_descriptions` catches a *missing* clause, not an *inconsistent*
247
+ one.
240
248
 
241
249
  ## Output format
242
250
 
@@ -11,6 +11,11 @@ packs:
11
11
 
12
12
  # analysis-skill-router
13
13
 
14
+ A chooser, not a worker. It answers exactly one question — *which skill* — and
15
+ then gets out of the way. How to actually carry out the work belongs to
16
+ whichever skill this picks; a chooser that also explains the work reads like
17
+ its own fallback target, which is the defect this file was cut back from.
18
+
14
19
  ## When to use
15
20
 
16
21
  Use this skill when:
@@ -29,111 +34,75 @@ Do NOT use when:
29
34
 
30
35
  ## Procedure
31
36
 
32
- ### 1. Identify request scope
33
-
34
- Classify the request as one of:
35
-
36
- * full project analysis
37
- * architecture review
38
- * broad multi-layer debugging
39
- * framework-specific deep analysis
40
- * narrow root-cause analysis
41
- * performance/security specialist analysis
42
- * simple local code issue
43
-
44
- ### 2. Check whether deep analysis is justified
45
-
46
- Use deep analysis only if at least one is true:
47
-
48
- * the user explicitly asks for broad analysis
49
- * the system is unclear or unknown
50
- * the issue spans multiple layers
51
- * architecture reconstruction is required
52
- * the cause is not local and not obvious
53
-
54
- If none apply → do NOT route to a broad analysis skill.
55
-
56
- ### 3. Detect framework or system type
57
-
58
- Check whether the request clearly targets:
59
-
60
- * Laravel, Symfony, Zend/Laminas, Node/Express, React, Next.js
61
- * unknown / mixed stack
62
-
63
- ### 4. Route to the correct skill
37
+ ### 1. Classify the scope
64
38
 
65
- #### Broad / unknown system
39
+ Pick one: full project · architecture review · broad multi-layer debugging ·
40
+ framework-specific deep dive · narrow root cause · performance/security
41
+ specialist · simple local issue.
66
42
 
67
- * full project analysis or unclear stack → `universal-project-analysis`
68
- * unknown system, discovery-focused → `project-analysis-core`
43
+ **Broad scope requires a reason.** At least one must hold, or the answer is a
44
+ narrow specialist: the user asked for breadth · the system is unknown · the
45
+ issue spans layers · architecture must be reconstructed · the cause is
46
+ non-local.
69
47
 
70
- #### Root-cause analysis
48
+ ### 2. Detect the framework
71
49
 
72
- * concrete multi-cause problem → `project-analysis-hypothesis-driven`
73
- * bug-focused but not full-project → `bug-analyzer`
50
+ Laravel · Symfony · Zend/Laminas · Node/Express · React · Next.js · unknown or
51
+ mixed.
74
52
 
75
- #### Backend framework analysis
53
+ ### 3. Read the decision table
76
54
 
77
- * Laravel → `project-analysis-laravel`
78
- * Symfony → `project-analysis-symfony`
79
- * Zend/Laminas → `project-analysis-zend-laminas`
80
- * Node/Express → `project-analysis-node-express`
55
+ | Signal | Route to |
56
+ |---|---|
57
+ | Full audit, or unclear stack | `universal-project-analysis` |
58
+ | Unknown system, discovery-focused | `project-analysis-core` |
59
+ | Concrete problem, several plausible causes | `project-analysis-hypothesis-driven` |
60
+ | Bug-focused, not full-project | `bug-analyzer` |
61
+ | Laravel | `project-analysis-laravel` |
62
+ | Symfony | `project-analysis-symfony` |
63
+ | Zend/Laminas | `project-analysis-zend-laminas` |
64
+ | Node/Express | `project-analysis-node-express` |
65
+ | React state / render / hooks | `project-analysis-react` |
66
+ | Next.js SSR / cache / hydration | `project-analysis-nextjs` |
67
+ | Bottleneck | `performance-analysis` |
68
+ | Security concern | `security-audit` |
81
69
 
82
- #### Frontend / rendering analysis
83
-
84
- * React state/render/hooks issues → `project-analysis-react`
85
- * Next.js SSR/client/cache/hydration issues → `project-analysis-nextjs`
86
-
87
- #### Specialist follow-up routing
88
-
89
- * performance bottleneck → `performance-analysis`
90
- * security concern → `security-audit`
91
-
92
- ### 5. Validate routing quality
93
-
94
- Check:
95
-
96
- * the chosen skill is narrower than the broadest possible option
97
- * full-project analysis is actually justified if selected
98
- * framework-specific skill matches the explicit framework
99
- * no simpler specialist skill was skipped
70
+ Tie-break: **the narrowest row that still covers the request wins.**
100
71
 
101
72
  ## Output format
102
73
 
103
- 1. Selected skill
104
- 2. Reason for selection
105
- 3. Why broader alternatives were not chosen
106
- 4. Optional chained specialist skills
107
-
108
- ## Routing heuristics
109
-
110
- **Choose `universal-project-analysis` only if:** user explicitly wants full audit, architecture must be reconstructed, stack is unclear, multiple subsystems involved.
111
-
112
- **Choose `project-analysis-core` if:** broad discovery needed, framework deep-dive not yet justified.
113
-
114
- **Choose `project-analysis-hypothesis-driven` if:** problem is concrete, multiple causes plausible, main job is explanation not discovery.
115
-
116
- **Choose framework-specific analysis if:** framework is explicit, failure pattern is framework-shaped.
74
+ 1. The selected skill.
75
+ 2. The signal from step 1–2 that selected it.
76
+ 3. Why the next-broader row lost, when one was plausible.
77
+ 4. Any skill to chain afterwards — or "none".
117
78
 
118
- **Do NOT route broadly if:** one component or file is enough, fix is obvious and local, task is implementation not investigation.
79
+ One or two lines total. A routing verdict longer than the request it routes is
80
+ itself a routing failure.
119
81
 
120
82
  ## Examples
121
83
 
122
- **"Analyze this whole Laravel project"** → `universal-project-analysis` → chain `project-analysis-laravel`
123
- **"Hydration mismatch in Next.js"** → `project-analysis-nextjs` (no full-project needed)
124
- **"Bug could be cache, queue, or version mismatch"** → `project-analysis-hypothesis-driven`
125
- **"Change one React component"** → no analysis skill, use implementation skill
84
+ | Request | Route |
85
+ |---|---|
86
+ | "Analyze this whole Laravel project" | `universal-project-analysis`, chain `project-analysis-laravel` |
87
+ | "Hydration mismatch in Next.js" | `project-analysis-nextjs` — no full-project step |
88
+ | "Could be cache, queue, or a version mismatch" | `project-analysis-hypothesis-driven` |
89
+ | "Change one React component" | none — implementation skill |
126
90
 
127
91
  ## Gotcha
128
92
 
129
- * The most expensive skill is often not the best skill.
130
- * Broad analysis feels safe but reduces sharpness when the problem is already localized.
131
- * Framework-specific routing should happen as early as possible once the framework is explicit.
93
+ * **Size adjectives read as scope.** "Our *whole* Laravel app is slow" picks the
94
+ broad row on the word "whole", and the audit then spends its passes
95
+ rediscovering a stack the request already named. The step-2 framework signal
96
+ outranks size words — those are how frustration sounds, not scope.
97
+ * **Breadth feels safe and costs sharpness.** The most expensive choice is
98
+ rarely the best one once the problem is already localised.
99
+ * **Steps 1 and 2 disagreeing is a question, not a tie-break.** Ask which the
100
+ user meant instead of picking the broader row to be safe.
132
101
 
133
102
  ## Do NOT
134
103
 
135
104
  * Do NOT default to `universal-project-analysis`
136
- * Do NOT use full-project analysis for normal feature work
137
- * Do NOT choose a generic skill when a framework-specific one clearly fits
138
- * Do NOT route to deep analysis when a simple specialist skill is enough
105
+ * Do NOT choose a generic skill when a framework-specific row fits
139
106
  * Do NOT confuse discovery with root-cause investigation
107
+ * Do NOT re-import procedure, validation checklists, or output contracts from
108
+ the skills in the table — that is what this file was cut back from