maxsimcli 4.16.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/assets/CHANGELOG.md +7 -0
  2. package/dist/assets/hooks/maxsim-check-update.cjs.map +1 -1
  3. package/dist/assets/hooks/maxsim-notification-sound.cjs +70 -0
  4. package/dist/assets/hooks/maxsim-notification-sound.cjs.map +1 -0
  5. package/dist/assets/hooks/maxsim-statusline.cjs.map +1 -1
  6. package/dist/assets/hooks/maxsim-stop-sound.cjs +70 -0
  7. package/dist/assets/hooks/maxsim-stop-sound.cjs.map +1 -0
  8. package/dist/assets/hooks/maxsim-sync-reminder.cjs.map +1 -1
  9. package/dist/assets/templates/agents/executor.md +2 -2
  10. package/dist/assets/templates/agents/planner.md +1 -1
  11. package/dist/assets/templates/agents/verifier.md +1 -1
  12. package/dist/assets/templates/commands/maxsim/quick.md +2 -2
  13. package/dist/assets/templates/skills/github-artifact-protocol/SKILL.md +8 -8
  14. package/dist/assets/templates/skills/github-tools-guide/SKILL.md +96 -0
  15. package/dist/assets/templates/workflows/execute-plan.md +82 -68
  16. package/dist/assets/templates/workflows/execute.md +51 -36
  17. package/dist/assets/templates/workflows/go.md +21 -16
  18. package/dist/assets/templates/workflows/init-existing.md +13 -16
  19. package/dist/assets/templates/workflows/new-milestone.md +23 -1
  20. package/dist/assets/templates/workflows/new-project.md +13 -16
  21. package/dist/assets/templates/workflows/plan-create.md +16 -24
  22. package/dist/assets/templates/workflows/plan-discuss.md +6 -8
  23. package/dist/assets/templates/workflows/plan-research.md +7 -6
  24. package/dist/assets/templates/workflows/plan.md +21 -14
  25. package/dist/assets/templates/workflows/progress.md +45 -20
  26. package/dist/assets/templates/workflows/quick.md +21 -13
  27. package/dist/assets/templates/workflows/sdd.md +13 -11
  28. package/dist/assets/templates/workflows/verify-phase.md +77 -58
  29. package/dist/cli.cjs +4410 -2265
  30. package/dist/cli.cjs.map +1 -1
  31. package/dist/install.cjs +60 -37
  32. package/dist/install.cjs.map +1 -1
  33. package/package.json +2 -4
  34. package/dist/assets/templates/workflows/discovery-phase.md +0 -292
  35. package/dist/assets/templates/workflows/execute-phase.md +0 -752
  36. package/dist/mcp-server.cjs +0 -41031
  37. package/dist/mcp-server.cjs.map +0 -1
@@ -100,16 +100,16 @@ Parse init context for `has_github_remote` and `gh_authenticated`:
100
100
  ```
101
101
  - Do NOT proceed with project setup.
102
102
 
103
- 3. Both checks passed — call `mcp_github_setup` with the project name as the milestone title:
104
- ```
105
- mcp_github_setup({ milestone_title: "[project name]" })
103
+ 3. Both checks passed — run `github setup` with the project name as the milestone title:
104
+ ```bash
105
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github setup --milestone-title "[project name]"
106
106
  ```
107
107
 
108
- 4. If `mcp_github_setup` fails:
108
+ 4. If `github setup` fails:
109
109
  - STOP with the error message returned by the tool.
110
110
  - Do not fall back to local-only mode.
111
111
 
112
- 5. Record the `project_number` and board details returned by `mcp_github_setup` for use in the Phase Issue Creation step.
112
+ 5. Record the `project_number` and board details returned by `github setup` for use in the Phase Issue Creation step.
113
113
 
114
114
  ## 2. Brownfield Offer
115
115
 
@@ -1318,15 +1318,12 @@ Display banner:
1318
1318
  - `requirements` (list of REQ-IDs mapped to this phase)
