@mandors/cli 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +469 -383
  2. package/binaries/darwin-arm64/mandor +0 -0
  3. package/binaries/darwin-arm64.tar.gz +0 -0
  4. package/binaries/linux-arm64/mandor +0 -0
  5. package/binaries/linux-arm64.tar.gz +0 -0
  6. package/package.json +1 -1
  7. package/.mandor/projects/dbg2989/events.jsonl +0 -0
  8. package/.mandor/projects/dbg2989/features.jsonl +0 -1
  9. package/.mandor/projects/dbg2989/issues.jsonl +0 -0
  10. package/.mandor/projects/dbg2989/project.jsonl +0 -11
  11. package/.mandor/projects/dbg2989/schema.json +0 -29
  12. package/.mandor/projects/dbg2989/tasks.jsonl +0 -0
  13. package/.mandor/projects/dbg3995/events.jsonl +0 -0
  14. package/.mandor/projects/dbg3995/features.jsonl +0 -1
  15. package/.mandor/projects/dbg3995/issues.jsonl +0 -0
  16. package/.mandor/projects/dbg3995/project.jsonl +0 -11
  17. package/.mandor/projects/dbg3995/schema.json +0 -29
  18. package/.mandor/projects/dbg3995/tasks.jsonl +0 -1
  19. package/.mandor/projects/dbg4038/events.jsonl +0 -0
  20. package/.mandor/projects/dbg4038/features.jsonl +0 -0
  21. package/.mandor/projects/dbg4038/issues.jsonl +0 -0
  22. package/.mandor/projects/dbg4038/project.jsonl +0 -11
  23. package/.mandor/projects/dbg4038/schema.json +0 -29
  24. package/.mandor/projects/dbg4038/tasks.jsonl +0 -0
  25. package/.mandor/projects/dbg5043/events.jsonl +0 -0
  26. package/.mandor/projects/dbg5043/features.jsonl +0 -0
  27. package/.mandor/projects/dbg5043/issues.jsonl +0 -0
  28. package/.mandor/projects/dbg5043/project.jsonl +0 -11
  29. package/.mandor/projects/dbg5043/schema.json +0 -29
  30. package/.mandor/projects/dbg5043/tasks.jsonl +0 -0
  31. package/.mandor/projects/dbg6047/events.jsonl +0 -0
  32. package/.mandor/projects/dbg6047/features.jsonl +0 -0
  33. package/.mandor/projects/dbg6047/issues.jsonl +0 -0
  34. package/.mandor/projects/dbg6047/project.jsonl +0 -11
  35. package/.mandor/projects/dbg6047/schema.json +0 -29
  36. package/.mandor/projects/dbg6047/tasks.jsonl +0 -0
  37. package/.mandor/projects/dbg982/events.jsonl +0 -0
  38. package/.mandor/projects/dbg982/features.jsonl +0 -0
  39. package/.mandor/projects/dbg982/issues.jsonl +0 -0
  40. package/.mandor/projects/dbg982/project.jsonl +0 -11
  41. package/.mandor/projects/dbg982/schema.json +0 -29
  42. package/.mandor/projects/dbg982/tasks.jsonl +0 -0
  43. package/.mandor/projects/test065/events.jsonl +0 -0
  44. package/.mandor/projects/test065/features.jsonl +0 -2
  45. package/.mandor/projects/test065/issues.jsonl +0 -0
  46. package/.mandor/projects/test065/project.jsonl +0 -11
  47. package/.mandor/projects/test065/schema.json +0 -29
  48. package/.mandor/projects/test065/tasks.jsonl +0 -11
  49. package/.mandor/projects/test086/events.jsonl +0 -0
  50. package/.mandor/projects/test086/features.jsonl +0 -2
  51. package/.mandor/projects/test086/issues.jsonl +0 -0
  52. package/.mandor/projects/test086/project.jsonl +0 -11
  53. package/.mandor/projects/test086/schema.json +0 -29
  54. package/.mandor/projects/test086/tasks.jsonl +0 -11
  55. package/.mandor/projects/test105/events.jsonl +0 -0
  56. package/.mandor/projects/test105/features.jsonl +0 -2
  57. package/.mandor/projects/test105/issues.jsonl +0 -0
  58. package/.mandor/projects/test105/project.jsonl +0 -11
  59. package/.mandor/projects/test105/schema.json +0 -29
  60. package/.mandor/projects/test105/tasks.jsonl +0 -11
  61. package/.mandor/projects/test109/events.jsonl +0 -0
  62. package/.mandor/projects/test109/features.jsonl +0 -2
  63. package/.mandor/projects/test109/issues.jsonl +0 -0
  64. package/.mandor/projects/test109/project.jsonl +0 -11
  65. package/.mandor/projects/test109/schema.json +0 -29
  66. package/.mandor/projects/test109/tasks.jsonl +0 -11
  67. package/.mandor/projects/test114/events.jsonl +0 -0
  68. package/.mandor/projects/test114/features.jsonl +0 -2
  69. package/.mandor/projects/test114/issues.jsonl +0 -0
  70. package/.mandor/projects/test114/project.jsonl +0 -11
  71. package/.mandor/projects/test114/schema.json +0 -29
  72. package/.mandor/projects/test114/tasks.jsonl +0 -11
  73. package/.mandor/projects/test136/events.jsonl +0 -0
  74. package/.mandor/projects/test136/features.jsonl +0 -2
  75. package/.mandor/projects/test136/issues.jsonl +0 -0
  76. package/.mandor/projects/test136/project.jsonl +0 -11
  77. package/.mandor/projects/test136/schema.json +0 -29
  78. package/.mandor/projects/test136/tasks.jsonl +0 -11
  79. package/.mandor/projects/test140/events.jsonl +0 -0
  80. package/.mandor/projects/test140/features.jsonl +0 -2
  81. package/.mandor/projects/test140/issues.jsonl +0 -0
  82. package/.mandor/projects/test140/project.jsonl +0 -11
  83. package/.mandor/projects/test140/schema.json +0 -29
  84. package/.mandor/projects/test140/tasks.jsonl +0 -11
  85. package/.mandor/projects/test150/events.jsonl +0 -0
  86. package/.mandor/projects/test150/features.jsonl +0 -2
  87. package/.mandor/projects/test150/issues.jsonl +0 -0
  88. package/.mandor/projects/test150/project.jsonl +0 -11
  89. package/.mandor/projects/test150/schema.json +0 -29
  90. package/.mandor/projects/test150/tasks.jsonl +0 -11
  91. package/.mandor/projects/test154/events.jsonl +0 -0
  92. package/.mandor/projects/test154/features.jsonl +0 -2
  93. package/.mandor/projects/test154/issues.jsonl +0 -0
  94. package/.mandor/projects/test154/project.jsonl +0 -11
  95. package/.mandor/projects/test154/schema.json +0 -29
  96. package/.mandor/projects/test154/tasks.jsonl +0 -11
  97. package/.mandor/projects/test858/events.jsonl +0 -0
  98. package/.mandor/projects/test858/features.jsonl +0 -0
  99. package/.mandor/projects/test858/issues.jsonl +0 -0
  100. package/.mandor/projects/test858/project.jsonl +0 -11
  101. package/.mandor/projects/test858/schema.json +0 -29
  102. package/.mandor/projects/test858/tasks.jsonl +0 -0
  103. package/.mandor/projects/test865/events.jsonl +0 -0
  104. package/.mandor/projects/test865/features.jsonl +0 -0
  105. package/.mandor/projects/test865/issues.jsonl +0 -0
  106. package/.mandor/projects/test865/project.jsonl +0 -11
  107. package/.mandor/projects/test865/schema.json +0 -29
  108. package/.mandor/projects/test865/tasks.jsonl +0 -0
  109. package/.mandor/projects/test868/events.jsonl +0 -0
  110. package/.mandor/projects/test868/features.jsonl +0 -0
  111. package/.mandor/projects/test868/issues.jsonl +0 -0
  112. package/.mandor/projects/test868/project.jsonl +0 -11
  113. package/.mandor/projects/test868/schema.json +0 -29
  114. package/.mandor/projects/test868/tasks.jsonl +0 -0
  115. package/.mandor/projects/test871/events.jsonl +0 -0
  116. package/.mandor/projects/test871/features.jsonl +0 -0
  117. package/.mandor/projects/test871/issues.jsonl +0 -0
  118. package/.mandor/projects/test871/project.jsonl +0 -11
  119. package/.mandor/projects/test871/schema.json +0 -29
  120. package/.mandor/projects/test871/tasks.jsonl +0 -0
  121. package/.mandor/projects/test878/events.jsonl +0 -0
  122. package/.mandor/projects/test878/features.jsonl +0 -0
  123. package/.mandor/projects/test878/issues.jsonl +0 -0
  124. package/.mandor/projects/test878/project.jsonl +0 -11
  125. package/.mandor/projects/test878/schema.json +0 -29
  126. package/.mandor/projects/test878/tasks.jsonl +0 -0
  127. package/.mandor/projects/test884/events.jsonl +0 -0
  128. package/.mandor/projects/test884/features.jsonl +0 -0
  129. package/.mandor/projects/test884/issues.jsonl +0 -0
  130. package/.mandor/projects/test884/project.jsonl +0 -11
  131. package/.mandor/projects/test884/schema.json +0 -29
  132. package/.mandor/projects/test884/tasks.jsonl +0 -0
  133. package/.mandor/projects/test891/events.jsonl +0 -0
  134. package/.mandor/projects/test891/features.jsonl +0 -0
  135. package/.mandor/projects/test891/issues.jsonl +0 -0
  136. package/.mandor/projects/test891/project.jsonl +0 -11
  137. package/.mandor/projects/test891/schema.json +0 -29
  138. package/.mandor/projects/test891/tasks.jsonl +0 -0
  139. package/.mandor/projects/test977/events.jsonl +0 -0
  140. package/.mandor/projects/test977/features.jsonl +0 -2
  141. package/.mandor/projects/test977/issues.jsonl +0 -0
  142. package/.mandor/projects/test977/project.jsonl +0 -11
  143. package/.mandor/projects/test977/schema.json +0 -29
  144. package/.mandor/projects/test977/tasks.jsonl +0 -11
  145. package/.mandor/session-notes.jsonl +0 -1
  146. package/.mandor/workspace.json +0 -19
  147. package/mandor +0 -0
  148. package/mandor-test +0 -0
