maxsimcli 5.0.7 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +101 -99
  2. package/dist/assets/CHANGELOG.md +7 -0
  3. package/dist/assets/hooks/maxsim-capture-learnings.cjs +128 -0
  4. package/dist/assets/hooks/maxsim-capture-learnings.cjs.map +1 -0
  5. package/dist/assets/hooks/maxsim-check-update.cjs +126 -88
  6. package/dist/assets/hooks/maxsim-check-update.cjs.map +1 -1
  7. package/dist/assets/hooks/maxsim-notification-sound.cjs +87 -43
  8. package/dist/assets/hooks/maxsim-notification-sound.cjs.map +1 -1
  9. package/dist/assets/hooks/maxsim-statusline.cjs +45 -171
  10. package/dist/assets/hooks/maxsim-statusline.cjs.map +1 -1
  11. package/dist/assets/hooks/maxsim-stop-sound.cjs +86 -43
  12. package/dist/assets/hooks/maxsim-stop-sound.cjs.map +1 -1
  13. package/dist/assets/hooks/maxsim-sync-reminder.cjs +72 -21
  14. package/dist/assets/hooks/maxsim-sync-reminder.cjs.map +1 -1
  15. package/dist/assets/templates/agents/AGENTS.md +62 -51
  16. package/dist/assets/templates/agents/executor.md +44 -59
  17. package/dist/assets/templates/agents/planner.md +36 -31
  18. package/dist/assets/templates/agents/researcher.md +35 -43
  19. package/dist/assets/templates/agents/verifier.md +29 -31
  20. package/dist/assets/templates/commands/maxsim/debug.md +20 -154
  21. package/dist/assets/templates/commands/maxsim/execute.md +19 -33
  22. package/dist/assets/templates/commands/maxsim/go.md +21 -20
  23. package/dist/assets/templates/commands/maxsim/help.md +5 -14
  24. package/dist/assets/templates/commands/maxsim/init.md +18 -40
  25. package/dist/assets/templates/commands/maxsim/plan.md +22 -37
  26. package/dist/assets/templates/commands/maxsim/progress.md +15 -16
  27. package/dist/assets/templates/commands/maxsim/quick.md +18 -29
  28. package/dist/assets/templates/commands/maxsim/settings.md +18 -26
  29. package/dist/assets/templates/references/continuation-format.md +2 -4
  30. package/dist/assets/templates/references/model-profiles.md +2 -2
  31. package/dist/assets/templates/references/planning-config.md +10 -11
  32. package/dist/assets/templates/references/self-improvement.md +120 -0
  33. package/dist/assets/templates/rules/conventions.md +1 -1
  34. package/dist/assets/templates/rules/verification-protocol.md +1 -1
  35. package/dist/assets/templates/skills/brainstorming/SKILL.md +35 -26
  36. package/dist/assets/templates/skills/code-review/SKILL.md +78 -55
  37. package/dist/assets/templates/skills/commit-conventions/SKILL.md +70 -36
  38. package/dist/assets/templates/skills/github-operations/SKILL.md +142 -0
  39. package/dist/assets/templates/skills/handoff-contract/SKILL.md +62 -28
  40. package/dist/assets/templates/skills/maxsim-batch/SKILL.md +68 -42
  41. package/dist/assets/templates/skills/maxsim-simplify/SKILL.md +65 -40
  42. package/dist/assets/templates/skills/project-memory/SKILL.md +121 -0
  43. package/dist/assets/templates/skills/research/SKILL.md +126 -0
  44. package/dist/assets/templates/skills/roadmap-writing/SKILL.md +71 -68
  45. package/dist/assets/templates/skills/systematic-debugging/SKILL.md +37 -25
  46. package/dist/assets/templates/skills/tdd/SKILL.md +36 -39
  47. package/dist/assets/templates/skills/using-maxsim/SKILL.md +69 -55
  48. package/dist/assets/templates/skills/verification/SKILL.md +167 -0
  49. package/dist/assets/templates/workflows/batch.md +249 -268
  50. package/dist/assets/templates/workflows/diagnose-issues.md +225 -151
  51. package/dist/assets/templates/workflows/execute-plan.md +191 -981
  52. package/dist/assets/templates/workflows/execute.md +350 -309
  53. package/dist/assets/templates/workflows/go.md +119 -138
  54. package/dist/assets/templates/workflows/health.md +71 -114
  55. package/dist/assets/templates/workflows/help.md +85 -147
  56. package/dist/assets/templates/workflows/init-existing.md +180 -1373
  57. package/dist/assets/templates/workflows/init.md +53 -165
  58. package/dist/assets/templates/workflows/new-milestone.md +91 -334
  59. package/dist/assets/templates/workflows/new-project.md +165 -1384
  60. package/dist/assets/templates/workflows/plan-create.md +182 -73
  61. package/dist/assets/templates/workflows/plan-discuss.md +89 -82
  62. package/dist/assets/templates/workflows/plan-research.md +191 -85
  63. package/dist/assets/templates/workflows/plan.md +122 -58
  64. package/dist/assets/templates/workflows/progress.md +76 -310
  65. package/dist/assets/templates/workflows/quick.md +70 -495
  66. package/dist/assets/templates/workflows/sdd.md +231 -221
  67. package/dist/assets/templates/workflows/settings.md +90 -120
  68. package/dist/assets/templates/workflows/verify-phase.md +296 -258
  69. package/dist/cli.cjs +17 -23465
  70. package/dist/cli.cjs.map +1 -1
  71. package/dist/install.cjs +356 -8358
  72. package/dist/install.cjs.map +1 -1
  73. package/package.json +16 -22
  74. package/dist/assets/templates/skills/agent-system-map/SKILL.md +0 -92
  75. package/dist/assets/templates/skills/evidence-collection/SKILL.md +0 -87
  76. package/dist/assets/templates/skills/github-artifact-protocol/SKILL.md +0 -67
  77. package/dist/assets/templates/skills/github-tools-guide/SKILL.md +0 -89
  78. package/dist/assets/templates/skills/input-validation/SKILL.md +0 -51
  79. package/dist/assets/templates/skills/memory-management/SKILL.md +0 -75
  80. package/dist/assets/templates/skills/research-methodology/SKILL.md +0 -137
  81. package/dist/assets/templates/skills/sdd/SKILL.md +0 -91
  82. package/dist/assets/templates/skills/tool-priority-guide/SKILL.md +0 -80
  83. package/dist/assets/templates/skills/verification-before-completion/SKILL.md +0 -71
  84. package/dist/assets/templates/skills/verification-gates/SKILL.md +0 -169
  85. package/dist/assets/templates/workflows/discuss-phase.md +0 -683
  86. package/dist/assets/templates/workflows/research-phase.md +0 -73
  87. package/dist/assets/templates/workflows/verify-work.md +0 -572
  88. package/dist/core-D5zUr9cb.cjs +0 -4305
  89. package/dist/core-D5zUr9cb.cjs.map +0 -1
  90. package/dist/skills-CjFWZIGM.cjs +0 -6824
  91. package/dist/skills-CjFWZIGM.cjs.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MAXSIM
