@chief-clancy/terminal 0.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.
Files changed (217) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/hooks/clancy-branch-guard.js +1 -0
  4. package/dist/hooks/clancy-check-update.js +2 -0
  5. package/dist/hooks/clancy-context-monitor.js +9 -0
  6. package/dist/hooks/clancy-credential-guard.js +2 -0
  7. package/dist/hooks/clancy-drift-detector.js +1 -0
  8. package/dist/hooks/clancy-notification.js +1 -0
  9. package/dist/hooks/clancy-post-compact.js +2 -0
  10. package/dist/hooks/clancy-statusline.js +1 -0
  11. package/dist/index.d.ts +24 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +23 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/installer/file-ops/file-ops.d.ts +35 -0
  16. package/dist/installer/file-ops/file-ops.d.ts.map +1 -0
  17. package/dist/installer/file-ops/file-ops.js +95 -0
  18. package/dist/installer/file-ops/file-ops.js.map +1 -0
  19. package/dist/installer/file-ops/index.d.ts +2 -0
  20. package/dist/installer/file-ops/index.d.ts.map +1 -0
  21. package/dist/installer/file-ops/index.js +2 -0
  22. package/dist/installer/file-ops/index.js.map +1 -0
  23. package/dist/installer/hook-installer/hook-installer.d.ts +22 -0
  24. package/dist/installer/hook-installer/hook-installer.d.ts.map +1 -0
  25. package/dist/installer/hook-installer/hook-installer.js +213 -0
  26. package/dist/installer/hook-installer/hook-installer.js.map +1 -0
  27. package/dist/installer/hook-installer/index.d.ts +2 -0
  28. package/dist/installer/hook-installer/index.d.ts.map +1 -0
  29. package/dist/installer/hook-installer/index.js +2 -0
  30. package/dist/installer/hook-installer/index.js.map +1 -0
  31. package/dist/installer/install/index.d.ts +3 -0
  32. package/dist/installer/install/index.d.ts.map +1 -0
  33. package/dist/installer/install/index.js +2 -0
  34. package/dist/installer/install/index.js.map +1 -0
  35. package/dist/installer/install/install.d.ts +124 -0
  36. package/dist/installer/install/install.d.ts.map +1 -0
  37. package/dist/installer/install/install.js +255 -0
  38. package/dist/installer/install/install.js.map +1 -0
  39. package/dist/installer/manifest/index.d.ts +2 -0
  40. package/dist/installer/manifest/index.d.ts.map +1 -0
  41. package/dist/installer/manifest/index.js +2 -0
  42. package/dist/installer/manifest/index.js.map +1 -0
  43. package/dist/installer/manifest/manifest.d.ts +46 -0
  44. package/dist/installer/manifest/manifest.d.ts.map +1 -0
  45. package/dist/installer/manifest/manifest.js +180 -0
  46. package/dist/installer/manifest/manifest.js.map +1 -0
  47. package/dist/installer/prompts/index.d.ts +2 -0
  48. package/dist/installer/prompts/index.d.ts.map +1 -0
  49. package/dist/installer/prompts/index.js +2 -0
  50. package/dist/installer/prompts/index.js.map +1 -0
  51. package/dist/installer/prompts/prompts.d.ts +34 -0
  52. package/dist/installer/prompts/prompts.d.ts.map +1 -0
  53. package/dist/installer/prompts/prompts.js +28 -0
  54. package/dist/installer/prompts/prompts.js.map +1 -0
  55. package/dist/installer/role-filter/index.d.ts +2 -0
  56. package/dist/installer/role-filter/index.d.ts.map +1 -0
  57. package/dist/installer/role-filter/index.js +2 -0
  58. package/dist/installer/role-filter/index.js.map +1 -0
  59. package/dist/installer/role-filter/role-filter.d.ts +33 -0
  60. package/dist/installer/role-filter/role-filter.d.ts.map +1 -0
  61. package/dist/installer/role-filter/role-filter.js +91 -0
  62. package/dist/installer/role-filter/role-filter.js.map +1 -0
  63. package/dist/installer/shared/fs-errors/fs-errors.d.ts +3 -0
  64. package/dist/installer/shared/fs-errors/fs-errors.d.ts.map +1 -0
  65. package/dist/installer/shared/fs-errors/fs-errors.js +7 -0
  66. package/dist/installer/shared/fs-errors/fs-errors.js.map +1 -0
  67. package/dist/installer/shared/fs-errors/index.d.ts +2 -0
  68. package/dist/installer/shared/fs-errors/index.d.ts.map +1 -0
  69. package/dist/installer/shared/fs-errors/index.js +2 -0
  70. package/dist/installer/shared/fs-errors/index.js.map +1 -0
  71. package/dist/installer/shared/fs-guards/fs-guards.d.ts +3 -0
  72. package/dist/installer/shared/fs-guards/fs-guards.d.ts.map +1 -0
  73. package/dist/installer/shared/fs-guards/fs-guards.js +18 -0
  74. package/dist/installer/shared/fs-guards/fs-guards.js.map +1 -0
  75. package/dist/installer/shared/fs-guards/index.d.ts +2 -0
  76. package/dist/installer/shared/fs-guards/index.d.ts.map +1 -0
  77. package/dist/installer/shared/fs-guards/index.js +2 -0
  78. package/dist/installer/shared/fs-guards/index.js.map +1 -0
  79. package/dist/installer/shared/type-guards/index.d.ts +2 -0
  80. package/dist/installer/shared/type-guards/index.d.ts.map +1 -0
  81. package/dist/installer/shared/type-guards/index.js +2 -0
  82. package/dist/installer/shared/type-guards/index.js.map +1 -0
  83. package/dist/installer/shared/type-guards/type-guards.d.ts +8 -0
  84. package/dist/installer/shared/type-guards/type-guards.d.ts.map +1 -0
  85. package/dist/installer/shared/type-guards/type-guards.js +10 -0
  86. package/dist/installer/shared/type-guards/type-guards.js.map +1 -0
  87. package/dist/installer/ui/index.d.ts +2 -0
  88. package/dist/installer/ui/index.d.ts.map +1 -0
  89. package/dist/installer/ui/index.js +2 -0
  90. package/dist/installer/ui/index.js.map +1 -0
  91. package/dist/installer/ui/ui.d.ts +23 -0
  92. package/dist/installer/ui/ui.d.ts.map +1 -0
  93. package/dist/installer/ui/ui.js +121 -0
  94. package/dist/installer/ui/ui.js.map +1 -0
  95. package/dist/runner/autopilot/autopilot.d.ts +71 -0
  96. package/dist/runner/autopilot/autopilot.d.ts.map +1 -0
  97. package/dist/runner/autopilot/autopilot.js +206 -0
  98. package/dist/runner/autopilot/autopilot.js.map +1 -0
  99. package/dist/runner/autopilot/index.d.ts +2 -0
  100. package/dist/runner/autopilot/index.d.ts.map +1 -0
  101. package/dist/runner/autopilot/index.js +2 -0
  102. package/dist/runner/autopilot/index.js.map +1 -0
  103. package/dist/runner/cli-bridge/cli-bridge.d.ts +34 -0
  104. package/dist/runner/cli-bridge/cli-bridge.d.ts.map +1 -0
  105. package/dist/runner/cli-bridge/cli-bridge.js +53 -0
  106. package/dist/runner/cli-bridge/cli-bridge.js.map +1 -0
  107. package/dist/runner/cli-bridge/index.d.ts +2 -0
  108. package/dist/runner/cli-bridge/index.d.ts.map +1 -0
  109. package/dist/runner/cli-bridge/index.js +2 -0
  110. package/dist/runner/cli-bridge/index.js.map +1 -0
  111. package/dist/runner/dep-factory/deliver-phase.d.ts +24 -0
  112. package/dist/runner/dep-factory/deliver-phase.d.ts.map +1 -0
  113. package/dist/runner/dep-factory/deliver-phase.js +57 -0
  114. package/dist/runner/dep-factory/deliver-phase.js.map +1 -0
  115. package/dist/runner/dep-factory/dep-factory.d.ts +38 -0
  116. package/dist/runner/dep-factory/dep-factory.d.ts.map +1 -0
  117. package/dist/runner/dep-factory/dep-factory.js +193 -0
  118. package/dist/runner/dep-factory/dep-factory.js.map +1 -0
  119. package/dist/runner/dep-factory/index.d.ts +2 -0
  120. package/dist/runner/dep-factory/index.d.ts.map +1 -0
  121. package/dist/runner/dep-factory/index.js +2 -0
  122. package/dist/runner/dep-factory/index.js.map +1 -0
  123. package/dist/runner/dep-factory/invoke-phase.d.ts +20 -0
  124. package/dist/runner/dep-factory/invoke-phase.d.ts.map +1 -0
  125. package/dist/runner/dep-factory/invoke-phase.js +45 -0
  126. package/dist/runner/dep-factory/invoke-phase.js.map +1 -0
  127. package/dist/runner/implement/implement.d.ts +38 -0
  128. package/dist/runner/implement/implement.d.ts.map +1 -0
  129. package/dist/runner/implement/implement.js +61 -0
  130. package/dist/runner/implement/implement.js.map +1 -0
  131. package/dist/runner/implement/index.d.ts +2 -0
  132. package/dist/runner/implement/index.d.ts.map +1 -0
  133. package/dist/runner/implement/index.js +2 -0
  134. package/dist/runner/implement/index.js.map +1 -0
  135. package/dist/runner/notify/index.d.ts +2 -0
  136. package/dist/runner/notify/index.d.ts.map +1 -0
  137. package/dist/runner/notify/index.js +2 -0
  138. package/dist/runner/notify/index.js.map +1 -0
  139. package/dist/runner/notify/notify.d.ts +49 -0
  140. package/dist/runner/notify/notify.d.ts.map +1 -0
  141. package/dist/runner/notify/notify.js +90 -0
  142. package/dist/runner/notify/notify.js.map +1 -0
  143. package/dist/runner/prompt-builder/index.d.ts +2 -0
  144. package/dist/runner/prompt-builder/index.d.ts.map +1 -0
  145. package/dist/runner/prompt-builder/index.js +2 -0
  146. package/dist/runner/prompt-builder/index.js.map +1 -0
  147. package/dist/runner/prompt-builder/prompt-builder.d.ts +53 -0
  148. package/dist/runner/prompt-builder/prompt-builder.d.ts.map +1 -0
  149. package/dist/runner/prompt-builder/prompt-builder.js +122 -0
  150. package/dist/runner/prompt-builder/prompt-builder.js.map +1 -0
  151. package/dist/runner/session-report/index.d.ts +2 -0
  152. package/dist/runner/session-report/index.d.ts.map +1 -0
  153. package/dist/runner/session-report/index.js +2 -0
  154. package/dist/runner/session-report/index.js.map +1 -0
  155. package/dist/runner/session-report/session-report.d.ts +81 -0
  156. package/dist/runner/session-report/session-report.d.ts.map +1 -0
  157. package/dist/runner/session-report/session-report.js +227 -0
  158. package/dist/runner/session-report/session-report.js.map +1 -0
  159. package/dist/runner/shared/types.d.ts +30 -0
  160. package/dist/runner/shared/types.d.ts.map +1 -0
  161. package/dist/runner/shared/types.js +2 -0
  162. package/dist/runner/shared/types.js.map +1 -0
  163. package/dist/shared/ansi/ansi.d.ts +59 -0
  164. package/dist/shared/ansi/ansi.d.ts.map +1 -0
  165. package/dist/shared/ansi/ansi.js +59 -0
  166. package/dist/shared/ansi/ansi.js.map +1 -0
  167. package/dist/shared/ansi/index.d.ts +2 -0
  168. package/dist/shared/ansi/index.d.ts.map +1 -0
  169. package/dist/shared/ansi/index.js +2 -0
  170. package/dist/shared/ansi/index.js.map +1 -0
  171. package/package.json +52 -0
  172. package/src/agents/agents.test.ts +57 -0
  173. package/src/agents/arch-agent.md +80 -0
  174. package/src/agents/concerns-agent.md +96 -0
  175. package/src/agents/design-agent.md +146 -0
  176. package/src/agents/devils-advocate.md +54 -0
  177. package/src/agents/quality-agent.md +178 -0
  178. package/src/agents/tech-agent.md +101 -0
  179. package/src/agents/verification-gate.md +128 -0
  180. package/src/roles/implementer/commands/autopilot.md +11 -0
  181. package/src/roles/implementer/commands/dry-run.md +15 -0
  182. package/src/roles/implementer/commands/implement.md +19 -0
  183. package/src/roles/implementer/workflows/autopilot.md +136 -0
  184. package/src/roles/implementer/workflows/implement.md +161 -0
  185. package/src/roles/planner/commands/approve-plan.md +11 -0
  186. package/src/roles/planner/commands/plan.md +22 -0
  187. package/src/roles/planner/workflows/approve-plan.md +970 -0
  188. package/src/roles/planner/workflows/plan.md +868 -0
  189. package/src/roles/reviewer/commands/logs.md +7 -0
  190. package/src/roles/reviewer/commands/review.md +9 -0
  191. package/src/roles/reviewer/commands/status.md +9 -0
  192. package/src/roles/reviewer/workflows/logs.md +109 -0
  193. package/src/roles/reviewer/workflows/review.md +197 -0
  194. package/src/roles/reviewer/workflows/status.md +142 -0
  195. package/src/roles/roles.test.ts +87 -0
  196. package/src/roles/setup/commands/doctor.md +7 -0
  197. package/src/roles/setup/commands/help.md +80 -0
  198. package/src/roles/setup/commands/init.md +7 -0
  199. package/src/roles/setup/commands/map-codebase.md +17 -0
  200. package/src/roles/setup/commands/settings.md +7 -0
  201. package/src/roles/setup/commands/uninstall.md +5 -0
  202. package/src/roles/setup/commands/update-docs.md +9 -0
  203. package/src/roles/setup/commands/update.md +13 -0
  204. package/src/roles/setup/workflows/doctor.md +131 -0
  205. package/src/roles/setup/workflows/init.md +1096 -0
  206. package/src/roles/setup/workflows/map-codebase.md +130 -0
  207. package/src/roles/setup/workflows/scaffold.md +872 -0
  208. package/src/roles/setup/workflows/settings.md +958 -0
  209. package/src/roles/setup/workflows/uninstall.md +170 -0
  210. package/src/roles/setup/workflows/update-docs.md +95 -0
  211. package/src/roles/setup/workflows/update.md +287 -0
  212. package/src/roles/strategist/commands/approve-brief.md +23 -0
  213. package/src/roles/strategist/commands/brief.md +29 -0
  214. package/src/roles/strategist/workflows/approve-brief.md +1540 -0
  215. package/src/roles/strategist/workflows/brief.md +1330 -0
  216. package/src/templates/CLAUDE.md +101 -0
  217. package/src/templates/templates.test.ts +53 -0
