plugins/teamcraft-glgd/skills/plan-and-implement-issue/SKILL.md
Load all project context for a GitLab 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-glgd: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.Call mcp__google-drive__list_accounts before any other Drive operation:
account_email explicitly on every Drive tool call this session.account_email on every Drive tool call.If any Drive call returns a permission error, surface it: the active account may not have access to that file or folder. Offer to try another account if one is available.
Before loading any context, check whether work already exists for this issue:
*[IID]-* across all type prefixes (feature/, bug/, chore/)..teamcraft/plans/[IID].md.mcp__gitlab__list_merge_requests.If existing work is found, present what was found and ask:
"It looks like there's existing work for this issue:"
- [Branch: feature/42-webhook-verification]
- [Plan file: .teamcraft/plans/42.md]
- [Draft MR: !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/[IID].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 project ID and Drive URLs. Read CLAUDE.md. Read all .claude/rules/ files. If .teamcraft/project.md does not exist, check git remote context to identify the GitLab project. 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 Google Drive — offer to search by project name or accept a direct 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 GitLab using the IID from $ARGUMENTS. If $ARGUMENTS is empty, ask for the IID before proceeding. Read the full issue — title, description, acceptance criteria, labels, milestone, 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.
Drive artifacts (if URLs exist in the manifest):
Do not fetch automatically. After loading local context, check whether tech decisions and conventions URLs exist in .teamcraft/project.md. If they do, note them — they will be offered to the developer in Phase 3.
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 Google Drive, local files, or anywhere accessible." If yes, load them into context before presenting the summary. 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/IID-slug, bug/IID-slug, chore/IID-slug.
Hard constraints regardless of what is found:
Present everything to the developer as a structured summary:
feature/IID-slug, bug/IID-slug, chore/IID-slug) if nothing foundIf Drive URLs exist but weren't fetched, ask once:
"I found [tech decisions / conventions] in Drive. The local context looks sufficient — but do you want me to load the Drive document(s) before we plan?"
Wait for the answer and act on it before continuing.
After presenting the context summary, present this question exactly. Do not ask a separate "does this look complete?" question first — this gate IS the confirmation question:
"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 numbered gate again. Never enter plan mode without an explicit "1".
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/[IID].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 (project ID, git remote namespace, Drive URLs if known), CLAUDE.md (starting with @.teamcraft/project.md, containing only what Claude Code cannot discover from the environment), and .gitlab-ci.yml (baseline 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 [IID] to execute pre-MR reviews (code health, security, deviation) and mark the merge request ready for review. This tells the developer where the thread picks up after implementation, so they don't lose the workflow.
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
development
Run pre-PR reviews (code health, security, acceptance criteria), address findings, and submit the PR for review. Ends when the PR is ready and CI has passed. Use when implementation is done and ready for review, or when the user says "I'm done coding", "validate this", "ready for review", "submit this for review", "run the pre-PR reviews", or "prepare this for review".