skills/enhance-linear-issues/SKILL.md
Use when asked to review, enhance, improve, clean up, decompose, or organize Linear issues. Handles requests mentioning "tickets" or "tasks" — these mean Linear issues. Triggers on "enhance issues", "enhance tickets", "improve issues", "improve tickets", "clean up issue TEAM-123", "break down this issue", or requests to improve issue quality, structure, or organization.
npx skillsauth add super-mega-lab/toolkit enhance-linear-issuesInstall 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.
Version: 2 — This is the single source of truth for the skill version. All version references below mean this value.
Enhance hastily-written Linear issues with clearer writing, better structure, and actionable detail — without over-engineering or losing the author's voice. Optionally decompose complex issues into sub-issues and link related issues.
Core principle: Enhance to the issue's potential, not to some idealized template. A quick feature idea shouldn't become an implementation spec.
Workspace limitation: Linear MCP tools operate on the authenticated user's workspace implicitly. There is no workspace switching — "team-aware" means discovering teams/projects in the current workspace, not switching between workspaces.
NOT for: Creating new issues from scratch, triaging, or status updates.
Load all needed tools with a single ToolSearch call: +linear. Tools used by this skill:
list_teams — list workspace teamslist_projects — list workspace projectslist_issues — list/filter issuesget_issue — get issue details (supports includeRelations)list_comments — get issue commentsextract_images — extract and view images from issue descriptionsupdate_issue — update issue fieldscreate_issue — create new issues (for decomposition)Enhancement Progress:
- [ ] Step 1: Prerequisites checked
- [ ] Step 2: Issues gathered, workspace context loaded
- [ ] Step 3: Scope confirmed with user
- [ ] Step 4: Already-processed issues filtered
- [ ] Step 5: Issues processed
- [ ] Step 6: Proposals collected and presented
- [ ] Step 7: Safety review complete
- [ ] Step 8: Approval obtained
- [ ] Step 9: Changes applied
🎫 enhance-linear-issues v[current version]git --version. If it fails, note that file linking will be unavailable. Include this in the scope summary.Preview triggers: "preview", "show me first", "don't apply yet", "dry run"
If mode is ambiguous, default to auto.
Run in parallel:
A. Gather issues based on user's criteria:
Linear:list_issues with createdAt filter and assignee: "me"Linear:list_issues with state: "backlog"Linear:list_issues with project filterLinear:get_issue with identifierIf Linear:list_issues returns paginated results, fetch all pages to build the complete issue set before proceeding.
B. Discover workspace context:
Linear:list_teams — fetch all teams (for team reassignment). If this call fails, stop with: "Linear MCP server is required but not available. Ensure the Linear MCP server is configured in your agent's MCP settings."Linear:list_projects — fetch all projects (for context and linking)C. Discover git/repo context (run in the shell):
REPO_BROWSE_URL from git remote get-url origin and current branch: {https-base}/blob/{branch}REPO_BROWSE_URL to empty and note file linking is unavailableD. Discover workspace slug:
WORKSPACE_SLUG from any issue's url field (e.g., https://linear.app/{WORKSPACE_SLUG}/issue/...). If unavailable, fall back to plain text identifiers.Show the user what will be processed:
Mode: [Auto/Preview]
Enhancing the following issues:
- TEAM-101: [title] (status: [status], team: [team])
- TEAM-102: [title] (status: [status], team: [team])
- TEAM-103: [title] (status: [status], team: [team])
Available teams: [team1, team2, ...]
Available projects: [project1, project2, ...]
Repo: [REPO_BROWSE_URL or "unavailable"]
Workspace: [WORKSPACE_SLUG or "unavailable"]
Display scope summary and proceed to analysis.
Batching (>10 issues):
Before processing, check each issue's description for _Last enhanced: v[current version],:
updatedAt timestamp is within ~1 minute of the footer timestamp → skip this issueThis avoids redundant processing when re-running the skill on the same batch.
Choose a processing strategy based on batch size:
Small batches (≤10 issues): Process each issue sequentially in the current agent using the Enhancement Process below. Context (tools, calibration criteria, workspace info) loads once and is reused across all issues.
Large batches (>10 issues): Dispatch a separate parallel sub-task for each issue to prevent context degradation. Each sub-task prompt must include:
Launch sub-tasks in parallel where possible.
For each issue (whether processed inline or via sub-task):
Linear:get_issue (include relations) — reuse data from Step 2 when availableLinear:list_commentsLinear:extract_images to view them, then describe what they showLinear:list_issues with similar termsUse these URL patterns for all references in descriptions:
https://linear.app/WORKSPACE_SLUG/issue/ISSUE-ID — WORKSPACE_SLUG: [dynamic]REPO_BROWSE_URL/file#Lstart-Lend — REPO_BROWSE_URL: [dynamic]REPO_BROWSE_URL/path/to/documentALWAYS append a single footer line to the description, even for NoChangesNeeded issues. Format:
_Last enhanced: v[VERSION], [ISO-8601-TIMESTAMP]_
Example: _Last enhanced: v2, 2024-01-15T12:00:00Z_
Rules:
_Last enhanced: line, replace it (never duplicate)<enhance-linear-issues>, <EnhanceLinearSkills>) during enhancementAfter all issues are processed, collect the proposals and present a unified change plan showing all issues at once:
# Enhancement Plan
**Mode:** [Auto/Preview]
**Issues analyzed:** [N]
**Proposed changes:** [N] (Skipped: [N], Flagged: [N])
[For each issue, use the Output Format below]
Run automated sanity checks on each proposal before presenting/applying:
| Check | Fail Condition | Action |
|-------|---------------|--------|
| Description shrinkage | Proposed description >20% shorter than original | FLAG |
| Title radical change | Edit distance >50% of original title length | FLAG |
| Data loss | Screenshots/links in original but missing in proposal | FLAG |
| Invalid team | Team reassignment to non-existent team | FLAG |
| Orphaned sub-issues | Decomposition creates children without updating parent description | FLAG |
| Circular relations | relatedTo would create self-reference | FLAG |
Auto mode: Flagged proposals are skipped (not applied) and reported in the summary. Preview mode: Flagged proposals require explicit selection even when choosing "Apply all passing."
Auto mode:
Preview mode:
For each approved issue:
Linear:update_issue with new title and/or descriptionLinear:create_issue using parentId, then update parent descriptionLinear:update_issue with relatedToError recovery: If Linear:update_issue fails for an issue, log the error, continue with remaining issues, and report failures in the summary. Never stop the entire batch for a single failure.
relatedTo_Last enhanced: v[VERSION], [TIMESTAMP]_; replace existing; never duplicateFor each issue, report under a ## TEAM-XXX: [Title] heading:
| Current Quality | Enhancement Level | What It Looks Like | |-----------------|-------------------|--------------------| | Excellent (structured, clear, actionable) | NoChangesNeeded | Has Problem/Expected/Criteria sections, code refs, links | | Good (clear intent, some structure) | LightTouch: grammar, minor clarity | Fix typos, preserve author's structure | | Medium (understandable but sparse) | Moderate: add structure, clarify | Add sections, expand terse points | | Poor (screenshot + few sentences) | Significant: full restructure | Add Problem/Causes/Investigation sections |
Bug Issues benefit from:
Feature Issues benefit from:
Task Issues benefit from:
| Mistake | Example | Fix | |---------|---------|-----| | Over-enhancement | Turning feature request into implementation spec | Match enhancement to issue type | | Lost personality | Removing casual language | Only fix actual grammar errors | | Hallucinated details | "See line 165 in foo.ts" (wrong) | Verify every code reference | | Scope creep | Adding "Out of Scope" sections to simple issues | Keep additions proportional | | Template forcing | Every issue gets Problem/Expected/Criteria | Adapt structure to issue type | | Description inflation | Adding filler text that doesn't add information | Every added sentence must carry new signal |
Poor issue (bug report) — Significant enhancement:
Before: Title "Data export broken:" / Description: [screenshot] "Noticed this happening a few times. Maybe we should add validation?"
Appropriate: Fix trailing colon in title. Add Problem/Possible Causes/Investigation structure. Add verified file paths. Describe screenshot. Add footer.
Good issue (feature request) — LightTouch:
Before: Well-reasoned feature request with screenshots and flexibility notes like "feel free to simplify if needed"
Appropriate: Fix typos. Light restructure with headers IF it helps readability. Preserve flexibility language. Do NOT add implementation details. Add footer.
Excellent issue — NoChangesNeeded:
Before: Structured with Problem, Root Cause, Solution, Tasks, References sections. Includes exact error codes, code snippets, and documentation links.
Appropriate: Add enhancement footer only. No content changes. Note in report why: "Already excellent — structured with problem/cause/solution, includes code examples and references."
Decompose when ALL of these are true:
Do NOT decompose when ANY of these are true:
When decomposing:
parentId pointing to the originalDECOMPOSE — Multi-deliverable feature: "Add label support — create label management UI, add label picker to annotations, add label filtering to views" → Three distinct deliverables, each independently verifiable, can be worked in parallel.
DON'T DECOMPOSE — Sequential, coupled steps: "Fix advisory lock timeout — add DIRECT_DATABASE_URL env var, update prisma.config.ts to use directUrl, optionally increase lock timeout" → Steps are tightly sequential. Single coherent fix for one root cause.
DON'T DECOMPOSE — Single task with multiple aspects: "Grouping expansions have repeated text — might need post-LLM scrubbing or prompt tweaks" → One problem, one investigation. Alternative approaches to the same fix.
DECOMPOSE — Bug affecting multiple systems: "Dark mode colors are wrong — sidebar uses hardcoded colors, concept tree doesn't respect theme, settings page has white backgrounds" → Three independent UI areas, each independently fixable and verifiable.
DON'T DECOMPOSE — Small task: "Update the logo on the landing page and in the sidebar" → Two instances of the same trivial change. Less than an hour of work.
When proposing decomposition, state confidence:
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).