@mandors/cli 0.6.0 → 0.6.2
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 +469 -383
- 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/package.json +1 -1
- package/.mandor/projects/dbg2989/events.jsonl +0 -0
- package/.mandor/projects/dbg2989/features.jsonl +0 -1
- package/.mandor/projects/dbg2989/issues.jsonl +0 -0
- package/.mandor/projects/dbg2989/project.jsonl +0 -11
- package/.mandor/projects/dbg2989/schema.json +0 -29
- package/.mandor/projects/dbg2989/tasks.jsonl +0 -0
- package/.mandor/projects/dbg3995/events.jsonl +0 -0
- package/.mandor/projects/dbg3995/features.jsonl +0 -1
- package/.mandor/projects/dbg3995/issues.jsonl +0 -0
- package/.mandor/projects/dbg3995/project.jsonl +0 -11
- package/.mandor/projects/dbg3995/schema.json +0 -29
- package/.mandor/projects/dbg3995/tasks.jsonl +0 -1
- package/.mandor/projects/dbg4038/events.jsonl +0 -0
- package/.mandor/projects/dbg4038/features.jsonl +0 -0
- package/.mandor/projects/dbg4038/issues.jsonl +0 -0
- package/.mandor/projects/dbg4038/project.jsonl +0 -11
- package/.mandor/projects/dbg4038/schema.json +0 -29
- package/.mandor/projects/dbg4038/tasks.jsonl +0 -0
- package/.mandor/projects/dbg5043/events.jsonl +0 -0
- package/.mandor/projects/dbg5043/features.jsonl +0 -0
- package/.mandor/projects/dbg5043/issues.jsonl +0 -0
- package/.mandor/projects/dbg5043/project.jsonl +0 -11
- package/.mandor/projects/dbg5043/schema.json +0 -29
- package/.mandor/projects/dbg5043/tasks.jsonl +0 -0
- package/.mandor/projects/dbg6047/events.jsonl +0 -0
- package/.mandor/projects/dbg6047/features.jsonl +0 -0
- package/.mandor/projects/dbg6047/issues.jsonl +0 -0
- package/.mandor/projects/dbg6047/project.jsonl +0 -11
- package/.mandor/projects/dbg6047/schema.json +0 -29
- package/.mandor/projects/dbg6047/tasks.jsonl +0 -0
- package/.mandor/projects/dbg982/events.jsonl +0 -0
- package/.mandor/projects/dbg982/features.jsonl +0 -0
- package/.mandor/projects/dbg982/issues.jsonl +0 -0
- package/.mandor/projects/dbg982/project.jsonl +0 -11
- package/.mandor/projects/dbg982/schema.json +0 -29
- package/.mandor/projects/dbg982/tasks.jsonl +0 -0
- package/.mandor/projects/test065/events.jsonl +0 -0
- package/.mandor/projects/test065/features.jsonl +0 -2
- package/.mandor/projects/test065/issues.jsonl +0 -0
- package/.mandor/projects/test065/project.jsonl +0 -11
- package/.mandor/projects/test065/schema.json +0 -29
- package/.mandor/projects/test065/tasks.jsonl +0 -11
- package/.mandor/projects/test086/events.jsonl +0 -0
- package/.mandor/projects/test086/features.jsonl +0 -2
- package/.mandor/projects/test086/issues.jsonl +0 -0
- package/.mandor/projects/test086/project.jsonl +0 -11
- package/.mandor/projects/test086/schema.json +0 -29
- package/.mandor/projects/test086/tasks.jsonl +0 -11
- package/.mandor/projects/test105/events.jsonl +0 -0
- package/.mandor/projects/test105/features.jsonl +0 -2
- package/.mandor/projects/test105/issues.jsonl +0 -0
- package/.mandor/projects/test105/project.jsonl +0 -11
- package/.mandor/projects/test105/schema.json +0 -29
- package/.mandor/projects/test105/tasks.jsonl +0 -11
- package/.mandor/projects/test109/events.jsonl +0 -0
- package/.mandor/projects/test109/features.jsonl +0 -2
- package/.mandor/projects/test109/issues.jsonl +0 -0
- package/.mandor/projects/test109/project.jsonl +0 -11
- package/.mandor/projects/test109/schema.json +0 -29
- package/.mandor/projects/test109/tasks.jsonl +0 -11
- package/.mandor/projects/test114/events.jsonl +0 -0
- package/.mandor/projects/test114/features.jsonl +0 -2
- package/.mandor/projects/test114/issues.jsonl +0 -0
- package/.mandor/projects/test114/project.jsonl +0 -11
- package/.mandor/projects/test114/schema.json +0 -29
- package/.mandor/projects/test114/tasks.jsonl +0 -11
- package/.mandor/projects/test136/events.jsonl +0 -0
- package/.mandor/projects/test136/features.jsonl +0 -2
- package/.mandor/projects/test136/issues.jsonl +0 -0
- package/.mandor/projects/test136/project.jsonl +0 -11
- package/.mandor/projects/test136/schema.json +0 -29
- package/.mandor/projects/test136/tasks.jsonl +0 -11
- package/.mandor/projects/test140/events.jsonl +0 -0
- package/.mandor/projects/test140/features.jsonl +0 -2
- package/.mandor/projects/test140/issues.jsonl +0 -0
- package/.mandor/projects/test140/project.jsonl +0 -11
- package/.mandor/projects/test140/schema.json +0 -29
- package/.mandor/projects/test140/tasks.jsonl +0 -11
- package/.mandor/projects/test150/events.jsonl +0 -0
- package/.mandor/projects/test150/features.jsonl +0 -2
- package/.mandor/projects/test150/issues.jsonl +0 -0
- package/.mandor/projects/test150/project.jsonl +0 -11
- package/.mandor/projects/test150/schema.json +0 -29
- package/.mandor/projects/test150/tasks.jsonl +0 -11
- package/.mandor/projects/test154/events.jsonl +0 -0
- package/.mandor/projects/test154/features.jsonl +0 -2
- package/.mandor/projects/test154/issues.jsonl +0 -0
- package/.mandor/projects/test154/project.jsonl +0 -11
- package/.mandor/projects/test154/schema.json +0 -29
- package/.mandor/projects/test154/tasks.jsonl +0 -11
- package/.mandor/projects/test858/events.jsonl +0 -0
- package/.mandor/projects/test858/features.jsonl +0 -0
- package/.mandor/projects/test858/issues.jsonl +0 -0
- package/.mandor/projects/test858/project.jsonl +0 -11
- package/.mandor/projects/test858/schema.json +0 -29
- package/.mandor/projects/test858/tasks.jsonl +0 -0
- package/.mandor/projects/test865/events.jsonl +0 -0
- package/.mandor/projects/test865/features.jsonl +0 -0
- package/.mandor/projects/test865/issues.jsonl +0 -0
- package/.mandor/projects/test865/project.jsonl +0 -11
- package/.mandor/projects/test865/schema.json +0 -29
- package/.mandor/projects/test865/tasks.jsonl +0 -0
- package/.mandor/projects/test868/events.jsonl +0 -0
- package/.mandor/projects/test868/features.jsonl +0 -0
- package/.mandor/projects/test868/issues.jsonl +0 -0
- package/.mandor/projects/test868/project.jsonl +0 -11
- package/.mandor/projects/test868/schema.json +0 -29
- package/.mandor/projects/test868/tasks.jsonl +0 -0
- package/.mandor/projects/test871/events.jsonl +0 -0
- package/.mandor/projects/test871/features.jsonl +0 -0
- package/.mandor/projects/test871/issues.jsonl +0 -0
- package/.mandor/projects/test871/project.jsonl +0 -11
- package/.mandor/projects/test871/schema.json +0 -29
- package/.mandor/projects/test871/tasks.jsonl +0 -0
- package/.mandor/projects/test878/events.jsonl +0 -0
- package/.mandor/projects/test878/features.jsonl +0 -0
- package/.mandor/projects/test878/issues.jsonl +0 -0
- package/.mandor/projects/test878/project.jsonl +0 -11
- package/.mandor/projects/test878/schema.json +0 -29
- package/.mandor/projects/test878/tasks.jsonl +0 -0
- package/.mandor/projects/test884/events.jsonl +0 -0
- package/.mandor/projects/test884/features.jsonl +0 -0
- package/.mandor/projects/test884/issues.jsonl +0 -0
- package/.mandor/projects/test884/project.jsonl +0 -11
- package/.mandor/projects/test884/schema.json +0 -29
- package/.mandor/projects/test884/tasks.jsonl +0 -0
- package/.mandor/projects/test891/events.jsonl +0 -0
- package/.mandor/projects/test891/features.jsonl +0 -0
- package/.mandor/projects/test891/issues.jsonl +0 -0
- package/.mandor/projects/test891/project.jsonl +0 -11
- package/.mandor/projects/test891/schema.json +0 -29
- package/.mandor/projects/test891/tasks.jsonl +0 -0
- package/.mandor/projects/test977/events.jsonl +0 -0
- package/.mandor/projects/test977/features.jsonl +0 -2
- package/.mandor/projects/test977/issues.jsonl +0 -0
- package/.mandor/projects/test977/project.jsonl +0 -11
- package/.mandor/projects/test977/schema.json +0 -29
- package/.mandor/projects/test977/tasks.jsonl +0 -11
- package/.mandor/session-notes.jsonl +0 -1
- package/.mandor/workspace.json +0 -19
- package/.pre-commit-config.yaml +0 -22
- package/binaries/darwin-amd64/mandor +0 -0
- package/binaries/linux-amd64/mandor +0 -0
- package/binaries/mandor +0 -0
- package/binaries/windows-amd64/mandor.exe +0 -0
- package/mandor +0 -0
- 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
|
|
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>
|
|
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="#
|
|
19
|
+
<a href="#core-concepts">Core Concepts</a> •
|
|
23
20
|
<a href="#commands">Commands</a> •
|
|
24
|
-
<a href="#
|
|
21
|
+
<a href="#examples">Examples</a>
|
|
25
22
|
</p>
|
|
26
23
|
|
|
27
24
|
---
|
|
28
25
|
|
|
29
26
|
## Why Mandor
|
|
30
27
|
|
|
31
|
-
|
|
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**:
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
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
|
-
|
|
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
|
-
- **
|
|
49
|
-
|
|
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
|
-
|
|
52
|
-
|
|
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
|
-
###
|
|
107
|
+
### Install with curl
|
|
59
108
|
|
|
60
109
|
```bash
|
|
61
|
-
|
|
62
|
-
|
|
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
|
|
114
|
+
### Install from npm
|
|
67
115
|
|
|
68
116
|
```bash
|
|
69
|
-
|
|
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
|
|
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
|
|
88
|
-
--goal "REST API with
|
|
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
|
|
139
|
+
### 3. Create a Feature
|
|
92
140
|
|
|
93
141
|
```bash
|
|
94
|
-
mandor
|
|
95
|
-
--
|
|
96
|
-
--
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
### 4. Create Spec (Requirements with IAE Scenarios)
|
|
147
|
+
### 4. Create Tasks with Dependencies
|
|
104
148
|
|
|
105
149
|
```bash
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
--
|
|
109
|
-
--
|
|
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
|
-
|
|
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.
|
|
167
|
+
### 5. View Task Progress
|
|
115
168
|
|
|
116
169
|
```bash
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
173
|
+
# Get task details
|
|
174
|
+
mandor task detail <task-id>
|
|
175
|
+
```
|
|
125
176
|
|
|
126
|
-
### 6.
|
|
177
|
+
### 6. Mark Tasks Complete
|
|
127
178
|
|
|
128
179
|
```bash
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
188
|
+
---
|
|
137
189
|
|
|
138
|
-
### 7. Create Tasks (with IAE Scenarios)
|
|
139
190
|
|
|
140
|
-
|
|
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
|
-
|
|
193
|
+
### Workspace Commands
|
|
152
194
|
|
|
153
195
|
```bash
|
|
154
|
-
#
|
|
155
|
-
mandor
|
|
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
|
-
|
|
199
|
+
# View workspace and project status
|
|
200
|
+
mandor status [--project <id>] [--summary] [--json]
|
|
165
201
|
|
|
166
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
208
|
+
# Display all commands and best practices
|
|
209
|
+
mandor populate
|
|
210
|
+
|
|
211
|
+
# Show version
|
|
212
|
+
mandor version
|
|
172
213
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
- Task 2: status=blocked (waiting for Task 1)
|
|
214
|
+
# Generate shell completions
|
|
215
|
+
mandor completion [bash|zsh|fish]
|
|
176
216
|
|
|
177
|
-
|
|
217
|
+
# AI-assisted documentation
|
|
218
|
+
mandor ai --help
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Track Commands
|
|
178
222
|
|
|
179
223
|
```bash
|
|
180
|
-
#
|
|
181
|
-
|
|
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
|
-
#
|
|
187
|
-
mandor
|
|
227
|
+
# Track project status
|
|
228
|
+
mandor track project <project-id>
|
|
188
229
|
|
|
189
|
-
#
|
|
230
|
+
# Track feature with tasks
|
|
231
|
+
mandor track feature <feature-id> [--verbose]
|
|
190
232
|
|
|
191
|
-
#
|
|
192
|
-
mandor task
|
|
233
|
+
# Track specific task
|
|
234
|
+
mandor track task <task-id>
|
|
193
235
|
|
|
194
|
-
#
|
|
195
|
-
mandor track
|
|
236
|
+
# Track issue
|
|
237
|
+
mandor track issue <issue-id>
|
|
196
238
|
```
|
|
197
239
|
|
|
198
|
-
###
|
|
240
|
+
### Session Commands
|
|
199
241
|
|
|
200
242
|
```bash
|
|
201
|
-
#
|
|
202
|
-
mandor
|
|
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
|
-
#
|
|
207
|
-
mandor
|
|
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
|
-
|
|
255
|
+
```bash
|
|
256
|
+
# Create a project
|
|
257
|
+
mandor project create <id> --name <name> --goal <goal> [OPTIONS]
|
|
213
258
|
|
|
214
|
-
|
|
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
|
-
|
|
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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
-
|
|
272
|
+
# List features
|
|
273
|
+
mandor feature list --project <id>
|
|
243
274
|
|
|
244
|
-
|
|
245
|
-
|
|
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
|
-
|
|
282
|
+
### Task Commands
|
|
254
283
|
|
|
255
|
-
|
|
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
|
-
|
|
258
|
-
|
|
291
|
+
# Show task details
|
|
292
|
+
mandor task detail <task-id>
|
|
259
293
|
|
|
260
|
-
|
|
261
|
-
mandor
|
|
262
|
-
|
|
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
|
-
|
|
266
|
-
Check status of workspace, projects, features, tasks, issues.
|
|
299
|
+
### Issue Commands
|
|
267
300
|
|
|
268
301
|
```bash
|
|
269
|
-
|
|
270
|
-
mandor
|
|
271
|
-
|
|
272
|
-
|
|
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
|
-
|
|
277
|
-
|
|
307
|
+
# Show issue details
|
|
308
|
+
mandor issue detail <issue-id> --project <id>
|
|
278
309
|
|
|
279
|
-
|
|
280
|
-
mandor
|
|
281
|
-
|
|
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
|
-
###
|
|
286
|
-
|
|
287
|
-
**For complete command documentation, run:**
|
|
315
|
+
### AI Commands
|
|
288
316
|
|
|
289
317
|
```bash
|
|
290
|
-
|
|
291
|
-
mandor
|
|
292
|
-
mandor
|
|
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
|
-
|
|
326
|
+
## Common Workflows
|
|
315
327
|
|
|
316
|
-
|
|
328
|
+
### Replace This (Markdown Plan Files)
|
|
317
329
|
|
|
318
|
-
|
|
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
|
-
|
|
337
|
+
Status: Last updated 3 days ago (probably stale!)
|
|
338
|
+
```
|
|
321
339
|
|
|
322
|
-
|
|
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
|
-
|
|
330
|
-
|
|
331
|
-
--
|
|
332
|
-
--
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
341
|
-
mandor
|
|
342
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
350
|
-
|
|
351
|
-
Tasks reference specific requirement-scenario pairs:
|
|
374
|
+
### Dependency Management
|
|
352
375
|
|
|
353
376
|
```bash
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
|
|
380
|
+
# Check a specific project
|
|
381
|
+
mandor status --project api
|
|
362
382
|
|
|
363
|
-
|
|
383
|
+
# View feature dependencies and progress
|
|
384
|
+
mandor track project api
|
|
364
385
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
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
|
-
|
|
374
|
-
|
|
375
|
-
mandor track task <task-id>
|
|
394
|
+
# See all feature tasks with status
|
|
395
|
+
mandor track feature api-feature-xxxx
|
|
376
396
|
|
|
377
|
-
#
|
|
378
|
-
mandor task
|
|
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
|
-
#
|
|
383
|
-
mandor
|
|
400
|
+
# Verify dependents auto-transitioned to ready
|
|
401
|
+
mandor track feature api-feature-xxxx
|
|
384
402
|
```
|
|
385
403
|
|
|
386
|
-
###
|
|
387
|
-
|
|
388
|
-
Create dependent tasks with clear relationships:
|
|
404
|
+
### Issue Tracking
|
|
389
405
|
|
|
390
406
|
```bash
|
|
391
|
-
#
|
|
392
|
-
mandor
|
|
393
|
-
--
|
|
394
|
-
--
|
|
395
|
-
|
|
396
|
-
--
|
|
397
|
-
--
|
|
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
|
-
#
|
|
400
|
-
mandor
|
|
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
|
-
|
|
421
|
+
# Start working on an issue
|
|
422
|
+
mandor issue update api-issue-abc123 --start
|
|
410
423
|
|
|
411
|
-
|
|
424
|
+
# Mark as resolved
|
|
425
|
+
mandor issue update api-issue-abc123 --resolve
|
|
412
426
|
|
|
413
|
-
|
|
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
|
-
|
|
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
|
-
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
## Best Practices
|
|
457
|
+
|
|
458
|
+
### 1. Use Meaningful IDs
|
|
422
459
|
|
|
423
|
-
|
|
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
|
-
|
|
427
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
434
|
-
--
|
|
435
|
-
|
|
436
|
-
|
|
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
|
-
###
|
|
491
|
+
### 3. Use Scopes for Features
|
|
440
492
|
|
|
441
|
-
|
|
493
|
+
Organize by scope:
|
|
494
|
+
- `frontend`, `backend`, `fullstack`
|
|
495
|
+
- `cli`, `desktop`, `android`, `flutter`, `react-native`, `ios`, `swift`
|
|
442
496
|
|
|
443
497
|
```bash
|
|
444
|
-
mandor
|
|
445
|
-
mandor
|
|
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
|
-
###
|
|
502
|
+
### 4. Keep Dependencies Shallow
|
|
449
503
|
|
|
450
|
-
|
|
504
|
+
Deep dependency chains (>5 levels) are hard to manage. Consider breaking into smaller features.
|
|
451
505
|
|
|
452
506
|
```bash
|
|
453
|
-
#
|
|
454
|
-
mandor
|
|
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
|
-
#
|
|
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
|
-
|
|
519
|
+
- **Tasks**: Feature work, implementation, refactoring
|
|
520
|
+
- **Issues**: Bugs, improvements, technical debt, security, performance
|
|
463
521
|
|
|
464
|
-
|
|
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
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
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
|
-
|
|
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
|
-
|
|
547
|
+
```bash
|
|
548
|
+
# Implementation steps
|
|
549
|
+
--implementation-steps "Step 1|Step 2|Step 3"
|
|
493
550
|
|
|
494
|
-
|
|
495
|
-
|
|
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
|
-
|
|
558
|
+
### 8. Use --dry-run Before Major Changes
|
|
515
559
|
|
|
516
|
-
|
|
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
|
|
527
|
-
mandor
|
|
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
|
-
|
|
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
|
-
|
|
575
|
+
Configure workspace defaults at the start:
|
|
537
576
|
|
|
538
|
-
|
|
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
|
-
|
|
583
|
+
### 11. Review Status Regularly
|
|
541
584
|
|
|
542
585
|
```bash
|
|
543
|
-
|
|
586
|
+
# Workspace overview
|
|
587
|
+
mandor status
|
|
544
588
|
|
|
545
|
-
|
|
546
|
-
mandor
|
|
547
|
-
mandor task set-gate <task-id> --is-read-session-notes
|
|
589
|
+
# Project summary
|
|
590
|
+
mandor status --project api
|
|
548
591
|
|
|
549
|
-
|
|
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
|
-
|
|
602
|
+
---
|
|
553
603
|
|
|
554
|
-
**Error:** "Task is blocked by dependencies"
|
|
555
604
|
|
|
556
|
-
|
|
605
|
+
## Troubleshooting
|
|
557
606
|
|
|
558
|
-
|
|
559
|
-
mandor track task <task-id> # See which tasks are blocking
|
|
607
|
+
### "Command not found"
|
|
560
608
|
|
|
561
|
-
|
|
562
|
-
mandor task update <blocking-task-id> --status done
|
|
609
|
+
Ensure mandor is in your PATH:
|
|
563
610
|
|
|
564
|
-
|
|
565
|
-
|
|
611
|
+
```bash
|
|
612
|
+
export PATH="$HOME/.local/bin:$PATH"
|
|
566
613
|
```
|
|
567
614
|
|
|
568
|
-
###
|
|
569
|
-
|
|
570
|
-
**Error:** "Feature not found" or "Entity not found"
|
|
615
|
+
### "Project not found"
|
|
571
616
|
|
|
572
|
-
|
|
617
|
+
Check the project ID and ensure you're in the correct workspace:
|
|
573
618
|
|
|
574
619
|
```bash
|
|
575
|
-
mandor
|
|
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
|
-
|
|
632
|
+
### "Cross-project dependency detected"
|
|
582
633
|
|
|
583
|
-
|
|
634
|
+
The project doesn't allow cross-project dependencies:
|
|
584
635
|
|
|
585
636
|
```bash
|
|
586
|
-
|
|
587
|
-
|
|
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
|
-
###
|
|
644
|
+
### "Invalid status transition"
|
|
645
|
+
|
|
646
|
+
The transition isn't allowed by the state machine:
|
|
591
647
|
|
|
592
648
|
```bash
|
|
593
|
-
|
|
649
|
+
# Tasks: pending → ready → in_progress → done
|
|
650
|
+
# Features: draft → active → done
|
|
651
|
+
# Issues: open → ready → in_progress → resolved
|
|
594
652
|
```
|
|
595
653
|
|
|
596
|
-
###
|
|
654
|
+
### "Cannot create task for cancelled feature"
|
|
655
|
+
|
|
656
|
+
Reopen the feature first:
|
|
597
657
|
|
|
598
658
|
```bash
|
|
599
|
-
|
|
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
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
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
|
-
-
|
|
621
|
-
-
|
|
622
|
-
-
|
|
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**
|