1319
1319
  - `success_criteria` (list of observable outcomes)
1320
1320
 
1321
- 2. For each phase, call `mcp_create_phase_issue`:
1322
- ```
1323
- mcp_create_phase_issue({
1324
- phase_number: "[phase_number]",
1325
- phase_name: "[phase_name]",
1326
- goal: "[goal]",
1327
- requirements: ["REQ-01", "REQ-02", ...],
1328
- success_criteria: ["criterion 1", "criterion 2", ...]
1329
- })
1321
+ 2. For each phase, run `github create-phase`:
1322
+ ```bash
1323
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github create-phase \
1324
+ --phase-number "[phase_number]" \
1325
+ --phase-name "[phase_name]" \
1326
+ --goal "[goal]"
1330
1327
  ```
1331
1328
  The tool auto-adds each issue to the project board with "To Do" status.
1332
1329
 
@@ -1487,7 +1484,7 @@ Exit skill and invoke SlashCommand("/maxsim:plan 1 --auto")
1487
1484
  - [ ] REQUIREMENTS.md created with REQ-IDs → **committed**
1488
1485
  - [ ] GitHub remote detected (gate passed)
1489
1486
  - [ ] GitHub CLI authenticated (gate passed)
1490
- - [ ] `mcp_github_setup` called successfully — project_number recorded
1487
+ - [ ] `github setup` called successfully — project_number recorded
1491
1488
  - [ ] planner (roadmap mode) spawned with context
1492
1489
  - [ ] Roadmap files written immediately (not draft)
1493
1490
  - [ ] User feedback incorporated (if any)
@@ -1496,7 +1493,7 @@ Exit skill and invoke SlashCommand("/maxsim:plan 1 --auto")
1496
1493
  - [ ] REQUIREMENTS.md traceability updated
1497
1494
  - [ ] CONVENTIONS.md generated with 4 must-have sections (Tech Stack, File Layout, Error Handling, Testing)
1498
1495
  - [ ] NO-GOS.md populated from confirmed no-gos during questioning
1499
- - [ ] `mcp_create_phase_issue` called for every phase — all issues on board with "To Do" status
1496
+ - [ ] `github create-phase` called for every phase — all issues on board with "To Do" status
1500
1497
  - [ ] Agent dry-run validation passed (Quality Score >= 7)
1501
1498
  - [ ] User knows next step is `/maxsim:plan 1`
1502
1499
 
@@ -28,8 +28,8 @@ CHECKER_MODEL=$(node .claude/maxsim/bin/maxsim-tools.cjs resolve-model planner -
28
28
  ## Step 3: Check Existing Plans
29
29
 
30
30
  Query the phase GitHub Issue for existing plan comments:
31
- ```
32
- mcp_get_issue_detail(issue_number={phase_issue_number})
31
+ ```bash
32
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue $PHASE_ISSUE_NUMBER --comments
33
33
  ```
34
34
 
35
35
  Look for comments that contain `<!-- maxsim:type=plan -->`.
@@ -295,12 +295,13 @@ After verification passes (or is skipped), post each plan as a separate comment
295
295
 
296
296
  For each plan in `plans_content`:
297
297
 