2
2
 
3
- Your AI coding assistant forgets things between sessions. MAXSIM keeps it on track.
3
+ Meta-prompting and project orchestration system for Claude Code.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/maxsimcli?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/maxsimcli)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/maxsimcli?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/maxsimcli)
@@ -22,7 +22,7 @@ That is context rot. It gets worse the bigger your project grows.
22
22
 
23
23
  MAXSIM breaks your work into phases, plans each one separately, and runs every task in a fresh agent with only the context it needs. Your decisions, requirements, and project state live in a `.planning/` directory. Agents read from it and write back to it. Nothing gets lost between sessions.
24
24
 
25
- It does not call any LLM API directly. MAXSIM orchestrates Claude Code agents through markdown prompts and workflow files. No API keys, no extra costs beyond your existing Claude Code usage.
25
+ It does not call any LLM API directly. MAXSIM orchestrates Claude Code agents through markdown prompts and workflow files. No API keys, no extra costs beyond your existing Claude Code usage. v6 is Claude Code only.
26
26
 
27
27
  You install it with one command. It lands in your project's `.claude/` directory and shows up as slash commands in Claude Code.
28
28
 
@@ -52,15 +52,15 @@ That is the core loop. Init, plan, execute, verify. Each phase is isolated, each
52
52
 
53
53
  ## What You Get
54
54
 
55
- MAXSIM ships 9 slash commands, 4 agents, 21 skills, and 23 workflows. Here is what that means in practice.
55
+ MAXSIM ships 9 slash commands, 4 agents, 14 skills, and 20 workflows. Here is what that means in practice.
56
56
 
57
57
  **Spec-driven development.** All work flows through structured markdown files in `.planning/`. PROJECT.md, ROADMAP.md, STATE.md, REQUIREMENTS.md. The spec is the single source of truth. Agents read from it and update it as they work.
58
58
 
59
- **4 agents with clear roles.** Executor builds things. Planner creates plans. Researcher investigates the codebase. Verifier checks the results. Each one does one job.
59
+ **4 generic agents with clear roles.** Executor builds things. Planner creates plans. Researcher investigates the codebase. Verifier checks the results. Each one does one job.
60
60
 
61
- **4 model profiles.** Pick `quality`, `balanced`, `budget`, or `tokenburner` to control which Claude model tier each agent uses. You can override individual agents too.
61
+ **3 model profiles.** Pick `quality`, `balanced`, or `budget` to control which Claude model tier each agent uses. You can override individual agents too.
62
62
 
63
- **GitHub Issues as the source of truth.** Phases become tracking issues. Plans become sub-issues. A 4-column project board (To Do, In Progress, In Review, Done) mirrors your `.planning/` state.
63
+ **GitHub Issues as the source of truth.** Phases become tracking issues. Plans become sub-issues. A 4-column project board (To Do, In Progress, In Review, Done) tracks execution progress.
64
64
 
65
65
  **Parallel execution with git worktrees.** Independent plans run concurrently in separate worktrees. MAXSIM groups them into dependency-ordered waves and runs each wave in parallel.
66
66
 
@@ -84,20 +84,10 @@ Run this from your project root. Everything goes into `.claude/`.
84
84
 
85
85
  | Flag | Alias | What it does |
86
86
  |------|-------|-------------|
87
- | `--local` | `-l` | Install to current project (default) |
88
- | `--uninstall` | `-u` | Remove all MAXSIM files |
89
- | `--config-dir <path>` | `-c` | Custom target directory |
90
- | `--force-statusline` | | Replace existing statusline config |
87
+ | `--uninstall` | | Remove all MAXSIM files from `.claude/` |
88
+ | `--quiet` | `-q` | Suppress output |
91
89
  | `--help` | `-h` | Show usage |
92
- | `--version` | | Print version |
93
-
94
- ### Skill Management
95
-
96
- ```bash
97
- npx maxsimcli skill-list # Show installed skills
98
- npx maxsimcli skill-install <name> # Add a skill
99
- npx maxsimcli skill-update [name] # Update one or all
100
- ```
90
+ | `--version` | `-v` | Print version |
101
91
 
