diff --git a/.devcontainer/backend/Dockerfile b/.devcontainer/backend/Dockerfile index a92d37f6..983670e4 100644 --- a/.devcontainer/backend/Dockerfile +++ b/.devcontainer/backend/Dockerfile @@ -86,10 +86,16 @@ USER ${USER} # Bootstrap LazyVim starter config RUN git clone https://github.com/LazyVim/starter /home/${USER}/.config/nvim \ && rm -rf /home/${USER}/.config/nvim/.git -# Install Claude +# Install Claude + plugins RUN curl -fsSL https://claude.ai/install.sh | bash \ && export PATH="/home/${USER}/.local/bin:${PATH}" \ && claude plugin marketplace add JuliusBrussee/caveman \ - && claude plugin install caveman@caveman + && claude plugin install caveman@caveman \ + && claude plugin marketplace add mattpocock/skills \ + && claude plugin install skills@grill-me \ + && claude plugin install skills@to-prd \ + && claude plugin install skills@ubiquitous-language \ + && claude plugin install skills@tdd \ + && claude plugin install skills@improve-codebase-architecture ENV PATH="/home/vscode/.local/bin:${PATH}" USER root diff --git a/.devcontainer/backend/install-claude-skills.sh b/.devcontainer/backend/install-claude-skills.sh new file mode 100755 index 00000000..71727e4d --- /dev/null +++ b/.devcontainer/backend/install-claude-skills.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# Run this in an existing container to install the mattpocock skills +# without rebuilding the image. New containers get them automatically via Dockerfile. +set -euo pipefail + +echo "Installing Claude Code skills (mattpocock/skills)..." + +claude plugin marketplace add mattpocock/skills +claude plugin install skills@grill-me +claude plugin install skills@to-prd +claude plugin install skills@ubiquitous-language +claude plugin install skills@tdd +claude plugin install skills@improve-codebase-architecture + +echo "Done. Available: /grill-me /to-prd /ubiquitous-language /tdd /improve-codebase-architecture" diff --git a/CLAUDE.md b/CLAUDE.md index de2917f2..263679ff 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,3 +28,34 @@ You MUST read the overview resource to understand the complete workflow. The inf +## 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 +``` + diff --git a/UBIQUITOUS_LANGUAGE.md b/UBIQUITOUS_LANGUAGE.md new file mode 100644 index 00000000..3f2c3fe3 --- /dev/null +++ b/UBIQUITOUS_LANGUAGE.md @@ -0,0 +1,9 @@ +# Ubiquitous Language + +Domain terminology glossary for this project. Generated and maintained by the `/ubiquitous-language` Claude Code skill. + +Invoke `/ubiquitous-language` in any session to extract new terms from the conversation, flag ambiguities, and update this file with canonical definitions. + +--- + +