298
- ```
299
- mcp_post_plan_comment(
300
- phase_issue_number={phase_issue_number},
301
- plan_number={plan_number}, // e.g. "01", "02"
302
- plan_content="<!-- maxsim:type=plan -->\n" + {plan_content}
303
- )
298
+ ```bash
299
+ TMPFILE=$(mktemp)
300
+ cat > "$TMPFILE" << 'BODY_EOF'
301
+ <!-- maxsim:type=plan -->
302
+ {plan_content}
303
+ BODY_EOF
304
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github post-plan-comment --phase-issue-number $PHASE_ISSUE_NUMBER --plan-number "{plan_number}" --plan-content-file "$TMPFILE"
304
305
  ```
305
306
 
306
307
  If posting any plan comment fails:
@@ -320,16 +321,10 @@ Parse tasks from the posted plans. For each `<task>` element in the plan XML, ex
320
321
  - `title`
321
322
  - `description` / body content
322
323
 
323
- Call `mcp_batch_create_tasks` with the full tasks array and the phase issue number:
324
+ Run `github batch-create-tasks` with the full tasks array and the phase issue number:
324
325
 
325
- ```
326
- mcp_batch_create_tasks(
327
- phase_issue_number={phase_issue_number},
328
- tasks=[
329
- { id: "1.1", title: "Task title", description: "Task body" },
330
- ...
331
- ]
332
- )
326
+ ```bash
327
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github batch-create-tasks --phase-number "$PHASE_NUMBER" --parent-issue-number $PHASE_ISSUE_NUMBER --tasks-json '[{"id":"1.1","title":"Task title","description":"Task body"}, ...]'
333
328
  ```
334
329
 
335
330
  Each task becomes a GitHub sub-issue linked to the phase issue.
@@ -348,11 +343,8 @@ Task sub-issues created: {task_count} tasks linked to Issue #{phase_issue_number
348
343
 
349
344
  After all plans are posted and task sub-issues are created, move the phase issue to "In Progress" on the project board:
350
345
 
351
- ```
352
- mcp_move_issue(
353
- issue_number={phase_issue_number},
354
- status="In Progress"
355
- )
346
+ ```bash
347
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github move-issue --issue-number $PHASE_ISSUE_NUMBER --status "In Progress"
356
348
  ```
357
349
 
358
350
  Display:
@@ -379,8 +371,8 @@ Planning complete. {plan_count} plan(s) posted to GitHub Issue #{phase_issue_num
379
371
  - Checker verification loop runs (max 3 iterations) unless --skip-verify
380
372
  - Revision loop passes in-memory plan content to planner for targeted fixes
381
373
  - Plans posted to GitHub Issue #{phase_issue_number} as comments with <!-- maxsim:type=plan --> markers
382
- - Task sub-issues created via mcp_batch_create_tasks linked to phase issue
383
- - Phase issue moved to "In Progress" via mcp_move_issue
374
+ - Task sub-issues created via `github batch-create-tasks` linked to phase issue
375
+ - Phase issue moved to "In Progress" via `github move-issue`
384
376
  - Failed task creation surfaced with retry option (WIRE-07)
385
377
  - Control returned to orchestrator without showing gate or next steps
386
378
  </success_criteria>
@@ -140,8 +140,8 @@ Also extract `phase_issue_number` passed from the orchestrator.
140
140
  ## Step 2: Check Existing Context
141
141
 
142
142
  Check if a context comment already exists on the phase GitHub Issue by calling:
143
- ```
144
- mcp_get_issue_detail(issue_number={phase_issue_number})
143
+ ```bash
144
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue $PHASE_ISSUE_NUMBER --comments
145
145
  ```
146
146
 
147
147
  Look for a comment that contains `<!-- maxsim:type=context -->`.
@@ -313,12 +313,10 @@ Build the context content in memory, then post it as a comment on the phase GitH
313
313
  ```
314
314
 
315
315
  Post the comment to GitHub:
316
- ```
317
- mcp_post_comment(
318
- issue_number={phase_issue_number},
319
- type="context",
320
- content={context_content_above}
321
- )
316
+ ```bash
317
+ TMPFILE=$(mktemp)
318
+ echo "$CONTEXT_CONTENT" > "$TMPFILE"
319
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github post-comment --issue-number $PHASE_ISSUE_NUMBER --body-file "$TMPFILE" --type context
322
320
  ```
323
321
 
324
322
  Context decisions are posted as a GitHub comment on phase issue #{phase_issue_number}. No local CONTEXT.md file is written.
@@ -117,12 +117,13 @@ Parse the researcher's return message:
117
117
  Extract the research findings document from the researcher's response.
