@mandors/cli 0.3.10 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +282 -610
- package/binaries/darwin-arm64/mandor +0 -0
- package/binaries/darwin-arm64.tar.gz +0 -0
- package/binaries/linux-arm64/mandor +0 -0
- package/binaries/linux-arm64.tar.gz +0 -0
- package/mandor-cli +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,9 +60,9 @@ Workspace
|
|
|
60
60
|
|
|
61
61
|
| Type | Purpose | Status Values |
|
|
62
62
|
|------|---------|---------------|
|
|
63
|
-
| **Task** | Work items within a feature | ready, in_progress, done, blocked, cancelled |
|
|
63
|
+
| **Task** | Work items within a feature | pending, ready, in_progress, done, blocked, cancelled |
|
|
64
64
|
| **Feature** | Logical grouping of related tasks | draft, active, done, blocked, cancelled |
|
|
65
|
-
| **Issue** | Problems, bugs, or improvement requests | ready, in_progress, resolved, wontfix, blocked |
|
|
65
|
+
| **Issue** | Problems, bugs, or improvement requests | open, ready, in_progress, resolved, wontfix, blocked, cancelled |
|
|
66
66
|
|
|
67
67
|
### Dependency Types
|
|
68
68
|
|
|
@@ -74,9 +74,8 @@ Workspace
|
|
|
74
74
|
|
|
75
75
|
**Tasks:**
|
|
76
76
|
```
|
|
77
|
-
ready → in_progress → done
|
|
78
|
-
ready → blocked
|
|
79
|
-
blocked → ready (dependencies resolved)
|
|
77
|
+
pending → ready → in_progress → done
|
|
78
|
+
pending → ready → blocked → ready
|
|
80
79
|
ready → cancelled
|
|
81
80
|
cancelled → ready (reopen)
|
|
82
81
|
```
|
|
@@ -91,12 +90,13 @@ cancelled → draft (reopen)
|
|
|
91
90
|
|
|
92
91
|
**Issues:**
|
|
93
92
|
```
|
|
94
|
-
ready → in_progress → resolved
|
|
95
|
-
ready → in_progress → wontfix
|
|
96
|
-
ready → blocked
|
|
97
|
-
blocked → ready (dependencies resolved)
|
|
93
|
+
open → ready → in_progress → resolved
|
|
94
|
+
open → ready → in_progress → wontfix
|
|
95
|
+
open → ready → blocked → ready
|
|
98
96
|
resolved → ready (reopen)
|
|
99
97
|
wontfix → ready (reopen)
|
|
98
|
+
open → cancelled
|
|
99
|
+
cancelled → open (reopen)
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
---
|
|
@@ -106,15 +106,22 @@ wontfix → ready (reopen)
|
|
|
106
106
|
### Build from Source
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
git clone https://github.com/
|
|
109
|
+
git clone https://github.com/sanxzy/mandor.git
|
|
110
110
|
cd mandor
|
|
111
|
-
go build -o ./
|
|
111
|
+
go build -o ./mandor ./cmd/mandor
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
### Use from Binaries
|
|
115
115
|
|
|
116
116
|
```bash
|
|
117
|
-
./
|
|
117
|
+
./mandor --help
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Install from npm
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
npm install -g @mandors/cli
|
|
124
|
+
mandor --help
|
|
118
125
|
```
|
|
119
126
|
|
|
120
127
|
---
|
|
@@ -146,7 +153,7 @@ mandor feature create "Authentication" --project api \
|
|
|
146
153
|
|
|
147
154
|
```bash
|
|
148
155
|
# Create first task (no dependencies)
|
|
149
|
-
mandor task create api-feature-xxx
|
|
156
|
+
mandor task create "JWT Parser" --feature api-feature-xxx \
|
|
150
157
|
--goal "Parse and validate JWT tokens in incoming requests with expiry and signature verification" \
|
|
151
158
|
--implementation-steps "Setup crypto library|Add token validation|Handle expiry|Return errors" \
|
|
152
159
|
--test-cases "Valid token accepted|Expired token rejected|Invalid signature rejected" \
|
|
@@ -155,7 +162,7 @@ mandor task create api-feature-xxx "JWT Parser" \
|
|
|
155
162
|
--priority P1
|
|
156
163
|
|
|
157
164
|
# Create dependent task (depends on JWT Parser)
|
|
158
|
-
mandor task create api-feature-xxx
|
|
165
|
+
mandor task create "Login Endpoint" --feature api-feature-xxx \
|
|
159
166
|
--goal "Accept user credentials and return JWT token with refresh token flow" \
|
|
160
167
|
--implementation-steps "Setup endpoint|Validate credentials|Generate JWT|Return tokens" \
|
|
161
168
|
--test-cases "Valid creds return token|Invalid creds rejected|Tokens properly formatted" \
|
|
@@ -169,16 +176,13 @@ mandor task create api-feature-xxx "Login Endpoint" \
|
|
|
169
176
|
|
|
170
177
|
```bash
|
|
171
178
|
# See all tasks in feature
|
|
172
|
-
mandor task list api-feature-xxx
|
|
179
|
+
mandor task list --feature api-feature-xxx
|
|
173
180
|
|
|
174
181
|
# See tasks ready to work on
|
|
175
|
-
mandor task ready api-feature-xxx
|
|
182
|
+
mandor task ready --feature api-feature-xxx
|
|
176
183
|
|
|
177
184
|
# See blocked/waiting tasks
|
|
178
|
-
mandor task blocked api-feature-xxx
|
|
179
|
-
|
|
180
|
-
# See summary grouped by status
|
|
181
|
-
mandor task summary api-feature-xxx
|
|
185
|
+
mandor task blocked --feature api-feature-xxx
|
|
182
186
|
```
|
|
183
187
|
|
|
184
188
|
### 6. Mark Tasks Complete
|
|
@@ -189,7 +193,7 @@ mandor task update <task-id> --status in_progress
|
|
|
189
193
|
mandor task update <task-id> --status done
|
|
190
194
|
|
|
191
195
|
# Dependent tasks auto-transition to "ready"
|
|
192
|
-
mandor task ready api-feature-xxx # Now shows "Login Endpoint" as ready
|
|
196
|
+
mandor task ready --feature api-feature-xxx # Now shows "Login Endpoint" as ready
|
|
193
197
|
```
|
|
194
198
|
|
|
195
199
|
---
|
|
@@ -200,626 +204,274 @@ mandor task ready api-feature-xxx # Now shows "Login Endpoint" as ready
|
|
|
200
204
|
|
|
201
205
|
```bash
|
|
202
206
|
# Initialize a new workspace
|
|
203
|
-
mandor init --workspace-name
|
|
207
|
+
mandor init [--workspace-name <name>] [-y]
|
|
204
208
|
|
|
205
|
-
# View workspace status
|
|
206
|
-
mandor status
|
|
209
|
+
# View workspace and project status
|
|
210
|
+
mandor status [--project <id>] [--summary] [--json]
|
|
211
|
+
|
|
212
|
+
# Display feature summary grouped by priority
|
|
213
|
+
mandor summary [--project <id>]
|
|
207
214
|
|
|
208
215
|
# Manage configuration
|
|
209
216
|
mandor config get <key>
|
|
210
217
|
mandor config set <key> <value>
|
|
218
|
+
mandor config list
|
|
211
219
|
mandor config reset <key>
|
|
220
|
+
|
|
221
|
+
# Display all commands and best practices
|
|
222
|
+
mandor populate [--markdown|--json]
|
|
223
|
+
|
|
224
|
+
# Show version
|
|
225
|
+
mandor version
|
|
226
|
+
|
|
227
|
+
# Generate shell completions
|
|
228
|
+
mandor completion [bash|zsh|fish]
|
|
212
229
|
```
|
|
213
230
|
|
|
214
231
|
### Project Commands
|
|
215
232
|
|
|
216
233
|
```bash
|
|
217
234
|
# Create a project
|
|
218
|
-
mandor project create <id> --name
|
|
235
|
+
mandor project create <id> --name <name> --goal <goal> [OPTIONS]
|
|
219
236
|
|
|
220
237
|
# List projects
|
|
221
|
-
mandor project list
|
|
238
|
+
mandor project list [--json]
|
|
222
239
|
|
|
223
240
|
# Show project details
|
|
224
241
|
mandor project detail <project-id>
|
|
225
242
|
|
|
226
|
-
#
|
|
227
|
-
mandor project
|
|
243
|
+
# Update project
|
|
244
|
+
mandor project update <project-id> --name <name> [--goal <goal>]
|
|
245
|
+
|
|
246
|
+
# Delete project (soft delete)
|
|
247
|
+
mandor project delete <project-id> [--hard]
|
|
248
|
+
|
|
249
|
+
# Reopen a soft-deleted project
|
|
250
|
+
mandor project reopen <project-id>
|
|
228
251
|
```
|
|
229
252
|
|
|
230
253
|
### Feature Commands
|
|
231
254
|
|
|
232
255
|
```bash
|
|
233
256
|
# Create a feature
|
|
234
|
-
mandor feature create
|
|
257
|
+
mandor feature create <name> --project <id> --goal <goal> [--scope <scope>] [--priority <priority>] [--depends <ids>]
|
|
235
258
|
|
|
236
259
|
# List features
|
|
237
|
-
mandor feature list --project <id> [--
|
|
260
|
+
mandor feature list --project <id> [--json] [--include-deleted]
|
|
238
261
|
|
|
239
262
|
# Show feature details
|
|
240
|
-
mandor feature detail <feature-id> --project <id>
|
|
263
|
+
mandor feature detail <feature-id> --project <id>
|
|
241
264
|
|
|
242
265
|
# Update feature
|
|
243
|
-
mandor feature update <id> --project <id> [--status <
|
|
266
|
+
mandor feature update <feature-id> --project <id> [--name <text>] [--goal <goal>] [--scope <scope>] [--priority <priority>] [--status <status>] [--depends <ids>] [--cancel --reason <text>] [--reopen] [--dry-run]
|
|
244
267
|
|
|
245
|
-
#
|
|
246
|
-
mandor feature
|
|
268
|
+
# List features by status filter
|
|
269
|
+
mandor feature list --project <id> [--status <status>]
|
|
247
270
|
```
|
|
248
271
|
|
|
249
272
|
### Task Commands
|
|
250
273
|
|
|
251
274
|
```bash
|
|
252
|
-
# Create a task
|
|
253
|
-
mandor task create <
|
|
254
|
-
--
|
|
255
|
-
--
|
|
256
|
-
--
|
|
257
|
-
--derivable-files "file1.go|file2.go" \
|
|
258
|
-
--library-needs "lib1|lib2" \
|
|
259
|
-
[--priority <P0-P5>] \
|
|
260
|
-
[--depends-on <task-id>]
|
|
261
|
-
|
|
262
|
-
# List tasks in a feature (positional argument: feature_id)
|
|
263
|
-
mandor task list <feature_id> [--status <value>] [--priority <value>] [--json]
|
|
275
|
+
# Create a task
|
|
276
|
+
mandor task create <name> --feature <id> --goal <goal> \
|
|
277
|
+
--implementation-steps <steps> --test-cases <cases> \
|
|
278
|
+
--derivable-files <files> --library-needs <libs> \
|
|
279
|
+
[--priority <priority>] [--depends-on <ids>] [-y]
|
|
264
280
|
|
|
265
|
-
#
|
|
266
|
-
mandor task
|
|
281
|
+
# List tasks in a feature
|
|
282
|
+
mandor task list --feature <id> [--status <status>] [--priority <priority>] [--json] [--include-deleted] [--sort <field>] [--order <asc|desc>]
|
|
267
283
|
|
|
268
|
-
# Show
|
|
269
|
-
mandor task
|
|
284
|
+
# Show ready tasks
|
|
285
|
+
mandor task ready --feature <id> [--priority <priority>] [--json]
|
|
270
286
|
|
|
271
|
-
# Show
|
|
272
|
-
mandor task
|
|
287
|
+
# Show blocked tasks
|
|
288
|
+
mandor task blocked --feature <id> [--priority <priority>] [--json]
|
|
273
289
|
|
|
274
290
|
# Show task details
|
|
275
|
-
mandor task detail <task-id>
|
|
291
|
+
mandor task detail <task-id>
|
|
276
292
|
|
|
277
|
-
# Update task
|
|
278
|
-
mandor task update <id> --
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
# Mark task complete (auto-unblocks dependents)
|
|
284
|
-
mandor task update <id> --status done
|
|
285
|
-
|
|
286
|
-
# Block task manually (external dependency)
|
|
287
|
-
mandor task update <id> --status blocked --reason "Waiting on API response"
|
|
288
|
-
|
|
289
|
-
# Cancel task
|
|
290
|
-
mandor task update <id> --cancel --reason "Superseded by feature X"
|
|
291
|
-
|
|
292
|
-
# Reopen cancelled task
|
|
293
|
-
mandor task update <id> --reopen
|
|
293
|
+
# Update task
|
|
294
|
+
mandor task update <task-id> [--name <text>] [--goal <goal>] [--priority <priority>] \
|
|
295
|
+
[--implementation-steps <steps>] [--test-cases <cases>] [--derivable-files <files>] \
|
|
296
|
+
[--library-needs <libs>] [--status <status>] [--depends <ids>] [--depends-add <ids>] \
|
|
297
|
+
[--depends-remove <ids>] [--cancel --reason <text>] [--reopen] [--dry-run] [--force]
|
|
294
298
|
```
|
|
295
299
|
|
|
296
300
|
### Issue Commands
|
|
297
301
|
|
|
298
302
|
```bash
|
|
299
303
|
# Create an issue
|
|
300
|
-
mandor issue create <
|
|
301
|
-
--
|
|
302
|
-
--
|
|
303
|
-
--
|
|
304
|
-
--affected-tests "test1|test2" \
|
|
305
|
-
--implementation-steps "step1|step2" \
|
|
306
|
-
[--priority <P0-P5>] \
|
|
307
|
-
[--depends-on <issue-id>]
|
|
308
|
-
|
|
309
|
-
# List issues in a project
|
|
310
|
-
mandor issue list <project_id> [--status <value>] [--type <value>] [--json]
|
|
304
|
+
mandor issue create <name> --project <id> --type <type> --goal <goal> \
|
|
305
|
+
--affected-files <files> --affected-tests <tests> \
|
|
306
|
+
--implementation-steps <steps> \
|
|
307
|
+
[--priority <priority>] [--depends-on <ids>] [--library-needs <libs>] [-y]
|
|
311
308
|
|
|
312
|
-
#
|
|
313
|
-
mandor issue
|
|
309
|
+
# List issues in project
|
|
310
|
+
mandor issue list [--project <id>] [--type <type>] [--status <status>] [--priority <priority>] [--json] [--sort <field>] [--order <asc|desc>] [--verbose]
|
|
314
311
|
|
|
315
|
-
# Show
|
|
316
|
-
mandor issue
|
|
312
|
+
# Show ready issues
|
|
313
|
+
mandor issue ready [--project <id>] [--type <type>] [--priority <priority>] [--json]
|
|
317
314
|
|
|
318
|
-
# Show
|
|
319
|
-
mandor issue
|
|
315
|
+
# Show blocked issues
|
|
316
|
+
mandor issue blocked [--project <id>] [--type <type>] [--priority <priority>] [--json]
|
|
320
317
|
|
|
321
318
|
# Show issue details
|
|
322
|
-
mandor issue detail <issue-id> [--
|
|
323
|
-
|
|
324
|
-
# Update issue status
|
|
325
|
-
mandor issue update <id> --status <value>
|
|
319
|
+
mandor issue detail <issue-id> [--project <id>]
|
|
326
320
|
|
|
327
|
-
#
|
|
328
|
-
mandor issue update <id> --
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
# Mark issue as won't fix
|
|
334
|
-
mandor issue update <id> --wontfix --reason "Working as intended"
|
|
335
|
-
|
|
336
|
-
# Reopen a resolved/wontfix issue
|
|
337
|
-
mandor issue update <id> --reopen
|
|
338
|
-
|
|
339
|
-
# Block issue manually
|
|
340
|
-
mandor issue update <id> --status blocked --reason "Waiting on infrastructure"
|
|
341
|
-
|
|
342
|
-
# Cancel issue (duplicate/no longer relevant)
|
|
343
|
-
mandor issue update <id> --cancel --reason "Duplicate of issue #123"
|
|
321
|
+
# Update issue
|
|
322
|
+
mandor issue update <issue-id> [--project <id>] [--name <text>] [--goal <goal>] [--type <type>] [--priority <priority>] \
|
|
323
|
+
[--status <status>] [--reason <text>] [--depends-on <ids>] [--depends-add <ids>] [--depends-remove <ids>] \
|
|
324
|
+
[--affected-files <files>] [--affected-tests <tests>] [--implementation-steps <steps>] [--library-needs <libs>] \
|
|
325
|
+
[--start] [--resolve] [--wontfix] [--reopen] [--cancel] [--force] [--dry-run]
|
|
344
326
|
```
|
|
345
327
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
## Configuration
|
|
349
|
-
|
|
350
|
-
### Available Config Keys
|
|
328
|
+
### AI Commands
|
|
351
329
|
|
|
352
330
|
```bash
|
|
353
|
-
#
|
|
354
|
-
mandor
|
|
355
|
-
|
|
356
|
-
# Strict mode for dependency rules
|
|
357
|
-
mandor config set strict_mode true
|
|
331
|
+
# Generate AGENTS.md for multi-agent coordination
|
|
332
|
+
mandor ai agents
|
|
358
333
|
|
|
359
|
-
#
|
|
360
|
-
mandor
|
|
361
|
-
mandor config get strict_mode
|
|
362
|
-
|
|
363
|
-
# Reset to defaults
|
|
364
|
-
mandor config reset default_priority
|
|
334
|
+
# Generate CLAUDE.md for the project
|
|
335
|
+
mandor ai claude
|
|
365
336
|
```
|
|
366
337
|
|
|
367
|
-
### Priority Values
|
|
368
|
-
|
|
369
|
-
| Priority | Use Case |
|
|
370
|
-
|----------|----------|
|
|
371
|
-
| P0 | Critical / Security |
|
|
372
|
-
| P1 | High / Blocker |
|
|
373
|
-
| P2 | Medium-High |
|
|
374
|
-
| P3 | Medium (default) |
|
|
375
|
-
| P4 | Medium-Low |
|
|
376
|
-
| P5 | Low / Nice to have |
|
|
377
|
-
|
|
378
|
-
### Scope Values
|
|
379
|
-
|
|
380
|
-
Valid scope values for features: `frontend`, `backend`, `fullstack`, `cli`, `desktop`, `android`, `flutter`, `react-native`, `ios`, `swift`
|
|
381
|
-
|
|
382
|
-
### Issue Types
|
|
383
|
-
|
|
384
|
-
Valid issue types: `bug`, `improvement`, `debt`, `security`, `performance`
|
|
385
|
-
|
|
386
338
|
---
|
|
387
339
|
|
|
388
|
-
##
|
|
389
|
-
|
|
390
|
-
### Creating Dependencies
|
|
391
|
-
|
|
392
|
-
```bash
|
|
393
|
-
# Task depends on another task
|
|
394
|
-
mandor task create "Task B" --feature f1 \
|
|
395
|
-
--depends-on task-a-id
|
|
396
|
-
|
|
397
|
-
# Issue depends on another issue
|
|
398
|
-
mandor issue create "Issue B" --project p1 \
|
|
399
|
-
--depends-on issue-a-id
|
|
400
|
-
|
|
401
|
-
# Feature depends on another feature
|
|
402
|
-
mandor feature create "Feature B" --project p1 \
|
|
403
|
-
--depends-on feature-a-id
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
### Managing Dependencies
|
|
407
|
-
|
|
408
|
-
```bash
|
|
409
|
-
# Add dependencies
|
|
410
|
-
mandor task update <task-id> --depends-add "id1|id2"
|
|
411
|
-
|
|
412
|
-
# Replace all dependencies
|
|
413
|
-
mandor task update <task-id> --depends "id1|id2"
|
|
414
|
-
|
|
415
|
-
# Remove dependencies
|
|
416
|
-
mandor task update <task-id> --depends-remove "id1"
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
### Dependency Behaviors
|
|
420
|
-
|
|
421
|
-
- **Auto-blocking**: Entities start `blocked` if dependencies aren't `done`
|
|
422
|
-
- **Auto-unblocking**: When a dependency becomes `done`, dependents automatically transition to `ready`
|
|
423
|
-
- **Cross-project**: Dependencies can span projects if enabled in project config
|
|
340
|
+
## Common Workflows
|
|
424
341
|
|
|
425
|
-
###
|
|
342
|
+
### Replace This (Markdown Plan Files)
|
|
426
343
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
# Restrict to same-project only (default)
|
|
434
|
-
mandor project create p2 --task-dep same_project_only
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
### Circular Dependency Prevention
|
|
438
|
-
|
|
439
|
-
Mandor automatically prevents:
|
|
440
|
-
- Self-dependencies (A → A)
|
|
441
|
-
- Two-node cycles (A → B → A)
|
|
442
|
-
- N-node cycles (A → B → C → A)
|
|
443
|
-
- Cross-project cycles
|
|
444
|
-
|
|
445
|
-
---
|
|
446
|
-
|
|
447
|
-
## Status Management
|
|
448
|
-
|
|
449
|
-
### Checking Status
|
|
450
|
-
|
|
451
|
-
```bash
|
|
452
|
-
# List blocked tasks
|
|
453
|
-
mandor task list --feature <id> --status blocked
|
|
454
|
-
|
|
455
|
-
# List ready tasks
|
|
456
|
-
mandor task list --feature <id> --status ready
|
|
457
|
-
|
|
458
|
-
# List all tasks
|
|
459
|
-
mandor task list --feature <id>
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
### Transitioning Status
|
|
463
|
-
|
|
464
|
-
```bash
|
|
465
|
-
# Task workflow
|
|
466
|
-
mandor task update <id> --status in_progress
|
|
467
|
-
mandor task update <id> --status done
|
|
468
|
-
|
|
469
|
-
# Feature workflow
|
|
470
|
-
mandor feature update <id> --project <pid> --status active
|
|
471
|
-
mandor feature update <id> --project <pid> --status done
|
|
472
|
-
|
|
473
|
-
# Issue workflow
|
|
474
|
-
mandor issue update <id> --start
|
|
475
|
-
mandor issue update <id> --resolve
|
|
476
|
-
# or
|
|
477
|
-
mandor issue update <id> --wontfix --reason "Reason"
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
### Cancel and Reopen
|
|
481
|
-
|
|
482
|
-
```bash
|
|
483
|
-
# Cancel (soft delete)
|
|
484
|
-
mandor task update <id> --cancel --reason "Why cancelled"
|
|
485
|
-
mandor feature update <id> --project <pid> --cancel --reason "Why cancelled"
|
|
486
|
-
mandor issue update <id> --wontfix --reason "Why wontfix"
|
|
487
|
-
|
|
488
|
-
# Reopen
|
|
489
|
-
mandor task update <id> --reopen
|
|
490
|
-
mandor feature update <id> --project <pid> --reopen
|
|
491
|
-
mandor issue update <id> --reopen
|
|
492
|
-
```
|
|
493
|
-
|
|
494
|
-
**Note**: Cancelled entities can be viewed with `--include-deleted` flag.
|
|
495
|
-
|
|
496
|
-
---
|
|
497
|
-
|
|
498
|
-
## Filtering and Querying
|
|
499
|
-
|
|
500
|
-
### Filter by Status
|
|
344
|
+
```markdown
|
|
345
|
+
# PLAN.md
|
|
346
|
+
## Phase 1: Authentication
|
|
347
|
+
- [ ] JWT parser (depends on cryptography)
|
|
348
|
+
- [ ] Login endpoint (depends on JWT parser)
|
|
349
|
+
- [ ] Refresh token (depends on JWT parser)
|
|
501
350
|
|
|
502
|
-
|
|
503
|
-
mandor task list --feature <id> --status ready
|
|
504
|
-
mandor task list --feature <id> --status blocked
|
|
505
|
-
mandor task list --feature <id> --status done
|
|
351
|
+
Status: Last updated 3 days ago (probably stale!)
|
|
506
352
|
```
|
|
507
353
|
|
|
508
|
-
###
|
|
354
|
+
### With This (Mandor)
|
|
509
355
|
|
|
510
356
|
```bash
|
|
511
|
-
|
|
512
|
-
mandor
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
### Filter by Scope (Features)
|
|
357
|
+
# Create structured plan
|
|
358
|
+
mandor feature create "Authentication" --project api \
|
|
359
|
+
--goal "Implement JWT and login endpoints" \
|
|
360
|
+
--scope backend
|
|
516
361
|
|
|
517
|
-
|
|
518
|
-
mandor
|
|
519
|
-
|
|
520
|
-
|
|
362
|
+
# Create tasks with explicit dependencies
|
|
363
|
+
mandor task create "JWT Parser" --feature auth-feature-id \
|
|
364
|
+
--goal "Validate JWT tokens..." \
|
|
365
|
+
--implementation-steps "Step 1|Step 2" \
|
|
366
|
+
--test-cases "Test invalid tokens|Test expired" \
|
|
367
|
+
--derivable-files "jwt.go|jwt_test.go" \
|
|
368
|
+
--library-needs "jsonwebtoken" \
|
|
369
|
+
--priority P1
|
|
521
370
|
|
|
522
|
-
|
|
371
|
+
mandor task create "Login Endpoint" --feature auth-feature-id \
|
|
372
|
+
--goal "Accept credentials and return JWT..." \
|
|
373
|
+
--depends-on jwt-parser-task-id \
|
|
374
|
+
--priority P1
|
|
523
375
|
|
|
524
|
-
|
|
525
|
-
mandor
|
|
526
|
-
mandor
|
|
376
|
+
# Real-time progress queries
|
|
377
|
+
mandor task ready --feature auth-feature-id # See what's available now
|
|
378
|
+
mandor task blocked --feature auth-feature-id # See what's waiting
|
|
527
379
|
```
|
|
528
380
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
### Event Types
|
|
538
|
-
|
|
539
|
-
| Event | Description |
|
|
540
|
-
|-------|-------------|
|
|
541
|
-
| entity_created | New entity created |
|
|
542
|
-
| status_changed | Status transitioned |
|
|
543
|
-
| dependency_added | Dependency added |
|
|
544
|
-
| dependency_removed | Dependency removed |
|
|
545
|
-
| dependent_unblocked | Dependent entity became ready |
|
|
546
|
-
| entity_reopened | Cancelled entity reopened |
|
|
547
|
-
| entity_cancelled | Entity cancelled |
|
|
381
|
+
**Benefits:**
|
|
382
|
+
- No file sync required
|
|
383
|
+
- Dependencies auto-validated
|
|
384
|
+
- Blocking tasks auto-detected
|
|
385
|
+
- Reproducible state (`events.jsonl`)
|
|
386
|
+
- Queryable via CLI or JSON
|
|
387
|
+
- Works in CI/CD pipelines
|
|
548
388
|
|
|
549
|
-
###
|
|
389
|
+
### Dependency Management
|
|
550
390
|
|
|
551
391
|
```bash
|
|
552
|
-
# View
|
|
553
|
-
mandor
|
|
554
|
-
|
|
555
|
-
# Events are also shown in default detail view
|
|
556
|
-
mandor task detail <id>
|
|
557
|
-
```
|
|
558
|
-
|
|
559
|
-
---
|
|
392
|
+
# View all projects and their status
|
|
393
|
+
mandor status
|
|
560
394
|
|
|
561
|
-
|
|
395
|
+
# Check a specific project
|
|
396
|
+
mandor status --project api
|
|
562
397
|
|
|
563
|
-
|
|
398
|
+
# View feature dependencies
|
|
399
|
+
mandor feature list --project api
|
|
564
400
|
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
401
|
+
# Create tasks with dependencies
|
|
402
|
+
mandor task create "Step 2" --feature feature-id \
|
|
403
|
+
--goal "..." \
|
|
404
|
+
--implementation-steps "..." \
|
|
405
|
+
--test-cases "..." \
|
|
406
|
+
--derivable-files "..." \
|
|
407
|
+
--library-needs "..." \
|
|
408
|
+
--depends-on task-id-1|task-id-2
|
|
571
409
|
|
|
572
|
-
|
|
410
|
+
# See what's blocking progress
|
|
411
|
+
mandor task blocked --feature feature-id
|
|
573
412
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
cat .mandor/events.jsonl
|
|
413
|
+
# Mark as done (auto-unblocks dependents)
|
|
414
|
+
mandor task update task-id --status done
|
|
577
415
|
|
|
578
|
-
#
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
# Count events by type
|
|
582
|
-
grep '"type":"status_changed"' .mandor/events.jsonl | wc -l
|
|
416
|
+
# Dependents auto-transition to ready
|
|
417
|
+
mandor task ready --feature feature-id
|
|
583
418
|
```
|
|
584
419
|
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
## Examples
|
|
588
|
-
|
|
589
|
-
### Complete Feature Workflow
|
|
420
|
+
### Issue Tracking
|
|
590
421
|
|
|
591
422
|
```bash
|
|
592
|
-
#
|
|
593
|
-
mandor
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
--
|
|
599
|
-
--
|
|
600
|
-
|
|
601
|
-
# Create first task (no dependencies)
|
|
602
|
-
mandor task create api-feature-xxx "JWT Parser" \
|
|
603
|
-
--goal "Parse and validate JWT tokens with signature verification and expiry checks" \
|
|
604
|
-
--implementation-steps "Import crypto library|Implement token parsing|Add signature validation|Handle expiry" \
|
|
605
|
-
--test-cases "Valid token accepted|Invalid signature rejected|Expired token rejected" \
|
|
606
|
-
--derivable-files "jwt_parser.go|jwt_parser_test.go" \
|
|
607
|
-
--library-needs "golang-jwt" \
|
|
608
|
-
--priority P1
|
|
609
|
-
|
|
610
|
-
# Create dependent task
|
|
611
|
-
mandor task create api-feature-xxx "JWT Validator" \
|
|
612
|
-
--goal "Create middleware to validate JWT tokens in incoming requests" \
|
|
613
|
-
--implementation-steps "Create middleware|Validate token|Check expiry|Return errors" \
|
|
614
|
-
--test-cases "Valid requests pass|Invalid requests rejected|Error responses correct" \
|
|
615
|
-
--derivable-files "auth_middleware.go|auth_middleware_test.go" \
|
|
616
|
-
--library-needs "none" \
|
|
617
|
-
--depends-on <jwt-parser-id> \
|
|
618
|
-
--priority P1
|
|
619
|
-
|
|
620
|
-
# Create another dependent task
|
|
621
|
-
mandor task create api-feature-xxx "Login Endpoint" \
|
|
622
|
-
--goal "Accept credentials and return JWT token pair with refresh token" \
|
|
623
|
-
--implementation-steps "Setup endpoint|Validate credentials|Generate JWT|Store refresh token|Return tokens" \
|
|
624
|
-
--test-cases "Valid creds return tokens|Invalid creds rejected|Tokens formatted correctly" \
|
|
625
|
-
--derivable-files "login_handler.go|login_handler_test.go" \
|
|
626
|
-
--library-needs "none" \
|
|
627
|
-
--depends-on <jwt-parser-id> \
|
|
628
|
-
--priority P1
|
|
423
|
+
# Create a bug issue
|
|
424
|
+
mandor issue create "Fix memory leak in auth" \
|
|
425
|
+
--project api \
|
|
426
|
+
--type bug \
|
|
427
|
+
--priority P0 \
|
|
428
|
+
--goal "Goroutine leak in token refresh handler..." \
|
|
429
|
+
--affected-files "src/handlers/auth.go|src/middleware/auth.go" \
|
|
430
|
+
--affected-tests "src/handlers/auth_test.go" \
|
|
431
|
+
--implementation-steps "Identify leak|Add cleanup|Test|Verify"
|
|
629
432
|
|
|
630
|
-
#
|
|
631
|
-
mandor
|
|
632
|
-
mandor task ready api-feature-xxx # Only JWT Parser is ready
|
|
633
|
-
mandor task blocked api-feature-xxx # Validator and Login waiting on Parser
|
|
634
|
-
mandor task summary api-feature-xxx # Grouped summary
|
|
433
|
+
# List open issues
|
|
434
|
+
mandor issue list --project api --status open
|
|
635
435
|
|
|
636
|
-
#
|
|
637
|
-
mandor
|
|
638
|
-
mandor task update <jwt-parser-id> --status done
|
|
436
|
+
# Filter by type and priority
|
|
437
|
+
mandor issue list --project api --type bug --priority P0
|
|
639
438
|
|
|
640
|
-
#
|
|
641
|
-
mandor
|
|
439
|
+
# See ready issues
|
|
440
|
+
mandor issue ready --project api --type bug
|
|
642
441
|
|
|
643
|
-
#
|
|
644
|
-
mandor
|
|
645
|
-
mandor task update <jwt-validator-id> --status done
|
|
442
|
+
# Start working
|
|
443
|
+
mandor issue update issue-id --start
|
|
646
444
|
|
|
647
|
-
|
|
648
|
-
mandor
|
|
445
|
+
# Mark as resolved
|
|
446
|
+
mandor issue update issue-id --resolve
|
|
649
447
|
|
|
650
|
-
# Mark
|
|
651
|
-
mandor
|
|
652
|
-
mandor feature update api-feature-xxx --project api --status done
|
|
448
|
+
# Mark as won't fix with reason
|
|
449
|
+
mandor issue update issue-id --wontfix --reason "Working as intended"
|
|
653
450
|
```
|
|
654
451
|
|
|
655
|
-
###
|
|
452
|
+
### Configuration
|
|
656
453
|
|
|
657
454
|
```bash
|
|
658
|
-
#
|
|
659
|
-
mandor
|
|
660
|
-
--goal "Shared database and utility libraries"
|
|
661
|
-
mandor project create api --name "API Service" \
|
|
662
|
-
--goal "REST API service" --task-dep cross_project_allowed
|
|
663
|
-
|
|
664
|
-
# Create shared library feature and task
|
|
665
|
-
mandor feature create "Database Layer" --project core \
|
|
666
|
-
--goal "Connection pool and query builder for database access" \
|
|
667
|
-
--scope backend
|
|
668
|
-
|
|
669
|
-
mandor task create core-feature-xxx "Database Connection Pool" \
|
|
670
|
-
--goal "Implement connection pool with health checks and auto-reconnect" \
|
|
671
|
-
--implementation-steps "Create pool|Setup health check|Auto-reconnect|Connection limits" \
|
|
672
|
-
--test-cases "Pool creates connections|Health check works|Reconnect on failure" \
|
|
673
|
-
--derivable-files "db_pool.go|db_pool_test.go" \
|
|
674
|
-
--library-needs "pgx|pgxpool" \
|
|
675
|
-
--priority P0
|
|
676
|
-
|
|
677
|
-
# Create API feature depending on core library task
|
|
678
|
-
mandor feature create "User Endpoints" --project api \
|
|
679
|
-
--goal "User CRUD endpoints backed by database" \
|
|
680
|
-
--scope backend
|
|
681
|
-
|
|
682
|
-
mandor task create api-feature-xxx "User API Handler" \
|
|
683
|
-
--goal "Create REST endpoints for user CRUD operations" \
|
|
684
|
-
--implementation-steps "Setup handler|Implement GET|Implement POST|Implement DELETE" \
|
|
685
|
-
--test-cases "GET returns user|POST creates user|DELETE removes user" \
|
|
686
|
-
--derivable-files "user_handler.go|user_handler_test.go" \
|
|
687
|
-
--library-needs "gin|none" \
|
|
688
|
-
--depends-on <db-pool-task-id> \
|
|
689
|
-
--priority P0
|
|
690
|
-
|
|
691
|
-
# Check progress
|
|
692
|
-
mandor task list core-feature-xxx # DB Pool ready to start
|
|
693
|
-
mandor task blocked api-feature-xxx # User Handler blocked on DB Pool
|
|
694
|
-
|
|
695
|
-
# Complete core task, dependents auto-unblock
|
|
696
|
-
mandor task update <db-pool-task-id> --status in_progress
|
|
697
|
-
mandor task update <db-pool-task-id> --status done
|
|
698
|
-
|
|
699
|
-
# API task now ready
|
|
700
|
-
mandor task ready api-feature-xxx # User Handler now ready
|
|
701
|
-
```
|
|
702
|
-
|
|
703
|
-
### Issue Tracking with Dependencies
|
|
704
|
-
|
|
705
|
-
```bash
|
|
706
|
-
# Create blocker issues
|
|
707
|
-
mandor issue create api "Data Validation Bug" \
|
|
708
|
-
--type bug \
|
|
709
|
-
--goal "Fix data validation allowing invalid emails to pass through" \
|
|
710
|
-
--affected-files "validate.go|email_validator.go" \
|
|
711
|
-
--affected-tests "validate_test.go|email_validator_test.go" \
|
|
712
|
-
--implementation-steps "Add email regex|Add domain check|Add test cases" \
|
|
713
|
-
--priority P0
|
|
714
|
-
|
|
715
|
-
mandor issue create api "Cache Consistency Issue" \
|
|
716
|
-
--type bug \
|
|
717
|
-
--goal "Fix race condition in cache invalidation causing stale data" \
|
|
718
|
-
--affected-files "cache.go|invalidation.go" \
|
|
719
|
-
--affected-tests "cache_test.go" \
|
|
720
|
-
--implementation-steps "Add mutex|Refactor invalidation|Add concurrency tests" \
|
|
721
|
-
--priority P0
|
|
722
|
-
|
|
723
|
-
# Create dependent issue (depends on blockers)
|
|
724
|
-
mandor issue create api "High Memory Usage in Production" \
|
|
725
|
-
--type bug \
|
|
726
|
-
--goal "Fix memory leak causing OOM errors in production due to cache and validation issues" \
|
|
727
|
-
--affected-files "main.go|memory.go" \
|
|
728
|
-
--affected-tests "memory_test.go" \
|
|
729
|
-
--implementation-steps "Profile memory|Identify leaks|Fix validation and cache" \
|
|
730
|
-
--depends-on <data-validation-bug-id>|<cache-issue-id> \
|
|
731
|
-
--priority P0
|
|
732
|
-
|
|
733
|
-
# Check status
|
|
734
|
-
mandor issue ready api # Both blockers ready
|
|
735
|
-
mandor issue blocked api # Memory issue blocked
|
|
736
|
-
|
|
737
|
-
# Resolve blocking issues (order doesn't matter)
|
|
738
|
-
mandor issue update <data-validation-bug-id> --start
|
|
739
|
-
mandor issue update <data-validation-bug-id> --resolve
|
|
740
|
-
|
|
741
|
-
mandor issue update <cache-issue-id> --start
|
|
742
|
-
mandor issue update <cache-issue-id> --resolve
|
|
743
|
-
|
|
744
|
-
# Check progress
|
|
745
|
-
mandor issue ready api # Memory issue now ready
|
|
746
|
-
mandor issue summary api # See all status groups
|
|
747
|
-
|
|
748
|
-
# Fix dependent issue
|
|
749
|
-
mandor issue update <memory-issue-id> --start
|
|
750
|
-
mandor issue update <memory-issue-id> --resolve
|
|
751
|
-
```
|
|
455
|
+
# Set default priority
|
|
456
|
+
mandor config set default_priority P2
|
|
752
457
|
|
|
753
|
-
|
|
458
|
+
# Enable strict mode
|
|
459
|
+
mandor config set strict_mode true
|
|
754
460
|
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
mandor feature create "OAuth2 Investigation" --project api \
|
|
758
|
-
--goal "Research OAuth2 integration options" \
|
|
759
|
-
--scope backend
|
|
461
|
+
# View all configuration
|
|
462
|
+
mandor config list
|
|
760
463
|
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
--implementation-steps "Create comparison spreadsheet|Evaluate pros/cons|Estimate effort" \
|
|
764
|
-
--test-cases "Evaluation complete|Team consensus reached" \
|
|
765
|
-
--derivable-files "oauth2_comparison.md" \
|
|
766
|
-
--library-needs "none" \
|
|
767
|
-
--priority P2
|
|
464
|
+
# Get specific value
|
|
465
|
+
mandor config get default_priority
|
|
768
466
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
--implementation-steps "Setup oauth lib|Create login flow|Test flow" \
|
|
772
|
-
--test-cases "Login works|Token refresh works" \
|
|
773
|
-
--derivable-files "poc_oauth.go|poc_oauth_test.go" \
|
|
774
|
-
--library-needs "none" \
|
|
775
|
-
--priority P2
|
|
776
|
-
|
|
777
|
-
# List tasks
|
|
778
|
-
mandor task list api-feature-xxx # Show feature tasks
|
|
779
|
-
|
|
780
|
-
# Change requirements, decide not to pursue OAuth2
|
|
781
|
-
mandor feature update api-feature-xxx --project api \
|
|
782
|
-
--cancel --reason "Sticking with JWT, OAuth2 adds too much complexity"
|
|
783
|
-
|
|
784
|
-
# Try to create new task (fails)
|
|
785
|
-
mandor task create api-feature-xxx "Integration Tests" \
|
|
786
|
-
--goal "Add integration tests" \
|
|
787
|
-
--implementation-steps "none" \
|
|
788
|
-
--test-cases "none" \
|
|
789
|
-
--derivable-files "none" \
|
|
790
|
-
--library-needs "none"
|
|
791
|
-
# Error: "Cannot create task for cancelled feature"
|
|
792
|
-
|
|
793
|
-
# Change mind - reopen the feature to continue research
|
|
794
|
-
mandor feature update api-feature-xxx --project api --reopen
|
|
795
|
-
|
|
796
|
-
# Can now create tasks again
|
|
797
|
-
mandor task list api-feature-xxx # Previous tasks still exist
|
|
798
|
-
mandor task create api-feature-xxx "Hybrid Approach" \
|
|
799
|
-
--goal "Combine JWT with optional OAuth2 for third-party apps" \
|
|
800
|
-
--implementation-steps "Design hybrid flow|Implement dual auth|Test both flows" \
|
|
801
|
-
--test-cases "JWT still works|OAuth2 works|Both interoperable" \
|
|
802
|
-
--derivable-files "hybrid_auth.go" \
|
|
803
|
-
--library-needs "oauth2lib" \
|
|
804
|
-
--priority P3
|
|
467
|
+
# Reset to default
|
|
468
|
+
mandor config reset default_priority
|
|
805
469
|
```
|
|
806
470
|
|
|
807
471
|
---
|
|
808
472
|
|
|
809
473
|
## Best Practices
|
|
810
474
|
|
|
811
|
-
### Mandor vs. Markdown Plan Files
|
|
812
|
-
|
|
813
|
-
| Problem | Markdown Plans | Mandor |
|
|
814
|
-
|---------|---|---|
|
|
815
|
-
| Single source of truth | ❌ Scattered across multiple files | ✓ Centralized `events.jsonl` |
|
|
816
|
-
| Dependency tracking | ❌ Manual, often wrong | ✓ Automatic status transitions |
|
|
817
|
-
| Progress visibility | ❌ Requires manual updates | ✓ Real-time status queries |
|
|
818
|
-
| Audit trail | ❌ Git history only | ✓ Immutable event log |
|
|
819
|
-
| Blocking detection | ❌ Must review files | ✓ `mandor task blocked <id>` |
|
|
820
|
-
| Schema validation | ❌ Free-form text | ✓ Enforced structure |
|
|
821
|
-
| Automation | ❌ Parse text with regex | ✓ JSON queryable for scripts |
|
|
822
|
-
|
|
823
475
|
### 1. Use Meaningful IDs
|
|
824
476
|
|
|
825
477
|
Project and feature IDs should be:
|
|
@@ -837,17 +489,27 @@ mandor project create p1
|
|
|
837
489
|
mandor feature create f123
|
|
838
490
|
```
|
|
839
491
|
|
|
840
|
-
### 2.
|
|
492
|
+
### 2. Write Clear Goals
|
|
841
493
|
|
|
842
|
-
|
|
494
|
+
Goals should include:
|
|
495
|
+
- What is being built/fixed
|
|
496
|
+
- Why it matters
|
|
497
|
+
- Technical requirements
|
|
498
|
+
- Acceptance criteria
|
|
843
499
|
|
|
844
500
|
```bash
|
|
845
|
-
|
|
501
|
+
# Good
|
|
502
|
+
--goal "Implement JWT-based authentication with login and refresh flows for secure API access"
|
|
503
|
+
|
|
504
|
+
# Avoid
|
|
505
|
+
--goal "Add authentication"
|
|
846
506
|
```
|
|
847
507
|
|
|
848
508
|
### 3. Use Scopes for Features
|
|
849
509
|
|
|
850
|
-
|
|
510
|
+
Organize by scope:
|
|
511
|
+
- `frontend`, `backend`, `fullstack`
|
|
512
|
+
- `cli`, `desktop`, `android`, `flutter`, `react-native`, `ios`, `swift`
|
|
851
513
|
|
|
852
514
|
```bash
|
|
853
515
|
mandor feature create "Login UI" --project api --scope frontend
|
|
@@ -856,83 +518,91 @@ mandor feature create "Login API" --project api --scope backend
|
|
|
856
518
|
|
|
857
519
|
### 4. Keep Dependencies Shallow
|
|
858
520
|
|
|
859
|
-
Deep dependency chains (>5 levels)
|
|
521
|
+
Deep dependency chains (>5 levels) are hard to manage. Consider breaking into smaller features.
|
|
522
|
+
|
|
523
|
+
```bash
|
|
524
|
+
# Good: tasks depend on other tasks in same feature
|
|
525
|
+
mandor task create "Task B" --feature feature-id --depends-on task-a-id
|
|
860
526
|
|
|
861
|
-
|
|
527
|
+
# Consider splitting if: task chains exceed 5 levels
|
|
528
|
+
```
|
|
862
529
|
|
|
863
|
-
|
|
864
|
-
|
|
530
|
+
### 5. Use Issues for Bugs, Tasks for Features
|
|
531
|
+
|
|
532
|
+
- **Tasks**: Feature work, implementation, refactoring
|
|
533
|
+
- **Issues**: Bugs, improvements, technical debt, security, performance
|
|
534
|
+
|
|
535
|
+
```bash
|
|
536
|
+
# Feature work
|
|
537
|
+
mandor task create "Add OAuth2" --feature api-auth
|
|
538
|
+
|
|
539
|
+
# Bug fix
|
|
540
|
+
mandor issue create "Fix auth timeout" --project api --type bug
|
|
541
|
+
```
|
|
865
542
|
|
|
866
543
|
### 6. Document Cancellation Reasons
|
|
867
544
|
|
|
868
545
|
Always provide clear reasons when cancelling:
|
|
869
546
|
|
|
870
547
|
```bash
|
|
871
|
-
mandor task update
|
|
548
|
+
mandor task update task-id --cancel --reason "Superseded by feature X"
|
|
549
|
+
mandor feature update feature-id --project api --cancel --reason "Sticking with JWT, OAuth2 adds too much complexity"
|
|
872
550
|
```
|
|
873
551
|
|
|
874
|
-
### 7.
|
|
552
|
+
### 7. Use Pipe-Separated Lists
|
|
553
|
+
|
|
554
|
+
For flags accepting multiple values, use pipe separators:
|
|
875
555
|
|
|
876
556
|
```bash
|
|
877
|
-
|
|
557
|
+
# Implementation steps
|
|
558
|
+
--implementation-steps "Step 1|Step 2|Step 3"
|
|
559
|
+
|
|
560
|
+
# Test cases
|
|
561
|
+
--test-cases "Case 1|Case 2|Case 3"
|
|
562
|
+
|
|
563
|
+
# Dependencies
|
|
564
|
+
--depends-on task-1|task-2|task-3
|
|
878
565
|
```
|
|
879
566
|
|
|
880
|
-
### 8. Use
|
|
567
|
+
### 8. Use --dry-run to Preview Changes
|
|
881
568
|
|
|
882
|
-
|
|
569
|
+
Before making significant updates, preview with `--dry-run`:
|
|
883
570
|
|
|
884
571
|
```bash
|
|
885
|
-
mandor
|
|
886
|
-
mandor
|
|
572
|
+
mandor task update task-id --status done --cancel --dry-run
|
|
573
|
+
mandor feature update feature-id --project api --cancel --reason "..." --dry-run
|
|
887
574
|
```
|
|
888
575
|
|
|
889
|
-
### 9.
|
|
576
|
+
### 9. Set Configuration Early
|
|
890
577
|
|
|
891
|
-
|
|
578
|
+
Configure workspace defaults at the start:
|
|
892
579
|
|
|
893
|
-
```
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
- [ ] Login endpoint (depends on JWT parser)
|
|
898
|
-
- ...
|
|
899
|
-
# Status: Last updated 3 days ago
|
|
580
|
+
```bash
|
|
581
|
+
mandor init "Project Name"
|
|
582
|
+
mandor config set default_priority P2
|
|
583
|
+
mandor config set strict_mode true
|
|
900
584
|
```
|
|
901
585
|
|
|
902
|
-
|
|
586
|
+
### 10. Review Status Regularly
|
|
903
587
|
|
|
904
588
|
```bash
|
|
905
|
-
#
|
|
906
|
-
mandor
|
|
907
|
-
--goal "Implement JWT and login endpoints" \
|
|
908
|
-
--scope backend
|
|
589
|
+
# Workspace overview
|
|
590
|
+
mandor status
|
|
909
591
|
|
|
910
|
-
#
|
|
911
|
-
mandor
|
|
912
|
-
-g "Validate JWT tokens..." \
|
|
913
|
-
--implementation-steps "Step 1|Step 2" \
|
|
914
|
-
--test-cases "Test invalid tokens|Test expired" \
|
|
915
|
-
--library-needs "jsonwebtoken" \
|
|
916
|
-
--priority P1
|
|
592
|
+
# Project summary
|
|
593
|
+
mandor status --project api
|
|
917
594
|
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
--depends-on jwt-parser-id \
|
|
921
|
-
--priority P1
|
|
595
|
+
# Feature priorities
|
|
596
|
+
mandor summary --project api
|
|
922
597
|
|
|
923
|
-
#
|
|
924
|
-
mandor task ready
|
|
925
|
-
mandor
|
|
926
|
-
mandor task summary auth-xxx # See grouped status
|
|
927
|
-
```
|
|
598
|
+
# See ready work
|
|
599
|
+
mandor task ready --feature feature-id
|
|
600
|
+
mandor issue ready --project api
|
|
928
601
|
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
- Reproducible state (`events.jsonl`)
|
|
934
|
-
- Queryable via CLI or JSON
|
|
935
|
-
- Works in CI/CD pipelines
|
|
602
|
+
# See blockers
|
|
603
|
+
mandor task blocked --feature feature-id
|
|
604
|
+
mandor issue blocked --project api
|
|
605
|
+
```
|
|
936
606
|
|
|
937
607
|
---
|
|
938
608
|
|
|
@@ -948,7 +618,7 @@ export PATH="$HOME/.local/bin:$PATH"
|
|
|
948
618
|
|
|
949
619
|
### "Project not found"
|
|
950
620
|
|
|
951
|
-
Check the project ID and ensure you're in the correct workspace
|
|
621
|
+
Check the project ID and ensure you're in the correct workspace:
|
|
952
622
|
|
|
953
623
|
```bash
|
|
954
624
|
mandor project list
|
|
@@ -960,6 +630,7 @@ Verify the entity ID exists:
|
|
|
960
630
|
|
|
961
631
|
```bash
|
|
962
632
|
mandor task list --feature <feature-id>
|
|
633
|
+
mandor issue list --project <project-id>
|
|
963
634
|
```
|
|
964
635
|
|
|
965
636
|
### "Cross-project dependency detected"
|
|
@@ -971,7 +642,7 @@ The project doesn't allow cross-project dependencies:
|
|
|
971
642
|
mandor project detail <project-id>
|
|
972
643
|
|
|
973
644
|
# Create new project with cross-project enabled
|
|
974
|
-
mandor project create <id> --task-dep cross_project_allowed
|
|
645
|
+
mandor project create <id> --name "..." --goal "..." --task-dep cross_project_allowed
|
|
975
646
|
```
|
|
976
647
|
|
|
977
648
|
### "Invalid status transition"
|
|
@@ -979,8 +650,9 @@ mandor project create <id> --task-dep cross_project_allowed
|
|
|
979
650
|
The transition isn't allowed by the state machine:
|
|
980
651
|
|
|
981
652
|
```bash
|
|
982
|
-
# Tasks: ready
|
|
983
|
-
# Features: draft
|
|
653
|
+
# Tasks: pending → ready → in_progress → done
|
|
654
|
+
# Features: draft → active → done
|
|
655
|
+
# Issues: open → ready → in_progress → resolved
|
|
984
656
|
```
|
|
985
657
|
|
|
986
658
|
### "Cannot create task for cancelled feature"
|
|
@@ -993,37 +665,37 @@ mandor feature update <id> --project <pid> --reopen
|
|
|
993
665
|
|
|
994
666
|
---
|
|
995
667
|
|
|
668
|
+
## Configuration Keys
|
|
669
|
+
|
|
670
|
+
| Key | Type | Default | Description |
|
|
671
|
+
|-----|------|---------|-------------|
|
|
672
|
+
| `default_priority` | string | P3 | Default priority for new entities (P0-P5) |
|
|
673
|
+
| `strict_mode` | boolean | false | Enable strict dependency validation |
|
|
674
|
+
|
|
675
|
+
---
|
|
676
|
+
|
|
996
677
|
## File Structure
|
|
997
678
|
|
|
998
679
|
```
|
|
999
|
-
mandor/
|
|
1000
|
-
├──
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
│ ├── workspace.json # Workspace config
|
|
1010
|
-
│ └── projects/ # Projects directory
|
|
1011
|
-
│ └── <project>/
|
|
1012
|
-
│ ├── project.json
|
|
1013
|
-
│ ├── features/
|
|
1014
|
-
│ ├── tasks/
|
|
1015
|
-
│ ├── issues/
|
|
1016
|
-
│ └── events.jsonl
|
|
1017
|
-
└── binaries/
|
|
1018
|
-
└── mandor # Built binary
|
|
680
|
+
.mandor/
|
|
681
|
+
├── workspace.json # Workspace metadata
|
|
682
|
+
├── config.json # Workspace configuration
|
|
683
|
+
└── projects/
|
|
684
|
+
└── <project-id>/
|
|
685
|
+
├── project.json # Project metadata
|
|
686
|
+
├── features.jsonl # Feature event log
|
|
687
|
+
├── tasks.jsonl # Task event log
|
|
688
|
+
├── issues.jsonl # Issue event log
|
|
689
|
+
└── events.jsonl # All events
|
|
1019
690
|
```
|
|
1020
691
|
|
|
1021
692
|
---
|
|
1022
693
|
|
|
1023
694
|
## Support
|
|
1024
695
|
|
|
1025
|
-
- Issues: https://github.com/
|
|
696
|
+
- Issues: https://github.com/sanxzy/mandor/issues
|
|
1026
697
|
- Documentation: `/docs` directory
|
|
698
|
+
- Repository: https://github.com/sanxzy/mandor
|
|
1027
699
|
|
|
1028
700
|
---
|
|
1029
701
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/mandor-cli
CHANGED
|
Binary file
|