package/README.md CHANGED
@@ -1,626 +1,712 @@
1
- # Mandor - Deterministic Task Manager for AI Agent Workflows
1
+ # Mandor - Deterministic Task Manager CLI for AI Agent Workflows
2
2
 
3
3
  <p align="center">
4
4
  <img src="logo.png" alt="Mandor Logo" width="600">
5
5
  </p>
6
6
 
7
7
  <p align="center">
8
- <strong>Stop writing markdown plans that go stale.</strong>
8
+ <strong>Stop writing markdown plans. Start shipping features with deterministic task tracking.</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <strong>Deterministic task management with structured briefs, specifications, and blueprints.</strong>
13
- </p>
14
-
15
- <p align="center">
16
- Gate-enforced | Dependency-aware | Structured storage | CLI-native
12
+ <strong>Dependency-aware | Structured storage | CLI-native | Built for AI agents</strong>
17
13
  </p>
18
14
 
19
15
  <p align="center">
16
+ <a href="#installation">Installation</a> •
20
17
  <a href="#quick-start">Quick Start</a> •
21
18
  <a href="#why-mandor">Why Mandor</a> •
22
- <a href="#workflow">Workflow</a> •
19
+ <a href="#core-concepts">Core Concepts</a> •
23
20
  <a href="#commands">Commands</a> •
24
- <a href="#best-practices">Best Practices</a>
21
+ <a href="#examples">Examples</a>
25
22
  </p>
26
23
 
27
24
  ---
28
25
 
29
26
  ## Why Mandor
30
27
 
31
- Traditional workflows scatter task state across markdown files, spreadsheets, and Slack. Dependencies are manual, status is fiction, and context is lost between sessions.
28
+ **No More Markdown Plan Files**
29
+
30
+ Traditional workflows scatter task state across markdown files, spreadsheets, and Slack messages. Dependencies are manual, status is fiction, and progress is invisible until code review.
32
31
 
33
32
  Mandor brings **deterministic task management** to AI agent workflows:
34
33
 
35
- - **Single Source of Truth**: Brief Spec Blueprint Feature → Task pipeline
36
- - **Gate-Enforced Progression**: All three gates (brief read, spec read, session notes) required before starting work
37
- - **Automatic Dependency Resolution**: Mark task done dependents auto-transition to ready
38
- - **Cross-Feature Dependencies**: Task A (Feature 1) can depend on Task B (Feature 2) with cascading unblocking
39
- - **Schema-Driven**: Enforce implementation steps, test cases, requirements upfront
34
+ - **Single Source of Truth**: All state in structured JSONL files—queryable, reproducible, auditable
35
+ - **Automatic Dependency Resolution**: Mark tasks done dependents auto-transition to ready
36
+ - **Schema-Driven**: Enforce implementation steps, test cases, and library needs upfront
40
37
  - **CLI-Native**: Works in terminal, scripts, and CI/CD pipelines
