Skip to main content

weave-issue

Create a well-formed GitHub issue for the weave project with all fields populated (labels, type, milestone, assignee, blocked-by relationships). Pass a title and optional description as arguments.

Informations de source

Dépôt
breferrari/weave
Dernière activité de la source
25 mars 2026 à 09:13
Langue détectée de SKILL.md
anglais
Étoiles
13
Forks
3

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
weave-issue
description
Create a well-formed GitHub issue for the weave project with all fields populated (labels, type, milestone, assignee, blocked-by relationships). Pass a title and optional description as arguments.
allowed-tools
Bash, Read, Grep, Glob
argument-hint
<title> [--- <description>]
## Context ### Current branch !`git branch --show-current` ### Recent commits !`git log --oneline -5` ### Open issues (for dedup check) !`gh issue list --state open --json number,title --jq '.[] | "#\(.number) \(.title)"' 2>/dev/null | head -20` ### Available milestones !`gh api repos/PackWeave/weave/milestones --jq '.[] | "\(.title)"' 2>/dev/null` ### Issue type IDs (for GraphQL) !`gh api graphql -f query='{ repository(owner: "PackWeave", name: "weave") { issueTypes(first: 10) { nodes { id name } } } }' --jq '.data.repository.issueTypes.nodes[] | "\(.name) = \(.id)"' 2>/dev/null` ## Task Create a GitHub issue with **all fields filled**: label, issue type, milestone, assignee, and blocked-by relationships. ### Step 1 — Parse arguments Parse `$ARGUMENTS`: - Everything before `---` (or the entire input if no separator) is the **title** - Everything after `---` is the **body/description** - If no arguments, ask the user for a title ### Step 2 — Classify the issue Based on the title prefix and content, determine: **Issue type** (exactly one): - `Bug` — title starts with `fix:` or `fix(`, or describes something broken - `Feature` — title starts with `feat:` or `feat(`, or describes new functionality - `Task` — title starts with `test:`, `ci:`, `docs:`, `refactor:`, `chore:`, or describes internal work **Label** (exactly one): - `bug` — for Bug type - `enhancement` — for Feature and Task types - `documentation` — for docs-only issues ### Step 3 — Determine milestone Ask the user which milestone this belongs to, showing the available milestones from context above. If the user has already specified a milestone in their description, use that. Options: - `M6 - 0.5` (security hardening) - `M7 - 0.6` (ecosystem depth) - `M8 - 0.7` (power features) - None (explicitly deferred) ### Step 4 — Check for blockers Ask: "Does this issue depend on any open issue being completed first?" - If yes, collect the blocking issue numbers - If the user says no or doesn't specify, skip this step ### Step 5 — Create the issue ```sh gh issue create \ --title "<title>" \ --body "<body>" \ --assignee $(gh api user --jq .login) \ --label "<label>" \ --milestone "<milestone>" # omit flag entirely if no milestone ``` Do not create duplicate issues — check the open issues list above first. No "Built with Claude Code" taglines. ### Step 6 — Set issue type Get the new issue's node ID and set the type **in a single Bash call** (variables don't persist across calls): ```sh NODE_ID=$(gh api graphql -f query='{ repository(owner: "PackWeave", name: "weave") { issue(number: <NUMBER>) { id } } }' --jq '.data.repository.issue.id') && \ gh api graphql -f query='mutation { updateIssue(input: {id: "'$NODE_ID'", issueTypeId: "<TYPE_ID>"}) { issue { number } } }' ``` ### Step 7 — Set blocked-by relationships If blocking issues were identified in Step 4, for each blocker run **in a single Bash call** (NODE_ID from Step 6 won't persist — re-fetch it, or chain all steps together): ```sh NODE_ID=$(gh api graphql -f query='{ repository(owner: "PackWeave", name: "weave") { issue(number: <NUMBER>) { id } } }' --jq '.data.repository.issue.id') && \ BLOCKER_ID=$(gh api graphql -f query='{ repository(owner: "PackWeave", name: "weave") { issue(number: <BLOCKER_NUMBER>) { id } } }' --jq '.data.repository.issue.id') && \ gh api graphql -f query='mutation { addBlockedBy(input: {issueId: "'$NODE_ID'", blockingIssueId: "'$BLOCKER_ID'"}) { issue { number } blockingIssue { number } } }' && \ gh issue edit <NUMBER> --add-label "blocked" ``` Repeat for each additional blocker, or loop: ```sh for BLOCKER_NUM in <NUM1> <NUM2>; do BLOCKER_ID=$(gh api graphql -f query='{ repository(owner: "PackWeave", name: "weave") { issue(number: '$BLOCKER_NUM') { id } } }' --jq '.data.repository.issue.id') && \ gh api graphql -f query='mutation { addBlockedBy(input: {issueId: "'$NODE_ID'", blockingIssueId: "'$BLOCKER_ID'"}) { issue { number } blockingIssue { number } } }' done gh issue edit <NUMBER> --add-label "blocked" ``` ### Step 8 — Report Print a summary: ``` Created: #<number> <title> Type: <Bug|Feature|Task> Label: <label> Milestone: <milestone> Blocked by: #X, #Y (if any) URL: <url> ```
Voir sur GitHub