@event4u/agent-config 1.33.0 → 1.34.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 (200) hide show
  1. package/.agent-src/commands/review-changes.md +13 -8
  2. package/.agent-src/personas/README.md +12 -21
  3. package/.agent-src/personas/_template-specialist/persona.md +89 -0
  4. package/.agent-src/personas/backend-architect.md +96 -0
  5. package/.agent-src/personas/eloquent-tamer.md +96 -0
  6. package/.agent-src/personas/frontend-engineer.md +100 -0
  7. package/.agent-src/personas/qa.md +27 -2
  8. package/.agent-src/personas/security-engineer.md +100 -0
  9. package/.agent-src/skills/accessibility-auditor/SKILL.md +132 -0
  10. package/.agent-src/skills/adr-create/SKILL.md +1 -0
  11. package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
  12. package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -0
  13. package/.agent-src/skills/agents-md-thin-root/SKILL.md +1 -0
  14. package/.agent-src/skills/ai-council/SKILL.md +1 -0
  15. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -0
  16. package/.agent-src/skills/analysis-skill-router/SKILL.md +1 -0
  17. package/.agent-src/skills/api-design/SKILL.md +3 -0
  18. package/.agent-src/skills/api-endpoint/SKILL.md +1 -0
  19. package/.agent-src/skills/api-testing/SKILL.md +1 -0
  20. package/.agent-src/skills/architecture-review-lens/SKILL.md +137 -0
  21. package/.agent-src/skills/artisan-commands/SKILL.md +1 -0
  22. package/.agent-src/skills/async-python-patterns/SKILL.md +1 -0
  23. package/.agent-src/skills/authz-review/SKILL.md +4 -0
  24. package/.agent-src/skills/aws-infrastructure/SKILL.md +1 -0
  25. package/.agent-src/skills/blade-ui/SKILL.md +1 -0
  26. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +3 -0
  27. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -0
  28. package/.agent-src/skills/check-refs/SKILL.md +1 -0
  29. package/.agent-src/skills/code-refactoring/SKILL.md +1 -0
  30. package/.agent-src/skills/code-review/SKILL.md +1 -0
  31. package/.agent-src/skills/command-routing/SKILL.md +1 -0
  32. package/.agent-src/skills/command-writing/SKILL.md +1 -0
  33. package/.agent-src/skills/composer-packages/SKILL.md +1 -0
  34. package/.agent-src/skills/context-authoring/SKILL.md +1 -0
  35. package/.agent-src/skills/context-document/SKILL.md +1 -0
  36. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -0
  37. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +1 -0
  38. package/.agent-src/skills/copilot-config/SKILL.md +1 -0
  39. package/.agent-src/skills/dashboard-design/SKILL.md +1 -0
  40. package/.agent-src/skills/data-flow-mapper/SKILL.md +1 -0
  41. package/.agent-src/skills/database/SKILL.md +3 -0
  42. package/.agent-src/skills/dcf-modeling/SKILL.md +1 -0
  43. package/.agent-src/skills/decision-record/SKILL.md +143 -0
  44. package/.agent-src/skills/deep-reading-analyst/SKILL.md +1 -0
  45. package/.agent-src/skills/defense-in-depth/SKILL.md +1 -0
  46. package/.agent-src/skills/dependency-upgrade/SKILL.md +1 -0
  47. package/.agent-src/skills/description-assist/SKILL.md +1 -0
  48. package/.agent-src/skills/design-review/SKILL.md +1 -0
  49. package/.agent-src/skills/devcontainer/SKILL.md +1 -0
  50. package/.agent-src/skills/developer-like-execution/SKILL.md +1 -0
  51. package/.agent-src/skills/docker/SKILL.md +1 -0
  52. package/.agent-src/skills/dto-creator/SKILL.md +1 -0
  53. package/.agent-src/skills/eloquent/SKILL.md +3 -0
  54. package/.agent-src/skills/error-handling-patterns/SKILL.md +1 -0
  55. package/.agent-src/skills/estimate-ticket/SKILL.md +1 -0
  56. package/.agent-src/skills/existing-ui-audit/SKILL.md +3 -0
  57. package/.agent-src/skills/fe-design/SKILL.md +4 -1
  58. package/.agent-src/skills/feature-planning/SKILL.md +1 -0
  59. package/.agent-src/skills/file-editor/SKILL.md +1 -0
  60. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -0
  61. package/.agent-src/skills/flux/SKILL.md +1 -0
  62. package/.agent-src/skills/form-handler/SKILL.md +145 -0
  63. package/.agent-src/skills/funnel-analysis/SKILL.md +1 -0
  64. package/.agent-src/skills/git-workflow/SKILL.md +1 -0
  65. package/.agent-src/skills/github-ci/SKILL.md +1 -0
  66. package/.agent-src/skills/grafana/SKILL.md +1 -0
  67. package/.agent-src/skills/guideline-writing/SKILL.md +1 -0
  68. package/.agent-src/skills/incident-commander/SKILL.md +140 -0
  69. package/.agent-src/skills/jira-integration/SKILL.md +1 -0
  70. package/.agent-src/skills/jobs-events/SKILL.md +1 -0
  71. package/.agent-src/skills/judge-bug-hunter/SKILL.md +1 -0
  72. package/.agent-src/skills/judge-code-quality/SKILL.md +1 -0
  73. package/.agent-src/skills/judge-security-auditor/SKILL.md +3 -0
  74. package/.agent-src/skills/judge-test-coverage/SKILL.md +1 -0
  75. package/.agent-src/skills/laravel/SKILL.md +1 -0
  76. package/.agent-src/skills/laravel-horizon/SKILL.md +1 -0
  77. package/.agent-src/skills/laravel-mail/SKILL.md +1 -0
  78. package/.agent-src/skills/laravel-middleware/SKILL.md +1 -0
  79. package/.agent-src/skills/laravel-notifications/SKILL.md +1 -0
  80. package/.agent-src/skills/laravel-pennant/SKILL.md +1 -0
  81. package/.agent-src/skills/laravel-pulse/SKILL.md +1 -0
  82. package/.agent-src/skills/laravel-reverb/SKILL.md +1 -0
  83. package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -0
  84. package/.agent-src/skills/laravel-validation/SKILL.md +1 -0
  85. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -0
  86. package/.agent-src/skills/lint-skills/SKILL.md +1 -0
  87. package/.agent-src/skills/livewire/SKILL.md +1 -0
  88. package/.agent-src/skills/livewire-architect/SKILL.md +158 -0
  89. package/.agent-src/skills/logging-monitoring/SKILL.md +1 -0
  90. package/.agent-src/skills/markitdown/SKILL.md +1 -0
  91. package/.agent-src/skills/mcp/SKILL.md +1 -0
  92. package/.agent-src/skills/mcp-builder/SKILL.md +1 -0
  93. package/.agent-src/skills/md-language-check/SKILL.md +1 -0
  94. package/.agent-src/skills/merge-conflicts/SKILL.md +1 -0
  95. package/.agent-src/skills/migration-architect/SKILL.md +119 -0
  96. package/.agent-src/skills/migration-creator/SKILL.md +1 -0
  97. package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +2 -1
  98. package/.agent-src/skills/module-management/SKILL.md +1 -0
  99. package/.agent-src/skills/multi-tenancy/SKILL.md +1 -0
  100. package/.agent-src/skills/okr-tree-modeling/SKILL.md +1 -0
  101. package/.agent-src/skills/openapi/SKILL.md +1 -0
  102. package/.agent-src/skills/override-management/SKILL.md +1 -0
  103. package/.agent-src/skills/performance/SKILL.md +1 -0
  104. package/.agent-src/skills/performance-analysis/SKILL.md +1 -0
  105. package/.agent-src/skills/persona-writing/SKILL.md +1 -0
  106. package/.agent-src/skills/pest-testing/SKILL.md +1 -0
  107. package/.agent-src/skills/php-coder/SKILL.md +1 -0
  108. package/.agent-src/skills/php-debugging/SKILL.md +1 -0
  109. package/.agent-src/skills/php-service/SKILL.md +1 -0
  110. package/.agent-src/skills/playwright-architect/SKILL.md +141 -0
  111. package/.agent-src/skills/playwright-testing/SKILL.md +1 -0
  112. package/.agent-src/skills/po-discovery/SKILL.md +127 -0
  113. package/.agent-src/skills/project-analysis-core/SKILL.md +1 -0
  114. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -0
  115. package/.agent-src/skills/project-analysis-laravel/SKILL.md +1 -0
  116. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +1 -0
  117. package/.agent-src/skills/project-analysis-node-express/SKILL.md +1 -0
  118. package/.agent-src/skills/project-analysis-react/SKILL.md +1 -0
  119. package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -0
  120. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +1 -0
  121. package/.agent-src/skills/project-analyzer/SKILL.md +1 -0
  122. package/.agent-src/skills/project-docs/SKILL.md +1 -0
  123. package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -0
  124. package/.agent-src/skills/prompt-optimizer/SKILL.md +1 -0
  125. package/.agent-src/skills/quality-tools/SKILL.md +1 -0
  126. package/.agent-src/skills/react-native-setup/SKILL.md +1 -0
  127. package/.agent-src/skills/react-shadcn-ui/SKILL.md +1 -0
  128. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -0
  129. package/.agent-src/skills/readme-writing/SKILL.md +1 -0
  130. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -0
  131. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -0
  132. package/.agent-src/skills/refine-prompt/SKILL.md +1 -0
  133. package/.agent-src/skills/refine-ticket/SKILL.md +1 -0
  134. package/.agent-src/skills/repomix-packer/SKILL.md +1 -0
  135. package/.agent-src/skills/requesting-code-review/SKILL.md +1 -0
  136. package/.agent-src/skills/review-routing/SKILL.md +1 -0
  137. package/.agent-src/skills/rice-prioritization/SKILL.md +1 -0
  138. package/.agent-src/skills/risk-officer/SKILL.md +141 -0
  139. package/.agent-src/skills/roadmap-management/SKILL.md +1 -0
  140. package/.agent-src/skills/roadmap-writing/SKILL.md +1 -0
  141. package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -0
  142. package/.agent-src/skills/rule-writing/SKILL.md +1 -0
  143. package/.agent-src/skills/script-writing/SKILL.md +1 -0
  144. package/.agent-src/skills/secrets-management/SKILL.md +1 -0
  145. package/.agent-src/skills/security/SKILL.md +1 -0
  146. package/.agent-src/skills/security-audit/SKILL.md +1 -0
  147. package/.agent-src/skills/sentry-integration/SKILL.md +1 -0
  148. package/.agent-src/skills/sequential-thinking/SKILL.md +1 -0
  149. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -0
  150. package/.agent-src/skills/skill-management/SKILL.md +1 -0
  151. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -0
  152. package/.agent-src/skills/skill-writing/SKILL.md +1 -0
  153. package/.agent-src/skills/sql-writing/SKILL.md +1 -0
  154. package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +149 -0
  155. package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -0
  156. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -0
  157. package/.agent-src/skills/tailwind-engineer/SKILL.md +130 -0
  158. package/.agent-src/skills/tech-debt-tracker/SKILL.md +152 -0
  159. package/.agent-src/skills/technical-specification/SKILL.md +1 -0
  160. package/.agent-src/skills/terraform/SKILL.md +1 -0
  161. package/.agent-src/skills/terragrunt/SKILL.md +1 -0
  162. package/.agent-src/skills/test-driven-development/SKILL.md +1 -0
  163. package/.agent-src/skills/test-performance/SKILL.md +1 -0
  164. package/.agent-src/skills/testing-anti-patterns/SKILL.md +1 -0
  165. package/.agent-src/skills/threat-modeling/SKILL.md +3 -0
  166. package/.agent-src/skills/token-optimizer/SKILL.md +1 -0
  167. package/.agent-src/skills/traefik/SKILL.md +1 -0
  168. package/.agent-src/skills/ui-component-architect/SKILL.md +153 -0
  169. package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -0
  170. package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -0
  171. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -0
  172. package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
  173. package/.agent-src/skills/validate-feature-fit/SKILL.md +1 -0
  174. package/.agent-src/skills/verify-completion-evidence/SKILL.md +1 -0
  175. package/.agent-src/skills/websocket/SKILL.md +1 -0
  176. package/.claude-plugin/marketplace.json +15 -1
  177. package/AGENTS.md +1 -0
  178. package/CHANGELOG.md +41 -0
  179. package/README.md +2 -2
  180. package/docs/architecture.md +1 -1
  181. package/docs/catalog.md +17 -3
  182. package/docs/contracts/file-ownership-matrix.json +506 -0
  183. package/docs/contracts/persona-schema.md +136 -0
  184. package/docs/contracts/skill-domains.md +143 -0
  185. package/docs/decisions/ADR-005-subagent-worktrees.md +120 -0
  186. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +114 -0
  187. package/docs/decisions/INDEX.md +3 -0
  188. package/docs/personas.md +115 -0
  189. package/package.json +1 -1
  190. package/scripts/_backfill_skill_domains.py +140 -0
  191. package/scripts/_emit_domain_table.py +35 -0
  192. package/scripts/install-hooks.sh +21 -4
  193. package/scripts/lint_skill_tools.py +168 -0
  194. package/scripts/schemas/skill.schema.json +6 -1
  195. package/scripts/skill_linter.py +19 -4
  196. package/scripts/skill_tools/__init__.py +22 -0
  197. package/scripts/skill_tools/audit_persona_coverage.py +147 -0
  198. package/scripts/skill_tools/run_block_d_eval.py +129 -0
  199. package/scripts/skill_tools/score_skill_relevance.py +169 -0
  200. package/scripts/skill_tools/suggest_skill_for_task.py +113 -0
