Transform user feedback into structured Linear issues with AI-enhanced parsing for labels, priority, acceptance criteria, and estimates
Transform raw user feedback text into structured Linear issues with intelligent AI parsing.
Activate this skill with any of these phrases:
| 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 |
When this skill is invoked, you MUST:
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)
Auto-detect repo context (no prompt):
git rev-parse --git-dir)package.json, Cargo.toml, pyproject.toml, or git remotegit config --get remote.origin.urlDetected: [project-name] (iOS) - github.com/user/repo
Fetch Linear data (can run in parallel):
mcp__plugin_linear_linear__list_teams to get available teamsSingle combined question using AskUserQuestion with 3 questions:
Fetch labels for selected team:
mcp__plugin_linear_linear__list_issue_labelsInputs: User feedback text Outputs: Validated team/project, platform context, available labels, repo context Verification: Team ID is valid, labels fetched successfully
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:
Label Matching Guidelines:
Title Convention:
[Platform]Priority Detection (Multi-Signal):
| 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 |
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
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:
AskUserQuestion:If editing:
Create issues:
mcp__plugin_linear_linear__create_issueDisplay summary:
| Issue | URL |
|---|---|
| MOB-123 | https://linear.app/team/issue/MOB-123 |
Inputs: Parsed issue data, user confirmation (if needed) Outputs: Created Linear issues with URLs Verification: All issues created successfully
| 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 |
Before completing this skill, verify:
This skill can be extended to:
See references/ai-parsing-guidelines.md for detailed semantic matching rules and examples.