@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.
- package/LICENSE +21 -0
- package/README.md +21 -0
- package/catalog.json +9 -0
- package/dist/grimoire.js +1758 -0
- package/package.json +54 -0
- package/references/definition-of-done.md +67 -0
- package/references/testing-patterns.md +260 -0
- package/skills/code-review-and-quality/README.md +13 -0
- package/skills/code-review-and-quality/SKILL.md +389 -0
- package/skills/code-simplification/README.md +13 -0
- package/skills/code-simplification/SKILL.md +338 -0
- package/skills/debugging-and-error-recovery/README.md +13 -0
- package/skills/debugging-and-error-recovery/SKILL.md +343 -0
- package/skills/debugging-and-error-recovery/scripts/__pycache__/triage_state.cpython-314.pyc +0 -0
- package/skills/debugging-and-error-recovery/scripts/triage_state.py +206 -0
- package/skills/deprecation-and-migration/README.md +13 -0
- package/skills/deprecation-and-migration/SKILL.md +248 -0
- package/skills/deprecation-and-migration/scripts/__pycache__/migration_tracker.cpython-314.pyc +0 -0
- package/skills/deprecation-and-migration/scripts/migration_tracker.py +237 -0
- package/skills/doubt-driven-development/README.md +13 -0
- package/skills/doubt-driven-development/SKILL.md +251 -0
- package/skills/git-commit-learning/.skill-meta.json +14 -0
- package/skills/git-commit-learning/README.md +205 -0
- package/skills/git-commit-learning/SKILL.md +435 -0
- package/skills/git-commit-learning/references/commit-patterns.md +595 -0
- package/skills/git-worktree/README.md +13 -0
- package/skills/git-worktree/SKILL.md +220 -0
- package/skills/idea-refine/README.md +13 -0
- package/skills/idea-refine/SKILL.md +186 -0
- package/skills/interview-me/README.md +13 -0
- package/skills/interview-me/SKILL.md +233 -0
- package/skills/linkedin-audit/SKILL.md +98 -0
- package/skills/linkedin-audit/references/dashboard-spec.md +43 -0
- package/skills/memory-management/README.md +13 -0
- package/skills/memory-management/SKILL.md +198 -0
- package/skills/security-and-hardening/README.md +13 -0
- package/skills/security-and-hardening/SKILL.md +472 -0
- package/skills/shipping-and-launch/README.md +13 -0
- package/skills/shipping-and-launch/SKILL.md +317 -0
- package/skills/skill-forge/README.md +153 -0
- package/skills/skill-forge/SKILL.md +291 -0
- package/skills/skill-forge/assets/SKILL.template.md +73 -0
- package/skills/skill-forge/references/authoring-patterns.md +249 -0
- package/skills/skill-forge/references/description-optimization.md +171 -0
- package/skills/skill-forge/references/output-evaluation.md +276 -0
- package/skills/skill-forge/references/scripts-guide.md +232 -0
- package/skills/skill-forge/references/spec.md +175 -0
- package/skills/skill-forge/scripts/validate.py +536 -0
- package/skills/spec-driven/.skill-meta.json +14 -0
- package/skills/spec-driven/README.md +335 -0
- package/skills/spec-driven/SKILL.md +174 -0
- package/skills/spec-driven/references/code-analysis.md +98 -0
- package/skills/spec-driven/references/coding-principles.md +56 -0
- package/skills/spec-driven/references/context-limits.md +31 -0
- package/skills/spec-driven/references/design.md +199 -0
- package/skills/spec-driven/references/discuss.md +136 -0
- package/skills/spec-driven/references/implement.md +425 -0
- package/skills/spec-driven/references/lessons.md +113 -0
- package/skills/spec-driven/references/memory.md +126 -0
- package/skills/spec-driven/references/specify.md +210 -0
- package/skills/spec-driven/references/sub-agents.md +96 -0
- package/skills/spec-driven/references/tasks.md +484 -0
- package/skills/spec-driven/references/validate.md +350 -0
- package/skills/spec-driven/scripts/__pycache__/lessons.cpython-314.pyc +0 -0
- package/skills/spec-driven/scripts/lessons.py +370 -0
- package/skills/spec-loop/README.md +36 -0
- package/skills/spec-loop/SKILL.md +61 -0
- package/skills/test-driven-development/README.md +13 -0
- package/skills/test-driven-development/SKILL.md +388 -0
- package/skills/typescript-patterns/README.md +13 -0
- package/skills/typescript-patterns/SKILL.md +346 -0
- package/skills/using-agent-skills/README.md +13 -0
- 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
|