.cursor/skills/qa-linear-integration/SKILL.md
Linear integration for creating issues, managing projects/cycles, and tracking QA workflows via GraphQL API or Linear MCP.
npx skillsauth add AZANIR/qa-skills qa-linear-integrationInstall 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.
Integrate QA workflow with Linear for issue tracking and project management. Create and update issues, manage projects and cycles, and sync with qa-bug-ticket-creator and qa-task-creator for end-to-end QA traceability.
| Feature | Description | | ------- | ----------- | | Create/update issues | Bug, Story, Task via GraphQL mutations | | Projects and cycles | Assign issues to projects; add to cycles (sprints) | | Labels and priority | Map severity/priority to Linear labels and priority | | Issue relations | Blocks, relates to, duplicates | | Team assignment | Assign issues to teams | | GraphQL API | Full GraphQL for queries and mutations |
Store in .env (never hardcode):
LINEAR_API_KEY=lin_api_xxxxxxxxxxxx
Authorization: Bearer {LINEAR_API_KEY}| Operation | GraphQL |
| --------- | ------- |
| Create issue | mutation { issueCreate(input: {...}) { issue { id identifier url } } } |
| Update issue | mutation { issueUpdate(id: "...", input: {...}) { issue { ... } } } |
| Query issues | query { issues(filter: {...}) { nodes { id identifier title state { name } } } } |
| Projects | query { projects { nodes { id name } } } |
| Teams | query { teams { nodes { id name key } } } |
| Cycles | query { cycles(filter: { teamId: { eq: "..." } }) { nodes { id name } } } |
See references/api-patterns.md for full GraphQL examples.
When creating a bug report for Linear:
references/field-mapping.md to map to Linear fieldsissueCreate with teamId, title, description, priority, labelsWhen creating tasks for Linear:
issueCreate with project, cycle, labelsparentId for sub-tasks; "blocks" for fix tasks referencing bugsLINEAR_API_KEY from .envreferences/field-mapping.md for QA → LinearBUG-123), URL, and summaryCan do (autonomous):
Cannot do (requires confirmation):
Will not do (out of scope):
LINEAR_API_KEY loaded from .env; never hardcodedreferences/field-mapping.md| Symptom | Likely Cause | Fix |
| ------- | ------------ | --- |
| 401 Unauthorized | Invalid or missing API key | Verify LINEAR_API_KEY in .env; regenerate if needed |
| Team not found | Wrong team ID or key | Query teams { nodes { id key } }; use correct ID |
| Invalid input | Required field missing | Check references/field-mapping.md; ensure teamId and title present |
| Cycle not found | Cycle doesn't exist or wrong team | Query cycles for team; use active cycle ID |
| GraphQL errors | Malformed mutation/query | Validate query syntax; check Linear API docs |
| Label not applied | Label doesn't exist in workspace | Create label in Linear or use existing label name |
| Relation fails | Invalid issue ID | Verify target issue exists; use correct id (UUID) |
| Topic | File |
| ----- | ---- |
| GraphQL API patterns | references/api-patterns.md |
| QA → Linear field mapping | references/field-mapping.md |
tools
Analyze OpenAPI/Swagger spec (JSON or YAML) against existing test files and generate an HTML coverage report with QA automation tasks. Use when user provides an OpenAPI spec file and wants to know test coverage status.
testing
Universal QA plan generator supporting 10 plan types including test plans, sprint plans, regression plans, release plans, UAT plans, performance plans, migration plans, onboarding plans, and custom plans.
development
Generate consumer-driven contract tests using Pact for JavaScript and Python to verify microservice API compatibility between consumer and provider.
development
Master skill coordinating all QA skills through pipeline modes (full-cycle, docs-only, testcases-only, write-tests, report), formalized handoff chains, scheduler rules, and framework/language selection based on project context.