claude-cook 1.10.1

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 (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +607 -0
  3. package/agents/gsd-codebase-mapper.md +738 -0
  4. package/agents/gsd-debugger.md +1203 -0
  5. package/agents/gsd-executor.md +784 -0
  6. package/agents/gsd-integration-checker.md +423 -0
  7. package/agents/gsd-phase-researcher.md +641 -0
  8. package/agents/gsd-plan-checker.md +745 -0
  9. package/agents/gsd-planner.md +1386 -0
  10. package/agents/gsd-pm.md +331 -0
  11. package/agents/gsd-project-researcher.md +865 -0
  12. package/agents/gsd-research-synthesizer.md +256 -0
  13. package/agents/gsd-roadmapper.md +605 -0
  14. package/agents/gsd-verifier.md +778 -0
  15. package/bin/install.js +1477 -0
  16. package/commands/gsd/add-phase.md +207 -0
  17. package/commands/gsd/add-todo.md +193 -0
  18. package/commands/gsd/audit-milestone.md +277 -0
  19. package/commands/gsd/check-todos.md +228 -0
  20. package/commands/gsd/complete-milestone.md +136 -0
  21. package/commands/gsd/debug.md +169 -0
  22. package/commands/gsd/discuss-phase.md +86 -0
  23. package/commands/gsd/execute-phase.md +339 -0
  24. package/commands/gsd/help.md +545 -0
  25. package/commands/gsd/insert-phase.md +227 -0
  26. package/commands/gsd/join-discord.md +18 -0
  27. package/commands/gsd/list-phase-assumptions.md +50 -0
  28. package/commands/gsd/map-codebase.md +71 -0
  29. package/commands/gsd/new-milestone.md +721 -0
  30. package/commands/gsd/new-project.md +1008 -0
  31. package/commands/gsd/pause-work.md +134 -0
  32. package/commands/gsd/plan-milestone-gaps.md +295 -0
  33. package/commands/gsd/plan-phase.md +525 -0
  34. package/commands/gsd/pm-check.md +115 -0
  35. package/commands/gsd/pm-replan.md +102 -0
  36. package/commands/gsd/pm-start.md +218 -0
  37. package/commands/gsd/pm-status.md +116 -0
  38. package/commands/gsd/pm-stop.md +72 -0
  39. package/commands/gsd/progress.md +415 -0
  40. package/commands/gsd/quick.md +309 -0
  41. package/commands/gsd/remove-phase.md +349 -0
  42. package/commands/gsd/research-phase.md +200 -0
  43. package/commands/gsd/resume-work.md +40 -0
  44. package/commands/gsd/set-profile.md +106 -0
  45. package/commands/gsd/settings.md +151 -0
  46. package/commands/gsd/update.md +172 -0
  47. package/commands/gsd/verify-work.md +219 -0
  48. package/get-shit-done/references/checkpoints.md +1078 -0
  49. package/get-shit-done/references/continuation-format.md +249 -0
  50. package/get-shit-done/references/git-integration.md +254 -0
  51. package/get-shit-done/references/model-profiles.md +73 -0
  52. package/get-shit-done/references/planning-config.md +189 -0
  53. package/get-shit-done/references/questioning.md +141 -0
  54. package/get-shit-done/references/tdd.md +263 -0
  55. package/get-shit-done/references/ui-brand.md +172 -0
  56. package/get-shit-done/references/verification-patterns.md +612 -0
  57. package/get-shit-done/references/vibe-kanban.md +142 -0
  58. package/get-shit-done/templates/DEBUG.md +159 -0
  59. package/get-shit-done/templates/UAT.md +247 -0
  60. package/get-shit-done/templates/codebase/architecture.md +255 -0
  61. package/get-shit-done/templates/codebase/concerns.md +310 -0
  62. package/get-shit-done/templates/codebase/conventions.md +307 -0
  63. package/get-shit-done/templates/codebase/integrations.md +280 -0
  64. package/get-shit-done/templates/codebase/stack.md +186 -0
  65. package/get-shit-done/templates/codebase/structure.md +285 -0
  66. package/get-shit-done/templates/codebase/testing.md +480 -0
  67. package/get-shit-done/templates/config.json +35 -0
  68. package/get-shit-done/templates/context.md +283 -0
  69. package/get-shit-done/templates/continue-here.md +78 -0
  70. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  71. package/get-shit-done/templates/discovery.md +146 -0
  72. package/get-shit-done/templates/milestone-archive.md +123 -0
  73. package/get-shit-done/templates/milestone.md +115 -0
  74. package/get-shit-done/templates/phase-prompt.md +567 -0
  75. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  76. package/get-shit-done/templates/pm-config.md +55 -0
  77. package/get-shit-done/templates/pm-log.md +27 -0
  78. package/get-shit-done/templates/project.md +184 -0
  79. package/get-shit-done/templates/requirements.md +231 -0
  80. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  81. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  82. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  83. package/get-shit-done/templates/research-project/STACK.md +120 -0
  84. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  85. package/get-shit-done/templates/research.md +529 -0
  86. package/get-shit-done/templates/roadmap.md +202 -0
  87. package/get-shit-done/templates/state.md +205 -0
  88. package/get-shit-done/templates/summary.md +246 -0
  89. package/get-shit-done/templates/ticket-map.md +28 -0
  90. package/get-shit-done/templates/user-setup.md +311 -0
  91. package/get-shit-done/templates/verification-report.md +322 -0
  92. package/get-shit-done/workflows/complete-milestone.md +903 -0
  93. package/get-shit-done/workflows/diagnose-issues.md +231 -0
  94. package/get-shit-done/workflows/discovery-phase.md +289 -0
  95. package/get-shit-done/workflows/discuss-phase.md +433 -0
  96. package/get-shit-done/workflows/execute-phase.md +671 -0
  97. package/get-shit-done/workflows/execute-plan.md +1844 -0
  98. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  99. package/get-shit-done/workflows/map-codebase.md +322 -0
  100. package/get-shit-done/workflows/pm-check.md +210 -0
  101. package/get-shit-done/workflows/pm-dispatch.md +104 -0
  102. package/get-shit-done/workflows/pm-replan.md +203 -0
  103. package/get-shit-done/workflows/pm-sync.md +130 -0
  104. package/get-shit-done/workflows/resume-project.md +307 -0
  105. package/get-shit-done/workflows/transition.md +556 -0
  106. package/get-shit-done/workflows/verify-phase.md +628 -0
  107. package/get-shit-done/workflows/verify-work.md +596 -0
  108. package/hooks/dist/gsd-check-update.js +61 -0
  109. package/hooks/dist/gsd-statusline.js +87 -0
  110. package/package.json +47 -0
  111. package/scripts/build-hooks.js +42 -0
  112. package/scripts/pm-loop.sh +155 -0
@@ -0,0 +1,142 @@
1
+ # Vibe Kanban MCP Reference
2
+
3
+ Reference for PM agent interactions with the Vibe Kanban task management system.
4
+
5
+ ## Tool Catalog
6
+
7
+ ### Reading State
8
+
9
+ **`mcp__vibe_kanban__list_projects`**
10
+ Returns all available projects. Use to discover `project_id` on first run.
11
+
12
+ **`mcp__vibe_kanban__list_tasks(project_id, [status])`**
13
+ List all tickets in a project. Optional status filter: `todo`, `inprogress`, `inreview`, `done`, `cancelled`.
14
+
15
+ **`mcp__vibe_kanban__get_task(task_id)`**
16
+ Get full ticket details including description and status. Use to read worker output/notes.
17
+
18
+ **`mcp__vibe_kanban__list_repos(project_id)`**
19
+ List all repositories for a project. Returns `repo_id` needed for dispatch.
20
+
21
+ **`mcp__vibe_kanban__get_repo(repo_id)`**
22
+ Get repo details including scripts (setup, cleanup, dev server).
23
+
24
+ ### Writing State
25
+
26
+ **`mcp__vibe_kanban__create_task(project_id, title, [description])`**
27
+ Create a new ticket. The description should contain the full PLAN.md content as the worker's prompt.
28
+
29
+ **`mcp__vibe_kanban__update_task(task_id, [title], [description], [status])`**
30
+ Update ticket fields. Use for:
31
+ - Marking tickets `done` after verification
32
+ - Marking tickets `cancelled` during replan
33
+ - Updating description when plans change
34
+
35
+ **`mcp__vibe_kanban__delete_task(task_id)`**
36
+ Permanently delete a ticket. Prefer `update_task(status: cancelled)` for audit trail.
37
+
38
+ ### Dispatching Workers
39
+
40
+ **`mcp__vibe_kanban__start_workspace_session(task_id, executor, repos, [variant])`**
41
+ Launch an external coding agent to work on a ticket.
42
+
43
+ Parameters:
44
+ - `task_id`: The ticket UUID to assign
45
+ - `executor`: Agent type — one of:
46
+ - `CLAUDE_CODE` — Claude Code CLI
47
+ - `AMP` — Amp agent
48
+ - `GEMINI` — Gemini CLI
49
+ - `CODEX` — OpenAI Codex
50
+ - `OPENCODE` — OpenCode
51
+ - `CURSOR_AGENT` — Cursor agent
52
+ - `QWEN_CODE` — Qwen Code
53
+ - `COPILOT` — GitHub Copilot
54
+ - `DROID` — Droid agent
55
+ - `repos`: Array of `{repo_id, base_branch}` objects
56
+ - `variant`: Optional executor variant
57
+
58
+ ### Repository Scripts
59
+
60
+ **`mcp__vibe_kanban__update_setup_script(repo_id, script)`**
61
+ Set the script that runs when a workspace initializes (e.g., `npm install`).
62
+
63
+ **`mcp__vibe_kanban__update_cleanup_script(repo_id, script)`**
64
+ Set the script that runs when a workspace tears down.
65
+
66
+ **`mcp__vibe_kanban__update_dev_server_script(repo_id, script)`**
67
+ Set the dev server script (e.g., `npm run dev`).
68
+
69
+ ## Ticket Status Lifecycle
70
+
71
+ ```
72
+ todo ──→ inprogress ──→ inreview ──→ done
73
+ │ │ │
74
+ │ └──→ cancelled ←──┘
75
+ └──→ cancelled
76
+ ```
77
+
78
+ - `todo`: Created, not yet dispatched
79
+ - `inprogress`: Worker session launched
80
+ - `inreview`: Worker completed, awaiting PM review
81
+ - `done`: PM confirmed completion
82
+ - `cancelled`: Abandoned (replanned or removed)
83
+
84
+ ## PM Usage Patterns
85
+
86
+ ### Initial Setup (first /pm:start)
87
+
88
+ ```
89
+ 1. list_projects() → find project_id
90
+ 2. list_repos(project_id) → find repo_id + base_branch
91
+ 3. Save to .planning/config.json pm section
92
+ ```
93
+
94
+ ### Plan-to-Ticket Sync
95
+
96
+ ```
97
+ For each PLAN.md:
98
+ title = "Phase {X} Plan {Y}: {objective_summary}"
99
+ description = full PLAN.md content
100
+ create_task(project_id, title, description)
101
+ → record ticket_id in TICKET-MAP.md
102
+ ```
103
+
104
+ ### Dispatch Workers
105
+
106
+ ```
107
+ For each ticket in current wave with status=todo:
108
+ start_workspace_session(
109
+ task_id=ticket_id,
110
+ executor=config.pm.default_executor,
111
+ repos=[{repo_id, base_branch}]
112
+ )
113
+ update_task(ticket_id, status="inprogress")
114
+ ```
115
+
116
+ ### Monitor Cycle
117
+
118
+ ```
119
+ tickets = list_tasks(project_id)
120
+ For each ticket:
121
+ current = ticket.status
122
+ previous = TICKET-MAP[ticket_id].status
123
+ if current != previous:
124
+ handle_transition(previous, current, ticket)
125
+ update TICKET-MAP
126
+ ```
127
+
128
+ ### Replan Sync
129
+
130
+ ```
131
+ # Cancel old tickets
132
+ For each obsolete ticket:
133
+ update_task(ticket_id, status="cancelled")
134
+
135
+ # Create new tickets
136
+ For each new plan:
137
+ create_task(project_id, title, description)
138
+
139
+ # Update modified tickets
140
+ For each changed plan:
141
+ update_task(ticket_id, description=new_plan_content)
142
+ ```
@@ -0,0 +1,159 @@
1
+ # Debug Template
2
+
3
+ Template for `.planning/debug/[slug].md` — active debug session tracking.
4
+
5
+ ---
6
+
7
+ ## File Template
8
+
9
+ ```markdown
10
+ ---
11
+ status: gathering | investigating | fixing | verifying | resolved
12
+ trigger: "[verbatim user input]"
13
+ created: [ISO timestamp]
14
+ updated: [ISO timestamp]
15
+ ---
16
+
17
+ ## Current Focus
18
+ <!-- OVERWRITE on each update - always reflects NOW -->
19
+
20
+ hypothesis: [current theory being tested]
21
+ test: [how testing it]
22
+ expecting: [what result means if true/false]
23
+ next_action: [immediate next step]
24
+
25
+ ## Symptoms
26
+ <!-- Written during gathering, then immutable -->
27
+
28
+ expected: [what should happen]
29
+ actual: [what actually happens]
30
+ errors: [error messages if any]
31
+ reproduction: [how to trigger]
32
+ started: [when it broke / always broken]
33
+
34
+ ## Eliminated
35
+ <!-- APPEND only - prevents re-investigating after /clear -->
36
+
37
+ - hypothesis: [theory that was wrong]
38
+ evidence: [what disproved it]
39
+ timestamp: [when eliminated]
40
+
41
+ ## Evidence
42
+ <!-- APPEND only - facts discovered during investigation -->
43
+
44
+ - timestamp: [when found]
45
+ checked: [what was examined]
46
+ found: [what was observed]
47
+ implication: [what this means]
48
+
49
+ ## Resolution
50
+ <!-- OVERWRITE as understanding evolves -->
51
+
52
+ root_cause: [empty until found]
53
+ fix: [empty until applied]
54
+ verification: [empty until verified]
55
+ files_changed: []
56
+ ```
57
+
58
+ ---
59
+
60
+ <section_rules>
61
+
62
+ **Frontmatter (status, trigger, timestamps):**
63
+ - `status`: OVERWRITE - reflects current phase
64
+ - `trigger`: IMMUTABLE - verbatim user input, never changes
65
+ - `created`: IMMUTABLE - set once
66
+ - `updated`: OVERWRITE - update on every change
67
+
68
+ **Current Focus:**
69
+ - OVERWRITE entirely on each update
70
+ - Always reflects what Claude is doing RIGHT NOW
71
+ - If Claude reads this after /clear, it knows exactly where to resume
72
+ - Fields: hypothesis, test, expecting, next_action
73
+
74
+ **Symptoms:**
75
+ - Written during initial gathering phase
76
+ - IMMUTABLE after gathering complete
77
+ - Reference point for what we're trying to fix
78
+ - Fields: expected, actual, errors, reproduction, started
79
+
80
+ **Eliminated:**
81
+ - APPEND only - never remove entries
82
+ - Prevents re-investigating dead ends after context reset
83
+ - Each entry: hypothesis, evidence that disproved it, timestamp
84
+ - Critical for efficiency across /clear boundaries
85
+
86
+ **Evidence:**
87
+ - APPEND only - never remove entries
88
+ - Facts discovered during investigation
89
+ - Each entry: timestamp, what checked, what found, implication
90
+ - Builds the case for root cause
91
+
92
+ **Resolution:**
93
+ - OVERWRITE as understanding evolves
94
+ - May update multiple times as fixes are tried
95
+ - Final state shows confirmed root cause and verified fix
96
+ - Fields: root_cause, fix, verification, files_changed
97
+
98
+ </section_rules>
99
+
100
+ <lifecycle>
101
+
102
+ **Creation:** Immediately when /gsd:debug is called
103
+ - Create file with trigger from user input
104
+ - Set status to "gathering"
105
+ - Current Focus: next_action = "gather symptoms"
106
+ - Symptoms: empty, to be filled
107
+
108
+ **During symptom gathering:**
109
+ - Update Symptoms section as user answers questions
110
+ - Update Current Focus with each question
111
+ - When complete: status → "investigating"
112
+
113
+ **During investigation:**
114
+ - OVERWRITE Current Focus with each hypothesis
115
+ - APPEND to Evidence with each finding
116
+ - APPEND to Eliminated when hypothesis disproved
117
+ - Update timestamp in frontmatter
118
+
119
+ **During fixing:**
120
+ - status → "fixing"
121
+ - Update Resolution.root_cause when confirmed
122
+ - Update Resolution.fix when applied
123
+ - Update Resolution.files_changed
124
+
125
+ **During verification:**
126
+ - status → "verifying"
127
+ - Update Resolution.verification with results
128
+ - If verification fails: status → "investigating", try again
129
+
130
+ **On resolution:**
131
+ - status → "resolved"
132
+ - Move file to .planning/debug/resolved/
133
+
134
+ </lifecycle>
135
+
136
+ <resume_behavior>
137
+
138
+ When Claude reads this file after /clear:
139
+
140
+ 1. Parse frontmatter → know status
141
+ 2. Read Current Focus → know exactly what was happening
142
+ 3. Read Eliminated → know what NOT to retry
143
+ 4. Read Evidence → know what's been learned
144
+ 5. Continue from next_action
145
+
146
+ The file IS the debugging brain. Claude should be able to resume perfectly from any interruption point.
147
+
148
+ </resume_behavior>
149
+
150
+ <size_constraint>
151
+
152
+ Keep debug files focused:
153
+ - Evidence entries: 1-2 lines each, just the facts
154
+ - Eliminated: brief - hypothesis + why it failed
155
+ - No narrative prose - structured data only
156
+
157
+ If evidence grows very large (10+ entries), consider whether you're going in circles. Check Eliminated to ensure you're not re-treading.
158
+
159
+ </size_constraint>
@@ -0,0 +1,247 @@
1
+ # UAT Template
2
+
3
+ Template for `.planning/phases/XX-name/{phase}-UAT.md` — persistent UAT session tracking.
4
+
5
+ ---
6
+
7
+ ## File Template
8
+
9
+ ```markdown
10
+ ---
11
+ status: testing | complete | diagnosed
12
+ phase: XX-name
13
+ source: [list of SUMMARY.md files tested]
14
+ started: [ISO timestamp]
15
+ updated: [ISO timestamp]
16
+ ---
17
+
18
+ ## Current Test
19
+ <!-- OVERWRITE each test - shows where we are -->
20
+
21
+ number: [N]
22
+ name: [test name]
23
+ expected: |
24
+ [what user should observe]
25
+ awaiting: user response
26
+
27
+ ## Tests
28
+
29
+ ### 1. [Test Name]
30
+ expected: [observable behavior - what user should see]
31
+ result: [pending]
32
+
33
+ ### 2. [Test Name]
34
+ expected: [observable behavior]
35
+ result: pass
36
+
37
+ ### 3. [Test Name]
38
+ expected: [observable behavior]
39
+ result: issue
40
+ reported: "[verbatim user response]"
41
+ severity: major
42
+
43
+ ### 4. [Test Name]
44
+ expected: [observable behavior]
45
+ result: skipped
46
+ reason: [why skipped]
47
+
48
+ ...
49
+
50
+ ## Summary
51
+
52
+ total: [N]
53
+ passed: [N]
54
+ issues: [N]
55
+ pending: [N]
56
+ skipped: [N]
57
+
58
+ ## Gaps
59
+
60
+ <!-- YAML format for plan-phase --gaps consumption -->
61
+ - truth: "[expected behavior from test]"
62
+ status: failed
63
+ reason: "User reported: [verbatim response]"
64
+ severity: blocker | major | minor | cosmetic
65
+ test: [N]
66
+ root_cause: "" # Filled by diagnosis
67
+ artifacts: [] # Filled by diagnosis
68
+ missing: [] # Filled by diagnosis
69
+ debug_session: "" # Filled by diagnosis
70
+ ```
71
+
72
+ ---
73
+
74
+ <section_rules>
75
+
76
+ **Frontmatter:**
77
+ - `status`: OVERWRITE - "testing" or "complete"
78
+ - `phase`: IMMUTABLE - set on creation
79
+ - `source`: IMMUTABLE - SUMMARY files being tested
80
+ - `started`: IMMUTABLE - set on creation
81
+ - `updated`: OVERWRITE - update on every change
82
+
83
+ **Current Test:**
84
+ - OVERWRITE entirely on each test transition
85
+ - Shows which test is active and what's awaited
86
+ - On completion: "[testing complete]"
87
+
88
+ **Tests:**
89
+ - Each test: OVERWRITE result field when user responds
90
+ - `result` values: [pending], pass, issue, skipped
91
+ - If issue: add `reported` (verbatim) and `severity` (inferred)
92
+ - If skipped: add `reason` if provided
93
+
94
+ **Summary:**
95
+ - OVERWRITE counts after each response
96
+ - Tracks: total, passed, issues, pending, skipped
97
+
98
+ **Gaps:**
99
+ - APPEND only when issue found (YAML format)
100
+ - After diagnosis: fill `root_cause`, `artifacts`, `missing`, `debug_session`
101
+ - This section feeds directly into /gsd:plan-phase --gaps
102
+
103
+ </section_rules>
104
+
105
+ <diagnosis_lifecycle>
106
+
107
+ **After testing complete (status: complete), if gaps exist:**
108
+
109
+ 1. User runs diagnosis (from verify-work offer or manually)
110
+ 2. diagnose-issues workflow spawns parallel debug agents
111
+ 3. Each agent investigates one gap, returns root cause
112
+ 4. UAT.md Gaps section updated with diagnosis:
113
+ - Each gap gets `root_cause`, `artifacts`, `missing`, `debug_session` filled
114
+ 5. status → "diagnosed"
115
+ 6. Ready for /gsd:plan-phase --gaps with root causes
116
+
117
+ **After diagnosis:**
118
+ ```yaml
119
+ ## Gaps
120
+
121
+ - truth: "Comment appears immediately after submission"
122
+ status: failed
123
+ reason: "User reported: works but doesn't show until I refresh the page"
124
+ severity: major
125
+ test: 2
126
+ root_cause: "useEffect in CommentList.tsx missing commentCount dependency"
127
+ artifacts:
128
+ - path: "src/components/CommentList.tsx"
129
+ issue: "useEffect missing dependency"
130
+ missing:
131
+ - "Add commentCount to useEffect dependency array"
132
+ debug_session: ".planning/debug/comment-not-refreshing.md"
133
+ ```
134
+
135
+ </diagnosis_lifecycle>
136
+
137
+ <lifecycle>
138
+
139
+ **Creation:** When /gsd:verify-work starts new session
140
+ - Extract tests from SUMMARY.md files
141
+ - Set status to "testing"
142
+ - Current Test points to test 1
143
+ - All tests have result: [pending]
144
+
145
+ **During testing:**
146
+ - Present test from Current Test section
147
+ - User responds with pass confirmation or issue description
148
+ - Update test result (pass/issue/skipped)
149
+ - Update Summary counts
150
+ - If issue: append to Gaps section (YAML format), infer severity
151
+ - Move Current Test to next pending test
152
+
153
+ **On completion:**
154
+ - status → "complete"
155
+ - Current Test → "[testing complete]"
156
+ - Commit file
157
+ - Present summary with next steps
158
+
159
+ **Resume after /clear:**
160
+ 1. Read frontmatter → know phase and status
161
+ 2. Read Current Test → know where we are
162
+ 3. Find first [pending] result → continue from there
163
+ 4. Summary shows progress so far
164
+
165
+ </lifecycle>
166
+
167
+ <severity_guide>
168
+
169
+ Severity is INFERRED from user's natural language, never asked.
170
+
171
+ | User describes | Infer |
172
+ |----------------|-------|
173
+ | Crash, error, exception, fails completely, unusable | blocker |
174
+ | Doesn't work, nothing happens, wrong behavior, missing | major |
175
+ | Works but..., slow, weird, minor, small issue | minor |
176
+ | Color, font, spacing, alignment, visual, looks off | cosmetic |
177
+
178
+ Default: **major** (safe default, user can clarify if wrong)
179
+
180
+ </severity_guide>
181
+
182
+ <good_example>
183
+ ```markdown
184
+ ---
185
+ status: diagnosed
186
+ phase: 04-comments
187
+ source: 04-01-SUMMARY.md, 04-02-SUMMARY.md
188
+ started: 2025-01-15T10:30:00Z
189
+ updated: 2025-01-15T10:45:00Z
190
+ ---
191
+
192
+ ## Current Test
193
+
194
+ [testing complete]
195
+
196
+ ## Tests
197
+
198
+ ### 1. View Comments on Post
199
+ expected: Comments section expands, shows count and comment list
200
+ result: pass
201
+
202
+ ### 2. Create Top-Level Comment
203
+ expected: Submit comment via rich text editor, appears in list with author info
204
+ result: issue
205
+ reported: "works but doesn't show until I refresh the page"
206
+ severity: major
207
+
208
+ ### 3. Reply to a Comment
209
+ expected: Click Reply, inline composer appears, submit shows nested reply
210
+ result: pass
211
+
212
+ ### 4. Visual Nesting
213
+ expected: 3+ level thread shows indentation, left borders, caps at reasonable depth
214
+ result: pass
215
+
216
+ ### 5. Delete Own Comment
217
+ expected: Click delete on own comment, removed or shows [deleted] if has replies
218
+ result: pass
219
+
220
+ ### 6. Comment Count
221
+ expected: Post shows accurate count, increments when adding comment
222
+ result: pass
223
+
224
+ ## Summary
225
+
226
+ total: 6
227
+ passed: 5
228
+ issues: 1
229
+ pending: 0
230
+ skipped: 0
231
+
232
+ ## Gaps
233
+
234
+ - truth: "Comment appears immediately after submission in list"
235
+ status: failed
236
+ reason: "User reported: works but doesn't show until I refresh the page"
237
+ severity: major
238
+ test: 2
239
+ root_cause: "useEffect in CommentList.tsx missing commentCount dependency"
240
+ artifacts:
241
+ - path: "src/components/CommentList.tsx"
242
+ issue: "useEffect missing dependency"
243
+ missing:
244
+ - "Add commentCount to useEffect dependency array"
245
+ debug_session: ".planning/debug/comment-not-refreshing.md"
246
+ ```
247
+ </good_example>