@@ -2,6 +2,7 @@
2
2
  name: rtk-output-filtering
3
3
  description: "Use when running verbose CLI commands — wraps them with rtk (Rust Token Killer) for 60-90% token savings. Covers installation, configuration, and usage patterns."
4
4
  source: package
5
+ domain: process
5
6
  execution:
6
7
  type: assisted
7
8
  handler: shell
@@ -2,6 +2,7 @@
2
2
  name: rule-writing
3
3
  description: "Use when creating or editing a rule in .agent-src.uncompressed/rules/ — trigger wording, always vs auto classification, size budget — even when the user just says 'add a rule for X'."
4
4
  source: package
5
+ domain: process
5
6
  ---
6
7
 
7
8
  <!-- cloud_safe: degrade -->
@@ -2,6 +2,7 @@
2
2
  name: script-writing
3
3
  description: "Use when adding or editing any script under `scripts/` — `--quiet` flag, `_lib/script_output` helpers, silent Taskfile wiring, Iron-Law carve-outs — even when you just say 'add a check script for X'."
4
4
  source: package
5
+ domain: process
5
6
  ---
6
7
 
7
8
  <!-- cloud_safe: degrade -->
@@ -2,6 +2,7 @@
2
2
  name: secrets-management
3
3
  description: "Use when picking a secrets store, designing rotation, or wiring scanning gates — multi-cloud (Vault, AWS, Azure, GCP), CI, and Kubernetes — decision framework, provider deep-dives externalized."
