@event4u/agent-config 1.32.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.
- package/.agent-src/commands/research/deep.md +149 -0
- package/.agent-src/commands/research/report.md +134 -0
- package/.agent-src/commands/research.md +43 -13
- package/.agent-src/commands/review-changes.md +13 -8
- package/.agent-src/personas/README.md +12 -21
- package/.agent-src/personas/_template-specialist/persona.md +89 -0
- package/.agent-src/personas/backend-architect.md +96 -0
- package/.agent-src/personas/eloquent-tamer.md +96 -0
- package/.agent-src/personas/frontend-engineer.md +100 -0
- package/.agent-src/personas/qa.md +27 -2
- package/.agent-src/personas/security-engineer.md +100 -0
- package/.agent-src/skills/accessibility-auditor/SKILL.md +132 -0
- package/.agent-src/skills/adr-create/SKILL.md +1 -0
- package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -0
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +1 -0
- package/.agent-src/skills/ai-council/SKILL.md +1 -0
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -0
- package/.agent-src/skills/analysis-skill-router/SKILL.md +1 -0
- package/.agent-src/skills/api-design/SKILL.md +3 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +1 -0
- package/.agent-src/skills/api-testing/SKILL.md +1 -0
- package/.agent-src/skills/architecture-review-lens/SKILL.md +137 -0
- package/.agent-src/skills/artisan-commands/SKILL.md +1 -0
- package/.agent-src/skills/async-python-patterns/SKILL.md +1 -0
- package/.agent-src/skills/authz-review/SKILL.md +4 -0
- package/.agent-src/skills/aws-infrastructure/SKILL.md +1 -0
- package/.agent-src/skills/blade-ui/SKILL.md +1 -0
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +3 -0
- package/.agent-src/skills/bug-analyzer/SKILL.md +1 -0
- package/.agent-src/skills/check-refs/SKILL.md +1 -0
- package/.agent-src/skills/code-refactoring/SKILL.md +1 -0
- package/.agent-src/skills/code-review/SKILL.md +1 -0
- package/.agent-src/skills/command-routing/SKILL.md +1 -0
- package/.agent-src/skills/command-writing/SKILL.md +1 -0
- package/.agent-src/skills/composer-packages/SKILL.md +1 -0
- package/.agent-src/skills/context-authoring/SKILL.md +1 -0
- package/.agent-src/skills/context-document/SKILL.md +1 -0
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -0
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +1 -0
- package/.agent-src/skills/copilot-config/SKILL.md +1 -0
- package/.agent-src/skills/dashboard-design/SKILL.md +1 -0
- package/.agent-src/skills/data-flow-mapper/SKILL.md +1 -0
- package/.agent-src/skills/database/SKILL.md +3 -0
- package/.agent-src/skills/dcf-modeling/SKILL.md +1 -0
- package/.agent-src/skills/decision-record/SKILL.md +143 -0
- package/.agent-src/skills/deep-reading-analyst/SKILL.md +1 -0
- package/.agent-src/skills/defense-in-depth/SKILL.md +1 -0
- package/.agent-src/skills/dependency-upgrade/SKILL.md +1 -0
- package/.agent-src/skills/description-assist/SKILL.md +1 -0
- package/.agent-src/skills/design-review/SKILL.md +1 -0
- package/.agent-src/skills/devcontainer/SKILL.md +1 -0
- package/.agent-src/skills/developer-like-execution/SKILL.md +1 -0
- package/.agent-src/skills/docker/SKILL.md +1 -0
- package/.agent-src/skills/dto-creator/SKILL.md +1 -0
- package/.agent-src/skills/eloquent/SKILL.md +3 -0
- package/.agent-src/skills/error-handling-patterns/SKILL.md +1 -0
- package/.agent-src/skills/estimate-ticket/SKILL.md +1 -0
- package/.agent-src/skills/existing-ui-audit/SKILL.md +3 -0
- package/.agent-src/skills/fe-design/SKILL.md +4 -1
- package/.agent-src/skills/feature-planning/SKILL.md +1 -0
- package/.agent-src/skills/file-editor/SKILL.md +1 -0
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -0
- package/.agent-src/skills/flux/SKILL.md +1 -0
- package/.agent-src/skills/form-handler/SKILL.md +145 -0
- package/.agent-src/skills/funnel-analysis/SKILL.md +1 -0
- package/.agent-src/skills/git-workflow/SKILL.md +1 -0
- package/.agent-src/skills/github-ci/SKILL.md +1 -0
- package/.agent-src/skills/grafana/SKILL.md +1 -0
- package/.agent-src/skills/guideline-writing/SKILL.md +1 -0
- package/.agent-src/skills/incident-commander/SKILL.md +140 -0
- package/.agent-src/skills/jira-integration/SKILL.md +1 -0
- package/.agent-src/skills/jobs-events/SKILL.md +1 -0
- package/.agent-src/skills/judge-bug-hunter/SKILL.md +1 -0
- package/.agent-src/skills/judge-code-quality/SKILL.md +1 -0
- package/.agent-src/skills/judge-security-auditor/SKILL.md +3 -0
- package/.agent-src/skills/judge-test-coverage/SKILL.md +1 -0
- package/.agent-src/skills/laravel/SKILL.md +1 -0
- package/.agent-src/skills/laravel-horizon/SKILL.md +1 -0
- package/.agent-src/skills/laravel-mail/SKILL.md +1 -0
- package/.agent-src/skills/laravel-middleware/SKILL.md +1 -0
- package/.agent-src/skills/laravel-notifications/SKILL.md +1 -0
- package/.agent-src/skills/laravel-pennant/SKILL.md +1 -0
- package/.agent-src/skills/laravel-pulse/SKILL.md +1 -0
- package/.agent-src/skills/laravel-reverb/SKILL.md +1 -0
- package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -0
- package/.agent-src/skills/laravel-validation/SKILL.md +1 -0
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -0
- package/.agent-src/skills/lint-skills/SKILL.md +1 -0
- package/.agent-src/skills/livewire/SKILL.md +1 -0
- package/.agent-src/skills/livewire-architect/SKILL.md +158 -0
- package/.agent-src/skills/logging-monitoring/SKILL.md +1 -0
- package/.agent-src/skills/markitdown/SKILL.md +1 -0
- package/.agent-src/skills/mcp/SKILL.md +1 -0
- package/.agent-src/skills/mcp-builder/SKILL.md +1 -0
- package/.agent-src/skills/md-language-check/SKILL.md +1 -0
- package/.agent-src/skills/merge-conflicts/SKILL.md +1 -0
- package/.agent-src/skills/migration-architect/SKILL.md +119 -0
- package/.agent-src/skills/migration-creator/SKILL.md +1 -0
- package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +2 -1
- package/.agent-src/skills/module-management/SKILL.md +1 -0
- package/.agent-src/skills/multi-tenancy/SKILL.md +1 -0
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +1 -0
- package/.agent-src/skills/openapi/SKILL.md +1 -0
- package/.agent-src/skills/override-management/SKILL.md +1 -0
- package/.agent-src/skills/performance/SKILL.md +1 -0
- package/.agent-src/skills/performance-analysis/SKILL.md +1 -0
- package/.agent-src/skills/persona-writing/SKILL.md +1 -0
- package/.agent-src/skills/pest-testing/SKILL.md +1 -0
- package/.agent-src/skills/php-coder/SKILL.md +1 -0
- package/.agent-src/skills/php-debugging/SKILL.md +1 -0
- package/.agent-src/skills/php-service/SKILL.md +1 -0
- package/.agent-src/skills/playwright-architect/SKILL.md +141 -0
- package/.agent-src/skills/playwright-testing/SKILL.md +1 -0
- package/.agent-src/skills/po-discovery/SKILL.md +127 -0
- package/.agent-src/skills/project-analysis-core/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-laravel/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-nextjs/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-node-express/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-react/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -0
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +1 -0
- package/.agent-src/skills/project-analyzer/SKILL.md +1 -0
- package/.agent-src/skills/project-docs/SKILL.md +1 -0
- package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -0
- package/.agent-src/skills/prompt-optimizer/SKILL.md +1 -0
- package/.agent-src/skills/quality-tools/SKILL.md +1 -0
- package/.agent-src/skills/react-native-setup/SKILL.md +1 -0
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +1 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -0
- package/.agent-src/skills/readme-writing/SKILL.md +1 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +1 -0
- package/.agent-src/skills/receiving-code-review/SKILL.md +1 -0
- package/.agent-src/skills/refine-prompt/SKILL.md +1 -0
- package/.agent-src/skills/refine-ticket/SKILL.md +1 -0
- package/.agent-src/skills/repomix-packer/SKILL.md +1 -0
- package/.agent-src/skills/requesting-code-review/SKILL.md +1 -0
- package/.agent-src/skills/review-routing/SKILL.md +1 -0
- package/.agent-src/skills/rice-prioritization/SKILL.md +1 -0
- package/.agent-src/skills/risk-officer/SKILL.md +141 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +1 -0
- package/.agent-src/skills/roadmap-writing/SKILL.md +1 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -0
- package/.agent-src/skills/rule-writing/SKILL.md +1 -0
- package/.agent-src/skills/script-writing/SKILL.md +1 -0
- package/.agent-src/skills/secrets-management/SKILL.md +1 -0
- package/.agent-src/skills/security/SKILL.md +1 -0
- package/.agent-src/skills/security-audit/SKILL.md +1 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +1 -0
- package/.agent-src/skills/sequential-thinking/SKILL.md +1 -0
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -0
- package/.agent-src/skills/skill-management/SKILL.md +1 -0
- package/.agent-src/skills/skill-reviewer/SKILL.md +1 -0
- package/.agent-src/skills/skill-writing/SKILL.md +1 -0
- package/.agent-src/skills/sql-writing/SKILL.md +1 -0
- package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +149 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +1 -0
- package/.agent-src/skills/tailwind-engineer/SKILL.md +130 -0
- package/.agent-src/skills/tech-debt-tracker/SKILL.md +152 -0
- package/.agent-src/skills/technical-specification/SKILL.md +1 -0
- package/.agent-src/skills/terraform/SKILL.md +1 -0
- package/.agent-src/skills/terragrunt/SKILL.md +1 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +1 -0
- package/.agent-src/skills/test-performance/SKILL.md +1 -0
- package/.agent-src/skills/testing-anti-patterns/SKILL.md +1 -0
- package/.agent-src/skills/threat-modeling/SKILL.md +3 -0
- package/.agent-src/skills/token-optimizer/SKILL.md +1 -0
- package/.agent-src/skills/traefik/SKILL.md +1 -0
- package/.agent-src/skills/ui-component-architect/SKILL.md +153 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -0
- package/.agent-src/skills/upstream-contribute/SKILL.md +1 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/.agent-src/skills/validate-feature-fit/SKILL.md +1 -0
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +1 -0
- package/.agent-src/skills/websocket/SKILL.md +1 -0
- package/.claude-plugin/marketplace.json +17 -1
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +68 -0
- package/README.md +3 -3
- package/docs/architecture.md +3 -3
- package/docs/catalog.md +26 -5
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/file-ownership-matrix.json +560 -0
- package/docs/contracts/persona-schema.md +136 -0
- package/docs/contracts/skill-domains.md +143 -0
- package/docs/decisions/ADR-005-subagent-worktrees.md +120 -0
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +114 -0
- package/docs/decisions/INDEX.md +3 -0
- package/docs/getting-started.md +1 -1
- package/docs/guidelines/agent-infra/5w2h-analysis.md +260 -0
- package/docs/guidelines/agent-infra/critical-thinking.md +156 -0
- package/docs/guidelines/agent-infra/first-principles.md +192 -0
- package/docs/guidelines/agent-infra/six-hats.md +353 -0
- package/docs/guidelines/agent-infra/systems-thinking.md +220 -0
- package/docs/personas.md +115 -0
- package/package.json +1 -1
- package/scripts/_backfill_skill_domains.py +140 -0
- package/scripts/_emit_domain_table.py +35 -0
- package/scripts/install-hooks.sh +21 -4
- package/scripts/lint_skill_tools.py +168 -0
- package/scripts/schemas/skill.schema.json +6 -1
- package/scripts/skill_linter.py +19 -4
- package/scripts/skill_tools/__init__.py +22 -0
- package/scripts/skill_tools/audit_persona_coverage.py +147 -0
- package/scripts/skill_tools/run_block_d_eval.py +129 -0
- package/scripts/skill_tools/score_skill_relevance.py +169 -0
- package/scripts/skill_tools/suggest_skill_for_task.py +113 -0
|
@@ -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: 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
|