Contributing
Auwai is a Python standard-library project.
The source is under skills/auwai/scripts.
The tests are under tests.
Change loop
- Read the relevant architecture page.
- Make the smallest change that keeps the existing commands working.
- Add a test for the new behavior.
- Run
python3 -m unittest discover -s tests. - Run
python3 skills/auwai/scripts/auwai.py doctor. - If you changed the skill, commands, agent, hook, or capability contract,
run
make pluginsand commit the generated bundles. - Run
make docs-checkif you changed documentation. - Run
make docs-siteif you changed a page or a diagram. The generated site lives in_site/and is not committed. - Commit on a feature branch.
Design rules
- No model call in the index, planner, ledger, guard, or watcher.
- No network call in the core.
- The JSONL files and the SQLite ledger must agree after
index,refresh, andrecord. - A new command should work on a repository with no
.auwaidirectory and give a clear error. - A new data field should have a reader or a documented purpose.
- A new table should be added in
store.initand documented in the schema page.
Plugin changes
The shared source is skills/auwai, extensions/plugin_common, and
extensions/plugin_common/core. The four bundles are generated:
make plugins
Do not hand-edit extensions/claude-code/plugins/auwai,
extensions/codex/plugins/auwai, the generated files under
extensions/hermes/auwai-hermes, or the generated skill/commands/agent copies
under extensions/opencode. Change the shared source and regenerate.
The parity suite is a release gate:
python3 -m unittest tests.test_plugin_parity -v
Release checks
make lint
make version-check
make docs-check
make test
make plugin-install-test
The storage and packaging jobs run on clean runners. See release for the tag flow.
Style
- Python 3.10 syntax is allowed.
- Use type hints on public functions.
- Keep a function focused on one job.
- Comments state the reason, not the syntax.
- Do not use em dashes.
- Keep prose in documentation at or under 110 columns.