118
118
 
119
119
  Post research findings to GitHub:
120
- ```
121
- mcp_post_comment(
122
- issue_number={phase_issue_number},
123
- type="research",
124
- content="<!-- maxsim:type=research -->\n" + {research_findings_document}
125
- )
120
+ ```bash
121
+ TMPFILE=$(mktemp)
122
+ cat > "$TMPFILE" << 'BODY_EOF'
123
+ <!-- maxsim:type=research -->
124
+ {research_findings_document}
125
+ BODY_EOF
126
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github post-comment --issue-number $PHASE_ISSUE_NUMBER --body-file "$TMPFILE" --type research
126
127
  ```
127
128
 
128
129
  Research findings are posted as a GitHub comment on phase issue #{phase_issue_number}. No local RESEARCH.md file is written.
@@ -45,9 +45,9 @@ Detect planning stage by querying the phase GitHub Issue:
45
45
 
46
46
  1. Get `phase_issue_number` from the init context parsed above.
47
47
  2. **If no `phase_issue_number` exists:** The phase has not been set up on GitHub yet.
48
- - Call `mcp_create_phase_issue` to create the issue (uses roadmap data).
48
+ - Run `node ~/.claude/maxsim/bin/maxsim-tools.cjs github create-phase --phase-number "$PHASE_NUMBER" --phase-name "$PHASE_NAME" --goal "$GOAL" --requirements "$REQUIREMENTS" --success-criteria "$SUCCESS_CRITERIA"` to create the issue (uses roadmap data).
49
49
  - Store the returned issue number as `phase_issue_number`.
50
- 3. Call `mcp_get_issue_detail` with `phase_issue_number` to read the phase issue body and comments.
50
+ 3. Run `node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue $PHASE_ISSUE_NUMBER --comments` to read the phase issue body and comments.
51
51
  4. Check issue comments for existing artifacts using HTML marker comments:
52
52
  - Has a comment containing `<!-- maxsim:type=context -->`? → Discussion stage complete
53
53
  - Has a comment containing `<!-- maxsim:type=research -->`? → Research stage complete
@@ -104,8 +104,8 @@ Pass context: `phase_number`, `phase_name`, `phase_dir`, `padded_phase`, `phase_
104
104
  **After discussion completes (context posted as GitHub comment):**
105
105
 
106
106
  Re-query the phase issue to verify the `type=context` comment now exists:
107
- ```
108
- mcp_get_issue_detail(issue_number={phase_issue_number})
107
+ ```bash
108
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue $PHASE_ISSUE_NUMBER --comments
109
109
  ```
110
110
 
111
111
  Show gate:
@@ -139,8 +139,8 @@ Pass context: `phase_number`, `phase_name`, `phase_dir`, `padded_phase`, `phase_
139
139
  **After research completes (research posted as GitHub comment or already exists):**
140
140
 
141
141
  Re-query the phase issue to verify the `type=research` comment now exists:
142
- ```
143
- mcp_get_issue_detail(issue_number={phase_issue_number})
142
+ ```bash
143
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue $PHASE_ISSUE_NUMBER --comments
144
144
  ```
145
145
 
146
146
  Show gate:
@@ -171,8 +171,8 @@ Pass context: `phase_number`, `phase_name`, `phase_dir`, `padded_phase`, `phase_
171
171
  **After planning completes (plans posted as GitHub comments and task sub-issues created):**
172
172
 
173
173
  Re-query the phase issue to verify `type=plan` comments exist:
