CommunityCoding & Developmentgithub.com

sigma-create-ticket

/sigma-create-ticket files or edits one SPEC, EPIC, or TICKET issue. It is also the gateway for /sigma-to-spec and /sigma-to-tickets: those skills hand it a body. /sigma-unslop does not. This skill is the only one that runs gh issue create or gh issue edit. Use when the user invokes /sigma-create-ticket or one of those skills hands a body.

What is sigma-create-ticket?

sigma-create-ticket is a Claude Code agent skill that /sigma-create-ticket files or edits one SPEC, EPIC, or TICKET issue. It is also the gateway for /sigma-to-spec and /sigma-to-tickets: those skills hand it a body. /sigma-unslop does not. This skill is the only one that runs gh issue create or gh issue edit. Use when the user invokes /sigma-create-ticket or one of those skills hands a body.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sigma-michael/sigma-build-factory/tree/HEAD/sigma-create-ticket

Installed? Explore more Coding & Development skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

/sigma-create-ticket

Overview

/sigma-create-ticket files and edits SPEC, EPIC, and TICKET issues. It is the gateway for /sigma-to-spec and /sigma-to-tickets. /sigma-unslop does not call it.

This skill is the only one that runs gh issue create or gh issue edit. It does not implement, review, or merge.

Read CONVENTIONS.md before a create or an edit. That file holds title, label, and body detail.

When to Use

  • Use when: the user invokes /sigma-create-ticket, or /sigma-to-spec or /sigma-to-tickets hands a body in this session.
  • List or view: /sigma-to-spec asks for list-specs. /sigma-to-tickets asks for view. Run the read and return. Do not create.
  • Do not use when: the work is still a solution interview (/sigma-plan), a spec (/sigma-to-spec), or a split (/sigma-to-tickets). Do not implement, review, or merge.

Input

A handoff has caller, action (list-specs, view, create, or update), kind (spec, epic, or ticket), title, body, and sometimes number, parent, and blocked-by.

The user's yes is a reply in this session. These replies count as yes, and they do not get a second question:

  • /sigma-to-spec after the user said yes to the digest
  • /sigma-to-tickets after the user said yes to grain and blockers

Any other batch of 2 or more issues waits for a yes here.

Issue contract

  • SPEC: title SPEC: <name>, label spec, no parent. Body: what this feature is, what it is not, acceptance ids, script globs under scripts/, out of scope. No open questions.
  • EPIC: title EPIC: <name>, label type:epic. Parent is the SPEC.
  • TICKET: title TICKET: <name>, label type:ticket plus agent:hitl or agent:afk. Parent is an EPIC or the SPEC when /sigma-to-tickets names one. A ticket cut from a review has no spec parent unless that handoff names an epic. Body sections: Context, Acceptance, Out of scope, Branch agent/{N}-{slug}, Mode hitl or afk.

Labels this skill ensures: spec, type:epic, type:ticket, agent:hitl, agent:afk. The Mode label matches the Mode line.

Steps

Step 1 - Resolve the work repo

Run gh repo view --json nameWithOwner. Done when it prints owner/name. If it fails, tell the user to run from the work repo or to run gh auth login, and stop.

If the repo name ends with sigma-build-factory, stop. Issues belong on the work repo.

Step 2 - Read or write

Read CONVENTIONS.md before a create or an edit.

list-specs runs:

gh issue list --repo "$REPO" --label spec --state all --limit 50 \
  --json number,title,state,url,body

view runs gh issue view <N> --repo "$REPO" --json number,title,labels,state,url,body.

Return the JSON to the caller. Do not ensure labels and do not ask a question.

Done when the caller has the list or the issue, or the write path continues at Step 3.

Step 3 - Yes gate

A handoff from the three yes cases in Input is ready to file.

A direct batch (2 or more issues) with no yes in this session: show title, kind, parent, and Mode for each line. Ask once: "File these issues?" Wait. Silence does not file.

A direct single issue: ask once when title, kind, or a feature-lane parent is missing. When those fields are present, file.

An update with no yes in this session: show the issue number and title, ask once, then edit. Do not create a second issue.

Done when the yes is recorded, or a single complete create is ready to file.

