src/holds the Rust library and CLI code;src/main.rswires the CLI and i18n.src/x/contains experimental integrations (cursor, claude_code, codex).src/tool/contains developer utilities used by the CLI.tests/contains integration tests; files are named*_tests.rs.templates/stores prompt templates;locales/stores i18n YAML files.artifacts/testing_config_home/is the test fixture config root used by dev commands.scripts/has helper scripts;docs/has design and planning notes.
This project targets Rust edition 2024 and uses the nightly toolchain.
just build/just build-release: debug or release builds.just run -- <args>: run with test config (LLMAN_CONFIG_DIR=./artifacts/testing_config_home).just run-prod -- <args>: run with production config.just test: run the full test suite.just check: format check, lint, and tests.just check-all: check plus docs, release build, and SDD template checks.just check-sdd-templates: verify SDD template version headers and locale parity.just fmt/just lint: rustfmt and clippy.
Cargo equivalents use cargo +nightly ....
- Use rustfmt defaults (4-space indentation) and keep code warning-free; clippy runs with
-D warnings. - Use
snake_casefor file and module names; keep CLI subcommands lowercase with hyphens for multi-word names. - Prefer small, focused functions and reuse shared helpers in
src/path_utils.rsandsrc/config.rs.
- Add unit tests near the code when possible, and integration tests under
tests/. - Name new integration test files
*_tests.rsand keep test names descriptive. - Interactive CLI flows (e.g.
inquireprompts) do not require automated tests; test the core, non-interactive logic instead. - Use
LLMAN_CONFIG_DIR=./artifacts/testing_config_hometo avoid touching real user config. - Avoid workspace pollution: tests that may create files/dirs MUST use
tempfile::TempDir(orTestEnvironment) and write only inside it so everything is auto-cleaned. - Avoid parallel test collisions: don’t use fixed relative paths/identifiers in the repo root (e.g.
config,config.yaml); prefer unique temp paths and guard env/cwd changes withcrate::test_utils::TestProcess. - When editing
templates/sdd/**, runjust check-sdd-templates(also injust check-all).
- Commit messages use a short type prefix such as
feat:,fix:,refactor:,doc:, orbump:with an optional scope, for examplefix(security): .... - Keep commits focused and in present tense.
- PRs should include a clear summary, testing commands run, and links to related issues. Include sample CLI output when user-visible behavior changes.
- Default config lives in
~/.config/llman/unless overridden byLLMAN_CONFIG_DIR. LLMAN_LANGis reserved; onlyenis supported unless explicitly requested otherwise.- i18n strings are placeholders; English-only is required unless explicitly requested otherwise.