2.8 KiB
name, description, allowed-tools
| name | description | allowed-tools |
|---|---|---|
| publish-github-issues | Publishes GitHub issues from YAML files using gh CLI. Use when publishing draft issues to GitHub or user provides YAML file path in tmp/issues/. Needs YAML file with valid issue definitions and gh CLI authenticated. Trigger with phrases like 'publish issues [file-path]', 'create github issues from [file-path]', 'publish to github'. | Read, Bash(gh:*), AskUserQuestion |
Base directory for this skill: {baseDir}
Workflow
- Get YAML file path (ask if not provided)
- Read and validate YAML structure
- Create issues in GitHub (parents before children)
- Link child issues to parents using parent_ref
- Add issues to project (if specified)
- Ask user to archive YAML to processed/
<yaml_validation>
YAML Structure
Required fields:
repository(format:owner/repo)issues(array with at least one)- Each issue:
ref,title,body
Optional fields:
- Top-level:
project(integer),defaults(labels/milestone) - Per-issue:
parent_ref,milestone,labels(array)
</yaml_validation>
<issue_creation>
Creating Issues
Order: Create parent issues first, store their numbers, then create children.
For each issue:
gh issue create \
--repo {repository} \
--title "{title}" \
--body "{body}" \
[--milestone "{milestone}"] \
[--label "label1,label2"]
Parent-child linking:
When issue has parent_ref, look up parent issue number and add to body:
Depends on: #{parent_number}
Output: Report each created issue: ✓ #{number}: {title}
</issue_creation>
<project_assignment>
Adding to Project (Optional)
If YAML has project field (project number), add each created issue:
gh project item-add {project_number} \
--owner {org} \
--url {issue_url}
</project_assignment>
Archive YAML
Important: Only archive if ALL issues created successfully.
- Ask user: "Move YAML to processed/? (Y/n)"
- If yes: Create
tmp/issues/processed/if needed, move file - On partial failure: Keep file in tmp/issues/ for retry
<error_handling>
Error Handling
gh not found: which gh fails → Install gh CLI
Not authenticated: gh auth status fails → Run gh auth login
API rate limit: Wait ~1 hour, check gh api rate_limit
Partial failure: Report succeeded/failed issues, do not archive
YAML parse error: Report line number and field
</error_handling>
Example Output
Creating 3 issues in owner/repo...
✓ #188: Implement manual trial subscription management
✓ #189: Integrate Paddle billing system (child of #188)
✓ #190: Migrate manual trial tenants to Paddle (child of #188, #189)
All issues created successfully.
Added 3 issues to project "My Project".
Move YAML to processed/? (Y/n)