sedd 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 (90) hide show
  1. package/README.md +504 -0
  2. package/bin/sedd.js +6 -0
  3. package/commands/sedd.clarify.md +435 -0
  4. package/commands/sedd.dashboard.md +145 -0
  5. package/commands/sedd.implement.md +326 -0
  6. package/commands/sedd.migrate.md +249 -0
  7. package/commands/sedd.specify.md +198 -0
  8. package/commands/sedd.tasks.md +176 -0
  9. package/dist/cli/check.d.ts +6 -0
  10. package/dist/cli/check.d.ts.map +1 -0
  11. package/dist/cli/check.js +134 -0
  12. package/dist/cli/check.js.map +1 -0
  13. package/dist/cli/clarify.d.ts +2 -0
  14. package/dist/cli/clarify.d.ts.map +1 -0
  15. package/dist/cli/clarify.js +116 -0
  16. package/dist/cli/clarify.js.map +1 -0
  17. package/dist/cli/index.d.ts +8 -0
  18. package/dist/cli/index.d.ts.map +1 -0
  19. package/dist/cli/index.js +175 -0
  20. package/dist/cli/index.js.map +1 -0
  21. package/dist/cli/init.d.ts +9 -0
  22. package/dist/cli/init.d.ts.map +1 -0
  23. package/dist/cli/init.js +236 -0
  24. package/dist/cli/init.js.map +1 -0
  25. package/dist/cli/migrate.d.ts +7 -0
  26. package/dist/cli/migrate.d.ts.map +1 -0
  27. package/dist/cli/migrate.js +197 -0
  28. package/dist/cli/migrate.js.map +1 -0
  29. package/dist/cli/specify.d.ts +7 -0
  30. package/dist/cli/specify.d.ts.map +1 -0
  31. package/dist/cli/specify.js +131 -0
  32. package/dist/cli/specify.js.map +1 -0
  33. package/dist/cli/status.d.ts +6 -0
  34. package/dist/cli/status.d.ts.map +1 -0
  35. package/dist/cli/status.js +118 -0
  36. package/dist/cli/status.js.map +1 -0
  37. package/dist/cli/tasks.d.ts +7 -0
  38. package/dist/cli/tasks.d.ts.map +1 -0
  39. package/dist/cli/tasks.js +165 -0
  40. package/dist/cli/tasks.js.map +1 -0
  41. package/dist/core/changelog.d.ts +30 -0
  42. package/dist/core/changelog.d.ts.map +1 -0
  43. package/dist/core/changelog.js +97 -0
  44. package/dist/core/changelog.js.map +1 -0
  45. package/dist/core/file-splitter.d.ts +39 -0
  46. package/dist/core/file-splitter.d.ts.map +1 -0
  47. package/dist/core/file-splitter.js +162 -0
  48. package/dist/core/file-splitter.js.map +1 -0
  49. package/dist/core/migration-manager.d.ts +76 -0
  50. package/dist/core/migration-manager.d.ts.map +1 -0
  51. package/dist/core/migration-manager.js +230 -0
  52. package/dist/core/migration-manager.js.map +1 -0
  53. package/dist/core/timestamps.d.ts +17 -0
  54. package/dist/core/timestamps.d.ts.map +1 -0
  55. package/dist/core/timestamps.js +37 -0
  56. package/dist/core/timestamps.js.map +1 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +7 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/types/index.d.ts +102 -0
  62. package/dist/types/index.d.ts.map +1 -0
  63. package/dist/types/index.js +83 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/dist/utils/git.d.ts +63 -0
  66. package/dist/utils/git.d.ts.map +1 -0
  67. package/dist/utils/git.js +179 -0
  68. package/dist/utils/git.js.map +1 -0
  69. package/hooks/README.md +220 -0
  70. package/hooks/check-roadmap.js +231 -0
  71. package/hooks/check-roadmap.ps1 +343 -0
  72. package/package.json +60 -0
  73. package/scripts/bash/sedd-clarify.sh +142 -0
  74. package/scripts/bash/sedd-complete-task.sh +108 -0
  75. package/scripts/bash/sedd-specify.sh +147 -0
  76. package/scripts/powershell/sedd-clarify.ps1 +222 -0
  77. package/scripts/powershell/sedd-complete-task.ps1 +143 -0
  78. package/scripts/powershell/sedd-specify.ps1 +192 -0
  79. package/scripts/powershell/sedd-status.ps1 +153 -0
  80. package/scripts/powershell/sedd-tasks.ps1 +176 -0
  81. package/templates/changelog-template.md +6 -0
  82. package/templates/clarify-template.md +66 -0
  83. package/templates/config-template.json +20 -0
  84. package/templates/decisions-template.md +56 -0
  85. package/templates/interfaces-template.ts +131 -0
  86. package/templates/meta-template.json +12 -0
  87. package/templates/progress-template.md +61 -0
  88. package/templates/sedd.schema.json +95 -0
  89. package/templates/spec-template.md +114 -0
  90. package/templates/tasks-template.md +58 -0