38
+ - **Dependency Tracking**: Full support for same-project and cross-project dependencies
39
+
40
+ ## Overview
41
+
42
+ Mandor is a CLI tool for managing tasks, features, and issues in AI agent workflows:
43
+
44
+ - **Structured Storage**: All data in JSONL format with full audit trail
45
+ - **Real-Time Status**: Query tasks/issues by status (ready, blocked, in_progress)
46
+ - **Dependency Tracking**: Automatic status transitions when dependencies complete
47
+ - **Cross-Platform**: Go binary for macOS, Linux, Windows (arm64 & x64)
41
48
 
42
49
  ---
43
50
 
44
- ## Alternatives
45
51
 
46
- Mandor is one approach to deterministic task management. Other tools exist in this space:
52
+ ## Core Concepts
53
+
54
+ ### Entity Types
55
+
56
+ | Type | Purpose | Status Values |
57
+ |------|---------|---------------|
58
+ | **Workspace** | Top-level container for all projects | (single instance per directory) |
59
+ | **Project** | Container for features and issues | (active/deleted) |
60
+ | **Feature** | Logical grouping of related tasks | draft, active, done, blocked, cancelled |
61
+ | **Task** | Work items within a feature | pending, ready, in_progress, done, blocked, cancelled |
62
+ | **Issue** | Problems, bugs, or improvement requests | open, ready, in_progress, resolved, wontfix, blocked, cancelled |
63
+
64
+ ### Dependency Types
47
65
 
48
- - **Beads**: Git-backed issue tracker focusing on rapid iteration with minimal overhead
49
- - GitHub: https://github.com/steveyegge/beads
66
+ - **Task Dependencies**: One task can depend on multiple tasks
67
+ - **Feature Dependencies**: Features can depend on other features
68
+ - **Issue Dependencies**: Issues can depend on other issues
50
69
 
51
- - **OpenSpec**: Fluid, iterative specs with AI tool integration (Claude Code, Cursor, Copilot)
52
- - GitHub: https://github.com/Fission-AI/OpenSpec
70
+ ### Status Transitions
71
+
72
+ **Tasks:**
73
+ ```
74
+ pending → {ready, in_progress, cancelled}
75
+ ready → {in_progress, cancelled}
76
+ in_progress → {done, blocked, cancelled}
77
+ blocked → {ready, cancelled}
78
+ done → (terminal)
79
+ cancelled → (terminal)
80
+ ```
81
+
82
+ **Features:**
83
+ ```
84
+ draft → {active, blocked, cancelled}
85
+ active → {done, blocked, cancelled}
86
+ blocked → {draft, active, done, cancelled}
87
+ done → {cancelled}
88
+ cancelled → {draft}
89
+ ```
90
+
91
+ **Issues:**
92
+ ```
93
+ open → {ready, in_progress, blocked, resolved, wontfix, cancelled}
94
+ ready → {in_progress, blocked, resolved, wontfix, cancelled}
95
+ in_progress → {blocked, resolved, wontfix, cancelled}
96
+ blocked → {ready, resolved, wontfix, cancelled}
97
+ resolved → (terminal, can reopen to any status)
98
+ wontfix → (terminal, can reopen to any status)
99
+ cancelled → (terminal, can reopen to any status)
100
+ ```
53
101
 
54
102
  ---
55
103
 
104
+
56
105
  ## Installation
57
106
 
58
- ### Build from Source
107
+ ### Install with curl
59
108
 
60
109
  ```bash
61
- cd Mandor
62
- go build -o mandor ./cmd/mandor
63
- ./mandor --help
110
+ curl -fsSL https://raw.githubusercontent.com/sanxzy/mandor/main/scripts/install.sh | sh
111
+ mandor --help
64
112
  ```
65
113
 
66
- ### Install to PATH
114
+ ### Install from npm
67
115
 
68
116
  ```bash
69
- go build -o ~/.local/bin/mandor ./cmd/mandor
70
- export PATH="$HOME/.local/bin:$PATH"
117
+ npm install -g @mandors/cli
71
118
  mandor --help
72
119
  ```
73
120
 
74
121
  ---
75
122
 
123
+
76
124
  ## Quick Start
77
125
 
78
126
  ### 1. Initialize Workspace
79
127
 
80
128
  ```bash
81
- mandor init -y
129
+ mandor init "My Project"
82
130
  ```
83
131
 
84
- ### 2. Create Project
132
+ ### 2. Create a Project
85
133
 
86
134
  ```bash
87
- mandor project create api --name "API Service" \
88
- --goal "REST API with JWT authentication, user management, and data endpoints"
135
+ mandor project create api --name "API Development" \
136
+ --goal "Build REST API service with authentication and endpoints"
89
137
  ```
90
138
 
91
- ### 3. Create Brief (Project Intent & Capabilities)
139
+ ### 3. Create a Feature
92
140
 
93
141
  ```bash
94
- mandor brief create -p api \
95
- --name "JWT Authentication" \
96
- --why "Need secure, stateless authentication for API endpoints" \
97
- --capabilities "jwt-auth:JWT login flow|refresh:Token refresh endpoint" \
98
- --tech-stack "golang,jwt,redis"
142
+ mandor feature create "Authentication" --project api \
143
+ --goal "Implement JWT-based authentication with login and refresh flows for secure API access" \
144
+ --scope backend
99
145
  ```
100
146
 
101
- Creates: `jwt-auth` (brief ID)
102
-
103
- ### 4. Create Spec (Requirements with IAE Scenarios)
147
+ ### 4. Create Tasks with Dependencies
104
148
 
105
149
  ```bash
106
- mandor spec create -p api \
107
- --capability jwt-auth \
108
- --summary "JWT authentication specification" \
109
- --requirements "Setup:Enable login:Import JWT lib|Validate:Verify token:Parse JWT|Refresh:Update token:Issue new JWT"
110
- ```
150
+ # Create first task (no dependencies)
151
+ mandor task create api-feature-xxxx "JWT Parser" \
152
+ --goal "Parse and validate JWT tokens in incoming requests with expiry and signature verification" \
153
+ --implementation-steps "Setup crypto library|Add token validation|Handle expiry|Return errors" \
154
+ --test-cases "Valid token accepted|Expired token rejected|Invalid signature rejected" \
155
+ --library-needs "golang-jwt" \
156
+ --priority P1
111
157
 
112
- Creates: `jwt-auth-spec` (spec ID with auto-generated requirement IDs: req-0001, req-0002, etc.)
158
+ # Create dependent task (depends on JWT Parser)
159
+ mandor task create api-feature-xxxx "Login Endpoint" \
160
+ --goal "Accept user credentials and return JWT token with refresh token flow" \
161
+ --implementation-steps "Setup endpoint|Validate credentials|Generate JWT|Return tokens" \
162
+ --test-cases "Valid creds return token|Invalid creds rejected|Tokens properly formatted" \
163
+ --depends-on api-feature-xxxx-task-xxxx \
164
+ --priority P1
165
+ ```
113
166
 
114
- ### 5. Create Blueprint (Technical Architecture)
167
+ ### 5. View Task Progress
115
168
 
116
169
  ```bash