102
92
  ### What Lands in Your Project
103
93
 
@@ -105,11 +95,12 @@ The installer copies these files into `.claude/`:
105
95
 
106
96
  - 9 slash commands (`/maxsim:init`, `/maxsim:plan`, etc.)
107
97
  - 4 agent definitions (executor, planner, researcher, verifier)
108
- - 21 skills (TDD, debugging, code review, and more)
109
- - 23 workflow files
110
- - 14 reference documents, 2 rules files
111
- - 5 hooks (statusline, update checker, sounds)
98
+ - 14 skills (TDD, debugging, code review, and more)
99
+ - 20 workflow files
100
+ - 15 reference documents, 2 rules files
101
+ - 6 hooks (statusline, update checker, sounds, capture-learnings)
112
102
  - 1 tool binary (`maxsim-tools.cjs`)
103
+ - `CLAUDE.md` in your project root
113
104
 
114
105
  ### Directory Layout
115
106
 
@@ -118,22 +109,20 @@ The installer copies these files into `.claude/`:
118
109
  ├── commands/maxsim/ # 9 slash commands
119
110
  ├── maxsim/
120
111
  │ ├── bin/maxsim-tools.cjs # Tool binary
121
- │ ├── workflows/ # 23 workflows
112
+ │ ├── workflows/ # 20 workflows
122
113
  │ ├── templates/ # Planning document templates
123
- │ ├── references/ # 14 reference docs
124
- ├── VERSION
125
- │ └── CHANGELOG.md
126
- ├── agents/ # 4 agents (maxsim-*.md)
127
- ├── skills/ # 21 skill directories
114
+ │ ├── references/ # 15 reference docs
115
+ └── hooks/ # 6 hook scripts (.cjs)
116
+ ├── agents/ # 4 agents
117
+ ├── skills/ # 14 skill directories
128
118
  ├── rules/ # 2 rules files
129
- ├── hooks/ # 5 hook scripts (.js)
130
119
  ├── settings.json