4
4
  source: package
5
+ domain: devops
5
6
  status: active
6
7
  refresh_trigger: "A cited provider deprecates an auth method, OR External Secrets Operator ships a major version with breaking CRD changes, OR ≥30% of cited scanner tools change their gate semantics."
7
8
  sunset_criterion: "When provider docs (Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager) all converge on a single rotation + scanning standard AND consumer projects no longer cite this skill in PR reviews for two consecutive review cycles."
@@ -2,6 +2,7 @@
2
2
  name: security
3
3
  description: "Use when applying security best practices — authentication, authorization via Policies, CSRF protection, input sanitization, rate limiting, or secure coding."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # security
@@ -2,6 +2,7 @@
2
2
  name: security-audit
3
3
  description: "ONLY when user explicitly requests: security audit, vulnerability scan, or penetration test review. NOT for regular feature work."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # security-audit
@@ -2,6 +2,7 @@
2
2
  name: sentry-integration
3
3
  description: "Use when the user shares a Sentry URL, says "check Sentry", or wants to investigate production errors. Uses Sentry MCP tools for deep analysis."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # Sentry Skill
@@ -2,6 +2,7 @@
2
2
  name: sequential-thinking
3
3
  description: "ONLY when user explicitly requests: step-by-step reasoning, structured problem decomposition, or iterative analysis. NOT for regular coding tasks."