117
- mandor blueprint create -p api \
118
- --brief jwt-auth \
119
- --problem "Secure API authentication without server-side session state" \
120
- --decisions "Use JWT for stateless auth|HTTP-only cookies for token storage|Refresh tokens on expiry" \
121
- --goals-in-scope "Authentication,Authorization,Token refresh"
122
- ```
170
+ # See all tasks in feature with visualization
171
+ mandor track feature api-feature-xxxx
123
172
 
124
- Creates: `api-blueprint` (blueprint ID)
173
+ # Get task details
174
+ mandor task detail <task-id>
175
+ ```
125
176
 
126
- ### 6. Create Feature (from Spec)
177
+ ### 6. Mark Tasks Complete
127
178
 
128
179
  ```bash
129
- mandor feature create "JWT Authentication" -p api \
130
- --capability jwt-auth \
131
- --spec-id jwt-auth-spec \
132
- --scope backend \
133
- -g "Implement JWT-based authentication with login flow, token validation, and refresh mechanism"
180
+ # Get task ID from track output
181
+ mandor task update <task-id> --status in_progress
182
+ mandor task update <task-id> --status done
183
+
184
+ # Dependent tasks auto-transition to "ready"
185
+ mandor track feature api-feature-xxxx # Now shows "Login Endpoint" as ready
134
186
  ```
135
187
 
136
- Creates: `jwt-tokens` (feature ID, one-to-one mapping to spec-id)
188
+ ---
137
189
 
138
- ### 7. Create Tasks (with IAE Scenarios)
139
190
 
140
- ```bash
141
- # Task 1: Setup JWT Library
142
- mandor task create jwt-tokens "Setup JWT Library" \
143
- --spec-id jwt-auth-spec \
144
- --iae-scenarios "req-0001:scenario-0001|req-0001:scenario-0002" \
145
- -g "Configure golang-jwt library with crypto setup and validation" \
146
- --implementation-steps "Import library|Configure settings|Add crypto|Add validation" \
147
- --test-cases "JWT creates|JWT validates|JWT signature verifies" \
148
- --library-needs "golang-jwt"
149
- ```
191
+ ## Commands Reference
150
192
 
151
- Creates: `jwt-tokens-task-a7K2` (status=ready, all gates=false)
193
+ ### Workspace Commands
152
194
 
153
195
  ```bash
154
- # Task 2: Token Validation (depends on Task 1)
155
- mandor task create jwt-tokens "Token Validation Middleware" \
156
- --spec-id jwt-auth-spec \
157
- --iae-scenarios "req-0002:scenario-0001" \
158
- --depends-on jwt-tokens-task-a7K2 \
159
- -g "Implement middleware to validate JWT tokens on all protected endpoints" \
160
- --implementation-steps "Create middleware|Extract token|Validate|Return errors" \
161
- --test-cases "Valid passes|Expired rejects|Invalid rejects"
162
- ```
196
+ # Initialize a new workspace
197
+ mandor init [--workspace-name <name>] [-y]
163
198
 
164
- Creates: `jwt-tokens-task-b3M8` (status=blocked, waiting for task-a7K2)
199
+ # View workspace and project status
200
+ mandor status [--project <id>] [--summary] [--json]
165
201
 
166
- ### 8. Track Progress
202
+ # Manage configuration
203
+ mandor config get <key>
204
+ mandor config set <key> <value>
205
+ mandor config list
206
+ mandor config reset <key>
167
207
 
168
- ```bash
169
- # See feature with all tasks
170
- mandor track feature jwt-tokens
171
- ```
208
+ # Display all commands and best practices
209
+ mandor populate
210
+
211
+ # Show version
212
+ mandor version
172
213
 
173
- Output shows:
174
- - Task 1: status=ready, gates=false
175
- - Task 2: status=blocked (waiting for Task 1)
214
+ # Generate shell completions
215
+ mandor completion [bash|zsh|fish]
176
216
 
177
- ### 9. Set Gates & Start Work
217
+ # AI-assisted documentation
218
+ mandor ai --help
219
+ ```
220
+
221
+ ### Track Commands
178
222
 
179
223
  ```bash
180
- # Read brief, spec, and session notes first
181
- # Then set gates for Task 1:
182
- mandor task set-gate jwt-tokens-task-a7K2 --is-read-brief
183
- mandor task set-gate jwt-tokens-task-a7K2 --is-read-spec
184
- mandor task set-gate jwt-tokens-task-a7K2 --is-read-session-notes
224
+ # Track workspace status
225
+ mandor track
185
226
 
186
- # Transition to in_progress (requires all gates=true)
187
- mandor task update jwt-tokens-task-a7K2 --status in_progress
227
+ # Track project status
228
+ mandor track project <project-id>
188
229
 
189
- # Work on implementation...
230
+ # Track feature with tasks
231
+ mandor track feature <feature-id> [--verbose]
190
232
 
191
- # Mark complete
192
- mandor task update jwt-tokens-task-a7K2 --status done
233
+ # Track specific task
234
+ mandor track task <task-id>
193
235
 
194
- # Task 2 automatically transitions: blocked → ready
195
- mandor track feature jwt-tokens # Now shows Task 2 as ready
236
+ # Track issue
237
+ mandor track issue <issue-id>
196
238
  ```
197
239
 
198
- ### 10. Repeat for Task 2
240
+ ### Session Commands
199
241
 
200
242
  ```bash
201
- # Set gates for Task 2
202
- mandor task set-gate jwt-tokens-task-b3M8 --is-read-brief
203
- mandor task set-gate jwt-tokens-task-b3M8 --is-read-spec
204
- mandor task set-gate jwt-tokens-task-b3M8 --is-read-session-notes
243
+ # Add a progress note (AI agents use this to track work)
244
+ mandor session note "Completed v0.4.4 release and testing"
205
245
 
206
- # Start work
207
- mandor task update jwt-tokens-task-b3M8 --status in_progress
246
+ # Read recent session notes (last 50 entries by default)
247
+ mandor session note --read
248
+
249
+ # Read more notes with offset
250
+ mandor session note --read --offset 100
208
251
  ```
209
252
 
210
- ---
253
+ ### Project Commands
211
254
 
212
- ## Workflow
255
+ ```bash
256
+ # Create a project
257
+ mandor project create <id> --name <name> --goal <goal> [OPTIONS]
213
258
 
214
- ### Complete Pipeline
259
+ # Show project details
260
+ mandor project detail <project-id>
215
261
 
262
+ # Update project
263
+ mandor project update <project-id> [--name <name>] [--goal <goal>] [--status <status>]
216
264
  ```
217
- 1. Brief (Intent & Capabilities)
218
-
219
- 2. Spec (Requirements & IAE Scenarios)
220
-
221
- 3. Blueprint (Architecture Decisions)
222
-
223
- 4. Feature (Spec Mapping)
224
-
225
- 5. Task (Work Items with IAE References)
226
- ```
227
-
228
- ### Gate Enforcement
229
265
 
