Thanks for your interest! Here's how to contribute.
# Clone and install
git clone https://github.com/moikapy/kapy-script.git
cd kapy-script
bun install
# Run tests
bun test
# Run the CLI locally
bun run src/cli/main.ts run examples/hello.kapy
# Type-check
bun run src/cli/main.ts check examples/hello.kapysrc/
lexer/ — Tokenizer (indentaion-aware, string interpolation, escape sequences)
parser/ — Recursive descent parser → AST
typechecker/ — Local type inference, ADTs, error reporting
transpiler/ — AST → TypeScript emitter with source maps and content-hash cache
runtime/ — @kapy/runtime (Result, llm, embed, print, mock, stdlib submodules)
cli/ — Standalone CLI commands (run, check, test, init, repl, fmt, lint)
extension/ — @kapy/script kapy extension (register + meta exports)
test/ — 13 test files, 239 tests, 467 assertions
examples/ — 7 example .kapy files
docs/ — getting-started.md
- Create a branch —
feat/my-featureorfix/my-bug - Write tests first — Add tests in
test/before implementing - Run the suite —
bun testmust pass with 0 failures - Check examples — All 7 examples must pass
kapy check - Commit — Use conventional commits (
feat:,fix:,docs:,chore:)
- TypeScript strict mode
- 2-space indentation (no semicolons in .ts)
- Async everywhere (all kapy-script functions are async)
- Error messages point to
.kapysource locations with actionable suggestions
Open a GitHub issue with:
- The
.kapysource that triggers the bug - The full error output
- What you expected to happen
v0.1 scope is frozen. Feature requests for v0.5+ are welcome — just label them v0.5 or future.
MIT — see LICENSE