ariadna 1.3.1 → 2.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 (148) hide show
  1. checksums.yaml +4 -4
  2. data/ariadna.gemspec +0 -1
  3. data/data/agents/ariadna-codebase-mapper.md +34 -722
  4. data/data/agents/ariadna-debugger.md +44 -1139
  5. data/data/agents/ariadna-executor.md +75 -396
  6. data/data/agents/ariadna-planner.md +78 -1215
  7. data/data/agents/ariadna-roadmapper.md +55 -582
  8. data/data/agents/ariadna-verifier.md +60 -702
  9. data/data/ariadna/templates/config.json +8 -33
  10. data/data/ariadna/workflows/debug.md +28 -0
  11. data/data/ariadna/workflows/execute-phase.md +31 -513
  12. data/data/ariadna/workflows/map-codebase.md +20 -319
  13. data/data/ariadna/workflows/new-milestone.md +20 -365
  14. data/data/ariadna/workflows/new-project.md +19 -880
  15. data/data/ariadna/workflows/plan-phase.md +24 -443
  16. data/data/ariadna/workflows/progress.md +20 -376
  17. data/data/ariadna/workflows/quick.md +19 -221
  18. data/data/ariadna/workflows/roadmap-ops.md +28 -0
  19. data/data/ariadna/workflows/verify-work.md +23 -560
  20. data/data/commands/ariadna/add-phase.md +11 -22
  21. data/data/commands/ariadna/debug.md +11 -143
  22. data/data/commands/ariadna/execute-phase.md +12 -30
  23. data/data/commands/ariadna/insert-phase.md +7 -14
  24. data/data/commands/ariadna/map-codebase.md +16 -49
  25. data/data/commands/ariadna/new-milestone.md +12 -25
  26. data/data/commands/ariadna/new-project.md +22 -26
  27. data/data/commands/ariadna/plan-phase.md +13 -22
  28. data/data/commands/ariadna/progress.md +16 -6
  29. data/data/commands/ariadna/quick.md +9 -11
  30. data/data/commands/ariadna/remove-phase.md +9 -12
  31. data/data/commands/ariadna/verify-work.md +14 -19
  32. data/data/skills/rails-backend/API.md +138 -0
  33. data/data/skills/rails-backend/CONTROLLERS.md +154 -0
  34. data/data/skills/rails-backend/JOBS.md +132 -0
  35. data/data/skills/rails-backend/MODELS.md +213 -0
  36. data/data/skills/rails-backend/SKILL.md +169 -0
  37. data/data/skills/rails-frontend/ASSETS.md +154 -0
  38. data/data/skills/rails-frontend/COMPONENTS.md +253 -0
  39. data/data/skills/rails-frontend/SKILL.md +187 -0
  40. data/data/skills/rails-frontend/VIEWS.md +168 -0
  41. data/data/skills/rails-performance/PROFILING.md +106 -0
  42. data/data/skills/rails-performance/SKILL.md +217 -0
  43. data/data/skills/rails-security/AUDIT.md +118 -0
  44. data/data/skills/rails-security/SKILL.md +422 -0
  45. data/data/skills/rails-testing/FIXTURES.md +78 -0
  46. data/data/skills/rails-testing/SKILL.md +160 -0
  47. data/data/skills/rails-testing/SYSTEM-TESTS.md +73 -0
  48. data/lib/ariadna/installer.rb +11 -15
  49. data/lib/ariadna/tools/cli.rb +0 -12
  50. data/lib/ariadna/tools/config_manager.rb +10 -72
  51. data/lib/ariadna/tools/frontmatter.rb +23 -1
  52. data/lib/ariadna/tools/init.rb +201 -401
  53. data/lib/ariadna/tools/model_profiles.rb +6 -14
  54. data/lib/ariadna/tools/phase_manager.rb +1 -10
  55. data/lib/ariadna/tools/state_manager.rb +170 -451
  56. data/lib/ariadna/tools/template_filler.rb +4 -12
  57. data/lib/ariadna/tools/verification.rb +21 -399
  58. data/lib/ariadna/uninstaller.rb +9 -0
  59. data/lib/ariadna/version.rb +1 -1
  60. metadata +20 -91
  61. data/data/agents/ariadna-backend-executor.md +0 -261
  62. data/data/agents/ariadna-frontend-executor.md +0 -259
  63. data/data/agents/ariadna-integration-checker.md +0 -418
  64. data/data/agents/ariadna-phase-researcher.md +0 -469
  65. data/data/agents/ariadna-plan-checker.md +0 -622
  66. data/data/agents/ariadna-project-researcher.md +0 -618
  67. data/data/agents/ariadna-research-synthesizer.md +0 -236
  68. data/data/agents/ariadna-test-executor.md +0 -266
  69. data/data/ariadna/references/checkpoints.md +0 -772
  70. data/data/ariadna/references/continuation-format.md +0 -249
  71. data/data/ariadna/references/decimal-phase-calculation.md +0 -65
  72. data/data/ariadna/references/git-integration.md +0 -248
  73. data/data/ariadna/references/git-planning-commit.md +0 -38
  74. data/data/ariadna/references/model-profile-resolution.md +0 -32
  75. data/data/ariadna/references/model-profiles.md +0 -73
  76. data/data/ariadna/references/phase-argument-parsing.md +0 -61
  77. data/data/ariadna/references/planning-config.md +0 -194
  78. data/data/ariadna/references/questioning.md +0 -153
  79. data/data/ariadna/references/rails-conventions.md +0 -416
  80. data/data/ariadna/references/tdd.md +0 -267
  81. data/data/ariadna/references/ui-brand.md +0 -160
  82. data/data/ariadna/references/verification-patterns.md +0 -853
  83. data/data/ariadna/templates/codebase/architecture.md +0 -481
  84. data/data/ariadna/templates/codebase/concerns.md +0 -380
  85. data/data/ariadna/templates/codebase/conventions.md +0 -434
  86. data/data/ariadna/templates/codebase/integrations.md +0 -328
  87. data/data/ariadna/templates/codebase/stack.md +0 -189
  88. data/data/ariadna/templates/codebase/structure.md +0 -418
  89. data/data/ariadna/templates/codebase/testing.md +0 -606
  90. data/data/ariadna/templates/context.md +0 -283
  91. data/data/ariadna/templates/continue-here.md +0 -78
  92. data/data/ariadna/templates/debug-subagent-prompt.md +0 -91
  93. data/data/ariadna/templates/phase-prompt.md +0 -609
  94. data/data/ariadna/templates/planner-subagent-prompt.md +0 -117
  95. data/data/ariadna/templates/research-project/ARCHITECTURE.md +0 -439
  96. data/data/ariadna/templates/research-project/FEATURES.md +0 -168
  97. data/data/ariadna/templates/research-project/PITFALLS.md +0 -406
  98. data/data/ariadna/templates/research-project/STACK.md +0 -251
  99. data/data/ariadna/templates/research-project/SUMMARY.md +0 -247
  100. data/data/ariadna/templates/state.md +0 -176
  101. data/data/ariadna/templates/summary-complex.md +0 -59
  102. data/data/ariadna/templates/summary-minimal.md +0 -41
  103. data/data/ariadna/templates/summary-standard.md +0 -48
  104. data/data/ariadna/templates/user-setup.md +0 -310
  105. data/data/ariadna/workflows/add-phase.md +0 -111
  106. data/data/ariadna/workflows/add-todo.md +0 -157
  107. data/data/ariadna/workflows/audit-milestone.md +0 -241
  108. data/data/ariadna/workflows/check-todos.md +0 -176
  109. data/data/ariadna/workflows/complete-milestone.md +0 -644
  110. data/data/ariadna/workflows/diagnose-issues.md +0 -219
  111. data/data/ariadna/workflows/discovery-phase.md +0 -289
  112. data/data/ariadna/workflows/discuss-phase.md +0 -408
  113. data/data/ariadna/workflows/execute-plan.md +0 -448
  114. data/data/ariadna/workflows/help.md +0 -470
  115. data/data/ariadna/workflows/insert-phase.md +0 -129
  116. data/data/ariadna/workflows/list-phase-assumptions.md +0 -178
  117. data/data/ariadna/workflows/pause-work.md +0 -122
  118. data/data/ariadna/workflows/plan-milestone-gaps.md +0 -256
  119. data/data/ariadna/workflows/remove-phase.md +0 -154
  120. data/data/ariadna/workflows/research-phase.md +0 -74
  121. data/data/ariadna/workflows/resume-project.md +0 -306
  122. data/data/ariadna/workflows/set-profile.md +0 -80
  123. data/data/ariadna/workflows/settings.md +0 -145
  124. data/data/ariadna/workflows/transition.md +0 -493
  125. data/data/ariadna/workflows/update.md +0 -212
  126. data/data/ariadna/workflows/verify-phase.md +0 -226
  127. data/data/commands/ariadna/add-todo.md +0 -42
  128. data/data/commands/ariadna/audit-milestone.md +0 -42
  129. data/data/commands/ariadna/check-todos.md +0 -41
  130. data/data/commands/ariadna/complete-milestone.md +0 -136
  131. data/data/commands/ariadna/discuss-phase.md +0 -86
  132. data/data/commands/ariadna/help.md +0 -22
  133. data/data/commands/ariadna/list-phase-assumptions.md +0 -50
  134. data/data/commands/ariadna/pause-work.md +0 -35
  135. data/data/commands/ariadna/plan-milestone-gaps.md +0 -40
  136. data/data/commands/ariadna/reapply-patches.md +0 -110
  137. data/data/commands/ariadna/research-phase.md +0 -187
  138. data/data/commands/ariadna/resume-work.md +0 -40
  139. data/data/commands/ariadna/set-profile.md +0 -34
  140. data/data/commands/ariadna/settings.md +0 -36
  141. data/data/commands/ariadna/update.md +0 -37
  142. data/data/guides/backend.md +0 -3069
  143. data/data/guides/frontend.md +0 -1479
  144. data/data/guides/performance.md +0 -1193
  145. data/data/guides/security.md +0 -1522
  146. data/data/guides/style-guide.md +0 -1091
  147. data/data/guides/testing.md +0 -504
  148. data/data/templates.md +0 -94
