What it does
GTM Agents is a Claude Code plugin marketplace for go-to-market work: 67 plugins covering sales, marketing, customer success, and revenue operations, each bundling subagents, slash commands, and skills as plain markdown files. Run /plugin marketplace add gtmagents/gtm-agents, install a plugin, and you get a lead researcher or a churn-prediction analyst as a Claude Code subagent.
Why I starred it
Prompt-pack repos are common. What made me star this one was the tooling wrapped around the prompts — a marketplace.json schema, a frontmatter validator, a smoke test, even a script that audits the Haiku/Sonnet model split across every agent. Someone treated 700+ markdown files like a package registry with CI gates instead of a folder of prompts. That's the part worth reading, not the prompts themselves.
How it works
The whole marketplace hangs off .claude-plugin/marketplace.json — one JSON array where each plugin entry lists relative paths to its commands/, agents/, and skills/ markdown files. scripts/validate_marketplace.py walks that manifest and checks every referenced file actually exists, which sounds trivial until you look at resolve_component_path():
# Legacy references that already include the plugins/ prefix (or traverse
# upward) should resolve relative to the repo root.
if (
normalized.startswith("./plugins/")
or normalized.startswith("plugins/")
or normalized.startswith("../")
):
return (ROOT / normalized.lstrip("./")).resolve()
# Standard case: treat "./foo/bar.md" as relative to the plugin root.
if normalized.startswith("./"):
return (plugin_root / normalized[2:]).resolve()
Two path conventions coexisting in one repo, resolved by sniffing the string prefix — a sign the manifest format shifted mid-project and nobody went back to normalize the older entries. The comment admits as much: "gradually normalize manifests without breaking older references."
The validator also enforces naming discipline that most prompt repos skip entirely. validate_agent_frontmatter() requires every agent's name: field to match its filename, and validate_skill_frontmatter() requires a skill's name: to match its containing directory — so plugins/sales-prospecting/skills/cold-outreach/SKILL.md must declare name: cold-outreach or the build fails. It also pins agent models to an allowlist:
ALLOWED_AGENT_MODELS = {"haiku", "sonnet"}
That line matters more than it looks. CLAUDE.md describes the agent roster as "Opus (28): Deep analysis for research and executive-level work" alongside 95 Haiku and 80 Sonnet agents. I grepped every model: field across all 204 agent files in plugins/*/agents/*.md: 122 are haiku, 82 are sonnet, zero are opus. The Opus tier described in the project's own architecture doc doesn't exist in the codebase — and couldn't, since the validator would reject it.
The counts drift elsewhere too. The README's top section advertises "67 plugins with 203 AI agents, 243 business skills"; scroll to the Resources section of the same file and it says "52 specialized GTM skills" and "Agent Reference... All 92 agents." Actual counts on disk: 204 agent files, 244 SKILL.md files, 204 command files. Three different numbers for the same two categories, none matching what's actually there — classic symptom of docs generated once and never regenerated after content was added.
scripts/smoke_test_plugins.py is the second CI check, and it's intentionally shallow — it confirms each referenced file is non-empty, starts with --- frontmatter, and contains a # heading somewhere. It doesn't parse the prompt content or check if an agent's instructions are coherent, just that the file isn't a stub:
def read_markdown(path: Path) -> Tuple[bool, str]:
if not path.exists():
return False, "missing file"
text = path.read_text(encoding="utf-8").strip()
if not text:
return False, "file is empty"
if not text.startswith("---"):
return False, "missing YAML frontmatter"
if "#" not in text:
return False, "missing markdown headings"
return True, "ok"
.github/workflows/quality-checks.yml runs exactly these two scripts on every push and PR. .husky/pre-commit adds a third step — a dry-run of scaffold_asset.py against a throwaway file, presumably to catch template drift. But scripts/ has eight more validators that aren't wired into either: check_model_mix.py (the Haiku/Sonnet ratio auditor, targeting 60% Haiku ±5% — current split is 59.8%, so it'd pass if anyone ran it), check_tool_count.py (asserts the README's promised command count against the manifest), check_doc_parity.py, check_cross_links.py, check_skill_structure.py, find_empty_plugins.py, find_invalid_items.py, and inventory_skills_agents.py. They exist, they're maintained enough to still run cleanly, and none of them gate a merge.
Using it
Installing a plugin is a Claude Code slash command, not a shell command:
/plugin marketplace add gtmagents/gtm-agents
/plugin install sales-prospecting
/sales-prospecting:generate-leads --criteria "Your ICP here"
Running the validator locally is fast — 751 tracked files, validate_marketplace.py finishes in under half a second:
$ time python3 scripts/validate_marketplace.py
marketplace.json validation passed
real 0m0.493s
A single skill, plugins/sales-prospecting/skills/cold-outreach/SKILL.md, shows the intended progressive-disclosure pattern: short frontmatter description, a five-part framework (Core Principles, SPARK Flow, Channel Mix, Cadence Design, Experimentation), and a closing note — "Progressive disclosure: load full templates/examples only when actively generating outreach copy." — that's a real Anthropic Agent Skills convention, not decoration.
Rough edges
There's no automated test for whether an agent's instructions actually produce good output — everything here is markdown prompts, and the "tests" in the repo are GTM content about testing (A/B test skills, test-engineer.md), not test code for the agents themselves. The QUICK_START guide references docs/audit-log.md and points to docs/architecture.md, docs/gtm-best-practices.md, and docs/integrations.md for deeper reading — none of those four files exist in the repo. The whole thing has one real commit history worth noting: a December 23 migration that "upgraded all 263 skills" to the Agent Skills standard, followed by sparse activity until an April 3 PR tweaking a single skill's description. That's the shape of a project that had one big push and has mostly idled since.
Bottom line
If you want a Claude Code plugin marketplace with sales and marketing prompts pre-written, this saves you the scaffolding. If you're evaluating it as production tooling, read scripts/validate_marketplace.py before you read the agent prompts — it's the most rigorous file in the repo, and it quietly proves the README's own numbers are wrong.
