@orderful/droid 0.36.0 → 0.37.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 (37) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/CHANGELOG.md +16 -0
  3. package/dist/tools/brain/.claude-plugin/plugin.json +1 -1
  4. package/dist/tools/brain/TOOL.yaml +1 -1
  5. package/dist/tools/brain/commands/brain.md +3 -2
  6. package/dist/tools/brain/skills/brain/SKILL.md +35 -7
  7. package/dist/tools/brain/skills/brain/references/templates.md +61 -0
  8. package/dist/tools/brain/skills/brain/references/workflows.md +69 -4
  9. package/dist/tools/comments/.claude-plugin/plugin.json +1 -1
  10. package/dist/tools/comments/TOOL.yaml +1 -1
  11. package/dist/tools/comments/skills/comments/SKILL.md +6 -4
  12. package/dist/tools/plan/.claude-plugin/plugin.json +1 -1
  13. package/dist/tools/plan/TOOL.yaml +1 -1
  14. package/dist/tools/plan/commands/plan.md +3 -1
  15. package/dist/tools/plan/skills/plan/SKILL.md +21 -9
  16. package/dist/tools/plan/skills/plan/references/workflows.md +57 -20
  17. package/dist/tools/tech-design/.claude-plugin/plugin.json +1 -1
  18. package/dist/tools/tech-design/TOOL.yaml +1 -1
  19. package/dist/tools/tech-design/skills/tech-design/SKILL.md +6 -4
  20. package/package.json +1 -1
  21. package/src/tools/brain/.claude-plugin/plugin.json +1 -1
  22. package/src/tools/brain/TOOL.yaml +1 -1
  23. package/src/tools/brain/commands/brain.md +3 -2
  24. package/src/tools/brain/skills/brain/SKILL.md +35 -7
  25. package/src/tools/brain/skills/brain/references/templates.md +61 -0
  26. package/src/tools/brain/skills/brain/references/workflows.md +69 -4
  27. package/src/tools/comments/.claude-plugin/plugin.json +1 -1
  28. package/src/tools/comments/TOOL.yaml +1 -1
  29. package/src/tools/comments/skills/comments/SKILL.md +6 -4
  30. package/src/tools/plan/.claude-plugin/plugin.json +1 -1
  31. package/src/tools/plan/TOOL.yaml +1 -1
  32. package/src/tools/plan/commands/plan.md +3 -1
  33. package/src/tools/plan/skills/plan/SKILL.md +21 -9
  34. package/src/tools/plan/skills/plan/references/workflows.md +57 -20
  35. package/src/tools/tech-design/.claude-plugin/plugin.json +1 -1
  36. package/src/tools/tech-design/TOOL.yaml +1 -1
  37. package/src/tools/tech-design/skills/tech-design/SKILL.md +6 -4
