Contributing to CoalFace
August 9, 2026 ยท View on GitHub
CoalFace is the fan-out discipline of the TheColliery series. We welcome issues, bug reports, and pull requests.
๐ค Proposing a Change
- Open an issue first describing the problem, gap, or proposed feature (especially for changes to
skills/coalface/SKILL.mdโ the swarm contract). - Make your change and keep the verification gates green.
- For contract or conductor changes, dogfood a real swarm (a flat, many-spot worksite shows the discipline best) and document the behavior โ including the receipt โ in your PR.
๐ป Developing & Testing
CoalFace is zero-dependency (Node.js built-ins only). No npm install and no package.json โ the gates run directly:
node scripts/build-plugin.mjs # regenerate plugin/ from source
node scripts/verify.mjs # gate: files, manifests, factory config vs schema, dist-sync (both directions), version pins
node scripts/test.mjs # zero-dependency test suite (node --test, explicit file list)
CI runs the same two gates (verify โ test) on Linux/Windows/macOS โ deliberately without a build step, so a stale committed plugin/ fails loud instead of being silently rebuilt.
Development Rules
- Rebuild the dist after a source change: edit
skills/,hooks/,commands/, or the manifest, thennode scripts/build-plugin.mjsto re-syncplugin/(verify fails on a stale dist). scripts/lib/config-schema.mjsis the single source of truth for every.coalface.jsonkey โverify.mjsvalidates the factory config against it, and the README key table mirrors it (update both together).- Keep the conductor Phoenix-pure: zero dependencies, fail-silent (wrap in try/catch, never a non-zero exit, no
process.exit()), no network, no child processes, silent except the sanctioned SessionStart channel. - Add tests: every lib change gets a unit test; every conductor-behavior change gets a hermetic spawn test (spawn the real hook, sandbox TEMP + HOME). Register new test files in
scripts/test.mjsโ the runner fails loud on a listed-but-missing file AND on an on-disk orphan it doesn't list. - Language & tone: shipped source and docs stay in English.
๐ฅ๏ธ Supported Platforms
CoalFace is cross-agent โ the contract runs on any platform with concurrent subagents (workers spawn via the platform's NATIVE subagent tool; no API, no keys). Claude Code is the validated platform and adds the conductor hook (the standing auto-mode directive) plus optional CoalTipple worker tiering โ a cost bonus, never a gate. Every other concurrent-subagent platform works with CoalFace (swarm unrun there by us): the contract degrades conservatively (unknown width โ the conservative default; no fan-out at all โ a sequential pipeline under the same discipline โ never broken). If you run a platform we haven't verified, open an issue โ verification follows access.
๐๏ธ Project Layout
| Path | Purpose |
|---|---|
skills/coalface/SKILL.md | The resident fan-out contract (scout โ partition โ waves โ QC โ single-writer apply โ receipt). |
skills/coalface/references/ | On-demand depth: contract-template.md (the 8-point worker contract) ยท taxonomy.md (per-domain units/invariants/gates) ยท receipt.md (receipt + heads-up formats). |
hooks/coalface-conductor.js ยท hooks/hooks.json | Phoenix-pure SessionStart conductor + its wiring. |
commands/update.md | The /coalface:update self-update procedure (agent-side; the hook only schedules). |
scripts/ | Tool scripts: build-plugin.mjs, verify.mjs, test.mjs, lib/ (config-schema SSoT, jsonc, tests). |
plugin/ | Generated Claude Code plugin distribution โ never hand-edit. |
platform-configs/.coalface.json | Commented factory default configuration. |
๐ Releasing (Maintainers)
Bump version in .claude-plugin/plugin.json โก๏ธ add a CHANGELOG.md entry โก๏ธ ensure verify.mjs and test.mjs pass โก๏ธ commit โก๏ธ create a signed git tag (vX.Y.Z) โก๏ธ push โก๏ธ create a GitHub Release (stable tags only; a beta tag ships as a prerelease or stays history-only).
๐ License & Conduct
Contributions are licensed under the Apache License 2.0. Please assume good faith and be respectful. Report security issues per SECURITY.md.