[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71NFKY6BKBDQH4S2FE1Y31C":3,"skill-same:01M71NFKY6BKBDQH4S2FE1Y31C":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M71NFKY6BKBDQH4S2FE1Y31C","issue-triage",null,"Triage Linear or Jira backlogs and run bug sweeps via the Composio CLI. Bulk-fetch issues, dedupe, relabel, reassign, and post summaries — all from the shell without clicking through the UI.","q2805187159\u002FAnvil","q2805187159","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F105276843?v=4","01M71KF4TN999VNJX9FY9QT06A","铁甲勇士宋小宝","01M71KF4V97XXQ7AGES97R4Q9F",3,"MIT","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fissue-triage\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"issue","triage","issue triage","linear","ui","composio","bug","jira","shell","run","via","summaries","cli","post","composio cli","issues","fetch","bulk","2026-11-10 10:56:23",false,"---\nname: issue-triage\ndescription: Triage Linear or Jira backlogs and run bug sweeps via the Composio CLI. Bulk-fetch issues, dedupe, relabel, reassign, and post summaries — all from the shell without clicking through the UI.\nmetadata:\n  short-description: Linear\u002FJira triage + bug sweeps via the Composio CLI\n---\n\n# Issue Triage (Linear \u002F Jira)\n\nDrive triage sessions and bug sweeps across Linear or Jira with the [Composio CLI](https:\u002F\u002Fdocs.composio.dev\u002Fdocs\u002Fcli). Pull the backlog, cluster duplicates, apply labels, and hand a clean list back to the team.\n\n## When to Use\n\n- Weekly triage: \"what's unassigned, stale, or missing a priority?\"\n- Bug sweep after a release: \"cluster all P1\u002FP2 bugs, dedupe, assign owners.\"\n- Cross-tool sync: Sentry → Linear, PagerDuty → Jira.\n\n## Prereqs\n\n```bash\ncurl -fsSL https:\u002F\u002Fcomposio.dev\u002Finstall | bash\ncomposio login\ncomposio link linear        # or: composio link jira\n```\n\n## Discover Tools\n\n```bash\ncomposio search \"list issues\" --toolkits linear\ncomposio search \"search issues\" --toolkits jira\ncomposio tools list linear\ncomposio tools list jira\n```\n\nCommon slugs (verify with `--get-schema`):\n\n**Linear**\n- `LINEAR_LIST_ISSUES`\n- `LINEAR_CREATE_ISSUE`\n- `LINEAR_UPDATE_ISSUE`\n- `LINEAR_CREATE_COMMENT`\n\n**Jira**\n- `JIRA_SEARCH_FOR_ISSUES_USING_JQL`\n- `JIRA_CREATE_ISSUE`\n- `JIRA_EDIT_ISSUE`\n- `JIRA_ADD_COMMENT`\n- `JIRA_ASSIGN_ISSUE`\n\n## Triage Workflow\n\n1. **Pull the backlog slice:**\n   ```bash\n   # Linear\n   composio execute LINEAR_LIST_ISSUES -d '{\n     \"filter\": { \"state\": { \"type\": { \"eq\": \"unstarted\" } }, \"assignee\": { \"null\": true } },\n     \"first\": 100\n   }'\n\n   # Jira\n   composio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d '{\n     \"jql\": \"project = APP AND statusCategory != Done AND assignee is EMPTY ORDER BY updated DESC\",\n     \"maxResults\": 100,\n     \"fields\": [\"summary\",\"priority\",\"labels\",\"updated\",\"reporter\"]\n   }'\n   ```\n2. **Cluster** by title similarity and labels. The agent groups likely duplicates locally.\n3. **Apply updates in one pass** (label, priority, assignee):\n   ```bash\n   composio execute LINEAR_UPDATE_ISSUE -d '{\n     \"id\":\"abc-123\",\"priority\":2,\"labelIds\":[\"label-bug\",\"label-p1\"],\"assigneeId\":\"user-42\"\n   }'\n\n   composio execute JIRA_EDIT_ISSUE -d '{\n     \"issueIdOrKey\":\"APP-482\",\n     \"fields\":{\"priority\":{\"name\":\"High\"},\"labels\":[\"bug\",\"p1\"]}\n   }'\n   ```\n4. **Link duplicates** with comments referencing the canonical issue.\n5. **Post a digest** of what changed to Slack so the team sees the sweep results.\n\n## Bug Sweep (Post-Release)\n\n```bash\n# Jira: every bug filed in the last 7 days, sorted by severity\ncomposio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d '{\n  \"jql\":\"type = Bug AND created >= -7d ORDER BY priority DESC, created ASC\",\n  \"fields\":[\"summary\",\"priority\",\"labels\",\"reporter\",\"components\"]\n}' | jq -r '.issues[] | \"\\(.fields.priority.name)\\t\\(.key)\\t\\(.fields.summary)\"'\n```\n\n## Workflow File\n\n`scripts\u002Ftriage-linear.ts`, run with `composio run --file scripts\u002Ftriage-linear.ts`:\n\n```ts\nconst { nodes: issues } = await execute(\"LINEAR_LIST_ISSUES\", {\n  filter: { state: { type: { eq: \"unstarted\" } }, assignee: { null: true } },\n  first: 100\n});\n\nconst stale = issues.filter(i => {\n  const age = (Date.now() - new Date(i.updatedAt).getTime()) \u002F 86400000;\n  return age > 14;\n});\n\nfor (const i of stale) {\n  await execute(\"LINEAR_CREATE_COMMENT\", {\n    issueId: i.id,\n    body: \"Auto-triage: stale for 14+ days. Please assign or close.\"\n  });\n}\n\nawait execute(\"SLACK_SEND_MESSAGE\", {\n  channel: \"triage\",\n  text: `Weekly triage: pinged ${stale.length} stale issues.`\n});\n```\n\n## Cross-Tool: Sentry → Linear\n\n```bash\ncomposio run '\n  const hot = await execute(\"SENTRY_LIST_A_PROJECTS_ISSUES\", {\n    organization_slug:\"acme\", project_slug:\"api\",\n    query:\"is:unresolved\", sort:\"freq\", limit:5\n  });\n  for (const s of hot) {\n    await execute(\"LINEAR_CREATE_ISSUE\", {\n      teamId: \"TEAM_ID\",\n      title: `[Sentry] ${s.title}`,\n      description: `${s.permalink}\\nCount: ${s.count}`,\n      labelIds: [\"label-bug\",\"label-from-sentry\"]\n    });\n  }\n'\n```\n\n## Troubleshooting\n\n- **Unknown field names** → `composio execute \u003CSLUG> --get-schema` shows the exact filter shape (Linear uses nested objects; Jira uses JQL strings).\n- **`403` on Linear** → re-run `composio link linear` with the right workspace.\n- **Jira custom fields missing** → request them explicitly in the `fields` array.\n- **Bulk edits rate-limited** → insert a 250ms sleep in the `composio run` loop; don't use `--parallel`.\n\nFull CLI reference: [docs.composio.dev\u002Fdocs\u002Fcli](https:\u002F\u002Fdocs.composio.dev\u002Fdocs\u002Fcli)\n","# Issue Triage (Linear \u002F Jira)\n\nDrive triage sessions and bug sweeps across Linear or Jira with the [Composio CLI](https:\u002F\u002Fdocs.composio.dev\u002Fdocs\u002Fcli). Pull the backlog, cluster duplicates, apply labels, and hand a clean list back to the team.\n\n## When to Use\n\n- Weekly triage: \"what's unassigned, stale, or missing a priority?\"\n- Bug sweep after a release: \"cluster all P1\u002FP2 bugs, dedupe, assign owners.\"\n- Cross-tool sync: Sentry → Linear, PagerDuty → Jira.\n\n## Prereqs\n\n```bash\ncurl -fsSL https:\u002F\u002Fcomposio.dev\u002Finstall | bash\ncomposio login\ncomposio link linear        # or: composio link jira\n```\n\n## Discover Tools\n\n```bash\ncomposio search \"list issues\" --toolkits linear\ncomposio search \"search issues\" --toolkits jira\ncomposio tools list linear\ncomposio tools list jira\n```\n\nCommon slugs (verify with `--get-schema`):\n\n**Linear**\n- `LINEAR_LIST_ISSUES`\n- `LINEAR_CREATE_ISSUE`\n- `LINEAR_UPDATE_ISSUE`\n- `LINEAR_CREATE_COMMENT`\n\n**Jira**\n- `JIRA_SEARCH_FOR_ISSUES_USING_JQL`\n- `JIRA_CREATE_ISSUE`\n- `JIRA_EDIT_ISSUE`\n- `JIRA_ADD_COMMENT`\n- `JIRA_ASSIGN_ISSUE`\n\n## Triage Workflow\n\n1. **Pull the backlog slice:**\n   ```bash\n   # Linear\n   composio execute LINEAR_LIST_ISSUES -d '{\n     \"filter\": { \"state\": { \"type\": { \"eq\": \"unstarted\" } }, \"assignee\": { \"null\": true } },\n     \"first\": 100\n   }'\n\n   # Jira\n   composio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d '{\n     \"jql\": \"project = APP AND statusCategory != Done AND assignee is EMPTY ORDER BY updated DESC\",\n     \"maxResults\": 100,\n     \"fields\": [\"summary\",\"priority\",\"labels\",\"updated\",\"reporter\"]\n   }'\n   ```\n2. **Cluster** by title similarity and labels. The agent groups likely duplicates locally.\n3. **Apply updates in one pass** (label, priority, assignee):\n   ```bash\n   composio execute LINEAR_UPDATE_ISSUE -d '{\n     \"id\":\"abc-123\",\"priority\":2,\"labelIds\":[\"label-bug\",\"label-p1\"],\"assigneeId\":\"user-42\"\n   }'\n\n   composio execute JIRA_EDIT_ISSUE -d '{\n     \"issueIdOrKey\":\"APP-482\",\n     \"fields\":{\"priority\":{\"name\":\"High\"},\"labels\":[\"bug\",\"p1\"]}\n   }'\n   ```\n4. **Link duplicates** with comments referencing the canonical issue.\n5. **Post a digest** of what changed to Slack so the team sees the sweep results.\n\n## Bug Sweep (Post-Release)\n\n```bash\n# Jira: every bug filed in the last 7 days, sorted by severity\ncomposio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d '{\n  \"jql\":\"type = Bug AND created >= -7d ORDER BY priority DESC, created ASC\",\n  \"fields\":[\"summary\",\"priority\",\"labels\",\"reporter\",\"components\"]\n}' | jq -r '.issues[] | \"\\(.fields.priority.name)\\t\\(.key)\\t\\(.fields.summary)\"'\n```\n\n## Workflow File\n\n`scripts\u002Ftriage-linear.ts`, run with `composio run --file scripts\u002Ftriage-linear.ts`:\n\n```ts\nconst { nodes: issues } = await execute(\"LINEAR_LIST_ISSUES\", {\n  filter: { state: { type: { eq: \"unstarted\" } }, assignee: { null: true } },\n  first: 100\n});\n\nconst stale = issues.filter(i => {\n  const age = (Date.now() - new Date(i.updatedAt).getTime()) \u002F 86400000;\n  return age > 14;\n});\n\nfor (const i of stale) {\n  await execute(\"LINEAR_CREATE_COMMENT\", {\n    issueId: i.id,\n    body: \"Auto-triage: stale for 14+ days. Please assign or close.\"\n  });\n}\n\nawait execute(\"SLACK_SEND_MESSAGE\", {\n  channel: \"triage\",\n  text: `Weekly triage: pinged ${stale.length} stale issues.`\n});\n```\n\n## Cross-Tool: Sentry → Linear\n\n```bash\ncomposio run '\n  const hot = await execute(\"SENTRY_LIST_A_PROJECTS_ISSUES\", {\n    organization_slug:\"acme\", project_slug:\"api\",\n    query:\"is:unresolved\", sort:\"freq\", limit:5\n  });\n  for (const s of hot) {\n    await execute(\"LINEAR_CREATE_ISSUE\", {\n      teamId: \"TEAM_ID\",\n      title: `[Sentry] ${s.title}`,\n      description: `${s.permalink}\\nCount: ${s.count}`,\n      labelIds: [\"label-bug\",\"label-from-sentry\"]\n    });\n  }\n'\n```\n\n## Troubleshooting\n\n- **Unknown field names** → `composio execute \u003CSLUG> --get-schema` shows the exact filter shape (Linear uses nested objects; Jira uses JQL strings).\n- **`403` on Linear** → re-run `composio link linear` with the right workspace.\n- **Jira custom fields missing** → request them explicitly in the `fields` array.\n- **Bulk edits rate-limited** → insert a 250ms sleep in the `composio run` loop; don't use `--parallel`.\n\nFull CLI reference: [docs.composio.dev\u002Fdocs\u002Fcli](https:\u002F\u002Fdocs.composio.dev\u002Fdocs\u002Fcli)\n",{"name":5,"metadata":42,"description":7},{"short-description":43},"Linear\u002FJira triage + bug sweeps via the Composio CLI","main","6ffadc67c9777282fa1f9330ec12ac8778064409","skills\u002Fissue-triage",0,"https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil","https:\u002F\u002Fgithub.com\u002Fq2805187159","Independent Researcher\r\n\r\nEmail: q2805187159@gmail.com\r\n\r\nGithub: q2805187159\r\n\r\nResearch Interests:\r\n- LLM Agents\r\n- Tool Routing\r\n- RAG","2026-06-24 18:31:41",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add q2805187159\u002FAnvil --skill issue-triage",{"tool":58,"command":59},"bunx","bunx skills add q2805187159\u002FAnvil --skill issue-triage",{"tool":61,"command":62},"pnpm","pnpm dlx skills add q2805187159\u002FAnvil --skill issue-triage","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fissue-triage\u002FSKILL.md",true,[],[67,100,133,140,166,189],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":71,"licenseFileUrl":72,"sourceHtmlUrl":73,"categories":74,"keywords":83,"publishedAt":37},"01M71NPWVVMB1AZ8XGKNJFT0YP","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[75,80],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":81,"categoryName":82,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000009","前端开发",[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,23,99],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","screenshots",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":114,"publishedAt":37},"01M71NPTQ96H4XSZVZT422BNRB","web-design-guidelines","Review UI code for Web Interface Guidelines compliance. Use when asked to \"review my UI\", \"check accessibility\", \"audit design\", \"review UX\", or \"check my site against best practices\".","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fweb-design-guidelines\u002FSKILL.md",[106,109],{"categoryNo":107,"categoryName":108,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[115,116,97,117,118,87,119,120,121,122,123,124,125,126,127,128,129,130,131,132],"guidelines","design","web design guidelines","web design","vercel","interface","web interface guidelines","use","when","best practices","file","code","review","check","compliance","audit","ux","accessibility",{"skillNo":134,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":139,"publishedAt":37},"01M71NPS2D31Y2BGFYA9DB7CE4","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fweb-design-guidelines copy\u002FSKILL.md",[137,138],{"categoryNo":107,"categoryName":108,"taxonomyType":78,"taxonomyTypeDesc":79},{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},[115,116,97,117,118,87,119,120,121,122,123,124,125,126,127,128,129,130,131,132],{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":152,"publishedAt":37},"01M71NPQ9DRT54QSQJ0BHBM3VG","video-generation","Use this skill when the user requests to generate, create, or imagine videos. Supports structured prompts and reference image for guided generation.","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-generation\u002FSKILL.md",[146,149],{"categoryNo":147,"categoryName":148,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":150,"categoryName":151,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发",[153,154,155,87,122,123,156,157,158,159,160,161,162,163,164,165],"Video","video generation","generation","image","create","imagine","requests","generate","videos","reference","prompts","user","structured",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":173,"publishedAt":37},"01M71NPN57CT154SWXAS52475X","youtube-downloader","Download YouTube videos with customizable quality and format options. Use this skill when the user asks to download, save, or grab YouTube videos. Supports various quality settings (best, 1080p, 720p, 480p, 360p), multiple formats (mp4, webm, mkv), and audio-only downloads as MP3.","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-downloader\u002FSKILL.md",[172],{"categoryNo":147,"categoryName":148,"taxonomyType":78,"taxonomyTypeDesc":79},[174,175,176,177,178,179,180,122,123,181,95,182,183,184,185,186,161,187,164,188],"youtube","youtube downloader","mp4","as","downloads","Audio","only","mp3","options","quality","format","settings","grab","formats","download",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":195,"publishedAt":37},"01M71NPKD95YB8N3J6J78QGFFW","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fq2805187159\u002FAnvil\u002Fblob\u002Fmain\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[196,197,198,199,200,201,202,122,203,123,204,205,206,207,208,209],"verification","verification before completion","running","evidence","complete","prs","claim","assertions","committing","output","claims","work","about","commands"]