First-party. This plugin is built and maintained by ShipWithAI. Unlike the reviewed third-party tools in this toolkit, it is our own product — judge it accordingly.
Problem it solves
Most projects start their Claude Code life with a pasted CLAUDE.md that describes a project
that no longer exists. The commands are wrong, the directory layout drifted three refactors
ago, and nothing stops the model from writing to .env.
Harness inverts the order: it reads your repository first, then writes the file. Stack, build commands, directory structure, env vars and test framework are extracted from the files that are actually in the project — not from a template you promise yourself you will update later.
How to install
/plugin marketplace add ShipWithAI/shipwithai-plugins/plugin install shipwithai-harness@shipwithaiHow to use
/shipwithai-harness:setup # scan the project, then generate the harness/shipwithai-harness:doctor # score an existing harness and offer fixessetup runs in five steps — scan, summarize, ask, write, validate. It asks exactly two
questions: what the project is (required) and any conventions you want enforced (optional).
Five files come out of it:
| File | What it holds |
|---|---|
CLAUDE.md | Your real commands, directory layout, and conventions |
.claude/settings.json | Permission rules tuned to your toolchain |
.claude/hooks/validate-command.py | Blocks fork bombs, curl | bash, force pushes |
.claude/hooks/protect-files.py | Hard-blocks writes to .env, .pem, .key |
docs/ARCHITECTURE.md | Architecture snapshot from your actual structure |
Pro tips
- Read the scan summary before answering the two questions. If it misread your stack, fix that first — everything downstream inherits the mistake.
- Run
/shipwithai-harness:doctorafter a big refactor. Harness drift is invisible until Claude starts confidently running a command that no longer exists. - The generated hooks are a floor, not a ceiling. Add project-specific blocks once you see which mistakes your codebase actually invites.
When NOT to use
Skip it if you already run ShipWithAI Starter — Starter’s init covers the same ground and more.
Skip it for throwaway scripts and sandboxes, where a harness costs more than it saves. And if your
project has no recognizable config file, expect to edit the output by hand.