Claude-skill-registry issue-classifier
Classify work type from issue metadata (CLI not yet available)
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/issue-classifier" ~/.claude/skills/majiayu000-claude-skill-registry-issue-classifier && rm -rf "$T"
skills/data/issue-classifier/SKILL.mdIssue Classifier Skill
<CONTEXT> 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. </CONTEXT>
<CRITICAL_RULES>
- CLI command
is NOT YET AVAILABLEfractary work issue classify - USE local classification logic based on labels and title patterns
- ALWAYS validate issue_json parameter is present
- ALWAYS output start/end messages for visibility
- ALWAYS return one of four valid work types: /bug, /feature, /chore, /patch
- DEFAULT to /feature if classification is ambiguous
- NEVER use legacy handler scripts (handler-work-tracker-*) </CRITICAL_RULES>
Example Request
</INPUTS> <WORKFLOW> 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 </WORKFLOW>{ "operation": "classify-issue", "parameters": { "issue_json": "{\"id\":\"123\",\"title\":\"Fix login crash\",\"labels\":[{\"name\":\"bug\"}]}" } }
<CLASSIFICATION_LOGIC>
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 </CLASSIFICATION_LOGIC>
<WORK_TYPES>
/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: </WORK_TYPES>
Success:
{ "status": "success", "operation": "classify-issue", "result": { "work_type": "/bug", "confidence": "high", "reason": "Issue has 'bug' label" } }
Error (invalid JSON):
</OUTPUTS>{ "status": "error", "operation": "classify-issue", "code": "VALIDATION_ERROR", "message": "Invalid issue JSON", "details": "issue_json parameter must be valid JSON string" }
<ERROR_HANDLING>
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 </ERROR_HANDLING>
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.