@event4u/agent-config 1.33.0 → 1.35.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 (218) hide show
  1. package/.agent-src/commands/review-changes.md +13 -8
  2. package/.agent-src/commands/roadmap/process-full.md +17 -15
  3. package/.agent-src/contexts/execution/roadmap-process-loop.md +11 -10
  4. package/.agent-src/personas/README.md +12 -21
  5. package/.agent-src/personas/_template-specialist/persona.md +89 -0
  6. package/.agent-src/personas/backend-architect.md +96 -0
  7. package/.agent-src/personas/discovery-lead.md +99 -0
  8. package/.agent-src/personas/eloquent-tamer.md +96 -0
  9. package/.agent-src/personas/frontend-engineer.md +100 -0
  10. package/.agent-src/personas/product-owner.md +71 -52
  11. package/.agent-src/personas/qa.md +27 -2
  12. package/.agent-src/personas/revops-maintainer.md +100 -0
  13. package/.agent-src/personas/security-engineer.md +100 -0
  14. package/.agent-src/personas/tech-writer.md +99 -0
  15. package/.agent-src/skills/accessibility-auditor/SKILL.md +132 -0
  16. package/.agent-src/skills/adr-create/SKILL.md +1 -0
  17. package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
  18. package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -0
  19. package/.agent-src/skills/agents-md-thin-root/SKILL.md +1 -0
  20. package/.agent-src/skills/ai-council/SKILL.md +1 -0
  21. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -0
  22. package/.agent-src/skills/analysis-skill-router/SKILL.md +1 -0
  23. package/.agent-src/skills/api-design/SKILL.md +3 -0
  24. package/.agent-src/skills/api-endpoint/SKILL.md +1 -0
  25. package/.agent-src/skills/api-testing/SKILL.md +1 -0
  26. package/.agent-src/skills/architecture-review-lens/SKILL.md +137 -0
  27. package/.agent-src/skills/artisan-commands/SKILL.md +1 -0
  28. package/.agent-src/skills/async-python-patterns/SKILL.md +1 -0
  29. package/.agent-src/skills/authz-review/SKILL.md +4 -0
  30. package/.agent-src/skills/aws-infrastructure/SKILL.md +1 -0
  31. package/.agent-src/skills/blade-ui/SKILL.md +1 -0
  32. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +3 -0
  33. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -0
  34. package/.agent-src/skills/check-refs/SKILL.md +1 -0
  35. package/.agent-src/skills/code-refactoring/SKILL.md +1 -0
  36. package/.agent-src/skills/code-review/SKILL.md +1 -0
  37. package/.agent-src/skills/command-routing/SKILL.md +1 -0
  38. package/.agent-src/skills/command-writing/SKILL.md +1 -0
  39. package/.agent-src/skills/competitive-positioning/SKILL.md +152 -0
  40. package/.agent-src/skills/composer-packages/SKILL.md +1 -0
  41. package/.agent-src/skills/context-authoring/SKILL.md +1 -0
  42. package/.agent-src/skills/context-document/SKILL.md +1 -0
  43. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -0
  44. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +1 -0
  45. package/.agent-src/skills/copilot-config/SKILL.md +1 -0
  46. package/.agent-src/skills/customer-research/SKILL.md +116 -0
  47. package/.agent-src/skills/dashboard-design/SKILL.md +1 -0
  48. package/.agent-src/skills/data-flow-mapper/SKILL.md +1 -0
  49. package/.agent-src/skills/database/SKILL.md +3 -0
  50. package/.agent-src/skills/dcf-modeling/SKILL.md +1 -0
  51. package/.agent-src/skills/decision-record/SKILL.md +218 -0
  52. package/.agent-src/skills/deep-reading-analyst/SKILL.md +1 -0
  53. package/.agent-src/skills/defense-in-depth/SKILL.md +1 -0
  54. package/.agent-src/skills/dependency-upgrade/SKILL.md +1 -0
  55. package/.agent-src/skills/description-assist/SKILL.md +1 -0
  56. package/.agent-src/skills/design-review/SKILL.md +1 -0
  57. package/.agent-src/skills/devcontainer/SKILL.md +1 -0
  58. package/.agent-src/skills/developer-like-execution/SKILL.md +1 -0
  59. package/.agent-src/skills/discovery-interview/SKILL.md +152 -0
  60. package/.agent-src/skills/docker/SKILL.md +1 -0
  61. package/.agent-src/skills/dto-creator/SKILL.md +1 -0
  62. package/.agent-src/skills/eloquent/SKILL.md +3 -0
  63. package/.agent-src/skills/error-handling-patterns/SKILL.md +1 -0
  64. package/.agent-src/skills/estimate-ticket/SKILL.md +1 -0
  65. package/.agent-src/skills/existing-ui-audit/SKILL.md +3 -0
  66. package/.agent-src/skills/fe-design/SKILL.md +4 -1
  67. package/.agent-src/skills/feature-planning/SKILL.md +1 -0
  68. package/.agent-src/skills/file-editor/SKILL.md +1 -0
  69. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -0
  70. package/.agent-src/skills/flux/SKILL.md +1 -0
  71. package/.agent-src/skills/form-handler/SKILL.md +145 -0
  72. package/.agent-src/skills/funnel-analysis/SKILL.md +1 -0
  73. package/.agent-src/skills/git-workflow/SKILL.md +1 -0
  74. package/.agent-src/skills/github-ci/SKILL.md +1 -0
  75. package/.agent-src/skills/grafana/SKILL.md +1 -0
  76. package/.agent-src/skills/guideline-writing/SKILL.md +1 -0
  77. package/.agent-src/skills/incident-commander/SKILL.md +140 -0
  78. package/.agent-src/skills/jira-integration/SKILL.md +1 -0
  79. package/.agent-src/skills/jobs-events/SKILL.md +1 -0
  80. package/.agent-src/skills/judge-bug-hunter/SKILL.md +1 -0
  81. package/.agent-src/skills/judge-code-quality/SKILL.md +1 -0
  82. package/.agent-src/skills/judge-security-auditor/SKILL.md +3 -0
  83. package/.agent-src/skills/judge-test-coverage/SKILL.md +1 -0
  84. package/.agent-src/skills/laravel/SKILL.md +1 -0
  85. package/.agent-src/skills/laravel-horizon/SKILL.md +1 -0
  86. package/.agent-src/skills/laravel-mail/SKILL.md +1 -0
  87. package/.agent-src/skills/laravel-middleware/SKILL.md +1 -0
  88. package/.agent-src/skills/laravel-notifications/SKILL.md +1 -0
  89. package/.agent-src/skills/laravel-pennant/SKILL.md +1 -0
  90. package/.agent-src/skills/laravel-pulse/SKILL.md +1 -0
  91. package/.agent-src/skills/laravel-reverb/SKILL.md +1 -0
  92. package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -0
  93. package/.agent-src/skills/laravel-validation/SKILL.md +1 -0
  94. package/.agent-src/skills/launch-readiness/SKILL.md +156 -0
  95. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -0
  96. package/.agent-src/skills/lint-skills/SKILL.md +1 -0
  97. package/.agent-src/skills/livewire/SKILL.md +1 -0
  98. package/.agent-src/skills/livewire-architect/SKILL.md +158 -0
  99. package/.agent-src/skills/logging-monitoring/SKILL.md +1 -0
  100. package/.agent-src/skills/markitdown/SKILL.md +1 -0
  101. package/.agent-src/skills/mcp/SKILL.md +1 -0
  102. package/.agent-src/skills/mcp-builder/SKILL.md +1 -0
  103. package/.agent-src/skills/md-language-check/SKILL.md +1 -0
  104. package/.agent-src/skills/merge-conflicts/SKILL.md +1 -0
  105. package/.agent-src/skills/migration-architect/SKILL.md +119 -0
  106. package/.agent-src/skills/migration-creator/SKILL.md +1 -0
  107. package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +2 -1
  108. package/.agent-src/skills/module-management/SKILL.md +1 -0
  109. package/.agent-src/skills/multi-tenancy/SKILL.md +1 -0
  110. package/.agent-src/skills/okr-tree-modeling/SKILL.md +1 -0
  111. package/.agent-src/skills/openapi/SKILL.md +1 -0
  112. package/.agent-src/skills/override-management/SKILL.md +1 -0
  113. package/.agent-src/skills/performance/SKILL.md +1 -0
  114. package/.agent-src/skills/performance-analysis/SKILL.md +1 -0
  115. package/.agent-src/skills/persona-writing/SKILL.md +1 -0
  116. package/.agent-src/skills/pest-testing/SKILL.md +1 -0
  117. package/.agent-src/skills/php-coder/SKILL.md +1 -0
  118. package/.agent-src/skills/php-debugging/SKILL.md +1 -0
  119. package/.agent-src/skills/php-service/SKILL.md +1 -0
  120. package/.agent-src/skills/playwright-architect/SKILL.md +141 -0
  121. package/.agent-src/skills/playwright-testing/SKILL.md +1 -0
  122. package/.agent-src/skills/po-discovery/SKILL.md +127 -0
  123. package/.agent-src/skills/project-analysis-core/SKILL.md +1 -0
  124. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -0
  125. package/.agent-src/skills/project-analysis-laravel/SKILL.md +1 -0
  126. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +1 -0
  127. package/.agent-src/skills/project-analysis-node-express/SKILL.md +1 -0
  128. package/.agent-src/skills/project-analysis-react/SKILL.md +1 -0
  129. package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -0
  130. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +1 -0
  131. package/.agent-src/skills/project-analyzer/SKILL.md +1 -0
  132. package/.agent-src/skills/project-docs/SKILL.md +1 -0
  133. package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -0
  134. package/.agent-src/skills/prompt-optimizer/SKILL.md +1 -0
  135. package/.agent-src/skills/quality-tools/SKILL.md +1 -0
  136. package/.agent-src/skills/react-native-setup/SKILL.md +1 -0
  137. package/.agent-src/skills/react-shadcn-ui/SKILL.md +1 -0
  138. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -0
  139. package/.agent-src/skills/readme-writing/SKILL.md +1 -0
  140. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -0
  141. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -0
  142. package/.agent-src/skills/refine-prompt/SKILL.md +1 -0
  143. package/.agent-src/skills/refine-ticket/SKILL.md +1 -0
  144. package/.agent-src/skills/release-comms/SKILL.md +123 -0
  145. package/.agent-src/skills/repomix-packer/SKILL.md +1 -0
  146. package/.agent-src/skills/requesting-code-review/SKILL.md +1 -0
  147. package/.agent-src/skills/review-routing/SKILL.md +1 -0
  148. package/.agent-src/skills/rice-prioritization/SKILL.md +1 -0
  149. package/.agent-src/skills/risk-officer/SKILL.md +141 -0
  150. package/.agent-src/skills/roadmap-management/SKILL.md +1 -0
  151. package/.agent-src/skills/roadmap-writing/SKILL.md +2 -1
  152. package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -0
  153. package/.agent-src/skills/rule-writing/SKILL.md +1 -0
  154. package/.agent-src/skills/script-writing/SKILL.md +1 -0
  155. package/.agent-src/skills/secrets-management/SKILL.md +1 -0
  156. package/.agent-src/skills/security/SKILL.md +1 -0
  157. package/.agent-src/skills/security-audit/SKILL.md +1 -0
  158. package/.agent-src/skills/sentry-integration/SKILL.md +1 -0
  159. package/.agent-src/skills/sequential-thinking/SKILL.md +1 -0
  160. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -0
  161. package/.agent-src/skills/skill-management/SKILL.md +1 -0
  162. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -0
  163. package/.agent-src/skills/skill-writing/SKILL.md +1 -0
  164. package/.agent-src/skills/sql-writing/SKILL.md +1 -0
  165. package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +237 -0
  166. package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -0
  167. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -0
  168. package/.agent-src/skills/tailwind-engineer/SKILL.md +130 -0
  169. package/.agent-src/skills/tech-debt-tracker/SKILL.md +152 -0
  170. package/.agent-src/skills/technical-specification/SKILL.md +1 -0
  171. package/.agent-src/skills/terraform/SKILL.md +1 -0
  172. package/.agent-src/skills/terragrunt/SKILL.md +1 -0
  173. package/.agent-src/skills/test-driven-development/SKILL.md +1 -0
  174. package/.agent-src/skills/test-performance/SKILL.md +1 -0
  175. package/.agent-src/skills/testing-anti-patterns/SKILL.md +1 -0
  176. package/.agent-src/skills/threat-modeling/SKILL.md +3 -0
  177. package/.agent-src/skills/token-optimizer/SKILL.md +1 -0
  178. package/.agent-src/skills/traefik/SKILL.md +1 -0
  179. package/.agent-src/skills/ui-component-architect/SKILL.md +153 -0
  180. package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -0
  181. package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -0
  182. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -0
  183. package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
  184. package/.agent-src/skills/validate-feature-fit/SKILL.md +1 -0
  185. package/.agent-src/skills/verify-completion-evidence/SKILL.md +1 -0
  186. package/.agent-src/skills/voc-extract/SKILL.md +164 -0
  187. package/.agent-src/skills/websocket/SKILL.md +1 -0
  188. package/.agent-src/templates/roadmaps.md +9 -0
  189. package/.claude-plugin/marketplace.json +21 -1
  190. package/AGENTS.md +1 -0
  191. package/CHANGELOG.md +75 -0
  192. package/README.md +2 -2
  193. package/docs/architecture.md +2 -2
  194. package/docs/catalog.md +21 -4
  195. package/docs/contracts/context-spine.md +133 -0
  196. package/docs/contracts/file-ownership-matrix.json +616 -0
  197. package/docs/contracts/mental-models.md +336 -0
  198. package/docs/contracts/persona-schema.md +136 -0
  199. package/docs/contracts/skill-domains.md +143 -0
  200. package/docs/decisions/ADR-005-subagent-worktrees.md +120 -0
  201. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +114 -0
  202. package/docs/decisions/INDEX.md +3 -0
  203. package/docs/guidelines/cross-role-handoff.md +127 -0
  204. package/docs/personas.md +115 -0
  205. package/package.json +1 -1
  206. package/scripts/_backfill_skill_domains.py +140 -0
  207. package/scripts/_emit_domain_table.py +35 -0
  208. package/scripts/install-hooks.sh +21 -4
  209. package/scripts/lint_context_spine_usage.py +133 -0
  210. package/scripts/lint_roadmap_complexity.py +37 -0
  211. package/scripts/lint_skill_tools.py +168 -0
  212. package/scripts/schemas/skill.schema.json +15 -1
  213. package/scripts/skill_linter.py +19 -4
  214. package/scripts/skill_tools/__init__.py +22 -0
  215. package/scripts/skill_tools/audit_persona_coverage.py +147 -0
  216. package/scripts/skill_tools/run_block_d_eval.py +129 -0
  217. package/scripts/skill_tools/score_skill_relevance.py +169 -0
  218. package/scripts/skill_tools/suggest_skill_for_task.py +113 -0
