pr-feedback-classifier

📁 dagster-io/erk 📅 Jan 29, 2026
1
总安装量
1
周安装量
#45932
全站排名
安装命令
npx skills add https://github.com/dagster-io/erk --skill pr-feedback-classifier

Agent 安装分布

trae 1
droid 1
codex 1
github-copilot 1
claude-code 1

Skill 文档

PR Feedback Classifier

Fetch and classify all PR review feedback for the current branch’s PR.

Arguments

  • --include-resolved: Include resolved threads (for reference)

Check $ARGUMENTS for flags.

Steps

  1. Get current branch and PR info:

    git rev-parse --abbrev-ref HEAD
    gh pr view --json number,title,url -q '{number: .number, title: .title, url: .url}'
    
  2. Fetch all comments:

    # If --include-resolved in $ARGUMENTS:
    erk exec get-pr-review-comments --include-resolved
    # Otherwise:
    erk exec get-pr-review-comments
    
    erk exec get-pr-discussion-comments
    
  3. Classify each comment using the Comment Classification Model below.

  4. Group into batches by complexity.

  5. Output structured JSON (schema below).

Comment Classification Model

For each comment, determine:

Actionability

  • Actionable: Code changes requested, violations to fix, missing tests, documentation updates requested
  • Informational: Bot status updates, CI results, Graphite stack comments, acknowledgments, automated review summaries

Complexity (for actionable items)

  • local: Single line change at specified location
  • single_file: Multiple changes in one file
  • cross_cutting: Changes across multiple files
  • complex: Architectural changes or related refactoring needed

Batch Ordering

  1. Local Fixes (auto_proceed: true): Single-line changes
  2. Single-File (auto_proceed: true): Multi-location in one file
  3. Cross-Cutting (auto_proceed: false): Multiple files
  4. Complex (auto_proceed: false): Architectural changes

Output Format

Output ONLY the following JSON (no prose, no markdown, no code fences):

{
  "success": true,
  "pr_number": 5944,
  "pr_title": "Feature: Add new API endpoint",
  "pr_url": "https://github.com/owner/repo/pull/5944",
  "actionable_threads": [
    {
      "thread_id": "PRRT_kwDOPxC3hc5q73Ne",
      "type": "review",
      "path": "src/api.py",
      "line": 42,
      "is_outdated": false,
      "action_summary": "Add integration tests for new endpoint",
      "complexity": "local",
      "original_comment": "This needs integration tests"
    }
  ],
  "discussion_actions": [
    {
      "comment_id": 12345678,
      "action_summary": "Update API documentation",
      "complexity": "cross_cutting",
      "original_comment": "Please update the docs to reflect..."
    }
  ],
  "informational_count": 12,
  "batches": [
    {
      "name": "Local Fixes",
      "complexity": "local",
      "auto_proceed": true,
      "item_indices": [0]
    },
    {
      "name": "Cross-Cutting",
      "complexity": "cross_cutting",
      "auto_proceed": false,
      "item_indices": [0]
    }
  ],
  "error": null
}

Field notes:

  • thread_id: The ID needed for erk exec resolve-review-thread
  • comment_id: The ID needed for erk exec reply-to-discussion-comment
  • item_indices: References into actionable_threads (type=review) or discussion_actions (type=discussion)
  • original_comment: First 200 characters of the comment text

Error Case

If no PR exists for the branch or API fails:

{
  "success": false,
  "pr_number": null,
  "pr_title": null,
  "pr_url": null,
  "actionable_threads": [],
  "discussion_actions": [],
  "informational_count": 0,
  "batches": [],
  "error": "No PR found for branch feature-xyz"
}

No Comments Case

If PR exists but has no unresolved comments:

{
  "success": true,
  "pr_number": 5944,
  "pr_title": "Feature: Add new API endpoint",
  "pr_url": "https://github.com/owner/repo/pull/5944",
  "actionable_threads": [],
  "discussion_actions": [],
  "informational_count": 0,
  "batches": [],
  "error": null
}