An open-source Claude Code plugin by The Agile Monkeys: a stack-agnostic issue-to-PR workflow with enforced quality gates.
FAQ
fullstack-dev-kit is a Claude Code plugin with 9 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes coverage-check, create-pr, dev-kit-setup. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add theam/claude-dev-kit> /plugin install fullstack-dev-kit@claude-dev-kit
Repo: theam/claude-dev-kit
An open-source Claude Code plugin by The Agile Monkeys: a stack-agnostic issue-to-PR workflow with enforced quality gates.
Give the coding-agent a user story ID from your tracker and it orchestrates the whole flow:
/work-story PROJ-1234
β
ββ issue-fetch β ticket summary + acceptance criteria + comments
ββ figma-fetch β design context (if the ticket links Figma)
ββ PLAN + user approval (mandatory gate)
ββ implement β follows the consuming repo's conventions & subagents
ββ coverage-check β touched files meet the project's bar (default β₯ 95%)
ββ e2e-generate β e2e tests (repo's framework) incl. edge cases
ββ security-reviewer β authorization / secrets / input / exposure pass (gate)
ββ pr-review β pr-fixer β self-review, then fix the blocking findings
ββ create-pr β branch + commit + PR with verification evidence
ββ issue-update β comment PR link on the ticket + move it to review
Install in one command:
npm create @theagilemonkeys/dev-kit
Interactive setup β tracker, Figma, telemetry consent, org β then it installs the plugin for you. Full options in Installing in Claude Code.
The kit carries no assumptions about language, framework, or test runner. It reads everything stack-specific β build/test/lint/coverage commands, architecture conventions, and any implementer subagents β from the consuming repo's CLAUDE.md and .claude/, and detects conventions from the project when they aren't declared.
It ships baseline "iteration zero" profiles for common stacks in instructions/stacks/ β node, angular, react, vue, python, dotnet, java, go, ruby, php, rust β giving each one usable coverage/e2e/lint commands out of the box. Your CLAUDE.md always overrides them, and adding a stack is one markdown file (see CONTRIBUTING). These profiles are early and community-refined β treat an unlisted or unverified stack as "should work, help us confirm" rather than guaranteed.
It integrates with your tools through adapters, not hardcoded dependencies:
| Concern | Supported | How it's chosen |
|---|---|---|
| Issue tracker | Jira, Linear, GitHub Issues, Azure DevOps | Detected/asked once by dev-kit-setup, stored in .claude/dev-kit.json |
| PR host | GitHub (gh), Bitbucket (REST), GitLab (glab) | Detected from the origin remote, stored as prHost |
| Design (optional) | Figma | Activated when a ticket links a Figma URL |
The kit is a Claude Code plugin. Install it once per developer; it then loads in every session across every surface β the CLI, the desktop app, the VS Code / JetBrains extensions, and the web app (claude.ai/code).
Prerequisites: Claude Code (claude --version) and the GitHub CLI authenticated (gh auth status).
npm create @theagilemonkeys/dev-kit
The wizard picks your issue tracker and whether you use Figma, shows exactly what anonymous telemetry would be collected and lets you opt in or out, sets your organisation label, writes .claude/dev-kit.json, and runs the plugin install for you. Then authorize your connectors (below) and you're done.
From a terminal β plugin management is CLI-only; the VS Code / JetBrains chat panels reject /plugin commands:
claude plugin marketplace add theam/claude-dev-kit
claude plugin install fullstack-dev-kit@claude-dev-kit
Installation is user-level and permanent β every future session (CLI or IDE extension) loads the kit automatically, no reinstall per session or project. Verify with claude plugin list, or type / in a session and search fullstack-dev-kit: (you should see work-story, launch-story, and the skills; agents show under /agents).
The plugin declares the tracker/design MCP servers (atlassian, linear, figma) β you don't add them by hand, you just authorize the ones you use. Three ways, pick whichever fits:
/mcp, pick the server (e.g. atlassian), and complete the OAuth in the browser.claude mcp login atlassian (and claude mcp list to check status β plugin-declared servers show βΈ pending approval until first approved inside a session).claude mcp add-from-claude-desktop (macOS/WSL).| Tool | Connector | Authorize with |
|---|---|---|
| Jira | atlassian MCP | /mcp Β· claude mcp login atlassian |
| Linear | linear MCP | /mcp Β· claude mcp login linear |
| GitHub Issues | β (uses gh) | gh auth login |
| Azure DevOps | β (uses az) | az login |
| Figma (optional) | figma MCP | /mcp Β· claude mcp login figma |
Authorization is per developer, one-time β it persists across sessions. The kit then discovers the rest (Jira site, project key, field IDs) automatically on first use via dev-kit-setup.
When authorizing an MCP via OAuth, complete the browser flow immediately β the link is tied to a live local callback and expires with it. Don't reuse old tabs or restart the session mid-flow.
/plugin β Marketplaces tab β claude-dev-kit β Enable auto-update. New versions then arrive at session startup. To pull manually instead:
claude plugin marketplace update claude-dev-kit
Troubleshooting: if
/work-storyis unknown, the session started before the install β restart it (VS Code: Developer: Reload Window) and remember the namespace/fullstack-dev-kit:work-story. More cases in Troubleshooting below.
Instead of each developer running the two install commands, a consuming repo can commit the marketplace + plugin to its own .claude/settings.json. Teammates then get the kit when they open and trust the repo β in the CLI and the Desktop app's Code tab alike:
{
"extraKnownMarketplaces": {
"claude-dev-kit": {
"source": { "source": "github", "repo": "theam/claude-dev-kit" }
}
},
"enabledPlugins": {
"fullstack-dev-kit@claude-dev-kit": true
}
}
Pin to a release by adding "ref": "v0.5.0" (or a "sha") to source; omit it to always track the default branch. Requires the marketplace repo to be public (or teammates to have git access to it).
Heads-up: auto-load on folder-trust is the intended behavior, but a known Claude Code issue (#32606) means some setups still need a one-time manual
claude plugin install fullstack-dev-kit@claude-dev-kit. Test with one teammate before rolling out to everyone.
There is nothing to configure by hand. On first use in a repo, just ask for a ticket:
fetch PROJ-1234
The kit runs dev-kit-setup: it detects your tracker, discovers what it can (site/project/team/fields), asks only genuine choices, and persists the result to .claude/dev-kit.json β no secrets, safe to commit, so one setup serves the whole team. If that works, everything works.
| You want to⦠| Type |
|---|---|
| Work a story end to end (current window) | /fullstack-dev-kit:work-story PROJ-1234 |
| Prepare a story worktree + new VS Code window | /fullstack-dev-kit:launch-story PROJ-1234 |
| Unattended run (no plan gate β pipelines only) | append --auto-approve |
| Review a PR or your current diff | /fullstack-dev-kit:pr-review #42 |
| Fix the findings on an existing PR | /fullstack-dev-kit:fix-pr #42 |
| Anything else | plain language β e.g. "use the pr-reviewer agent on PR #42" |
Notes:
/fullstack-dev-kit: (type / and search). Agents never appear in that list β invoke them in plain language or let the orchestrator delegate to them (/agents shows them).work-story presents its implementation plan in the chat and waits for your explicit approval before writing any code.You don't need a tracker (or a ticket) to use the kit β the ticket integration is a convenience for auto-reading acceptance criteria and updating status, not a requirement. The fastest ways to try it in ~30 seconds, no tracker/MCP setup:
/fullstack-dev-kit:pr-review on your working diff (or pr-review #42 on a PR).--dry-run flag to the export command" β it plans (you approve), implements, runs the applicable gates, and opens the PR, skipping the fetch/update-ticket steps.coverage-check, e2e-generate, or the security-reviewer agent on the change you have in progress.Full /work-story <TICKET> flow is ticket-first (it fetches the story and moves it to review); everything else works ticketless. Teams with no tracker can set tracker: none in dev-kit-setup.
| Component | Type | Purpose |
|---|---|---|
coding-agent | agent | Orchestrator: story ID β PR β updated ticket, with plan-approval gate |
pr-reviewer | agent | High-signal diff review: correctness, contract drift, security, tests |
pr-fixer | agent | Resolves review/CI findings, re-verifies gates, pushes |
security-reviewer | agent | Focused security pass: auth, secrets, input, exposure (gate) |
coverage-guardian | agent | Finds files under 95% and writes the missing tests |
e2e-author | agent | E2e tests in the repo's framework, with realistic edge cases |
dev-kit-setup | skill | First-use bootstrap: detects the tracker, writes .claude/dev-kit.json |
issue-fetch | skill | Ticket + acceptance criteria + comments (Jira/Linear/GitHub/Azure) |
issue-update | skill | Comment PR + evidence on the ticket, transition to review |
figma-fetch | skill | Frame hierarchy + text content from a Figma URL |
coverage-check | skill | Runs the repo's coverage command, enforces the project's coverage bar (default 95%) when it has one |
e2e-generate | skill | Playbook for creating/updating e2e tests |
create-pr | skill | Branch, commit, and PR β only after all gates pass |
pr-review | skill | Review playbook: findings by dimension, verdict, AC check |
fix-pr | skill | Playbook: findings β fixes β re-verified gates β push |
instructions/ | rules | Always-on, language-agnostic: secure coding, testing standards |
/work-story | command | Entry point: /work-story PROJ-1234 |
Always apply (regardless of stack or test setup):
--auto-approve for pipelines).security-reviewer) with no blocking findings.Adaptive β enforce the project's own standard, detected each run (the kit never imposes tests or scaffolds a framework on a project that doesn't use one):
gates policy (auto (default) Β· required Β· off) in .claude/dev-kit.json."a11y" in .claude/dev-kit.json to auto (default) Β· required (make it a blocking gate) Β· off (never run) β edit it by hand, or just ask the kit to do it (e.g. "make accessibility a required gate") and it updates the file for you.Either way, a skipped gate is reported, never hidden.
Each consuming repo keeps its own .claude/ with project-specific rules: build/test/lint/coverage commands, architecture conventions, and stack subagents (e.g. backend-implementer / frontend-implementer). The kit reads the consuming repo's CLAUDE.md for those conventions and its own .claude/dev-kit.json (auto-generated on first use) for tracker specifics.
/work-story works in the current directory. To work several stories at once, use /launch-story PROJ-1234 per story: it creates a dedicated git worktree, opens a new VS Code window on it, and hands you the work-story command to paste there.
Caveat: stories whose e2e gates boot dev servers on fixed ports can collide if run at the exact same time β stagger them, or parameterize ports in the consuming repo.
Adding a tracker, PR host, or design tool is an adapter, not a rewrite β see CONTRIBUTING.md for the worked example.
The kit can share anonymous token counts so the maintainers can show aggregate impact. It is off by default; you opt in via the setup wizard (npm create @theagilemonkeys/dev-kit). Clients ship no API key and never call analytics directly β they POST to a relay that re-enforces a machine-readable contract and strips your IP before forwarding to PostHog. Events are anonymous (a random install_id); never prompts, code, file names, ticket contents, emails, or org-instance data β and only sessions where the kit actually ran. Kill switch: DEVKIT_TELEMETRY=0. Runs in the CLI, IDE extensions, and the Desktop app's Code tab (needs Node on PATH). Full details and the exact payload: TELEMETRY.md.
| Symptom | Cause / fix |
|---|---|
/plugin isn't available in this environment | You're in the VS Code chat panel β run plugin commands from a terminal with claude plugin β¦ |
Unknown command: /work-story | Session started before the install/update β restart it (VS Code: Developer: Reload Window); remember the namespace /fullstack-dev-kit:work-story |
OAuth callback lands on a dead localhost:<port> | The link expired (session restarted mid-flow) β run /mcp again and complete the fresh link immediately |
| Update pulled but behavior unchanged | claude plugin install fullstack-dev-kit@claude-dev-kit to force the new version, then restart the session |
Apache 2.0 Β© The Agile Monkeys. See NOTICE.
Headless/CI runs can't do MCP OAuth. If automated pipeline runs become a requirement, a REST + token fallback can be added to the tracker adapters.
.claude-plugin/
marketplace.json
plugin.json
.github/
CODEOWNERS
ISSUE_TEMPLATE/
bug_report.md
config.yml
feature_request.md
PULL_REQUEST_TEMPLATE.md
.gitignore
.mcp.json
agents/
coding-agent.md
coverage-guardian.md
e2e-author.md
pr-fixer.md
pr-reviewer.md
security-reviewer.md
CHANGELOG.md
CODE_OF_CONDUCT.md
commands/
launch-story.md
work-story.md
CONTRIBUTING.md
hooks/
hooks.json
instructions/
secure-coding.md
stacks/
angular.md
dotnet.md
go.md
java.md
node.md
php.md
python.md
react.md
README.md
ruby.md
rust.md
vue.md
testing-standards.md
LICENSE
NOTICE
packages/
create-dev-kit/
index.mjs
package.json
README.md
telemetry-relay/
api/
ingest.js
contract.v1.json
package.json
README.md
vercel.json
README.md
scripts/
telemetry.mjs
watch-pr-feedback.sh
SECURITY.md
skills/
coverage-check/
SKILL.md
create-pr/
SKILL.md
dev-kit-setup/
SKILL.md
e2e-generate/
SKILL.md
figma-fetch/
SKILL.md
fix-pr/
SKILL.md
issue-fetch/
SKILL.md
issue-update/
SKILL.md
pr-review/
SKILL.md
telemetry/
TELEMETRY.md
contract.v1.jsonΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic
/launch-story| command |
| Creates a story worktree and opens a new VS Code window on it |