@@ -2,6 +2,7 @@
2
2
  name: copilot-agents-optimization
3
3
  description: "Use when optimizing AGENTS.md or copilot-instructions.md — deduplicates against .augment/ content, enforces line budgets, and focuses each file on its audience."
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: copilot-config
3
3
  description: "Use when configuring GitHub Copilot — copilot-instructions.md, PR review patterns, output optimization — even when the user just says 'tune Copilot' or 'why is Copilot commenting on X'."
4
4
  source: package
5
+ domain: process
5
6
  ---
6
7
 
7
8
  # Copilot Skill
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: customer-research
3
+ description: "Use when shaping a discovery slice — JTBD-framed interview guide, switch-event focus, verbatim quotes not summaries. Triggers on 'talk to users', 'why did they cancel', 'before we build X'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product]
9
+ ---
10
+
11
+ # customer-research
12
+
13
+ ## When to use
14
+
15
+ - A backlog item is fuzzy because no one has talked to a current user about the underlying job in the last quarter.
16
+ - A churn or refund spike needs a switch-event explanation, not a feature gap list.
17
+ - A product owner is about to write AC for a feature that has not been validated against a real user job.
18
+
19
+ Do NOT use for quantitative funnel diagnosis (see `funnel-analysis`),
20
+ RICE-style ranking (see `rice-prioritization`), or surveying at scale —
21
+ this skill is about depth-5-to-10 interviews, not statistics.
22
+
23
+ ## Cognition cluster
24
+
25
+ - **Mental model 2 — Jobs-to-be-Done.** Frames every question against
26
+ the **switch event**: what caused the user to fire the previous
27
+ solution? See [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 2.
28
+ - **Mental model 3 — Pareto principle.** A research week that
29
+ produces 12 distinct insights is usually re-discovering the same
30
+ three. See `mental-models.md` § 3.
31
+
32
+ ## Procedure
33
+
34
+ ### Step 0: Frame the job
35
+
36
+ 1. Write one sentence: *"Users hire \<thing\> to make progress in \<situation\>, when motivated by \<pressure\>, expecting \<outcome\>."* If you cannot finish the sentence, the discovery slice is not yet shaped — stop and route to `po-discovery`.
37
+ 2. Read the **product** slot of the [context-spine](../../../docs/contracts/context-spine.md) (if the consumer project has filled it) for bounded scope, and the **team** slot for the senior PO / researcher handoff target. Skip if absent — note in the brief.
38
+ 3. Identify **one** competing solution the user might fire. Multiple competitors per session blurs the switch event.
39
+
40
+ ### Step 1: Recruit the right 5–8
41
+
42
+ 1. Recruit **switchers** (joined in last 60 days) and **leavers**
43
+ (cancelled in last 60 days). Long-tenure power-users go in a
44
+ separate bucket — they explain habits, not jobs.
45
+ 2. 5 minimum, 8 maximum. Saturation hits around 6 in a tightly
46
+ scoped job — the Pareto cut. Beyond 8 is research theatre.
47
+ 3. Avoid friends, employees, beta-program over-talkers — selection bias is the failure mode that survives the AC.
48
+
49
+ ### Step 2: Run the interview
50
+
51
+ 1. Open with the **switch event**: *"Walk me through the day you decided to start using \<product\>."* Time, place, trigger, alternative considered.
52
+ 2. Past behaviour, not hypothetical. Replace *"would you use"* with *"the last time you needed X, what did you do?"*.
53
+ 3. Capture **quotes**, not summaries. Verbatim quotes survive the AC; paraphrases get re-interpreted into pre-existing beliefs.
54
+ 4. Listen for the **anxiety / habit** pair — what they feared in switching, what habit died.
55
+
56
+ ### Step 3: Code the evidence
57
+
58
+ 1. One quote per insight. Tag each with: switch-event, anxiety, habit, expected-outcome, unexpected-outcome.
59
+ 2. An insight without a quote is a hypothesis, not a finding — mark it.
60
+ 3. Frequency-rank by how many distinct interviewees touched the insight (≥ 3 is signal; 1 is anecdote).
61
+
62
+ ### Step 4: Hand back
63
+
64
+ 1. Produce the three artifacts (see `## Output`).
65
+ 2. Hand the brief to the senior PO. Do **not** translate findings into AC inside this skill — that is `refine-ticket`'s job.
66
+
67
+ ## Related Skills
68
+
69
+ **WHEN to use this**
70
+
71
+ - The unit of analysis is **a real user's switch event**.
72
+ - Discovery is fuzzy and the team is about to ship without validation.
73
+ - A retention or churn spike needs a narrative, not a metric.
74
+
75
+ **WHEN NOT to use this**
76
+
77
+ - Quantitative drop-off across stages — route to [`funnel-analysis`](../funnel-analysis/SKILL.md).
78
+ - Ranking competing initiatives — route to [`rice-prioritization`](../rice-prioritization/SKILL.md).
79
+ - Reframing a fuzzy product ask before any user contact — route to [`po-discovery`](../po-discovery/SKILL.md).
80
+ - AC sharpening on an already-validated ticket — route to [`refine-ticket`](../refine-ticket/SKILL.md).
81
+
82
+ ## When the agent should load this
83
+
84
+ - "We need to talk to users before we build X."
85
+ - "Why are people churning at month 2?"
86
+ - "Run customer research on the new pricing tier."
87
+ - "I keep guessing what the user wants — let's actually ask."
88
+ - "Before refining this ticket, do we know the real job?"
89
+
90
+ ## Output
91
+
92
+ 1. **`research-brief.md`** — frame sentence, recruit criteria, target sample, JTBD focal job, list of competing solutions in scope. Pre-interview artifact.
93
+ 2. **`evidence-log.md`** — one row per insight: quote · interviewee ID · tag (switch / anxiety / habit / outcome) · frequency. Sorted by frequency descending. Verbatim only.
94
+ 3. **`switch-event-summary.md`** — narrative of the dominant switch event(s) the research surfaced, with ≥ 3 supporting quotes per claim. Hand-off artifact for [`refine-ticket`](../refine-ticket/SKILL.md) and the senior product owner persona (currently [`product-owner`](../../personas/product-owner.md); senior persona shipping in next plate).
95
+
96
+ ## Gotcha
97
+
98
+ - Asking *"would you use"* contaminates the answer with politeness; ground every question in past behaviour.
99
+ - One articulate interviewee can swamp evidence-log. Frequency-rank by distinct people, not distinct quotes.
100
+ - Tagging too aggressively pre-interview hides surprise findings — leave room for `unexpected-outcome`.
101
+ - A research week without ≥ 3 disqualified hypotheses is suspect — research that confirms everything is research that asked nothing.
102
+
103
+ ## Do NOT
104
+
105
+ - Do NOT translate findings into acceptance criteria inside this skill — hand off to `refine-ticket`.
106
+ - Do NOT recruit only happy users; switchers and leavers carry the switch-event signal, satisfied users do not.
107
+ - Do NOT skip the frame sentence. An unframed interview produces 50 quotes about 8 different jobs.
108
+
109
+ ## Runnable example
110
+
111
+ Pricing-tier churn at month 2:
112
+
113
+ - Frame: *"Customers hire \<product\> to make progress in \<weekly reporting\>, motivated by \<board cadence\>, expecting \<one-click roll-up\>."*
114
+ - Recruit: 6 leavers (cancelled within 30 days of month 2), 2 switchers from competitor C.
115
+ - Interview: open with *"Walk me through the day you decided to cancel."* Capture verbatim.
116
+ - Output: `evidence-log.md` shows 5 of 8 cite the *manual export step* as the cancellation trigger — switch-event signal, ≥ 3 frequency. `switch-event-summary.md` recommends the senior PO scope a discovery slice on the export step, not the report itself.
@@ -2,6 +2,7 @@
2
2
  name: dashboard-design
3
3
  description: "Use when designing monitoring dashboards — visualization selection, layout principles, observability strategies (RED/USE/Golden Signals), and data storytelling."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # dashboard-design
@@ -2,6 +2,7 @@
2
2
  name: data-flow-mapper
3
3
  description: "Use BEFORE editing code that touches user data — traces the value from entry → validation → transformation → storage → egress, every hop cited with file:line."
4
4
  source: package
5
+ domain: discovery
5
6
  ---
6
7
 
7
8
  # data-flow-mapper
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  name: database
3
3
  description: "Use when working with database architecture, MariaDB/MySQL tuning, indexing strategies, slow queries, or multi-connection patterns — even when the user just says 'this query is slow'."
4
+ personas:
5
+ - eloquent-tamer
4
6
  source: package
7
+ domain: engineering
5
8
  ---
6
9
 
7
10
  # database
@@ -4,6 +4,7 @@ description: "Wing-4 valuation cognition for a CFO / finance-partner. Use when a
4
4
  status: active
5
5
  tier: senior
6
6
  source: package
7
+ domain: product
7
8
  ---
8
9
 
9
10
  # dcf-modeling
@@ -0,0 +1,218 @@
1
+ ---
2
+ name: decision-record
3
+ description: "Use when locking a trade-off, structuring an ADR draft, or wiring supersession chains — frames options · trade-offs · consequences before the file is written by `adr-create`."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: process
8
+ context_spine: [team]
9
+ personas:
10
+ - senior-engineer
11
+ - critical-challenger
12
+ - product-owner
13
+ ---
14
+
15
+ # decision-record
16
+
17
+ > Shape the **thinking** behind an architectural decision: list the
18
+ > options, expose trade-offs, lock the chosen variant, and wire the
19
+ > supersession chain. Hands off to [`adr-create`](../adr-create/SKILL.md)
20
+ > for file mechanics (numbering, index, frontmatter). This skill does
21
+ > not write the ADR file itself.
22
+
23
+ ## When to use
24
+
25
+ - A team is about to commit to a non-trivial architectural choice and
26
+ wants the trade-offs on paper first.
27
+ - Two engineers disagree on an approach — surface the options and
28
+ consequences before one wins by attrition.
29
+ - A previous decision needs revisiting; the result must `supersede:`
30
+ the older ADR with explicit rationale.
31
+ - German triggers: "lass uns das festzurren", "Trade-off-Matrix",
32
+ "welche Option ziehen wir?".
33
+
34
+ Do NOT use when:
35
+
36
+ - The file mechanics are the entire ask (numbering, regenerating the
37
+ index) — route directly to [`adr-create`](../adr-create/SKILL.md).
38
+ - The decision is reversible and small (e.g. variable rename) — ADRs
39
+ are for choices that constrain future work.
40
+ - The user wants a feature plan, not a decision — route to the
41
+ planning command instead.
42
+
43
+ ## Cognition cluster
44
+
45
+ - **Mental model 4 — Second-order thinking.** Every decision unlocks
46
+ some futures and locks out others; the consequences block names
47
+ what becomes harder, not just what becomes easier. See
48
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 4.
49
+ - **Mental model 6 — Theory of constraints.** A decision that does
50
+ not move the binding constraint is theatre; if the trade-off matrix
51
+ scores every option the same on the constraint that matters, the
52
+ options are fungible — surface and stop. See `mental-models.md` § 6.
53
+ - **Mental model 10 — Reversible vs irreversible.** Two-way doors
54
+ get a one-page record; one-way doors get the full options +
55
+ consequences + supersession chain. The reversibility row of the
56
+ matrix decides which template fires. See `mental-models.md` § 10.
57
+ - **Team context-spine slot.** Read the **team** slot of the
58
+ [context-spine](../../../docs/contracts/context-spine.md) to
59
+ capture who is bound by the decision (review groups, on-call
60
+ rotation). Skip if the consumer project has not filled it; note in
61
+ the record.
62
+
63
+ ## Procedure
64
+
65
+ ### 1. State the decision in one sentence
66
+
67
+ *"We need to decide `X` because `Y`."* If you cannot, the decision
68
+ is not ripe — surface that and stop.
69
+
70
+ ### 2. Identify and enumerate options (≥ 2, usually ≤ 4)
71
+
72
+ Each option gets:
73
+
74
+ - **Name** — short, descriptive, never "option A / B / C".
75
+ - **Sketch** — what it actually does in one paragraph.
76
+ - **Cost / benefit** — three to five bullets per side, concrete.
77
+ - **Reversibility** — easy / costly / one-way (Bezos two-way / one-way
78
+ door framing).
79
+
80
+ Add an **explicit "do nothing"** option whenever it is plausible —
81
+ forces the user to compare the change against the status quo.
82
+
83
+ ### 3. Build the trade-off matrix
84
+
85
+ | Criterion | Option 1 | Option 2 | ... |
86
+ |---|---|---|---|
87
+ | Implementation cost | | | |
88
+ | Operational cost | | | |
89
+ | Reversibility | | | |
90
+ | Blast radius | | | |
91
+ | Time-to-value | | | |
92
+
93
+ Pick criteria that *separate* the options. Criteria where every
94
+ option scores the same are noise — drop them.
95
+
96
+ ### 4. Lock the choice + consequences
97
+
98
+ Write:
99
+
100
+ - **Decision:** *"We pick `<Option name>`."*
101
+ - **Consequences:** what becomes true, what becomes harder, what
102
+ becomes impossible. At least one of each, or admit that nothing
103
+ becomes harder (rare; verify).
104
+
105
+ ### 5. Wire the supersession chain (if any)
106
+
107
+ If this decision overrides a prior ADR:
108
+
109
+ - Cite the prior ADR id and one-line summary.
110
+ - State **what changed in the world** that justifies overriding —
111
+ not "we now think differently".
112
+ - Hand off the `supersedes:` linkage to `adr-create`.
113
+
114
+ ### 6. Hand off to file mechanics
115
+
116
+ Output the structured payload (below). The user — or
117
+ `adr-create` — turns it into the file.
118
+
119
+ ## Related Skills
120
+
121
+ **WHEN to use this**
122
+
123
+ - The team is about to lock a non-trivial choice and the trade-offs
124
+ need to survive the conversation that produced them.
125
+ - A prior ADR is being overridden and the supersession chain needs
126
+ explicit "what changed in the world" rationale.
127
+ - A planning thread has surfaced ≥ 2 viable options and silence is
128
+ about to pick one by attrition.
129
+
130
+ **WHEN NOT to use this**
131
+
132
+ - The choice splits stakeholders along role lines (PO vs ops, eng vs
133
+ support) — start with [`stakeholder-tradeoff`](../stakeholder-tradeoff/SKILL.md);
134
+ this skill locks the choice **after** the human cost is mapped.
135
+ - The output is the ADR file itself (numbering, index regen) — route
136
+ to [`adr-create`](../adr-create/SKILL.md); this skill produces the
137
+ payload, not the file.
138
+ - The risk shape is the dominant question — route to
139
+ [`risk-officer`](../risk-officer/SKILL.md) first, then return.
140
+ - The decision is reversible and cheap — write a one-line note and
141
+ move on; ADRs are for irreversible or expensive constraints.
142
+
143
+ ## When the agent should load this
144
+
145
+ - "Lass uns das festzurren."
146
+ - "Welche Option ziehen wir und warum?"
147
+ - "Wir müssen ein ADR draus machen."
148
+ - "Trade-off-Matrix für X vs Y."
149
+ - "Diese Entscheidung überschreibt das alte ADR-NN."
150
+
151
+ ## Output
152
+
153
+ ```
154
+ Decision: <one sentence>
155
+
156
+ Options:
157
+ 1. <name> — <sketch>
158
+ Pros: ...
159
+ Cons: ...
160
+ Reversibility: easy | costly | one-way
161
+ 2. ...
162
+ N. Do nothing — <sketch>
163
+
164
+ Trade-off matrix:
165
+ | Criterion | <opt 1> | <opt 2> | ... |
166
+ | ...
167
+
168
+ Locked: <chosen option name>
169
+
170
+ Consequences:
171
+ + <becomes true>
172
+ - <becomes harder>
173
+ ✗ <becomes impossible>
174
+
175
+ Supersedes: <ADR-XYZ "title"> (if any)
176
+ Trigger: <what changed> (if superseding)
177
+
178
+ Next: /adr-create with the payload above
179
+ ```
180
+
181
+ ## Gotcha
182
+
183
+ - "We compared the options" is not a comparison. The matrix must
184
+ separate them on at least two criteria.
185
+ - Pros without cons is advocacy, not analysis. If you cannot find
186
+ cons for the chosen option, you have not understood it yet.
187
+ - A supersession with no "what changed in the world" is a vibe
188
+ pivot. Reject and ask.
189
+
190
+ ## Do NOT
191
+
192
+ - Do NOT pick the option before listing them — the matrix is the
193
+ point, not the conclusion.
194
+ - Do NOT write the ADR file from this skill — `adr-create` owns
195
+ filenames, numbering, and index regeneration.
196
+ - Do NOT pad option counts to look thorough; two real options beat
197
+ four straw men.
198
+ - Do NOT silently update an old ADR; supersession is explicit.
199
+
200
+ ## Runnable example
201
+
202
+ Replacing the in-house cron runner with a managed scheduler:
203
+
204
+ - Decision: *"We need to decide between keeping the in-house cron
205
+ runner and migrating to the managed scheduler because the on-call
206
+ rotation has paged on missed-run incidents three times in 60 days."*
207
+ - Options: (1) keep in-house + add monitoring; (2) migrate to
208
+ managed scheduler; (3) do nothing.
209
+ - Matrix rows that **separate** options: implementation cost,
210
+ operational load, blast radius on outage, reversibility.
211
+ - Locked: *"We pick the managed scheduler."*
212
+ - Consequences: `+` on-call gets paged on scheduler infra, not
213
+ application code. `–` job definitions move to a vendor format,
214
+ raising migration cost if we leave. `✗` we cannot run jobs in the
215
+ app process anymore — assumes vendor uptime.
216
+ - Supersedes: ADR-014 *"in-house cron runner"*; trigger = three
217
+ missed-run pages in 60 days now exceed the SLO budget.
218
+ - Next: `/adr-create` with the payload, append `supersedes: ADR-014`.
@@ -3,6 +3,7 @@ name: deep-reading-analyst
3
3
  description: "Deep analysis of articles/long-form via thinking frameworks (SCQA, mental models, inversion) — 'analyze article', 'deep dive', 'extract insights', URL/text wanting depth not summary."
4
4
  status: active
5
5
  source: package
6
+ domain: discovery
6
7
  external_source: "https://github.com/ginobefun/deep-reading-analyst-skill/tree/26cd7dc9920e025d39751e396e707399022e49ef/src/deep-reading-analyst"
7
8
  refresh_trigger: "Upstream `ginobefun/deep-reading-analyst-skill` major rewrite (new framework added, dispatch table reshaped, or SHA pin invalidated by reference rename)."
8
9
  sunset_criterion: "Replace with a 50-line pointer skill if (a) all referenced modules are adopted as project-local guidelines (`docs/guidelines/agent-infra/{framework}.md`) AND (b) the dispatch logic moves into a project-native router."
@@ -2,6 +2,7 @@
2
2
  name: defense-in-depth
3
3
  description: "Use when validation needs entry, business-logic, environment, and instrumentation guards so a bad value cannot reach the failure point — turns a local bug fix into a structural one."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # defense-in-depth
@@ -2,6 +2,7 @@
2
2
  name: dependency-upgrade
3
3
  description: "Use when upgrading dependencies — "update Laravel", "bump PHP version", or "upgrade packages". Covers changelog review, breaking change detection, and verification."
4
4
  source: package
5
+ domain: engineering
5
6
  ---
6
7
 
7
8
  # dependency-upgrade
@@ -2,6 +2,7 @@
2
2
  name: description-assist
3
3
  description: "Use when polishing a skill/rule/command/guideline frontmatter description — pushier phrasing, trigger coverage, undertrigger audit — even if the user just says 'make this pushier'."
4
4
  source: package
5
+ domain: process
5
6
  ---
6
7
 
7
8
  <!-- cloud_safe: degrade -->
@@ -2,6 +2,7 @@
2
2
  name: design-review
3
3
  description: "Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more."
4
4
  source: package
5
+ domain: quality
5
6
  ---
6
7
 
7
8
  # design-review
@@ -2,6 +2,7 @@
2
2
  name: devcontainer
3
3
  description: "Use when configuring DevContainers or GitHub Codespaces — devcontainer.json, custom images, secrets, VS Code features — even when the user just says 'why does my Codespace not start'."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # devcontainer
@@ -2,6 +2,7 @@
2
2
  name: developer-like-execution
3
3
  description: "Use when implementing, debugging, refactoring, or reviewing code — enforces the think → analyze → verify → execute workflow — even when the user just says 'implement X' without naming it."
4
4
  source: package
5
+ domain: process
5
6
  execution:
6
7
  type: assisted
7
8
  handler: internal
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: discovery-interview
3
+ description: "Use when running discovery interviews — question-bank build, bias audit, insight extraction. Triggers on 'audit my guide', 'extract insights from transcript', 'is my hypothesis falsifiable'."
4
+ status: active
5
+ tier: senior
6
+ source: package
7
+ domain: product
8
+ context_spine: [product]
9
+ ---
10
+
11
+ # discovery-interview
12
+
13
+ ## When to use
14
+
15
+ - A discovery slice has been framed (`customer-research` ran), but the interview guide is still rough or untested.
16
+ - A transcript exists and the team needs structured insight extraction, not narrative summary.
17
+ - An interview round produced surprising findings; a bias audit is needed before the team acts on them.
18
+
19
+ Do NOT use for the upstream framing of the discovery slice (frame
20
+ sentence, recruit criteria, JTBD focal job) — that is
21
+ [`customer-research`](../customer-research/SKILL.md). Do NOT use for
22
+ quantitative survey design or scale-bound research.
23
+
24
+ ## Cognition cluster
25
+
26
+ - **Mental model 22 — Data-informed, not data-driven.** Interview
27
+ data is signal at low N; treat it as evidence to reason with, not
28
+ a vote count. See
29
+ [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 22.
30
+ - **Mental model 15 — Signal vs noise.** A vivid quote from one
31
+ articulate user can swamp three muted but consistent signals;
32
+ frequency-rank by distinct people, never by quote count. See
33
+ `mental-models.md` § 15.
34
+ - **Mental model 28 — Eisenhower matrix.** Sort post-interview
35
+ insights into urgent / important quadrants so the team acts on
36
+ high-importance signals, not the loudest ones. See
37
+ `mental-models.md` § 28.
38
+ - **Product context-spine slot.** Read **product** for the focal job
39
+ + competitor names; do **not** re-derive these inside this skill.
40
+ See [`context-spine`](../../../docs/contracts/context-spine.md).
41
+
42
+ ## Procedure
43
+
44
+ ### 1. Build the question bank
45
+
46
+ 1. Anchor on the **switch event** from `customer-research`. The
47
+ first question is always *"Walk me through the day you decided
48
+ to ..."* — never *"would you ..."*.
49
+ 2. Three layers:
50
+ - **Past behaviour** (what did you do? when? alternative considered?)
51
+ - **Anxiety / habit** (what feared in switching? what habit died?)
52
+ - **Outcome** (what changed for you? expected? unexpected?)
53
+ 3. Cap at 8 open questions per 45-min slot. Beyond that, the
54
+ interview becomes a survey delivered in person.
55
+
56
+ ### 2. Audit the bank for bias
57
+
58
+ Before running, inspect each question and review the bank against the
59
+ four common biases:
60
+
61
+ - **Leading** — *"Don't you think X is annoying?"* → rewrite as past
62
+ behaviour.
63
+ - **Hypothetical** — *"Would you use Y?"* → replace with *"Last
64
+ time you needed Y, what did you do?"*.
65
+ - **Confirmation** — every question presupposes the team's hypothesis
66
+ is correct. At least two questions must be able to **disconfirm** it.
67
+ - **Recall ceiling** — questions that ask for events ≥ 90 days back
68
+ produce confabulation; bound the timeframe.
69
+
70
+ A bank that survives the audit unchanged is suspect — re-read.
71
+
72
+ ### 3. Run-time discipline
73
+
74
+ 1. Open with the switch event. Stay silent for 8 seconds after the
75
+ user finishes; the second answer is usually the truer one.
76
+ 2. Capture verbatim, not paraphrase. *"It made me anxious"* is data;
77
+ *"the user expressed concern"* is interpretation.
78
+ 3. Probe with *"tell me more about X"* on any anxiety / habit
79
+ mention; do not switch topics until the thread is exhausted.
80
+
81
+ ### 4. Extract insights
82
+
83
+ For each transcript:
84
+
85
+ 1. One quote per insight. Tag: switch / anxiety / habit /
86
+ expected-outcome / unexpected-outcome / disconfirmation.
87
+ 2. Frequency-rank by distinct interviewees (≥ 3 = signal; 1 = anecdote).
88
+ 3. Mark **disconfirmations** explicitly — these are the most
89
+ valuable rows, because they are the cheapest to ignore.
90
+
91
+ ### 5. Hand back
92
+
93
+ Produce the three artifacts (see `## Output`); hand the disconfirmation
94
+ log to whoever owns the original hypothesis.
95
+
96
+ ## Related Skills
97
+
98
+ **WHEN to use this**
99
+
100
+ - The discovery slice is framed and the interview guide / transcript
101
+ is the unit of work.
102
+ - A round of interviews ran and the insights need structured extraction
103
+ (frequency-ranked, bias-audited, disconfirmations highlighted).
104
+
105
+ **WHEN NOT to use this**
106
+
107
+ - The slice itself is unframed — start with
108
+ [`customer-research`](../customer-research/SKILL.md); this skill
109
+ inherits its frame, never re-derives it.
110
+ - The signal needs to come from existing artefacts (issues, PRs, errors)
111
+ rather than a live interview — route to [`voc-extract`](../voc-extract/SKILL.md).
112
+ - Insights translate into AC for a ticket — hand off to
113
+ [`refine-ticket`](../refine-ticket/SKILL.md).
114
+ - The output is a quantitative funnel — route to
115
+ [`funnel-analysis`](../funnel-analysis/SKILL.md).
116
+
117
+ ## When the agent should load this
118
+
119
+ - "Hilf mir den Interview-Leitfaden auditieren."
120
+ - "Welche Fragen sind biased?"
121
+ - "Extract die Insights aus diesem Transkript."
122
+ - "Wir haben 6 Interviews geführt — was ist Signal, was ist Anekdote?"
123
+ - "Ist meine Hypothese widerlegbar mit dem aktuellen Frageset?"
124
+
125
+ ## Output
126
+
127
+ 1. **`question-bank.md`** — 8 open questions, each tagged
128
+ past-behaviour / anxiety-habit / outcome; bias-audit notes per
129
+ rewritten question.
130
+ 2. **`insight-log.md`** — one row per insight: quote · interviewee
131
+ ID · tag · distinct-people frequency. Sorted descending. Verbatim.
132
+ 3. **`disconfirmation-log.md`** — each row names the original
133
+ hypothesis, the interview-derived disconfirmation, and the named
134
+ owner who must respond before the team acts on the round.
135
+
136
+ ## Gotcha
137
+
138
+ - A bank that survived the audit unchanged is rare; usually means
139
+ the audit was rushed, not that the bank was perfect.
140
+ - One articulate interviewee biases insight-extraction toward their
141
+ vocabulary — frequency-rank by people, not quotes.
142
+ - Disconfirmations are the cheapest insight to ignore and the most
143
+ valuable to act on; the log exists so they survive the round.
144
+
145
+ ## Do NOT
146
+
147
+ - Do NOT re-derive the frame inside this skill — read the **product**
148
+ spine slot or hand back to `customer-research`.
149
+ - Do NOT translate insights into AC inside this skill — that is
150
+ `refine-ticket`.
151
+ - Do NOT collapse disconfirmations into "we also heard X" prose;
152
+ they earn their own log.
@@ -2,6 +2,7 @@
2
2
  name: docker
3
3
  description: "Use when working with Docker — Dockerfile edits, docker-compose services, containers, or the dual-container (fast + Xdebug) setup — even when the user just says 'my container won't start'."
4
4
  source: package
5
+ domain: devops
5
6
  ---
6
7
 
7
8
  # docker
@@ -2,6 +2,7 @@
2
2
  name: dto-creator
3
3
  description: "Use when the user says "create a DTO", "new data transfer object", or needs to convert request/response data into a typed PHP class. Creates DTOs with SimpleDto base class and attribute mapping."
4
4
  source: package
5
+ domain: engineering
5
6
  ---
6
7
 
7
8
  # dto-creator
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  name: eloquent
3
3
  description: "Use when writing Eloquent models, relationships, scopes, or queries via Model:: — 'fetch users with their orders'. NOT for PHPStan output, non-Eloquent services, or raw SQL questions."
4
+ personas:
5
+ - eloquent-tamer
4
6
  source: package
7
+ domain: engineering
5
8
  ---
6
9
 
7
10
  # eloquent
@@ -2,6 +2,7 @@
2
2
  name: error-handling-patterns
3
3
  description: "Use when picking a failure-reporting strategy — exceptions vs Result types, recoverable vs not, retry / circuit-breaker / graceful degradation — decision framework only, catalogues externalized."
4
4
  source: package
5
+ domain: engineering
5
6
  status: active
6
7
  refresh_trigger: "≥30% of cited upstream pattern catalogues become deprecated, OR a new top-2 ecosystem (Python/JS/PHP/Go/Rust) ships a paradigm-shifting standard error model"
7
8
  sunset_criterion: "When the upstream framework docs (Laravel, FastAPI, Express, Axum, Effect-TS) all carry an equivalent in-tree decision framework AND consumer projects no longer cite this skill in PR reviews for two consecutive review cycles."
@@ -9,6 +9,7 @@ personas:
9
9
  - critical-challenger
10
10
  - ai-agent
11
11
  source: package
12
+ domain: product
12
13
  execution:
13
14
  type: assisted
14
15
  handler: internal
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  name: existing-ui-audit
3
3
  description: "Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set."
4
+ personas:
5
+ - frontend-engineer
4
6
  source: package
7
+ domain: discovery
5
8
  ---
6
9
 
7
10
  # existing-ui-audit