kramme-cc-workflow/skills/kramme:linear:issue-implement/SKILL.md
Start implementing a Linear issue with branch setup, context gathering, and guided workflow
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.
/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
[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:
mcp__linear__get_issue with id: {ISSUE_ID}
If the mcp__linear__* tools 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 priorityFetch comments for additional context, using the UUID captured in Step 1.2:
mcp__linear__list_comments with issueId: {issueUuid}
Comments often contain:
If 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.
The mcp__linear__get_issue response includes a branchName field - this is Linear's recommended branch name.
Priority:
branchName from Linear if present and non-emptybranchName is empty/missing, generate one using pattern: {user-initials}/{ISSUE_ID}-{sanitized-title}If generating fallback:
git status --porcelain
git branch --show-current
If uncommitted changes exist:
Use AskUserQuestion:
header: "Uncommitted Changes"
question: "You have uncommitted changes. How should I handle them?"
options:
- label: "Stash changes"
description: "Save changes to stash, can be restored later"
- label: "Commit changes"
description: "Commit current changes before switching branches"
- label: "Discard changes"
description: "Warning: This will lose your uncommitted work"
- label: "Abort"
description: "Cancel and let me handle it manually"
If branch doesn't exist locally or remotely:
# Determine base branch
BASE=$(git symbolic-ref refs/remotes/origin/HEAD 2> /dev/null | sed 's|refs/remotes/origin/||') || BASE="main"
# Fetch latest
git fetch origin $BASE
# Create branch from latest base
git checkout -b "{branchName}" "origin/$BASE"
If branch exists locally:
git checkout "{branchName}"
If branch exists only on remote:
git checkout -b "{branchName}" "origin/{branchName}"
ALWAYS run this verification:
git branch --show-current
The output MUST match the target branchName. If not, something failed - report to user and abort.
Display confirmation:
✓ Branch: {branchName}
Source: {Linear's suggested name | Generated from issue}
Proceeding with issue analysis...
Only after this confirmation may you proceed to the next step.
Analyze the issue description to extract:
Requirements:
Acceptance Criteria:
Technical Notes:
Show 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}
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:
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} 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:
Codebase Exploration Results:
Relevant Files Found:
- {file 1} - {why relevant}
- {file 2} - {why relevant}
Existing Patterns:
- {pattern description} in {location}
Similar Implementations:
- {feature} in {files} - could serve as reference
Suggested Approach:
{brief technical approach based on findings}
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.
Example questions to consider:
header: "Implementation Scope"
question: "The issue mentions {feature}. Should this include {related functionality} or just the core feature?"
options:
- label: "Core feature only"
description: "Minimal implementation as described"
- label: "Include {related functionality}"
description: "Broader scope with additional features"
header: "Technical Approach"
question: "I found two patterns in the codebase for similar features. Which approach should we follow?"
options:
- label: "Pattern A - {description}"
description: "Used in {files}"
- label: "Pattern B - {description}"
description: "Used in {files}"
header: "Testing Requirements"
question: "What level of test coverage is expected?"
options:
- label: "Unit tests only"
description: "Test individual functions/methods"
- label: "Unit + integration tests"
description: "Also test component interactions"
- label: "Full coverage including E2E"
description: "Complete test suite"
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.
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."
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:
Linear Issue Implementation Started
Issue: {identifier} - {title}
Branch: {branchName} ✓ (already active)
Approach: {selected approach}
{Approach-specific next steps from Step 7}
Quick Commands:
- `/kramme:verify:run` - Run verification checks
- `/kramme:pr:create` - Create PR when ready
- `/kramme:pr:code-review` - Review changes for issues
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.
development
Compare an existing PR's title and body against the actual branch diff and report drift — false claims, missing major changes, stale scope, missing risk callouts. Use after pushing changes to a branch with an open PR, or before requesting review. Read-only by default; add --fix to delegate to kramme:pr:generate-description for an updated description. Complements kramme:pr:code-review (which checks description accuracy as one signal among many code-quality checks) by being a fast, focused, single-purpose check that runs in seconds.
tools
Reviews plugin skills for focused scope, progressive disclosure, portability, safety, retry behavior, and documentation quality. Use when auditing a SKILL.md, skill directory, or proposed skill text against skill-authoring standards. Not for creating new skills, editing skills, or reviewing ordinary application code.
tools
Reviews recent agent session transcripts to find repeated manual workflows or repeated user asks, then proposes and optionally scaffolds only useful new skills or custom subagents. Use when the user asks to inspect recent sessions, find automation opportunities, or create reusable workflows from repeated work. Not for summarizing one session, general retrospectives, or codebase refactoring.
data-ai
Remove all DONE issues and renumber remaining issues within each prefix group. Not for editing live issue content, archiving still-open issues, or moving issues between prefix groups.