work-story
Work a user story end to end — fetch the ticket, plan (with approval), implement, verify the applicable gates, self-review, open…
Fetch a work item (summary, status, description, acceptance criteria, comments) from the team's issue tracker and display a clean summary. Supports Jira, Linear, GitHub Issues, and Azure DevOps via adapters. Use whenever a prompt contains an issue reference (e.g. PROJ-1234,
Claude Code
$ npx -y skills add theam/claude-dev-kit --skill issue-fetch --agent claude-code
Codex
$ npx skills add theam/claude-dev-kit --skill issue-fetch -a codex -y
Cursor
$ npx skills add theam/claude-dev-kit --skill issue-fetch -a cursor -y
Gemini CLI
$ npx skills add theam/claude-dev-kit --skill issue-fetch -a gemini-cli -y
GitHub Copilot
$ npx skills add theam/claude-dev-kit --skill issue-fetch -a github-copilot -y
OpenCode
$ npx skills add theam/claude-dev-kit --skill issue-fetch -a opencode -y
Windsurf
$ npx skills add theam/claude-dev-kit --skill issue-fetch -a windsurf -y
name: issue-fetch description: Fetch a work item (summary, status, description, acceptance criteria, comments) from the team's issue tracker and display a clean summary. Supports Jira, Linear, GitHub Issues, and Azure DevOps via adapters. Use whenever a prompt contains an issue reference (e.g. PROJ-1234, ENG-42, #123) or the user asks to work on a user story.
Fetch full context for a work item before any planning or implementation begins. The tracker is configured once (see below); this skill speaks to whichever one the team uses.
Any prompt containing an issue reference, or an explicit request to fetch/work on a story. Reference shapes differ by tracker:
| Tracker | Key shape | Example | |---|---|---| | Jira | `[A-Z][A-Z0-9]+-\d+` | `PROJ-1234` | | Linear | `[A-Z]+-\d+` | `ENG-42` | | GitHub Issues | `#\d+` or `owner/repo#\d+` | `#123` | | Azure DevOps | `#?\d+` (work item id) | `#4567` |
Read `.claude/dev-kit.json` at the consuming repo root. The `tracker` block names the active adapter and its settings:
{ "tracker": { "type": "jira" | "linear" | "github" | "azure", ... } }**If the file does not exist (or has no `tracker` block), run the `dev-kit-setup` skill first** — it detects the tracker, gathers what it needs, persists the file, and returns here. Do not ask the user for values that setup can discover.
If the requested key's project/prefix does not match the configured one, confirm with the user before fetching (it may be a cross-project item — allowed, just not silently).
Use the adapter matching `tracker.type`. In every case request at minimum: **summary/title, type, status, priority, assignee, reporter, labels, description, acceptance criteria, and all comments** (plus story points and sprint/cycle when the tracker has them).
Config: `site`, `cloudId`, `projectKey`, `fields` (custom field IDs for acceptance criteria / sprint / story points). Optional `authMode`: `"mcp"` (default) or `"rest"`.
**`authMode: "mcp"` (default).** Use the **Atlassian MCP** tools against the configured site to get the issue and its comments, reading acceptance criteria via the configured field IDs.
**`authMode: "rest"` — for clients without the Atlassian MCP.** Call the Jira REST API directly with credentials from the **environment** (never from `.claude/dev-kit.json`, which stays secret-free):
**Automatic fallback (MCP unavailable or blocked).** When `authMode` is unset or `"mcp"`, first check the Atlassian MCP is actually usable. If it is **not** — not installed, not authorized, or **blocked by policy** (e.g. an enterprise that disables third-party MCPs) — and the `JIRA_*` env vars are present, **use REST automatically** and say so. Don't repeatedly retry a blocked MCP: when the block looks permanent (a policy/enterprise block rather than a missing one-time OAuth), **offer to persist `authMode: "rest"`** in `.claude/dev-kit.json` so every later run goes straight to REST. If neither the MCP nor the env credentials are available, stop and offer both paths (authorize the MCP, or set `authMode: "rest"` + the env vars).
Config: `teamKey` (and optionally `workspace`). Use the **Linear MCP** tools to fetch the issue by identifier, its description, labels, state, assignee, and comments. Acceptance criteria usually live in the description body or a checklist — extract them from there.
Config: `repo` (`owner/name`); defaults to the current repo's `origin` when omitted. Fetch with the GitHub CLI (no MCP needed):
gh issue view <number> --repo <owner/name> --json number,title,state,labels,assignees,body,comments
Acceptance criteria are parsed from the issue body (task lists / a "Acceptance criteria" section).
Config: `org`, `project`. Fetch via the Azure DevOps MCP if configured, otherwise the REST API / `az boards work-item show --id <id>`. Map fields: `System.Title`, `System.State`, `System.Description`, `Microsoft.VSTS.Common.AcceptanceCriteria`, and the work-item comments.
If the adapter's backend is not authenticated (MCP connector not authorized, `gh`/`az` not logged in), tell the user exactly how to authenticate — MCP connectors via `/mcp` or claude.ai connector settings; CLIs via `gh auth login` / `az login` — and stop. **Never invent ticket content.**
Display a concise summary before doing anything else:
===== KEY ===== Summary : ... Type : ... Status : ... Priority : ... Assignee : ... Points : ... (omit if the tracker has no such field) Sprint : ... (omit if the tracker has no such field) Labels : ... --- Description --- ... --- Acceptance Criteria --- ... --- Comments (N) --- [date] author: ...
1. If the description or comments contain a **Figma URL** (`figma.com/(design|file)/...`), invoke the `figma-fetch` skill next. 2. Present an **implementation plan** and **wait for explicit user approval** before writing any code (see the issue-to-PR workflow). Never skip this g
An open-source Claude Code plugin by The Agile Monkeys: a stack-agnostic issue-to-PR workflow with enforced quality gates. Also runs on OpenAI Codex, Cursor, and other Agent Plugins 1.0.0 clients.
Work a user story end to end — fetch the ticket, plan (with approval), implement, verify the applicable gates, self-review, open…
Run the repo's unit tests with coverage and verify that every file touched in the current change keeps line, branch, and function…
Create a branch, commit the work, and open a pull request for a completed user story, after all quality gates pass. Use when the…
Delegate an approved backlog to the configured async provider so several stories are worked in parallel — one branch and PR per…
First-use bootstrap for the dev kit. Detects the team's issue tracker, discovers what it can via MCP/CLI, asks only what cannot…
Create or update end-to-end tests for a user-facing flow that changed, using whatever e2e framework the repo already uses. Use…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.