---
name: to-project
description: Create a GitHub Project (v2) for the issues just produced by /to-issues, configure the Status field schema the agentic-toolkit runner expects, and set initial statuses (AFK no-blockers → Ready, AFK with blockers → Backlog, HITL → Needs human). Use after /to-issues to make a project the runner can execute against.
---

# To Project

Create a repo-level GitHub Project (v2) from the issues `/to-issues` just produced, and prepare it so the Domna agentic-toolkit runner can execute against it without further configuration.

The issue tracker and issue numbers should already be known from the conversation context (the most recent `/to-issues` run). If they aren't, ask the user for the issue numbers explicitly.

## Process

### 1. Gather context

Confirm with the user:

- **Project name** — defaults to the PRD title if a PRD is in context.
- **Project description** — defaults to a one-line summary of the PRD.
- **Repo** — the repo that owns the project. Defaults to the current `gh` repo.
- **Issue set** — the issue numbers to add. Defaults to issues created in the most recent `/to-issues` run.

### 2. Create the project

Use `gh project create` (or the GraphQL `createProjectV2` mutation) at the repo level. Project visibility defaults to whatever the repo's default is. Capture the project number and node id from the response.

### 3. Configure the Status field

The runner requires a single-select field named **`Status`** with these options, in this order:

1. `Backlog`
2. `Ready`
3. `In progress`
4. `In review`
5. `Needs human`
6. `Done`

If the project came with a default `Status` field, replace its options to match exactly — extra options are fine; missing ones must be added. If no `Status` field exists, create one.

### 4. Add issues to the project

For each issue in the issue set, add it to the project as an item.

### 5. Set initial statuses

For each issue, decide the starting status based on its labels and `Blocked by` references:

| Issue properties                                | Starting status |
|-------------------------------------------------|------------------|
| Has `hitl` or `ready-for-human` label           | `Needs human`    |
| Has `Blocked by` references to issues *in this set* | `Backlog`        |
| Otherwise (AFK, no remaining blockers)          | `Ready`          |

Apply the status via the `updateProjectV2ItemFieldValue` mutation.

### 6. Comment on each issue

For each issue in the project, post a comment linking back to the project URL so the issue page shows the project context. One sentence is enough; example:

> Tracked in project: <project URL>

### 7. Confirm to the user

Print:

- Project URL
- Number of issues added, broken down by initial status (e.g. "3 Ready, 2 Backlog, 1 Needs human")
- Suggested next command, e.g.:
  ```
  cd path/to/agentic-toolkit
  GITHUB_TOKEN=... npx . run --project <N> --mode per-ticket --owner <OWNER> --repo <REPO> --target-repo <TARGET>
  ```

## Notes

- The project is repo-level, not org-level, by design (smaller blast radius, simpler permissions). If you need a cross-repo project, do it manually for now.
- Projects created by this skill are intended to be short-lived: scoped to one PRD's worth of work, archived or deleted on completion.
- The runner's `setStatus` calls assume the option names listed above. Don't rename or translate them.
