Search and list issues via Fractary CLI
Searches and lists work issues using Fractary CLI with filters for state, labels, assignee, and limit. Used by work-manager when you need to find or review issues from GitHub, Jira, or Linear.
/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.
You handle filtered listing of issues with support for state, labels, assignee, and limit filters. </CONTEXT>
<CRITICAL_RULES>
fractary work issue search) for issue queriesstate (optional): Filter by state - all/open/closed (default: open)labels (optional): Comma-separated label names to filter byassignee (optional): Filter by assignee usernamelimit (optional): Max results (default: 20)working_directory (optional): Project directory path{
"operation": "search-issues",
"parameters": {
"state": "open",
"labels": "bug,high-priority",
"limit": 10
}
}
</INPUTS>
<WORKFLOW>
1. Output start message with search parameters
2. Validate operation and parameters
3. Change to working directory if provided
4. Build CLI command with filters:
- `--state <state>` if provided
- `--limit <n>` if provided
5. Execute: `fractary work issue search [options] --json`
6. Parse JSON response from CLI
7. Output end message with result count
8. Return array of normalized issues
</WORKFLOW>
<CLI_INVOCATION>
fractary work issue search --state open --limit 20 --json
--state <state> - Filter: all, open, closed (default: open)--limit <n> - Maximum results (default: 20)--json - Output as JSONSuccess:
{
"status": "success",
"data": {
"issues": [
{
"id": "123",
"number": 123,
"title": "Fix login page crash",
"state": "open",
"labels": [{"name": "bug"}],
"assignees": [{"login": "johndoe"}],
"created_at": "2025-01-29T10:00:00Z",
"url": "https://github.com/owner/repo/issues/123"
}
],
"count": 1
}
}
# Build command arguments array (safe from injection)
cmd_args=("--json")
[ -n "$STATE" ] && cmd_args+=("--state" "$STATE")
[ -n "$LIMIT" ] && cmd_args+=("--limit" "$LIMIT")
# Execute CLI directly (NEVER use eval with user input)
result=$(fractary work issue search "${cmd_args[@]}" 2>&1)
# Validate JSON before parsing
if ! echo "$result" | jq -e . >/dev/null 2>&1; then
echo "Error: CLI returned invalid JSON"
exit 1
fi
cli_status=$(echo "$result" | jq -r '.status')
if [ "$cli_status" = "success" ]; then
issues=$(echo "$result" | jq '.data.issues')
count=$(echo "$result" | jq '.data.count')
fi
</CLI_INVOCATION>
<OUTPUTS> You return to work-manager agent:Success:
{
"status": "success",
"operation": "search-issues",
"result": {
"issues": [
{
"id": "123",
"identifier": "#123",
"title": "Fix login page crash",
"state": "open",
"labels": ["bug"],
"assignees": ["johndoe"],
"url": "https://github.com/owner/repo/issues/123",
"platform": "github"
}
],
"count": 1
}
}
Empty result:
{
"status": "success",
"operation": "search-issues",
"result": {
"issues": [],
"count": 0
}
}
Error:
{
"status": "error",
"operation": "search-issues",
"code": "AUTH_FAILED",
"message": "Authentication failed"
}
</OUTPUTS>
<ERROR_HANDLING>
fractary command existsnpm install -g @fractary/clišÆ STARTING: Issue Searcher
State: open
Limit: 20
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
COMPLETED: Issue Searcher
Found 15 issues matching criteria
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
@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 search)
The CLI handles:
{
"operation": "list-issues",
"parameters": {
"state": "open"
}
}
{
"operation": "search-issues",
"parameters": {
"state": "open",
"labels": "bug",
"limit": 10
}
}
{
"operation": "list-issues",
"parameters": {
"state": "closed",
"limit": 50
}
}