230
- Every task has three read gates:
231
- - **IsReadBrief**: Have you read the Brief?
232
- - **IsReadSpec**: Have you read the Spec?
233
- - **IsReadSessionNotes**: Have you read session notes?
266
+ ### Feature Commands
234
267
 
235
- **All three gates MUST be true before ready → in_progress transition.**
236
-
237
- Gates are NOT required for:
238
- - ready → cancelled
239
- - in_progress → done
240
- - blocked → ready (auto-transition)
268
+ ```bash
269
+ # Create a feature
270
+ mandor feature create <name> --project <id> --goal <goal> [--scope <scope>] [--priority <priority>]
241
271
 
242
- ### Dependency Auto-Resolution
272
+ # List features
273
+ mandor feature list --project <id>
243
274
 
244
- Tasks with `--depends-on`:
245
- - Auto-assigned `status=blocked` on creation
246
- - Stay blocked until ALL dependencies are `done`
247
- - Auto-transition `blocked → ready` when dependencies complete
248
- - Works cross-feature (Task A in Feature 1 depends on Task B in Feature 2)
249
- - Cascading: Task A done → unblocks Task B → Task B done → unblocks Task C
275
+ # Show feature details
276
+ mandor feature detail <feature-id> --project <id>
250
277
 
251
- ---
278
+ # Update feature
279
+ 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]
280
+ ```
252
281
 
253
- ## Commands
282
+ ### Task Commands
254
283
 
255
- ### Essential Three Commands
284
+ ```bash
285
+ # Create a task
286
+ mandor task create <feature_id> <name> --goal <goal> \
287
+ --implementation-steps <steps> --test-cases <cases> \
288
+ --derivable-files <files> --library-needs <libs> \
289
+ [--priority <priority>] [--depends-on <ids>]
256
290
 
257
- #### 1. mandor populate
258
- View all available commands and usage instructions.
291
+ # Show task details
292
+ mandor task detail <task-id>
259
293
 
260
- ```bash
261
- mandor populate # Full reference
262
- mandor populate | grep "brief" # Find relevant sections
294
+ # Update task
295
+ mandor task update <task-id> [--name <text>] [--goal <goal>] [--priority <priority>] \
296
+ [--status <status>] [--depends-add <ids>] [--depends-remove <ids>] [--cancel --reason <text>] [--dry-run]
263
297
  ```
264
298
 
265
- #### 2. mandor track
266
- Check status of workspace, projects, features, tasks, issues.
299
+ ### Issue Commands
267
300
 
268
301
  ```bash
269
- mandor track # Workspace overview
270
- mandor track project <project-id> # Project features
271
- mandor track feature <feature-id> # Feature with tasks
272
- mandor track task <task-id> # Task with gate status
273
- mandor track task <task-id> --json # Machine-readable
274
- ```
302
+ # Create an issue
303
+ mandor issue create <name> --project <id> --type <type> --goal <goal> \
304
+ --affected-files <files> --affected-tests <tests> \
305
+ --implementation-steps <steps> [--priority <priority>] [--depends-on <ids>] [--library-needs <libs>]
275
306
 
276
- #### 3. mandor session note
277
- Record and read session progress (for AI agents).
307
+ # Show issue details
308
+ mandor issue detail <issue-id> --project <id>
278
309
 
279
- ```bash
280
- mandor session note "Completed Task 1 and dependencies"
281
- mandor session note --read # Show last 50 notes
282
- mandor session note --read --offset 100 # Show more notes
310
+ # Update issue
311
+ mandor issue update <issue-id> [--name <text>] [--goal <goal>] [--priority <priority>] \
312
+ [--type <type>] [--status <status>] [--start] [--resolve] [--wontfix] [--reason <text>] [--cancel --reason <text>] [--dry-run]
283
313
  ```
284
314
 
285
- ### Full Command Reference
286
-
287
- **For complete command documentation, run:**
315
+ ### AI Commands
288
316
 
289
317
  ```bash
290
- mandor populate # Shows all commands with examples
291
- mandor -h # Shows available commands
292
- mandor <cmd> -h # Shows specific command help
318
+ # AI-assisted documentation generation
319
+ mandor ai agents
320
+ mandor ai claude
293
321
  ```
294
322
 
295
- ### Quick Command List
296
-
297
- | Category | Commands |
298
- |----------|----------|
299
- | **Workspace** | `init`, `config` |
300
- | **Project** | `create`, `detail`, `update`, `delete`, `reopen` |
301
- | **Brief** | `create`, `read`, `update`, `delete`, `validate` |
302
- | **Spec** | `create`, `detail`, `update`, `delete`, `validate` |
303
- | **Blueprint** | `create`, `detail`, `update`, `delete`, `validate` |
304
- | **Feature** | `create`, `detail`, `update`, `delete` |
305
- | **Task** | `create`, `detail`, `set-gate`, `read-gates`, `update` |
306
- | **Issue** | `create`, `detail`, `update` |
307
- | **Track** | `track` (workspace\|project\|feature\|task\|issue) |
308
- | **Session** | `session note` |
309
-
310
323
  ---
311
324
 
312
- ## Best Practices
313
325
 
314
- ### 1. Follow the Complete Workflow
326
+ ## Common Workflows
315
327
 
316
- Brief Spec Blueprint → Feature → Task
328
+ ### Replace This (Markdown Plan Files)
317
329
 
318
- Don't skip steps. Each phase builds context for the next.
330
+ ```markdown
331
+ # PLAN.md
332
+ ## Phase 1: Authentication
333
+ - [ ] JWT parser (depends on cryptography)
334
+ - [ ] Login endpoint (depends on JWT parser)
335
+ - [ ] Refresh token (depends on JWT parser)
319
336
 
320
- ### 2. Write Comprehensive Briefs
337
+ Status: Last updated 3 days ago (probably stale!)
338
+ ```
321
339
 
322
- Include:
323
- - Clear problem statement and motivation
324
- - Well-defined capabilities with descriptions
325
- - Technical stack that will be used
326
- - Affected systems and dependencies
340
+ ### With This (Mandor)
327
341
 
328
342
  ```bash
