Contributing¶
The authoritative contributor guide is AGENTS.md
at the repo root. This page is a short orientation; AGENTS.md has the full rules.
Repository boundary¶
- Keep exactly one root action metadata file:
action.yml(oraction.yaml). CI fails otherwise. - The worker is self-contained under
worker/; its only runtime dependency isjose. Do not couple it to the action scripts or vendor code from the privateMagmaMoose/diatreme-prodashboard repo.
Editing rules¶
- Preserve action input names, output names, defaults, and behaviour unless a breaking change is explicitly approved; every consumer pins to this contract.
- Keep
README.mdexamples aligned withaction.yml. - Shell scripts must stay executable in Git (
git update-index --chmod=+x). - Never commit secrets,
.dev.vars, build output, or caches.
Local validation¶
Action surface (repo root):
ruby -e 'require "yaml"; YAML.load_file("action.yml")'
actionlint -color=false
shellcheck -S warning scripts/*.sh
bats tests/bats
Worker surface (cd worker/):
npm ci && npm run check # typecheck + vitest + wrangler dry-run
CI gates¶
ci.yaml: validates both surfaces (actionlint, shellcheck, bats, a python-semantic-release pin smoke-test; worker typecheck + tests; broker tests).release.yaml: dogfoodsuses: ./to release the action and moves the floating major tag.deploy-worker.yaml: validates and deploysworker/to Cloudflare as the rollback target (not currently serving).security.yml: the org Chargate security gate.docs.yml: builds this site withmkdocs build --strictand publishes it to GitHub Pages on pushes tomaintouchingdocs/**ormkdocs.yml.broker-smoke-aws.yml: weekly end-to-end proof that both broker hostnames (served by the Python/Lambda broker) turn a real OIDC token into a working installation token.
Note that docs.yml only runs on main. A docs change that breaks a link
passes pull-request CI and fails after merge, so run mkdocs build --strict
locally before opening the PR.
Where to put documentation¶
Two surfaces, kept apart on purpose:
./docsis the published human site. Reference and architecture pages carry asourcesHTML comment under the H1 listing the files they document, so staleness can be detected mechanically. Keep the nav inmkdocs.ymlin sync with the pages..claude/*.mdis terse agent context, not published.
README.md owns the exhaustive input and output tables. Pages under ./docs
link to it rather than copying it, so the two can't drift.