Harness is an opinionated CLI for humans and coding agents. It gives projects a Rails-like structure for TypeScript: small files, focused classes, small functions, generators, specs, and loop driven development that agents can query before making a change.
bun run dev -- new lib my-lib
bun run dev -- new app my-app
bun run dev -- generate model Post title:string body:text --adapter sqlite
bun run dev -- generate mailer Welcome
bun run dev -- generate resource Article
bun run dev -- info scaffolds
bun run dev -- info model
bun run dev -- info model --json
bun run dev -- loop search feature
bun run dev -- loop create checkout-flow --from feature --goal "Customers can check out"
bun run dev -- loop next checkout-flow
bun run dev -- loop evaluate checkout-flow
bun run dev -- audit .
bun run dev -- audit . --coverage
bun run dev -- audit . --profile app
bun run dev -- audit . --profile dapp
bun run checkappscaffolds a SvelteKit-shaped application inspired by Daniel'sapp-template.dappaudits SvelteKit dApps with Antelope or Harbor smart-contract folders.libscaffolds a Bun TypeScript package.
- One file should have one reason to change.
- Prefer small functions and tiny classes over broad modules.
- Generate a feature spec before implementation work.
- Keep persistence behind adapters.
- Give agents static, explicit instructions through
harness info. - Use inherited
harness looptemplates to drive, evaluate, and trace non-trivial work. - Use
harness info scaffolds --jsonto inspect what each scaffold should contain. - Use
harness audit --coverageto inspect which ecosystem adapters covered the project. - Generated projects use
bun run checkto run format checks, project checks, tests, build, and Harness audit. - Configure audit and generated lint thresholds with
harness.audit.json.