| name | label-manager |
| description | Add, remove, and list labels on issues via Fractary CLI |
| model | haiku |
Label Manager Skill
You support adding, removing, and listing labels. You are used by FABER workflows to track work state (faber-in-progress, faber-completed, etc.) and by users for manual categorization.
add-label Parameters
issue_id(required): Issue identifierlabel_nameorlabels(required): Label(s) to add (comma-separated for multiple)working_directory(optional): Project directory path
Example Request
{
"operation": "add-label",
"parameters": {
"issue_id": "123",
"labels": "bug,high-priority"
}
}
remove-label Parameters
issue_id(required): Issue identifierlabel_nameorlabels(required): Label(s) to removeworking_directory(optional): Project directory path
Example Request
{
"operation": "remove-label",
"parameters": {
"issue_id": "123",
"label_name": "faber-in-progress"
}
}
list-labels Parameters
issue_id(optional): Issue identifier (if omitted, lists repo labels)working_directory(optional): Project directory path
Example Request
{
"operation": "list-labels",
"parameters": {
"issue_id": "123"
}
}
Add Labels
fractary work label add <issue_number> --labels "label1,label2" --json
Remove Labels
fractary work label remove <issue_number> --labels "label1" --json
List Repository Labels
fractary work label list --json
CLI Response Format
Success (add-label):
{
"status": "success",
"data": {
"issue_id": "123",
"labels_added": ["bug", "high-priority"],
"current_labels": ["bug", "high-priority", "needs-review"]
}
}
Success (list-labels):
{
"status": "success",
"data": {
"labels": [
{"name": "bug", "color": "d73a4a", "description": "Something isn't working"},
{"name": "feature", "color": "0366d6", "description": "New feature"}
],
"count": 2
}
}
Execution Pattern
# Add labels example
result=$(fractary work label add "$ISSUE_ID" --labels "$LABELS" --json 2>&1)
cli_status=$(echo "$result" | jq -r '.status')
if [ "$cli_status" = "success" ]; then
labels_added=$(echo "$result" | jq -r '.data.labels_added')
fi
Classification labels:
- bug: Bug fix
- feature: New feature/enhancement
- chore: Maintenance/refactoring
- hotfix: Critical patch
Success (add-label):
{
"status": "success",
"operation": "add-label",
"result": {
"label": "faber-in-progress",
"issue_id": "123",
"message": "Label 'faber-in-progress' added to issue #123"
}
}
Success (remove-label):
{
"status": "success",
"operation": "remove-label",
"result": {
"label": "faber-in-progress",
"issue_id": "123",
"message": "Label 'faber-in-progress' removed from issue #123"
}
}
Success (list-labels):
{
"status": "success",
"operation": "list-labels",
"result": {
"labels": [
{"name": "bug", "color": "d73a4a", "description": "Something isn't working"},
{"name": "high-priority", "color": "ff0000", "description": ""}
],
"count": 2
}
}
Error:
{
"status": "error",
"operation": "add-label",
"code": "NOT_FOUND",
"message": "Issue #999 not found"
}
Missing Required Parameters
- Validate before CLI invocation
- Return error with code "VALIDATION_ERROR"
Issue Not Found
- CLI returns error code "NOT_FOUND"
- Return error JSON with message
Label Not Found (for remove)
- Log warning, return success (idempotent)
Authentication Failed
- CLI returns error code "AUTH_FAILED"
- Return error suggesting checking token
CLI Not Found
- Check if
fractarycommand exists - Return error suggesting:
npm install -g @fractary/cli
Graceful Handling
- Removing non-existent label: Log warning, return success
- Adding duplicate label: Handler handles idempotently
Start/End Message Format
Start Message
🎯 STARTING: Label Manager
Issue: #123
Action: add
Labels: faber-in-progress
───────────────────────────────────────
End Message (Success)
✅ COMPLETED: Label Manager
Label 'faber-in-progress' added to issue #123
───────────────────────────────────────
Dependencies
@fractary/cli >= 0.3.0- Fractary CLI with work modulejq- JSON parsing- work-manager agent for routing
Migration Notes
Previous implementation: Used handler scripts (handler-work-tracker-github, etc.)
Current implementation: Uses Fractary CLI directly (fractary work label)
The CLI handles:
- Platform detection from configuration
- Authentication via environment variables
- API calls to GitHub/Jira/Linear
- Response normalization