2.8 KiB
| description | argument-hint |
|---|---|
| Pull a GitHub issue into the local ticket workspace and mark it as in-progress | <issue-number> |
/ticket — Start work on a GitHub issue
You are running the /ticket slash command. The user has typed:
/ticket $ARGUMENTS
Goal: pick up the GitHub issue identified by $ARGUMENTS, transition it to "in progress", and snapshot it as a markdown file under .ticket/ so later steps (planning, implementation) can read its description without making more API calls.
Repository
Read the target repo from .ticket/repo.md (look for the Repo (owner/name) line). If the file does not exist, ask the user for the owner/name slug, write it to .ticket/repo.md, then continue.
Set REPO to that value (e.g., salestech-group/MiroFish) and use it explicitly in every gh command via --repo "$REPO".
Steps
-
Validate input.
$ARGUMENTSmust be a non-empty issue number (or a string GitHub will accept). If empty, ask the user for the issue number and stop. -
Fetch the issue.
gh issue view "$ARGUMENTS" --repo "$REPO" \ --json number,title,state,url,labels,assignees,milestone,author,createdAt,updatedAt,bodyIf this fails, surface the error and stop. Common causes: wrong number, no access, network.
-
Mark as in-progress. GitHub Issues has no built-in "in progress" state. Approximate it:
- Self-assign:
gh issue edit "$ARGUMENTS" --repo "$REPO" --add-assignee @me - Try to add the
in-progresslabel. If the label does not exist, do not create it — just continue without it. (gh issue edit ... --add-label in-progress 2>/dev/null || true) - If the user indicates the project uses a different label or a GitHub Project with a status field, follow that instead.
- Self-assign:
-
Snapshot to
.ticket/<number>.md. Write a markdown file with this structure (replace fields from the JSON above):--- number: <number> title: <title> state: <state> url: <url> author: <author.login> assignees: <comma-separated logins, "—" if none> labels: <comma-separated names, "—" if none> milestone: <milestone.title or "—"> createdAt: <createdAt> updatedAt: <updatedAt> workingSince: <today YYYY-MM-DD> --- # #<number> — <title> <body verbatim from the issue>This description is consumed by later planning steps — keep it intact.
-
Confirm to the user. One short summary: ticket number, title, current state, what was changed (assignee, label), and the path to the snapshot. Don't dump the whole body back to the terminal.
Constraints
- Use
ghexclusively for GitHub. Do not call the REST API directly. - Do not commit
.ticket/<number>.md— the directory is gitignored except forrepo.md/.gitkeep. - Be quiet on success. Be loud on failure (state what failed and the next action).