Step 4 - Ensure labels

On the write path, list labels and create any missing name from the contract:

gh label list --repo "$REPO" --limit 100 --json name
gh label create <name> --repo "$REPO" --description "<from CONVENTIONS.md>"

Done when gh label list shows spec, type:epic, type:ticket, agent:hitl, and agent:afk.

Step 5 - Match an existing issue

List issues and compare the exact title SPEC: <name>, EPIC: <name>, or TICKET: <name>.

gh issue list --repo "$REPO" --state all --limit 200 --json number,title,state,url

A confirmed update edits that number. It does not create. If the new title is already on a different issue, stop that item and report both numbers.

A create that finds one exact title reports exists and reuses the number. It does not create a second issue and does not edit the body. Two exact titles stop that item.

Done when each item is create, update, reuse, or collision.

Step 6 - Create or edit

Write the body to a temp file. Do not write it into the work repo.

Set the title prefix when the short name lacks it. Do not double the prefix.

Create in order: epics before their tickets, blockers before dependents. Add --parent when the handoff names one. Add --blocked-by when the blocker numbers already exist. Omit each flag when it has no value.

gh issue create --repo "$REPO" --title "<title>" --label "<labels>" --body-file "$f"

Parse N from the URL. A ticket body whose Branch line is missing or still contains {N} is edited so the line is agent/<N>-<slug>. The slug is the name after the prefix, lowercase, spaces turned into hyphens.

gh issue edit <N> --repo "$REPO" --body-file "$f"

On a confirmed update, gh issue edit replaces title and body and fixes labels. Remove the other mode label so only the matching one remains. Do not change parent on edit.

A SPEC gets label spec only. An EPIC gets type:epic only. A TICKET gets type:ticket and the one mode label.

Log a gh failure and continue independent items. Do not create children of a failed epic. Do not close the parent.

Done when gh issue view <N> --json title,labels,body shows the title, the labels, and, on a ticket, Branch agent/<N>-<slug> with Mode matching the label.

Step 7 - Return

Return number, title, and URL for each item, including exists and failures.

When the caller is another skill, stop there. That skill names the next command. When the user invoked /sigma-create-ticket, name the next command and do not invoke it. A SPEC goes to /sigma-to-tickets <N>. A ticket goes to /sigma-implement <N>. For an epic, say that /sigma-implement refuses an epic.

Hard rules

RuleWhy / violation looks like
This skill is the only one that runs gh issue create or gh issue edit. List and view for the other skills run here too.A second write path drifts title, label, and parent.
Ensure the five labels, then create or edit.A missing label fails the next issue in the batch.
A confirmed update edits that issue. An exact title match does not create a duplicate.A second SPEC: or TICKET: splits one feature.
A direct batch waits for a yes. A body already confirmed by /sigma-to-spec or /sigma-to-tickets in this session does not get a second question.Asking again stalls the handoff. Filing a direct batch on silence creates issues the user has not seen.
After create, edit a ticket so Branch is agent/<N>-<slug>. The mode label matches the Mode line.A leftover {N}, or afk with agent:hitl, sends the builder to the wrong branch or the wrong mode.
Set parent on create when the handoff names one. A ticket from a spec parents to an EPIC or the SPEC. A ticket from a review omits parent unless the handoff names an epic.Inventing a spec parent copies acceptance the review ticket does not implement.
Do not implement, review, or merge.This skill files the issue and stops.

Verification

  • gh repo view returned the work repo, and the repo name does not end with sigma-build-factory.
  • CONVENTIONS.md was read before any create or edit.
  • list-specs and view returned JSON and did not create.
  • The five labels exist before create or edit.
  • A direct batch had an explicit yes. An upstream yes in this session did not get a second question.
  • A confirmed update edited the named issue. No second issue shares that exact title.
  • A new ticket's Branch line is agent/<N>-<slug>, and the mode label matches the Mode line.
  • An epic from a spec parents to that SPEC. A ticket from a spec parents to an EPIC or the SPEC. A ticket from a review has no spec parent unless the handoff named an epic.
  • The return is number, title, and URL. This skill did not implement, review, or merge.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Related Skills