kramme-cc-workflow/skills/kramme:linear:issue-implement/SKILL.md
Requires Linear MCP. Start implementing a Linear issue with branch setup, planning, and guided or --auto workflows. For SIW-tracked work, use kramme:siw:issue-implement instead.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:linear:issue-implementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Start implementing a Linear issue through an extensive planning phase before any code changes.
IMPORTANT: Linear issues are typically written for product teams and may be light on technical implementation details. This command emphasizes thorough planning and codebase exploration to translate product requirements into a concrete technical approach before starting implementation.
Prerequisite: Requires the Linear MCP server. For work tracked through the Structured Implementation Workflow, use kramme:siw:issue-implement instead — this skill implements a single Linear issue directly.
Parse $ARGUMENTS before Step 1. If --auto is present, set AUTO_MODE=true and remove the flag before extracting the Linear issue id. --auto skips plan and approach confirmation when the technical path is clear, then chooses Autonomous Implementation. It does not bypass dirty-worktree handling, branch verification, missing Linear metadata, or genuinely blocking product/technical ambiguities.
/kramme:linear:issue-implement ABC-123
|
v
[Validate & Fetch Issue] -> Not found? -> Show error, abort
|
v
[Branch Setup] -> IMMEDIATELY create/switch to Linear's branchName
|
v
[Reference Mapping] -> Fetch linked Linear issues/docs and record inaccessible assets
|
v
[Parse Requirements] -> Extract acceptance criteria from description
|
v
=============== PLANNING PHASE (extensive) ===============
|
v
[Codebase Exploration] -> ALWAYS search for patterns/implementations
|
v
[Technical Analysis] -> Map product requirements to technical approach
|
v
[Upfront Questions] -> Clarify ambiguities before proceeding
|
v
[Create Technical Plan] -> Document approach, files, patterns to follow
|
v
=================== EXECUTION PHASE ===================
|
v
[Approach Selection] -> AskUserQuestion with 3 options
|
v
[Execute Workflow] -> Guided / Context-only / Autonomous
$ARGUMENTS contains the issue ID provided by the user.
Validation:
{TEAM}-{number} where TEAM is any alphanumeric prefixwan-123 -> WAN-123, abc-456 -> ABC-456If no argument provided or invalid format:
Error: Please provide a Linear issue ID.
Usage: /kramme:linear:issue-implement <ISSUE-ID>
Example: /kramme:linear:issue-implement ABC-123
The issue ID should be in the format TEAM-NUMBER (e.g., WAN-521, HEA-456).
Action: Abort.
Use the Linear MCP tool to fetch complete issue details. {ISSUE_ID} is the human-readable identifier from $ARGUMENTS (e.g. WAN-123), which get_issue accepts directly:
Claude Code: mcp__linear__get_issue with id: {ISSUE_ID}, includeRelations: true
Codex: get_issue with id: {ISSUE_ID}, includeRelations: true
If Linear MCP operations are unavailable, the Linear MCP server is not connected. Stop and tell the user to connect it — do not continue without issue data.
Capture from issue response:
id - Linear issue UUID. Use this (referred to below as {issueUuid}) for any later call that needs the UUID rather than the identifier.identifier - Human-readable ID (e.g., WAN-123)title - Issue titledescription - Full issue description (markdown)state - Current state (Backlog, In Progress, etc.)labels - Associated labelsbranchName - CRITICAL: Linear's recommended branch nameurl - Link to issue in Linearproject - Associated projectpriority - Issue priorityIf issue not found:
Error: Linear issue {ISSUE_ID} not found.
Please verify:
- The issue ID is correct (format: TEAM-123)
- You have access to the issue's team
- The issue exists in Linear
Try again with /kramme:linear:issue-implement <correct-issue-id>
Action: Abort.
CRITICAL: This step MUST be completed before any other actions. Do NOT proceed to issue parsing, planning, or any other step until you are on the correct branch.
Read references/branch-setup.md and follow it completely: extract or generate branchName, handle dirty-worktree state, create or switch to the branch, verify git branch --show-current matches, and display the branch confirmation. Only after this confirmation may you proceed to Step 3.
Fetch comments for additional context, using the UUID captured in Step 1.2:
Claude Code: mcp__linear__list_comments with issueId: {issueUuid}
Codex: list_comments with issueId: {issueUuid}
Comments often contain:
Build a REFERENCE_MAP from the issue response, issue description, and comments before planning. Include:
For each referenced Linear issue, fetch accessible details with get_issue/mcp__linear__get_issue using includeRelations: true. For each referenced Linear document, fetch accessible details with get_document/mcp__linear__get_document when a stable ID or slug is available. Do not guess document IDs from vague titles.
For every reference, record: reference, type, source location, access result, and implementation relevance. If a referenced document or asset cannot be opened because of missing permissions, unavailable tools, unsupported file type, expired URL, or missing ID/slug, keep it in REFERENCE_MAP as inaccessible and tell the user in Step 3. Do not silently ignore inaccessible referenced context.
Analyze the issue description to extract:
Requirements:
Acceptance Criteria:
Technical Notes:
Referenced Context:
REFERENCE_MAPShow the user what was found:
Linear Issue: {identifier}
Title: {title}
Description:
---
{description - first 500 chars}
{if longer: "... [truncated, full description will be used]"}
---
State: {state}
Priority: {priority}
Labels: {labels}
Project: {project}
Recommended Branch: {branchName}
Comments: {count} comments found
{if comments exist: show key points from recent comments}
Referenced Context:
- Accessible: {related issues/docs/assets fetched and why they matter | "None found"}
- Inaccessible: {references the agent could not access and why | "None found"}
Requirements Identified:
- {requirement 1}
- {requirement 2}
- ...
Acceptance Criteria:
- {criterion 1}
- {criterion 2}
- ...
Linear issues are typically product-focused and lack technical implementation details. Perform extensive codebase exploration to understand how to implement the feature, regardless of how the issue is written.
Linear issues often describe:
They typically do NOT describe:
Your job is to bridge this gap through thorough exploration.
Perform these steps even if the issue seems straightforward:
Use the reference map as research input:
Search for similar features/patterns:
Dispatch a codebase-exploration subagent (or run the search directly if subagents are unavailable):
Ask it to find existing implementations related to {feature description from issue plus accessible reference context} and identify the relevant files, patterns, and conventions used in this codebase. In Claude Code this is the Explore agent via the Task tool.
Identify key files and patterns:
After exploration, present findings to the user:
Read the Codebase Exploration Results template from references/display-templates.md.
Tend towards asking questions rather than plunging into implementation. Fully understand requirements before writing any code.
Review the issue and exploration results to identify:
Use AskUserQuestion for each unclear aspect before proceeding. In AUTO_MODE, first choose conservative defaults when the codebase and issue text clearly support them: prefer the smallest in-scope implementation, prefer the existing local pattern with the strongest precedent, and prefer the narrowest test set that covers the acceptance criteria. If an ambiguity would change product scope, data model, security posture, public API, or user-visible behavior, ask even in AUTO_MODE.
Read example question patterns from references/question-examples.md when composing prompts.
After gathering answers, create a comprehensive technical plan that translates the product requirements into a concrete implementation approach:
Read the technical plan template from assets/technical-plan.md and populate it based on the gathered context and user answers.
Present this plan to the user and get confirmation before proceeding to implementation approach selection. If AUTO_MODE=true, present the plan, add AUTO: proceeding with autonomous implementation, and continue without the confirmation prompt only when no blocking ambiguity remains.
Use AskUserQuestion:
header: "Implementation Approach"
question: "How would you like to proceed with implementing this issue?"
options:
- label: "Guided Implementation"
description: "I'll create a detailed plan with tasks, then implement step-by-step with verification at each stage. Best for complex features."
- label: "Context Setup Only"
description: "I'll set up the branch and create a todo list, but you'll guide the implementation. Best when you know the approach."
- label: "Autonomous Implementation"
description: "I'll analyze the codebase, plan, implement, commit as I go, and verify. Check in when done. Best for straightforward tasks."
If AUTO_MODE=true, skip this question and choose Autonomous Implementation.
Read the implementation workflow for the selected approach from references/implementation-workflows.md. Follow the Guided, Context Setup, or Autonomous workflow based on the user's choice from Step 6.
After setup is complete:
Read the Success Output template from references/display-templates.md.
Never add AI/Claude attribution to commits or code.
When creating commits, PREFER including issue reference:
WAN-123: Add platform picker guardFixes WAN-123ALWAYS run verification before claiming completion. Use kramme:verify:run skill.
ALWAYS search for and follow existing patterns in the codebase before implementing.
Read the error handling guidance from references/error-handling.md.
tools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.