Thank you for your interest in contributing. This document explains how to contribute changes and what we expect from contributors.
- Fork the repository
- Create a feature branch:
git checkout -b your-change-name - Make your changes
- Run tests:
npm test - Commit with a clear message
- Open a PR
We welcome contributions in these areas:
- Per-tier reference files (antipattern catalogs, worked examples)
- Real integration tests and messy-repo dogfood scenarios
- Mode D suite hardening, cross-repo release edge cases, and dependent impact tests
- Host capability tests for AI coding tools with different spawning guarantees
- Extension pack examples and extension authoring tests
- New specialist agents for domain-specific work
- Bug fixes
- Documentation improvements
- Trivial style changes
- Renaming internal variables
- Adding emoji decoration (reject by policy)
All contributions must pass these checks before merge:
- No em dashes or en dashes (use commas, colons, semicolons, parentheses, or hyphens)
- No emojis as decoration (real icons OK in UI code only)
- No AI-generated decoration words ("powerful", "seamless", "revolutionary") in docs without quantification
- YAML frontmatter with
nameanddescription descriptionincludes "Triggers on:" with example phrases- Body is substantive (>100 chars beyond frontmatter)
- Documents what agent it spawns (or "(built-in)" if it doesn't spawn one)
- YAML frontmatter with
name,description,tools descriptiondocuments who spawns it- Has
## Gate Checkif it's a tier agent (tier 1+) - Has
## Have-Notsif it produces an artifact - Has
## YOLO Handlingif it has pause conditions - Has
## Done Criteria
- All smoke checks pass:
bash scripts/smoke.sh - All skill validation passes:
node scripts/validate-skills.js - Full release gate passes:
npm run release:check - Dogfood scenarios pass when migration, host, extension, suite, or release surfaces change:
node scripts/test-dogfood-runner.js - Package payload checks pass when runtime files, fixtures, routing, or docs change:
npm run pack:check - New agents added to relevant test loops
Godpowers uses Conventional Commits as a discipline for clear history, not as a load-bearing contract.
Format:
<type>(<optional scope>): <short summary>
<body explaining what and why>
Common types: feat, fix, perf, docs, refactor, test, chore, build, ci.
Examples:
feat(cost): split live vs estimated sourcefix(otel): handle missing span_id gracefully
Releases are manual and explicit:
npm version patch --no-git-tag-version
npm run release:check
rm -f godpowers-*.tgz
npm cache clean --force
npm pack
git add -A
git commit -m "Release godpowers X.Y.Z"
git tag -a vX.Y.Z -m "Godpowers X.Y.Z"
git push origin main
git push origin vX.Y.Z
gh release create vX.Y.Z --title "vX.Y.Z" --notes-file RELEASE.md
npm publish godpowers-X.Y.Z.tgz --access public
Repo documentation sync must be clean before publishing. It keeps README badges, public surface counts, release references, contribution guidance, security policy, and Pillars planning signals aligned. CHANGELOG.md and RELEASE.md are human-curated even when mechanical repo documentation sync has run.
Every change to user-facing text (README, skill descriptions, agent instructions) must pass the substitution test: replace "Godpowers" with a competitor. If the sentence still reads true, it decides nothing. Rewrite.
- Create
specialists/god-<name>.mdwith required sections - Add or update routing metadata if the agent is spawned by a command
- Add to
bin/install.jsif it needs special install handling (rare) - Add CHANGELOG entry under [Unreleased]
- Update README's command table if it has a new slash command
- Create
skills/god-<name>.mdwith frontmatter + thin orchestration - The skill should spawn the right specialist agent (don't do work in skills)
- Add
On Completionsection suggesting the next command - Create
routing/god-<name>.yamlwith atomic spawn tokens and trace events when agents are spawned - Add to
/god-nextrouting logic if appropriate - Add to README command table
- Add CHANGELOG entry
- Add dogfood or release-surface coverage if the command touches migration, host guarantees, extensions, suites, package contents, or release behavior
Open an issue with:
- Godpowers version (
cat ~/.claude/GODPOWERS_VERSION) - Runtime (Claude Code, Codex, etc.)
- Steps to reproduce
- What you expected
- What happened
- Relevant artifacts from
.godpowers/if applicable
By contributing, you agree your contributions will be licensed under the MIT License.