@@ -1,61 +0,0 @@
1
- # Phase Argument Parsing
2
-
3
- Parse and normalize phase arguments for commands that operate on phases.
4
-
5
- ## Extraction
6
-
7
- From `$ARGUMENTS`:
8
- - Extract phase number (first numeric argument)
9
- - Extract flags (prefixed with `--`)
10
- - Remaining text is description (for insert/add commands)
11
-
12
- ## Using ariadna-tools
13
-
14
- The `find-phase` command handles normalization and validation in one step:
15
-
16
- ```bash
17
- PHASE_INFO=$(ariadna-tools find-phase "${PHASE}")
18
- ```
19
-
20
- Returns JSON with:
21
- - `found`: true/false
22
- - `directory`: Full path to phase directory
23
- - `phase_number`: Normalized number (e.g., "06", "06.1")
24
- - `phase_name`: Name portion (e.g., "foundation")
25
- - `plans`: Array of PLAN.md files
26
- - `summaries`: Array of SUMMARY.md files
27
-
28
- ## Manual Normalization (Legacy)
29
-
30
- Zero-pad integer phases to 2 digits. Preserve decimal suffixes.
31
-
32
- ```bash
33
- # Normalize phase number
34
- if [[ "$PHASE" =~ ^[0-9]+$ ]]; then
35
- # Integer: 8 → 08
36
- PHASE=$(printf "%02d" "$PHASE")
37
- elif [[ "$PHASE" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
38
- # Decimal: 2.1 → 02.1
39
- PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
40
- fi
41
- ```
42
-
43
- ## Validation
44
-
45
- Use `roadmap get-phase` to validate phase exists:
46
-
47
- ```bash
48
- PHASE_CHECK=$(ariadna-tools roadmap get-phase "${PHASE}")
49
- if [ "$(echo "$PHASE_CHECK" | jq -r '.found')" = "false" ]; then
50
- echo "ERROR: Phase ${PHASE} not found in roadmap"
51
- exit 1
52
- fi
53
- ```
54
-
55
- ## Directory Lookup
56
-
57
- Use `find-phase` for directory lookup:
58
-
59
- ```bash
60
- PHASE_DIR=$(ariadna-tools find-phase "${PHASE}" --raw)
61
- ```
@@ -1,194 +0,0 @@
1
- <planning_config>
2
-
3
- Configuration options for `.ariadna_planning/` directory behavior.
4
-
5
- <config_schema>
6
- ```json
7
- "planning": {
8
- "commit_docs": true,
9
- "search_gitignored": false
10
- },
11
- "git": {
12
- "branching_strategy": "none",
13
- "phase_branch_template": "ariadna/phase-{phase}-{slug}",
14
- "milestone_branch_template": "ariadna/{milestone}-{slug}"
15
- }
16
- ```
17
-
18
- | Option | Default | Description |
19
- |--------|---------|-------------|
20
- | `commit_docs` | `true` | Whether to commit planning artifacts to git |
21
- | `search_gitignored` | `false` | Add `--no-ignore` to broad rg searches |
22
- | `git.branching_strategy` | `"none"` | Git branching approach: `"none"`, `"phase"`, or `"milestone"` |
23
- | `git.phase_branch_template` | `"ariadna/phase-{phase}-{slug}"` | Branch template for phase strategy |
24
- | `git.milestone_branch_template` | `"ariadna/{milestone}-{slug}"` | Branch template for milestone strategy |
25
- </config_schema>
26
-
27
- <commit_docs_behavior>
28
-
29
- **When `commit_docs: true` (default):**
30
- - Planning files committed normally
31
- - SUMMARY.md, STATE.md, ROADMAP.md tracked in git
32
- - Full history of planning decisions preserved
33
-
34
- **When `commit_docs: false`:**
35
- - Skip all `git add`/`git commit` for `.ariadna_planning/` files
36
- - User must add `.ariadna_planning/` to `.gitignore`
37
- - Useful for: OSS contributions, client projects, keeping planning private
38
-
39
- **Using ariadna-tools (preferred):**
40
-
41
- ```bash
42
- # Commit with automatic commit_docs + gitignore checks:
43
- ariadna-tools commit "docs: update state" --files .ariadna_planning/STATE.md
44
-
45
- # Load config via state load (returns JSON):
46
- INIT=$(ariadna-tools state load)
47
- # commit_docs is available in the JSON output
48
-
49
- # Or use init commands which include commit_docs:
50
- INIT=$(ariadna-tools init execute-phase "1")
51
- # commit_docs is included in all init command outputs
52
- ```
53
-
54
- **Auto-detection:** If `.ariadna_planning/` is gitignored, `commit_docs` is automatically `false` regardless of config.json. This prevents git errors when users have `.ariadna_planning/` in `.gitignore`.
55
-
56
- **Commit via CLI (handles checks automatically):**
57
-
58
- ```bash
59
- ariadna-tools commit "docs: update state" --files .ariadna_planning/STATE.md
60
- ```
61
-
62
- The CLI checks `commit_docs` config and gitignore status internally — no manual conditionals needed.
63
-
64
- </commit_docs_behavior>
65
-
66
- <search_behavior>
67
-
68
- **When `search_gitignored: false` (default):**
69
- - Standard rg behavior (respects .gitignore)
70
- - Direct path searches work: `rg "pattern" .ariadna_planning/` finds files
71
- - Broad searches skip gitignored: `rg "pattern"` skips `.ariadna_planning/`
72
-
73
- **When `search_gitignored: true`:**
74
- - Add `--no-ignore` to broad rg searches that should include `.ariadna_planning/`
75
- - Only needed when searching entire repo and expecting `.ariadna_planning/` matches
76
-
77
- **Note:** Most Ariadna operations use direct file reads or explicit paths, which work regardless of gitignore status.
78
-
79
- </search_behavior>
80
-
81
- <setup_uncommitted_mode>
82
-
83
- To use uncommitted mode:
84
-
85
- 1. **Set config:**
86
- ```json
87
- "planning": {
88
- "commit_docs": false,
89
- "search_gitignored": true
90
- }
91
- ```
92
-
93
- 2. **Add to .gitignore:**
94
- ```
95
- .ariadna_planning/
96
- ```
97
-
98
- 3. **Existing tracked files:** If `.ariadna_planning/` was previously tracked:
99
- ```bash
100
- git rm -r --cached .ariadna_planning/
101
- git commit -m "chore: stop tracking planning docs"
102
- ```
103
-
104
- </setup_uncommitted_mode>
105
-
106
- <branching_strategy_behavior>
107
-
108
- **Branching Strategies:**
109
-
110
- | Strategy | When branch created | Branch scope | Merge point |
111
- |----------|---------------------|--------------|-------------|
112
- | `none` | Never | N/A | N/A |
113
- | `phase` | At `execute-phase` start | Single phase | User merges after phase |
114
- | `milestone` | At first `execute-phase` of milestone | Entire milestone | At `complete-milestone` |
115
-
116
- **When `git.branching_strategy: "none"` (default):**
117
- - All work commits to current branch
118
- - Standard Ariadna behavior
119
-
120
- **When `git.branching_strategy: "phase"`:**
121
- - `execute-phase` creates/switches to a branch before execution
122
- - Branch name from `phase_branch_template` (e.g., `ariadna/phase-03-authentication`)
123
- - All plan commits go to that branch
124
- - User merges branches manually after phase completion
125
- - `complete-milestone` offers to merge all phase branches
126
-
127
- **When `git.branching_strategy: "milestone"`:**
128
- - First `execute-phase` of milestone creates the milestone branch
129
- - Branch name from `milestone_branch_template` (e.g., `ariadna/v1.0-mvp`)
130
- - All phases in milestone commit to same branch
131
- - `complete-milestone` offers to merge milestone branch to main
132
-
133
- **Template variables:**
134
-
135
- | Variable | Available in | Description |
136
- |----------|--------------|-------------|
137
- | `{phase}` | phase_branch_template | Zero-padded phase number (e.g., "03") |
138
- | `{slug}` | Both | Lowercase, hyphenated name |
139
- | `{milestone}` | milestone_branch_template | Milestone version (e.g., "v1.0") |
140
-
141
- **Checking the config:**
142
-
143
- Use `init execute-phase` which returns all config as JSON:
144
- ```bash
145
- INIT=$(ariadna-tools init execute-phase "1")
146
- # JSON output includes: branching_strategy, phase_branch_template, milestone_branch_template
147
- ```
148
-
149
- Or use `state load` for the config values:
150
- ```bash
151
- INIT=$(ariadna-tools state load)
152
- # Parse branching_strategy, phase_branch_template, milestone_branch_template from JSON
153
- ```
154
-
155
- **Branch creation:**
156
-
157
- ```bash
158
- # For phase strategy
159
- if [ "$BRANCHING_STRATEGY" = "phase" ]; then
160
- PHASE_SLUG=$(echo "$PHASE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
161
- BRANCH_NAME=$(echo "$PHASE_BRANCH_TEMPLATE" | sed "s/{phase}/$PADDED_PHASE/g" | sed "s/{slug}/$PHASE_SLUG/g")
162
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
163
- fi
164
-
165
- # For milestone strategy
166
- if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
167
- MILESTONE_SLUG=$(echo "$MILESTONE_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
168
- BRANCH_NAME=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed "s/{milestone}/$MILESTONE_VERSION/g" | sed "s/{slug}/$MILESTONE_SLUG/g")
169
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
170
- fi
171
- ```
172
-
173
- **Merge options at complete-milestone:**
174
-
175
- | Option | Git command | Result |
176
- |--------|-------------|--------|
177
- | Squash merge (recommended) | `git merge --squash` | Single clean commit per branch |
178
- | Merge with history | `git merge --no-ff` | Preserves all individual commits |
179
- | Delete without merging | `git branch -D` | Discard branch work |
180
- | Keep branches | (none) | Manual handling later |
181
-
182
- Squash merge is recommended — keeps main branch history clean while preserving the full development history in the branch (until deleted).
183
-
184
- **Use cases:**
185
-
186
- | Strategy | Best for |
187
- |----------|----------|
188
- | `none` | Solo development, simple projects |
189
- | `phase` | Code review per phase, granular rollback, team collaboration |
190
- | `milestone` | Release branches, staging environments, PR per version |
191
-
192
- </branching_strategy_behavior>
193
-
194
- </planning_config>
@@ -1,153 +0,0 @@
1
- <questioning_guide>
2
-
3
- Project initialization is dream extraction, not requirements gathering. You're helping the user discover and articulate what they want to build. This isn't a contract negotiation — it's collaborative thinking.
4
-
5
- <philosophy>
6
-
7
- **You are a thinking partner, not an interviewer.**
8
-
9
- The user often has a fuzzy idea. Your job is to help them sharpen it. Ask questions that make them think "oh, I hadn't considered that" or "yes, that's exactly what I mean."
10
-
11
- Don't interrogate. Collaborate. Don't follow a script. Follow the thread.
12
-
13
- </philosophy>
14
-
15
- <the_goal>
16
-
17
- By the end of questioning, you need enough clarity to write a PROJECT.md that downstream phases can act on:
18
-
19
- - **Research** needs: what domain to research, what the user already knows, what unknowns exist
20
- - **Requirements** needs: clear enough vision to scope v1 features
21
- - **Roadmap** needs: clear enough vision to decompose into phases, what "done" looks like
22
- - **plan-phase** needs: specific requirements to break into tasks, context for implementation choices
23
- - **execute-phase** needs: success criteria to verify against, the "why" behind requirements
24
-
25
- A vague PROJECT.md forces every downstream phase to guess. The cost compounds.
26
-
27
- </the_goal>
28
-
29
- <how_to_question>
30
-
31
- **Start open.** Let them dump their mental model. Don't interrupt with structure.
32
-
33
- **Follow energy.** Whatever they emphasized, dig into that. What excited them? What problem sparked this?
34
-
35
- **Challenge vagueness.** Never accept fuzzy answers. "Good" means what? "Users" means who? "Simple" means how?
36
-
37
- **Make the abstract concrete.** "Walk me through using this." "What does that actually look like?"
38
-
39
- **Clarify ambiguity.** "When you say Z, do you mean A or B?" "You mentioned X — tell me more."
40
-
41
- **Know when to stop.** When you understand what they want, why they want it, who it's for, and what done looks like — offer to proceed.
42
-
43
- </how_to_question>
44
-
45
- <question_types>
46
-
47
- Use these as inspiration, not a checklist. Pick what's relevant to the thread.
48
-
49
- **Motivation — why this exists:**
50
- - "What prompted this?"
51
- - "What are you doing today that this replaces?"
52
- - "What would you do if this existed?"
53
-
54
- **Concreteness — what it actually is:**
55
- - "Walk me through using this"
56
- - "You said X — what does that actually look like?"
57
- - "Give me an example"
58
-
59
- **Clarification — what they mean:**
60
- - "When you say Z, do you mean A or B?"
61
- - "You mentioned X — tell me more about that"
62
-
63
- **Success — how you'll know it's working:**
64
- - "How will you know this is working?"
65
- - "What does done look like?"
66
-
67
- **Users — who this serves:**
68
- - "Who's the person using this? Walk me through their day."
69
- - "What are they doing right now without this?"
70
- - "What would make them stop using this?"
71
-
72
- **Bigger picture — where this is going:**
73
- - "Is this the whole thing, or part of something bigger?"
74
- - "What does success look like in 6 months?"
75
- - "If this works perfectly, what do you do next?"
76
-
77
- </question_types>
78
-
79
- <using_askuserquestion>
80
-
81
- Use AskUserQuestion to help users think by presenting concrete options to react to.
82
-
83
- **Good options:**
84
- - Interpretations of what they might mean
85
- - Specific examples to confirm or deny
86
- - Concrete choices that reveal priorities
87
-
88
- **Bad options:**
89
- - Generic categories ("Technical", "Business", "Other")
90
- - Leading options that presume an answer
91
- - Too many options (2-4 is ideal)
92
-
93
- **Example — vague answer:**
94
- User says "it should be fast"
95
-
96
- - header: "Fast"
97
- - question: "Fast how?"
98
- - options: ["Sub-second response", "Handles large datasets", "Quick to build", "Let me explain"]
99
-
100
- **Example — following a thread:**
101
- User mentions "frustrated with current tools"
102
-
103
- - header: "Frustration"
104
- - question: "What specifically frustrates you?"
105
- - options: ["Too many clicks", "Missing features", "Unreliable", "Let me explain"]
106
-
107
- </using_askuserquestion>
108
-
109
- <context_checklist>
110
-
111
- Use this as a **background checklist**, not a conversation structure. Check these mentally as you go. If gaps remain, weave questions naturally.
112
-
113
- - [ ] What they're building (concrete enough to explain to a stranger)
114
- - [ ] Why it needs to exist (the problem or desire driving it)
115
- - [ ] Who it's for (what do they care about? what frustrates them?)
116
- - [ ] What success looks like for the builder (what outcome makes this worth building?)
117
- - [ ] What "done" looks like (observable outcomes)
118
- - [ ] What's the bigger picture (standalone tool? part of something larger? stepping stone?)
119
-
120
- Six things. If they volunteer more, capture it.
121
-
122
- </context_checklist>
123
-
124
- <decision_gate>
125
-
126
- When you could write a clear PROJECT.md, offer to proceed:
127
-
128
- - header: "Ready?"
129
- - question: "I think I understand what you're after. Ready to create PROJECT.md?"
130
- - options:
131
- - "Create PROJECT.md" — Let's move forward
132
- - "Keep exploring" — I want to share more / ask me more
133
-
134
- If "Keep exploring" — ask what they want to add or identify gaps and probe naturally.
135
-
136
- Loop until "Create PROJECT.md" selected.
137
-
138
- </decision_gate>
139
-
140
- <anti_patterns>
141
-
142
- - **Checklist walking** — Going through domains regardless of what they said
143
- - **Canned questions** — "What's your core value?" "What's out of scope?" regardless of context
144
- - **Corporate speak** — "What are your success criteria?" "Who are your stakeholders?"
145
- - **Interrogation** — Firing questions without building on answers
146
- - **Rushing** — Minimizing questions to get to "the work"
147
- - **Shallow acceptance** — Taking vague answers without probing
148
- - **Premature constraints** — Asking about tech stack before understanding the idea
149
- - **User skills** — NEVER ask about user's technical experience. Claude builds.
150
-
151
- </anti_patterns>
152
-
153
- </questioning_guide>