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.
- package/README.md +101 -99
- package/dist/assets/CHANGELOG.md +7 -0
- package/dist/assets/hooks/maxsim-capture-learnings.cjs +128 -0
- package/dist/assets/hooks/maxsim-capture-learnings.cjs.map +1 -0
- package/dist/assets/hooks/maxsim-check-update.cjs +126 -88
- package/dist/assets/hooks/maxsim-check-update.cjs.map +1 -1
- package/dist/assets/hooks/maxsim-notification-sound.cjs +87 -43
- package/dist/assets/hooks/maxsim-notification-sound.cjs.map +1 -1
- package/dist/assets/hooks/maxsim-statusline.cjs +45 -171
- package/dist/assets/hooks/maxsim-statusline.cjs.map +1 -1
- package/dist/assets/hooks/maxsim-stop-sound.cjs +86 -43
- package/dist/assets/hooks/maxsim-stop-sound.cjs.map +1 -1
- package/dist/assets/hooks/maxsim-sync-reminder.cjs +72 -21
- package/dist/assets/hooks/maxsim-sync-reminder.cjs.map +1 -1
- package/dist/assets/templates/agents/AGENTS.md +62 -51
- package/dist/assets/templates/agents/executor.md +44 -59
- package/dist/assets/templates/agents/planner.md +36 -31
- package/dist/assets/templates/agents/researcher.md +35 -43
- package/dist/assets/templates/agents/verifier.md +29 -31
- package/dist/assets/templates/commands/maxsim/debug.md +20 -154
- package/dist/assets/templates/commands/maxsim/execute.md +19 -33
- package/dist/assets/templates/commands/maxsim/go.md +21 -20
- package/dist/assets/templates/commands/maxsim/help.md +5 -14
- package/dist/assets/templates/commands/maxsim/init.md +18 -40
- package/dist/assets/templates/commands/maxsim/plan.md +22 -37
- package/dist/assets/templates/commands/maxsim/progress.md +15 -16
- package/dist/assets/templates/commands/maxsim/quick.md +18 -29
- package/dist/assets/templates/commands/maxsim/settings.md +18 -26
- package/dist/assets/templates/references/continuation-format.md +2 -4
- package/dist/assets/templates/references/model-profiles.md +2 -2
- package/dist/assets/templates/references/planning-config.md +10 -11
- package/dist/assets/templates/references/self-improvement.md +120 -0
- package/dist/assets/templates/rules/conventions.md +1 -1
- package/dist/assets/templates/rules/verification-protocol.md +1 -1
- package/dist/assets/templates/skills/brainstorming/SKILL.md +35 -26
- package/dist/assets/templates/skills/code-review/SKILL.md +78 -55
- package/dist/assets/templates/skills/commit-conventions/SKILL.md +70 -36
- package/dist/assets/templates/skills/github-operations/SKILL.md +142 -0
- package/dist/assets/templates/skills/handoff-contract/SKILL.md +62 -28
- package/dist/assets/templates/skills/maxsim-batch/SKILL.md +68 -42
- package/dist/assets/templates/skills/maxsim-simplify/SKILL.md +65 -40
- package/dist/assets/templates/skills/project-memory/SKILL.md +121 -0
- package/dist/assets/templates/skills/research/SKILL.md +126 -0
- package/dist/assets/templates/skills/roadmap-writing/SKILL.md +71 -68
- package/dist/assets/templates/skills/systematic-debugging/SKILL.md +37 -25
- package/dist/assets/templates/skills/tdd/SKILL.md +36 -39
- package/dist/assets/templates/skills/using-maxsim/SKILL.md +69 -55
- package/dist/assets/templates/skills/verification/SKILL.md +167 -0
- package/dist/assets/templates/workflows/batch.md +249 -268
- package/dist/assets/templates/workflows/diagnose-issues.md +225 -151
- package/dist/assets/templates/workflows/execute-plan.md +191 -981
- package/dist/assets/templates/workflows/execute.md +350 -309
- package/dist/assets/templates/workflows/go.md +119 -138
- package/dist/assets/templates/workflows/health.md +71 -114
- package/dist/assets/templates/workflows/help.md +85 -147
- package/dist/assets/templates/workflows/init-existing.md +180 -1373
- package/dist/assets/templates/workflows/init.md +53 -165
- package/dist/assets/templates/workflows/new-milestone.md +91 -334
- package/dist/assets/templates/workflows/new-project.md +165 -1384
- package/dist/assets/templates/workflows/plan-create.md +182 -73
- package/dist/assets/templates/workflows/plan-discuss.md +89 -82
- package/dist/assets/templates/workflows/plan-research.md +191 -85
- package/dist/assets/templates/workflows/plan.md +122 -58
- package/dist/assets/templates/workflows/progress.md +76 -310
- package/dist/assets/templates/workflows/quick.md +70 -495
- package/dist/assets/templates/workflows/sdd.md +231 -221
- package/dist/assets/templates/workflows/settings.md +90 -120
- package/dist/assets/templates/workflows/verify-phase.md +296 -258
- package/dist/cli.cjs +17 -23465
- package/dist/cli.cjs.map +1 -1
- package/dist/install.cjs +356 -8358
- package/dist/install.cjs.map +1 -1
- package/package.json +16 -22
- package/dist/assets/templates/skills/agent-system-map/SKILL.md +0 -92
- package/dist/assets/templates/skills/evidence-collection/SKILL.md +0 -87
- package/dist/assets/templates/skills/github-artifact-protocol/SKILL.md +0 -67
- package/dist/assets/templates/skills/github-tools-guide/SKILL.md +0 -89
- package/dist/assets/templates/skills/input-validation/SKILL.md +0 -51
- package/dist/assets/templates/skills/memory-management/SKILL.md +0 -75
- package/dist/assets/templates/skills/research-methodology/SKILL.md +0 -137
- package/dist/assets/templates/skills/sdd/SKILL.md +0 -91
- package/dist/assets/templates/skills/tool-priority-guide/SKILL.md +0 -80
- package/dist/assets/templates/skills/verification-before-completion/SKILL.md +0 -71
- package/dist/assets/templates/skills/verification-gates/SKILL.md +0 -169
- package/dist/assets/templates/workflows/discuss-phase.md +0 -683
- package/dist/assets/templates/workflows/research-phase.md +0 -73
- package/dist/assets/templates/workflows/verify-work.md +0 -572
- package/dist/core-D5zUr9cb.cjs +0 -4305
- package/dist/core-D5zUr9cb.cjs.map +0 -1
- package/dist/skills-CjFWZIGM.cjs +0 -6824
- package/dist/skills-CjFWZIGM.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MAXSIM
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Meta-prompting and project orchestration system for Claude Code.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/maxsimcli)
|
|
6
6
|
[](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,
|
|
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
|
-
**
|
|
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)
|
|
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
|
-
| `--
|
|
88
|
-
| `--
|
|
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
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
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/ #
|
|
112
|
+
│ ├── workflows/ # 20 workflows
|
|
122
113
|
│ ├── templates/ # Planning document templates
|
|
123
|
-
│ ├── references/ #
|
|
124
|
-
│
|
|
125
|
-
|
|
126
|
-
├──
|
|
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
|
-
└──
|
|
120
|
+
└── CLAUDE.md # Generated project context
|
|
132
121
|
```
|
|
133
122
|
|
|
134
123
|
### Upgrading
|
|
135
124
|
|
|
136
|
-
Run `npx maxsimcli@latest` again. The installer
|
|
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` |
|
|
153
|
-
| `/maxsim:plan <phase>` |
|
|
154
|
-
| `/maxsim:execute <phase>` |
|
|
155
|
-
| `/maxsim:go
|
|
156
|
-
| `/maxsim:quick <description>` |
|
|
157
|
-
| `/maxsim:progress` | Show project
|
|
158
|
-
| `/maxsim:debug` |
|
|
159
|
-
| `/maxsim:settings` | View and
|
|
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.
|
|
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/
|
|
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` |
|
|
227
|
-
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
| researcher | opus | sonnet | haiku |
|
|
231
|
-
| verifier | sonnet | sonnet | haiku |
|
|
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
|
|
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
|
-
| `
|
|
278
|
+
| `execution.modelProfile` | `'quality' \| 'balanced' \| 'budget'` | `'balanced'` | Model tier for all agents |
|
|
295
279
|
| `model_overrides` | `Record<AgentType, ModelTier>` | | Per-agent model overrides |
|
|
296
|
-
| `
|
|
297
|
-
| `
|
|
298
|
-
| `
|
|
299
|
-
| `
|
|
300
|
-
| `
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
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 (
|
|
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
|
|
340
|
-
| `maxsim-simplify` | Task |
|
|
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
|
|
343
|
-
| `using-maxsim` | Task | Routes work through
|
|
344
|
-
| `brainstorming` | Task | Explores multiple approaches
|
|
345
|
-
| `roadmap-writing` | Task | Creates
|
|
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
|
-
| `
|
|
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
|
-
| `
|
|
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
|
|
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
|
-
|
|
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
|
|
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` | `
|
|
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
|
package/dist/assets/CHANGELOG.md
CHANGED
|
@@ -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"}
|