174
- ```
175
- mcp_get_issue_detail(issue_number={phase_issue_number})
174
+ ```bash
175
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue $PHASE_ISSUE_NUMBER --comments
176
176
  ```
177
177
 
178
178
  Show final gate:
@@ -200,12 +200,19 @@ At any point during the workflow, if context is getting full (conversation is lo
200
200
 
201
201
  **Checkpoint protocol:**
202
202
  1. Post a checkpoint comment to the phase's GitHub Issue:
203
- ```
204
- mcp_post_comment(
205
- issue_number={phase_issue_number},
206
- type="checkpoint",
207
- content="## MAXSIM Checkpoint\n\n**Command:** /maxsim:plan\n**Stage:** {current_stage} ({stage_num}/3)\n**Completed:**\n{list of completed stages with summaries}\n**Resume from:** {next_stage}\n**Timestamp:** {ISO timestamp}"
208
- )
203
+ ```bash
204
+ TMPFILE=$(mktemp)
205
+ cat > "$TMPFILE" << 'BODY_EOF'
206
+ ## MAXSIM Checkpoint
207
+
208
+ **Command:** /maxsim:plan
209
+ **Stage:** {current_stage} ({stage_num}/3)
210
+ **Completed:**
211
+ {list of completed stages with summaries}
212
+ **Resume from:** {next_stage}
213
+ **Timestamp:** {ISO timestamp}
214
+ BODY_EOF
215
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github post-comment --issue-number $PHASE_ISSUE_NUMBER --body-file "$TMPFILE" --type checkpoint
209
216
  ```
210
217
 
211
218
  2. Display checkpoint recommendation:
@@ -54,10 +54,13 @@ This minimizes orchestrator context usage.
54
54
  <step name="live_github_phase_overview">
55
55
  **Get live phase status from GitHub (primary source — always-live, no cached state):**
56
56
 
57
- Call `mcp_get_all_progress` to get progress for all phases. This returns live data from GitHub Issues:
58
- - `phase_number`, `title`, `issue_number`
59
- - `total_tasks`, `completed_tasks`, `remaining_tasks`
60
- - `status` (the GitHub board column: To Do / In Progress / In Review / Done)
57
+ Run `github all-progress` to get progress for all phases. This returns live data from GitHub Issues:
58
+
59
+ ```bash
60
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github all-progress
61
+ ```
62
+
63
+ Returns: `phase_number`, `title`, `issue_number`, `total_tasks`, `completed_tasks`, `remaining_tasks`, `status` (the GitHub board column: To Do / In Progress / In Review / Done)
61
64
 
62
65
  Display as formatted table:
63
66
 
@@ -72,7 +75,11 @@ Display as formatted table:
72
75
 
73
76
  **Also get board column view:**
74
77
 
75
- Call `mcp_query_board` with the project number (from init context / config). Group items by status column (To Do, In Progress, In Review, Done). Display column counts and issue details:
78
+ Run `github query-board` with the project number (from init context / config). Group items by status column (To Do, In Progress, In Review, Done). Display column counts and issue details:
79
+
80
+ ```bash
81
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github query-board --project-number PROJECT_NUMBER
82
+ ```
76
83
 
