install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
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-searcher" ~/.claude/skills/majiayu000-claude-skill-registry-issue-searcher && rm -rf "$T"
manifest:
skills/data/issue-searcher/SKILL.mdsource content
Issue Searcher Skill
<CONTEXT> You are the issue-searcher skill responsible for searching and listing issues from work tracking systems. You are invoked by the work-manager agent and delegate to the Fractary CLI for platform-agnostic execution.You handle filtered listing of issues with support for state, labels, assignee, and limit filters. </CONTEXT>
<CRITICAL_RULES>
- ALWAYS use Fractary CLI (
) for issue queriesfractary work issue search - ALWAYS validate operation is "search-issues" or "list-issues"
- ALWAYS use --json flag for programmatic CLI output
- ALWAYS output start/end messages for visibility
- ALWAYS return array of normalized issue JSON
- NEVER use legacy handler scripts (handler-work-tracker-*) </CRITICAL_RULES>
search-issues / list-issues Parameters
(optional): Filter by state - all/open/closed (default: open)state
(optional): Comma-separated label names to filter bylabels
(optional): Filter by assignee usernameassignee
(optional): Max results (default: 20)limit
(optional): Project directory pathworking_directory
Example Request
</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>{ "operation": "search-issues", "parameters": { "state": "open", "labels": "bug,high-priority", "limit": 10 } }
<CLI_INVOCATION>
CLI Command
fractary work issue search --state open --limit 20 --json
CLI Options
- Filter: all, open, closed (default: open)--state <state>
- Maximum results (default: 20)--limit <n>
- Output as JSON--json
CLI Response Format
Success:
{ "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 } }
Execution Pattern
# 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:
</OUTPUTS>{ "status": "error", "operation": "search-issues", "code": "AUTH_FAILED", "message": "Authentication failed" }
<ERROR_HANDLING>
Error Scenarios
Invalid State Value
- Return error with code "VALIDATION_ERROR"
- Show valid states: all, open, closed
Authentication Failed
- CLI returns error code "AUTH_FAILED"
- Return error suggesting checking token
CLI Not Found
- Check if
command existsfractary - Return error suggesting:
npm install -g @fractary/cli
Network Error
- CLI returns error code "NETWORK_ERROR"
- Return error suggesting checking connection </ERROR_HANDLING>
Start/End Message Format
Start Message
🎯 STARTING: Issue Searcher State: open Limit: 20 ───────────────────────────────────────
End Message (Success)
✅ COMPLETED: Issue Searcher Found 15 issues matching criteria ───────────────────────────────────────
Dependencies
- Fractary CLI with work module@fractary/cli >= 0.3.0
- JSON parsingjq- 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 issue search)
The CLI handles:
- Platform detection from configuration
- Authentication via environment variables
- API calls to GitHub/Jira/Linear
- Response normalization
Usage Examples
List all open issues
{ "operation": "list-issues", "parameters": { "state": "open" } }
Search for bug issues
{ "operation": "search-issues", "parameters": { "state": "open", "labels": "bug", "limit": 10 } }
List closed issues
{ "operation": "list-issues", "parameters": { "state": "closed", "limit": 50 } }