An AI-native dev harness. Solemnly swear you're up to no good.
Project description
marauders-mischief
An AI-native dev harness. Solemnly swear you're up to no good.
A versioned, harness-agnostic development framework for AI-native software engineering. Size-adaptive sessions, multi-agent quality gates, persistent context across sessions.
Built for Claude Code today; designed to support Codex CLI and Cursor in future releases.
Status: Pre-release. v0.7.0 ships execute step-decomposition — phase plans declare N build steps; each step gets its own fresh-context execute-step-agent dispatch (renamed from execute-agent). Bounded context per step solves the long-running-agent context-accumulation problem.
Install
pipx install marauders-mischief
# or
uv tool install marauders-mischief
Quickstart
mkdir my-new-project && cd my-new-project
git init
mar init
This scaffolds the harness into your repo:
my-new-project/
├── CLAUDE.md Project-level context (you own)
├── .brain/ Curated, distilled context (you own)
│ ├── CONTEXT.md
│ ├── STATE.md
│ ├── STACK.md
│ ├── DECISIONS.md
│ └── RISKS.md
├── .claude/
│ ├── agents/ 12 subagents (research, plan, execute, ...)
│ ├── commands/mar/ 19 slash commands (/mar:*)
│ └── settings.json Hooks + permissions (mar manages its keys)
├── ops/
│ ├── memory/ Knowledge capture pipeline (uv-managed)
│ ├── workflow/ Session/phase/stage spec + scripts
│ └── ideas/ Idea lifecycle machinery
└── .mm/
├── version Installed mar version
└── lockfile.json SHA256 of every framework file
Then:
cd ops/memory && uv sync # one-time: set up memory pipeline deps
Fill in .brain/CONTEXT.md and .brain/STATE.md, and you're ready to run /mar:session-start in Claude Code.
Commands
| Command | Purpose |
|---|---|
mar init |
Scaffold the harness into the current directory |
mar update |
Pull latest framework version and apply updates (v0.2) |
mar status |
Show installed version and local drift (v0.2) |
mar doctor |
Verify install integrity (v0.2) |
Flags:
--target <adapter>— currentlyclaude(default).codexandcursoradapters land in future releases.--force— overwrite scaffolded files (.brain/*,CLAUDE.md) that already exist.--project-name <name>— substituted into Jinja-rendered templates. Defaults to the current directory name.
How it works
File classes
Every file shipped by mar belongs to one of three classes (see docs/file-classes.md):
| Class | Behavior |
|---|---|
| framework | Owned by mar. Overwritten on mar update. Conflict-detected if you edit locally. |
| scaffolded | Created once at init. You own thereafter; mar never touches. |
| merged | mar owns specific keys; you own everything else in the same file. Update reconciles only mar's keys. |
This split is what lets mar update upgrade the framework without clobbering your project's content.
Adapter layer
The mar core is harness-agnostic in spirit. Each harness (Claude Code, Codex CLI, Cursor) gets a small adapter that:
- Validates which paths the framework can write to
- Provides merge strategies for files that mix framework wiring with user config (e.g.,
.claude/settings.jsonfor Claude Code)
Today only the Claude Code adapter is implemented. Adding a new adapter means subclassing Adapter and MergeStrategy.
The workflow framework
mar's centerpiece is a size-adaptive session loop:
- XS edits skip the framework entirely
- S/M sessions collapse to a single phase
- L/XL sessions get an explicit meta-plan with human approval gates between phases
Each phase runs through stages: research → plan → execute → test → refine → simplify → verify → review + tester → integrate. A PreToolUse scope hook prevents agents from editing outside their declared scope.
Full spec lives in your repo at ops/workflow/README.md after mar init.
Slash commands
After mar init, these are available in Claude Code:
| Command | What it does |
|---|---|
/mar:session-start |
Start a new session (size/guidance/autonomy picker) |
/mar:plan |
Run research + planning for the current sub-stage |
/mar:ship |
Run execute → test → refine → simplify → verify → review + tester |
/mar:integrate |
Compose commit story, propose .brain/ writebacks |
/mar:approve <gate> |
Pass a gate |
/mar:iterate <gate> "<note>" |
Refine in place with new direction |
/mar:replan |
Discard current plan and re-plan from scratch |
/mar:status |
Current session status |
/mar:session-list |
All active and recently archived sessions |
/mar:idea-new |
Capture an incubating idea |
Full reference: see .claude/commands/mar/*.md after install.
Development
Clone and set up:
git clone git@github.com:sindreespeland/marauders-mischief.git
cd marauders-mischief
uv sync --dev
Run tests:
uv run pytest
uv run ruff check src tests
Try mar init against a throwaway directory:
mkdir /tmp/test-install && cd /tmp/test-install
uv run --project ~/repos/marauders-mischief mar init
Roadmap
- v0.1 —
mar init, Claude Code adapter, the workflow framework (v2) - v0.2 — multi-role meta-research (workflow v3): parallel role-agents at Stage 2a with a mid-research briefing gate
- v0.3 — meta-planning v4: strategist / author / skeptic with named decomposition strategies + 4-option meta-plan gate (approve / iterate / revise / redirect)
- v0.4 — single-repo gh issue creation: Stage 2b creates real GitHub issues against
origin; service-organized layout removed - v0.5 — phase research v2: hypothesis-driven, 5-section structured output, optional skeptic for L/XL phases, 4-option phase research gate
- v0.6 — phase plan v6: author + skeptic at per-phase grain; 10-entry implementation strategy catalogue (incl. 3 AI-native); 3 optional plan sections for AI/agentic phases; 5-option phase plan gate
- v0.7 — execute step-decomposition: plan declares build steps; fresh-context execute-step-agent per step; bounded context for the doing stage
- v0.8 —
mar update(with conflict resolution),mar status,mar doctor - v0.9 — Codex CLI adapter, Cursor adapter
- v0.10 —
mar update --auto-check(optional auto-notify on session start)
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file marauders_mischief-0.7.0.tar.gz.
File metadata
- Download URL: marauders_mischief-0.7.0.tar.gz
- Upload date:
- Size: 189.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
341fece29a18ce68591fea900cdeda548e724bf5f895b7a99a739ed2e5d4feb4
|
|
| MD5 |
904945cc5e262ac9969d7120b35bb4fb
|
|
| BLAKE2b-256 |
bad8158b889991326526def70572aa958e26c3eb814f7a6a640d763b89e7e86e
|
Provenance
The following attestation bundles were made for marauders_mischief-0.7.0.tar.gz:
Publisher:
release.yml on sindreespeland/marauders-mischief
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
marauders_mischief-0.7.0.tar.gz -
Subject digest:
341fece29a18ce68591fea900cdeda548e724bf5f895b7a99a739ed2e5d4feb4 - Sigstore transparency entry: 1527540781
- Sigstore integration time:
-
Permalink:
sindreespeland/marauders-mischief@b1a277ef552ea2d7530e5a42d45990b8460ed5c5 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/sindreespeland
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b1a277ef552ea2d7530e5a42d45990b8460ed5c5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file marauders_mischief-0.7.0-py3-none-any.whl.
File metadata
- Download URL: marauders_mischief-0.7.0-py3-none-any.whl
- Upload date:
- Size: 250.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0c3fe8feaf3fb2a1c70fc070a16af3af1d89e3304903684039b8fa40a706163
|
|
| MD5 |
b511e6f2de841d66bb10514698345987
|
|
| BLAKE2b-256 |
ed174a34846b0c64d872776ba6c0ed8ced809d93c4e67cba002ad2386c3b7e71
|
Provenance
The following attestation bundles were made for marauders_mischief-0.7.0-py3-none-any.whl:
Publisher:
release.yml on sindreespeland/marauders-mischief
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
marauders_mischief-0.7.0-py3-none-any.whl -
Subject digest:
f0c3fe8feaf3fb2a1c70fc070a16af3af1d89e3304903684039b8fa40a706163 - Sigstore transparency entry: 1527540950
- Sigstore integration time:
-
Permalink:
sindreespeland/marauders-mischief@b1a277ef552ea2d7530e5a42d45990b8460ed5c5 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/sindreespeland
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b1a277ef552ea2d7530e5a42d45990b8460ed5c5 -
Trigger Event:
push
-
Statement type: