| title | Contributing — Dev Quickstart |
|---|
Thanks for helping improve STAN! This project follows a services‑first, test‑first philosophy. Here’s how to get started locally.
Prereqs:
- Node ≥ 20
- Git
Clone and install:
git clone https://github.com/karmaniverous/stan-cli.git
cd stan-cli
npm iRun the full test and validation suite:
npm run lint
npm run typecheck
npm run test
npm run build
npm run docs
npm run knipIf stan run is temporarily broken while developing STAN itself, use the bootstrap scripts as a stopgap to exercise the pipeline and generate the usual artifacts (outputs and archive) without relying on the CLI:
-
Primary orchestrator (runs multiple tasks concurrently and then archives):
npm run bootstrap
This will:
- run typecheck, lint, test, build, and docs concurrently,
- write deterministic outputs to
.stan/output/*.txt, - and create
.stan/output/archive.tar.
-
You can also run individual bootstrap tasks:
npm run bootstrap:typecheck npm run bootstrap:lint npm run bootstrap:test npm run bootstrap:build npm run bootstrap:docs npm run bootstrap:archive
Note: these bootstrap scripts are for STAN development only (fallback tooling). Consumers of STAN should use the CLI directly, e.g. stan run.
- Single‑Responsibility modules; prefer small, testable units.
- Plain unified diffs for patches.
- Keep
.stan/system/stan.todo.mdupdated with each change set and include a commit message (fenced) in chat replies.
- Prefer importing from barrels (directory index.ts) in tests and higher‑level modules to keep call sites stable and avoid deep paths.
- Avoid importing a barrel from within its own subtree to prevent cycles. Within a subtree, prefer local relative imports instead of the subtree’s barrel.
- Keep barrels as the only public entry points for their areas; treat internal files as implementation details.
- Create a feature branch:
git checkout -b feature/your-change - Ensure all CI tasks (
lint,typecheck,test,build,docs) pass locally. - Open a Pull Request with a clear description and links to any related issues.
- Expect a review focusing on tests, documentation updates, and module design. Adherence to the project's design principles is key.
Open a GitHub issue with details or propose a design sketch in the PR description.