Thanks for wanting to contribute. This repo hosts the SkDD methodology, the skillforge meta-skill, example skills, and (eventually) a CLI and a Claude Code plugin. Contributions fall into three buckets:
- Methodology changes — edits to
docs/,colony/, or the README. - New or improved skills — changes under
skillforge/,examples/webapp-starter/skills/, or new skill directories you'd like upstreamed. - Tooling — the
skddCLI, CI workflows, the Claude Code plugin, or the.colony.jsonschema.
- Use pnpm for all JavaScript/TypeScript work. This repo does not support npm or yarn; they will produce inconsistent lockfiles.
- Keep skills spec-compliant. Every
SKILL.mdmust passskdd validate. CI runs it on every PR; you can run it locally viapnpm -C cli build && node cli/dist/index.js validate skillforge examples/webapp-starter/skills plugins/skdd-claude/skills. - Always write user-project skills to the canonical
skills/directory. Harness-specific paths (.claude/skills,.codex/skills,.cursor/skills,.github/skills, etc.) are mirrors maintained byskdd link— never edit them directly. If you find yourself needing to, the instruction block inCLAUDE.md/AGENTS.md/.cursor/rules/skills.mdcis probably missing the "always write toskills/, never to the mirror" line; fix that first. (This rule applies to user projects that consume SkDD; the SkDD methodology repo itself keepsskillforge/at the root because the canonical seed there is the meta-skill, not a multi-skill directory.) - Don't break existing skills. If you add a metadata field, make sure agents that don't recognize it still work. The spec allows arbitrary
metadata; SkDD extensions must never move to required status. - Prefer editing over duplicating. If a skill or doc needs updating, edit it in place. Fork only when the divergence is large enough to justify two skills.
Before opening a PR that adds or changes a skill, verify:
-
nameis kebab-case, 1–64 characters, matches the directory name -
descriptionis 1–1024 characters and contains the trigger phrases an agent would use to discover it - Steps are numbered, actionable, and copy-pasteable by a fresh agent with no session context
- No hardcoded paths, secrets, environment values, or personal data
-
SKILL.mdis under 200 lines — move detail toreferences/when it grows beyond that -
scripts/are executable (chmod +x) and do the thing they claim to do - The skill is registered in the nearest
.skills-registry.md(both the markdown and JSON forms, once JSON exists) - Edge cases section lists at least one non-trivial case (even "none known yet" is fine)
This list is reusable — it's the same one enforced by skdd validate and by the Claude Code plugin's /forge command.
Methodology changes land in docs/ and colony/. Keep prose:
- Concrete. Prefer file paths, line counts, and commands over metaphor.
- Actionable. Every "should" needs a "how." Every concept needs an example.
- Consistent. Use the terminology defined in
docs/skill-colony.md— forge, evolve, compose, colony, registry, harness.
If you're introducing a new concept, add it to the terminology section in docs/skill-colony.md and reference it from wherever else it appears.
The skdd CLI lives under cli/ and uses pnpm + TypeScript + Vitest. Before opening a PR:
pnpm -C cli install
pnpm -C cli test
pnpm -C cli buildAll three must pass. The GitHub Actions workflow under .github/workflows/validate-skills.yml re-runs these on every PR, runs skdd validate across every skill in the repo, and greps for any stale pre-rename references (the project was renamed to SkDD in an early commit; the grep prevents regressions of the old acronym).
- Small doc fixes: single approval from a maintainer, merged same-day when possible.
- New skills in
examples/: single approval; the reviewer runs through the skill steps mentally to check for gaps. - New skills proposed for adoption in
skillforge/or a new top-level skill directory: two approvals, and the skill must have been used in at least one real project first (link the usage in the PR). - CLI / plugin changes: two approvals, CI must be green, and the changelog (once it exists) must be updated.
Everything in this repo is MIT-licensed. Contributions are accepted under the same license. Don't include code or docs you can't license under MIT.
Open a GitHub Discussion or a draft PR with [RFC] in the title. Draft PRs are the preferred way to propose methodology changes that need feedback before you commit to them.