When to use
- •You changed
src/agent_loom/compound/install.py. - •You changed
src/agent_loom/compound/cli.pyin a way that affects installation/scaffolding. - •You changed any file that is expected to be installed/generated under
.opencode/. - •You changed Compound-managed templates that are mirrored under
src/agent_loom/compound/opencode/.opencode/(including.opencode/plugins/*).
Goal
Keep Compound installation outputs deterministic and regression-tested.
Checklist
- •
Identify the install contract
- •What files must be created under
.opencode/? - •Pay special attention to:
- •
.opencode/skills/ - •
.opencode/commands/ - •
.opencode/plugins/(for example.opencode/plugins/compound_engineering.ts)
- •
- •Which files are templates mirrored under
src/agent_loom/compound/opencode/.opencode/?- •For plugins, ensure
.opencode/plugins/*stays in sync withsrc/agent_loom/compound/opencode/.opencode/plugins/*.
- •For plugins, ensure
- •Which files must be gitignored (for example
.opencode/memory/observations.jsonl)?
- •What files must be created under
- •
Ensure deterministic content
- •Stable ordering (no set/dict iteration).
- •No timestamps, random IDs, or machine-specific absolute paths.
- •
Prevent template drift
- •If you update a file in
.opencode/, update its mirror undersrc/agent_loom/compound/opencode/.opencode/in the same change. - •Prefer making
tests/test_compound_install.pyassert:- •both copies exist for mirrored assets
- •key markers/blocks exist in the installed outputs (avoid full-file snapshots unless the full file is the contract)
- •If you update a file in
- •
Update/add contract tests
- •Edit
tests/test_compound_install.pyto assert:- •required files exist
- •required file contents include key markers/blocks
- •gitignore entries are present and correct
- •Edit
- •
Verification gate
- •
uv run basedpyright - •
uv run ruff check . - •
uv run pytest tests/test_compound_install.py
- •
Common failure modes
- •Template drift between
.opencode/andsrc/agent_loom/compound/opencode/.opencode/. - •Tests asserting full file contents that include nondeterministic data.
- •Installing files that should be ignored/ephemeral (logs, observations) without adding
.gitignorerules. - •Plugin changes not mirrored (especially
.opencode/plugins/*), causing installs to diverge from repo state.
Manual notes
This section is preserved when the skill is updated. Put human notes, caveats, and exceptions here.