name: github_issue_bot
description: GH webhook 收新 issue → claude 分析 → 自動留 comment + 加 label

flow:
  - "input >> ON_SUCCESS >> analyze"
  - "analyze >> ON_SUCCESS >> add_comment"
  - "add_comment >> ON_SUCCESS >> add_labels"

config:
  analyze:
    component: claude_api
    timeout_ms: 30000
    _recipe_output_format: json
    _recipe_output_required_fields:
      - severity
      - category
      - first_response
    prompt: |
      你是 GitHub issue 第一線分流員。對下列 issue 給出：
      - severity: "critical" | "high" | "medium" | "low"
      - category: "bug" | "feature" | "doc" | "question" | "other"
      - first_response: 一段 markdown，禮貌、有用、不假裝是真人

      若是 bug，guide 用戶提供 reproduce steps；若 question 直接回答；
      若 feature 引導去 discussion；若 doc 直接收。

      Issue:
      Title: {{input.issue.title}}
      Body: {{input.issue.body}}

  add_comment:
    component: http_request
    url: "https://api.github.com/repos/{{input.repository.full_name}}/issues/{{input.issue.number}}/comments"
    method: POST
    headers:
      Authorization: "Bearer {{secret.GITHUB_BOT_TOKEN}}"
      Accept: "application/vnd.github+json"
    body_json:
      body: "{{analyze.first_response}}"

  add_labels:
    component: http_request
    url: "https://api.github.com/repos/{{input.repository.full_name}}/issues/{{input.issue.number}}/labels"
    method: POST
    headers:
      Authorization: "Bearer {{secret.GITHUB_BOT_TOKEN}}"
    body_json:
      labels:
        - "auto-triaged"
        - "severity:{{analyze.severity}}"
        - "type:{{analyze.category}}"
