Model/CLAUDE.md
Khalim Conn-Kowlessar cbffae07b8 Annotate locals assigned from cross-module calls in the historic-EPC stack 🟪
Review ask (dancafc): resolver/repository locals now carry explicit types
(matches: list[ScoredHistoricEpc], records: list[HistoricEpc], df:
pd.DataFrame, ...) so the flow reads without chasing callee signatures.
CLAUDE.md's Type Safety section gains the rule so future sessions enforce it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 14:59:13 +00:00

2.2 KiB

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
grill-with-docs /grill-with-docs When domain terms are drifting or new concepts are landing — challenges plans against CONTEXT.md, sharpens terminology inline, and writes ADRs for load-bearing decisions in docs/adr/. Replaces the older ubiquitous-language skill.
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

Domain glossary lives at CONTEXT.md; load-bearing decisions live at docs/adr/. The legacy UBIQUITOUS_LANGUAGE.md is a redirect.

Typical session chains

Feature planning: /grill-me/to-prd/grill-with-docs

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

Refactoring: /improve-codebase-architecture/grill-me/tdd/grill-with-docs

First time setting up?

Skills are installed automatically when the dev container is built, via the postCreate step that pulls from Hestia-Homes/agentic-toolkit (see .devcontainer/backend/Dockerfile). If an existing container is missing skills, rebuild the dev container.

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. Annotate locals assigned from cross-module calls (e.g. matches: list[ScoredHistoricEpc] = rank_historic_epc(...)) — the reader shouldn't need the callee's signature to follow the flow; inference-only locals are fine within a module's own helpers.