Skip to content
🤖 Consolidated, AI-optimized GOMAD docs: llms-full.txt. Fetch this plain text file for complete context.
🚀 Build your own GoMad modules and share them with the community! Get started or submit to the marketplace.

Contributing to GoMad

Use the standard fork-and-PR workflow to contribute to GoMad. This page covers the test expectations every PR must meet before merge.

  • You’re proposing a new persona, skill, or domain knowledge pack.
  • You’re fixing a bug in the installer, in a tool under tools/, or in an existing skill.
  • You’re improving documentation or translations.

Fork xgent-ai/gomad on GitHub (use the Fork button in the top-right of the repo page), then clone your fork and install dependencies:

Terminal window
git clone git@github.com:<your-username>/gomad.git
cd gomad
npm install

GoMad is a hard fork of BMAD Method, not a continuously-merged downstream — there is no upstream sync to keep in lockstep. Treat your fork as a working copy of xgent-ai/gomad.

Create a feature branch off main using a conventional prefix:

Terminal window
git switch -c feat/your-feature-name

Use feat/ for new features, fix/ for bug fixes, docs/ for documentation changes, and chore/ for tooling or config updates. Keep the branch name short and descriptive.

Source-of-truth content lives under src/gomad-skills/, src/core-skills/, and src/domain-kb/. The installer copies these into the user’s <installRoot>/_config/ at install time — that’s the generate-don’t-move pattern, so always edit under src/, never under an installed copy.

For a new persona, add a src/gomad-skills/<phase>/gm-agent-<short>/ directory containing SKILL.md (frontmatter name: plus description:) and skill-manifest.yaml (displayName, title, icon). For a new task skill, use the same directory layout under the appropriate phase, with only SKILL.md (no skill-manifest.yaml is needed for task skills). For documentation changes, edit files under docs/ — the Starlight site picks up changes automatically.

See the architecture explainer for how installer + workflow + launcher fit together at runtime.

Run the full quality chain locally before opening a PR:

Terminal window
npm run quality

The chain (defined in package.json) runs Prettier format check, ESLint, markdownlint, the docs build (link check + Astro build), the install + integration tests, file-reference validation, skills validation, the inject-reference-tables test, KB license validation, and the orphan-reference test. The gate must exit 0 before you open a PR.

Push your feature branch to your fork, then open a pull request against main of xgent-ai/gomad. Reviewers will pull your branch, re-run npm run quality, and leave feedback on the diff.

PR title convention: <type>(<scope>): <summary> — for example, feat(skills): add gm-domain-skill. The PR body should reference any related issue or roadmap entry so reviewers can connect the change to its motivating context.

  • PR review feedback, typically within a few days.
  • Once merged, your change ships in the next @xgent-ai/gomad npm release per the milestone schedule.
  • Attribution in CONTRIBUTORS.md if your change is non-trivial.

For the runtime model — how the installer, skills, and launcher slash commands fit together — read the architecture explainer. For catalog examples, browse the agents reference and the skills reference to see how existing personas and skills are structured.