Skip to content

Development

Stdlib tests, plugin validation and evals locally — then every green merge to main versions and publishes itself.

Updated

Local checks

python3 tests/run.py                    # stdlib self-checks
claude plugin validate .
claude plugin eval . --tag smoke --runs 1 --ablation none --max-cost-usd 2 --no-publish --allow-tools Bash Write Edit
python3 scripts/release.py X.Y.Z --push # optional manual release

The runner gives every test script temporary state and a fake model provider, so tests run offline and never make paid model calls. JavaScript regex compatibility is also checked when Node is installed.

Automatic releases

Every push or merge to main runs the full CI matrix, then versions and publishes the tested revision. Conventional commits pick the bump:

CommitRelease
feat: …Minor
feat!: … or BREAKING CHANGE:Major
Anything elsePatch

Both plugin manifests, the Python version, the changelog, the release commit and the tag move together. Jobs for the same revision are serialised, an atomic push prevents orphan tags, and rerunning a failed job resumes the tagged release instead of bumping again. Failed tests never publish.

Versioning

BumpWhen
MajorBreaking changes to hook commands (Codex would need to re-trust), the ~/.honey layout or the CLI
MinorNew skills or RSI capabilities
PatchFixes

Further reading

Changelog · Skill style guide · Design plan · Credits and licenses

Source of truth: the honey-stack guides. Spotted a gap? Open an issue.