77
84
  ```
78
85
  ## Board Status (Live)
@@ -94,13 +101,22 @@ Call `mcp_query_board` with the project number (from init context / config). Gro
94
101
  **Per-phase detail (when user requests or for current phase):**
95
102
 
96
103
  For the current active phase (or any phase requested by user):
97
- - Call `mcp_get_phase_progress` with the phase issue number to get task-level progress
98
- - Call `mcp_list_sub_issues` to get individual task status with sub-issue details
104
+ - Run `github phase-progress` with the phase issue number to get task-level progress
105
+ - Run `github list-sub-issues` to get individual task status with sub-issue details
99
106
  - Display task breakdown with status indicators (✓ done / ⏳ in progress / ○ to do)
100
107
 
108
+ ```bash
109
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github phase-progress --phase-issue-number N
110
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github list-sub-issues N
111
+ ```
112
+
101
113
  **Detect external edits:**
102
114
 
103
- After reading phase data from GitHub, call `mcp_detect_external_edits` for each phase with the stored `body_hash`. Warn in the Issues Detected section if modifications were detected outside the normal workflow.
115
+ After reading phase data from GitHub, run `github detect-external-edits` for each phase with the stored `body_hash`. Warn in the Issues Detected section if modifications were detected outside the normal workflow.
116
+
117
+ ```bash
118
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github detect-external-edits --phase-number "XX"
119
+ ```
104
120
  </step>
105
121
 
106
122
  <step name="position">
@@ -108,8 +124,13 @@ After reading phase data from GitHub, call `mcp_detect_external_edits` for each
108
124
 
109
125
  - Use `current_phase` and `next_phase` from `$ROADMAP` (local) cross-referenced with GitHub board status
110
126
  - Note `paused_at` if work was paused (from `$STATE`)
111
- - Count pending todos: use `mcp_list_todos` for live todo count
112
- - Check for interrupted phases via `mcp_detect_interrupted`
127
+ - Count pending todos: run `github list-todos` for live todo count
128
+ - Check for interrupted phases via `github detect-interrupted`
129
+
130
+ ```bash
131
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github list-todos --status pending
132
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github detect-interrupted --phase-issue-number N
133
+ ```
113
134
  </step>
114
135
 
115
136
  <step name="report">
@@ -129,10 +150,10 @@ Present (GitHub Issues is the primary progress source; local ROADMAP is cross-va
129
150
  **Profile:** [quality/balanced/budget]
130
151
 
131
152
  ## GitHub Issues Progress (Live)
132
- [formatted table from mcp_get_all_progress — see live_github_phase_overview step]
153
+ [formatted table from github all-progress — see live_github_phase_overview step]
133
154
 
134
155
  ## Board Status (Live)
135
- [column view from mcp_query_board — see live_github_phase_overview step]
156
+ [column view from github query-board — see live_github_phase_overview step]
136
157
 
137
158
  ## Current Position
138
159
  Phase [N] of [total]: [phase-name]
@@ -174,14 +195,18 @@ When displaying the performance metrics table from STATE.md (the `## Performance
174
195
 
175
196
  **Step 1: Get live phase state from GitHub**
176
197
 
177
- Call `mcp_get_all_progress` (already fetched above). Identify:
198
+ Use `github all-progress` output (already fetched above). Identify:
178
199
  - Phases with status "In Progress" that have remaining tasks
179
200
  - Phases with status "To Do" (not yet started)
180
201
  - Phases with status "Done"
181
202
 
182
203
  **Step 1.5: Check for interrupted or external edit issues**
183
204
 
184
- Call `mcp_detect_interrupted` to check for any phases that were interrupted mid-execution. If any are found, note them — they take priority over new work.
205
+ Run `github detect-interrupted` to check for any phases that were interrupted mid-execution. If any are found, note them — they take priority over new work.
206
+
207
+ ```bash
208
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github detect-interrupted --phase-issue-number N
209
+ ```
185
210
 
186
211
  **Step 2: Route based on live GitHub status**
187
212
 
@@ -196,7 +221,7 @@ Call `mcp_detect_interrupted` to check for any phases that were interrupted mid-
196
221
 
197
222
  **Route A: Phase in progress or interrupted — continue execution**
198
223
 
199
- Identify the in-progress or interrupted phase (from `mcp_get_all_progress` or `mcp_detect_interrupted`).
224
+ Identify the in-progress or interrupted phase (from `github all-progress` or `github detect-interrupted`).
200
225
 
