Fetch issue details from work tracking systems via Fractary CLI
Retrieves complete issue details from work tracking systems using the Fractary CLI. Invoked by the work-manager agent when fetching issue data for FABER workflows, triggered by requests with operation `fetch-issue` and an `issue_number` parameter.
/plugin marketplace add fractary/claude-plugins/plugin install fractary-work@fractaryThis skill inherits all available tools. When active, it can use any tool Claude has access to.
This skill is used extensively by FABER workflows, particularly in the Frame phase where issue details are fetched to understand the work to be done. </CONTEXT>
<CRITICAL_RULES>
fractary work issue fetch) for issue retrieval{
"operation": "fetch-issue",
"parameters": {
"issue_number": "123",
"working_directory": "/mnt/c/GitHub/myorg/myproject"
}
}
</INPUTS>
<WORKFLOW>
1. Output start message with issue number
2. Validate issue_number/issue_id parameter is present
3. Change to working directory if provided
4. Execute: `fractary work issue fetch <number> --json`
5. Parse JSON response from CLI
6. Map CLI response to plugin response format
7. Output end message with issue summary
8. Return response to work-manager agent
</WORKFLOW>
<CLI_INVOCATION>
fractary work issue fetch <number> --json
Success:
{
"status": "success",
"data": {
"id": "123",
"number": 123,
"title": "Fix login page crash on mobile",
"body": "Users report app crashes when...",
"state": "open",
"labels": [{"name": "bug", "color": "d73a4a"}],
"assignees": [{"login": "johndoe"}],
"created_at": "2025-01-29T10:00:00Z",
"updated_at": "2025-01-29T15:30:00Z",
"closed_at": null,
"url": "https://github.com/owner/repo/issues/123"
}
}
# Execute CLI command
result=$(fractary work issue fetch "$ISSUE_NUMBER" --json 2>&1)
cli_status=$(echo "$result" | jq -r '.status')
if [ "$cli_status" = "success" ]; then
# Extract issue data
issue_id=$(echo "$result" | jq -r '.data.number')
issue_title=$(echo "$result" | jq -r '.data.title')
issue_state=$(echo "$result" | jq -r '.data.state')
issue_url=$(echo "$result" | jq -r '.data.url')
fi
</CLI_INVOCATION>
<NORMALIZED_RESPONSE> The skill normalizes CLI response to the universal data model:
{
"id": "123",
"identifier": "#123",
"title": "Fix login page crash on mobile",
"description": "Users report app crashes when...",
"state": "open",
"labels": ["bug", "mobile", "priority-high"],
"assignees": [{"id": "123", "username": "johndoe"}],
"author": {"id": "456", "username": "janedoe"},
"createdAt": "2025-01-29T10:00:00Z",
"updatedAt": "2025-01-29T15:30:00Z",
"closedAt": null,
"url": "https://github.com/owner/repo/issues/123",
"platform": "github",
"comments": []
}
id: Platform-specific identifieridentifier: Human-readable identifier (#123)title: Issue titlestate: Normalized state (open, closed)url: Web URL to issueplatform: Platform name (github, jira, linear)
</NORMALIZED_RESPONSE>Success Response:
{
"status": "success",
"message": "Issue #123 fetched: Fix login page crash on mobile",
"details": {
"operation": "fetch-issue",
"issue": {
"id": "123",
"identifier": "#123",
"title": "Fix login page crash on mobile",
"description": "Users report app crashes when...",
"state": "open",
"labels": ["bug", "mobile"],
"assignees": [{"username": "johndoe"}],
"url": "https://github.com/owner/repo/issues/123",
"platform": "github"
}
}
}
Failure Response (Issue Not Found):
{
"status": "failure",
"message": "Issue #999 not found",
"details": {
"operation": "fetch-issue",
"issue_id": "999"
},
"errors": ["Issue #999 does not exist in repository"],
"error_analysis": "The specified issue number does not exist or you may not have access",
"suggested_fixes": [
"Verify issue number is correct",
"Check repository access"
]
}
</OUTPUTS>
<ERROR_HANDLING>
šÆ STARTING: Issue Fetcher
Issue ID: #123
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
COMPLETED: Issue Fetcher
Issue: #123 - "Fix login page crash on mobile"
State: open
Labels: bug, mobile, priority-high
Platform: github
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Next: Use classify operation to determine work type
@fractary/cli >= 0.3.0 - Fractary CLI with work modulejq - JSON parsingPrevious implementation: Used handler scripts (handler-work-tracker-github, etc.)
Current implementation: Uses Fractary CLI directly (fractary work issue fetch)
The CLI handles:
This skill is now a thin wrapper that: