---
description: "Add an issue/PR to the auto queue, or quick-capture a freeform idea as a grilled issue and queue it."
argument-hint: "<issue-or-pr-number | freeform text>"
---
<!-- GENERATED from commands/loop-enqueue.command.md by scripts/claude/generate-claude-assets.mjs — do not edit; edit the source and regenerate. -->

Add work to the dev-loop queue. Parse `$ARGUMENTS` before acting. The project is auto-resolved from `.devloops` — never pass `--project` and never invent a project number. `<owner/repo>` resolves from the git remote at invocation, same as the other loop commands.

1. **Argument parsing (fail-closed):**
   - If `$ARGUMENTS` is empty, print `Error: missing argument — provide an issue/PR number or freeform text.` and stop without mutating anything.
   - If `$ARGUMENTS` is a single integer token, take the **numeric path**. Otherwise take the **freeform path**.

2. **Numeric path (existing issue/PR):**
   - Run `dev-loops-run scripts/projects/add-queue-item.mjs --repo <owner/repo> --item <n>`.
   - The script is idempotent and returns `{ ok, item: { status, alreadyPresent } }`. Report the resulting Status column and whether it was already present, e.g. `#<n> is in "Backlog" (already on the board)` or `#<n> added to "Backlog"`.
   - Exit `3` means the issue/PR was not found (`ITEM_NOT_FOUND` / `CONTENT_NOT_FOUND`): print `Error: issue/PR #<n> not found.` and stop. Do not retry with a guessed project.
   - Exit `4` means the issue targets the pickup (`Next Up`) column without a refinement artifact (`MISSING_REFINEMENT_ARTIFACT`): print the error naming the missing sections and point at `/dev-loops:loop-grill <n> --auto` (or `/loop-grill <n> --auto` in the dev-loops repo itself).
   - **Headless / auto ordering (who grills):** the `add-queue-item.mjs` gate enforces and parks; it never grills. So in a headless/auto run, **first** run `/dev-loops:loop-grill <n> --auto` (or `/loop-grill <n> --auto` in the dev-loops repo itself) to synthesize AC/DoD, **then** enqueue with `--next-up`. Only if grilling cannot produce a usable artifact, pass `--auto` on the `add-queue-item.mjs` call so the issue parks in the non-pickup column with a recorded reason (from the JSON `refinement` field) rather than failing the run — surface that reason and leave the issue parked for a human to refine.

3. **Freeform path (quick-capture a new idea):** run these steps in order. This is the
   quick-capture exemption from `INTAKE-NEW-IDEA-SAFETY`
   ([Issue intake procedure](../skills/docs/issue-intake-procedure.md)) — the up-front
   proposal artifact, async classification, and second async mutation pass are deferred in
   favor of the inline confirm→create→grill steps below (it always creates a new issue,
   human-gated).
   1. **Confirm first — no mutation before approval.** Print a one-line preview of the issue to be created (`About to create issue: "<concise title>"`) and STOP for approval. Do not create the issue, grill, or enqueue anything until the human approves.
   2. **Create the issue.** After approval, create a minimal GitHub issue from the text via the sanctioned wrapper `dev-loops-run scripts/github/create-issue.mjs --repo <owner/repo> --assignee @me --title "<concise title>" --body "<freeform text>"`. Title = a concise summary of the text; body = the verbatim freeform text. The wrapper idempotently and fail-open adds the new issue to the board in Backlog (`QUEUE-BOARD-LINKED`) — do not call raw `gh issue create` for freeform capture.
   3. **Grill it.** Run `/dev-loops:loop-grill <n> --auto` (or `/loop-grill <n> --auto` in the dev-loops repo itself; delegates to the `loop-grill` skill). The skill writes a `## Grill findings` section back into the issue body and flags any unresolved items there, so they are visible before pickup. Do not re-implement grilling.
   4. **Enqueue.** Run `dev-loops-run scripts/projects/add-queue-item.mjs --repo <owner/repo> --item <n>` to add the grill-annotated issue to the board, then report its Status column as in the numeric path. The `strategy: local-first` default is set repo-wide in `.devloops` (`strategy: local-first`), so the new issue is already local-first — this repo has no per-issue local-first label or body tag to apply, and you MUST NOT invent one.
