grind-intake · git:20260925.d2535f4 · 2026-09-25 · sha256 2ab0bc085fbc6f9f
grind-intake git:20260925.d2535f4A
Immutable. This exact content never changes and is served at /api/v1/blob/2ab0bc085fbc6f9f.
---
name: grind-intake
description: "Turn a /grind argument (meta issue URL, issue numbers or URLs, free-form goal, or nothing for the repo's issues page) into an ordered goal list."
triggers:
- When /grind needs its goal list
- When the user asks which goals a meta issue or issue list expands to
disable-model-invocation: true
---
<!-- managed-by: clud -->
# /grind-intake
Produces the ordered goal list the `/grind` router passes to the workflow:
`[{id, title, brief}]`, plus the repository root and default branch. It
changes no code, so the RED -> GREEN rule applies later, in
`/grind-integrate`.
## Sources
Recognize the argument in this order:
1. **Meta issue URL or number.** A parent issue with native sub-issues
(`gh api repos/{owner}/{repo}/issues/{n}/sub_issues`) or a task list of
issue references. Each open child becomes a goal. `/grind` never closes
the parent itself, and no child's PR closes it; GitHub's sub-issue
tracking (or the user) closes it.
2. **Issue list.** Numbers or URLs separated by spaces or commas. Each open
issue becomes a goal.
3. **Free-form goal.** Text that is not an issue reference. Split it into
independent deliverables; one cohesive change stays one goal.
4. **Nothing.** List the repo's open issues (`gh issue list`), excluding
ones with an open linked PR and ones labelled `grind:on-feature` or
`grind:followup`
(`gh issue list --search '-label:grind:on-feature -label:grind:followup'`),
and ask the user which to take.
## Each goal
- `id`: the issue number, or `g1`, `g2`, … for free-form goals.
- `title`: the issue title or a short name.
- `brief`: the issue URL (agents read it themselves) or a self-contained
description of the deliverable with its acceptance criteria.
Order goals so that anything another goal builds on comes first; the
planner makes the dependencies explicit.
Resolve the repository root with `git rev-parse --show-toplevel` and the
default branch from `origin/HEAD` (`main` or `master`).