201
226
  ```
202
227
  ---
@@ -335,7 +360,7 @@ Ready to plan the next milestone.
335
360
  - Blockers present → highlight before offering to continue
336
361
  - External edits detected → surface in Issues Detected section before routing
337
362
  - Discrepancy between local ROADMAP and GitHub board → surface in Issues Detected (GitHub is authoritative)
338
- - GitHub not available (mcp calls fail) → note degraded mode, recommend resolving GitHub connectivity
363
+ - GitHub not available (CLI calls fail) → show error: "GitHub integration required for progress tracking. Run `/maxsim:init` to configure GitHub." Do NOT fall back to local file scanning.
339
364
  </step>
340
365
 
341
366
  </process>
@@ -343,10 +368,10 @@ Ready to plan the next milestone.
343
368
  <success_criteria>
344
369
 
345
370
  - [ ] Rich context provided (decisions, blockers, issues)
346
- - [ ] GitHub Issues progress shown as primary source (always-live reads via mcp_get_all_progress)
347
- - [ ] Board column view shown via mcp_query_board
348
- - [ ] Per-phase task detail available via mcp_get_phase_progress and mcp_list_sub_issues
349
- - [ ] External edit detection via mcp_detect_external_edits
371
+ - [ ] GitHub Issues progress shown as primary source (always-live reads via `github all-progress`)
372
+ - [ ] Board column view shown via `github query-board`
373
+ - [ ] Per-phase task detail available via `github phase-progress` and `github list-sub-issues`
374
+ - [ ] External edit detection via `github detect-external-edits`
350
375
  - [ ] Cross-reference local ROADMAP.md for phase ordering (GitHub is authoritative for status)
351
376
  - [ ] Phase gaps and discrepancies detected and surfaced in Issues Detected section
352
377
  - [ ] Current position clear with visual progress
@@ -5,13 +5,13 @@ Before executing any step in this workflow, verify:
5
5
  </sanity_check>
6
6
 
7
7
  <purpose>
8
- Execute small, ad-hoc tasks with MAXSIM guarantees (atomic commits, STATE.md tracking). Also supports "save for later" todo capture -- managing ideas as local todos with best-effort GitHub Issue creation.
8
+ Execute small, ad-hoc tasks with MAXSIM guarantees (atomic commits, STATE.md tracking). Also supports "save for later" todo capture via GitHub Issues.
9
9
 
10
- Quick mode spawns planner (quick mode) + executor(s), tracks tasks in `.planning/quick/`, and updates STATE.md's "Quick Tasks Completed" table.
10
+ Quick mode spawns planner (quick mode) + executor(s), tracks tasks as GitHub Issues (label: "quick"), and updates STATE.md's "Quick Tasks Completed" table.
11
11
 
12
12
  With `--full` flag: enables plan-checking (max 2 iterations) and post-execution verification for quality guarantees without full milestone ceremony.
13
13
 
14
- With `--todo` flag (or trigger words): enters Todo Mode for listing, capturing, completing, and triaging todos.
14
+ With `--todo` flag (or trigger words): enters Todo Mode for listing, capturing, completing, and triaging todos via GitHub Issues.
15
15
  </purpose>
16
16
 
17
17
  <required_reading>
@@ -668,11 +668,16 @@ files: []
668
668
  TBD
669
669
  ```
670
670
 
671
- 5. Best-effort GitHub Issue creation:
672
- - Always attempt: `node ~/.claude/maxsim/bin/maxsim-tools.cjs todos add "$TITLE" "$PRIORITY" 2>/dev/null || true`
673
- - If `github_ready` is true in init context: also call `mcp_create_todo_issue` with title, priority, area, and description to create a tracked GitHub Issue linked to the todo file
674
- 6. Commit: `node ~/.claude/maxsim/bin/maxsim-tools.cjs commit "docs: capture todo - ${TITLE}" --files .planning/todos/pending/${date}-${slug}.md`
675
- 7. Confirm: "Saved: ${TITLE} (priority: ${PRIORITY})"
671
+ 5. GitHub Issue creation (primary):
672
+ - Run `github add-todo` with title, priority, area, and description to create a tracked GitHub Issue (label: "todo")
673
+ - If GitHub is unavailable, fall back to local file only and warn user: "Todo saved locally. Run `/maxsim:init` to enable GitHub tracking."
674
+
675
+ ```bash
676
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github add-todo --title "${TITLE}" --description "${DESCRIPTION}" --area "${AREA}"
677
+ ```
678
+ 6. Local file cache: also create the local todo file for offline access
679
+ 7. Commit: `node ~/.claude/maxsim/bin/maxsim-tools.cjs commit "docs: capture todo - ${TITLE}" --files .planning/todos/pending/${date}-${slug}.md`
680
+ 8. Confirm: "Saved: ${TITLE} (priority: ${PRIORITY}) — GitHub Issue #{number}"
676
681
 
