Loop is a community project and an open standard. Contributions of every size are welcome — a new preset, a grammar fix, docs, a runtime improvement.
- Presets (easiest, highest value) — author a method as a
.loopfile inpackages/stdlib/. This is how the ecosystem grows. Seepackages/stdlib/BMAD.loopfor the pattern. - Grammar / parser — handle a syntax edge case in
@loop-lang/parser. Add a fixture underexamples/and a snapshot test. - Runtime — improve how
@loop-lang/runtimedrives Claude Code, verifies, or handles human gates. - Editor — TextMate grammar, formatter rules, or CodeLens behavior in
@loop-lang/vscode. - Docs — the README, the language reference, examples.
The loop-spec IR (spec/loop-spec.schema.json) is the contract between parser, runtime, and editor. Changes to it are the most impactful and the most scrutinized — open an issue to discuss before a PR. Anyone may build an alternative parser, runtime, or editor against this spec.
npm install
npm run build
npm testEach package builds and tests independently (npm run test -w @loop-lang/parser).
- Keep PRs focused. One concern per PR.
- Add or update tests. Parser/grammar changes need an
examples/*.loopfixture. - For new vocabulary or IR changes, update
spec/loop-spec.schema.jsonand the README vocabulary list in the same PR. - Be kind in review. See the Code of Conduct.
Look for the good first issue label. Authoring a new preset is the best entry point — no internals required, just the language.
By contributing, you agree your contributions are licensed under Apache-2.0.