4
4
  source: package
5
+ domain: process
5
6
  ---
6
7
 
7
8
  # sequential-thinking
@@ -2,6 +2,7 @@
2
2
  name: skill-improvement-pipeline
3
3
  description: "ONLY when user explicitly requests: run the skill improvement pipeline after a learning was detected. Orchestrates capture, classify, create, validate, and apply."
4
4
  source: package
5
+ domain: process
5
6
  execution:
6
7
  type: assisted
7
8
  handler: internal
@@ -2,6 +2,7 @@
2
2
  name: skill-management
3
3
  description: "Use when compressing, decompressing, refactoring, or improving existing skills. Covers the full skill lifecycle from verbose → sharp → maintained."
4
4
  source: project
5
+ domain: process
5
6
  execution:
6
7
  type: assisted
7
8
  handler: internal
@@ -2,6 +2,7 @@
2
2
  name: skill-reviewer
3
3
  description: "Use when reviewing, auditing, or optimizing skills — validates against the 7 Skill Killers checklist and produces fix recommendations."
4
4
  source: package
5
+ domain: quality
5
6
  execution:
6
7
  type: assisted
7
8
  handler: internal
@@ -2,6 +2,7 @@
2
2
  name: skill-writing
3
3
  description: "Use when deciding 'should this be a skill or a rule?', creating/improving/reviewing agent skills, SKILL.md frontmatter, or procedure sections — even without saying 'skill-writing'."
4
4
  source: project
5
+ domain: process
5
6
  ---
6
7
 
7
8
  # skill-writing
@@ -2,6 +2,7 @@
2
2
  name: sql-writing
3
3
  description: "Use when writing raw SQL — MariaDB/MySQL syntax, parameterization, raw migrations, seeders with `DB::statement` — even when the user just pastes a query and asks 'why is this slow' without naming SQL."
4
4
  source: package
5
+ domain: engineering
5
6
  ---
6
7
 
