@runecraft/grimoire 1.0.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 (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/catalog.json +9 -0
  4. package/dist/grimoire.js +1758 -0
  5. package/package.json +54 -0
  6. package/references/definition-of-done.md +67 -0
  7. package/references/testing-patterns.md +260 -0
  8. package/skills/code-review-and-quality/README.md +13 -0
  9. package/skills/code-review-and-quality/SKILL.md +389 -0
  10. package/skills/code-simplification/README.md +13 -0
  11. package/skills/code-simplification/SKILL.md +338 -0
  12. package/skills/debugging-and-error-recovery/README.md +13 -0
  13. package/skills/debugging-and-error-recovery/SKILL.md +343 -0
  14. package/skills/debugging-and-error-recovery/scripts/__pycache__/triage_state.cpython-314.pyc +0 -0
  15. package/skills/debugging-and-error-recovery/scripts/triage_state.py +206 -0
  16. package/skills/deprecation-and-migration/README.md +13 -0
  17. package/skills/deprecation-and-migration/SKILL.md +248 -0
  18. package/skills/deprecation-and-migration/scripts/__pycache__/migration_tracker.cpython-314.pyc +0 -0
  19. package/skills/deprecation-and-migration/scripts/migration_tracker.py +237 -0
  20. package/skills/doubt-driven-development/README.md +13 -0
  21. package/skills/doubt-driven-development/SKILL.md +251 -0
  22. package/skills/git-commit-learning/.skill-meta.json +14 -0
  23. package/skills/git-commit-learning/README.md +205 -0
  24. package/skills/git-commit-learning/SKILL.md +435 -0
  25. package/skills/git-commit-learning/references/commit-patterns.md +595 -0
  26. package/skills/git-worktree/README.md +13 -0
  27. package/skills/git-worktree/SKILL.md +220 -0
  28. package/skills/idea-refine/README.md +13 -0
  29. package/skills/idea-refine/SKILL.md +186 -0
  30. package/skills/interview-me/README.md +13 -0
  31. package/skills/interview-me/SKILL.md +233 -0
  32. package/skills/linkedin-audit/SKILL.md +98 -0
  33. package/skills/linkedin-audit/references/dashboard-spec.md +43 -0
  34. package/skills/memory-management/README.md +13 -0
  35. package/skills/memory-management/SKILL.md +198 -0
  36. package/skills/security-and-hardening/README.md +13 -0
  37. package/skills/security-and-hardening/SKILL.md +472 -0
  38. package/skills/shipping-and-launch/README.md +13 -0
  39. package/skills/shipping-and-launch/SKILL.md +317 -0
  40. package/skills/skill-forge/README.md +153 -0
  41. package/skills/skill-forge/SKILL.md +291 -0
  42. package/skills/skill-forge/assets/SKILL.template.md +73 -0
  43. package/skills/skill-forge/references/authoring-patterns.md +249 -0
  44. package/skills/skill-forge/references/description-optimization.md +171 -0
  45. package/skills/skill-forge/references/output-evaluation.md +276 -0
  46. package/skills/skill-forge/references/scripts-guide.md +232 -0
  47. package/skills/skill-forge/references/spec.md +175 -0
  48. package/skills/skill-forge/scripts/validate.py +536 -0
  49. package/skills/spec-driven/.skill-meta.json +14 -0
  50. package/skills/spec-driven/README.md +335 -0
  51. package/skills/spec-driven/SKILL.md +174 -0
  52. package/skills/spec-driven/references/code-analysis.md +98 -0
  53. package/skills/spec-driven/references/coding-principles.md +56 -0
  54. package/skills/spec-driven/references/context-limits.md +31 -0
  55. package/skills/spec-driven/references/design.md +199 -0
  56. package/skills/spec-driven/references/discuss.md +136 -0
  57. package/skills/spec-driven/references/implement.md +425 -0
  58. package/skills/spec-driven/references/lessons.md +113 -0
  59. package/skills/spec-driven/references/memory.md +126 -0
  60. package/skills/spec-driven/references/specify.md +210 -0
  61. package/skills/spec-driven/references/sub-agents.md +96 -0
  62. package/skills/spec-driven/references/tasks.md +484 -0
  63. package/skills/spec-driven/references/validate.md +350 -0
  64. package/skills/spec-driven/scripts/__pycache__/lessons.cpython-314.pyc +0 -0
  65. package/skills/spec-driven/scripts/lessons.py +370 -0
  66. package/skills/spec-loop/README.md +36 -0
  67. package/skills/spec-loop/SKILL.md +61 -0
  68. package/skills/test-driven-development/README.md +13 -0
  69. package/skills/test-driven-development/SKILL.md +388 -0
  70. package/skills/typescript-patterns/README.md +13 -0
  71. package/skills/typescript-patterns/SKILL.md +346 -0
  72. package/skills/using-agent-skills/README.md +13 -0
  73. package/skills/using-agent-skills/SKILL.md +187 -0
@@ -0,0 +1,220 @@
1
+ ---
2
+ name: git-worktree
3
+ description: >
4
+ Use git worktrees for parallel feature branches without stashing or cloning.
5
+ Creates isolated working directories from a single local clone.
6
+ EN triggers: /worktree, git worktree, parallel branches, multiple features, isolate work.
7
+ PT triggers: /worktree, branches paralelas, trabalho isolado, múltiplas features.
8
+ Do NOT use for: simple single-branch work, fixing merge conflicts, or repos where disk space is extremely constrained.
9
+ license: CC-BY-4.0
10
+ ---
11
+
12
+ # git-worktree
13
+
14
+ Use git worktrees to work on multiple branches simultaneously from a single local clone — no stashing, no cloning, no context-switching friction. Each worktree is an independent working directory on its own branch, sharing the same `.git` repository.
15
+
16
+ ```
17
+ DECIDE BRANCH → ADD WORKTREE → WORK INDEPENDENTLY → MERGE → CLEAN UP
18
+ ```
19
+
20
+ ---
21
+
22
+ ## Overview
23
+
24
+ A git worktree is an additional working directory attached to the same local repository. Instead of cloning the repo again or stashing unfinished work to switch branches, you create a worktree — a separate directory that checks out a different branch — and work there independently.
25
+
26
+ Each worktree shares the same object database (`.git`), so commits made in one worktree are immediately visible to all others. There is no duplication of git history, only a sparse checkout of the working tree for each branch.
27
+
28
+ **Benefits:**
29
+ - No stashing — keep your current branch exactly as-is while starting something else
30
+ - No re-cloning — disk cost per worktree is only the checked-out files, not the full history
31
+ - True parallelism — run tests, builds, and edits in different branches side by side
32
+ - Hotfix safety — ship a critical fix from a clean `main` checkout while your feature branch sits untouched
33
+
34
+ ---
35
+
36
+ ## When to Use
37
+
38
+ | Scenario | Why worktrees help |
39
+ |----------|-------------------|
40
+ | Parallel epics or features | Each epic gets its own directory; no branch-switching or stashing |
41
+ | Hotfix while on a feature branch | Checkout `main` in a new worktree, fix, push, and return to your feature — nothing stashed |
42
+ | Reviewing or testing another branch | Checkout a PR branch in a worktree, build and test without touching your current work |
43
+ | CI isolation | Run a long build or test suite in one worktree while continuing development in another |
44
+ | Comparing branches | Have two branches checked out side by side for diffing or manual verification |
45
+
46
+ **Do not use when:**
47
+ - You're working on a single branch — standard git workflow is simpler
48
+ - You need to fix merge conflicts — worktrees don't help with conflict resolution
49
+ - Disk space is extremely constrained — each worktree costs the checkout size of that branch
50
+
51
+ ---
52
+
53
+ ## Process
54
+
55
+ ### Step 1: Create a Worktree
56
+
57
+ From your main repository directory, use `git worktree add`:
58
+
59
+ ```bash
60
+ # Create a worktree from the current HEAD (starts on same commit)
61
+ git worktree add ../path-to-worktree
62
+
63
+ # Create a worktree on an existing branch
64
+ git worktree add ../path-to-worktree existing-branch
65
+
66
+ # Create a worktree with a new branch
67
+ git worktree add -b new-branch-name ../path-to-worktree base-branch
68
+ ```
69
+
70
+ **Convention:** Place worktrees as siblings to your main repo directory (e.g., `../project-hotfix`, `../project-epic-2`). Avoid nesting worktrees inside other worktrees.
71
+
72
+ ### Step 2: List Worktrees
73
+
74
+ ```bash
75
+ git worktree list
76
+ ```
77
+
78
+ Output shows the path, HEAD commit, and branch for every worktree. The main worktree is marked with `[main]` or `[bare]`.
79
+
80
+ ### Step 3: Work Independently
81
+
82
+ Navigate to the new directory and work as usual:
83
+
84
+ ```bash
85
+ cd ../path-to-worktree
86
+ # Edit, stage, commit, push — all commands work the same
87
+ git add .
88
+ git commit -m "feat(epic-2): start new feature"
89
+ git push origin new-branch-name
90
+ ```
91
+
92
+ The main worktree is unaffected. You can run builds, tests, or linters in each worktree independently.
93
+
94
+ ### Step 4: Clean Up
95
+
96
+ When the branch is merged or no longer needed:
97
+
98
+ ```bash
99
+ # Remove the worktree and its directory
100
+ git worktree remove ../path-to-worktree
101
+
102
+ # Prune stale worktree references (if a worktree directory was deleted manually)
103
+ git worktree prune
104
+ ```
105
+
106
+ `git worktree remove` fails if the branch has unmerged changes — this is a safety check. Force with `--force` only if you're certain.
107
+
108
+ ---
109
+
110
+ ## Safety Rules
111
+
112
+ - **Never nest worktrees.** A worktree must not be created inside another worktree's directory. Nesting corrupts the relationship between `.git` files.
113
+ - **One worktree per branch.** Git refuses to check out the same branch in two worktrees simultaneously. If you need a second checkout of the same branch, create a new branch from it.
114
+ - **Shared `.git` means shared state.** Commits, fetches, and branch updates in one worktree are visible in all others. If you delete a branch in worktree A, it's gone everywhere.
115
+ - **Clean up stale worktrees.** If you delete a worktree directory manually (without `git worktree remove`), run `git worktree prune` to remove the stale reference.
116
+ - **Prune periodically.** After merging branches, run `git worktree prune` to keep the worktree list clean.
117
+ - **Bare repositories.** Worktrees also work from bare repos, but the commands differ. This skill focuses on standard (non-bare) use.
118
+
119
+ ---
120
+
121
+ ## Common Patterns
122
+
123
+ ### Parallel Epics
124
+
125
+ Start multiple epics from `main`, each in its own directory:
126
+
127
+ ```bash
128
+ git worktree add -b epic-payments ../epic-payments main
129
+ git worktree add -b epic-notifications ../epic-notifications main
130
+ git worktree add -b epic-search ../epic-search main
131
+ ```
132
+
133
+ Work on each independently. When one is ready, push and open a PR. The others continue unaffected.
134
+
135
+ ### Hotfix from Main
136
+
137
+ You're deep in a feature branch with uncommitted changes. A critical bug needs an immediate fix on `main`:
138
+
139
+ ```bash
140
+ # Create hotfix worktree from main — your feature branch stays untouched
141
+ git worktree add -b hotfix/critical-bug ../hotfix main
142
+
143
+ # Navigate, fix, commit, push
144
+ cd ../hotfix
145
+ # ... make the fix ...
146
+ git add .
147
+ git commit -m "fix(billing): prevent double charge on retry"
148
+ git push origin hotfix/critical-bug
149
+
150
+ # Return to your feature — nothing was stashed, nothing was interrupted
151
+ cd ../project
152
+ ```
153
+
154
+ ### Review a PR Locally
155
+
156
+ Checkout and test a PR branch without disrupting your work:
157
+
158
+ ```bash
159
+ git worktree add ../review-pr-billing main
160
+ cd ../review-pr-billing
161
+ git fetch origin pull/42/head:pr-42
162
+ git checkout pr-42
163
+ # Build, test, review — your main working directory is untouched
164
+ ```
165
+
166
+ ### CI / Long-Running Tasks
167
+
168
+ Run a full test suite or build in an isolated worktree while you keep coding:
169
+
170
+ ```bash
171
+ git worktree add ../ci-build main
172
+ cd ../ci-build
173
+ bun test # runs while you continue editing in the main directory
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Merge Strategy
179
+
180
+ After worktrees finish their work:
181
+
182
+ 1. **Merge in dependency order.** If epic-1 depends on epic-2, merge epic-2 first.
183
+ 2. **Resolve conflicts in the main worktree.** Conflicts must be resolved before the branch can be merged. Standard merging applies — worktrees don't change this.
184
+ 3. **Push and open PRs** from each worktree as usual.
185
+ 4. **Clean up** after merge:
186
+
187
+ ```bash
188
+ # After the branch is merged on the remote
189
+ git branch -d branch-name # delete local branch (from any worktree)
190
+ git worktree remove ../path # remove the worktree directory
191
+ ```
192
+
193
+ 5. **Prune periodically** to remove stale worktree references:
194
+
195
+ ```bash
196
+ git worktree prune
197
+ ```
198
+
199
+ ---
200
+
201
+ ## Verification
202
+
203
+ After setting up a worktree:
204
+
205
+ - [ ] `git worktree list` shows the new worktree with the correct branch and path
206
+ - [ ] Navigating to the worktree directory shows the expected branch's files
207
+ - [ ] `cd` into the worktree and run `git status` — clean state on the target branch
208
+ - [ ] Commits made in the worktree appear in `git log` from the main directory
209
+ - [ ] The main worktree is unaffected — your original work is exactly as you left it
210
+ - [ ] After merging, the branch is deleted and `git worktree remove` cleans up the directory
211
+ - [ ] `git worktree prune` confirms no stale references remain
212
+
213
+ ---
214
+
215
+ ## See Also
216
+
217
+ - [Git Worktree Documentation](https://git-scm.com/docs/git-worktree)
218
+ - [Git Worktree Tutorial (Atlassian)](https://www.atlassian.com/git/tutorials/git-worktree)
219
+ - `git-worktree` man page: `man git-worktree` or `git worktree --help`
220
+ - For learning patterns from your project's git history, see the `git-commit-learning` spell
@@ -0,0 +1,13 @@
1
+ # idea-refine
2
+
3
+ Refine raw ideas through structured divergent and convergent thinking.
4
+
5
+ | Field | Value |
6
+ |-------|-------|
7
+ | Version | 1.0.0 |
8
+ | Trigger | `/ideate`, "refine this idea", "stress-test my plan" |
9
+ | PT trigger | "refinar ideia", "expandir opções", "validar premissas" |
10
+
11
+ **Do not use for** vague ideas that need `/interview-me` first to extract intent, or for requirements already sharp enough for `/spec-driven`.
12
+
13
+ See [SKILL.md](SKILL.md) for the full process.
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: idea-refine
3
+ description: >
4
+ Refines raw ideas into sharp, actionable concepts through structured divergent and convergent thinking.
5
+ Use when an idea is still vague, when you need to stress-test assumptions before committing to a plan,
6
+ or when you want to expand options before converging on one.
7
+ EN triggers: /ideate, "refine this idea", "stress-test my plan", brainstorm, expand options.
8
+ PT triggers: refinar ideia, expandir opções, brainstorm, validar premissas.
9
+ Do NOT use for: vague ideas that need /interview-me first to extract intent, or for
10
+ requirements that are already sharp enough for /spec-driven.
11
+ license: CC-BY-4.0
12
+ ---
13
+
14
+ # Idea Refine
15
+
16
+ Refines raw ideas into sharp, actionable concepts worth building through structured divergent and convergent thinking.
17
+
18
+ ## How It Works
19
+
20
+ 1. **Understand & Expand (Divergent):** Restate the idea, ask sharpening questions, and generate variations.
21
+ 2. **Evaluate & Converge:** Cluster ideas, stress-test them, and surface hidden assumptions.
22
+ 3. **Sharpen & Ship:** Produce a concrete markdown one-pager moving work forward.
23
+
24
+ ## Usage
25
+
26
+ This skill is primarily an interactive dialogue. Invoke it with an idea, and the agent will guide you through the process.
27
+
28
+ ```bash
29
+ # Optional: Initialize the ideas directory
30
+ bash skills/idea-refine/scripts/idea-refine.sh
31
+ ```
32
+
33
+ **Trigger Phrases:**
34
+ - "Help me refine this idea"
35
+ - "Ideate on [concept]"
36
+ - "Stress-test my plan"
37
+
38
+ ## Output
39
+
40
+ The final output is a markdown one-pager saved to `docs/ideas/[idea-name].md` (after user confirmation), containing:
41
+ - Problem Statement
42
+ - Recommended Direction
43
+ - Key Assumptions
44
+ - MVP Scope
45
+ - Not Doing list
46
+
47
+ ## Detailed Instructions
48
+
49
+ You are an ideation partner. Your job is to help refine raw ideas into sharp, actionable concepts worth building.
50
+
51
+ ### Philosophy
52
+
53
+ - Simplicity is the ultimate sophistication. Push toward the simplest version that still solves the real problem.
54
+ - Start with the user experience, work backwards to technology.
55
+ - Say no to 1,000 things. Focus beats breadth.
56
+ - Challenge every assumption. "How it's usually done" is not a reason.
57
+ - Show people the future — don't just give them better horses.
58
+ - The parts you can't see should be as beautiful as the parts you can.
59
+
60
+ ### Process
61
+
62
+ When the user invokes this skill with an idea (`$ARGUMENTS`), guide them through three phases. Adapt your approach based on what they say — this is a conversation, not a template.
63
+
64
+ #### Phase 1: Understand & Expand (Divergent)
65
+
66
+ **Goal:** Take the raw idea and open it up.
67
+
68
+ 1. **Restate the idea** as a crisp "How Might We" problem statement. This forces clarity on what's actually being solved.
69
+
70
+ 2. **Ask 3-5 sharpening questions** — no more. Focus on:
71
+ - Who is this for, specifically?
72
+ - What does success look like?
73
+ - What are the real constraints (time, tech, resources)?
74
+ - What's been tried before?
75
+ - Why now?
76
+
77
+ Use the `AskUserQuestion` tool to gather this input. Do NOT proceed until you understand who this is for and what success looks like.
78
+
79
+ 3. **Generate 5-8 idea variations** using these lenses:
80
+ - **Inversion:** "What if we did the opposite?"
81
+ - **Constraint removal:** "What if budget/time/tech weren't factors?"
82
+ - **Audience shift:** "What if this were for [different user]?"
83
+ - **Combination:** "What if we merged this with [adjacent idea]?"
84
+ - **Simplification:** "What's the version that's 10x simpler?"
85
+ - **10x version:** "What would this look like at massive scale?"
86
+ - **Expert lens:** "What would [domain] experts find obvious that outsiders wouldn't?"
87
+
88
+ Push beyond what the user initially asked for. Create products people don't know they need yet.
89
+
90
+ **If running inside a codebase:** Use `Glob`, `Grep`, and `Read` to scan for relevant context — existing architecture, patterns, constraints, prior art. Ground your variations in what actually exists. Reference specific files and patterns when relevant.
91
+
92
+ Read `frameworks.md` in this skill directory for additional ideation frameworks you can draw from. Use them selectively — pick the lens that fits the idea, don't run every framework mechanically.
93
+
94
+ #### Phase 2: Evaluate & Converge
95
+
96
+ After the user reacts to Phase 1 (indicates which ideas resonate, pushes back, adds context), shift to convergent mode:
97
+
98
+ 1. **Cluster** the ideas that resonated into 2-3 distinct directions. Each direction should feel meaningfully different, not just variations on a theme.
99
+
100
+ 2. **Stress-test** each direction against three criteria:
101
+ - **User value:** Who benefits and how much? Is this a painkiller or a vitamin?
102
+ - **Feasibility:** What's the technical and resource cost? What's the hardest part?
103
+ - **Differentiation:** What makes this genuinely different? Would someone switch from their current solution?
104
+
105
+ Read `refinement-criteria.md` in this skill directory for the full evaluation rubric.
106
+
107
+ 3. **Surface hidden assumptions.** For each direction, explicitly name:
108
+ - What you're betting is true (but haven't validated)
109
+ - What could kill this idea
110
+ - What you're choosing to ignore (and why that's okay for now)
111
+
112
+ This is where most ideation fails. Don't skip it.
113
+
114
+ **Be honest, not supportive.** If an idea is weak, say so with kindness. A good ideation partner is not a yes-machine. Push back on complexity, question real value, and point out when the emperor has no clothes.
115
+
116
+ #### Phase 3: Sharpen & Ship
117
+
118
+ Produce a concrete artifact — a markdown one-pager that moves work forward:
119
+
120
+ ```markdown
121
+ # [Idea Name]
122
+
123
+ ## Problem Statement
124
+ [One-sentence "How Might We" framing]
125
+
126
+ ## Recommended Direction
127
+ [The chosen direction and why — 2-3 paragraphs max]
128
+
129
+ ## Key Assumptions to Validate
130
+ - [ ] [Assumption 1 — how to test it]
131
+ - [ ] [Assumption 2 — how to test it]
132
+ - [ ] [Assumption 3 — how to test it]
133
+
134
+ ## MVP Scope
135
+ [The minimum version that tests the core assumption. What's in, what's out.]
136
+
137
+ ## Not Doing (and Why)
138
+ - [Thing 1] — [reason]
139
+ - [Thing 2] — [reason]
140
+ - [Thing 3] — [reason]
141
+
142
+ ## Open Questions
143
+ - [Question that needs answering before building]
144
+ ```
145
+
146
+ **The "Not Doing" list is arguably the most valuable part.** Focus is about saying no to good ideas. Make the trade-offs explicit.
147
+
148
+ Ask the user if they'd like to save this to `docs/ideas/[idea-name].md` (or a location of their choosing). Only save if they confirm.
149
+
150
+ ### Anti-patterns to Avoid
151
+
152
+ - **Don't generate 20+ ideas.** Quality over quantity. 5-8 well-considered variations beat 20 shallow ones.
153
+ - **Don't be a yes-machine.** Push back on weak ideas with specificity and kindness.
154
+ - **Don't skip "who is this for."** Every good idea starts with a person and their problem.
155
+ - **Don't produce a plan without surfacing assumptions.** Untested assumptions are the #1 killer of good ideas.
156
+ - **Don't over-engineer the process.** Three phases, each doing one thing well. Resist adding steps.
157
+ - **Don't just list ideas — tell a story.** Each variation should have a reason it exists, not just be a bullet point.
158
+ - **Don't ignore the codebase.** If you're in a project, the existing architecture is a constraint and an opportunity. Use it.
159
+
160
+ ### Tone
161
+
162
+ Direct, thoughtful, slightly provocative. You're a sharp thinking partner, not a facilitator reading from a script. Channel the energy of "that's interesting, but what if..." -- always pushing one step further without being exhausting.
163
+
164
+ Read `examples.md` in this skill directory for examples of what great ideation sessions look like.
165
+
166
+ ## Red Flags
167
+
168
+ - Generating 20+ shallow variations instead of 5-8 considered ones
169
+ - Skipping the "who is this for" question
170
+ - No assumptions surfaced before committing to a direction
171
+ - Yes-machining weak ideas instead of pushing back with specificity
172
+ - Producing a plan without a "Not Doing" list
173
+ - Ignoring existing codebase constraints when ideating inside a project
174
+ - Jumping straight to Phase 3 output without running Phases 1 and 2
175
+
176
+ ## Verification
177
+
178
+ After completing an ideation session:
179
+
180
+ - [ ] A clear "How Might We" problem statement exists
181
+ - [ ] The target user and success criteria are defined
182
+ - [ ] Multiple directions were explored, not just the first idea
183
+ - [ ] Hidden assumptions are explicitly listed with validation strategies
184
+ - [ ] A "Not Doing" list makes trade-offs explicit
185
+ - [ ] The output is a concrete artifact (markdown one-pager), not just conversation
186
+ - [ ] The user confirmed the final direction before any implementation work
@@ -0,0 +1,13 @@
1
+ # interview-me
2
+
3
+ One-question-at-a-time interview until ~95% confidence about the user's underlying intent.
4
+
5
+ | Field | Value |
6
+ |-------|-------|
7
+ | Version | 1.0.0 |
8
+ | Trigger | `/interview`, "interview me", "grill me", "are we sure?" |
9
+ | PT trigger | `/entrevista`, "me entrevista", "tenho certeza?" |
10
+
11
+ **Do not use for** well-specified asks (route to `/spec-driven` instead), or after the spec is written (use `/doubt-driven-development` to stress-test a finished plan).
12
+
13
+ See [SKILL.md](SKILL.md) for the full process.
@@ -0,0 +1,233 @@
1
+ ---
2
+ name: interview-me
3
+ description: >
4
+ Extracts what the user actually wants through one-question-at-a-time interview until ~95% confidence
5
+ about the underlying intent. Use when an ask is underspecified, when the user explicitly invokes it,
6
+ or when you catch yourself silently filling in ambiguous requirements before any plan, spec, or code exists.
7
+ EN triggers: /interview, "interview me", "grill me", "are we sure?", "stress-test my thinking".
8
+ PT triggers: /entrevista, "me entrevista", "tenho certeza?", questiona minhas premissas.
9
+ Do NOT use for: well-specified asks (route to /spec-driven instead), or after the spec is written
10
+ (use /doubt-driven-development to stress-test a finished plan).
11
+ license: CC-BY-4.0
12
+ ---
13
+
14
+ # Interview Me
15
+
16
+ ## Overview
17
+
18
+ What people ask for and what they actually want are different things. They ask for "a dashboard" because that's what one asks for, not because a dashboard solves their problem. They say "make it faster" without a number to hit.
19
+
20
+ The cheapest moment to find this gap is before any plan, spec, or code exists. Once you've started building, switching costs are real, and the user will rationalize the wrong thing into a "good enough" thing. The misfit gets locked in.
21
+
22
+ This skill closes the gap before it costs anything. The other Define-phase skills assume you already know roughly what you want: `idea-refine` generates variations from an idea, `spec-driven` writes the requirements down, `doubt-driven-development` stress-tests a plan after you've drafted one. Interview-me is the part before all of those, where you ask one question at a time, with your best guess attached, until you can predict what the user is going to say before they say it.
23
+
24
+ ## When to Use
25
+
26
+ Apply this skill when:
27
+
28
+ - The ask is missing at least one of: **who** the user is, **why** they want it, what **success** looks like, what the binding **constraint** is
29
+ - The request is conventional rather than specific ("build me X", "make it faster") and you can't unpack the convention without guessing
30
+ - You're tempted to start with assumptions you haven't surfaced
31
+ - The user hasn't said which value they're optimizing for when two reasonable ones are in tension (simplicity vs. flexibility, cost vs. speed)
32
+ - The user explicitly invokes: "interview me", "grill me", "before we start, are we sure?", "stress-test my thinking"
33
+
34
+ **When NOT to use:**
35
+
36
+ - The ask is unambiguous and self-contained ("rename this variable", "fix this typo")
37
+ - The user has explicitly asked for speed over verification
38
+ - Pure information requests ("how does X work?", "what does this code do?")
39
+ - Mechanical operations (renames, formats, file moves)
40
+ - You already have ≥95% confidence; re-read the stop condition below before assuming you don't
41
+
42
+ ## Loading Constraints
43
+
44
+ This skill needs a live, responsive user. **Do not invoke in non-interactive contexts** like CI pipelines, scheduled runs, `/loop`, or autonomous-loop. If you're in one of those and the ask is underspecified, flag that as a blocker for the user instead of guessing.
45
+
46
+ ## The Process
47
+
48
+ ### Step 1: Hypothesize, with a confidence number
49
+
50
+ Before asking anything, write down your current best read of what the user wants in **one sentence**, plus an honest confidence number (0–100%):
51
+
52
+ ```
53
+ HYPOTHESIS: You want a way to answer "how are we doing?" in standup, and "dashboard" was the convention that came to mind.
54
+ CONFIDENCE: ~30% — missing: who it's for, what "metrics" means in context, and what success looks like
55
+ ```
56
+
57
+ The number forces honesty. If you wrote down a high number but can't actually predict the user's reactions to the next three questions you'd ask, the number is wrong. Start at the confidence level you can defend.
58
+
59
+ When confidence is below ~70%, append a brief reason on the same line — what's still unresolved or missing. This tells the user exactly what the interview needs to surface, and prevents the number from being a vague signal.
60
+
61
+ ### Step 2: Ask one question at a time, each with a guess attached
62
+
63
+ Format:
64
+
65
+ ```
66
+ Q: <one focused question>
67
+ GUESS: <your hypothesis for the answer, with the reasoning that produced it>
68
+ ```
69
+
70
+ Wait for the user to react before asking the next question.
71
+
72
+ **Why one at a time, not a batch:**
73
+
74
+ - The user can't react to your hypotheses if you bury them in a list
75
+ - Batches encourage skim-reading and surface answers
76
+ - The third question often depends on the answer to the first; asking them all at once locks in the wrong framing
77
+ - The user's energy for thinking carefully is finite; spend it one question at a time
78
+
79
+ **Why attach a guess:**
80
+
81
+ - The user reacts faster to a wrong guess than they generate an answer from scratch
82
+ - It commits you to a hypothesis you can be visibly wrong about, which keeps you honest
83
+ - It surfaces *your* assumptions, which is what the interview is meant to expose
84
+
85
+ The risk here is a polite user agreeing with your guess to be agreeable. Mitigate by being visibly willing to be wrong, and occasionally guess in a direction you expect the user to push back on.
86
+
87
+ ### Step 3: Listen for "want vs. should want"
88
+
89
+ The most dangerous answers are the ones where the user says what a thoughtful answer *sounds like* rather than what they actually want. Watch for:
90
+
91
+ - Answers that pattern-match best-practice talk ("I want it to be scalable", "clean architecture") without specifics
92
+ - Answers that defer to convention ("the way most apps do it", "the standard approach")
93
+ - Phrases like "I should probably…", "I think I'm supposed to…", "good engineering practice says…"
94
+ - Buzzwords as goals — when "modern", "scalable", "robust" are the answer instead of a specific outcome
95
+
96
+ When you hear these, the question to ask is:
97
+
98
+ > *"If you didn't have to justify this to anyone, what would you actually want?"*
99
+
100
+ That single question often does more work than the previous five.
101
+
102
+ ### Step 4: Restate intent in the user's own words
103
+
104
+ When your confidence is high, write back what you now think the user wants. Keep it tight (5–8 lines), use their language where possible, and structure it so the user can confirm or correct line by line:
105
+
106
+ ```
107
+ Here's what I now think you want:
108
+
109
+ - Outcome: <one line>
110
+ - User: <one line — who benefits>
111
+ - Why now: <one line — what changed>
112
+ - Success: <one line — how we know it worked>
113
+ - Constraint: <one line — the binding limit>
114
+ - Out of scope: <one line — what we're explicitly not doing>
115
+
116
+ Yes / no / refine?
117
+ ```
118
+
119
+ Including "Out of scope" is non-negotiable. Half of misalignment is silent disagreement about what is *not* being built.
120
+
121
+ ### Step 5: Confirm — explicit yes, not "whatever you think"
122
+
123
+ The gate is an explicit "yes." The following are **not** yes:
124
+
125
+ - "Whatever you think is best." → The user is delegating, which means they don't have 95% confidence either. Re-ask with two concrete options framed as a choice.
126
+ - "Sounds good." → Ambiguous. Ask: "Anything you'd refine?" Silence isn't confirmation.
127
+ - "Sure, let's go." → Often a polite exit, not an endorsement. Same follow-up.
128
+ - Silence followed by "okay let's start." → The user has given up on the interview, not converged. Stop and ask whether you've missed something.
129
+
130
+ If they correct you, fold the correction in and restate. Loop until you get an explicit yes.
131
+
132
+ ### The 95% Confidence Stop
133
+
134
+ You're done when you can answer yes to this:
135
+
136
+ > *Can I predict the user's reaction to the next three questions I would ask?*
137
+
138
+ If yes, you have shared understanding. Stop interviewing and produce the restate. If no, you're not done; ask the next question.
139
+
140
+ This is a checkable test, not a vibe. It also has a floor: if you've gone several rounds and still can't predict, that's information about the ask, not a reason to keep grinding. Stop and tell the user: "I've asked X questions and I still can't predict your reactions. Something foundational is missing. Want to step back?"
141
+
142
+ ## Output
143
+
144
+ The output of this skill is a **confirmed statement of intent**: the restate from Step 4, with an explicit yes from Step 5. That's the deliverable. Specs, plans, and task lists are downstream; they consume the intent this skill produces.
145
+
146
+ If the user wants the intent to persist (a multi-session project, a handoff to another collaborator), offer to save it to `docs/intent/[topic].md`. Only save if they confirm.
147
+
148
+ ## Example
149
+
150
+ A short before-and-after.
151
+
152
+ **Without `interview-me`:**
153
+
154
+ ```
155
+ User: build me a dashboard for our metrics
156
+ Agent: <starts proposing chart libraries and layouts>
157
+ ```
158
+
159
+ The agent has assumed: who it's for, what metrics, what "for our team" means, what success looks like. None of these are stated. Every assumption is a place the user can later say "that's not what I meant."
160
+
161
+ **With `interview-me`:**
162
+
163
+ ```
164
+ User: build me a dashboard for our metrics
165
+
166
+ Agent:
167
+ HYPOTHESIS: You want a way to answer "how are we doing?" in standup, and "dashboard" came to mind because that's the conventional answer.
168
+ CONFIDENCE: ~30% — missing: who it's for, what "metrics" are, and what success looks like
169
+
170
+ Q: When you say "how are we doing?", who's asking — you alone, the engineering team in standup, or up the chain (e.g., your manager, an exec, a board)?
171
+ GUESS: engineering team in standup, because "we" usually scopes that way and standups are where this question gets asked. If it's for execs the metrics and the framing change a lot.
172
+
173
+ User: It's actually for me. I keep losing track of which experiments are running and what their early signal looks like.
174
+
175
+ Agent:
176
+ Updated read: not a team dashboard at all. It's a personal experiment tracker. Confidence: ~60% — still missing: what "early signal" means and what done looks like.
177
+
178
+ Q: Is the gap that you don't know which experiments exist, or that you can't see their results in one place?
179
+ GUESS: the second one. You have a list of experiments somewhere, but their results live in five different tools, and reconciling them by hand is what you're tired of.
180
+
181
+ User: First one actually. I literally don't have a list. They're spread across different docs.
182
+
183
+ Agent: <continues>
184
+ ```
185
+
186
+ Two questions in, the agent has discovered the actual ask isn't "a dashboard." It's "a list." Different artifact, different scope, different work. The dashboard would have been wrong.
187
+
188
+ ## Interaction with Other Skills
189
+
190
+ - **`idea-refine`**: downstream. If the confirmed intent is "I want X but I don't know how to scope it," hand off to `idea-refine` to generate variations against the now-explicit intent.
191
+ - **`spec-driven`**: downstream. If the confirmed intent is concrete ("I want X for Y users with Z success criteria"), hand off to `spec-driven` to write it down.
192
+ - **`spec-driven` tasks phase**: two hops downstream of this skill (after the spec).
193
+ - **`doubt-driven-development`**: opposite end of the timeline. Interview-me is pre-decision intent extraction; doubt-driven is post-decision artifact review. Both catch divergence, but at different moments.
194
+ - **Framework-fact verification**: orthogonal. Interview-me clarifies what the user wants; verifying facts about frameworks against official docs is separate work. They don't compete.
195
+
196
+ ## Common Rationalizations
197
+
198
+ | Rationalization | Reality |
199
+ |---|---|
200
+ | "The ask is clear enough" | If you can't write the user's desired outcome in one sentence right now, the ask isn't clear. Run Step 1 before deciding. |
201
+ | "Asking too many questions wastes their time" | Time wasted by 4–6 targeted questions is small. Time wasted by building the wrong thing is enormous, and the user is the one bearing that cost. |
202
+ | "I'll figure it out as I build" | Switching costs after code exists are 10x what they are now. Discovery during implementation is rework. |
203
+ | "They said 'whatever you think,' so I should just decide" | "Whatever you think" is delegation, not decision. Re-ask with two concrete options as a choice. |
204
+ | "I should give them several options to pick from" | Options work when the user knows what they want and is choosing between trade-offs. They don't know what they want yet. Listing options widens the search; asking narrows it. |
205
+ | "If I attach my guess, I'm leading them" | Leading is the point. Reacting is faster than generating from scratch. The risk is sycophancy, not leading; mitigate by being visibly willing to be wrong. |
206
+ | "We've talked enough, I get it" | Test it: can you predict their reaction to the next three questions? If not, you don't get it yet. |
207
+ | "The user said yes, we're done" | If the yes followed a vague restate or an open-ended "sounds good," the yes is hollow. Restate concretely and re-confirm. |
208
+
209
+ ## Red Flags
210
+
211
+ - Three or more questions in a single message: that's batching, not interviewing
212
+ - A question without your hypothesis attached: that's surveying, not committing
213
+ - Accepting "whatever you think is best" as a terminal answer
214
+ - Producing a spec, plan, or task list before the user has explicitly confirmed your restate
215
+ - Questions framed as "what would be best practice?" instead of "what do you actually want?"
216
+ - The user gives a sophistication-signaling answer ("scalable", "clean", "modern") and you accept it without probing whether it's what they actually want
217
+ - Three or more rounds without your confidence visibly rising: you're asking the wrong questions, step back and reframe
218
+ - A confidence number below ~70% with no reason attached: the user can't help close the gap if they don't know what's missing
219
+ - Saving the intent doc before the user has confirmed (the doc itself implies a yes the user didn't give)
220
+ - Skipping the "Out of scope" line in the restate (silent disagreement about non-goals is half of misalignment)
221
+
222
+ ## Verification
223
+
224
+ After applying interview-me:
225
+
226
+ - [ ] An explicit hypothesis with a confidence number was stated in the first turn
227
+ - [ ] Every confidence number below ~70% was accompanied by a one-line reason (what's still unresolved or missing)
228
+ - [ ] Questions were asked one at a time, each with the agent's guess attached
229
+ - [ ] At least one "what would you actually want if you didn't have to justify it?" probe ran when the user gave a sophistication-signaling or convention-signaling answer
230
+ - [ ] A concrete restate (Outcome / User / Why now / Success / Constraint / Out of scope) was written back to the user
231
+ - [ ] The user confirmed the restate with an explicit yes (not "whatever you think," not "sounds good," not silence)
232
+ - [ ] At the stop point, the agent could predict reactions to the next three questions it would ask
233
+ - [ ] Any handoff to a downstream skill (`idea-refine`, `spec-driven`) was framed in terms of the confirmed intent, not the original underspecified ask