329
- mandor brief create -p api \
330
- --name "Authentication" \
331
- --why "Secure stateless API authentication" \
332
- --capabilities "login:User login|tokens:Token management" \
333
- --tech-stack "golang,jwt,postgres"
334
- ```
343
+ # Create structured plan
344
+ mandor feature create "Authentication" --project api \
345
+ --goal "Implement JWT and login endpoints" \
346
+ --scope backend
335
347
 
336
- ### 3. Detailed Specs with IAE Scenarios
348
+ # Create tasks with explicit dependencies
349
+ mandor task create api-feature-xxxx "JWT Parser" \
350
+ --goal "Validate JWT tokens..." \
351
+ --implementation-steps "Step 1|Step 2" \
352
+ --test-cases "Test invalid tokens|Test expired" \
353
+ --library-needs "jsonwebtoken" \
354
+ --priority P1
337
355
 
338
- Create specs with Intent-Action-Expectation scenarios:
356
+ mandor task create api-feature-xxxx "Login Endpoint" \
357
+ --goal "Accept credentials and return JWT..." \
358
+ --depends-on api-feature-xxxx-task-xxxx \
359
+ --priority P1
339
360
 
340
- ```bash
341
- mandor spec create -p api \
342
- --capability login \
343
- --summary "Login specification" \
344
- --requirements "Login:User enters creds:Check password|Token:Generate JWT:Return token|Refresh:Extend session:Issue new token"
361
+ # Real-time progress queries
362
+ mandor track feature api-feature-xxxx # See all tasks and status
363
+ mandor track task api-feature-xxxx-task-xxxx # See specific task details
345
364
  ```
346
365
 
347
- Specs become reference documents for tasks and gates.
366
+ **Benefits:**
367
+ - No file sync required
368
+ - Dependencies auto-validated
369
+ - Blocking tasks auto-detected
370
+ - Structured JSONL storage
371
+ - Queryable via CLI or JSON
372
+ - Works in CI/CD pipelines
348
373
 
349
- ### 4. Link Tasks to Spec Requirements
350
-
351
- Tasks reference specific requirement-scenario pairs:
374
+ ### Dependency Management
352
375
 
353
376
  ```bash
354
- mandor task create feature-id "Implement Login" \
355
- --spec-id spec-id \
356
- --iae-scenarios "req-0001:scenario-0001|req-0002:scenario-0001"
357
- ```
358
-
359
- Traces implementation back to requirements.
377
+ # View all projects and their status
378
+ mandor status
360
379
 
361
- ### 5. Gate Enforcement Discipline
380
+ # Check a specific project
381
+ mandor status --project api
362
382
 
363
- Always follow the gate workflow:
383
+ # View feature dependencies and progress
384
+ mandor track project api
364
385
 
365
- 1. Read Brief thoroughly
366
- 2. Read Spec with requirements
367
- 3. Read session notes from previous work
368
- 4. Set all three gates
369
- 5. Transition to in_progress
370
- 6. Implement
371
- 7. Mark done (auto-unblocks dependents)
386
+ # Create tasks with dependencies
387
+ mandor task create api-feature-xxxx "Task" \
388
+ --goal "..." \
389
+ --implementation-steps "..." \
390
+ --test-cases "..." \
391
+ --library-needs "..." \
392
+ --depends-on api-feature-xxxx-task-xxxx
372
393
 
373
- ```bash
374
- # Check task status
375
- mandor track task <task-id>
394
+ # See all feature tasks with status
395
+ mandor track feature api-feature-xxxx
376
396
 
377
- # Set gates
378
- mandor task set-gate <task-id> --is-read-brief
379
- mandor task set-gate <task-id> --is-read-spec
380
- mandor task set-gate <task-id> --is-read-session-notes
397
+ # Mark as done (auto-unblocks dependents)
398
+ mandor task update api-feature-xxxx-task-xxxx --status done
381
399
 
382
- # Start work
383
- mandor task update <task-id> --status in_progress
400
+ # Verify dependents auto-transitioned to ready
401
+ mandor track feature api-feature-xxxx
384
402
  ```
385
403
 
386
- ### 6. Dependency Management
387
-
388
- Create dependent tasks with clear relationships:
404
+ ### Issue Tracking
389
405
 
390
406
  ```bash
391
- # Task A (no dependencies)
392
- mandor task create feature-id "Task A" \
393
- --spec-id spec-id \
394
- --iae-scenarios "req-0001:scenario-0001" \
395
- -g "..." \
396
- --implementation-steps "s1|s2" \
397
- --test-cases "t1|t2"
407
+ # Create a bug issue
408
+ mandor issue create "Memory leak in auth handler" \
409
+ --project api \
410
+ --type bug \
411
+ --priority P0 \
412
+ --goal "Goroutine not cleaned up in token refresh handler..." \
413
+ --affected-files "src/handlers/auth.go|src/middleware/auth.go" \
414
+ --affected-tests "src/handlers/auth_test.go" \
415
+ --implementation-steps "Identify|Fix|Add tests|Verify" \
416
+ --library-needs "none"
398
417
 
399
- # Task B (depends on Task A)
400
- mandor task create feature-id "Task B" \
401
- --spec-id spec-id \
402
- --iae-scenarios "req-0002:scenario-0001" \
403
- --depends-on <task-a-id> \
404
- -g "..." \
405
- --implementation-steps "s1|s2" \
406
- --test-cases "t1|t2"
407
- ```
418
+ # View issue details
419
+ mandor issue detail api-issue-abc123
408
420
 
409
- Task B auto-blocks until Task A is done.
421
+ # Start working on an issue
422
+ mandor issue update api-issue-abc123 --start
410
423
 
411
- ### 7. Configuration for Your Team
424
+ # Mark as resolved
425
+ mandor issue update api-issue-abc123 --resolve
412
426
 
413
- Set defaults early, rarely change:
427
+ # Mark as won't fix with reason
428
+ mandor issue update api-issue-abc123 --wontfix --reason "Working as intended"
429
+
430
+ # See project issues with track
431
+ mandor track project api
432
+ ```
433
+
434
+ ### Configuration
414
435
 
415
436
  ```bash
437
+ # Set default priority
416
438
  mandor config set default_priority P2
439
+
440
+ # Enable strict mode
417
441
  mandor config set strict_mode true
418
- mandor config set goal.lengths.task 500
442
+
443
+ # View all configuration
444
+ mandor config list
445
+
446
+ # Get specific value
447
+ mandor config get default_priority
448
+
449
+ # Reset to default
450
+ mandor config reset default_priority
419
451
  ```
420
452
 
421
- ### 8. Document Status Changes
453
+ ---
454
+
455
+
456
+ ## Best Practices
457
+
458
+ ### 1. Use Meaningful IDs
422
459
 
423
- Always explain why you're cancelling or changing status:
460
+ Project and feature IDs should be:
461
+ - Short but descriptive
462
+ - Lowercase with hyphens
463
+ - Consistent naming convention
424
464
 
425
465
  ```bash
426
- mandor task update <task-id> --status cancelled \
427
- --reason "Superseded by feature X"
466
+ # Good
467
+ mandor project create user-auth
468
+ mandor feature create jwt-tokens
469
+
470
+ # Avoid
471
+ mandor project create p1
472
+ mandor feature create f123
428
473
  ```
