Contributing
Contributions are welcome. The repo’s working contract for both human
and agent contributors lives in AGENTS.md at the root — it covers
working agreements, Rust standards, security expectations, and the code
review bar.
This page is the short version.
Before opening a PR
The workspace must build cleanly and pass lints:
cargo fmtcargo clippy --workspace --all-targets -- -D warningscargo test --workspaceFor scoped changes, the targeted equivalents are usually enough during iteration; run the full workspace before pushing. See Building from source.
Conventions
- Make the smallest change that fully solves the request. Avoid opportunistic refactors unless they reduce risk for the requested change.
- Preserve user work. Never overwrite changes you didn’t make. If you find unexpected state in a worktree, ask before resolving.
- No
unwrap/expect/panic/ unchecked indexing in production paths unless the invariant is local, obvious, and documented. - Validate untrusted input at boundaries — CLI args, config files, plugin manifests, tool inputs, paths, network responses, and model/provider payloads.
- Keep destructive operations explicit and reversible where possible. Confirm behavior with tests before touching delete, overwrite, reset, or cleanup logic.
- Update tests in the same change when behavior changes.
- Update user-facing docs (this site,
README.md,AGENTS.md) when workflows or conventions change.
What goes where
| Layer | Crate / dir |
|---|---|
| New tool | crates/tools/ |
| New slash command | crates/commands/ |
| New provider | crates/lime-provider-*/ |
| Agent-loop / session changes | crates/runtime/ |
| CLI surface | crates/lime-cli/ |
| VS Code extension | extensions/vscode/ |
| Web PWA | web/ |
| Public docs | website/ (this site) |
Pull request hygiene
- Keep commits reviewable: separate behavior changes, refactors, formatting-only edits, and test-only edits when practical.
- Maintain existing public APIs, CLI behavior, data formats, config keys, and persistence formats unless the task explicitly requires a breaking change.
- Note any unrelated defects you spot, but don’t expand the change unless they block the task.
Documentation updates
The docs in website/ are part of the contribution surface. Every CLI
flag, slash command, env var, tool name, and provider slug listed here
is verified against crates/. When you change documented behavior in
the engine, update the corresponding page in the same change.
To preview your docs edits locally:
cd websitenpm installnpm run devReporting security issues
Please use a private GitHub Security Advisory at
https://github.com/NooberCong/lime-code/security/advisories/new rather
than opening a public issue. We’ll triage and respond there.