1---2name: task-register-23description: Register a new task that does not yet have a GitHub Issue in the Hyper-Waterfall workflow. Query open milestones and existing labels, choose candidates, confirm with the task requester before creating the Issue, then create the GitHub Issue number. After Issue creation, hand off branch, daily task board, and task plan work to task-start.4---56# Hyper-Waterfall Issue Registration78## Trigger910- The task requester explicitly asks to register an Issue, create a new task, or start from an Issue.11- The task requester invokes this SKILL directly.1213## Preconditions1415- The work does not yet have an Issue number.16- Purpose, background, and scope are at least drafted.17- `gh` CLI is authenticated for the current user.18- When possible, `.github/ISSUE_TEMPLATE/task.yml` or framework source `templates/.github/ISSUE_TEMPLATE/task.yml` can be read.19- Before creating the Issue, the title, body, milestone, and label draft can be confirmed with the task requester.2021## Procedure22231. Check for duplicate Issues.24 ```bash25 gh issue list --repo {REPO_SLUG} --state all \26 --search "{work keywords}" \27 --limit 20 \28 --json number,title,state,milestone,labels,url29 ```30 - If a substantially identical open Issue exists, do not create a new one. Ask whether to use the existing Issue.31 - If a closed Issue covered the same topic, link it in the new Issue references.322. Check open milestones.33 ```bash34 gh api repos/{REPO_SLUG}/milestones \35 --jq '.[] | {number,title,state,description,open_issues,closed_issues}'36 ```37 - Judge from the live `title`, `state`, and `description`.38 - Do not rely on remembered old milestone lists or version mappings.393. Check existing labels.40 ```bash41 gh api repos/{REPO_SLUG}/labels --paginate \42 --jq '.[] | {name,description,color}'43 ```44 - Judge from live `name` and `description`.45 - Do not rely on remembered old label lists.464. Choose milestone candidates.47 - Use only open milestones.48 - Compare work purpose, scope, component, and release phase with the milestone `title` and `description`.49 - If one candidate is clear, record its title and reason.50 - If 2-3 candidates are possible, present them with reasons and ask the task requester.51 - If no open milestone fits or descriptions are insufficient, ask the task requester instead of guessing.525. Choose label candidates.53 - Use only existing labels from the live lookup.54 - Select a label only when the work clearly matches the label `name` and `description`.55 - Prefer 1 type label, 1-2 area labels, and 0-1 kind/status label.56 - Type labels include `bug`, `documentation`, `enhancement`, `duplicate`, or `question`.57 - Area labels are selected by primary work ownership, not every affected area.58 - Kind labels such as `kind:architecture`, `kind:automation`, `kind:regression`, `kind:verification`, or `kind:follow-up` are used only when they meaningfully distinguish handling.59 - General Issues should usually have 2-4 labels.60 - If 5 or more labels are needed, write the exception reason in the draft and confirm it with the task requester.61 - If candidates are clear, record label names and reasons.62 - If no label fits or the fit is ambiguous, create without labels or ask the task requester.63 - Do not create new labels.646. Draft the Issue.65 - Title: one sentence that reveals the work unit.66 - Body: prefer GitHub Issue Form `.github/ISSUE_TEMPLATE/task.yml`.67 - In a framework repository, use `templates/.github/ISSUE_TEMPLATE/task.yml` when checking the source template for applied repositories.68 - Since `gh issue create` does not run Issue Form UI, convert form fields to Markdown sections.69 - Issue Form sections:70 - Background71 - Goals72 - Scope - Included73 - Scope - Excluded74 - Acceptance Criteria75 - Verification Criteria76 - References77 - Milestone and label candidates78 - If the Issue Form cannot be read, use the same section list as fallback.79 - Milestone: one open milestone chosen from live lookup and the selection reason.80 - Labels: approved existing labels and reasons, or none.81 - Split label reasons by type/area/kind, and include the exception reason if using 5 or more labels.827. Request approval before creating the Issue.83 - Show the task requester the title, body, milestone, labels, and selection reasons.84 - Do not run `gh issue create` until the task requester explicitly approves creation in the same thread.858. After approval, create the Issue.86 ```bash87 gh issue create --repo {REPO_SLUG} \88 --title "{title}" \89 --body "{body}" \90 --milestone "{milestone}" \91 --label "{label}"92 ```93 - Repeat `--label` for multiple labels, such as `--label documentation --label enhancement`.94 - Omit `--label` when creating without labels.959. Confirm the created Issue.96 ```bash97 gh issue view {N} --repo {REPO_SLUG} \98 --json number,title,state,milestone,labels,url99 ```10010. Report the created Issue number and URL, then request approval to enter `task-start`.101102## Verification103104- The created Issue is `OPEN`.105- The milestone is not empty and was an open milestone from live lookup.106- Labels are only approved existing labels.107- General Issue labels are usually in the recommended 2-4 range.108- If 5 or more labels were used, the approved exception reason is included in the report.109- `area:*` labels are selected by primary work ownership.110- The Issue body fills the required inputs corresponding to `.github/ISSUE_TEMPLATE/task.yml`.111- The creation report includes Issue number, URL, milestone, labels, and selection reasons.112113## Never Do114115- Run `gh issue create` without task requester approval.116- Create a new milestone or label.117- Arbitrarily use a closed milestone.118- Continue to `task-start` after Issue creation without approval.119- Create branches, update the daily task board, or write the task plan inside this Skill.120121## Invocation122123- Codex: `$task-register` or select `task-register` from the `/skills` menu124- Claude Code: `/task-register`