429
474
 
430
- ### 9. Use Pipe Separators for Lists
475
+ ### 2. Write Clear Goals (min char requirement enforced)
476
+
477
+ Goals should include:
478
+ - What is being built/fixed
479
+ - Why it matters
480
+ - Technical requirements
481
+ - Acceptance criteria
431
482
 
432
483
  ```bash
433
- --implementation-steps "Step 1|Step 2|Step 3"
434
- --test-cases "Test 1|Test 2|Test 3"
435
- --iae-scenarios "req-0001:scenario-0001|req-0002:scenario-0001"
436
- --depends-on "task-1|task-2|task-3"
484
+ # Good
485
+ --goal "Implement JWT-based authentication with login and refresh flows for secure API access"
486
+
487
+ # Avoid
488
+ --goal "Add authentication"
437
489
  ```
438
490
 
439
- ### 10. Track Regularly Before Starting
491
+ ### 3. Use Scopes for Features
440
492
 
441
- Always check status first:
493
+ Organize by scope:
494
+ - `frontend`, `backend`, `fullstack`
495
+ - `cli`, `desktop`, `android`, `flutter`, `react-native`, `ios`, `swift`
442
496
 
443
497
  ```bash
444
- mandor track feature <feature-id> # See all task states
445
- mandor track task <task-id> # Check gate status and dependencies
498
+ mandor feature create "Login UI" --project api --scope frontend
499
+ mandor feature create "Login API" --project api --scope backend
446
500
  ```
447
501
 
448
- ### 11. AI Agent Session Management
502
+ ### 4. Keep Dependencies Shallow
449
503
 
450
- Log your progress between sessions:
504
+ Deep dependency chains (>5 levels) are hard to manage. Consider breaking into smaller features.
451
505
 
452
506
  ```bash
453
- # End of session
454
- mandor session note "Completed task setup and testing, next: validation middleware"
507
+ # Good: tasks depend on other tasks in same feature
508
+ mandor task create api-feature-xxxx "Task B" \
509
+ --goal "..." \
510
+ --implementation-steps "..." \
511
+ --test-cases "..." \
512
+ --depends-on api-feature-xxxx-task-xxxx
455
513
 
456
- # Start of session
457
- mandor session note --read # See what was done
514
+ # Consider splitting if: task chains exceed 5 levels
458
515
  ```
459
516
 
460
- ---
517
+ ### 5. Use Issues for Bugs, Tasks for Features
461
518
 
462
- ## Status Transitions
519
+ - **Tasks**: Feature work, implementation, refactoring
520
+ - **Issues**: Bugs, improvements, technical debt, security, performance
463
521
 
464
- ### Task Lifecycle
522
+ ```bash
523
+ # Feature work
524
+ mandor task create api-feature-xxxx "Add OAuth2" \
525
+ --goal "..." \
526
+ --implementation-steps "..." \
527
+ --test-cases "..." \
528
+ --library-needs "oauth2-lib"
465
529
 
530
+ # Bug fix
531
+ mandor issue create "Fix auth timeout" --project api --type bug
466
532
  ```
467
- New (with depends-on) New (no depends)
468
- ↓ ↓
469
- blocked ready
470
- ↓ ↓
471
- └──────→ ready ←──────┐ │
472
- ↓ ↑ │ │
473
- in_progress │ │ │
474
- ↓ │ │ │
475
- done ├──cancelled│──────┤
476
- │ │ │
477
- └──────────┴───────┘
533
+
534
+ ### 6. Document Cancellation Reasons
535
+
536
+ Always provide clear reasons when cancelling:
537
+
538
+ ```bash
539
+ mandor task update api-feature-xxxx-task-xxxx --cancel --reason "Superseded by feature X"
540
+ mandor feature update api-feature-xxxx --project api --cancel --reason "Sticking with JWT, OAuth2 adds too much complexity"
478
541
  ```
479
542
 
480
- **Rules:**
481
- - New task without `--depends-on`: status=ready, all gates=false
482
- - New task with `--depends-on`: status=blocked
483
- - blocked → ready: auto-transition when dependencies done
484
- - ready → in_progress: requires all three gates=true
485
- - ready → cancelled: allowed without gates
486
- - in_progress → done: allowed without gates
487
- - done: immutable, no transitions out
488
- - Error messages show which gates are unmet
543
+ ### 7. Use Pipe Separators For Lists
489
544
 
490
- ---
545
+ For flags accepting multiple values, use pipe separators:
491
546
 
492
- ## File Structure
547
+ ```bash
548
+ # Implementation steps
549
+ --implementation-steps "Step 1|Step 2|Step 3"
493
550
 
494
- ```
495
- .mandor/
496
- ├── workspace.json # Workspace metadata
497
- ├── config.json # Configuration
498
- ├── session-notes.jsonl # AI session progress (NDJSON)
499
- └── projects/
500
- └── <project-id>/
501
- ├── project.json
502
- ├── briefs/
503
- │ └── <brief-id>.md # Brief document
504
- ├── specs/
505
- │ └── <spec-id>.md # Spec with requirements
506
- ├── blueprints.jsonl # Blueprint records
507
- ├── features.jsonl # Feature records
508
- ├── tasks.jsonl # Task records
509
- └── issues.jsonl # Issue records
510
- ```
551
+ # Test cases
552
+ --test-cases "Case 1|Case 2|Case 3"
511
553
 
512
- ---
554
+ # Dependencies
555
+ --depends-on task-1|task-2|task-3
556
+ ```
513
557
 
514
- ## Configuration
558
+ ### 8. Use --dry-run Before Major Changes
515
559
 
516
- | Key | Type | Default | Description |
517
- |-----|------|---------|-------------|
518
- | `default_priority` | string | P3 | Default priority for new entities (P0-P5) |
519
- | `strict_mode` | boolean | false | Enable strict validation |
520
- | `goal.lengths.project` | integer | 500 | Min chars for project goal |
521
- | `goal.lengths.feature` | integer | 300 | Min chars for feature goal |
522
- | `goal.lengths.task` | integer | 500 | Min chars for task goal |
523
- | `goal.lengths.issue` | integer | 200 | Min chars for issue goal |
560
+ Before making significant updates, preview with `--dry-run`:
524
561
 
525
562
  ```bash
526
- mandor config list # Show all
527
- mandor config get default_priority # Get one
528
- mandor config set default_priority P2 # Set one
529
- mandor config reset default_priority # Reset to default
563
+ mandor task update api-feature-xxxx-task-xxxx --status done --dry-run
564
+ mandor feature update api-feature-xxxx --project api --cancel --reason "..." --dry-run
530
565
  ```
531
566
 
532
- ---
567
+ ### 9. Dependency Auto-Resolution
533
568
 
