---
name: to-issues
description: >-
  Break a plan or feature into vertical-slice GitHub issues. Each issue is a
  tracer bullet: independently deliverable, testable, and mergeable.
  Use when decomposing work from ROADMAP.md, a PRD, or a conversation.
---

# Plan to Issues

Turn the current plan into a set of vertical-slice GitHub issues ready for
implementation.

## Workflow

### 1. Understand the Plan

If the plan is vague, interview the user briefly (max 3 questions) to clarify
scope and boundaries. Check ROADMAP.md and existing issues for overlap.

### 2. Slice Vertically

Each issue must be a **tracer bullet**: a thin vertical slice that:

- Touches all necessary layers (domain → application → infrastructure → entry point)
- Is independently testable and mergeable
- Delivers observable value (even if small)

**Anti-pattern:** Horizontal slices like "add all domain entities", "add all tests",
"wire DI for everything". These delay feedback.

### 3. Order by Dependencies

Number issues in implementation order. Earlier issues should unblock later ones.
First issue should be the **thinnest possible end-to-end** path (the tracer bullet).

### 4. Format Each Issue

```markdown
## Title

feat(scope): concise description

## Description

What this slice delivers and why it matters independently.

## Acceptance Criteria

- [ ] Criterion using Should/When language
- [ ] Tests pass: `{test command}`
- [ ] Lint passes: `{lint command}`

## Technical Notes

- Affected files/modules
- Key design decisions (reference ADRs if applicable)
- Dependencies on other issues (if any)
```

### 5. Present for Approval

Show the full issue list as a numbered table before creating anything:

```text
| # | Title | Scope | Depends On |
|---|-------|-------|------------|
| 1 | feat(sdk-dotnet): add ISecretProvider port | Domain | n/a |
| 2 | feat(sdk-dotnet): implement AWS SSM provider | Infra | #1 |
```

Wait for user confirmation. Then create issues via `gh issue create`.

## Rules

- **Max 8 issues per plan**: if more are needed, split into phases
- **Each issue ≤ 1 day of work**: if larger, slice thinner
- Use Conventional Commit format for titles
- Reference ADRs in technical notes when relevant
- Label issues with `needs-triage` unless user specifies otherwise
