Reusable Python modules imported by tasks/*.py invoke tasks. All functions are module-level —
no classes required except small helper validators in common/cli.py.
modules/
common/ # cli, properties, prompt_commands, route_utils, utils helpers
docs/ # changelog sync — docs/change_logs/ vs properties.yml
hermes/ # syncs ~/.hermes/ config + SKILL.md from .github/prompts/
ollama/ # local-LLM install/list/status/uninstall/update
opencode/ # syncs .opencode/command/ from .github/prompts/
repo/ # pull, push, log, squash, rebase (git workflow)
setup/ # creates/stamps properties.yml, called by setup.sh/setup.ps1
template/ # sync shared, generic tooling with the parent template repo for /template
versioning/ # check pyproject.toml deps and workflow action refs vs. latest releases, update locks;
# bump the repo's VERSION file for deploys/releases
Repo-consistency checks (check_agents) live under root tests/ as pytest tests, not here — see
../tests/test_check_agents.py and .github/instructions/tests.instructions.md.
| Directory | Purpose |
|---|---|
common/ |
CLI helpers, properties.yml config reader, .github/prompts/ parser, output/utility helpers |
docs/ |
Changelog sync — docs/change_logs/ vs properties.yml |
hermes/ |
Syncs ~/.hermes/ config + SKILL.md from .github/prompts/ |
ollama/ |
Local-LLM install/list/status/uninstall/update |
opencode/ |
Syncs .opencode/command/ from .github/prompts/ |
repo/ |
Git workflow, session logging, squash, and rebase |
setup/ |
Creates/stamps properties.yml, called by setup.sh/setup.ps1 |
template/ |
Sync shared, generic tooling with the parent template repo for /template |
versioning/ |
Check pyproject.toml deps and workflow action refs vs. latest releases, update locks; bump the repo's VERSION file for deploys/releases |
- One module per file; filename matches the concern in snake_case
- Each
modules/repo/*.pyfile exposes amain()entry point - Shell out via
subprocess.run(..., cwd=repo_path)— nevershell=True - Use
modules.common.utils(success/error/warning/info) for all console output - Resolve repo config via
modules.common.properties