Agent skill

issue-updater

Update issue title and description via Fractary CLI

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/issue-updater

SKILL.md

Issue Updater Skill

<CRITICAL_RULES>

  1. ALWAYS use Fractary CLI (fractary work issue update) for updates
  2. ALWAYS validate issue_id parameter is present
  3. ALWAYS require at least one of title or description
  4. ALWAYS use --json flag for programmatic CLI output
  5. ALWAYS output start/end messages for visibility
  6. NEVER use legacy handler scripts (handler-work-tracker-*) </CRITICAL_RULES>

Note: At least one of title or description must be provided.

Example Request

json
{
  "operation": "update-issue",
  "parameters": {
    "issue_id": "123",
    "title": "Updated: Fix login page crash on mobile",
    "description": "Updated description with more details..."
  }
}

<CLI_INVOCATION>

CLI Command

bash
fractary work issue update <number> --title "New title" --body "New description" --json

CLI Options

  • --title <text> - New issue title
  • --body <text> - New issue description/body
  • --json - Output as JSON

CLI Response Format

Success:

json
{
  "status": "success",
  "data": {
    "id": "123",
    "number": 123,
    "title": "Updated: Fix login page crash on mobile",
    "body": "Updated description with more details...",
    "state": "open",
    "url": "https://github.com/owner/repo/issues/123"
  }
}

Execution Pattern

bash
# Build command arguments array (safe from injection)
cmd_args=("$ISSUE_NUMBER" "--json")
[ -n "$TITLE" ] && cmd_args+=("--title" "$TITLE")
[ -n "$DESCRIPTION" ] && cmd_args+=("--body" "$DESCRIPTION")

# Execute CLI directly (NEVER use eval with user input)
result=$(fractary work issue update "${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
    issue_title=$(echo "$result" | jq -r '.data.title')
    issue_url=$(echo "$result" | jq -r '.data.url')
fi

</CLI_INVOCATION>

Success:

json
{
  "status": "success",
  "operation": "update-issue",
  "result": {
    "id": "123",
    "identifier": "#123",
    "title": "Updated: Fix login page crash on mobile",
    "description": "Updated description with more details...",
    "url": "https://github.com/owner/repo/issues/123",
    "platform": "github"
  }
}

Error:

json
{
  "status": "error",
  "operation": "update-issue",
  "code": "NOT_FOUND",
  "message": "Issue #999 not found"
}

<ERROR_HANDLING>

Error Scenarios

Missing Issue ID

  • Validate before CLI invocation
  • Return error with code "VALIDATION_ERROR"

No Update Fields

  • Return error with code "VALIDATION_ERROR"
  • Message: "At least one of title or description must be provided"

Issue Not Found

  • CLI returns error code "NOT_FOUND"
  • Return error with message

Authentication Failed

  • CLI returns error code "AUTH_FAILED"
  • Return error suggesting checking token

CLI Not Found

  • Check if fractary command exists
  • Return error suggesting: npm install -g @fractary/cli </ERROR_HANDLING>

Start/End Message Format

Start Message

🎯 STARTING: Issue Updater
Issue: #123
Updates: title, description
───────────────────────────────────────

End Message (Success)

✅ COMPLETED: Issue Updater
Updated: #123 - "Updated: Fix login page crash on mobile"
URL: https://github.com/owner/repo/issues/123
───────────────────────────────────────

Dependencies

  • @fractary/cli >= 0.3.0 - Fractary CLI with work module
  • jq - 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 issue update)

The CLI handles:

  • Platform detection from configuration
  • Authentication via environment variables
  • API calls to GitHub/Jira/Linear
  • Response normalization

Didn't find tool you were looking for?

Be as detailed as possible for better results