7
8
  # sql
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: stakeholder-tradeoff
3
+ description: "Use when stakeholders pull a decision in different directions — frames each lens, builds a trade-off matrix, surfaces the cost of every choice — even if the user just says 'PO and ops disagree'."
4
+ personas:
5
+ - product-owner
6
+ - stakeholder
7
+ - critical-challenger
8
+ source: package
9
+ domain: product
10
+ ---
11
+
12
+ # stakeholder-tradeoff
13
+
14
+ > Make explicit who pays and who benefits when a decision pulls
15
+ > stakeholders in different directions. Builds a **stakeholder ×
16
+ > criterion matrix** so the trade-off is visible, not hidden in
17
+ > politics. Sibling of [`decision-record`](../decision-record/SKILL.md)
18
+ > — that one locks the choice; this one surfaces the *human cost*
19
+ > of each option before the lock.
20
+
21
+ ## When to use
22
+
23
+ - PO, ops, support, and engineering disagree on an approach and the
24
+ user wants the disagreement made legible.
25
+ - A decision benefits one segment at the cost of another (free vs
26
+ paid users, internal vs external, region A vs region B).
27
+ - A roadmap step has *un*declared trade-offs and the user wants
28
+ them surfaced before commit.
29
+ - German triggers: "Wer zahlt was?", "Stakeholder-Konflikt",
30
+ "Trade-off zwischen X und Y".
31
+
32
+ Do NOT use when:
33
+
34
+ - One stakeholder owns the decision unambiguously — surface their
35
+ decision and stop.
36
+ - The trade-off is technical-only (perf vs storage) — route to
37
+ [`decision-record`](../decision-record/SKILL.md).
38
+ - The trade-off is risk-only — route to
39
+ [`risk-officer`](../risk-officer/SKILL.md).
40
+
41
+ ## Procedure
42
+
43
+ ### 1. Identify the stakeholders
44
+
45
+ Each by **role**, not name. Roles are stable across people —
46
+ "on-call engineer" not "Anna". Include silent stakeholders the
47
+ room forgot (support, finance, legal, end-users, future-team).
48
+
49
+ ### 2. Capture each stakeholder's lens
50
+
51
+ For each stakeholder:
52
+
53
+ - **What they want** — outcome, in their voice.
54
+ - **What they fear** — the failure mode they cannot accept.
55
+ - **What they will trade** — what they will give up to get the
56
+ outcome.
57
+
58
+ If a lens is missing, mark `unknown` and surface it — do NOT invent
59
+ a position the stakeholder did not state.
60
+
61
+ ### 3. Build the matrix
62
+
63
+ | Criterion | PO | Ops | Support | Eng | End-user | ... |
64
+ |---|---|---|---|---|---|---|
65
+ | Time-to-ship | + | – | 0 | – | + | |
66
+ | Operational load | 0 | – | – | – | + | |
67
+ | ...
68
+
69
+ `+` benefits, `–` costs, `0` neutral. The columns are stakeholders;
70
+ the rows are criteria. Criteria that score `0` everywhere are
71
+ noise — drop.
72
+
73
+ ### 4. Surface the trade-off
74
+
75
+ Pick the top 2-3 criteria where the matrix splits stakeholders
76
+ hardest. State the trade-off in plain language:
77
+
78
+ > *"Picking option X means PO ships faster, but on-call carries
79
+ > more pages. Picking option Y means on-call sleeps, but PO slips
80
+ > two weeks."*
81
+
82
+ If no option splits the matrix unfavourably, the trade-off is
83
+ imaginary — surface that and stop.
84
+
85
+ ### 5. Recommend a path
86
+
87
+ Pick the option whose `–` cells are owned by stakeholders who can
88
+ execute mitigations. Avoid options where the cost lands on a
89
+ stakeholder who has no voice in the room. State the recommendation
90
+ explicitly with a one-sentence rationale.
91
+
92
+ ### 6. Validate the matrix
93
+
94
+ Verify before emitting: every stakeholder has wants / fears / trades
95
+ filled or marked `unknown`, the matrix has no row that scores `0`
96
+ everywhere, the trade-off paragraph names a concrete cost (not just
97
+ "there is a trade-off"), and the recommendation cites which `–`
98
+ cells the named owner can execute. Ensure no silent stakeholder
99
+ column is missing.
100
+
101
+ ## Output format
102
+
103
+ The trade-off report is a single block with these ordered fields:
104
+
105
+ 1. `Decision:` — one sentence framing the choice
106
+ 2. `Stakeholders:` — bullet list, each with wants / fears / trades
107
+ 3. `Matrix:` — markdown table with criteria rows and stakeholder columns
108
+ 4. `Trade-off in plain language:` — one paragraph naming the cost
109
+ 5. `Recommendation:`, `Rationale:`, `Next:` — explicit choice +
110
+ rationale + handoff target
111
+
112
+ ```
113
+ Stakeholder trade-off
114
+ Decision: <one sentence>
115
+
116
+ Stakeholders:
117
+ - <role> wants: <outcome> fears: <failure> trades: <what>
118
+ - ...
119
+
120
+ Matrix:
121
+ | Criterion | <SH 1> | <SH 2> | ... |
122
+ | ...
123
+
124
+ Trade-off in plain language:
125
+ <one paragraph>
126
+
127
+ Recommendation: <option>
128
+ Rationale: <one sentence>
129
+ Next: /decision-record to lock the choice
130
+ ```
131
+
132
+ ## Gotcha
133
+
134
+ - The room is rarely all the stakeholders. Add the silent ones
135
+ explicitly (support, future-team, end-users).
136
+ - A `+` everywhere column is suspect; either a stakeholder
137
+ understated the cost or you understated the cost.
138
+ - The "happy path" recommendation is the option with the cost on
139
+ someone who is *not in the room*. Resist it.
140
+
141
+ ## Do NOT
142
+
143
+ - Do NOT label stakeholders by name — roles only.
144
+ - Do NOT score before listing the stakeholders' own words; agent
145
+ ventriloquism is the failure mode.
146
+ - Do NOT pick the option that scores best on *all* stakeholders —
147
+ if it exists, the trade-off was imaginary; surface that.
148
+ - Do NOT lock the choice in this skill; hand off to
149
+ `decision-record`.
@@ -2,6 +2,7 @@
2
2
  name: subagent-orchestration
3
3
  description: "Use when orchestrating implementer/judge subagents — seven modes (do-and-judge ±two-stage, do-in-steps/parallel/worktrees, do-competitively, judge-with-debate) — models from .agent-settings.yml."
4
4
  source: package
5
+ domain: process
5
6
  ---
6
7
 
7
8
  # subagent-orchestration
@@ -159,6 +160,18 @@ step is under ~30 minutes. The branch-creation, context-switch, and
159
160
  worktree-cleanup cost dominates. Stick with mode 1 (do-and-judge)
160
161
  or mode 3 (do-in-steps) for those.
161
162
 
163
+ **Competitive variant — per-candidate isolation.** Mode 5
164
+ (`do-competitively`) + worktrees: each candidate runs in its own
165
+ worktree (no cross-candidate state leak). Selection rules:
166
+
167
+ - **No auto-merge.** Orchestrator never merges candidate branches.
168
+ Hard Floor per [`non-destructive-by-default`](../../rules/non-destructive-by-default.md) —
169
+ applies even under standing autonomy. ADR-005 records reasoning.
170
+ - **Ranked presentation.** Judge ranks 1..N with one-line
171
+ justifications; user picks winner.
172
+ - **Loser worktrees stay.** Orchestrator does not auto-delete losing
173
+ worktrees — user keeps option to harvest a partial idea before cleanup.
174
+
162
175
  ## Status taxonomy — every subagent return uses one envelope
163
176
 
164
177
  Every implementer or judge return must conform to
@@ -2,6 +2,7 @@
2
2
  name: systematic-debugging
