Skip to content

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:

Terminal window
cargo fmt
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

For 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

LayerCrate / dir
New toolcrates/tools/
New slash commandcrates/commands/
New providercrates/lime-provider-*/
Agent-loop / session changescrates/runtime/
CLI surfacecrates/lime-cli/
VS Code extensionextensions/vscode/
Web PWAweb/
Public docswebsite/ (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:

Terminal window
cd website
npm install
npm run dev

Reporting 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.