@@ -0,0 +1,872 @@
1
+ # Clancy Scaffold Workflow
2
+
3
+ ## Overview
4
+
5
+ Shared scaffolding logic used during `/clancy:init`. Not a standalone command.
6
+
7
+ ---
8
+
9
+ ## Doc templates
10
+
11
+ Create these files in `.clancy/docs/` with section headings but no content:
12
+
13
+ ### STACK.md
14
+
15
+ ```markdown
16
+ # Stack
17
+
18
+ ## Runtime
19
+
20
+ ## Package Manager
21
+
22
+ ## Frameworks
23
+
24
+ ## Key Libraries
25
+
26
+ ## Build Tools
27
+
28
+ ## Dev Servers
29
+
30
+ ## Environment
31
+ ```
32
+
33
+ ### INTEGRATIONS.md
34
+
35
+ ```markdown
36
+ # Integrations
37
+
38
+ ## External APIs
39
+
40
+ ## Authentication
41
+
42
+ ## Data Storage
43
+
44
+ ## Third-party Services
45
+
46
+ ## Environment Variables Required
47
+ ```
48
+
49
+ ### ARCHITECTURE.md
50
+
51
+ ```markdown
52
+ # Architecture
53
+
54
+ ## Overview
55
+
56
+ ## Directory Structure
57
+
58
+ ## Key Modules
59
+
60
+ ## Data Flow
61
+
62
+ ## API Design
63
+
64
+ ## State Management
65
+ ```
66
+
67
+ ### CONVENTIONS.md
68
+
69
+ ```markdown
70
+ # Conventions
71
+
72
+ ## Code Style
73
+
74
+ ## Naming Conventions
75
+
76
+ ## File Organisation
77
+
78
+ ## Component Patterns
79
+
80
+ ## Error Handling
81
+
82
+ ## Logging
83
+ ```
84
+
85
+ ### TESTING.md
86
+
87
+ ```markdown
88
+ # Testing
89
+
90
+ ## Test Runner
91
+
92
+ ## Test Structure
93
+
94
+ ## Unit Tests
95
+
96
+ ## Integration Tests
97
+
98
+ ## E2E Tests
99
+
100
+ ## Coverage Expectations
101
+ ```
102
+
103
+ ### GIT.md
104
+
105
+ ```markdown
106
+ # Git Conventions
107
+
108
+ ## Branch Naming
109
+
110
+ ## Commit Format
111
+
112
+ ## Merge Strategy
113
+
114
+ ## Pull Request Process
115
+
116
+ ## Versioning
117
+ ```
118
+
119
+ ### DESIGN-SYSTEM.md
120
+
121
+ ```markdown
122
+ # Design System
123
+
124
+ ## Token System
125
+
126
+ ## Component Library
127
+
128
+ ## Theming
129
+
130
+ ## Responsive Breakpoints
131
+
132
+ ## Icon System
133
+ ```
134
+
135
+ ### ACCESSIBILITY.md
136
+
137
+ ```markdown
138
+ # Accessibility
139
+
140
+ ## WCAG Level
141
+
142
+ ## ARIA Patterns
143
+
144
+ ## Keyboard Navigation
145
+
146
+ ## Focus Management
147
+
148
+ ## Screen Reader Support
149
+ ```
150
+
151
+ ### DEFINITION-OF-DONE.md
152
+
153
+ ```markdown
154
+ # Definition of Done
155
+
156
+ ## Code Quality
157
+
158
+ ## Testing
159
+
160
+ ## Documentation
161
+
162
+ ## Design
163
+
164
+ ## Accessibility
165
+
166
+ ## Review
167
+ ```
168
+
169
+ ### CONCERNS.md
170
+
171
+ ```markdown
172
+ # Concerns
173
+
174
+ ## Known Tech Debt
175
+
176
+ ## Security Considerations
177
+
178
+ ## Performance Bottlenecks
179
+
180
+ ## Areas to Avoid Changing
181
+
182
+ ## Deprecated Patterns
183
+ ```
184
+
185
+ ---
186
+
187
+ ## PLAYWRIGHT.md template
188
+
189
+ Create `.clancy/docs/PLAYWRIGHT.md` when `PLAYWRIGHT_ENABLED=true`:
190
+
191
+ ````markdown
192
+ # Playwright Visual Checks
193
+
194
+ Clancy runs visual checks after implementing UI tickets. This file defines
195
+ which server to use and how to start it.
196
+
197
+ ## Decision Rule
198
+
199
+ Apply in order:
200
+
201
+ 1. If the ticket mentions: route, page, screen, layout, full-page → use **dev server**
202
+ 2. If the ticket mentions: component, atom, molecule, organism, variant, story → use **Storybook**
203
+ 3. Ambiguous → default to **dev server**
204
+
205
+ ## Dev Server
206
+
207
+ | Key | Value |
208
+ | ------------- | ---------------------------------------------------------------- |
209
+ | Start command | `{PLAYWRIGHT_DEV_COMMAND}` |
210
+ | Port | `{PLAYWRIGHT_DEV_PORT}` |
211
+ | Health check | `http://localhost:{PLAYWRIGHT_DEV_PORT}` |
212
+ | Startup wait | {PLAYWRIGHT_STARTUP_WAIT}s (use health check polling, not sleep) |
213
+
214
+ ## Storybook
215
+
216
+ <!-- Remove this section if Storybook is not used -->
217
+
218
+ | Key | Value |
219
+ | ----------------- | ---------------------------------------------------------------------------- |
220
+ | Start command | `{PLAYWRIGHT_STORYBOOK_COMMAND}` |
221
+ | Port | `{PLAYWRIGHT_STORYBOOK_PORT}` |
222
+ | Story URL pattern | `http://localhost:{PLAYWRIGHT_STORYBOOK_PORT}/?path=/story/{component-name}` |
223
+
224
+ ## Visual Check Process
225
+
226
+ 1. Determine which server to use (decision rule above)
227
+ 2. Start the server using health check polling — poll every 2s, timeout after {PLAYWRIGHT_STARTUP_WAIT}s
228
+ 3. Navigate to the relevant route or story URL
229
+ 4. Screenshot the full page
230
+ 5. Assess visually — check layout, spacing, colours, responsive behaviour
231
+ 6. Check browser console for errors
232
+ 7. Fix anything wrong before committing
233
+ 8. Kill server by PID, then sweep the port unconditionally
234
+ 9. Log result: `YYYY-MM-DD HH:MM | TICKET-KEY | PLAYWRIGHT_PASS|FAIL | dev-server|storybook`
235
+
236
+ ## Server Health Check Pattern
237
+
238
+ ```bash
239
+ # Start server in background
240
+ {PLAYWRIGHT_DEV_COMMAND} &
241
+ SERVER_PID=$!
242
+
243
+ # Poll until ready
244
+ MAX_WAIT={PLAYWRIGHT_STARTUP_WAIT}
245
+ ELAPSED=0
246
+ until curl -s http://localhost:{PLAYWRIGHT_DEV_PORT} >/dev/null 2>&1; do
247
+ sleep 2
248
+ ELAPSED=$((ELAPSED + 2))
249
+ if [ $ELAPSED -ge $MAX_WAIT ]; then
250
+ echo "Server did not start within ${MAX_WAIT}s"
251
+ kill $SERVER_PID 2>/dev/null
252
+ exit 1
253
+ fi
254
+ done
255
+
256
+ # ... run visual check ...
257
+
258
+ # Cleanup — kill by PID, then sweep port unconditionally
259
+ kill $SERVER_PID 2>/dev/null
260
+ lsof -ti:{PLAYWRIGHT_DEV_PORT} | xargs kill -9 2>/dev/null || true
261
+ ```
262
+ ````
263
+
264
+ ---
265
+
266
+ ## CLAUDE.md merge logic
267
+
268
+ ### If CLAUDE.md does not exist
269
+
270
+ Write the full template as `CLAUDE.md` (see `src/templates/CLAUDE.md`).
271
+
272
+ ### If CLAUDE.md already exists
273
+
274
+ Check for existing `<!-- clancy:start -->` marker:
275
+
276
+ - Found: Replace everything between `<!-- clancy:start -->` and `<!-- clancy:end -->` with updated content
277
+ - Not found: Append the Clancy section to the end of the file
278
+
279
+ Never overwrite the entire file. Always preserve existing content.
280
+
281
+ ---
282
+
283
+ ## .gitignore check
284
+
285
+ Read the project's `.gitignore`. If `.clancy/.env` is not present, append:
286
+
287
+ ```
288
+
289
+ # Clancy credentials
290
+
291
+ .clancy/.env
292
+
293
+ ```
294
+
295
+ If no `.gitignore` exists, create one with:
296
+
297
+ ```
298
+
299
+ # Clancy credentials
300
+
301
+ .clancy/.env
302
+
303
+ # Dependencies
304
+
305
+ node_modules/
306
+
307
+ # OS
308
+
309
+ .DS_Store
310
+
311
+ ```
312
+
313
+ ---
314
+
315
+ ## .prettierignore check
316
+
317
+ Check whether a `.prettierignore` file exists in the project root.
318
+
319
+ **If it exists:** read it. If it does not already contain `.clancy/`, append:
320
+
321
+ ```
322
+
323
+ # Clancy generated files
324
+
325
+ .clancy/
326
+ .claude/commands/clancy/
327
+
328
+ ```
329
+
330
+ **If it does not exist:** skip — do not create it. Clancy only adds entries to an existing `.prettierignore` so it does not impose Prettier on projects that don't use it.
331
+
332
+ ---
333
+
334
+ ## Runtime scripts
335
+
336
+ The installer copies bundled runtime scripts (`clancy-implement.js` and `clancy-autopilot.js`) directly into `.clancy/` during installation. These are self-contained — they have zero runtime dependency on the `chief-clancy` npm package.
337
+
338
+ **Do NOT write or modify these files during init.** They are managed by the installer and updated automatically via `/clancy:update`.
339
+
340
+ If the scripts are missing (e.g. upgrading from an older version), tell the user to run:
341
+
342
+ ```bash
343
+ npx -y chief-clancy@latest
344
+ ```
345
+
346
+ ---
347
+
348
+ ## .env.example files
349
+
350
+ Write the correct `.env.example` for the chosen board to `.clancy/.env.example`.
351
+
352
+ ### Jira
353
+
354
+ ```
355
+ # Clancy — Jira configuration
356
+ # Copy this file to .env and fill in your values.
357
+ # Never commit .env to version control.
358
+
359
+ # ─── Jira ─────────────────────────────────────────────────────────────────────
360
+ JIRA_BASE_URL=https://your-org.atlassian.net
361
+ JIRA_USER=your-email@example.com
362
+ JIRA_API_TOKEN=your-api-token-from-id.atlassian.com
363
+ JIRA_PROJECT_KEY=PROJ
364
+
365
+ # ─── Implementation Queue ─────────────────────────────────────────────────────
366
+ # Status name for "ready to be picked up" (default: To Do)
367
+ # Must be quoted if the status name contains spaces (e.g. "Selected for Development")
368
+ CLANCY_JQL_STATUS="To Do"
369
+
370
+ # Set to any non-empty value to filter by open sprints (requires Jira Software)
371
+ # Remove or leave empty if your project doesn't use sprints
372
+ # CLANCY_JQL_SPRINT=true
373
+
374
+ # Optional: only pick up tickets with this label. Recommended for mixed backlogs
375
+ # where not every ticket is suitable for autonomous implementation (e.g. non-code tasks).
376
+ # Create the label in Jira first, then add it to any ticket you want Clancy to pick up.
377
+ # CLANCY_LABEL="clancy"
378
+
379
+ # ─── Git ──────────────────────────────────────────────────────────────────────
380
+ # Base integration branch. Clancy branches from here when a ticket has no parent epic.
381
+ # When a ticket has a parent epic, Clancy auto-creates epic/{key} from this branch.
382
+ CLANCY_BASE_BRANCH=main
383
+
384
+ # ─── Loop ─────────────────────────────────────────────────────────────────────
385
+ # Max tickets to process per /clancy:autopilot session (default: 5)
386
+ MAX_ITERATIONS=5
387
+
388
+ # ─── Model ────────────────────────────────────────────────────────────────────
389
+ # Claude model used for each ticket session. Leave unset to use the default.
390
+ # Options: claude-opus-4-6 | claude-sonnet-4-6 | claude-haiku-4-5
391
+ # CLANCY_MODEL=claude-sonnet-4-6
392
+
393
+ # ─── Optional: Figma MCP ──────────────────────────────────────────────────────
394
+ # Fetch design specs from Figma when a ticket has a Figma URL in its description
395
+ # FIGMA_API_KEY=your-figma-api-key
396
+
397
+ # ─── Optional: Playwright visual checks ───────────────────────────────────────
398
+ # Run a visual check after implementing UI tickets
399
+ # PLAYWRIGHT_ENABLED=true
400
+ # PLAYWRIGHT_DEV_COMMAND="yarn dev"
401
+ # PLAYWRIGHT_DEV_PORT=5173
402
+ # PLAYWRIGHT_STORYBOOK_COMMAND="yarn storybook"
403
+ # PLAYWRIGHT_STORYBOOK_PORT=6006
404
+ # PLAYWRIGHT_STARTUP_WAIT=15
405
+
406
+ # ─── Optional: Status transitions ────────────────────────────────────────────
407
+ # Move tickets automatically when Clancy picks up or completes them.
408
+ # Set to the Jira transition name (the action label, not the column header).
409
+ # In many workflows these match, but check your Jira workflow if transitions fail.
410
+ # "Done" can be any transition to a post-implementation status.
411
+ # CLANCY_STATUS_IN_PROGRESS="In Progress"
412
+ # CLANCY_STATUS_DONE="Done"
413
+ # CLANCY_STATUS_REVIEW="In Review" # used when creating a PR instead of merging locally
414
+
415
+ # ─── Optional: Git host (PR creation) ───────────────────────────────────────
416
+ # When a ticket has no parent epic, Clancy pushes the feature branch and creates
417
+ # a pull request instead of squash-merging locally. Requires a git host token.
418
+ # GitHub Issues users already have GITHUB_TOKEN above — no extra config needed.
419
+ # GITHUB_TOKEN=ghp_your-token # if your git host is GitHub
420
+ # GITLAB_TOKEN=glpat-your-token # if your git host is GitLab
421
+ # BITBUCKET_USER=your-username # if your git host is Bitbucket
422
+ # BITBUCKET_TOKEN=your-app-password # if your git host is Bitbucket
423
+ # CLANCY_GIT_PLATFORM=gitlab # override auto-detection (github/gitlab/bitbucket)
424
+ # CLANCY_GIT_API_URL=https://gitlab.example.com/api/v4 # self-hosted git API base URL
425
+
426
+ # ─── Optional: Pipeline labels ────────────────────────────────────────────────
427
+ # Labels that control ticket flow through pipeline stages.
428
+ # CLANCY_LABEL_BRIEF marks tickets that have been briefed (awaiting approval).
429
+ # CLANCY_LABEL_PLAN marks tickets that need planning.
430
+ # CLANCY_LABEL_BUILD marks tickets ready for implementation.
431
+ # Deprecated: CLANCY_LABEL (use CLANCY_LABEL_BUILD), CLANCY_PLAN_LABEL (use CLANCY_LABEL_PLAN)
432
+ # CLANCY_LABEL_BRIEF="clancy:brief"
433
+ # CLANCY_LABEL_PLAN="clancy:plan"
434
+ # CLANCY_LABEL_BUILD="clancy:build"
435
+
436
+ # ─── Optional: Rework loop ──────────────────────────────────────────────────
437
+ # PR-based rework is automatic — when a reviewer leaves inline comments or
438
+ # a conversation comment prefixed with "Rework:", Clancy picks it up on the
439
+ # next run. No configuration needed.
440
+ # CLANCY_MAX_REWORK=3 # Max rework cycles before human intervention (default: 3)
441
+
442
+ # ─── Optional: Test-Driven Development ──────────────────────────────────────
443
+ # When enabled, Clancy follows red-green-refactor for every behaviour change.
444
+ # CLANCY_TDD=true
445
+
446
+ # ─── Optional: Grill mode ───────────────────────────────────────────────────
447
+ # Controls how /clancy:brief handles clarifying questions before generating a brief.
448
+ # "interactive" (default) — asks the human. "afk" — AI-grill resolves autonomously.
449
+ # Can also be overridden per-invocation with --afk flag.
450
+ # CLANCY_MODE=interactive
451
+
452
+ # ─── Optional: Strategist ───────────────────────────────────────────────────
453
+ # Issue type for tickets created by /clancy:brief (Jira only, default: Task)
454
+ # CLANCY_BRIEF_ISSUE_TYPE="Task"
455
+
456
+ # Default parent epic for briefs created from text or file input
457
+ # CLANCY_BRIEF_EPIC="PROJ-100"
458
+
459
+ # Auto-set on tickets created by /clancy:brief.
460
+ # Only affects ticket creation — does not filter the implementation queue.
461
+ # CLANCY_COMPONENT="frontend"
462
+
463
+ # ─── Optional: Planner queue ─────────────────────────────────────────────────
464
+ # Status for backlog tickets that /clancy:plan fetches from (default: Backlog)
465
+ # Only used if Planner role is enabled via CLANCY_ROLES
466
+ # CLANCY_PLAN_STATUS="Backlog"
467
+
468
+ # After approving a plan, transition the ticket to this status (e.g. "To Do")
469
+ # CLANCY_STATUS_PLANNED="To Do"
470
+
471
+ # ─── Optional: Skip comments ──────────────────────────────────────────────
472
+ # When Clancy skips a ticket (irrelevant/infeasible), post a comment explaining why
473
+ # Set to "false" to disable skip comments
474
+ # CLANCY_SKIP_COMMENTS=true
475
+
476
+ # ─── Optional: Reliable autonomous mode ───────────────────────────────────────
477
+ # Max self-healing attempts after verification failure (default: 2, range 0-5)
478
+ # CLANCY_FIX_RETRIES=2
479
+
480
+ # Per-ticket time limit in minutes (default: 30, 0 to disable)
481
+ # CLANCY_TIME_LIMIT=30
482
+
483
+ # Prevent accidental commits to the base branch (default: true)
484
+ # CLANCY_BRANCH_GUARD=true
485
+
486
+ # ─── Optional: Quiet hours ───────────────────────────────────────────────────
487
+ # Pause AFK runs during these hours (24h format). Handles overnight windows.
488
+ # CLANCY_QUIET_START=22:00
489
+ # CLANCY_QUIET_END=06:00
490
+
491
+ # ─── Optional: Desktop notifications ─────────────────────────────────────────
492
+ # Native OS notifications on ticket completion or error (default: true)
493
+ # CLANCY_DESKTOP_NOTIFY=true
494
+
495
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
496
+ # Webhook URL for Slack or Teams notifications on ticket completion
497
+ # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
498
+ ```
499
+
500
+ ### GitHub Issues
501
+
502
+ ```
503
+ # Clancy — GitHub Issues configuration
504
+ # Copy this file to .env and fill in your values.
505
+ # Never commit .env to version control.
506
+
507
+ # ─── GitHub Issues ────────────────────────────────────────────────────────────
508
+ GITHUB_TOKEN=ghp_your-personal-access-token
509
+ GITHUB_REPO=owner/repo-name
510
+
511
+ # Recommended: only pick up issues with this label.
512
+ # Without this, Clancy picks up all open issues assigned to you.
513
+ # Create the label in GitHub first, then add it to any issue you want Clancy to pick up.
514
+ # CLANCY_LABEL="clancy"
515
+
516
+ # ─── Planner Queue (optional — requires CLANCY_ROLES to include "planner") ───
517
+ # Label for backlog issues that /clancy:plan fetches from (default: needs-refinement)
518
+ # CLANCY_PLAN_LABEL="needs-refinement"
519
+
520
+ # ─── Git ──────────────────────────────────────────────────────────────────────
521
+ # Base integration branch. Clancy branches from here when an issue has no milestone.
522
+ # When an issue has a milestone, Clancy auto-creates milestone/{slug} from this branch.
523
+ CLANCY_BASE_BRANCH=main
524
+
525
+ # ─── PR creation ─────────────────────────────────────────────────────────────
526
+ # When an issue has no milestone, Clancy pushes the feature branch and creates a
527
+ # PR using your GITHUB_TOKEN above. No extra config needed for GitHub Issues users.
528
+
529
+ # ─── Loop ─────────────────────────────────────────────────────────────────────
530
+ # Max tickets to process per /clancy:autopilot session (default: 20)
531
+ MAX_ITERATIONS=20
532
+
533
+ # ─── Model ────────────────────────────────────────────────────────────────────
534
+ # Claude model used for each ticket session. Leave unset to use the default.
535
+ # Options: claude-opus-4-6 | claude-sonnet-4-6 | claude-haiku-4-5
536
+ # CLANCY_MODEL=claude-sonnet-4-6
537
+
538
+ # ─── Optional: Figma MCP ──────────────────────────────────────────────────────
539
+ # Fetch design specs from Figma when a ticket has a Figma URL in its description
540
+ # FIGMA_API_KEY=your-figma-api-key
541
+
542
+ # ─── Optional: Playwright visual checks ───────────────────────────────────────
543
+ # Run a visual check after implementing UI tickets
544
+ # PLAYWRIGHT_ENABLED=true
545
+ # PLAYWRIGHT_DEV_COMMAND="yarn dev"
546
+ # PLAYWRIGHT_DEV_PORT=5173
547
+ # PLAYWRIGHT_STORYBOOK_COMMAND="yarn storybook"
548
+ # PLAYWRIGHT_STORYBOOK_PORT=6006
549
+ # PLAYWRIGHT_STARTUP_WAIT=15
550
+
551
+ # ─── Optional: Pipeline labels ────────────────────────────────────────────────
552
+ # Labels that control ticket flow through pipeline stages.
553
+ # CLANCY_LABEL_BRIEF marks tickets that have been briefed (awaiting approval).
554
+ # CLANCY_LABEL_PLAN marks tickets that need planning.
555
+ # CLANCY_LABEL_BUILD marks tickets ready for implementation.
556
+ # Deprecated: CLANCY_LABEL (use CLANCY_LABEL_BUILD), CLANCY_PLAN_LABEL (use CLANCY_LABEL_PLAN)
557
+ # CLANCY_LABEL_BRIEF="clancy:brief"
558
+ # CLANCY_LABEL_PLAN="clancy:plan"
559
+ # CLANCY_LABEL_BUILD="clancy:build"
560
+
561
+ # ─── Optional: Rework loop ──────────────────────────────────────────────────
562
+ # PR-based rework is automatic — when a reviewer leaves inline comments or
563
+ # a conversation comment prefixed with "Rework:", Clancy picks it up on the
564
+ # next run. No configuration needed.
565
+ # CLANCY_MAX_REWORK=3 # Max rework cycles before human intervention (default: 3)
566
+
567
+ # ─── Optional: Test-Driven Development ──────────────────────────────────────
568
+ # When enabled, Clancy follows red-green-refactor for every behaviour change.
569
+ # CLANCY_TDD=true
570
+
571
+ # ─── Optional: Grill mode ───────────────────────────────────────────────────
572
+ # Controls how /clancy:brief handles clarifying questions before generating a brief.
573
+ # "interactive" (default) — asks the human. "afk" — AI-grill resolves autonomously.
574
+ # Can also be overridden per-invocation with --afk flag.
575
+ # CLANCY_MODE=interactive
576
+
577
+ # ─── Optional: Strategist ───────────────────────────────────────────────────
578
+ # Default parent epic/milestone for briefs created from text or file input
579
+ # CLANCY_BRIEF_EPIC="#42"
580
+
581
+ # Auto-set on tickets created by /clancy:brief.
582
+ # Only affects ticket creation — does not filter the implementation queue.
583
+ # CLANCY_COMPONENT="frontend"
584
+
585
+ # ─── Optional: Skip comments ──────────────────────────────────────────────
586
+ # When Clancy skips a ticket (irrelevant/infeasible), post a comment explaining why
587
+ # Set to "false" to disable skip comments
588
+ # CLANCY_SKIP_COMMENTS=true
589
+
590
+ # ─── Optional: Reliable autonomous mode ───────────────────────────────────────
591
+ # Max self-healing attempts after verification failure (default: 2, range 0-5)
592
+ # CLANCY_FIX_RETRIES=2
593
+
594
+ # Per-ticket time limit in minutes (default: 30, 0 to disable)
595
+ # CLANCY_TIME_LIMIT=30
596
+
597
+ # Prevent accidental commits to the base branch (default: true)
598
+ # CLANCY_BRANCH_GUARD=true
599
+
600
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
601
+ # Webhook URL for Slack or Teams notifications on ticket completion
602
+ # ─── Optional: Quiet hours ───────────────────────────────────────────────────
603
+ # CLANCY_QUIET_START=22:00
604
+ # CLANCY_QUIET_END=06:00
605
+
606
+ # ─── Optional: Desktop notifications ─────────────────────────────────────────
607
+ # CLANCY_DESKTOP_NOTIFY=true
608
+
609
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
610
+ # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
611
+ ```
612
+
613
+ ### Shortcut
614
+
615
+ ```
616
+ # Clancy — Shortcut configuration
617
+ # Copy this file to .env and fill in your values.
618
+ # Never commit .env to version control.
619
+
620
+ # ─── Shortcut ────────────────────────────────────────────────────────────────
621
+ SHORTCUT_API_TOKEN=your-api-token
622
+
623
+ # Optional: workflow name (default: auto-detect first workflow)
624
+ # SHORTCUT_WORKFLOW=Engineering
625
+
626
+ # ─── Git ──────────────────────────────────────────────────────────────────────
627
+ CLANCY_BASE_BRANCH=main
628
+
629
+ # ─── Loop ─────────────────────────────────────────────────────────────────────
630
+ MAX_ITERATIONS=5
631
+
632
+ # ─── Optional: Git host (PR creation) ───────────────────────────────────────
633
+ # GITHUB_TOKEN=ghp_your-token
634
+ # GITLAB_TOKEN=glpat-your-token
635
+ # BITBUCKET_USER=your-username
636
+ # BITBUCKET_TOKEN=your-app-password
637
+
638
+ # ─── Optional: Pipeline labels ────────────────────────────────────────────────
639
+ # CLANCY_LABEL_BRIEF="clancy:brief"
640
+ # CLANCY_LABEL_PLAN="clancy:plan"
641
+ # CLANCY_LABEL_BUILD="clancy:build"
642
+
643
+ # ─── Optional: Status transitions ────────────────────────────────────────────
644
+ # CLANCY_STATUS_IN_PROGRESS="In Progress"
645
+ # CLANCY_STATUS_DONE="Done"
646
+ # CLANCY_STATUS_REVIEW="In Review"
647
+
648
+ # ─── Optional: Quiet hours ───────────────────────────────────────────────────
649
+ # CLANCY_QUIET_START=22:00
650
+ # CLANCY_QUIET_END=06:00
651
+
652
+ # ─── Optional: Desktop notifications ─────────────────────────────────────────
653
+ # CLANCY_DESKTOP_NOTIFY=true
654
+
655
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
656
+ # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
657
+ ```
658
+
659
+ ### Notion
660
+
661
+ ```
662
+ # Clancy — Notion configuration
663
+ # Copy this file to .env and fill in your values.
664
+ # Never commit .env to version control.
665
+
666
+ # ─── Notion ──────────────────────────────────────────────────────────────────
667
+ NOTION_TOKEN=your-integration-token
668
+ NOTION_DATABASE_ID=your-database-id-32-char-hex
669
+
670
+ # Optional: property name overrides (defaults shown)
671
+ # CLANCY_NOTION_STATUS=Status
672
+ # CLANCY_NOTION_ASSIGNEE=Assignee
673
+
674
+ # ─── Git ──────────────────────────────────────────────────────────────────────
675
+ CLANCY_BASE_BRANCH=main
676
+
677
+ # ─── Loop ─────────────────────────────────────────────────────────────────────
678
+ MAX_ITERATIONS=5
679
+
680
+ # ─── Optional: Git host (PR creation) ───────────────────────────────────────
681
+ # GITHUB_TOKEN=ghp_your-token
682
+ # GITLAB_TOKEN=glpat-your-token
683
+ # BITBUCKET_USER=your-username
684
+ # BITBUCKET_TOKEN=your-app-password
685
+
686
+ # ─── Optional: Pipeline labels ────────────────────────────────────────────────
687
+ # CLANCY_LABEL_BRIEF="clancy:brief"
688
+ # CLANCY_LABEL_PLAN="clancy:plan"
689
+ # CLANCY_LABEL_BUILD="clancy:build"
690
+
691
+ # ─── Optional: Quiet hours ───────────────────────────────────────────────────
692
+ # CLANCY_QUIET_START=22:00
693
+ # CLANCY_QUIET_END=06:00
694
+
695
+ # ─── Optional: Desktop notifications ─────────────────────────────────────────
696
+ # CLANCY_DESKTOP_NOTIFY=true
697
+
698
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
699
+ # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
700
+ ```
701
+
702
+ ### Azure DevOps
703
+
704
+ ```
705
+ # Clancy — Azure DevOps configuration
706
+ # Copy this file to .env and fill in your values.
707
+ # Never commit .env to version control.
708
+
709
+ # ─── Azure DevOps ────────────────────────────────────────────────────────────
710
+ AZDO_ORG=your-organisation
711
+ AZDO_PROJECT=your-project
712
+ AZDO_PAT=your-personal-access-token
713
+
714
+ # ─── Git ──────────────────────────────────────────────────────────────────────
715
+ CLANCY_BASE_BRANCH=main
716
+
717
+ # ─── Loop ─────────────────────────────────────────────────────────────────────
718
+ MAX_ITERATIONS=5
719
+
720
+ # ─── Optional: Git host (PR creation) ───────────────────────────────────────
721
+ # GITHUB_TOKEN=ghp_your-token
722
+ # GITLAB_TOKEN=glpat-your-token
723
+ # BITBUCKET_USER=your-username
724
+ # BITBUCKET_TOKEN=your-app-password
725
+
726
+ # ─── Optional: Pipeline labels ────────────────────────────────────────────────
727
+ # CLANCY_LABEL_BRIEF="clancy:brief"
728
+ # CLANCY_LABEL_PLAN="clancy:plan"
729
+ # CLANCY_LABEL_BUILD="clancy:build"
730
+
731
+ # ─── Optional: Status transitions ────────────────────────────────────────────
732
+ # CLANCY_STATUS_IN_PROGRESS="Active"
733
+ # CLANCY_STATUS_DONE="Closed"
734
+ # CLANCY_STATUS_REVIEW="Resolved"
735
+
736
+ # ─── Optional: Quiet hours ───────────────────────────────────────────────────
737
+ # CLANCY_QUIET_START=22:00
738
+ # CLANCY_QUIET_END=06:00
739
+
740
+ # ─── Optional: Desktop notifications ─────────────────────────────────────────
741
+ # CLANCY_DESKTOP_NOTIFY=true
742
+
743
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
744
+ # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
745
+ ```
746
+
747
+ ### Linear
748
+
749
+ ```
750
+ # Clancy — Linear configuration
751
+ # Copy this file to .env and fill in your values.
752
+ # Never commit .env to version control.
753
+
754
+ # ─── Linear ───────────────────────────────────────────────────────────────────
755
+ LINEAR_API_KEY=lin_api_your-personal-api-key
756
+ LINEAR_TEAM_ID=your-team-uuid
757
+
758
+ # Optional: only pick up issues with this label. Recommended for mixed backlogs
759
+ # where not every issue is suitable for autonomous implementation (e.g. non-code tasks).
760
+ # Create the label in Linear first, then add it to any issue you want Clancy to pick up.
761
+ # CLANCY_LABEL=clancy
762
+
763
+ # ─── Planner Queue (optional — requires CLANCY_ROLES to include "planner") ───
764
+ # State type for issues that /clancy:plan fetches from (default: backlog)
765
+ # Valid values: backlog, unstarted, started, completed, canceled, triage
766
+ # CLANCY_PLAN_STATE_TYPE="backlog"
767
+
768
+ # ─── Git ──────────────────────────────────────────────────────────────────────
769
+ # Base integration branch. Clancy branches from here when an issue has no parent.
770
+ # When an issue has a parent, Clancy auto-creates epic/{key} from this branch.
771
+ CLANCY_BASE_BRANCH=main
772
+
773
+ # ─── Loop ─────────────────────────────────────────────────────────────────────
774
+ # Max tickets to process per /clancy:autopilot session (default: 20)
775
+ MAX_ITERATIONS=20
776
+
777
+ # ─── Model ────────────────────────────────────────────────────────────────────
778
+ # Claude model used for each ticket session. Leave unset to use the default.
779
+ # Options: claude-opus-4-6 | claude-sonnet-4-6 | claude-haiku-4-5
780
+ # CLANCY_MODEL=claude-sonnet-4-6
781
+
782
+ # ─── Optional: Figma MCP ──────────────────────────────────────────────────────
783
+ # Fetch design specs from Figma when a ticket has a Figma URL in its description
784
+ # FIGMA_API_KEY=your-figma-api-key
785
+
786
+ # ─── Optional: Playwright visual checks ───────────────────────────────────────
787
+ # Run a visual check after implementing UI tickets
788
+ # PLAYWRIGHT_ENABLED=true
789
+ # PLAYWRIGHT_DEV_COMMAND="yarn dev"
790
+ # PLAYWRIGHT_DEV_PORT=5173
791
+ # PLAYWRIGHT_STORYBOOK_COMMAND="yarn storybook"
792
+ # PLAYWRIGHT_STORYBOOK_PORT=6006
793
+ # PLAYWRIGHT_STARTUP_WAIT=15
794
+
795
+ # ─── Optional: Status transitions ────────────────────────────────────────────
796
+ # Move issues automatically when Clancy picks up or completes them.
797
+ # Set to the exact workflow state name shown in your Linear team settings.
798
+ # "Done" can be any post-implementation state (e.g. "Ready for Review", "In Review").
799
+ # CLANCY_STATUS_IN_PROGRESS="In Progress"
800
+ # CLANCY_STATUS_DONE="Done"
801
+ # CLANCY_STATUS_REVIEW="In Review" # used when creating a PR instead of merging locally
802
+
803
+ # ─── Optional: Rework loop ──────────────────────────────────────────────────
804
+ # PR-based rework is automatic — when a reviewer leaves inline comments or
805
+ # a conversation comment prefixed with "Rework:", Clancy picks it up on the
806
+ # next run. No configuration needed.
807
+ # CLANCY_MAX_REWORK=3 # Max rework cycles before human intervention (default: 3)
808
+
809
+ # ─── Optional: Test-Driven Development ──────────────────────────────────────
810
+ # When enabled, Clancy follows red-green-refactor for every behaviour change.
811
+ # CLANCY_TDD=true
812
+
813
+ # ─── Optional: Grill mode ───────────────────────────────────────────────────
814
+ # Controls how /clancy:brief handles clarifying questions before generating a brief.
815
+ # "interactive" (default) — asks the human. "afk" — AI-grill resolves autonomously.
816
+ # Can also be overridden per-invocation with --afk flag.
817
+ # CLANCY_MODE=interactive
818
+
819
+ # ─── Optional: Strategist ───────────────────────────────────────────────────
820
+ # Default parent epic for briefs created from text or file input
821
+ # CLANCY_BRIEF_EPIC="ENG-50"
822
+
823
+ # Auto-set on tickets created by /clancy:brief.
824
+ # Only affects ticket creation — does not filter the implementation queue.
825
+ # CLANCY_COMPONENT="frontend"
826
+
827
+ # ─── Optional: Git host (PR creation) ───────────────────────────────────────
828
+ # When an issue has no parent, Clancy pushes the feature branch and creates a
829
+ # pull request instead of squash-merging locally. Requires a git host token.
830
+ # GITHUB_TOKEN=ghp_your-token # if your git host is GitHub
831
+ # GITLAB_TOKEN=glpat-your-token # if your git host is GitLab
832
+ # BITBUCKET_USER=your-username # if your git host is Bitbucket
833
+ # BITBUCKET_TOKEN=your-app-password # if your git host is Bitbucket
834
+ # CLANCY_GIT_PLATFORM=gitlab # override auto-detection (github/gitlab/bitbucket)
835
+ # CLANCY_GIT_API_URL=https://gitlab.example.com/api/v4 # self-hosted git API base URL
836
+
837
+ # ─── Optional: Pipeline labels ────────────────────────────────────────────────
838
+ # Labels that control ticket flow through pipeline stages.
839
+ # CLANCY_LABEL_BRIEF marks tickets that have been briefed (awaiting approval).
840
+ # CLANCY_LABEL_PLAN marks tickets that need planning.
841
+ # CLANCY_LABEL_BUILD marks tickets ready for implementation.
842
+ # Deprecated: CLANCY_LABEL (use CLANCY_LABEL_BUILD), CLANCY_PLAN_LABEL (use CLANCY_LABEL_PLAN)
843
+ # CLANCY_LABEL_BRIEF="clancy:brief"
844
+ # CLANCY_LABEL_PLAN="clancy:plan"
845
+ # CLANCY_LABEL_BUILD="clancy:build"
846
+
847
+ # ─── Optional: Reliable autonomous mode ───────────────────────────────────────
848
+ # Max self-healing attempts after verification failure (default: 2, range 0-5)
849
+ # CLANCY_FIX_RETRIES=2
850
+
851
+ # Per-ticket time limit in minutes (default: 30, 0 to disable)
852
+ # CLANCY_TIME_LIMIT=30
853
+
854
+ # Prevent accidental commits to the base branch (default: true)
855
+ # CLANCY_BRANCH_GUARD=true
856
+
857
+ # ─── Optional: Skip comments ──────────────────────────────────────────────
858
+ # When Clancy skips a ticket (irrelevant/infeasible), post a comment explaining why
859
+ # Set to "false" to disable skip comments
860
+ # CLANCY_SKIP_COMMENTS=true
861
+
862
+ # ─── Optional: Quiet hours ───────────────────────────────────────────────────
863
+ # CLANCY_QUIET_START=22:00
864
+ # CLANCY_QUIET_END=06:00
865
+
866
+ # ─── Optional: Desktop notifications ─────────────────────────────────────────
867
+ # CLANCY_DESKTOP_NOTIFY=true
868
+
869
+ # ─── Optional: Notifications ──────────────────────────────────────────────────
870
+ # Webhook URL for Slack or Teams notifications on ticket completion
871
+ # CLANCY_NOTIFY_WEBHOOK=https://hooks.slack.com/services/your/webhook/url
872
+ ```