본문으로 건너뛰기
cccskills
무료GitHub에 공개

issue-triage

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구JiraSentry
설치 방법 보기

포함된 파일(1)

  • SKILL.md4.5 KB

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."
  • Cross-tool sync: Sentry → Linear, PagerDuty → Jira.

Prereqs

curl -fsSL https://composio.dev/install | bash
composio login
composio link linear        # or: composio link jira

Discover Tools

composio search "list issues" --toolkits linear
composio search "search issues" --toolkits jira
composio tools list linear
composio tools list jira

Common slugs (verify with --get-schema):

Linear

  • LINEAR_LIST_ISSUES
  • LINEAR_CREATE_ISSUE
  • LINEAR_UPDATE_ISSUE
  • LINEAR_CREATE_COMMENT

Jira

  • JIRA_SEARCH_FOR_ISSUES_USING_JQL
  • JIRA_CREATE_ISSUE
  • JIRA_EDIT_ISSUE
  • JIRA_ADD_COMMENT
  • JIRA_ASSIGN_ISSUE

Triage Workflow

  1. Pull the backlog slice:
    # Linear
    composio execute LINEAR_LIST_ISSUES -d '{
      "filter": { "state": { "type": { "eq": "unstarted" } }, "assignee": { "null": true } },
      "first": 100
    }'
    
    # Jira
    composio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d '{
      "jql": "project = APP AND statusCategory != Done AND assignee is EMPTY ORDER BY updated DESC",
      "maxResults": 100,
      "fields": ["summary","priority","labels","updated","reporter"]
    }'
    
  2. Cluster by title similarity and labels. The agent groups likely duplicates locally.
  3. Apply updates in one pass (label, priority, assignee):
    composio execute LINEAR_UPDATE_ISSUE -d '{
      "id":"abc-123","priority":2,"labelIds":["label-bug","label-p1"],"assigneeId":"user-42"
    }'
    
    composio execute JIRA_EDIT_ISSUE -d '{
      "issueIdOrKey":"APP-482",
      "fields":{"priority":{"name":"High"},"labels":["bug","p1"]}
    }'
    
  4. Link duplicates with comments referencing the canonical issue.
  5. 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"]
    });
  }
'

Troubleshooting

  • Unknown field names → composio execute <SLUG> --get-schema shows the exact filter shape (Linear uses nested objects; Jira uses JQL strings).
  • 403 on Linear → re-run composio link linear with the right workspace.
  • Jira custom fields missing → request them explicitly in the fields array.
  • Bulk edits rate-limited → insert a 250ms sleep in the composio run loop; don't use --parallel.

Full CLI reference: docs.composio.dev/docs/cli

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

q2805187159/Anvil32026년 6월 24일 업데이트

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

q2805187159/Anvil32026년 6월 24일 업데이트

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

q2805187159/Anvil32026년 6월 24일 업데이트

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

q2805187159/Anvil32026년 6월 24일 업데이트

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

q2805187159/Anvil32026년 6월 24일 업데이트

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

q2805187159/Anvil32026년 6월 24일 업데이트

q2805187159의 스킬 모두 보기

이 스킬의 문제 신고