Feedback to Linear
Transform raw user feedback text into structured Linear issues with intelligent AI parsing.
Triggers
Activate this skill with any of these phrases:
- "Convert this feedback to Linear issues"
- "Create issues from user feedback"
- "feedback-to-linear"
- "Parse feedback for Linear"
- "Transform feedback into Linear"
Quick Reference
| Aspect |
Details |
| Input |
Raw feedback text (batch) + team/project selection |
| Output |
Linear issues with AI-parsed metadata (title, labels, priority, acceptance criteria, estimates, links) |
| Workspace |
Uses workspace from configured Linear API key |
| Mode |
Batch processing with conditional confirmation |
| Duration |
~1-2 minutes for 5-10 feedback items |
Agent Behavior Contract
When this skill is invoked, you MUST:
- Never assume context - Always fetch teams, projects, and labels dynamically from Linear
- Single workspace - Issues are created in the workspace associated with the Linear MCP plugin's API key
- Auto-detect repo context - If in a git repo, automatically use project info (no prompt)
- Use existing labels only - Never create new labels; only match to fetched labels
- Default to Backlog - New issues start in "Backlog" or "Todo" state unless specified
- Batch process - Parse all feedback items together, then create all at once
- Preserve user voice - Keep original feedback wording in descriptions
- Conditional confirmation - Only prompt if LOW confidence items exist
Process
Phase 1: Input Collection
Objective: Gather feedback, detect context, and select target location in Linear.
Steps:
Load all MCP tools upfront (batch in parallel):
MCPSearch("select:mcp__plugin_linear_linear__list_teams")
MCPSearch("select:mcp__plugin_linear_linear__list_projects")
MCPSearch("select:mcp__plugin_linear_linear__list_issue_labels")
MCPSearch("select:mcp__plugin_linear_linear__create_issue")
Prompt user for feedback text (support multi-line, multiple items, inline URLs)
- Users can include screenshot/video URLs directly in feedback
- URLs are auto-extracted during parsing
Auto-detect repo context (no prompt):
Fetch Linear data (can run in parallel):
mcp__plugin_linear_linear__list_teams to get available teams
- After team is known: fetch projects and labels for that team
Single combined question using AskUserQuestion with 3 questions:
- Team: "Which team?" (required, single select)
- If repo name matches a team, note it
- Platform: "Platform?" (single select)
- Options: iOS, Android, Web, Backend/API, Multiple
- If detected from repo, set as default
- Project: "Project?" (optional, single select)
- Include "None/Backlog" option
- If repo name matches a project, highlight it
Fetch labels for selected team:
mcp__plugin_linear_linear__list_issue_labels
Inputs: User feedback text
Outputs: Validated team/project, platform context, available labels, repo context
Verification: Team ID is valid, labels fetched successfully
Phase 2: AI Parsing (Batch)
Objective: Extract structured issue data from raw feedback using AI.
Steps:
Split feedback into individual items (by line breaks, blank lines, or numbered lists)
For each feedback item, extract:
- Title: Imperative, actionable, <80 chars, include specifics
- Description: Original feedback + context + estimate note (markdown formatted)
- Labels: Semantically match to fetched labels using compound signals
- Priority: 1-4 based on multi-signal inference (default: 3)
- Acceptance Criteria: 3-5 testable items in markdown checklist format
- Estimate: XS/S/M/L/XL complexity (appended to description)
- Confidence: HIGH/MEDIUM/LOW for each field
- Links: Auto-extract URLs from feedback text
Label Matching Guidelines:
- Use compound signal detection (see parsing guidelines)
- Consider label descriptions, not just names
- Domain-aware: prioritize platform labels matching detected repo
- Match based on >70% semantic confidence
- Maximum 3-4 labels per issue
Title Convention:
- When platform is selected (not "Multiple"), prefix with
[Platform]
- Include specific details from feedback (device, size, action)
- Avoid generic titles like "Fix bug" or "Add feature"
- Examples:
- "[iOS] Fix crash when uploading large images on iPhone 14"
- "[Android] Add dark mode toggle in settings"
Priority Detection (Multi-Signal):
- Base priority: 3 (Medium) - most feedback deserves attention
- Adjust up/down based on signals:
| Signal Type |
+1 Priority |
-1 Priority |
| User impact |
"many users", "everyone", "all" |
"sometimes", "rarely", "edge case" |
| Business |
"can't use", "blocking", "revenue" |
"cosmetic", "minor", "nice to have" |
| Severity |
crash, data loss, security |
typo, color, alignment |
| Tone |
ALL CAPS, !!!, frustrated |
casual suggestion |
- Priority 1 (Urgent): crash + many users, security, data loss
- Priority 2 (High): blocking core flow, explicit urgency
- Priority 3 (Medium): default, standard bugs/features
- Priority 4 (Low): cosmetic, minor polish
Confidence Scoring:
| Field |
HIGH |
MEDIUM |
LOW |
| Title |
Clear action + specific issue |
Transformed, some ambiguity |
Vague, add [?] suffix |
| Labels |
Exact compound match |
Semantic inference |
Weak match |
| Priority |
Multiple strong signals |
Some signals |
Defaulted |
| Estimate |
- |
Always MEDIUM |
- |
Description Format:
[Original user feedback, quoted or paraphrased]
## Context
[Inferred context + device/platform details]
[If repo detected: **Source repo:** project-name (repo-url)]
**Complexity Estimate:** M (Medium)
## Links
- [Screenshot](https://d.pr/abc123)
- [src/Component.tsx](https://github.com/user/repo/blob/main/src/Component.tsx)
## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3
Inputs: Feedback items, available labels, repo context
Outputs: Structured issue data with confidence scores
Verification: All items have title, description, valid labels
Phase 3: Creation & Confirmation
Objective: Preview parsed issues and create them in Linear.
Steps:
Display preview table:
| Title |
Labels |
Pri |
Est |
Confidence |
| [iOS] Fix crash on upload |
Bug, iOS |
2 |
M |
HIGH |
| Improve settings [?] |
Enhancement |
3 |
M |
LOW ⚠️ |
Conditional confirmation:
- If ALL items have HIGH or MEDIUM confidence → create immediately (no prompt)
- If ANY item has LOW confidence → prompt with
AskUserQuestion:
- "Create N issues? (X items flagged for review)"
- Options: "Create all", "Edit flagged items", "Cancel"
If editing:
- Allow inline edits: "Change issue 2 title to: [new title]"
- Re-display preview after edits
- Then create
Create issues:
- For each parsed issue, call
mcp__plugin_linear_linear__create_issue
- Include: title, team, project (if set), labels, priority, description
Display summary:
Inputs: Parsed issue data, user confirmation (if needed)
Outputs: Created Linear issues with URLs
Verification: All issues created successfully
Anti-Patterns
| Avoid |
Why |
Instead |
| Creating labels |
May not match team conventions |
Use existing labels only |
| Hardcoding labels |
Different workspaces have different labels |
Fetch dynamically |
| Asking about repo context |
Adds unnecessary prompt |
Auto-detect silently |
| Asking about media URLs |
Adds unnecessary prompt |
Auto-extract from feedback |
| Always prompting to confirm |
Slows down workflow |
Only prompt if LOW confidence |
| Priority 0 as default |
Most feedback deserves attention |
Default to 3 (Medium) |
| Generic titles |
Hard to scan/triage |
Include specifics from feedback |
Verification Checklist
Before completing this skill, verify:
Extension Points
This skill can be extended to:
- Duplicate detection - Check for similar existing issues before creating
- Assignee inference - Auto-assign based on feedback source or label
- Cycle assignment - Automatically add to current cycle
- Parent issues - Group related feedback under epic/parent
References
See references/ai-parsing-guidelines.md for detailed semantic matching rules and examples.
Source: 0x7067/claude-code-setup — distributed by TomeVault.
1---2name: feedback-to-linear3description: Transform user feedback into structured Linear issues with AI-enhanced parsing for labels, priority, acceptance criteria, and estimates Use when this capability is needed.4---56# Feedback to Linear78Transform raw user feedback text into structured Linear issues with intelligent AI parsing.910## Triggers1112Activate this skill with any of these phrases:13- "Convert this feedback to Linear issues"14- "Create issues from user feedback"15- "feedback-to-linear"16- "Parse feedback for Linear"17- "Transform feedback into Linear"1819## Quick Reference2021| Aspect | Details |22|--------|---------|23| **Input** | Raw feedback text (batch) + team/project selection |24| **Output** | Linear issues with AI-parsed metadata (title, labels, priority, acceptance criteria, estimates, links) |25| **Workspace** | Uses workspace from configured Linear API key |26| **Mode** | Batch processing with conditional confirmation |27| **Duration** | ~1-2 minutes for 5-10 feedback items |2829## Agent Behavior Contract3031When this skill is invoked, you MUST:32331. **Never assume context** - Always fetch teams, projects, and labels dynamically from Linear342. **Single workspace** - Issues are created in the workspace associated with the Linear MCP plugin's API key353. **Auto-detect repo context** - If in a git repo, automatically use project info (no prompt)364. **Use existing labels only** - Never create new labels; only match to fetched labels375. **Default to Backlog** - New issues start in "Backlog" or "Todo" state unless specified386. **Batch process** - Parse all feedback items together, then create all at once397. **Preserve user voice** - Keep original feedback wording in descriptions408. **Conditional confirmation** - Only prompt if LOW confidence items exist4142## Process4344### Phase 1: Input Collection4546**Objective:** Gather feedback, detect context, and select target location in Linear.4748**Steps:**49501. **Load all MCP tools upfront** (batch in parallel):51 ```52 MCPSearch("select:mcp__plugin_linear_linear__list_teams")53 MCPSearch("select:mcp__plugin_linear_linear__list_projects")54 MCPSearch("select:mcp__plugin_linear_linear__list_issue_labels")55 MCPSearch("select:mcp__plugin_linear_linear__create_issue")56 ```57582. **Prompt user for feedback text** (support multi-line, multiple items, inline URLs)59 - Users can include screenshot/video URLs directly in feedback60 - URLs are auto-extracted during parsing61623. **Auto-detect repo context** (no prompt):63 - Check if current directory is a git repo (`git rev-parse --git-dir`)64 - If yes, detect:65 - Project name from `package.json`, `Cargo.toml`, `pyproject.toml`, or git remote66 - Platform from project structure (ios/, android/, package.json dependencies, etc.)67 - Repo URL from `git config --get remote.origin.url`68 - Display detected context as informational message:69 ```70 Detected: [project-name] (iOS) - github.com/user/repo71 ```72734. **Fetch Linear data** (can run in parallel):74 - `mcp__plugin_linear_linear__list_teams` to get available teams75 - After team is known: fetch projects and labels for that team76775. **Single combined question** using `AskUserQuestion` with 3 questions:78 - **Team**: "Which team?" (required, single select)79 - If repo name matches a team, note it80 - **Platform**: "Platform?" (single select)81 - Options: iOS, Android, Web, Backend/API, Multiple82 - If detected from repo, set as default83 - **Project**: "Project?" (optional, single select)84 - Include "None/Backlog" option85 - If repo name matches a project, highlight it86876. **Fetch labels** for selected team:88 - `mcp__plugin_linear_linear__list_issue_labels`8990**Inputs:** User feedback text91**Outputs:** Validated team/project, platform context, available labels, repo context92**Verification:** Team ID is valid, labels fetched successfully9394---9596### Phase 2: AI Parsing (Batch)9798**Objective:** Extract structured issue data from raw feedback using AI.99100**Steps:**1011021. Split feedback into individual items (by line breaks, blank lines, or numbered lists)1031042. For each feedback item, extract:105 - **Title**: Imperative, actionable, <80 chars, include specifics106 - **Description**: Original feedback + context + estimate note (markdown formatted)107 - **Labels**: Semantically match to fetched labels using compound signals108 - **Priority**: 1-4 based on multi-signal inference (default: 3)109 - **Acceptance Criteria**: 3-5 testable items in markdown checklist format110 - **Estimate**: XS/S/M/L/XL complexity (appended to description)111 - **Confidence**: HIGH/MEDIUM/LOW for each field112 - **Links**: Auto-extract URLs from feedback text113114**Label Matching Guidelines:**115- Use compound signal detection (see parsing guidelines)116- Consider label descriptions, not just names117- Domain-aware: prioritize platform labels matching detected repo118- Match based on >70% semantic confidence119- Maximum 3-4 labels per issue120121**Title Convention:**122- When platform is selected (not "Multiple"), prefix with `[Platform]`123- Include specific details from feedback (device, size, action)124- Avoid generic titles like "Fix bug" or "Add feature"125- Examples:126 - "[iOS] Fix crash when uploading large images on iPhone 14"127 - "[Android] Add dark mode toggle in settings"128129**Priority Detection (Multi-Signal):**130- Base priority: 3 (Medium) - most feedback deserves attention131- Adjust up/down based on signals:132133| Signal Type | +1 Priority | -1 Priority |134|-------------|-------------|-------------|135| User impact | "many users", "everyone", "all" | "sometimes", "rarely", "edge case" |136| Business | "can't use", "blocking", "revenue" | "cosmetic", "minor", "nice to have" |137| Severity | crash, data loss, security | typo, color, alignment |138| Tone | ALL CAPS, !!!, frustrated | casual suggestion |139140- Priority 1 (Urgent): crash + many users, security, data loss141- Priority 2 (High): blocking core flow, explicit urgency142- Priority 3 (Medium): default, standard bugs/features143- Priority 4 (Low): cosmetic, minor polish144145**Confidence Scoring:**146147| Field | HIGH | MEDIUM | LOW |148|-------|------|--------|-----|149| Title | Clear action + specific issue | Transformed, some ambiguity | Vague, add `[?]` suffix |150| Labels | Exact compound match | Semantic inference | Weak match |151| Priority | Multiple strong signals | Some signals | Defaulted |152| Estimate | - | Always MEDIUM | - |153154**Description Format:**155```markdown156[Original user feedback, quoted or paraphrased]157158## Context159[Inferred context + device/platform details]160[If repo detected: **Source repo:** project-name (repo-url)]161162**Complexity Estimate:** M (Medium)163164## Links165- [Screenshot](https://d.pr/abc123)166- [src/Component.tsx](https://github.com/user/repo/blob/main/src/Component.tsx)167168## Acceptance Criteria169- [ ] Criterion 1170- [ ] Criterion 2171- [ ] Criterion 3172```173174**Inputs:** Feedback items, available labels, repo context175**Outputs:** Structured issue data with confidence scores176**Verification:** All items have title, description, valid labels177178---179180### Phase 3: Creation & Confirmation181182**Objective:** Preview parsed issues and create them in Linear.183184**Steps:**1851861. **Display preview table:**187 | Title | Labels | Pri | Est | Confidence |188 |-------|--------|-----|-----|------------|189 | [iOS] Fix crash on upload | Bug, iOS | 2 | M | HIGH |190 | Improve settings [?] | Enhancement | 3 | M | LOW ⚠️ |1911922. **Conditional confirmation:**193 - If ALL items have HIGH or MEDIUM confidence → **create immediately** (no prompt)194 - If ANY item has LOW confidence → prompt with `AskUserQuestion`:195 - "Create N issues? (X items flagged for review)"196 - Options: "Create all", "Edit flagged items", "Cancel"1971983. **If editing:**199 - Allow inline edits: "Change issue 2 title to: [new title]"200 - Re-display preview after edits201 - Then create2022034. **Create issues:**204 - For each parsed issue, call `mcp__plugin_linear_linear__create_issue`205 - Include: title, team, project (if set), labels, priority, description2062075. **Display summary:**208 | Issue | URL |209 |-------|-----|210 | MOB-123 | https://linear.app/team/issue/MOB-123 |211212**Inputs:** Parsed issue data, user confirmation (if needed)213**Outputs:** Created Linear issues with URLs214**Verification:** All issues created successfully215216---217218## Anti-Patterns219220| Avoid | Why | Instead |221|-------|-----|---------|222| Creating labels | May not match team conventions | Use existing labels only |223| Hardcoding labels | Different workspaces have different labels | Fetch dynamically |224| Asking about repo context | Adds unnecessary prompt | Auto-detect silently |225| Asking about media URLs | Adds unnecessary prompt | Auto-extract from feedback |226| Always prompting to confirm | Slows down workflow | Only prompt if LOW confidence |227| Priority 0 as default | Most feedback deserves attention | Default to 3 (Medium) |228| Generic titles | Hard to scan/triage | Include specifics from feedback |229230## Verification Checklist231232Before completing this skill, verify:233- [ ] All issues created with valid team assignment234- [ ] Labels match existing workspace labels (no new labels created)235- [ ] Confirmation only prompted if LOW confidence items exist236- [ ] Summary with issue URLs provided237- [ ] Acceptance criteria formatted as markdown checklist238- [ ] Priority values are 1-4 (not 0 unless truly ambiguous)239- [ ] Estimate included in description240- [ ] Confidence scores assigned (HIGH/MEDIUM/LOW)241- [ ] LOW confidence items flagged with [?] in title242- [ ] Repo context auto-detected and used (if in git repo)243- [ ] URLs auto-extracted from feedback text244245## Extension Points246247This skill can be extended to:2481. **Duplicate detection** - Check for similar existing issues before creating2492. **Assignee inference** - Auto-assign based on feedback source or label2503. **Cycle assignment** - Automatically add to current cycle2514. **Parent issues** - Group related feedback under epic/parent252253## References254255See `references/ai-parsing-guidelines.md` for detailed semantic matching rules and examples.256257---258> Source: [0x7067/claude-code-setup](https://github.com/0x7067/claude-code-setup) — distributed by [TomeVault](https://tomevault.io).259<!-- tomevault:4.0:skill_md:2026-05-30 -->