Deliberate API contract design before a line of implementation code is written.
Triggered when an API change is requested or analysis.md has API Changes.
When NOT to use: Internal method signatures, test helper APIs, or any interface that isn't crossed over HTTP.
DOMAIN_DICTIONARY.md.claude/feature-workspace/analysis.mddocs/api/[resource].openapi.yaml (or append to existing spec).claude/feature-workspace/openapi-[resource].yaml and .claude/feature-workspace/api-design-notes.md
# API Design Notes: [Resource]
## Design Decisions
| Decision | Rationale |
|---|---|
| POST /sessions not /login | Resource-oriented — session is the resource |
| 429 with Retry-After | Communicates lockout duration without revealing account state |
## Security Surface
- [Auth required: yes/no + mechanism]
- [User enumeration risk: addressed how]
- [Rate limiting: yes/no + threshold]
## Breaking Change Assessment
- Additive only: yes/no
- Breaking changes: [list — requires version bump]
## Sunday Framework Mapping
- Client class: `[ClassName]` extends `BaseApiClient`
- Zod schema: `[SchemaName]` validates response shape
- Auth provider: `[Provider]`
Pure design reasoning. No external tools required. Produces YAML spec locally.