3
3
  description: "Use when hitting a bug, test failure, crash, or unexpected behavior — enforces reproduce → isolate → hypothesize → verify before any fix — even when the user just says 'this is broken' or 'quick fix'."
4
4
  source: package
5
+ domain: discovery
5
6
  council_depth: deep
6
7
  ---
7
8
 
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: tailwind-engineer
3
+ description: "Use when writing or reviewing Tailwind CSS — utility-first, design-token discipline, no inline-style drift, responsive variants, dark mode — even on 'style this' or 'mach das hübsch'."
4
+ personas:
5
+ - frontend-engineer
6
+ source: package
7
+ domain: engineering
8
+ ---
9
+
10
+ # tailwind-engineer
11
+
12
+ > Apply utility-first discipline. Reach for design tokens before
13
+ > arbitrary values, compose with `@apply` only where it earns its
14
+ > keep, and reject inline `style=` drift. The skill is the **how**
15
+ > for any Tailwind-stack screen; pair with
16
+ > [`existing-ui-audit`](../existing-ui-audit/SKILL.md) for the **what
17
+ > already exists** and [`fe-design`](../fe-design/SKILL.md) for the
18
+ > **why**.
19
+
20
+ ## When to use
21
+
22
+ - Writing or reviewing Tailwind classes in Blade, Livewire, or React
23
+ components.
24
+ - A diff introduces inline `style=` for dynamic values, hex codes
25
+ not in `tailwind.config`, or `!important`.
26
+ - Class lists balloon past ~12 utilities and the component is
27
+ hard to read or duplicate.
28
+ - German triggers: "stile mit Tailwind", "design tokens nutzen",
29
+ "warum nicht inline?".
30
+
31
+ Do NOT use when:
32
+
33
+ - The stack is not Tailwind (vanilla CSS, CSS-in-JS, MUI) — skip.
34
+ - The question is component shape, not styling — route to
35
+ [`ui-component-architect`](../ui-component-architect/SKILL.md).
36
+ - An accessibility issue is the symptom (focus ring, contrast, hit
37
+ area) — route to [`accessibility-auditor`](../accessibility-auditor/SKILL.md).
38
+
39
+ ## Procedure
40
+
41
+ ### 1. Resolve to design tokens first
42
+
43
+ Inspect `tailwind.config.{js,ts}` (or the equivalent `@theme` block)
44
+ and identify the configured tokens. Map every requested colour,
45
+ radius, spacing, shadow, font-size to a configured token. If the design hands you `#3B82F6`, use
46
+ `bg-blue-500` (or the project's named token). Arbitrary values
47
+ (`bg-[#3B82F6]`, `mt-[17px]`) are a smell — accept only with a
48
+ one-line comment naming the design source.
49
+
50
+ ### 2. Compose, don't inline
51
+
52
+ Inline `style="..."` is allowed only for **runtime-computed values**
53
+ the build cannot know (server-pushed colour, animated transform
54
+ target). Static values inline are a regression — replace with a
55
+ utility, an arbitrary value, or a token extension.
56
+
57
+ ### 3. Order classes for scan-ability
58
+
59
+ Group by axis: layout → box-model → typography → colour → state
60
+ → responsive. Most projects pin this with `prettier-plugin-tailwindcss`;
61
+ if the plugin is configured, run it; if not, follow the order
62
+ manually. Reviewer should read intent in one pass.
63
+
64
+ ### 4. Extract only when duplicated ≥ 3 times
65
+
66
+ The first two repetitions are noise; the third is a pattern.
67
+ Extract via:
68
+
69
+ | Mechanism | When |
70
+ |---|---|
71
+ | Component (Blade/Livewire/React) | Different content, same shell |
72
+ | Class string constant | Same shell, different consumers in same file |
73
+ | `@apply` in CSS | Cross-file shared visual primitive (button, badge) |
74
+ | Tailwind plugin | Tokens or variants, not classes |
75
+
76
+ `@apply` for a one-off is a regression — keep utilities inline
77
+ until the third use earns extraction.
78
+
79
+ ### 5. Responsive + dark + state in that order
80
+
81
+ Class order within an axis: base → `sm:` → `md:` → `lg:` → `xl:` →
82
+ `dark:` → state (`hover:`, `focus:`, `disabled:`, `aria-*:`).
83
+ Mixing the order makes diffs noisy. State on top of dark on top
84
+ of responsive matches Tailwind's cascade and reads top-down.
85
+
86
+ ## Output format
87
+
88
+ When reviewing or proposing styles, return:
89
+
90
+ 1. Token map — every colour, spacing, radius, shadow, font-size mapped
91
+ to its configured token; arbitrary values flagged with the design
92
+ source they cite.
93
+ 2. Class list — ordered (layout → box-model → typography → colour →
94
+ state → responsive); inline-style use justified per element.
95
+ 3. Extraction + risk call-out — component / constant / `@apply` / none
96
+ with reason; risks named (arbitrary values, `!important`, dark-mode
97
+ gaps, non-token references).
98
+
99
+ Concrete shape:
100
+
101
+ ```
102
+ Element: <selector or component name>
103
+ Token map: <colour/spacing/etc → config token>
104
+ Class list: <ordered classes>
105
+ Inline style: <only if runtime-computed; else "none">
106
+ Extraction: <component | constant | @apply | none — reason>
107
+ Risks: <arbitrary values, !important, dark-mode gaps>
108
+ ```
109
+
110
+ ## Gotcha
111
+
112
+ - `space-x-*` / `space-y-*` collide with `flex-wrap` and RTL — use
113
+ `gap-*` on the flex/grid parent unless the design demands otherwise.
114
+ - `dark:` variants need a token map in both modes; one-sided dark
115
+ styling is half a feature.
116
+ - Arbitrary values (`mt-[17px]`) survive Tailwind upgrades but
117
+ break the design system; they accumulate silently.
118
+ - `@apply` inside component CSS interacts with PurgeCSS — keep it
119
+ in files Tailwind scans, not in vendor CSS.
120
+
121
+ ## Do NOT
122
+
123
+ - Do NOT add `!important` to win a specificity fight; restructure
124
+ the cascade or extract the conflicting style.
125
+ - Do NOT introduce a new colour outside `tailwind.config` without
126
+ also adding the token; one-off hex codes drift the system.
127
+ - Do NOT use `@apply` to avoid utility verbosity inside a single
128
+ component — extract the component instead.
129
+ - Do NOT ship `style=` for static values; that is a CSS regression
130
+ the linter will not catch.
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: tech-debt-tracker
3
+ description: "Use when surfacing tech debt as trackable items — interest-vs-principal framing, prioritisation by carrying cost, repayment plan — even if the user just says 'this codebase is a mess'."
4
+ personas:
5
+ - senior-engineer
6
+ - product-owner
7
+ - critical-challenger
8
+ source: package
9
+ domain: process
10
+ ---
11
+
12
+ # tech-debt-tracker
13
+
14
+ > Turn vague "this is messy" complaints into a **ranked debt ledger**
15
+ > with carrying-cost estimates and a repayment plan the team can
16
+ > execute. Frames debt as **principal** (the gap) plus **interest**
17
+ > (what we keep paying because the gap exists). Output is copy-paste
18
+ > ready; ticket / backlog write-back is user-gated.
19
+
20
+ ## When to use
21
+
22
+ - The user lists code smells, dead code, or "we should refactor X"
23
+ and wants them turned into trackable items.
24
+ - A retro surfaced multiple debt complaints; the team needs them
25
+ ranked, not all addressed at once.
26
+ - A new initiative is about to add features on top of debt; the
27
+ team wants the carrying cost surfaced before committing.
28
+ - German triggers: "Tech-Debt-Liste", "wo bremst es uns?",
29
+ "Aufräumen-Plan".
30
+
31
+ Do NOT use when:
32
+
33
+ - The user wants a single bug fixed — route to `/bug-fix`.
34
+ - The complaint is about process, not code (slow CI, noisy alerts) —
35
+ surface as ops debt, not code debt; consider escalating to PO.
36
+ - The "debt" is actually a missing feature — route to `po-discovery`.
37
+
38
+ ## Procedure
39
+
40
+ ### 1. Inspect inputs and collect candidate debt items
41
+
42
+ Read the input (retro notes, code-review threads, pasted complaints,
43
+ agent observations). Analyze each source for one candidate per
44
+ bullet, no editing yet.
45
+
46
+ ### 2. Classify each item
47
+
48
+ | Class | Examples |
49
+ |---|---|
50
+ | Code debt | Smells, duplication, dead code, weak tests, missing types |
51
+ | Architecture debt | Coupling, layer violations, missing seams |
52
+ | Operations debt | Manual deploys, alert fatigue, runbook gaps |
53
+ | Knowledge debt | Stale docs, single-owner systems, missing onboarding |
54
+
55
+ Items spanning two classes split into two entries — never merge.
56
+
57
+ ### 3. Estimate principal and interest
58
+
59
+ For each item:
60
+
61
+ - **Principal** — rough effort to repay (S / M / L; days, not hours).
62
+ - **Interest** — what we keep paying *every week / sprint / month*
63
+ because the debt exists. Quantify or mark `unknown` (unknown
64
+ interest is itself a finding — surface it).
65
+
66
+ Carrying cost = `interest × time-until-repaid`. High principal +
67
+ zero interest → leave it. Low principal + recurring interest →
68
+ top of the queue.
69
+
70
+ ### 4. Rank by `interest ÷ principal`
71
+
72
+ Sort descending. The top ten are the candidates. Items below the
73
+ top ten get a single line each (so they are not lost) but no
74
+ deeper analysis — debt-list bloat is itself a debt.
75
+
76
+ ### 5. Shape a repayment plan
77
+
78
+ For the top 3-5 items:
79
+
80
+ - **Repayment shape** — single PR · multi-PR series · campaign ·
81
+ re-architecture.
82
+ - **Owner role** — engineering · ops · PO · platform team.
83
+ - **Trigger** — what makes us pay this *next* (e.g. "before adding
84
+ feature X", "when test runtime > 10 min", "next quarterly").
85
+
86
+ Items without a trigger sit forever. A trigger that is "someday"
87
+ is no trigger — push back.
88
+
89
+ ### 6. Issue a verdict
90
+
91
+ | Verdict | When to issue |
92
+ |---|---|
93
+ | `track` | Items added to the ledger; no immediate action |
94
+ | `pay-now` | One or more items have a trigger that already fired |
95
+ | `block` | New feature work blocked until top item is repaid (rare) |
96
+
97
+ ### 7. Validate the ledger
98
+
99
+ Verify before emitting: every top item has a class, principal,
100
+ interest (or `unknown`), trigger, and owner; the ranking matches
101
+ `interest ÷ principal`; tail items have one line each. Ensure no
102
+ "someday" triggers and no agent-owned repayment owners slipped in.
103
+
104
+ ## Output format
105
+
106
+ The ledger is a single block with these ordered fields:
107
+
108
+ 1. `Inventory:` — count and classes touched
109
+ 2. `Top items:` — numbered list ranked by `interest ÷ principal`,
110
+ each with class, principal, interest, trigger, owner, shape
111
+ 3. `Tail:` — one-line bullets for tracked-but-deferred items
112
+ 4. `Verdict:` — exactly one of `track` / `pay-now` / `block`
113
+ 5. `Next:` — handoff target (`/adr-create` or backlog write-back)
114
+
115
+ ```
116
+ Tech-Debt Ledger
117
+ Inventory: <count> items, <classes touched>
118
+
119
+ Top items (interest ÷ principal):
120
+ 1. [arch] <item> Principal: M Interest: high (3 hrs/sprint)
121
+ Trigger: <condition> Owner: <role> Shape: <PR / series / campaign>
122
+ 2. [code] <item> Principal: S Interest: med ...
123
+ ...
124
+
125
+ Tail (tracked, no immediate action):
126
+ - <item>
127
+ - <item>
128
+
129
+ Verdict: track | pay-now | block
130
+ Next: /adr-create (if a tradeoff lock is needed) | backlog write-back
131
+ ```
132
+
133
+ ## Gotcha
134
+
135
+ - "Refactor X" is not a debt item — it is a wish. The item must
136
+ name *the gap* and *what it costs*.
137
+ - Interest the team cannot measure is real but invisible. Mark
138
+ `unknown` and ask a probe ("how often do you hit this?") rather
139
+ than inventing a number.
140
+ - A debt list with no trigger is paperwork. Reject items the team
141
+ has no plan to ever repay.
142
+
143
+ ## Do NOT
144
+
145
+ - Do NOT enumerate every smell in the codebase — the top ten plus
146
+ a tail is the contract.
147
+ - Do NOT propose repayment owners the agent itself owns; debt
148
+ repayment belongs to a human role.
149
+ - Do NOT push items into Jira / Linear without explicit ask;
150
+ output is copy-paste ready, write-back is gated.
151
+ - Do NOT silently inflate principal estimates to discourage repayment
152
+ the team should do.
@@ -2,6 +2,7 @@
2
2
  name: technical-specification
3
3
  description: "Use when the user says "write a spec", "create RFC", "write a PRD", or "document this decision". Writes technical specifications, PRDs, RFCs, and ADRs with clear structure."
4
4
  source: package
5
+ domain: product
5
6
  council_depth: deep
6
7
  ---
7
8
 
@@ -2,6 +2,7 @@
2
2
  name: terraform
3
3
  description: "Use when writing Terraform — AWS modules, resources, variables, outputs, remote state — even when the user just says 'provision this infra' or 'add an S3 bucket' without naming Terraform."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # terraform
@@ -2,6 +2,7 @@
2
2
  name: terragrunt
3
3
  description: "Use when working with Terragrunt — DRY multi-env configs, module dependencies, remote state orchestration — even when the user just says 'deploy this to staging and prod' without naming Terragrunt."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # terragrunt
@@ -2,6 +2,7 @@
2
2
  name: test-driven-development
3
3
  description: "Use when implementing a feature, fixing a bug, or refactoring — write a failing test first, then the code — even if the user just says 'add this function' or 'fix this bug'."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # test-driven-development
@@ -2,6 +2,7 @@
2
2
  name: test-performance
3
3
  description: "Use when optimizing test suite performance — database setup, seeder optimization, parallel testing, CI pipeline efficiency, or RefreshDatabase alternatives."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # test-performance
@@ -2,6 +2,7 @@
2
2
  name: testing-anti-patterns
3
3
  description: "Use BEFORE writing or changing tests, adding mocks, or putting test-only methods on production classes — five Iron Laws and gates against mocking-the-mock, production pollution, silent partial mocks."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # testing-anti-patterns
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  name: threat-modeling
3
3
  description: "Use when adding auth, webhooks, uploads, queues, secrets, tenant boundaries, or public endpoints — produces trust boundaries + abuse cases mapped to files, BEFORE implementation."
4
+ personas:
5
+ - security-engineer
4
6
  source: package
7
+ domain: quality
5
8
  council_depth: deep
6
9
  ---
7
10
 
@@ -2,6 +2,7 @@
2
2
  name: token-optimizer
3
3
  description: "Use BEFORE any verbose CLI run, large file read, doc conversion, or near-context handoff — single decision tree keyed by intent that cites the canonical token-saving asset. Consult before the action."
4
4
  source: package
5
+ domain: process
5
6
  execution:
6
7
  type: assisted
7
8
  handler: shell
@@ -2,6 +2,7 @@
2
2
  name: traefik
3
3
  description: "Use when setting up Traefik as a local reverse proxy — real domains on 127.0.0.1, trusted HTTPS via mkcert, automatic service discovery, and multi-project routing."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # Traefik Skill