get-research-done 1.1.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 +560 -0
- package/agents/grd-architect.md +789 -0
- package/agents/grd-codebase-mapper.md +738 -0
- package/agents/grd-critic.md +1065 -0
- package/agents/grd-debugger.md +1203 -0
- package/agents/grd-evaluator.md +948 -0
- package/agents/grd-executor.md +784 -0
- package/agents/grd-explorer.md +2063 -0
- package/agents/grd-graduator.md +484 -0
- package/agents/grd-integration-checker.md +423 -0
- package/agents/grd-phase-researcher.md +641 -0
- package/agents/grd-plan-checker.md +745 -0
- package/agents/grd-planner.md +1386 -0
- package/agents/grd-project-researcher.md +865 -0
- package/agents/grd-research-synthesizer.md +256 -0
- package/agents/grd-researcher.md +2361 -0
- package/agents/grd-roadmapper.md +605 -0
- package/agents/grd-verifier.md +778 -0
- package/bin/install.js +1294 -0
- package/commands/grd/add-phase.md +207 -0
- package/commands/grd/add-todo.md +193 -0
- package/commands/grd/architect.md +283 -0
- package/commands/grd/audit-milestone.md +277 -0
- package/commands/grd/check-todos.md +228 -0
- package/commands/grd/complete-milestone.md +136 -0
- package/commands/grd/debug.md +169 -0
- package/commands/grd/discuss-phase.md +86 -0
- package/commands/grd/evaluate.md +1095 -0
- package/commands/grd/execute-phase.md +339 -0
- package/commands/grd/explore.md +258 -0
- package/commands/grd/graduate.md +323 -0
- package/commands/grd/help.md +482 -0
- package/commands/grd/insert-phase.md +227 -0
- package/commands/grd/insights.md +231 -0
- package/commands/grd/join-discord.md +18 -0
- package/commands/grd/list-phase-assumptions.md +50 -0
- package/commands/grd/map-codebase.md +71 -0
- package/commands/grd/new-milestone.md +721 -0
- package/commands/grd/new-project.md +1008 -0
- package/commands/grd/pause-work.md +134 -0
- package/commands/grd/plan-milestone-gaps.md +295 -0
- package/commands/grd/plan-phase.md +525 -0
- package/commands/grd/progress.md +364 -0
- package/commands/grd/quick-explore.md +236 -0
- package/commands/grd/quick.md +309 -0
- package/commands/grd/remove-phase.md +349 -0
- package/commands/grd/research-phase.md +200 -0
- package/commands/grd/research.md +681 -0
- package/commands/grd/resume-work.md +40 -0
- package/commands/grd/set-profile.md +106 -0
- package/commands/grd/settings.md +136 -0
- package/commands/grd/update.md +172 -0
- package/commands/grd/verify-work.md +219 -0
- package/get-research-done/config/default.json +15 -0
- package/get-research-done/references/checkpoints.md +1078 -0
- package/get-research-done/references/continuation-format.md +249 -0
- package/get-research-done/references/git-integration.md +254 -0
- package/get-research-done/references/model-profiles.md +73 -0
- package/get-research-done/references/planning-config.md +94 -0
- package/get-research-done/references/questioning.md +141 -0
- package/get-research-done/references/tdd.md +263 -0
- package/get-research-done/references/ui-brand.md +160 -0
- package/get-research-done/references/verification-patterns.md +612 -0
- package/get-research-done/templates/DEBUG.md +159 -0
- package/get-research-done/templates/UAT.md +247 -0
- package/get-research-done/templates/archive-reason.md +195 -0
- package/get-research-done/templates/codebase/architecture.md +255 -0
- package/get-research-done/templates/codebase/concerns.md +310 -0
- package/get-research-done/templates/codebase/conventions.md +307 -0
- package/get-research-done/templates/codebase/integrations.md +280 -0
- package/get-research-done/templates/codebase/stack.md +186 -0
- package/get-research-done/templates/codebase/structure.md +285 -0
- package/get-research-done/templates/codebase/testing.md +480 -0
- package/get-research-done/templates/config.json +35 -0
- package/get-research-done/templates/context.md +283 -0
- package/get-research-done/templates/continue-here.md +78 -0
- package/get-research-done/templates/critic-log.md +288 -0
- package/get-research-done/templates/data-report.md +173 -0
- package/get-research-done/templates/debug-subagent-prompt.md +91 -0
- package/get-research-done/templates/decision-log.md +58 -0
- package/get-research-done/templates/decision.md +138 -0
- package/get-research-done/templates/discovery.md +146 -0
- package/get-research-done/templates/experiment-readme.md +104 -0
- package/get-research-done/templates/graduated-script.md +180 -0
- package/get-research-done/templates/iteration-summary.md +234 -0
- package/get-research-done/templates/milestone-archive.md +123 -0
- package/get-research-done/templates/milestone.md +115 -0
- package/get-research-done/templates/objective.md +271 -0
- package/get-research-done/templates/phase-prompt.md +567 -0
- package/get-research-done/templates/planner-subagent-prompt.md +117 -0
- package/get-research-done/templates/project.md +184 -0
- package/get-research-done/templates/requirements.md +231 -0
- package/get-research-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-research-done/templates/research-project/FEATURES.md +147 -0
- package/get-research-done/templates/research-project/PITFALLS.md +200 -0
- package/get-research-done/templates/research-project/STACK.md +120 -0
- package/get-research-done/templates/research-project/SUMMARY.md +170 -0
- package/get-research-done/templates/research.md +529 -0
- package/get-research-done/templates/roadmap.md +202 -0
- package/get-research-done/templates/scorecard.json +113 -0
- package/get-research-done/templates/state.md +287 -0
- package/get-research-done/templates/summary.md +246 -0
- package/get-research-done/templates/user-setup.md +311 -0
- package/get-research-done/templates/verification-report.md +322 -0
- package/get-research-done/workflows/complete-milestone.md +756 -0
- package/get-research-done/workflows/diagnose-issues.md +231 -0
- package/get-research-done/workflows/discovery-phase.md +289 -0
- package/get-research-done/workflows/discuss-phase.md +433 -0
- package/get-research-done/workflows/execute-phase.md +657 -0
- package/get-research-done/workflows/execute-plan.md +1844 -0
- package/get-research-done/workflows/list-phase-assumptions.md +178 -0
- package/get-research-done/workflows/map-codebase.md +322 -0
- package/get-research-done/workflows/resume-project.md +307 -0
- package/get-research-done/workflows/transition.md +556 -0
- package/get-research-done/workflows/verify-phase.md +628 -0
- package/get-research-done/workflows/verify-work.md +596 -0
- package/hooks/dist/grd-check-update.js +61 -0
- package/hooks/dist/grd-statusline.js +84 -0
- package/package.json +47 -0
- package/scripts/audit-help-commands.sh +115 -0
- package/scripts/build-hooks.js +42 -0
- package/scripts/verify-all-commands.sh +246 -0
- package/scripts/verify-architect-warning.sh +35 -0
- package/scripts/verify-insights-mode.sh +40 -0
- package/scripts/verify-quick-mode.sh +20 -0
- package/scripts/verify-revise-data-routing.sh +139 -0
|
@@ -0,0 +1,141 @@
|
|
|
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
|
+
</question_types>
|
|
68
|
+
|
|
69
|
+
<using_askuserquestion>
|
|
70
|
+
|
|
71
|
+
Use AskUserQuestion to help users think by presenting concrete options to react to.
|
|
72
|
+
|
|
73
|
+
**Good options:**
|
|
74
|
+
- Interpretations of what they might mean
|
|
75
|
+
- Specific examples to confirm or deny
|
|
76
|
+
- Concrete choices that reveal priorities
|
|
77
|
+
|
|
78
|
+
**Bad options:**
|
|
79
|
+
- Generic categories ("Technical", "Business", "Other")
|
|
80
|
+
- Leading options that presume an answer
|
|
81
|
+
- Too many options (2-4 is ideal)
|
|
82
|
+
|
|
83
|
+
**Example — vague answer:**
|
|
84
|
+
User says "it should be fast"
|
|
85
|
+
|
|
86
|
+
- header: "Fast"
|
|
87
|
+
- question: "Fast how?"
|
|
88
|
+
- options: ["Sub-second response", "Handles large datasets", "Quick to build", "Let me explain"]
|
|
89
|
+
|
|
90
|
+
**Example — following a thread:**
|
|
91
|
+
User mentions "frustrated with current tools"
|
|
92
|
+
|
|
93
|
+
- header: "Frustration"
|
|
94
|
+
- question: "What specifically frustrates you?"
|
|
95
|
+
- options: ["Too many clicks", "Missing features", "Unreliable", "Let me explain"]
|
|
96
|
+
|
|
97
|
+
</using_askuserquestion>
|
|
98
|
+
|
|
99
|
+
<context_checklist>
|
|
100
|
+
|
|
101
|
+
Use this as a **background checklist**, not a conversation structure. Check these mentally as you go. If gaps remain, weave questions naturally.
|
|
102
|
+
|
|
103
|
+
- [ ] What they're building (concrete enough to explain to a stranger)
|
|
104
|
+
- [ ] Why it needs to exist (the problem or desire driving it)
|
|
105
|
+
- [ ] Who it's for (even if just themselves)
|
|
106
|
+
- [ ] What "done" looks like (observable outcomes)
|
|
107
|
+
|
|
108
|
+
Four things. If they volunteer more, capture it.
|
|
109
|
+
|
|
110
|
+
</context_checklist>
|
|
111
|
+
|
|
112
|
+
<decision_gate>
|
|
113
|
+
|
|
114
|
+
When you could write a clear PROJECT.md, offer to proceed:
|
|
115
|
+
|
|
116
|
+
- header: "Ready?"
|
|
117
|
+
- question: "I think I understand what you're after. Ready to create PROJECT.md?"
|
|
118
|
+
- options:
|
|
119
|
+
- "Create PROJECT.md" — Let's move forward
|
|
120
|
+
- "Keep exploring" — I want to share more / ask me more
|
|
121
|
+
|
|
122
|
+
If "Keep exploring" — ask what they want to add or identify gaps and probe naturally.
|
|
123
|
+
|
|
124
|
+
Loop until "Create PROJECT.md" selected.
|
|
125
|
+
|
|
126
|
+
</decision_gate>
|
|
127
|
+
|
|
128
|
+
<anti_patterns>
|
|
129
|
+
|
|
130
|
+
- **Checklist walking** — Going through domains regardless of what they said
|
|
131
|
+
- **Canned questions** — "What's your core value?" "What's out of scope?" regardless of context
|
|
132
|
+
- **Corporate speak** — "What are your success criteria?" "Who are your stakeholders?"
|
|
133
|
+
- **Interrogation** — Firing questions without building on answers
|
|
134
|
+
- **Rushing** — Minimizing questions to get to "the work"
|
|
135
|
+
- **Shallow acceptance** — Taking vague answers without probing
|
|
136
|
+
- **Premature constraints** — Asking about tech stack before understanding the idea
|
|
137
|
+
- **User skills** — NEVER ask about user's technical experience. Claude builds.
|
|
138
|
+
|
|
139
|
+
</anti_patterns>
|
|
140
|
+
|
|
141
|
+
</questioning_guide>
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
<overview>
|
|
2
|
+
TDD is about design quality, not coverage metrics. The red-green-refactor cycle forces you to think about behavior before implementation, producing cleaner interfaces and more testable code.
|
|
3
|
+
|
|
4
|
+
**Principle:** If you can describe the behavior as `expect(fn(input)).toBe(output)` before writing `fn`, TDD improves the result.
|
|
5
|
+
|
|
6
|
+
**Key insight:** TDD work is fundamentally heavier than standard tasks—it requires 2-3 execution cycles (RED → GREEN → REFACTOR), each with file reads, test runs, and potential debugging. TDD features get dedicated plans to ensure full context is available throughout the cycle.
|
|
7
|
+
</overview>
|
|
8
|
+
|
|
9
|
+
<when_to_use_tdd>
|
|
10
|
+
## When TDD Improves Quality
|
|
11
|
+
|
|
12
|
+
**TDD candidates (create a TDD plan):**
|
|
13
|
+
- Business logic with defined inputs/outputs
|
|
14
|
+
- API endpoints with request/response contracts
|
|
15
|
+
- Data transformations, parsing, formatting
|
|
16
|
+
- Validation rules and constraints
|
|
17
|
+
- Algorithms with testable behavior
|
|
18
|
+
- State machines and workflows
|
|
19
|
+
- Utility functions with clear specifications
|
|
20
|
+
|
|
21
|
+
**Skip TDD (use standard plan with `type="auto"` tasks):**
|
|
22
|
+
- UI layout, styling, visual components
|
|
23
|
+
- Configuration changes
|
|
24
|
+
- Glue code connecting existing components
|
|
25
|
+
- One-off scripts and migrations
|
|
26
|
+
- Simple CRUD with no business logic
|
|
27
|
+
- Exploratory prototyping
|
|
28
|
+
|
|
29
|
+
**Heuristic:** Can you write `expect(fn(input)).toBe(output)` before writing `fn`?
|
|
30
|
+
→ Yes: Create a TDD plan
|
|
31
|
+
→ No: Use standard plan, add tests after if needed
|
|
32
|
+
</when_to_use_tdd>
|
|
33
|
+
|
|
34
|
+
<tdd_plan_structure>
|
|
35
|
+
## TDD Plan Structure
|
|
36
|
+
|
|
37
|
+
Each TDD plan implements **one feature** through the full RED-GREEN-REFACTOR cycle.
|
|
38
|
+
|
|
39
|
+
```markdown
|
|
40
|
+
---
|
|
41
|
+
phase: XX-name
|
|
42
|
+
plan: NN
|
|
43
|
+
type: tdd
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
<objective>
|
|
47
|
+
[What feature and why]
|
|
48
|
+
Purpose: [Design benefit of TDD for this feature]
|
|
49
|
+
Output: [Working, tested feature]
|
|
50
|
+
</objective>
|
|
51
|
+
|
|
52
|
+
<context>
|
|
53
|
+
@.planning/PROJECT.md
|
|
54
|
+
@.planning/ROADMAP.md
|
|
55
|
+
@relevant/source/files.ts
|
|
56
|
+
</context>
|
|
57
|
+
|
|
58
|
+
<feature>
|
|
59
|
+
<name>[Feature name]</name>
|
|
60
|
+
<files>[source file, test file]</files>
|
|
61
|
+
<behavior>
|
|
62
|
+
[Expected behavior in testable terms]
|
|
63
|
+
Cases: input → expected output
|
|
64
|
+
</behavior>
|
|
65
|
+
<implementation>[How to implement once tests pass]</implementation>
|
|
66
|
+
</feature>
|
|
67
|
+
|
|
68
|
+
<verification>
|
|
69
|
+
[Test command that proves feature works]
|
|
70
|
+
</verification>
|
|
71
|
+
|
|
72
|
+
<success_criteria>
|
|
73
|
+
- Failing test written and committed
|
|
74
|
+
- Implementation passes test
|
|
75
|
+
- Refactor complete (if needed)
|
|
76
|
+
- All 2-3 commits present
|
|
77
|
+
</success_criteria>
|
|
78
|
+
|
|
79
|
+
<output>
|
|
80
|
+
After completion, create SUMMARY.md with:
|
|
81
|
+
- RED: What test was written, why it failed
|
|
82
|
+
- GREEN: What implementation made it pass
|
|
83
|
+
- REFACTOR: What cleanup was done (if any)
|
|
84
|
+
- Commits: List of commits produced
|
|
85
|
+
</output>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**One feature per TDD plan.** If features are trivial enough to batch, they're trivial enough to skip TDD—use a standard plan and add tests after.
|
|
89
|
+
</tdd_plan_structure>
|
|
90
|
+
|
|
91
|
+
<execution_flow>
|
|
92
|
+
## Red-Green-Refactor Cycle
|
|
93
|
+
|
|
94
|
+
**RED - Write failing test:**
|
|
95
|
+
1. Create test file following project conventions
|
|
96
|
+
2. Write test describing expected behavior (from `<behavior>` element)
|
|
97
|
+
3. Run test - it MUST fail
|
|
98
|
+
4. If test passes: feature exists or test is wrong. Investigate.
|
|
99
|
+
5. Commit: `test({phase}-{plan}): add failing test for [feature]`
|
|
100
|
+
|
|
101
|
+
**GREEN - Implement to pass:**
|
|
102
|
+
1. Write minimal code to make test pass
|
|
103
|
+
2. No cleverness, no optimization - just make it work
|
|
104
|
+
3. Run test - it MUST pass
|
|
105
|
+
4. Commit: `feat({phase}-{plan}): implement [feature]`
|
|
106
|
+
|
|
107
|
+
**REFACTOR (if needed):**
|
|
108
|
+
1. Clean up implementation if obvious improvements exist
|
|
109
|
+
2. Run tests - MUST still pass
|
|
110
|
+
3. Only commit if changes made: `refactor({phase}-{plan}): clean up [feature]`
|
|
111
|
+
|
|
112
|
+
**Result:** Each TDD plan produces 2-3 atomic commits.
|
|
113
|
+
</execution_flow>
|
|
114
|
+
|
|
115
|
+
<test_quality>
|
|
116
|
+
## Good Tests vs Bad Tests
|
|
117
|
+
|
|
118
|
+
**Test behavior, not implementation:**
|
|
119
|
+
- Good: "returns formatted date string"
|
|
120
|
+
- Bad: "calls formatDate helper with correct params"
|
|
121
|
+
- Tests should survive refactors
|
|
122
|
+
|
|
123
|
+
**One concept per test:**
|
|
124
|
+
- Good: Separate tests for valid input, empty input, malformed input
|
|
125
|
+
- Bad: Single test checking all edge cases with multiple assertions
|
|
126
|
+
|
|
127
|
+
**Descriptive names:**
|
|
128
|
+
- Good: "should reject empty email", "returns null for invalid ID"
|
|
129
|
+
- Bad: "test1", "handles error", "works correctly"
|
|
130
|
+
|
|
131
|
+
**No implementation details:**
|
|
132
|
+
- Good: Test public API, observable behavior
|
|
133
|
+
- Bad: Mock internals, test private methods, assert on internal state
|
|
134
|
+
</test_quality>
|
|
135
|
+
|
|
136
|
+
<framework_setup>
|
|
137
|
+
## Test Framework Setup (If None Exists)
|
|
138
|
+
|
|
139
|
+
When executing a TDD plan but no test framework is configured, set it up as part of the RED phase:
|
|
140
|
+
|
|
141
|
+
**1. Detect project type:**
|
|
142
|
+
```bash
|
|
143
|
+
# JavaScript/TypeScript
|
|
144
|
+
if [ -f package.json ]; then echo "node"; fi
|
|
145
|
+
|
|
146
|
+
# Python
|
|
147
|
+
if [ -f requirements.txt ] || [ -f pyproject.toml ]; then echo "python"; fi
|
|
148
|
+
|
|
149
|
+
# Go
|
|
150
|
+
if [ -f go.mod ]; then echo "go"; fi
|
|
151
|
+
|
|
152
|
+
# Rust
|
|
153
|
+
if [ -f Cargo.toml ]; then echo "rust"; fi
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**2. Install minimal framework:**
|
|
157
|
+
| Project | Framework | Install |
|
|
158
|
+
|---------|-----------|---------|
|
|
159
|
+
| Node.js | Jest | `npm install -D jest @types/jest ts-jest` |
|
|
160
|
+
| Node.js (Vite) | Vitest | `npm install -D vitest` |
|
|
161
|
+
| Python | pytest | `pip install pytest` |
|
|
162
|
+
| Go | testing | Built-in |
|
|
163
|
+
| Rust | cargo test | Built-in |
|
|
164
|
+
|
|
165
|
+
**3. Create config if needed:**
|
|
166
|
+
- Jest: `jest.config.js` with ts-jest preset
|
|
167
|
+
- Vitest: `vitest.config.ts` with test globals
|
|
168
|
+
- pytest: `pytest.ini` or `pyproject.toml` section
|
|
169
|
+
|
|
170
|
+
**4. Verify setup:**
|
|
171
|
+
```bash
|
|
172
|
+
# Run empty test suite - should pass with 0 tests
|
|
173
|
+
npm test # Node
|
|
174
|
+
pytest # Python
|
|
175
|
+
go test ./... # Go
|
|
176
|
+
cargo test # Rust
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**5. Create first test file:**
|
|
180
|
+
Follow project conventions for test location:
|
|
181
|
+
- `*.test.ts` / `*.spec.ts` next to source
|
|
182
|
+
- `__tests__/` directory
|
|
183
|
+
- `tests/` directory at root
|
|
184
|
+
|
|
185
|
+
Framework setup is a one-time cost included in the first TDD plan's RED phase.
|
|
186
|
+
</framework_setup>
|
|
187
|
+
|
|
188
|
+
<error_handling>
|
|
189
|
+
## Error Handling
|
|
190
|
+
|
|
191
|
+
**Test doesn't fail in RED phase:**
|
|
192
|
+
- Feature may already exist - investigate
|
|
193
|
+
- Test may be wrong (not testing what you think)
|
|
194
|
+
- Fix before proceeding
|
|
195
|
+
|
|
196
|
+
**Test doesn't pass in GREEN phase:**
|
|
197
|
+
- Debug implementation
|
|
198
|
+
- Don't skip to refactor
|
|
199
|
+
- Keep iterating until green
|
|
200
|
+
|
|
201
|
+
**Tests fail in REFACTOR phase:**
|
|
202
|
+
- Undo refactor
|
|
203
|
+
- Commit was premature
|
|
204
|
+
- Refactor in smaller steps
|
|
205
|
+
|
|
206
|
+
**Unrelated tests break:**
|
|
207
|
+
- Stop and investigate
|
|
208
|
+
- May indicate coupling issue
|
|
209
|
+
- Fix before proceeding
|
|
210
|
+
</error_handling>
|
|
211
|
+
|
|
212
|
+
<commit_pattern>
|
|
213
|
+
## Commit Pattern for TDD Plans
|
|
214
|
+
|
|
215
|
+
TDD plans produce 2-3 atomic commits (one per phase):
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
test(08-02): add failing test for email validation
|
|
219
|
+
|
|
220
|
+
- Tests valid email formats accepted
|
|
221
|
+
- Tests invalid formats rejected
|
|
222
|
+
- Tests empty input handling
|
|
223
|
+
|
|
224
|
+
feat(08-02): implement email validation
|
|
225
|
+
|
|
226
|
+
- Regex pattern matches RFC 5322
|
|
227
|
+
- Returns boolean for validity
|
|
228
|
+
- Handles edge cases (empty, null)
|
|
229
|
+
|
|
230
|
+
refactor(08-02): extract regex to constant (optional)
|
|
231
|
+
|
|
232
|
+
- Moved pattern to EMAIL_REGEX constant
|
|
233
|
+
- No behavior changes
|
|
234
|
+
- Tests still pass
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Comparison with standard plans:**
|
|
238
|
+
- Standard plans: 1 commit per task, 2-4 commits per plan
|
|
239
|
+
- TDD plans: 2-3 commits for single feature
|
|
240
|
+
|
|
241
|
+
Both follow same format: `{type}({phase}-{plan}): {description}`
|
|
242
|
+
|
|
243
|
+
**Benefits:**
|
|
244
|
+
- Each commit independently revertable
|
|
245
|
+
- Git bisect works at commit level
|
|
246
|
+
- Clear history showing TDD discipline
|
|
247
|
+
- Consistent with overall commit strategy
|
|
248
|
+
</commit_pattern>
|
|
249
|
+
|
|
250
|
+
<context_budget>
|
|
251
|
+
## Context Budget
|
|
252
|
+
|
|
253
|
+
TDD plans target **~40% context usage** (lower than standard plans' ~50%).
|
|
254
|
+
|
|
255
|
+
Why lower:
|
|
256
|
+
- RED phase: write test, run test, potentially debug why it didn't fail
|
|
257
|
+
- GREEN phase: implement, run test, potentially iterate on failures
|
|
258
|
+
- REFACTOR phase: modify code, run tests, verify no regressions
|
|
259
|
+
|
|
260
|
+
Each phase involves reading files, running commands, analyzing output. The back-and-forth is inherently heavier than linear task execution.
|
|
261
|
+
|
|
262
|
+
Single feature focus ensures full quality throughout the cycle.
|
|
263
|
+
</context_budget>
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<ui_patterns>
|
|
2
|
+
|
|
3
|
+
Visual patterns for user-facing GRD output. Orchestrators @-reference this file.
|
|
4
|
+
|
|
5
|
+
## Stage Banners
|
|
6
|
+
|
|
7
|
+
Use for major workflow transitions.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11
|
+
GRD ► {STAGE NAME}
|
|
12
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Stage names (uppercase):**
|
|
16
|
+
- `QUESTIONING`
|
|
17
|
+
- `RESEARCHING`
|
|
18
|
+
- `DEFINING REQUIREMENTS`
|
|
19
|
+
- `CREATING ROADMAP`
|
|
20
|
+
- `PLANNING PHASE {N}`
|
|
21
|
+
- `EXECUTING WAVE {N}`
|
|
22
|
+
- `VERIFYING`
|
|
23
|
+
- `PHASE {N} COMPLETE ✓`
|
|
24
|
+
- `MILESTONE COMPLETE 🎉`
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Checkpoint Boxes
|
|
29
|
+
|
|
30
|
+
User action required. 62-character width.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
34
|
+
║ CHECKPOINT: {Type} ║
|
|
35
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
36
|
+
|
|
37
|
+
{Content}
|
|
38
|
+
|
|
39
|
+
──────────────────────────────────────────────────────────────
|
|
40
|
+
→ {ACTION PROMPT}
|
|
41
|
+
──────────────────────────────────────────────────────────────
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Types:**
|
|
45
|
+
- `CHECKPOINT: Verification Required` → `→ Type "approved" or describe issues`
|
|
46
|
+
- `CHECKPOINT: Decision Required` → `→ Select: option-a / option-b`
|
|
47
|
+
- `CHECKPOINT: Action Required` → `→ Type "done" when complete`
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Status Symbols
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
✓ Complete / Passed / Verified
|
|
55
|
+
✗ Failed / Missing / Blocked
|
|
56
|
+
◆ In Progress
|
|
57
|
+
○ Pending
|
|
58
|
+
⚡ Auto-approved
|
|
59
|
+
⚠ Warning
|
|
60
|
+
🎉 Milestone complete (only in banner)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Progress Display
|
|
66
|
+
|
|
67
|
+
**Phase/milestone level:**
|
|
68
|
+
```
|
|
69
|
+
Progress: ████████░░ 80%
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Task level:**
|
|
73
|
+
```
|
|
74
|
+
Tasks: 2/4 complete
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Plan level:**
|
|
78
|
+
```
|
|
79
|
+
Plans: 3/5 complete
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Spawning Indicators
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
◆ Spawning researcher...
|
|
88
|
+
|
|
89
|
+
◆ Spawning 4 researchers in parallel...
|
|
90
|
+
→ Stack research
|
|
91
|
+
→ Features research
|
|
92
|
+
→ Architecture research
|
|
93
|
+
→ Pitfalls research
|
|
94
|
+
|
|
95
|
+
✓ Researcher complete: STACK.md written
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Next Up Block
|
|
101
|
+
|
|
102
|
+
Always at end of major completions.
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
───────────────────────────────────────────────────────────────
|
|
106
|
+
|
|
107
|
+
## ▶ Next Up
|
|
108
|
+
|
|
109
|
+
**{Identifier}: {Name}** — {one-line description}
|
|
110
|
+
|
|
111
|
+
`{copy-paste command}`
|
|
112
|
+
|
|
113
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
114
|
+
|
|
115
|
+
───────────────────────────────────────────────────────────────
|
|
116
|
+
|
|
117
|
+
**Also available:**
|
|
118
|
+
- `/grd:alternative-1` — description
|
|
119
|
+
- `/grd:alternative-2` — description
|
|
120
|
+
|
|
121
|
+
───────────────────────────────────────────────────────────────
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Error Box
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
130
|
+
║ ERROR ║
|
|
131
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
132
|
+
|
|
133
|
+
{Error description}
|
|
134
|
+
|
|
135
|
+
**To fix:** {Resolution steps}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Tables
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
| Phase | Status | Plans | Progress |
|
|
144
|
+
|-------|--------|-------|----------|
|
|
145
|
+
| 1 | ✓ | 3/3 | 100% |
|
|
146
|
+
| 2 | ◆ | 1/4 | 25% |
|
|
147
|
+
| 3 | ○ | 0/2 | 0% |
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Anti-Patterns
|
|
153
|
+
|
|
154
|
+
- Varying box/banner widths
|
|
155
|
+
- Mixing banner styles (`===`, `---`, `***`)
|
|
156
|
+
- Skipping `GRD ►` prefix in banners
|
|
157
|
+
- Random emoji (`🚀`, `✨`, `💫`)
|
|
158
|
+
- Missing Next Up block after completions
|
|
159
|
+
|
|
160
|
+
</ui_patterns>
|