@@ -0,0 +1,435 @@
1
+ # /sedd.clarify - Clarify & Generate Tasks
2
+
3
+ ## Purpose
4
+ Create a new migration with clarifications, decisions, AND tasks.
5
+
6
+ ## Trigger
7
+ User runs `/sedd.clarify`
8
+
9
+ ## Pre-flight Checks
10
+
11
+ 1. **Read sedd.config.json** to get `specsDir` (default: `.sedd`, legacy: `specs`)
12
+ ```
13
+ Read sedd.config.json → specsDir = "specs" or ".sedd"
14
+ ```
15
+
16
+ 2. **Get current branch** from git
17
+ ```
18
+ git rev-parse --abbrev-ref HEAD → "023-agent-executor"
19
+ ```
20
+
21
+ 3. **Find feature directory**
22
+ ```
23
+ {specsDir}/{branch}/ → specs/023-agent-executor/
24
+ ```
25
+
26
+ 4. **Verify spec.md exists** in feature directory (run /sedd.specify first)
27
+
28
+ 5. **Load _meta.json** from feature directory to get current state
29
+
30
+ ## CRITICAL RULES
31
+
32
+ ⚠️ **THIS COMMAND IS READ-ONLY FOR CODE**
33
+ - NEVER execute code
34
+ - NEVER create implementation files
35
+ - NEVER modify files outside specs/
36
+ - ONLY create migration folder with clarify/tasks/decisions
37
+
38
+ ⚠️ **FLEXIBLE DISCUSSION MODE - INLINE COMMANDS**
39
+ - User can freely explain, discuss, and add notes at any time
40
+ - AI listens and records everything in clarify.md
41
+ - User controls the flow with inline commands:
42
+
43
+ | Command | Aliases | Action |
44
+ |---------|---------|--------|
45
+ | `continue` | `mais`, `more`, `+` | Keep discussing, AI records notes |
46
+ | `pergunta` | `question`, `q`, `?` | AI asks next clarification question |
47
+ | `tasks` | `done`, `gerar`, `finish` | Generate tasks.md and finish |
48
+
49
+ ⚠️ **ALWAYS CREATES TASKS**
50
+ - Every clarify creates a NEW migration
51
+ - Every migration has tasks.md (generated at the end)
52
+ - Tasks reference this migration ID
53
+
54
+ ## Workflow
55
+
56
+ ### Step 1: Load Context
57
+
58
+ Read from feature root:
59
+ - spec.md
60
+ - interfaces.ts
61
+ - Previous migrations (if any)
62
+
63
+ ### Step 2: Capture Expected Outcome (NEW)
64
+
65
+ Before creating migration, ask user:
66
+ ```
67
+ What do you expect to achieve with this clarification?
68
+ (This will be used to verify task alignment)
69
+ ```
70
+
71
+ Save in `clarify.md` under `## Expected Outcome` section.
72
+
73
+ ### Step 3: Create New Migration Folder
74
+
75
+ Generate new migration folder FIRST:
76
+
77
+ ```
78
+ Migration ID: 001 (or next: 002, 003...)
79
+ Timestamp: 2026-01-11_10-30-45
80
+ Folder: 001_2026-01-11_10-30-45/
81
+ ```
82
+
83
+ Create initial structure:
84
+ ```
85
+ specs/024-feature/
86
+ └── 001_2026-01-11_10-30-45/
87
+ ├── clarify.md # Will be updated incrementally
88
+ ├── tasks.md # Created at the end
89
+ └── decisions.md # Updated after each answer
90
+ ```
91
+
92
+ Initialize clarify.md:
93
+ ```markdown
94
+ # Clarification - Migration 001
95
+
96
+ **Timestamp:** 2026-01-11 10:30:45
97
+ **Branch:** 024-feature
98
+ **Parent:** (none)
99
+
100
+ ## Expected Outcome
101
+
102
+ > User's expected outcome from this migration
103
+
104
+ [Captured from Step 2]
105
+
106
+ ---
107
+
108
+ ## Questions & Answers
109
+
110
+ ```
111
+
112
+ ### Step 4: Start Interactive Session
113
+
114
+ Present the clarification session with available commands:
115
+
116
+ ```
117
+ 📝 Clarification Session - Migration 001
118
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
119
+
120
+ Spec loaded: spec.md
121
+ Interfaces: interfaces.ts
122
+
123
+ Você pode:
124
+ • Explicar livremente o que precisa
125
+ • Adicionar notas e decisões
126
+ • Responder perguntas
127
+
128
+ Comandos disponíveis:
129
+ ┌───────────┬────────────────────────────────────┐
130
+ │ continue │ Continuar explicando (mais, +) │
131
+ │ pergunta │ AI faz próxima pergunta (q, ?) │
132
+ │ tasks │ Gerar tasks e finalizar (done) │
133
+ └───────────┴────────────────────────────────────┘
134
+
135
+ Como você quer começar?
136
+ ```
137
+
138
+ ### Step 5: Flexible Discussion Loop
139
+
140
+ The AI responds based on user input:
141
+
142
+ #### 5.1 User Explains/Discusses (Default Mode)
143
+
144
+ When user provides information (not a command):
145
+
146
+ 1. **Listen and understand** the user's explanation
147
+ 2. **Update clarify.md immediately** with notes:
148
+
149
+ ```markdown
150
+ ## Notes & Discussions
151
+
152
+ ### Note 001 - 10:30:45
153
+ **User said:**
154
+ "O sistema precisa suportar múltiplos tenants, cada um com suas próprias configurações..."
155
+
156
+ **Key Points Extracted:**
157
+ - Multi-tenant architecture required
158
+ - Per-tenant configuration
159
+ - Isolation between tenants
160
+
161
+ ---
162
+ ```
163
+
164
+ 3. **Update decisions.md** if a decision is implied:
165
+
166
+ ```markdown
167
+ ## D001-001: Multi-tenant Architecture
168
+
169
+ **Source:** User explanation (Note 001)
170
+
171
+ **Decision:**
172
+ System will support multiple tenants with isolated configurations.
173
+
174
+ **Impact:**
175
+ - Database schema needs tenant_id
176
+ - API routes need tenant context
177
+ - Auth must include tenant info
178
+
179
+ ---
180
+ ```
181
+
182
+ 4. **Acknowledge and prompt for more:**
183
+
184
+ ```
185
+ ✓ Anotado: Multi-tenant com configurações isoladas
186
+
187
+ Continue explicando ou use um comando:
188
+ • continue / mais → mais detalhes
189
+ • pergunta / ? → AI faz uma pergunta
190
+ • tasks / done → gerar tasks
191
+ ```
192
+
193
+ #### 5.2 User Says "continue" / "mais" / "more" / "+"
194
+
195
+ Keep in discussion mode:
196
+
197
+ ```
198
+ Ok, continue explicando...
199
+ ```
200
+
201
+ #### 5.3 User Says "pergunta" / "question" / "q" / "?"
202
+
203
+ AI analyzes gaps and asks ONE clarification question:
204
+
205
+ ```
206
+ ---
207
+ Q1: Tenant Isolation Level
208
+ **Impact:** High | **Area:** Architecture
209
+
210
+ Como deve ser o isolamento entre tenants?
211
+
212
+ ┌───────┬───────────────────────────────────────┐
213
+ │ Opção │ Descrição │
214
+ ├───────┼───────────────────────────────────────┤
215
+ │ A │ Logical (same DB, tenant_id filter) │
216
+ │ B │ Schema (separate schemas per tenant) │
217
+ │ C │ Physical (separate DBs per tenant) │
218
+ └───────┴───────────────────────────────────────┘
219
+
220
+ Sua resposta (ou continue explicando):
221
+ ---
222
+ ```
223
+
224
+ After user answers, update clarify.md and decisions.md immediately.
225
+
226
+ #### 5.4 User Says "tasks" / "done" / "gerar" / "finish"
227
+
228
+ Proceed to Step 6 (Generate Tasks).
229
+
230
+ ### Step 6: Generate tasks.md (After All Q&A Complete)
231
+
232
+ Based on all decisions, create tasks:
233
+
234
+ ```markdown
235
+ # Tasks - Migration 001
236
+
237
+ **Migration:** 001
238
+ **Timestamp:** 2026-01-11_10-30-45
239
+ **Parent:** (none)
240
+
241
+ ## Summary
242
+ Total: 5 | Completed: 0 | Pending: 5
243
+
244
+ ## Tasks
245
+
246
+ - [ ] T001-001 [Foundation] Create ThemeContext in `src/contexts/ThemeContext.tsx`
247
+ - [ ] T001-002 [Foundation] Add theme column to users table `prisma/schema.prisma`
248
+ - [ ] T001-003 [US1] Create ThemeToggle component `src/components/ThemeToggle.tsx`
249
+ - [ ] T001-004 [US1] Add toggle to settings page `src/pages/settings.tsx`
250
+ - [ ] T001-005 [US1] Implement theme API endpoint `src/api/user/theme.ts`
251
+
252
+ ## Dependencies
253
+
254
+ T001-001, T001-002 → T001-003 → T001-004
255
+ → T001-005
256
+ ```
257
+
258
+ ### Step 7: Expectation Alignment Check (NEW)
259
+
260
+ After generating tasks, verify alignment with expected outcome:
261
+
262
+ ```markdown
263
+ ## Expectation Alignment Check
264
+
265
+ **Your expectation:**
266
+ > [User's expected outcome from clarify.md]
267
+
268
+ **Generated tasks cover:**
269
+ - Task T001-001: Creates ThemeContext ✅
270
+ - Task T001-002: Updates database schema ✅
271
+ - Task T001-003: Creates toggle component ✅
272
+ - Task T001-004: Adds to settings page ✅
273
+ - Task T001-005: API endpoint ✅
274
+
275
+ **Alignment:** ✅ Aligned
276
+ ```
277
+
278
+ #### When Misaligned:
279
+
280
+ If tasks don't cover the expectation:
281
+
282
+ ```
283
+ ⚠️ Tasks geradas não cobrem completamente sua expectativa.
284
+
285
+ **Missing from expectation:**
286
+ - [item not covered by tasks]
287
+
288
+ Deseja prosseguir mesmo assim? [Y/n]
289
+ ```
290
+
291
+ **If user says "no"** - Return to discussion mode:
292
+ ```
293
+ Ok, vamos continuar a clarificação.
294
+
295
+ Use os comandos:
296
+ • continue - explicar mais detalhes
297
+ • pergunta - AI faz pergunta de refinamento
298
+ • tasks - tentar gerar tasks novamente
299
+ ```
300
+
301
+ ### Step 8: Update _meta.json
302
+
303
+ ```json
304
+ {
305
+ "currentMigration": "001",
306
+ "migrations": {
307
+ "001": {
308
+ "id": "001",
309
+ "timestamp": "2026-01-11_10-30-45",
310
+ "folder": "001_2026-01-11_10-30-45",
311
+ "status": "in-progress",
312
+ "tasksTotal": 5,
313
+ "tasksCompleted": 0,
314
+ "createdAt": "2026-01-11T10:30:45Z",
315
+ "expectation": "User can toggle dark mode and have it persist"
316
+ }
317
+ }
318
+ }
319
+ ```
320
+
321
+ ### Step 9: Update CHANGELOG.md
322
+
323
+ ```markdown
324
+ ## [2026-01-11] - Migration 001
325
+
326
+ - Clarified 5 requirements
327
+ - Created 5 decisions
328
+ - Generated 5 tasks
329
+ - Areas covered: Persistence, API, UI
330
+ ```
331
+
332
+ ### Step 10: Ask About Commit
333
+
334
+ ```
335
+ Migration 001 completed with 5 tasks!
336
+
337
+ Do you want to commit?
338
+ Message: "docs(024): migration 001 - clarify requirements and generate tasks"
339
+ ```
340
+
341
+ ### Step 11: Offer Next Steps
342
+
343
+ ```
344
+ What would you like to do?
345
+
346
+ 1. /sedd.clarify - Create another migration (more clarifications)
347
+ 2. /sedd.implement - Start implementing tasks
348
+ 3. /sedd.implement 001 - Implement only this migration
349
+ ```
350
+
351
+ ## Task ID Format
352
+
353
+ Tasks are prefixed with migration ID:
354
+
355
+ ```
356
+ T001-001 = Migration 001, Task 1
357
+ T001-002 = Migration 001, Task 2
358
+ T002-001 = Migration 002, Task 1
359
+ ```
360
+
361
+ ## Running Multiple Times
362
+
363
+ Each `/sedd.clarify` creates a NEW migration:
364
+
365
+ ```
366
+ 1st run: 001_2026-01-11_10-30-45/
367
+ 2nd run: 002_2026-01-11_14-15-30/
368
+ 3rd run: 003_2026-01-12_09-00-00/
369
+ ```
370
+
371
+ Parent references allow tracking the evolution:
372
+ - 002.parent = 001
373
+ - 003.parent = 002
374
+
375
+ ## Rules
376
+
377
+ - **NEVER EXECUTE CODE** - Design phase only
378
+ - **FLEXIBLE DISCUSSION** - User controls the flow with inline commands
379
+ - **UPDATE FILES IMMEDIATELY** - After each user input
380
+ - **RECOGNIZE INLINE COMMANDS:**
381
+ - `continue`, `mais`, `more`, `+` → Keep discussing
382
+ - `pergunta`, `question`, `q`, `?` → AI asks next question
383
+ - `tasks`, `done`, `gerar`, `finish` → Generate tasks and end
384
+ - ALWAYS generate tasks.md when user says "tasks/done"
385
+ - Task IDs include migration ID (T001-XXX)
386
+ - Each clarify = new migration folder
387
+ - Auto-split files > 400 lines
388
+
389
+ ## Flow Summary
390
+
391
+ ```
392
+ ┌─────────────────────────────────────────────────────────────┐
393
+ │ User runs /sedd.clarify │
394
+ │ → AI creates migration folder │
395
+ │ → AI shows available commands │
396
+ └─────────────────────────────────────────────────────────────┘
397
+
398
+ ┌─────────────────────────────────────────────────────────────┐
399
+ │ DISCUSSION LOOP │
400
+ │ │
401
+ │ User explains → AI records in clarify.md + decisions.md │
402
+ │ ↓ │
403
+ │ "continue" → AI: "Ok, continue..." │
404
+ │ "pergunta" → AI asks ONE question │
405
+ │ "tasks" → Exit loop, generate tasks │
406
+ └─────────────────────────────────────────────────────────────┘
407
+
408
+ ┌─────────────────────────────────────────────────────────────┐
409
+ │ User says "tasks" / "done" │
410
+ │ → AI generates tasks.md from all notes + decisions │
411
+ │ → AI updates _meta.json │
412
+ │ → AI asks about commit │
413
+ │ → AI offers next steps │
414
+ └─────────────────────────────────────────────────────────────┘
415
+ ```
416
+
417
+ ## CLI Alternative
418
+
419
+ For automated workflows, use the SEDD CLI:
420
+
421
+ ```bash
422
+ # Create new migration (creates clarify.md, tasks.md, decisions.md)
423
+ sedd clarify
424
+
425
+ # Add tasks to current migration
426
+ sedd tasks '[{"story":"US1","description":"Task description"}]'
427
+
428
+ # Mark task complete
429
+ sedd complete T001-001
430
+
431
+ # Check status
432
+ sedd status
433
+ ```
434
+
435
+ Scripts also available in `.sedd/scripts/powershell/` and `.sedd/scripts/bash/`.
@@ -0,0 +1,145 @@
1
+ # /sedd.dashboard - Interactive TUI Dashboard
2
+
3
+ ## Purpose
4
+ Open an interactive terminal dashboard to manage specs, migrations, and tasks with keyboard navigation.
5
+
6
+ ## Trigger
7
+ - `/sedd.dashboard` or `sedd dashboard` - Open full dashboard
8
+ - `/sedd.dashboard -m 001` - Focus on specific migration
9
+
10
+ ## Features
11
+
12
+ ### Visual Layout
13
+
14
+ ```
15
+ +------------------------------------------------------------------+
16
+ | SEDD Dashboard | Branch: 024-feature-name | Migration: 001 |
17
+ +---------------------+--------------------------------------------+
18
+ | MIGRATIONS | TASKS (3/5 completed) |
19
+ | ----------------- | ------------------------------------------ |
20
+ | > 001 [in-progress] | [x] T001-001 Create ThemeContext |
21
+ | 002 [pending] | [x] T001-002 Update database schema |
22
+ | 003 [pending] | [ ] T001-003 Create toggle component < |
23
+ | | [ ] T001-004 Add to settings page |
24
+ | | [ ] T001-005 API endpoint |
25
+ +---------------------+--------------------------------------------+
26
+ | PREVIEW: clarify.md |
27
+ | ---------------------------------------------------------------- |
28
+ | ## Expected Outcome |
29
+ | > User can toggle dark mode and have it persist |
30
+ | |
31
+ | ## Questions & Answers |
32
+ | ### Q1: Where to store preference? |
33
+ | **Answer:** In user account database... |
34
+ +------------------------------------------------------------------+
35
+ | [================== ] 60% (3/5 tasks) [?] Help | [q] Quit |
36
+ +------------------------------------------------------------------+
37
+ ```
38
+
39
+ ### Keyboard Shortcuts
40
+
41
+ | Key | Action |
42
+ |-----|--------|
43
+ | `j/k` or `arrows` | Navigate up/down |
44
+ | `Tab` | Switch panel (migrations → tasks → preview) |
45
+ | `Enter` | Select migration / Focus task |
46
+ | `Space` | Toggle task completion |
47
+ | `e` | Edit selected file in $EDITOR |
48
+ | `r` | Refresh data |
49
+ | `1-4` | Switch preview file (1=spec, 2=clarify, 3=tasks, 4=decisions) |
50
+ | `?` | Toggle help overlay |
51
+ | `q` | Quit dashboard |
52
+
53
+ ### Panels
54
+
55
+ 1. **Migrations Panel** - Left sidebar showing all migrations
56
+ - Status indicators: `>` in-progress, `*` completed, ` ` pending
57
+ - Navigate and select to filter tasks
58
+
59
+ 2. **Tasks Panel** - Center area showing tasks
60
+ - Filtered by selected migration
61
+ - Toggle completion with Space
62
+ - Progress counter
63
+
64
+ 3. **Preview Panel** - Right area showing file content
65
+ - Markdown syntax highlighting
66
+ - Switch between spec.md, clarify.md, tasks.md, decisions.md
67
+
68
+ ### Status Bar
69
+
70
+ Shows overall progress with:
71
+ - Progress bar visualization
72
+ - Percentage complete
73
+ - Task count
74
+ - Quick help hints
75
+
76
+ ## CLI Usage
77
+
78
+ ```bash
79
+ # Open dashboard
80
+ sedd dashboard
81
+
82
+ # Short alias
83
+ sedd d
84
+
85
+ # Focus on specific migration
86
+ sedd dashboard -m 001
87
+ sedd d -m 002
88
+ ```
89
+
90
+ ## Requirements
91
+
92
+ - Must be on a feature branch (###-feature-name)
93
+ - Feature must have _meta.json (run /sedd.specify first)
94
+ - Terminal must support ANSI colors
95
+
96
+ ## Dependencies
97
+
98
+ The dashboard uses:
99
+ - **Ink** - React for CLIs
100
+ - **ink-spinner** - Loading indicators
101
+ - **React** - Component architecture
102
+
103
+ Install with:
104
+ ```bash
105
+ npm install
106
+ ```
107
+
108
+ ## File Editing
109
+
110
+ When pressing `e`, the dashboard:
111
+ 1. Pauses rendering
112
+ 2. Opens file in `$EDITOR` (defaults to vim)
113
+ 3. After saving and closing, refreshes data
114
+
115
+ Supported editors:
116
+ - vim/nvim
117
+ - nano
118
+ - code (VS Code)
119
+ - Any editor in $EDITOR env var
120
+
121
+ ## Task Toggle
122
+
123
+ Pressing `Space` on a task:
124
+ 1. Reads tasks.md file
125
+ 2. Toggles `[ ]` ↔ `[x]`
126
+ 3. Writes back to file
127
+ 4. Refreshes display
128
+
129
+ Changes are persisted immediately to the filesystem.
130
+
131
+ ## Rules
132
+
133
+ - Dashboard is READ-ONLY for code files
134
+ - Only modifies task checkboxes in tasks.md
135
+ - Never executes code
136
+ - Safe to use during implementation
137
+
138
+ ## Error States
139
+
140
+ | Error | Solution |
141
+ |-------|----------|
142
+ | "Not on a feature branch" | Checkout a feature branch (###-name) |
143
+ | "Feature directory not found" | Run /sedd.specify first |
144
+ | "_meta.json not found" | Initialize feature with /sedd.specify |
145
+ | "TUI dependencies not installed" | Run `npm install` in packages/sedd |