131
- └── package.json
120
+ └── CLAUDE.md # Generated project context
132
121
  ```
133
122
 
134
123
  ### Upgrading
135
124
 
136
- Run `npx maxsimcli@latest` again. The installer backs up your current install to `.claude/maxsim-backup/`, saves your local modifications to `.claude/maxsim-local-patches/`, preserves custom skills and agents, then updates everything.
125
+ Run `npx maxsimcli@latest` again. The installer overwrites MAXSIM-managed files. Custom skills you have added to `.claude/skills/` and your own agents are not touched.
137
126
 
138
127
  ### Uninstall
139
128
 
@@ -149,15 +138,15 @@ Removes MAXSIM files from `.claude/`. Your own skills, agents, and Claude Code c
149
138
 
150
139
  | Command | What it does |
151
140
  |---------|-------------|
152
- | `/maxsim:init` | Set up a new project or onboard an existing codebase |
153
- | `/maxsim:plan <phase>` | Research, discuss, and create plans for a phase |
154
- | `/maxsim:execute <phase>` | Run plans for a phase (serial or parallel) |
155
- | `/maxsim:go <phase>` | Plan + execute in one step |
156
- | `/maxsim:quick <description>` | Run an ad-hoc task outside the phase system |
157
- | `/maxsim:progress` | Show project progress |
158
- | `/maxsim:debug` | Start a debug session |
159
- | `/maxsim:settings` | View and change configuration |
160
- | `/maxsim:help` | Show available commands |
141
+ | `/maxsim:init` | Initialize MaxsimCLI in current project with GitHub integration |
142
+ | `/maxsim:plan <phase>` | Plan a specific phase with discussion, research, and task breakdown |
143
+ | `/maxsim:execute <phase>` | Execute all plans in a phase with parallel agents and auto-verification |
144
+ | `/maxsim:go` | Auto-detect project state and execute the right action |
145
+ | `/maxsim:quick <description>` | Quick task create a GitHub Issue and execute in simplified flow |
146
+ | `/maxsim:progress` | Show project status from GitHub Project Board with next-action recommendation |
147
+ | `/maxsim:debug` | Systematic debugging with reproduce-hypothesize-isolate-verify-fix cycle |
148
+ | `/maxsim:settings` | View and modify MaxsimCLI configuration |
149
+ | `/maxsim:help` | Show available MaxsimCLI commands and usage |
161
150
 
162
151
  ## Core Workflow
163
152
 
@@ -165,7 +154,7 @@ MAXSIM organizes development into phases. Each phase moves through five stages.
165
154
 
166
155
  **1. Initialize** (`/maxsim:init`)
167
156
 
168
- Run once per project. Creates the `.planning/` directory with PROJECT.md, ROADMAP.md, STATE.md, REQUIREMENTS.md, and config.json. Optionally connects GitHub Issues for tracking.
157
+ Run once per project. Creates the `.planning/` directory with PROJECT.md, ROADMAP.md, STATE.md, REQUIREMENTS.md, and config files. Optionally connects GitHub Issues and a Project Board for tracking.
169
158
 
170
159
  **2. Plan** (`/maxsim:plan <phase>`)
171
160
 
@@ -215,21 +204,18 @@ Phase numbers are flexible. Integer (`01`, `02`), letter suffixes for parallel t
215
204
  | Researcher | Investigates | Explores the codebase, gathers technical context, can use Brave Search |
216
205
  | Verifier | Checks results | Validates plan structure, artifacts, requirement evidence, commit integrity |
217
206
 
218
- Each agent is a markdown file at `.claude/agents/maxsim-{name}.md` with YAML frontmatter for tools, model tier, and preloaded skills.
219
-
220
- A 5th type, Debugger, exists in the model profile system for debug sessions but has no standalone agent file.
207
+ Each agent is a markdown file at `.claude/agents/{name}.md` with YAML frontmatter for tools, model tier, and preloaded skills.
221
208
 
222
209
  ### Model Profiles
223
210
 
224
211
  Set `model_profile` in `.planning/config.json` to control which Claude model each agent uses:
225
212
 
226
- | Agent Type | `quality` | `balanced` (default) | `budget` | `tokenburner` |
227
- |------------|-----------|---------------------|----------|---------------|
228
- | executor | opus | sonnet | sonnet | opus |
229
- | planner | opus | opus | sonnet | opus |
230
- | researcher | opus | sonnet | haiku | opus |
231
- | verifier | sonnet | sonnet | haiku | opus |
232
- | debugger | sonnet | sonnet | haiku | opus |
213
+ | Agent Type | `quality` | `balanced` (default) | `budget` |
214
+ |------------|-----------|---------------------|----------|
215
+ | planner | opus | opus | sonnet |
216
+ | executor | opus | sonnet | sonnet |
217
+ | researcher | opus | sonnet | haiku |
218
+ | verifier | sonnet | sonnet | haiku |
233
219
 
234
220
  `opus` maps to `inherit`, meaning it uses your Claude Code session model. `sonnet` and `haiku` are passed directly to subagent invocations.
235
221
 
@@ -251,9 +237,7 @@ Override individual agents regardless of profile:
251
237
 
252
238
  ## GitHub Integration
253
239
 
254
- MAXSIM tracks phase and plan progress through GitHub Issues. Your `.planning/` files hold project-level documents (roadmap, state, config). Execution progress lives in GitHub.
255
-
256
- You need GitHub CLI (`gh`) installed and authenticated, plus a GitHub-hosted repository.
240
+ MAXSIM tracks phase and plan progress through GitHub Issues. Your `.planning/` files hold project-level documents (roadmap, state, config). Execution progress lives in GitHub. GitHub CLI (`gh`) and a GitHub-hosted repository are required for this feature.
257
241
 
258
242
  ### Setup
259
243
 
@@ -267,7 +251,7 @@ Configured during `/maxsim:init`:
267
251
 
268
252
  Each phase gets a tracking issue. Each plan becomes a sub-issue linked to its phase. Plan content goes into structured comments. Completion data (commit SHA, files changed) gets posted to task issues. Progress is computed from open vs closed sub-issue counts.
269
253
 
270
- A local `.planning/github-issues.json` caches the mapping between phase numbers and issue numbers. It is a performance cache, the system rebuilds it from GitHub when needed.
254
+ A local cache file maps phase numbers to GitHub issue numbers and is rebuilt from GitHub when needed.
271
255
 
272
256
  ### Tool Commands
273
257
 
@@ -291,24 +275,56 @@ Project config lives in `.planning/config.json`, created during `/maxsim:init`.
291
275
 
292
276
  | Setting | Type | Default | What it does |
293
277
  |---------|------|---------|-------------|
294
- | `model_profile` | `'quality' \| 'balanced' \| 'budget' \| 'tokenburner'` | `'balanced'` | Model tier for all agents |
278
+ | `execution.modelProfile` | `'quality' \| 'balanced' \| 'budget'` | `'balanced'` | Model tier for all agents |
295
279
  | `model_overrides` | `Record<AgentType, ModelTier>` | | Per-agent model overrides |
296
- | `commit_docs` | `boolean` | `true` | Auto-commit `.planning/` changes |
297
- | `search_gitignored` | `boolean` | `false` | Include gitignored files in codebase mapping |
298
- | `branching_strategy` | `'none' \| 'phase' \| 'milestone'` | `'none'` | Git branching strategy |
299
- | `phase_branch_template` | `string` | `'maxsim/phase-{phase}-{slug}'` | Branch name template for phases |
300
- | `milestone_branch_template` | `string` | `'maxsim/{milestone}-{slug}'` | Branch name template for milestones |
280
+ | `execution.parallelism.maxAgentsPerWave` | `number` | `3` | Cap on concurrent agents per wave |
281
+ | `execution.parallelism.maxRetries` | `number` | `3` | Max retries per failed plan |
282
+ | `execution.parallelism.competitionStrategy` | `'none' \| 'quick' \| 'standard' \| 'deep'` | `'standard'` | Parallel competition strategy |
283
+ | `execution.verification.strictMode` | `boolean` | `true` | Enforce all verification gates |
284
+ | `execution.verification.requireCodeReview` | `boolean` | `true` | Code review gate |
285
+ | `execution.verification.autoResolveConflicts` | `boolean` | `true` | Auto-resolve merge conflicts |
286
+ | `worktrees.basePath` | `string` | `'.maxsim-worktrees/'` | Worktree base directory |
287
+ | `worktrees.autoCleanup` | `boolean` | `true` | Remove worktrees after completion |
288
+ | `worktrees.branchPrefix` | `string` | `'maxsim/'` | Branch prefix for worktree branches |
289
+ | `automation.autoCommitOnSuccess` | `boolean` | `true` | Auto-commit `.planning/` changes |
290
+ | `automation.conventionalCommits` | `boolean` | `true` | Enforce conventional commit format |
291
+ | `planning.commit_docs` | `boolean` | `true` | Commit planning artifacts to git |
292
+ | `planning.search_gitignored` | `boolean` | `false` | Include gitignored files in searches |
293
+ | `git.branching_strategy` | `'none' \| 'phase' \| 'milestone'` | `'none'` | Git branching strategy |
294
+ | `git.phase_branch_template` | `string` | `'maxsim/phase-{phase}-{slug}'` | Branch name template for phases |
295
+ | `git.milestone_branch_template` | `string` | `'maxsim/{milestone}-{slug}'` | Branch name template for milestones |
301
296
  | `workflow.research` | `boolean` | `true` | Run research before planning |
302
297
  | `workflow.plan_checker` | `boolean` | `true` | Run plan checker agent |
303
298
  | `workflow.verifier` | `boolean` | `true` | Run verifier after execution |
304
- | `parallelization` | `boolean` | `true` | Allow parallel plan execution |
305
- | `worktree_mode` | `'auto' \| 'always' \| 'never'` | `'auto'` | When to use git worktrees |
306
- | `max_parallel_agents` | `number` | `10` | Cap on concurrent agents |
307
- | `brave_search` | `boolean` | `false` | Let researcher agents use Brave Search |
308
- | `review.spec_review` | `boolean` | `true` | Spec review gate |
309
- | `review.code_review` | `boolean` | `true` | Code review gate |
310
- | `review.simplify_review` | `boolean` | `true` | Simplification review gate |
311
- | `review.retry_limit` | `number` | `3` | Max retries per review gate |
299
+
300
+ ### Config Example
301
+
302
+ ```json
303
+ {
304
+ "execution": {
305
+ "modelProfile": "balanced",
306
+ "parallelism": {
307
+ "maxAgentsPerWave": 3,
308
+ "maxRetries": 3,
309
+ "competitionStrategy": "standard"
310
+ },
311
+ "verification": {
312
+ "strictMode": true,
313
+ "requireCodeReview": true,
314
+ "autoResolveConflicts": true
315
+ }
316
+ },
317
+ "worktrees": {
318
+ "basePath": ".maxsim-worktrees/",
319
+ "autoCleanup": true,
320
+ "branchPrefix": "maxsim/"
321
+ },
322
+ "automation": {
323
+ "autoCommitOnSuccess": true,
324
+ "conventionalCommits": true
325
+ }
326
+ }
327
+ ```
312
328
 
313
329
  ### User-Level Defaults
314
330
 
@@ -330,44 +346,31 @@ Put global defaults in `~/.maxsim/defaults.json`. These merge with hardcoded def
330
346
 
331
347
  Skills are reusable prompt modules that agents load on demand. Each skill is a `SKILL.md` file with YAML frontmatter and a markdown body.
332
348
 
333
- ### Built-in Skills (21)
349
+ ### Built-in Skills (14)
334
350
 
335
351
  | Skill | Category | What it does |
336
352
  |-------|----------|-------------|
337
- | `tdd` | Task | Test-driven development, Red-Green-Refactor cycle |
353
+ | `tdd` | Task | Test-driven development, Red-Green-Refactor cycle with atomic commits |
338
354
  | `systematic-debugging` | Methodology | Root-cause analysis: reproduce, hypothesize, isolate, verify, fix |
339
- | `verification-before-completion` | Methodology | Requires evidence before marking work as done |
340
- | `maxsim-simplify` | Task | Finds duplication, dead code, and unnecessary complexity |
355
+ | `verification` | Methodology | Evidence-based verification with quality gates and anti-rationalization enforcement |
356
+ | `maxsim-simplify` | Task | Reviews changed code for reuse opportunities and unnecessary complexity |
341
357
  | `code-review` | Task | Checks security, interfaces, error handling, test coverage |
342
- | `memory-management` | Task | Persists patterns and decisions to project memory |
343
- | `using-maxsim` | Task | Routes work through the spec-driven workflow |
344
- | `brainstorming` | Task | Explores multiple approaches before picking a design |
345
- | `roadmap-writing` | Task | Creates structured roadmaps with phased planning |
346
- | `sdd` | Task | Spec-driven development, sequential tasks with fresh context |
358
+ | `project-memory` | Task | GitHub-native persistence for learnings, decisions, and patterns |
359
+ | `using-maxsim` | Task | Routes work through MaxsimCLI commands based on project state |
360
+ | `brainstorming` | Task | Explores multiple approaches with structured comparison before committing |
361
+ | `roadmap-writing` | Task | Creates phased roadmaps with dependency graphs and GitHub Milestone structure |
347
362
  | `maxsim-batch` | Task | Decomposes tasks for parallel worktree execution |
348
- | `agent-system-map` | Reference | Overview of the agent system |
349
363
  | `commit-conventions` | Convention | Conventional commit format and version trigger rules |
350
- | `evidence-collection` | Methodology | Structured evidence gathering for verification |
351
- | `github-artifact-protocol` | Reference | How to read and write GitHub Issue artifacts |
352
- | `github-tools-guide` | Reference | Guide to the GitHub CLI commands |
364
+ | `github-operations` | Reference | Unified GitHub interaction: artifacts, comments, CLI, issue lifecycle |
353
365
  | `handoff-contract` | Protocol | Agent-to-agent handoff protocol |
354
- | `input-validation` | Protocol | Input validation rules for agents |
355
- | `research-methodology` | Methodology | Structured research approach for agents |
356
- | `tool-priority-guide` | Reference | Which tools to prefer for which tasks |
357
- | `verification-gates` | Protocol | Review gate protocol with pass/fail criteria |
366
+ | `research` | Methodology | Systematic investigation using parallel agents and source hierarchy |
358
367
 
359
368
  ### Skill Types
360
369
 
361
- Protocol skills load automatically (handoff-contract, verification-gates, input-validation). Methodology skills guide how agents think. Task skills are user-invocable workflows like TDD or code review. Reference skills provide static information.
370
+ Protocol skills load automatically (handoff-contract). Methodology skills guide how agents think. Task skills are user-invocable workflows like TDD or code review. Reference skills provide static information.
362
371
 
363
372
  ### Managing Skills
364
373
 
365
- ```bash
366
- npx maxsimcli skill-list # Show installed skills
367
- npx maxsimcli skill-install <name> # Add a skill
368
- npx maxsimcli skill-update [name] # Update one or all
369
- ```
370
-
371
374
  Built-in skills update when you upgrade MAXSIM. Custom skills you place in `.claude/skills/` are preserved.
372
375
 
373
376
  ---
@@ -382,9 +385,7 @@ Each parallel plan gets a worktree at `.maxsim-worktrees/{planId}/` on its own b
382
385
 
383
386
  ### When It Activates
384
387
 
385
- In `auto` mode (default), parallel execution kicks in when one wave has more than 2 plans and `parallelization` is `true` in config. Set `worktree_mode` to `always` or `never` for manual control. `max_parallel_agents` caps concurrent agents at 10 by default.
386
-
387
- You need `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` set in your environment and a git repository.
388
+ Parallel execution kicks in when a wave has at least `parallelization.min_plans_for_parallel` plans (default 2). `execution.parallelism.maxAgentsPerWave` caps concurrent agents per wave (default 3). `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` is set automatically in `settings.json` during installation.
388
389
 
389
390
  Before running in parallel, MAXSIM checks that plans do not modify the same files. If there is a conflict, it falls back to sequential mode.
390
391
 
@@ -392,14 +393,15 @@ Before running in parallel, MAXSIM checks that plans do not modify the same file
392
393
 
393
394
  ## Hooks
394
395
 
395
- MAXSIM installs 5 Claude Code hooks:
396
+ MAXSIM installs 6 Claude Code hooks:
396
397
 
397
398
  | Hook | Event | What it does |
398
399
  |------|-------|-------------|
399
400
  | `maxsim-statusline` | `statusLine` | Shows model tier, phase number, board column, and milestone progress |
400
401
  | `maxsim-check-update` | `SessionStart` | Checks npm for new MAXSIM versions in the background |
401
- | `maxsim-notification-sound` | `PostToolUse` | Plays a sound when Claude asks you a question |
402
+ | `maxsim-notification-sound` | `Notification` | Plays a sound when Claude asks you a question |
402
403
  | `maxsim-stop-sound` | `Stop` | Plays a sound when Claude finishes |
404
+ | `maxsim-capture-learnings` | `Stop` | Appends a dated learning entry to `.claude/agent-memory/` from the last 5 commits |
403
405
  | `maxsim-sync-reminder` | `PostToolUse` | No-op stub, kept for structural reasons |
404
406
 
405
407
  ### Statusline
@@ -1,3 +1,10 @@
1
+ ## [5.0.7](https://github.com/maystudios/maxsimcli/compare/v5.0.6...v5.0.7) (2026-03-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **website:** unify header, remove gradient/twitter, add drift detection tile ([67d115d](https://github.com/maystudios/maxsimcli/commit/67d115d99e2d47855efaf31005dab6219dd057e4))
7
+
1
8
  ## [5.0.6](https://github.com/maystudios/maxsimcli/compare/v5.0.5...v5.0.6) (2026-03-12)
2
9
 
3
10
 
@@ -0,0 +1,128 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+ let node_fs = require("node:fs");
29
+ node_fs = __toESM(node_fs);
30
+ let node_path = require("node:path");
31
+ node_path = __toESM(node_path);
32
+ let node_child_process = require("node:child_process");
33
+ require("node:os");
34
+
35
+ //#region src/hooks/shared.ts
36
+ /** Shared utilities for MAXSIM hooks. */
37
+ function readStdinJson(callback) {
38
+ let input = "";
39
+ process.stdin.setEncoding("utf8");
40
+ process.stdin.on("data", (chunk) => {
41
+ input += chunk;
42
+ });
43
+ process.stdin.on("end", () => {
44
+ try {
45
+ callback(JSON.parse(input));
46
+ } catch {
47
+ process.exit(0);
48
+ }
49
+ });
50
+ }
51
+ const CLAUDE_DIR = ".claude";
52
+
53
+ //#endregion
54
+ //#region src/hooks/maxsim-capture-learnings.ts
55
+ /**
56
+ * Stop hook — capture session learnings into agent memory.
57
+ *
58
+ * Behaviour:
59
+ * - Reads the Stop event JSON from stdin (includes cwd, session_id).
60
+ * - Checks if a MaxsimCLI project exists in cwd (.claude/maxsim/config.json).
61
+ * - If yes: reads the last 5 git commits to summarise what was done.
62
+ * - Appends a dated learning entry to .claude/agent-memory/maxsim-learner/MEMORY.md.
63
+ * - Creates the directory structure if it does not exist.
64
+ * - Always exits 0 — never blocks the user.
65
+ */
66
+ /** Returns true when .claude/maxsim/config.json exists in the given directory. */
67
+ function isMaxsimProject(projectDir) {
68
+ try {
69
+ return node_fs.existsSync(node_path.join(projectDir, CLAUDE_DIR, "maxsim", "config.json"));
70
+ } catch {
71
+ return false;
72
+ }
73
+ }
74
+ /** Reads the last N git commits as oneline strings. Returns empty array on failure. */
75
+ function recentCommits(projectDir, n = 5) {
76
+ try {
77
+ const result = (0, node_child_process.spawnSync)("git", [
78
+ "log",
79
+ `--oneline`,
80
+ `-${n}`
81
+ ], {
82
+ cwd: projectDir,
83
+ encoding: "utf8",
84
+ timeout: 4e3,
85
+ stdio: [
86
+ "ignore",
87
+ "pipe",
88
+ "ignore"
89
+ ],
90
+ windowsHide: true
91
+ });
92
+ if (result.status !== 0) return [];
93
+ return (result.stdout ?? "").split("\n").map((l) => l.trim()).filter(Boolean);
94
+ } catch {
95
+ return [];
96
+ }
97
+ }
98
+ /** Formats today's date as YYYY-MM-DD. */
99
+ function today() {
100
+ return (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
101
+ }
102
+ /** Appends a learning entry to the MEMORY.md file, creating dirs as needed. */
103
+ function appendLearning(memoryPath, sessionId, commits) {
104
+ const dir = node_path.dirname(memoryPath);
105
+ node_fs.mkdirSync(dir, { recursive: true });
106
+ const sessionLabel = sessionId ? ` (${sessionId.slice(0, 8)})` : "";
107
+ const commitLines = commits.length > 0 ? commits.map((c) => `- commit: ${c}`).join("\n") : "- no commits recorded this session";
108
+ const entry = [
109
+ `## Session ${today()}${sessionLabel}`,
110
+ `- ${commits.length} commit(s) made this session`,
111
+ commitLines,
112
+ ""
113
+ ].join("\n");
114
+ node_fs.appendFileSync(memoryPath, `\n${entry}`, "utf8");
115
+ }
116
+ readStdinJson((input) => {
117
+ try {
118
+ const projectDir = input.cwd ?? process.cwd();
119
+ if (!isMaxsimProject(projectDir)) process.exit(0);
120
+ const memoryPath = node_path.join(projectDir, CLAUDE_DIR, "agent-memory", "maxsim-learner", "MEMORY.md");
121
+ const commits = recentCommits(projectDir, 5);
122
+ appendLearning(memoryPath, input.session_id, commits);
123
+ } catch {}
124
+ process.exit(0);
125
+ });
126
+
127
+ //#endregion
128
+ //# sourceMappingURL=maxsim-capture-learnings.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maxsim-capture-learnings.cjs","names":["fs","path"],"sources":["../../../src/hooks/shared.ts","../../../src/hooks/maxsim-capture-learnings.ts"],"sourcesContent":["/** Shared utilities for MAXSIM hooks. */\n\nimport { spawnSync } from 'node:child_process';\nimport * as os from 'node:os';\n\nexport function readStdinJson<T>(callback: (data: T) => void): void {\n let input = '';\n process.stdin.setEncoding('utf8');\n process.stdin.on('data', (chunk: string) => {\n input += chunk;\n });\n process.stdin.on('end', () => {\n try {\n const data = JSON.parse(input) as T;\n callback(data);\n } catch {\n process.exit(0);\n }\n });\n}\n\nexport const CLAUDE_DIR = '.claude';\n\n/** Returns true when running on Windows. */\nexport function isWindows(): boolean {\n return os.platform() === 'win32';\n}\n\n/** Returns true when running on macOS. */\nexport function isMac(): boolean {\n return os.platform() === 'darwin';\n}\n\n/**\n * Play a system sound file cross-platform.\n * Never throws — sound failure is always silently swallowed.\n *\n * @param soundFile Absolute path to a WAV/MP3/etc. file, or a named system\n * sound token recognised by the platform helper (e.g. the\n * Windows-only SystemAsterisk token).\n */\nexport function playSound(soundFile: string): void {\n try {\n if (isWindows()) {\n // PowerShell's SoundPlayer works with WAV files synchronously.\n // For named system sounds (no extension) fall back to rundll32.\n const isWav = soundFile.toLowerCase().endsWith('.wav');\n if (isWav) {\n spawnSync(\n 'powershell',\n [\n '-NoProfile',\n '-NonInteractive',\n '-Command',\n `(New-Object System.Media.SoundPlayer '${soundFile.replace(/'/g, \"''\")}').PlaySync()`,\n ],\n { stdio: 'ignore' },\n );\n } else {\n // Named system sound token (e.g. \"SystemAsterisk\") or unsupported format —\n // use the rundll32 winsound bridge.\n spawnSync(\n 'rundll32',\n ['user32.dll,MessageBeep'],\n { stdio: 'ignore' },\n );\n }\n } else if (isMac()) {\n spawnSync('afplay', [soundFile], { stdio: 'ignore' });\n } else {\n // Linux: try paplay (PulseAudio) then aplay (ALSA)\n const paplay = spawnSync('paplay', [soundFile], { stdio: 'ignore' });\n if (paplay.status !== 0) {\n spawnSync('aplay', [soundFile], { stdio: 'ignore' });\n }\n }\n } catch {\n // Never crash on sound failure\n }\n}\n","/**\n * Stop hook — capture session learnings into agent memory.\n *\n * Behaviour:\n * - Reads the Stop event JSON from stdin (includes cwd, session_id).\n * - Checks if a MaxsimCLI project exists in cwd (.claude/maxsim/config.json).\n * - If yes: reads the last 5 git commits to summarise what was done.\n * - Appends a dated learning entry to .claude/agent-memory/maxsim-learner/MEMORY.md.\n * - Creates the directory structure if it does not exist.\n * - Always exits 0 — never blocks the user.\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport { readStdinJson, CLAUDE_DIR } from './shared.js';\n\ninterface StopInput {\n cwd?: string;\n session_id?: string;\n stop_reason?: string;\n [key: string]: unknown;\n}\n\n/** Returns true when .claude/maxsim/config.json exists in the given directory. */\nfunction isMaxsimProject(projectDir: string): boolean {\n try {\n return fs.existsSync(path.join(projectDir, CLAUDE_DIR, 'maxsim', 'config.json'));\n } catch {\n return false;\n }\n}\n\n/** Reads the last N git commits as oneline strings. Returns empty array on failure. */\nfunction recentCommits(projectDir: string, n = 5): string[] {\n try {\n const result = spawnSync(\n 'git',\n ['log', `--oneline`, `-${n}`],\n {\n cwd: projectDir,\n encoding: 'utf8',\n timeout: 4000,\n stdio: ['ignore', 'pipe', 'ignore'],\n windowsHide: true,\n },\n );\n if (result.status !== 0) return [];\n return (result.stdout ?? '')\n .split('\\n')\n .map((l) => l.trim())\n .filter(Boolean);\n } catch {\n return [];\n }\n}\n\n/** Formats today's date as YYYY-MM-DD. */\nfunction today(): string {\n return new Date().toISOString().slice(0, 10);\n}\n\n/** Appends a learning entry to the MEMORY.md file, creating dirs as needed. */\nfunction appendLearning(memoryPath: string, sessionId: string | undefined, commits: string[]): void {\n const dir = path.dirname(memoryPath);\n fs.mkdirSync(dir, { recursive: true });\n\n const sessionLabel = sessionId ? ` (${sessionId.slice(0, 8)})` : '';\n const commitLines =\n commits.length > 0\n ? commits.map((c) => `- commit: ${c}`).join('\\n')\n : '- no commits recorded this session';\n\n const entry = [\n `## Session ${today()}${sessionLabel}`,\n `- ${commits.length} commit(s) made this session`,\n commitLines,\n '',\n ].join('\\n');\n\n fs.appendFileSync(memoryPath, `\\n${entry}`, 'utf8');\n}\n\nreadStdinJson<StopInput>((input) => {\n try {\n const projectDir = input.cwd ?? process.cwd();\n\n if (!isMaxsimProject(projectDir)) {\n process.exit(0);\n }\n\n const memoryPath = path.join(\n projectDir,\n CLAUDE_DIR,\n 'agent-memory',\n 'maxsim-learner',\n 'MEMORY.md',\n );\n\n const commits = recentCommits(projectDir, 5);\n appendLearning(memoryPath, input.session_id, commits);\n } catch {\n // Never crash — always let the Stop event complete cleanly\n }\n\n process.exit(0);\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAgB,cAAiB,UAAmC;CAClE,IAAI,QAAQ;AACZ,SAAQ,MAAM,YAAY,OAAO;AACjC,SAAQ,MAAM,GAAG,SAAS,UAAkB;AAC1C,WAAS;GACT;AACF,SAAQ,MAAM,GAAG,aAAa;AAC5B,MAAI;AAEF,YADa,KAAK,MAAM,MAAM,CAChB;UACR;AACN,WAAQ,KAAK,EAAE;;GAEjB;;AAGJ,MAAa,aAAa;;;;;;;;;;;;;;;;ACI1B,SAAS,gBAAgB,YAA6B;AACpD,KAAI;AACF,SAAOA,QAAG,WAAWC,UAAK,KAAK,YAAY,YAAY,UAAU,cAAc,CAAC;SAC1E;AACN,SAAO;;;;AAKX,SAAS,cAAc,YAAoB,IAAI,GAAa;AAC1D,KAAI;EACF,MAAM,2CACJ,OACA;GAAC;GAAO;GAAa,IAAI;GAAI,EAC7B;GACE,KAAK;GACL,UAAU;GACV,SAAS;GACT,OAAO;IAAC;IAAU;IAAQ;IAAS;GACnC,aAAa;GACd,CACF;AACD,MAAI,OAAO,WAAW,EAAG,QAAO,EAAE;AAClC,UAAQ,OAAO,UAAU,IACtB,MAAM,KAAK,CACX,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ;SACZ;AACN,SAAO,EAAE;;;;AAKb,SAAS,QAAgB;AACvB,yBAAO,IAAI,MAAM,EAAC,aAAa,CAAC,MAAM,GAAG,GAAG;;;AAI9C,SAAS,eAAe,YAAoB,WAA+B,SAAyB;CAClG,MAAM,MAAMA,UAAK,QAAQ,WAAW;AACpC,SAAG,UAAU,KAAK,EAAE,WAAW,MAAM,CAAC;CAEtC,MAAM,eAAe,YAAY,KAAK,UAAU,MAAM,GAAG,EAAE,CAAC,KAAK;CACjE,MAAM,cACJ,QAAQ,SAAS,IACb,QAAQ,KAAK,MAAM,aAAa,IAAI,CAAC,KAAK,KAAK,GAC/C;CAEN,MAAM,QAAQ;EACZ,cAAc,OAAO,GAAG;EACxB,KAAK,QAAQ,OAAO;EACpB;EACA;EACD,CAAC,KAAK,KAAK;AAEZ,SAAG,eAAe,YAAY,KAAK,SAAS,OAAO;;AAGrD,eAA0B,UAAU;AAClC,KAAI;EACF,MAAM,aAAa,MAAM,OAAO,QAAQ,KAAK;AAE7C,MAAI,CAAC,gBAAgB,WAAW,CAC9B,SAAQ,KAAK,EAAE;EAGjB,MAAM,aAAaA,UAAK,KACtB,YACA,YACA,gBACA,kBACA,YACD;EAED,MAAM,UAAU,cAAc,YAAY,EAAE;AAC5C,iBAAe,YAAY,MAAM,YAAY,QAAQ;SAC/C;AAIR,SAAQ,KAAK,EAAE;EACf"}