plugins/teamcraft-jcg/skills/plan-and-implement-issue/SKILL.md
Load all project context for a Jira issue — conventions, tech decisions, tech stack, defaults — confirm completeness with the developer, then enter Claude Code's native plan mode which plans and implements the solution. Detects existing work (branch, plan file) and offers to resume. Use when planning a ticket, saying "plan this ticket", "how should we build this", "implement this issue", or thinking through the approach. Run this after fetch-issue.
npx skillsauth add codingthefuturewithai/claude-code-primitives teamcraft-jcg:plan-and-implement-issueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Load everything Claude Code needs to plan this issue well, confirm it with the developer, then enter plan mode with all of it live in context. The developer drives when plan mode starts — never before they explicitly say so.
EnterPlanMode is the developer selecting the numbered option below. Not a yes answer to a general question. Not an ambiguous response. A specific numbered choice.complete-issue. This constraint must be carried into plan mode as an explicit instruction to Claude.Before loading any context, check whether work already exists for this issue:
*[ISSUE-KEY]* across all type prefixes (feature/, bug/, chore/)..teamcraft/plans/[ISSUE-KEY].md.gh pr list --head [branch-name].If existing work is found, present what was found and ask:
"It looks like there's existing work for this issue:"
- [Branch: feature/PROJ-42-webhook-verification]
- [Plan file: .teamcraft/plans/PROJ-42.md]
- [Draft PR: #12 — Draft: Add webhook verification]
"What would you like to do?"
- Resume — pick up where this left off
- Start fresh — discard the existing plan and re-plan from scratch
- Let me review first — show me the existing plan before I decide
If the developer chooses 1 (Resume): Read the existing plan file, checkout the existing branch, and enter plan mode with the plan context loaded. Carry the instruction: "An implementation plan already exists at .teamcraft/plans/[ISSUE-KEY].md. Resume implementation from where it left off — do not re-plan unless the developer asks."
If the developer chooses 2 (Start fresh): Continue to Phase 1 as normal. The new plan will overwrite the existing plan file.
If the developer chooses 3 (Review): Show the plan file contents, then re-present the choice between Resume and Start fresh.
If no existing work is found, proceed directly to Phase 1.
Work in parallel where possible. Load everything before presenting anything.
Project manifest and conventions (local first):
Read .teamcraft/project.md for the Jira project key, Jira project ID, GitHub repo, and Confluence page IDs. Read CLAUDE.md. Read all .claude/rules/ files. If .teamcraft/project.md does not exist, check git remote context to identify the GitHub repo, and ask the developer for the Jira project key. If neither .teamcraft/project.md nor CLAUDE.md exists, stop before loading anything else and tell the developer: no local project context was found. Ask whether they have tech decisions or conventions documents in Confluence — offer to search by project name or accept a direct page ID or URL. Load whatever they provide before continuing. This is not optional — planning without knowing the team's tech decisions and conventions produces the wrong implementation.
The issue:
Fetch the issue from Jira using mcp__sooperset-mcp-atlassian__jira_get_issue with the issue key from $ARGUMENTS. If $ARGUMENTS is empty, ask for the issue key before proceeding. Read the full issue — title, description, acceptance criteria, status, labels, sprint, comments.
Tech stack:
Detect from the codebase — package.json, go.mod, Cargo.toml, pyproject.toml, requirements.txt, pom.xml, build.gradle. Read whichever are present.
Context7 research — mandatory:
Identify the libraries and frameworks this issue will touch based on the tech stack and issue requirements. Use mcp__context7__resolve-library-id and mcp__context7__query-docs to pull current API documentation for each one. This is not optional and is not left to plan mode to decide. Do it now, as part of context loading, so the results are live when the developer reviews the context summary.
Confluence artifacts (if page IDs exist in the manifest):
If tech decisions or conventions page IDs exist in .teamcraft/project.md, load them now — do not defer to a later phase. Use mcp__sooperset-mcp-atlassian__confluence_get_page directly with the page ID. These documents contain decisions and conventions that directly affect how the implementation should be planned. Loading them now means plan mode starts with complete context.
If .teamcraft/project.md does not contain page IDs but the developer mentioned Confluence docs, or the issue references them, use mcp__sooperset-mcp-atlassian__confluence_search to locate the pages — search results include the page ID, which you then pass to mcp__sooperset-mcp-atlassian__confluence_get_page to retrieve the full content.
UI design artifacts (optional): Ask the developer once: "Do you have any visual references for this work — mockups, wireframes, style guides, or screenshots? These can be in Confluence, local files, or anywhere accessible." If yes, load them into context before moving on. If no, move on — this is not a blocker.
For each critical area, check what was found locally. Where nothing was found, apply the default and flag it as a default — not silently.
Testing approach — TDD is the rule:
The approach is TDD: write the failing test first, implement until it passes, refactor. Red-green-refactor. This applies unless .claude/rules/, the conventions doc, or the developer explicitly states otherwise for this issue. If something in the loaded context contradicts TDD, surface it to the developer. Do not silently deviate.
Code coverage — default on:
Set up code coverage tooling appropriate to the detected tech stack during implementation. Choose the standard coverage tool for the stack (e.g., Jest's built-in coverage for Node/TypeScript, pytest-cov for Python, go test -cover for Go, JaCoCo for Java/Gradle, tarpaulin for Rust). The recommended starting threshold is 80% line coverage — this is a recommendation, not a gate. If .claude/rules/, the conventions doc, or the tech decisions doc specifies a different threshold or a different coverage tool, use that instead. If the developer says no coverage, respect that.
Coverage setup means: install/configure the coverage tool, add a coverage script or command to the project's test configuration, and run coverage as part of the test suite. The plan should include this as part of the testing strategy — not as an afterthought.
Branch naming:
Check .claude/rules/ and the conventions doc. If no convention is found, the default is: feature/ISSUE-KEY-slug, bug/ISSUE-KEY-slug, chore/ISSUE-KEY-slug.
Hard constraints regardless of what is found:
All context gathering is complete. Do not ask any more questions about loading documents — that was Phase 1's job. Present what was loaded as a structured summary:
feature/ISSUE-KEY-slug, bug/ISSUE-KEY-slug, chore/ISSUE-KEY-slug) if nothing foundThen present the gate. This is the only question in Phase 3 — no other questions before or after it:
"Does this context look right? What would you like to do?"
- Enter plan mode — I'm ready to plan implementation
- I need to add or change something first
- Not yet — let's discuss the issue more
"1" is the only trigger for EnterPlanMode. Every other response — "yes", "go ahead", "looks good", "let's do it", any affirmative that is not the number 1 — must be treated as conversation. Answer it, then present this gate again. Never enter plan mode without an explicit "1".
If the developer selects "2", handle whatever they need (load additional context, change a default, answer a question), then re-present the full summary and gate.
Call EnterPlanMode. The context loaded in Phases 1–3 is live in the conversation and carries into plan mode.
Plan persistence — carry this instruction into plan mode:
"Let Claude Code's plan mode work naturally — explore, design, and present the plan through the native plan mode UI. Do not write a separate plan file before the plan is approved. After the developer approves the plan and implementation begins, persist a copy of the approved plan to .teamcraft/plans/[ISSUE-KEY].md (create the .teamcraft/plans/ directory if it doesn't exist) as the first implementation step. This saved copy is consumed by the deviation reviewer when the issue is completed — without it, the deviation review cannot compare the plan against the implementation."
Greenfield scaffolding sequence (apply when repo is empty and no project manifest exists): If the implementation requires a scaffolding tool (composer, Laravel installer, framework init, etc.), the plan must follow this exact sequence:
.teamcraft/project.md (GitHub repo owner/repo, Jira project key, Jira project ID, Jira site URL, Confluence page IDs if known), CLAUDE.md (starting with @.teamcraft/project.md, containing only what Claude Code cannot discover from the environment), and .github/workflows/ci.yml (baseline GitHub Actions pipeline for the detected stack)This sequence means init-project is not needed separately for greenfield projects that go through this plan. The plan IS the project initialization.
The plan must include a "What to do next" section at the end — after implementation is complete, the developer should run complete-issue [ISSUE-KEY] to execute pre-PR reviews (code health, security, deviation) and mark the pull request ready for review. This tells the developer where the thread picks up after implementation, so they don't lose the workflow.
development
Plan a time-boxed iteration (sprint, cycle, milestone) from the backlog and the PRD/roadmap behind it — gather the goal, the window, and the team's real capacity, then select, sequence, and size a committed set of work items to fit. Writes an `iteration` label onto each chosen work item. Use when the user says 'plan a sprint', 'plan the next iteration', 'plan our cycle', 'sprint planning', 'iteration planning', 'plan the next two weeks', 'set up a milestone', 'what should we take on this sprint', 'plan from the PRD', or otherwise wants to commit a scoped, time-boxed batch of work rather than create issues one at a time. This is the planning layer between requirements and the build loop — distinct from create-issue (one item) and pick-next-issue (pick one to build now).
tools
Capture feedback about Teamcraft itself and turn it into a well-structured GitHub issue on the plugin's repo. Vets whether the problem is really a Teamcraft skill defect (vs. misuse, the harness, or the user's own project) by root-causing against the actual skill source, then helps the developer decide whether to file and publishes via the GitHub CLI. Use when the user says 'improve teamcraft', 'a teamcraft skill did the wrong thing', 'file feedback on teamcraft', 'report a teamcraft bug', 'I have an idea to make teamcraft better', or when a Teamcraft skill clearly misbehaved and the user wants that captured upstream.
tools
Learn the Teamcraft plugin itself — how its workflow, skills, and artifacts fit together. A guided overview for a human getting started, or a system map for Claude orienting itself to how Teamcraft works before working in a Teamcraft repo. Teaching only; needs no project or environment access. Use when someone wants to understand Teamcraft (the tool, not their specific project), asks "how does Teamcraft work", "explain the workflow", "which skill do I use for X", or when Claude needs the big picture of how the skills hook together.
tools
--- name: teamcraft:work-board description: Launch (or re-launch) the user's live, multi-project work board. The dashboard is a single HTML file copied to a stable user-side location at ~/.claude/teamcraft-board.html and opened in the user's default browser. It has two views via a header toggle — a drag-and-drop Kanban Board and a live Status tab (analytics: work by status, throughput, cycle time, aging, blocked chains, recomputed on every poll). Each project is added via a header dropdown; the