CodeAlmanac is a local codebase wiki for AI coding agents. A good contribution keeps the command surface scriptable, the wiki artifact repo-owned, and the code shape easy for the next maintainer to extend.
git clone https://github.com/AlmanacCode/codealmanac.git
cd codealmanac
uv sync
uv run codealmanac --helpFor local CLI testing, prefer uv run codealmanac ... from the checkout. To
test the installed package path, use uv tool install --force . in a disposable
environment.
Run these before opening a pull request:
uv run pytest
uv run ruff check .
uv buildUse focused pytest runs while developing, then run the full suite before review.
- Read
README.md,MANUAL.md, anddocs/concepts.mdfor the product model. - Search the local
.almanac/wiki before changing a real subsystem. - Keep changes local-first. Repo wiki data lives under the configured Almanac
root, which defaults to
almanac/. User state lives in~/.codealmanac/. - Keep commands scriptable. Avoid interactive prompts in CLI flows.
Tests use pytest. Tests that touch user state should use the isolated_home
fixture so they write under a temp ~/.codealmanac/, not the real registry.
Prefer creating real initialized wikis through:
app.workflows.build.initialize(InitializeWorkspaceRequest(path=repo))Synthetic wiki fixtures must include both source markers:
<almanac-root>/topics.yaml
<almanac-root>/pages/
README.md alone is not a wiki marker.
A good pull request includes:
- A clear problem statement.
- The design choice, including rejected alternatives when architecture changes.
- Tests or a short explanation of why no automated test is useful.
- Any docs or wiki updates needed for future agents.
Keep pull requests buildable and scoped. Avoid unrelated formatting churn.
Use the existing commit style:
feat(slice-N): <summary>for new slice work.fix(slice-N-review): <summary>for review fixes.docs: <summary>for documentation-only changes.refactor(slice-N): <summary>for structural cleanup within a slice.