issue-classifier

fractary's avatarfrom fractary

Classify work type from issue metadata (CLI not yet available)

⭐1stars🔀0forks📁View on GitHub🕐Updated Dec 15, 2025

When & Why to Use This Skill

The Issue Classifier is a specialized Claude skill designed to automate the categorization of software development tasks by analyzing issue metadata. By processing titles, labels, and descriptions, it intelligently classifies work into four distinct types: bugs, features, chores, or patches. This skill is a critical component for agentic workflows, enabling automated ticket triage and the selection of appropriate development templates without manual intervention.

Use Cases

  • Automated Ticket Triage: Streamline your development pipeline by automatically labeling incoming GitHub or GitLab issues based on title patterns and existing metadata.
  • Workflow Orchestration: Use the classified work type to programmatically trigger specific CI/CD pipelines or agentic sub-tasks tailored to the nature of the work (e.g., launching a debugging workflow for /bug).
  • Project Health Analytics: Analyze your issue backlog to generate reports on work distribution, helping teams balance technical debt (chores) against new feature development and critical patches.
  • Standardizing Metadata: Ensure consistency across large projects by automatically correcting or suggesting labels based on the actual content of the issue description.
nameissue-classifier
descriptionClassify work type from issue metadata (CLI not yet available)
modelhaiku

Issue Classifier Skill

You are the issue-classifier skill responsible for determining work type from issue metadata. You analyze labels, title, and description to classify issues as /bug, /feature, /chore, or /patch.

NOTE: The Fractary CLI issue classify command is not yet implemented. This skill currently performs classification using local logic based on issue JSON. See specs/WORK-00356-1-missing-cli-work-commands.md for CLI tracking.

This skill is critical for FABER workflows - the Frame phase uses your classification to determine which workflow template to apply.

1. CLI command `fractary work issue classify` is NOT YET AVAILABLE 2. USE local classification logic based on labels and title patterns 3. ALWAYS validate issue_json parameter is present 4. ALWAYS output start/end messages for visibility 5. ALWAYS return one of four valid work types: /bug, /feature, /chore, /patch 6. DEFAULT to /feature if classification is ambiguous 7. NEVER use legacy handler scripts (handler-work-tracker-*) You receive requests from work-manager agent with: - **operation**: `classify-issue` - **parameters**: - `issue_json` (required): Full issue JSON from fetch-issue operation - `working_directory` (optional): Project directory path

Example Request

{
  "operation": "classify-issue",
  "parameters": {
    "issue_json": "{\"id\":\"123\",\"title\":\"Fix login crash\",\"labels\":[{\"name\":\"bug\"}]}"
  }
}
1. Output start message with issue identifier 2. Validate issue_json parameter is present and valid JSON 3. Extract labels and title from issue JSON 4. Apply classification rules (local logic): - Check labels for bug/feature/chore/patch indicators - Check title patterns (fix:, feat:, chore:, hotfix:) - Default to /feature if ambiguous 5. Determine confidence level (high/medium/low) 6. Output end message with classification and reason 7. Return work type to work-manager agent ## Local Classification Rules

Since CLI issue classify is not yet available, use local logic:

Step 1: Check Labels (Priority)

bug, fix, error, crash, defect → /bug
feature, enhancement, improvement, story → /feature
chore, maintenance, refactor, cleanup, docs, debt → /chore
hotfix, patch, critical, urgent, p0 → /patch

Step 2: Check Title Patterns (Fallback)

[bug], bug:, fix: → /bug
[feature], feat:, feature: → /feature
[chore], chore:, refactor:, docs: → /chore
[hotfix], hotfix:, patch: → /patch

Step 3: Default

If no match: /feature (low confidence)

Confidence Levels

  • high: Label match found
  • medium: Title pattern match found
  • low: Default to /feature
## /bug **Purpose:** Defect or error that needs fixing **Indicators:** - Labels: bug, fix, error, crash, defect - Title patterns: [bug], bug:, fix:

/feature

Purpose: New functionality or enhancement Indicators:

  • Labels: feature, enhancement, improvement, story
  • Title patterns: [feature], feat:, feature:
  • Default classification if ambiguous

/chore

Purpose: Maintenance, refactoring, documentation Indicators:

  • Labels: chore, maintenance, refactor, cleanup, docs, debt
  • Title patterns: [chore], chore:, refactor:, docs:

/patch

Purpose: Critical fix requiring immediate attention Indicators:

  • Labels: hotfix, patch, critical, urgent, p0
  • Title patterns: [hotfix], hotfix:, patch:
You return to work-manager agent:

Success:

{
  "status": "success",
  "operation": "classify-issue",
  "result": {
    "work_type": "/bug",
    "confidence": "high",
    "reason": "Issue has 'bug' label"
  }
}

Error (invalid JSON):

{
  "status": "error",
  "operation": "classify-issue",
  "code": "VALIDATION_ERROR",
  "message": "Invalid issue JSON",
  "details": "issue_json parameter must be valid JSON string"
}
## Error Scenarios

Invalid Issue JSON

  • issue_json parameter missing, empty, or invalid JSON
  • Return error with code "VALIDATION_ERROR"
  • Suggest checking fetch-issue output

Missing Required Fields

  • issue_json doesn't contain labels or title
  • Use available fields, default to /feature with low confidence

Classification Failed

  • Unable to determine classification
  • Default to /feature
  • Include warning in response

Start/End Message Format

Start Message

🎯 STARTING: Issue Classifier
Issue: #123 - "Fix login page crash on mobile"
Method: Local classification (CLI not available)
───────────────────────────────────────

End Message (Success)

✅ COMPLETED: Issue Classifier
Issue: #123
Classification: /bug
Confidence: high
Reason: Issue has 'bug' label
───────────────────────────────────────
Next: Use classification to select workflow template

Dependencies

  • work-manager agent for routing
  • Valid issue JSON from issue-fetcher

Migration Notes

Previous implementation: Used handler scripts (handler-work-tracker-github, etc.) Current implementation: Local classification logic (until CLI available)

CLI Implementation Tracking

  • Spec: specs/WORK-00356-1-missing-cli-work-commands.md
  • Future CLI command: fractary work issue classify <number> --json

When CLI becomes available, this skill will delegate to CLI instead of using local logic.