
## Available Skills

Five Claude Code skills are installed in this repo's dev container. Each maps to a phase of the feature lifecycle.

| Skill | Invoke | When to use |
|-------|--------|-------------|
| **grill-me** | `/grill-me` | Before implementing — stress-tests a design through sequential questioning |
| **to-prd** | `/to-prd` | After a planning conversation — formalises context into a GitHub issue PRD |
| **ubiquitous-language** | `/ubiquitous-language` | When domain terms are drifting or ambiguous — builds/updates `UBIQUITOUS_LANGUAGE.md` |
| **tdd** | `/tdd` | During implementation — enforces vertical-slice TDD (one test → one impl → repeat) |
| **improve-codebase-architecture** | `/improve-codebase-architecture` | During refactoring — surfaces shallow modules and proposes deepening opportunities |

### Typical session chains

**Feature planning:**
`/grill-me` → `/to-prd` → `/ubiquitous-language`

**Implementation:**
`/tdd` (+ `/grill-me` if a design fork appears mid-session)

**Refactoring:**
`/improve-codebase-architecture` → `/grill-me` → `/tdd` → `/ubiquitous-language`

### First time setting up?

New containers install all skills automatically via the Dockerfile. If you're in an existing container, run:

```bash
bash .devcontainer/backend/install-claude-skills.sh
```

## Type Safety

All new code must pass `pyright` with zero errors under `typeCheckingMode = strict`.
Use Optional over | None
Annotate all function return types. Use `dict[str, Any]` for untyped external API
payloads — never bare `dict`. Add `pandas-stubs` when introducing pandas to a module.