@@ -22,7 +22,7 @@
22
22
  {
23
23
  "name": "droid-brain",
24
24
  "description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
25
- "version": "0.3.7",
25
+ "version": "0.3.9",
26
26
  "source": {
27
27
  "source": "github",
28
28
  "repo": "orderful/droid",
@@ -74,7 +74,7 @@
74
74
  {
75
75
  "name": "droid-comments",
76
76
  "description": "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration.",
77
- "version": "0.3.4",
77
+ "version": "0.3.5",
78
78
  "source": {
79
79
  "source": "github",
80
80
  "repo": "orderful/droid",
@@ -87,7 +87,7 @@
87
87
  {
88
88
  "name": "droid-plan",
89
89
  "description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
90
- "version": "0.1.2",
90
+ "version": "0.1.4",
91
91
  "source": {
92
92
  "source": "github",
93
93
  "repo": "orderful/droid",
@@ -113,7 +113,7 @@
113
113
  {
114
114
  "name": "droid-tech-design",
115
115
  "description": "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review).",
116
- "version": "0.2.4",
116
+ "version": "0.2.5",
117
117
  "source": {
118
118
  "source": "github",
119
119
  "repo": "orderful/droid",
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @orderful/droid
2
2
 
3
+ ## 0.37.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#227](https://github.com/Orderful/droid/pull/227) [`22f0e2c`](https://github.com/Orderful/droid/commit/22f0e2caad64564bedcacce5c77509d28402d9f0) Thanks [@frytyler](https://github.com/frytyler)! - Add `/brain cleanup` and `/plan cleanup` commands to resolve discussion threads
8
+ - Identifies resolved @droid/@{user_mention} threads
9
+ - Applies any agreed changes if not already done
10
+ - Logs decisions to Decision Log (one-liners) and Discussion Log (full threads)
11
+ - Natural language triggers: "clean up", "lock in decisions", "resolve threads"
12
+
13
+ ### Patch Changes
14
+
15
+ - [#227](https://github.com/Orderful/droid/pull/227) [`22f0e2c`](https://github.com/Orderful/droid/commit/22f0e2caad64564bedcacce5c77509d28402d9f0) Thanks [@frytyler](https://github.com/frytyler)! - Clarify comment target conventions across all skills - AI responses should use `@{user_mention}` (e.g., `@fry`), never `@droid`
16
+
17
+ Updated skills: brain, plan, comments, tech-design
18
+
3
19
  ## 0.36.0
4
20
 
5
21
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-brain",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: brain
2
2
  description: "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions."
3
- version: 0.3.7
3
+ version: 0.3.9
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: brain
3
3
  description: "Collaborative scratchpad for planning and research"
4
- argument-hint: "[search {topic} | {category} {topic} | add {text} | check | done]"
4
+ argument-hint: "[search {topic} | {category} {topic} | add {text} | check | cleanup | done]"
5
5
  ---
6
6
 
7
7
  # /brain
@@ -28,8 +28,9 @@ argument-hint: "[search {topic} | {category} {topic} | add {text} | check | done
28
28
  /brain {category} {topic} # Create doc → {category}s/{topic}.md
29
29
  /brain add {text} # Append to active doc
30
30
  /brain check # Address @droid comments
31
+ /brain cleanup # Resolve threads, log decisions
31
32
  ```
32
33
 
33
- **Reserved keywords:** `search`, `add`, `check`, `done` - everything else is a category.
34
+ **Reserved keywords:** `search`, `add`, `check`, `cleanup`, `done` - everything else is a category.
34
35
 
35
36
  See the **brain skill** for complete documentation.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: brain
3
3
  description: "Collaborative scratchpad for planning and research. Use when planning a feature, exploring a problem, or capturing thinking that should persist across sessions. User prompts like 'let's think through', 'open a scratchpad', 'plan this out', 'use our brain'."
4
- argument-hint: "[search {topic} | {category} {topic} | add {text} | check | done]"
4
+ argument-hint: "[search {topic} | {category} {topic} | add {text} | check | cleanup | done]"
5
5
  allowed-tools: [Read, Write, Glob, Grep, Bash]
6
6
  ---
7
7
 
@@ -46,7 +46,7 @@ brain_dir: "{user's choice}"
46
46
 
47
47
  ## Commands
48
48
 
49
- **Reserved keywords:** `search`, `add`, `check`, `done`
49
+ **Reserved keywords:** `search`, `add`, `check`, `cleanup`, `done`
50
50
 
51
51
  | Command | Action |
52
52
  | -------------------------------------------- | ------------------------------------------------------ |
@@ -56,6 +56,7 @@ brain_dir: "{user's choice}"
56
56
  | `/brain {category} {topic}` | Create doc → `{category}s/{topic}.md` |
57
57
  | `/brain add {text}` | Append to active doc |
58
58
  | `/brain check` | Address @droid comments in active doc |
59
+ | `/brain cleanup` | Resolve threads, apply changes, log decisions |
59
60
  | `/brain done` | Finalize active doc, update status |
60
61
 
61
62
  **Category is any non-reserved word.** Common categories:
@@ -117,6 +118,21 @@ Find `> @droid` comments in active doc and address each. Preserve original comme
117
118
 
118
119
  Full procedure: `references/workflows.md` § Checking
119
120
 
121
+ ## Cleaning Up Resolved Threads
122
+
123
+ **Trigger:** `/brain cleanup` or user says "let's clean up", "resolve these threads", "lock in decisions"
124
+
125
+ Find resolved discussion threads (where a decision was reached or question answered), apply any agreed changes, and log to the bottom of the file.
126
+
127
+ 1. Scan for `@droid` / `@{user_mention}` comment threads
128
+ 2. Identify threads where a decision was made, idea was locked in, or question was resolved
129
+ 3. Apply any agreed changes to the doc if not already done
130
+ 4. Move resolved threads to logs at the bottom:
131
+ - **Decision Log** — What was decided (one-liner per decision)
132
+ - **Discussion Log** — Full thread history for reference
133
+
134
+ Full procedure: `references/workflows.md` § Cleanup
135
+
120
136
  ## Finalizing
121
137
 
122
138
  **Trigger:** `/brain done`
@@ -129,12 +145,24 @@ Full procedure: `references/workflows.md` § Finalizing
129
145
 
130
146
  In markdown files, use blockquote `>` prefix for @mention comments. The @mention is the **target**, not the author:
131
147
 
132
- | Comment | Author | Target | Meaning |
133
- | -------------- | ------ | ------ | -------------------------- |
134
- | `> @droid ...` | User | AI | User asking/telling the AI |
135
- | `> @user ...` | AI | User | AI asking/telling the user |
148
+ | Comment | Author | Target | Meaning |
149
+ | ------------------------ | ------ | ------ | -------------------------- |
150
+ | `> @droid ...` | User | AI | User asking/telling the AI |
151
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
152
+
153
+ Get `user_mention` from `droid config --get user_mention`.
154
+
155
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
156
+
157
+ If droid's `comments` skill is installed, use `/comments check` for full support.
158
+
159
+ ## Natural Language Triggers
136
160
 
137
- Get `user_mention` from `droid config --get user_mention`. If droid's `comments` skill is installed, use `/comments check` for full support.
161
+ Recognise cleanup intent and offer `/brain cleanup`:
162
+ - "Let's clean up these threads"
163
+ - "Can we resolve these discussions?"
164
+ - "Lock in these decisions"
165
+ - "Archive the resolved stuff"
138
166
 
139
167
  ## Extensions
140
168
 
@@ -133,3 +133,64 @@ Overall assessment.
133
133
  | `{date}` | Current date (YYYY-MM-DD) | "2025-01-15" |
134
134
  | `{brief description}` | Context from conversation | "refactoring the authentication system" |
135
135
  | `{content}` | User-provided text | (for notes) |
136
+
137
+ ---
138
+
139
+ ## Log Templates
140
+
141
+ These logs are appended to the bottom of brain docs by `/brain cleanup`. They preserve the history of how decisions were made without cluttering the main content.
142
+
143
+ ### Decision Log
144
+
145
+ A table of one-liner decisions for quick reference:
146
+
147
+ ```markdown
148
+ ---
149
+
150
+ ## Decision Log
151
+
152
+ | Date | Decision |
153
+ | ---------- | ----------------------------------------------------- |
154
+ | 2026-01-28 | Use Redis for rate limiting (distributed counters) |
155
+ | 2026-01-27 | Prefer composition over inheritance for handlers |
156
+ | 2026-01-25 | Ship MVP without webhooks, add in v2 |
157
+ ```
158
+
159
+ ### Discussion Log
160
+
161
+ Full conversation threads preserved for context. Useful when you need to remember *why* something was decided:
162
+
163
+ ```markdown
164
+ ## Discussion Log
165
+
166
+ ### Storage choice (2026-01-28)
167
+
168
+ > @droid Should we use Redis or Postgres for rate limit state?
169
+
170
+ > @{user_mention} Redis is better here - rate limiting needs fast atomic increments across distributed instances. Postgres would add latency and connection overhead.
171
+
172
+ > @droid Makes sense. What about persistence if Redis restarts?
173
+
174
+ > @{user_mention} We'll use Redis persistence (RDB snapshots) but also design the system to handle cold starts gracefully - worst case, limits reset.
175
+
176
+ **Resolved:** Use Redis with RDB persistence, design for graceful cold starts.
177
+
178
+ ---
179
+
180
+ ### API versioning (2026-01-27)
181
+
182
+ > @droid How should we handle API versioning?
183
+
184
+ > @{user_mention} URL path versioning (`/v1/`, `/v2/`) is clearest for consumers. Header-based is cleaner but causes confusion.
185
+
186
+ **Resolved:** Use URL path versioning.
187
+ ```
188
+
189
+ ### When to Use Each Log
190
+
191
+ | Scenario | Where it goes |
192
+ | -------- | ------------- |
193
+ | Quick decision, obvious rationale | Decision Log only |
194
+ | Decision with nuanced reasoning | Both logs |
195
+ | Long exploration that didn't lead to decision | Discussion Log only (mark as "Explored, no decision") |
196
+ | Thread that's just Q&A, no decision | Discussion Log only (mark as "Answered") |
@@ -152,10 +152,12 @@ Detailed procedures for each brain operation.
152
152
 
153
153
  **Directionality:** The @mention is the **target**, not the author:
154
154
 
155
- | Comment | Author | Target | Meaning |
156
- | -------------- | ------ | ------ | -------------------------- |
157
- | `> @droid ...` | User | AI | User asking/telling the AI |
158
- | `> @user ...` | AI | User | AI asking/telling the user |
155
+ | Comment | Author | Target | Meaning |
156
+ | ------------------------ | ------ | ------ | -------------------------- |
157
+ | `> @droid ...` | User | AI | User asking/telling the AI |
158
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
159
+
160
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
159
161
 
160
162
  **Steps:**
161
163
 
@@ -197,6 +199,69 @@ Detailed procedures for each brain operation.
197
199
 
198
200
  7. **Summarize** what was addressed
199
201
 
202
+ ## Cleanup
203
+
204
+ **Trigger:** `/brain cleanup` or natural language ("clean up these threads", "lock in decisions")
205
+
206
+ **Purpose:** Graduate resolved discussion threads into permanent logs. Unlike `/brain check` (which addresses open comments), cleanup finds threads where decisions were already made and archives them properly.
207
+
208
+ **Steps:**
209
+
210
+ 1. **Check for active doc**
211
+ - If no active doc: Ask which doc to clean up
212
+
213
+ 2. **Read active doc** and find all comment threads
214
+
215
+ 3. **Identify resolved threads:**
216
+ - Look for `@droid` → `@{user_mention}` exchanges
217
+ - Check for resolution signals:
218
+ - Explicit: "sounds good", "let's do that", "agreed", "locked in", "resolved"
219
+ - Implicit: No follow-up questions, thread went quiet after answer
220
+ - Present uncertain threads to user: "Is this resolved?"
221
+
222
+ 4. **For each resolved thread:**
223
+
224
+ a. **Check if changes were applied:**
225
+ - Did the agreed change get made to the doc?
226
+ - If not, apply it now (with user confirmation)
227
+
228
+ b. **Extract the decision:**
229
+ - One-liner summary of what was decided
230
+ - Example: "Use Redis for rate limiting (better for distributed counters)"
231
+
232
+ c. **Archive the thread:**
233
+ - Remove from current location in doc
234
+ - Add to Discussion Log at bottom (full thread preserved)
235
+ - Add to Decision Log at bottom (one-liner)
236
+
237
+ 5. **Update logs at bottom of doc:**
238
+
239
+ ```markdown
240
+ ---
241
+
242
+ ## Decision Log
243
+
244
+ | Date | Decision |
245
+ | ---- | -------- |
246
+ | {date} | {one-liner decision} |
247
+
248
+ ## Discussion Log
249
+
250
+ ### {topic} ({date})
251
+
252
+ > @droid {original question}
253
+
254
+ > @{user_mention} {response}
255
+
256
+ **Resolved:** {summary}
257
+ ```
258
+
259
+ 6. **Summarize** what was cleaned up:
260
+ - "Cleaned up 3 threads, logged 2 decisions"
261
+ - List the decisions briefly
262
+
263
+ See `references/templates.md` § Log Templates for format details.
264
+
200
265
  ## Finalizing
201
266
 
202
267
  **Trigger:** `/brain done`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-comments",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
4
4
  "description": "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: comments
2
2
  description: "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration."
3
- version: 0.3.4
3
+ version: 0.3.5
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -31,10 +31,12 @@ The AI will respond with `> @{user_mention}` (configured in droid setup, e.g., `
31
31
 
32
32
  The directionality can be confusing. The @mention is the **target**, not the author:
33
33
 
34
- | Comment | Author | Target | Meaning |
35
- | -------------- | ------ | ------ | -------------------------- |
36
- | `> @droid ...` | User | AI | User asking/telling the AI |
37
- | `> @user ...` | AI | User | AI asking/telling the user |
34
+ | Comment | Author | Target | Meaning |
35
+ | ------------------------ | ------ | ------ | -------------------------- |
36
+ | `> @droid ...` | User | AI | User asking/telling the AI |
37
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
38
+
39
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
38
40
 
39
41
  Think of it like addressing someone in conversation:
40
42
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-plan",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: plan
2
2
  description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
3
- version: 0.1.2
3
+ version: 0.1.4
4
4
  status: alpha
5
5
 
6
6
  includes:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: plan
3
3
  description: "Task-scoped planning with portable, structured plans"
4
- argument-hint: "new|search|check|ready|implement [topic]"
4
+ argument-hint: "new|search|check|cleanup|ready|implement [topic]"
5
5
  ---
6
6
 
7
7
  # /plan
@@ -17,6 +17,7 @@ argument-hint: "new|search|check|ready|implement [topic]"
17
17
  | `/plan new {topic}` | Create new plan, offer context loading |
18
18
  | `/plan search {topic}` | Find and load existing plan |
19
19
  | `/plan check` | Address @droid comments |
20
+ | `/plan cleanup` | Resolve threads, log decisions |
20
21
  | `/plan ready` | Finalize and validate |
21
22
  | `/plan implement` | Execute the plan |
22
23
 
@@ -26,6 +27,7 @@ argument-hint: "new|search|check|ready|implement [topic]"
26
27
  /plan new auth-refactor # Start planning auth refactor
27
28
  /plan search rate-limit # Find existing rate limit plan
28
29
  /plan check # Address open comments
30
+ /plan cleanup # Resolve threads, log decisions
29
31
  /plan ready # Mark plan as ready
30
32
  /plan implement # Execute the plan
31
33
  ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: plan
3
3
  description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
4
- argument-hint: "[new {topic} | search {topic} | check | ready | implement]"
4
+ argument-hint: "[new {topic} | search {topic} | check | cleanup | ready | implement]"
5
5
  allowed-tools: [Read, Edit, Write, Glob, Grep, Bash, Task, AskUserQuestion]
6
6
  ---
7
7
 
@@ -34,7 +34,8 @@ Uses config from dependencies:
34
34
  | ---------------------- | --------------------------------------------------- |
35
35
  | `/plan new {topic}` | Create plan doc, offer context loading |
36
36
  | `/plan search {topic}` | Find and load existing plan |
37
- | `/plan check` | Address `@droid` comments, graduate to decisions |
37
+ | `/plan check` | Address `@droid` comments, respond to questions |
38
+ | `/plan cleanup` | Resolve threads, apply changes, log decisions |
38
39
  | `/plan ready` | Finalize: validate and update status |
39
40
  | `/plan implement` | Execute tasks, optionally convert to XML |
40
41
 
@@ -63,10 +64,19 @@ Uses config from dependencies:
63
64
 
64
65
  1. Find `> @droid` comments in active plan
65
66
  2. Address each, respond with `> @{user_mention}`
66
- 3. Ask if resolved → graduate to Locked-In Decisions table
67
- 4. Update the doc
67
+ 3. Update the doc
68
68
 
69
- See `references/workflows.md` for graduation pattern.
69
+ ## `/plan cleanup`
70
+
71
+ **Trigger:** `/plan cleanup` or user says "clean up", "lock in decisions", "resolve these threads"
72
+
73
+ 1. Scan for resolved `@droid` / `@{user_mention}` threads
74
+ 2. Identify threads where decisions were made or questions answered
75
+ 3. Apply any agreed changes if not already done
76
+ 4. Graduate to Locked-In Decisions table
77
+ 5. Archive full thread to Discussion Log at bottom
78
+
79
+ See `references/workflows.md` § Cleanup for the full graduation pattern.
70
80
 
71
81
  ## `/plan ready`
72
82
 
@@ -88,10 +98,12 @@ See `references/workflows.md` for graduation pattern.
88
98
 
89
99
  ## Comment Conventions
90
100
 
91
- | Comment | Written by | Addressed to |
92
- | ---------------- | ---------- | ------------ |
93
- | `> @droid ...` | User | AI |
94
- | `> @{user} ...` | AI | User |
101
+ | Comment | Written by | Addressed to |
102
+ | ------------------------ | ---------- | ------------ |
103
+ | `> @droid ...` | User | AI |
104
+ | `> @{user_mention} ...` | AI | User |
105
+
106
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
95
107
 
96
108
  ## Natural Language Triggers
97
109
 
@@ -144,31 +144,66 @@ For each comment:
144
144
 
145
145
  1. **Read context** - surrounding lines, section it's in
146
146
  2. **Respond** - add response below with `> @{user_mention}`
147
- 3. **Ask resolution** - "Is this resolved?"
148
147
 
149
- ### Step 4: Graduation Pattern
148
+ ### Step 4: Update Doc
149
+
150
+ Write changes back to plan file.
151
+
152
+ ---
153
+
154
+ ## `/plan cleanup`
155
+
156
+ ### Step 1: Load Active Plan
157
+
158
+ If no active plan, prompt to search for one.
159
+
160
+ ### Step 2: Find All Comment Threads
161
+
162
+ Search for `@droid` / `@{user_mention}` exchanges.
163
+
164
+ ### Step 3: Identify Resolved Threads
165
+
166
+ Look for resolution signals:
167
+ - Explicit: "sounds good", "let's do that", "agreed", "locked in"
168
+ - Implicit: No follow-up questions after response
169
+
170
+ For uncertain threads, ask: "Is this resolved?"
171
+
172
+ ### Step 4: Apply Pending Changes
173
+
174
+ For each resolved thread:
175
+ - Check if the agreed change was applied to the plan
176
+ - If not, apply it now (with user confirmation)
177
+
178
+ ### Step 5: Graduation Pattern
150
179
 
151
180
  When a discussion is resolved:
152
181
 
153
- 1. Mark as resolved in Discussion Log:
182
+ 1. **Extract decision** for Locked-In Decisions table:
154
183
  ```markdown
155
- ### Resolved: {topic} ({date})
156
- > @droid - {original question}
157
- > @{user} - {response}
158
- > **Resolved:** {one-line summary}
184
+ | {decision} | {choice} | {rationale from discussion} |
159
185
  ```
160
186
 
161
- 2. Add to Locked-In Decisions table:
187
+ 2. **Archive to Discussion Log** at bottom:
162
188
  ```markdown
163
- | {decision} | {choice} | {rationale from discussion} |
189
+ ### {topic} ({date})
190
+ > @droid {original question}
191
+ > @{user_mention} {response}
192
+ **Resolved:** {one-line summary}
164
193
  ```
165
194
 
166
- 3. Move from "Open:" to "Resolved:" header
195
+ 3. **Remove thread** from its original location in the doc
167
196
 
168
- ### Step 5: Update Doc
197
+ ### Step 6: Update Doc
169
198
 
170
199
  Write changes back to plan file.
171
200
 
201
+ ### Step 7: Summarize
202
+
203
+ Report what was cleaned up:
204
+ - "Cleaned up 3 threads, logged 2 decisions"
205
+ - List the decisions briefly
206
+
172
207
  ---
173
208
 
174
209
  ## `/plan ready`
@@ -277,23 +312,25 @@ Add completion note:
277
312
 
278
313
  ## Discussion Graduation Flow
279
314
 
280
- The pattern for moving discussions to decisions:
315
+ The pattern for moving discussions to decisions (via `/plan cleanup`):
281
316
 
282
317
  ```
283
318
  1. User leaves comment:
284
- > @droid - Should we use Redis or Postgres?
319
+ > @droid Should we use Redis or Postgres?
285
320
 
286
- 2. AI responds:
287
- > @{user} - Redis for this use case because {reasons}
321
+ 2. AI responds (via /plan check):
322
+ > @{user_mention} Redis for this use case because {reasons}
288
323
 
289
- 3. User confirms resolution (via /plan check):
290
- > **Resolved:** Use Redis for rate limit state
324
+ 3. User runs /plan cleanup, confirms thread is resolved
291
325
 
292
- 4. Entry added to Locked-In Decisions:
326
+ 4. Entry added to Locked-In Decisions table:
293
327
  | Storage | Redis | Better for distributed counters |
294
328
 
295
- 5. Discussion header changes:
296
- ### Resolved: Storage choice (2026-01-18)
329
+ 5. Thread archived to Discussion Log at bottom:
330
+ ### Storage choice (2026-01-28)
331
+ > @droid Should we use Redis or Postgres?
332
+ > @{user_mention} Redis for this use case because {reasons}
333
+ **Resolved:** Use Redis for rate limit state
297
334
  ```
298
335
 
299
336
  This creates an audit trail while keeping decisions accessible in the table.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-tech-design",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review).",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: tech-design
2
2
  description: "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review)."
3
- version: 0.2.4
3
+ version: 0.2.5
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -70,10 +70,12 @@ Tech-design has no configuration of its own. It delegates to:
70
70
 
71
71
  **Comment conventions for async back-and-forth:**
72
72
 
73
- | Comment | Author | Target | Meaning |
74
- | -------------- | ------ | ------ | -------------------------- |
75
- | `> @droid ...` | User | AI | User asking/telling the AI |
76
- | `> @user ...` | AI | User | AI asking/telling the user |
73
+ | Comment | Author | Target | Meaning |
74
+ | ------------------------ | ------ | ------ | -------------------------- |
75
+ | `> @droid ...` | User | AI | User asking/telling the AI |
76
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
77
+
78
+ **CRITICAL:** When the AI writes comments, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's for user-to-AI only.
77
79
 
78
80
  3. **Roll-up** = Reviewer artifact
79
81
  - Synthesized from thought doc
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orderful/droid",
3
- "version": "0.36.0",
3
+ "version": "0.37.0",
4
4
  "description": "AI workflow toolkit for sharing skills, commands, and agents across the team",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-brain",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: brain
2
2
  description: "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions."
3
- version: 0.3.7
3
+ version: 0.3.9
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: brain
3
3
  description: "Collaborative scratchpad for planning and research"
4
- argument-hint: "[search {topic} | {category} {topic} | add {text} | check | done]"
4
+ argument-hint: "[search {topic} | {category} {topic} | add {text} | check | cleanup | done]"
5
5
  ---
6
6
 
7
7
  # /brain
@@ -28,8 +28,9 @@ argument-hint: "[search {topic} | {category} {topic} | add {text} | check | done
28
28
  /brain {category} {topic} # Create doc → {category}s/{topic}.md
29
29
  /brain add {text} # Append to active doc
30
30
  /brain check # Address @droid comments
31
+ /brain cleanup # Resolve threads, log decisions
31
32
  ```
32
33
 
33
- **Reserved keywords:** `search`, `add`, `check`, `done` - everything else is a category.
34
+ **Reserved keywords:** `search`, `add`, `check`, `cleanup`, `done` - everything else is a category.
34
35
 
35
36
  See the **brain skill** for complete documentation.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: brain
3
3
  description: "Collaborative scratchpad for planning and research. Use when planning a feature, exploring a problem, or capturing thinking that should persist across sessions. User prompts like 'let's think through', 'open a scratchpad', 'plan this out', 'use our brain'."
4
- argument-hint: "[search {topic} | {category} {topic} | add {text} | check | done]"
4
+ argument-hint: "[search {topic} | {category} {topic} | add {text} | check | cleanup | done]"
5
5
  allowed-tools: [Read, Write, Glob, Grep, Bash]
6
6
  ---
7
7
 
@@ -46,7 +46,7 @@ brain_dir: "{user's choice}"
46
46
 
47
47
  ## Commands
48
48
 
49
- **Reserved keywords:** `search`, `add`, `check`, `done`
49
+ **Reserved keywords:** `search`, `add`, `check`, `cleanup`, `done`
50
50
 
51
51
  | Command | Action |
52
52
  | -------------------------------------------- | ------------------------------------------------------ |
@@ -56,6 +56,7 @@ brain_dir: "{user's choice}"
56
56
  | `/brain {category} {topic}` | Create doc → `{category}s/{topic}.md` |
57
57
  | `/brain add {text}` | Append to active doc |
58
58
  | `/brain check` | Address @droid comments in active doc |
59
+ | `/brain cleanup` | Resolve threads, apply changes, log decisions |
59
60
  | `/brain done` | Finalize active doc, update status |
60
61
 
61
62
  **Category is any non-reserved word.** Common categories:
@@ -117,6 +118,21 @@ Find `> @droid` comments in active doc and address each. Preserve original comme
117
118
 
118
119
  Full procedure: `references/workflows.md` § Checking
119
120
 
121
+ ## Cleaning Up Resolved Threads
122
+
123
+ **Trigger:** `/brain cleanup` or user says "let's clean up", "resolve these threads", "lock in decisions"
124
+
125
+ Find resolved discussion threads (where a decision was reached or question answered), apply any agreed changes, and log to the bottom of the file.
126
+
127
+ 1. Scan for `@droid` / `@{user_mention}` comment threads
128
+ 2. Identify threads where a decision was made, idea was locked in, or question was resolved
129
+ 3. Apply any agreed changes to the doc if not already done
130
+ 4. Move resolved threads to logs at the bottom:
131
+ - **Decision Log** — What was decided (one-liner per decision)
132
+ - **Discussion Log** — Full thread history for reference
133
+
134
+ Full procedure: `references/workflows.md` § Cleanup
135
+
120
136
  ## Finalizing
121
137
 
122
138
  **Trigger:** `/brain done`
@@ -129,12 +145,24 @@ Full procedure: `references/workflows.md` § Finalizing
129
145
 
130
146
  In markdown files, use blockquote `>` prefix for @mention comments. The @mention is the **target**, not the author:
131
147
 
132
- | Comment | Author | Target | Meaning |
133
- | -------------- | ------ | ------ | -------------------------- |
134
- | `> @droid ...` | User | AI | User asking/telling the AI |
135
- | `> @user ...` | AI | User | AI asking/telling the user |
148
+ | Comment | Author | Target | Meaning |
149
+ | ------------------------ | ------ | ------ | -------------------------- |
150
+ | `> @droid ...` | User | AI | User asking/telling the AI |
151
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
152
+
153
+ Get `user_mention` from `droid config --get user_mention`.
154
+
155
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
156
+
157
+ If droid's `comments` skill is installed, use `/comments check` for full support.
158
+
159
+ ## Natural Language Triggers
136
160
 
137
- Get `user_mention` from `droid config --get user_mention`. If droid's `comments` skill is installed, use `/comments check` for full support.
161
+ Recognise cleanup intent and offer `/brain cleanup`:
162
+ - "Let's clean up these threads"
163
+ - "Can we resolve these discussions?"
164
+ - "Lock in these decisions"
165
+ - "Archive the resolved stuff"
138
166
 
139
167
  ## Extensions
140
168
 
@@ -133,3 +133,64 @@ Overall assessment.
133
133
  | `{date}` | Current date (YYYY-MM-DD) | "2025-01-15" |
134
134
  | `{brief description}` | Context from conversation | "refactoring the authentication system" |
135
135
  | `{content}` | User-provided text | (for notes) |
136
+
137
+ ---
138
+
139
+ ## Log Templates
140
+
141
+ These logs are appended to the bottom of brain docs by `/brain cleanup`. They preserve the history of how decisions were made without cluttering the main content.
142
+
143
+ ### Decision Log
144
+
145
+ A table of one-liner decisions for quick reference:
146
+
147
+ ```markdown
148
+ ---
149
+
150
+ ## Decision Log
151
+
152
+ | Date | Decision |
153
+ | ---------- | ----------------------------------------------------- |
154
+ | 2026-01-28 | Use Redis for rate limiting (distributed counters) |
155
+ | 2026-01-27 | Prefer composition over inheritance for handlers |
156
+ | 2026-01-25 | Ship MVP without webhooks, add in v2 |
157
+ ```
158
+
159
+ ### Discussion Log
160
+
161
+ Full conversation threads preserved for context. Useful when you need to remember *why* something was decided:
162
+
163
+ ```markdown
164
+ ## Discussion Log
165
+
166
+ ### Storage choice (2026-01-28)
167
+
168
+ > @droid Should we use Redis or Postgres for rate limit state?
169
+
170
+ > @{user_mention} Redis is better here - rate limiting needs fast atomic increments across distributed instances. Postgres would add latency and connection overhead.
171
+
172
+ > @droid Makes sense. What about persistence if Redis restarts?
173
+
174
+ > @{user_mention} We'll use Redis persistence (RDB snapshots) but also design the system to handle cold starts gracefully - worst case, limits reset.
175
+
176
+ **Resolved:** Use Redis with RDB persistence, design for graceful cold starts.
177
+
178
+ ---
179
+
180
+ ### API versioning (2026-01-27)
181
+
182
+ > @droid How should we handle API versioning?
183
+
184
+ > @{user_mention} URL path versioning (`/v1/`, `/v2/`) is clearest for consumers. Header-based is cleaner but causes confusion.
185
+
186
+ **Resolved:** Use URL path versioning.
187
+ ```
188
+
189
+ ### When to Use Each Log
190
+
191
+ | Scenario | Where it goes |
192
+ | -------- | ------------- |
193
+ | Quick decision, obvious rationale | Decision Log only |
194
+ | Decision with nuanced reasoning | Both logs |
195
+ | Long exploration that didn't lead to decision | Discussion Log only (mark as "Explored, no decision") |
196
+ | Thread that's just Q&A, no decision | Discussion Log only (mark as "Answered") |
@@ -152,10 +152,12 @@ Detailed procedures for each brain operation.
152
152
 
153
153
  **Directionality:** The @mention is the **target**, not the author:
154
154
 
155
- | Comment | Author | Target | Meaning |
156
- | -------------- | ------ | ------ | -------------------------- |
157
- | `> @droid ...` | User | AI | User asking/telling the AI |
158
- | `> @user ...` | AI | User | AI asking/telling the user |
155
+ | Comment | Author | Target | Meaning |
156
+ | ------------------------ | ------ | ------ | -------------------------- |
157
+ | `> @droid ...` | User | AI | User asking/telling the AI |
158
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
159
+
160
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
159
161
 
160
162
  **Steps:**
161
163
 
@@ -197,6 +199,69 @@ Detailed procedures for each brain operation.
197
199
 
198
200
  7. **Summarize** what was addressed
199
201
 
202
+ ## Cleanup
203
+
204
+ **Trigger:** `/brain cleanup` or natural language ("clean up these threads", "lock in decisions")
205
+
206
+ **Purpose:** Graduate resolved discussion threads into permanent logs. Unlike `/brain check` (which addresses open comments), cleanup finds threads where decisions were already made and archives them properly.
207
+
208
+ **Steps:**
209
+
210
+ 1. **Check for active doc**
211
+ - If no active doc: Ask which doc to clean up
212
+
213
+ 2. **Read active doc** and find all comment threads
214
+
215
+ 3. **Identify resolved threads:**
216
+ - Look for `@droid` → `@{user_mention}` exchanges
217
+ - Check for resolution signals:
218
+ - Explicit: "sounds good", "let's do that", "agreed", "locked in", "resolved"
219
+ - Implicit: No follow-up questions, thread went quiet after answer
220
+ - Present uncertain threads to user: "Is this resolved?"
221
+
222
+ 4. **For each resolved thread:**
223
+
224
+ a. **Check if changes were applied:**
225
+ - Did the agreed change get made to the doc?
226
+ - If not, apply it now (with user confirmation)
227
+
228
+ b. **Extract the decision:**
229
+ - One-liner summary of what was decided
230
+ - Example: "Use Redis for rate limiting (better for distributed counters)"
231
+
232
+ c. **Archive the thread:**
233
+ - Remove from current location in doc
234
+ - Add to Discussion Log at bottom (full thread preserved)
235
+ - Add to Decision Log at bottom (one-liner)
236
+
237
+ 5. **Update logs at bottom of doc:**
238
+
239
+ ```markdown
240
+ ---
241
+
242
+ ## Decision Log
243
+
244
+ | Date | Decision |
245
+ | ---- | -------- |
246
+ | {date} | {one-liner decision} |
247
+
248
+ ## Discussion Log
249
+
250
+ ### {topic} ({date})
251
+
252
+ > @droid {original question}
253
+
254
+ > @{user_mention} {response}
255
+
256
+ **Resolved:** {summary}
257
+ ```
258
+
259
+ 6. **Summarize** what was cleaned up:
260
+ - "Cleaned up 3 threads, logged 2 decisions"
261
+ - List the decisions briefly
262
+
263
+ See `references/templates.md` § Log Templates for format details.
264
+
200
265
  ## Finalizing
201
266
 
202
267
  **Trigger:** `/brain done`
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-comments",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
4
4
  "description": "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: comments
2
2
  description: "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration."
3
- version: 0.3.4
3
+ version: 0.3.5
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -31,10 +31,12 @@ The AI will respond with `> @{user_mention}` (configured in droid setup, e.g., `
31
31
 
32
32
  The directionality can be confusing. The @mention is the **target**, not the author:
33
33
 
34
- | Comment | Author | Target | Meaning |
35
- | -------------- | ------ | ------ | -------------------------- |
36
- | `> @droid ...` | User | AI | User asking/telling the AI |
37
- | `> @user ...` | AI | User | AI asking/telling the user |
34
+ | Comment | Author | Target | Meaning |
35
+ | ------------------------ | ------ | ------ | -------------------------- |
36
+ | `> @droid ...` | User | AI | User asking/telling the AI |
37
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
38
+
39
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
38
40
 
39
41
  Think of it like addressing someone in conversation:
40
42
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-plan",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: plan
2
2
  description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
3
- version: 0.1.2
3
+ version: 0.1.4
4
4
  status: alpha
5
5
 
6
6
  includes:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: plan
3
3
  description: "Task-scoped planning with portable, structured plans"
4
- argument-hint: "new|search|check|ready|implement [topic]"
4
+ argument-hint: "new|search|check|cleanup|ready|implement [topic]"
5
5
  ---
6
6
 
7
7
  # /plan
@@ -17,6 +17,7 @@ argument-hint: "new|search|check|ready|implement [topic]"
17
17
  | `/plan new {topic}` | Create new plan, offer context loading |
18
18
  | `/plan search {topic}` | Find and load existing plan |
19
19
  | `/plan check` | Address @droid comments |
20
+ | `/plan cleanup` | Resolve threads, log decisions |
20
21
  | `/plan ready` | Finalize and validate |
21
22
  | `/plan implement` | Execute the plan |
22
23
 
@@ -26,6 +27,7 @@ argument-hint: "new|search|check|ready|implement [topic]"
26
27
  /plan new auth-refactor # Start planning auth refactor
27
28
  /plan search rate-limit # Find existing rate limit plan
28
29
  /plan check # Address open comments
30
+ /plan cleanup # Resolve threads, log decisions
29
31
  /plan ready # Mark plan as ready
30
32
  /plan implement # Execute the plan
31
33
  ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: plan
3
3
  description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
4
- argument-hint: "[new {topic} | search {topic} | check | ready | implement]"
4
+ argument-hint: "[new {topic} | search {topic} | check | cleanup | ready | implement]"
5
5
  allowed-tools: [Read, Edit, Write, Glob, Grep, Bash, Task, AskUserQuestion]
6
6
  ---
7
7
 
@@ -34,7 +34,8 @@ Uses config from dependencies:
34
34
  | ---------------------- | --------------------------------------------------- |
35
35
  | `/plan new {topic}` | Create plan doc, offer context loading |
36
36
  | `/plan search {topic}` | Find and load existing plan |
37
- | `/plan check` | Address `@droid` comments, graduate to decisions |
37
+ | `/plan check` | Address `@droid` comments, respond to questions |
38
+ | `/plan cleanup` | Resolve threads, apply changes, log decisions |
38
39
  | `/plan ready` | Finalize: validate and update status |
39
40
  | `/plan implement` | Execute tasks, optionally convert to XML |
40
41
 
@@ -63,10 +64,19 @@ Uses config from dependencies:
63
64
 
64
65
  1. Find `> @droid` comments in active plan
65
66
  2. Address each, respond with `> @{user_mention}`
66
- 3. Ask if resolved → graduate to Locked-In Decisions table
67
- 4. Update the doc
67
+ 3. Update the doc
68
68
 
69
- See `references/workflows.md` for graduation pattern.
69
+ ## `/plan cleanup`
70
+
71
+ **Trigger:** `/plan cleanup` or user says "clean up", "lock in decisions", "resolve these threads"
72
+
73
+ 1. Scan for resolved `@droid` / `@{user_mention}` threads
74
+ 2. Identify threads where decisions were made or questions answered
75
+ 3. Apply any agreed changes if not already done
76
+ 4. Graduate to Locked-In Decisions table
77
+ 5. Archive full thread to Discussion Log at bottom
78
+
79
+ See `references/workflows.md` § Cleanup for the full graduation pattern.
70
80
 
71
81
  ## `/plan ready`
72
82
 
@@ -88,10 +98,12 @@ See `references/workflows.md` for graduation pattern.
88
98
 
89
99
  ## Comment Conventions
90
100
 
91
- | Comment | Written by | Addressed to |
92
- | ---------------- | ---------- | ------------ |
93
- | `> @droid ...` | User | AI |
94
- | `> @{user} ...` | AI | User |
101
+ | Comment | Written by | Addressed to |
102
+ | ------------------------ | ---------- | ------------ |
103
+ | `> @droid ...` | User | AI |
104
+ | `> @{user_mention} ...` | AI | User |
105
+
106
+ **CRITICAL:** When the AI writes comments to address the user, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's reserved for user-to-AI comments only.
95
107
 
96
108
  ## Natural Language Triggers
97
109
 
@@ -144,31 +144,66 @@ For each comment:
144
144
 
145
145
  1. **Read context** - surrounding lines, section it's in
146
146
  2. **Respond** - add response below with `> @{user_mention}`
147
- 3. **Ask resolution** - "Is this resolved?"
148
147
 
149
- ### Step 4: Graduation Pattern
148
+ ### Step 4: Update Doc
149
+
150
+ Write changes back to plan file.
151
+
152
+ ---
153
+
154
+ ## `/plan cleanup`
155
+
156
+ ### Step 1: Load Active Plan
157
+
158
+ If no active plan, prompt to search for one.
159
+
160
+ ### Step 2: Find All Comment Threads
161
+
162
+ Search for `@droid` / `@{user_mention}` exchanges.
163
+
164
+ ### Step 3: Identify Resolved Threads
165
+
166
+ Look for resolution signals:
167
+ - Explicit: "sounds good", "let's do that", "agreed", "locked in"
168
+ - Implicit: No follow-up questions after response
169
+
170
+ For uncertain threads, ask: "Is this resolved?"
171
+
172
+ ### Step 4: Apply Pending Changes
173
+
174
+ For each resolved thread:
175
+ - Check if the agreed change was applied to the plan
176
+ - If not, apply it now (with user confirmation)
177
+
178
+ ### Step 5: Graduation Pattern
150
179
 
151
180
  When a discussion is resolved:
152
181
 
153
- 1. Mark as resolved in Discussion Log:
182
+ 1. **Extract decision** for Locked-In Decisions table:
154
183
  ```markdown
155
- ### Resolved: {topic} ({date})
156
- > @droid - {original question}
157
- > @{user} - {response}
158
- > **Resolved:** {one-line summary}
184
+ | {decision} | {choice} | {rationale from discussion} |
159
185
  ```
160
186
 
161
- 2. Add to Locked-In Decisions table:
187
+ 2. **Archive to Discussion Log** at bottom:
162
188
  ```markdown
163
- | {decision} | {choice} | {rationale from discussion} |
189
+ ### {topic} ({date})
190
+ > @droid {original question}
191
+ > @{user_mention} {response}
192
+ **Resolved:** {one-line summary}
164
193
  ```
165
194
 
166
- 3. Move from "Open:" to "Resolved:" header
195
+ 3. **Remove thread** from its original location in the doc
167
196
 
168
- ### Step 5: Update Doc
197
+ ### Step 6: Update Doc
169
198
 
170
199
  Write changes back to plan file.
171
200
 
201
+ ### Step 7: Summarize
202
+
203
+ Report what was cleaned up:
204
+ - "Cleaned up 3 threads, logged 2 decisions"
205
+ - List the decisions briefly
206
+
172
207
  ---
173
208
 
174
209
  ## `/plan ready`
@@ -277,23 +312,25 @@ Add completion note:
277
312
 
278
313
  ## Discussion Graduation Flow
279
314
 
280
- The pattern for moving discussions to decisions:
315
+ The pattern for moving discussions to decisions (via `/plan cleanup`):
281
316
 
282
317
  ```
283
318
  1. User leaves comment:
284
- > @droid - Should we use Redis or Postgres?
319
+ > @droid Should we use Redis or Postgres?
285
320
 
286
- 2. AI responds:
287
- > @{user} - Redis for this use case because {reasons}
321
+ 2. AI responds (via /plan check):
322
+ > @{user_mention} Redis for this use case because {reasons}
288
323
 
289
- 3. User confirms resolution (via /plan check):
290
- > **Resolved:** Use Redis for rate limit state
324
+ 3. User runs /plan cleanup, confirms thread is resolved
291
325
 
292
- 4. Entry added to Locked-In Decisions:
326
+ 4. Entry added to Locked-In Decisions table:
293
327
  | Storage | Redis | Better for distributed counters |
294
328
 
295
- 5. Discussion header changes:
296
- ### Resolved: Storage choice (2026-01-18)
329
+ 5. Thread archived to Discussion Log at bottom:
330
+ ### Storage choice (2026-01-28)
331
+ > @droid Should we use Redis or Postgres?
332
+ > @{user_mention} Redis for this use case because {reasons}
333
+ **Resolved:** Use Redis for rate limit state
297
334
  ```
298
335
 
299
336
  This creates an audit trail while keeping decisions accessible in the table.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-tech-design",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review).",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: tech-design
2
2
  description: "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review)."
3
- version: 0.2.4
3
+ version: 0.2.5
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -70,10 +70,12 @@ Tech-design has no configuration of its own. It delegates to:
70
70
 
71
71
  **Comment conventions for async back-and-forth:**
72
72
 
73
- | Comment | Author | Target | Meaning |
74
- | -------------- | ------ | ------ | -------------------------- |
75
- | `> @droid ...` | User | AI | User asking/telling the AI |
76
- | `> @user ...` | AI | User | AI asking/telling the user |
73
+ | Comment | Author | Target | Meaning |
74
+ | ------------------------ | ------ | ------ | -------------------------- |
75
+ | `> @droid ...` | User | AI | User asking/telling the AI |
76
+ | `> @{user_mention} ...` | AI | User | AI asking/telling the user |
77
+
78
+ **CRITICAL:** When the AI writes comments, ALWAYS use `@{user_mention}`. NEVER use `@droid` — that's for user-to-AI only.
77
79
 
78
80
  3. **Roll-up** = Reviewer artifact
79
81
  - Synthesized from thought doc