534
- ## Troubleshooting
569
+ - Mark task done → dependents auto-transition to ready
570
+ - Mark issue resolved → dependents auto-transition to ready
571
+ - Manual block → must manually unblock
572
+
573
+ ### 10. Configure Early, Rarely Change
535
574
 
536
- ### Gate Transition Error
575
+ Configure workspace defaults at the start:
537
576
 
538
- **Error:** "Cannot transition to in_progress: gates not set"
577
+ ```bash
578
+ mandor init "Project Name"
579
+ mandor config set default_priority P2
580
+ mandor config set strict_mode true
581
+ ```
539
582
 
540
- **Solution:** Set all three gates before transitioning
583
+ ### 11. Review Status Regularly
541
584
 
542
585
  ```bash
543
- mandor track task <task-id> # Check which gates are false
586
+ # Workspace overview
587
+ mandor status
544
588
 
545
- mandor task set-gate <task-id> --is-read-brief
546
- mandor task set-gate <task-id> --is-read-spec
547
- mandor task set-gate <task-id> --is-read-session-notes
589
+ # Project summary
590
+ mandor status --project api
548
591
 
549
- mandor task update <task-id> --status in_progress
592
+ # See feature progress
593
+ mandor track project api
594
+
595
+ # See feature tasks
596
+ mandor track feature api-feature-xxxx
597
+
598
+ # See task details
599
+ mandor track task api-feature-xxxx-task-xxxx
550
600
  ```
551
601
 
552
- ### Task Blocked by Dependencies
602
+ ---
553
603
 
554
- **Error:** "Task is blocked by dependencies"
555
604
 
556
- **Solution:** Complete all blocking tasks first
605
+ ## Troubleshooting
557
606
 
558
- ```bash
559
- mandor track task <task-id> # See which tasks are blocking
607
+ ### "Command not found"
560
608
 
561
- # Complete each blocking task
562
- mandor task update <blocking-task-id> --status done
609
+ Ensure mandor is in your PATH:
563
610
 
564
- # Dependent task auto-transitions to ready
565
- mandor track task <task-id>
611
+ ```bash
612
+ export PATH="$HOME/.local/bin:$PATH"
566
613
  ```
567
614
 
568
- ### Feature Not Found
569
-
570
- **Error:** "Feature not found" or "Entity not found"
615
+ ### "Project not found"
571
616
 
572
- **Solution:** Verify ID and check workspace
617
+ Check the project ID and ensure you're in the correct workspace:
573
618
 
574
619
  ```bash
575
- mandor track project <project-id> # List all features
576
- mandor track feature <feature-id> # Check if exists
620
+ mandor status
577
621
  ```
578
622
 
579
- ---
623
+ ### "Entity not found"
624
+
625
+ Verify the entity ID exists:
626
+
627
+ ```bash
628
+ mandor track feature <feature-id>
629
+ mandor track project <project-id>
630
+ ```
580
631
 
581
- ## Development
632
+ ### "Cross-project dependency detected"
582
633
 
583
- ### Build
634
+ The project doesn't allow cross-project dependencies:
584
635
 
585
636
  ```bash
586
- cd Mandor
587
- go build -o mandor ./cmd/mandor
637
+ # Check project config
638
+ mandor project detail <project-id>
639
+
640
+ # Create new project with cross-project enabled
641
+ mandor project create <id> --name "..." --goal "..." --task-dep cross_project_allowed
588
642
  ```
589
643
 
590
- ### Run Tests
644
+ ### "Invalid status transition"
645
+
646
+ The transition isn't allowed by the state machine:
591
647
 
592
648
  ```bash
593
- go test ./...
649
+ # Tasks: pending → ready → in_progress → done
650
+ # Features: draft → active → done
651
+ # Issues: open → ready → in_progress → resolved
594
652
  ```
595
653
 
596
- ### View All Commands
654
+ ### "Cannot create task for cancelled feature"
655
+
656
+ Reopen the feature first:
597
657
 
598
658
  ```bash
599
- ./mandor --help
600
- ./mandor populate # Full reference with examples
659
+ mandor feature update <feature-id> --project <project-id> --reopen
601
660
  ```
602
661
 
603
662
  ---
604
663
 
605
- ## Key Features
606
664
 
607
- **Structured Workflow**: Brief → Spec → Blueprint → Feature → Task
608
- ✓ **Gate Enforcement**: Three read gates required before starting work
609
- **Dependency Tracking**: Auto-blocking and auto-unblocking with cascading
610
- ✓ **Cross-Feature Dependencies**: Tasks can depend across feature boundaries
611
- **Session Tracking**: Session notes for AI agent progress
612
- **CLI-Native**: Terminal, scripts, CI/CD pipelines
613
- **Deterministic**: Single source of truth in JSONL files
614
- **Auditable**: Full change history
665
+ ## Configuration Keys
666
+
667
+ | Key | Type | Default | Description |
668
+ |-----|------|---------|-------------|
669
+ | `default_priority` | string | P3 | Default priority for new entities (P0-P5) |
670
+ | `strict_mode` | boolean | false | Enable strict dependency validation |
671
+ | `goal.lengths.project` | integer | 500 | Min chars for project goal |
672
+ | `goal.lengths.feature` | integer | 300 | Min chars for feature goal |
673
+ | `goal.lengths.task` | integer | 500 | Min chars for task goal |
674
+ | `goal.lengths.issue` | integer | 200 | Min chars for issue goal |
615
675
 
616
676
  ---
617
677
 
678
+
679
+ ## File Structure
680
+
681
+ ```
682
+ .mandor/
683
+ ├── workspace.json # Workspace metadata
684
+ ├── config.json # Workspace configuration
685
+ ├── session-notes.jsonl # AI agent session progress notes (NDJSON)
686
+ └── projects/
687
+ └── <project-id>/
688
+ ├── project.json # Project metadata
689
+ ├── features.jsonl # Feature records
690
+ ├── tasks.jsonl # Task records
691
+ └── issues.jsonl # Issue records
692
+ ```
693
+
694
+ **Session Notes Format (session-notes.jsonl):**
695
+ ```json
696
+ {"timestamp":"2026-02-04T12:45:00Z","note":"Completed v0.4.4 release and testing"}
697
+ {"timestamp":"2026-02-04T14:20:00Z","note":"Started performance optimization - blocked on benchmarks"}
698
+ ```
699
+
700
+ ---
701
+
702
+
618
703
  ## Support
619
704
 
620
- - **Documentation**: Run `mandor populate` for complete command reference
621
- - **Help**: `mandor <command> --help` for any command
622
- - **Repository**: https://github.com/budisantoso/mandor
705
+ - Issues: https://github.com/sanxzy/mandor/issues
706
+ - Documentation: `/docs` directory
707
+ - Repository: https://github.com/sanxzy/mandor
623
708
 
624
709
  ---
625
710
 
711
+
626
712
  **Built for AI Agent Workflows**