This source did not publish a separate summary. Review SKILL.md before using the skill.
SKILL.md
Issue Triage (Linear / Jira)
Drive triage sessions and bug sweeps across Linear or Jira with the Composio CLI. Pull the backlog, cluster duplicates, apply labels, and hand a clean list back to the team.
When to Use
Weekly triage: "what's unassigned, stale, or missing a priority?"
Bug sweep after a release: "cluster all P1/P2 bugs, dedupe, assign owners."
Link duplicates with comments referencing the canonical issue.
Post a digest of what changed to Slack so the team sees the sweep results.
Bug Sweep (Post-Release)
# Jira: every bug filed in the last 7 days, sorted by severity
composio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d '{
"jql":"type = Bug AND created >= -7d ORDER BY priority DESC, created ASC",
"fields":["summary","priority","labels","reporter","components"]
}' | jq -r '.issues[] | "\(.fields.priority.name)\t\(.key)\t\(.fields.summary)"'
Workflow File
scripts/triage-linear.ts, run with composio run --file scripts/triage-linear.ts:
const { nodes: issues } = await execute("LINEAR_LIST_ISSUES", {
filter: { state: { type: { eq: "unstarted" } }, assignee: { null: true } },
first: 100
});
const stale = issues.filter(i => {
const age = (Date.now() - new Date(i.updatedAt).getTime()) / 86400000;
return age > 14;
});
for (const i of stale) {
await execute("LINEAR_CREATE_COMMENT", {
issueId: i.id,
body: "Auto-triage: stale for 14+ days. Please assign or close."
});
}
await execute("SLACK_SEND_MESSAGE", {
channel: "triage",
text: `Weekly triage: pinged ${stale.length} stale issues.`
});
Cross-Tool: Sentry → Linear
composio run '
const hot = await execute("SENTRY_LIST_A_PROJECTS_ISSUES", {
organization_slug:"acme", project_slug:"api",
query:"is:unresolved", sort:"freq", limit:5
});
for (const s of hot) {
await execute("LINEAR_CREATE_ISSUE", {
teamId: "TEAM_ID",
title: `[Sentry] ${s.title}`,
description: `${s.permalink}\nCount: ${s.count}`,
labelIds: ["label-bug","label-from-sentry"]
});
}
'