677
682
  Exit after confirm.
678
683
 
@@ -683,11 +688,14 @@ Exit after confirm.
683
688
  If user references an existing todo to complete:
684
689
 
685
690
  1. Parse identifier (number from list, or title fragment)
686
- 2. Find matching todo in `.planning/todos/pending/`
687
- 3. Move to done: `mv ".planning/todos/pending/[filename]" ".planning/todos/done/"`
688
- 4. Best-effort: close corresponding GitHub Issue
689
- 5. Commit: `node ~/.claude/maxsim/bin/maxsim-tools.cjs commit "docs: complete todo - ${TITLE}" --files .planning/todos/done/${filename}`
690
- 6. Confirm: "Completed: ${TITLE}"
691
+ 2. Close the corresponding GitHub Issue (primary): run `github close-issue` with the todo's issue number
692
+
693
+ ```bash
694
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github close-issue N
695
+ ```
696
+ 3. Move local cache file: `mv ".planning/todos/pending/[filename]" ".planning/todos/done/"`
697
+ 4. Commit: `node ~/.claude/maxsim/bin/maxsim-tools.cjs commit "docs: complete todo - ${TITLE}" --files .planning/todos/done/${filename}`
698
+ 5. Confirm: "Completed: ${TITLE} — GitHub Issue closed"
691
699
 
692
700
  Exit after confirm.
693
701
 
@@ -34,9 +34,9 @@ Parse JSON for: `executor_model`, `verifier_model`, `commit_docs`, `phase_found`
34
34
  <step name="discover_plans">
35
35
  Find incomplete plans by querying GitHub Issues (the source of truth for plans and completion status):
36
36
 
37
- ```
38
- mcp_get_issue_detail(issue_number: phase_issue_number)
39
- mcp_list_sub_issues(issue_number: phase_issue_number)
37
+ ```bash
38
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github get-issue ${phase_issue_number} --comments
39
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github list-sub-issues ${phase_issue_number}
40
40
  ```
41
41
 
42
42
  Parse plan comments (`<!-- maxsim:type=plan -->`) from the phase issue. A plan is complete when all its task sub-issues are closed.
@@ -347,12 +347,14 @@ After all tasks in a plan complete, build the summary content in memory and post
347
347
  - Issues encountered
348
348
 
349
349
  Post summary to GitHub:
350
- ```
351
- mcp_post_comment(
352
- issue_number: phase_issue_number,
353
- type: "summary",
354
- body: {summary_content}
355
- )
350
+ ```bash
351
+ # Write summary content to tmpfile
352
+ SUMMARY_FILE=$(mktemp)
353
+ cat > "$SUMMARY_FILE" << 'SUMMARY_EOF'
354
+ {summary_content}
355
+ SUMMARY_EOF
356
+
357
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github post-comment --issue-number ${phase_issue_number} --body-file "$SUMMARY_FILE" --type summary
356
358
  ```
357
359
 
358
360
  Self-check:
@@ -403,8 +405,8 @@ Note: No local SUMMARY.md is committed -- summary was posted to GitHub as a comm
403
405
  After all plans in the phase are processed:
404
406
 
405
407
  Check completion by querying the phase issue's task sub-issues:
406
- ```
407
- mcp_list_sub_issues(issue_number: phase_issue_number)
408
+ ```bash
409
+ node ~/.claude/maxsim/bin/maxsim-tools.cjs github list-sub-issues ${phase_issue_number}
408
410
  ```
409
411
 
410
412
  Count open vs closed sub-issues to determine completion.