From frontend-skills
Guides a three-hat adversarial review and documents domain decisions as CONTEXT.md and ADRs. Use for structured domain modeling with parallel product, engineering, and design reviews.
How this skill is triggered — by the user, by Claude, or both
Slash command
/frontend-skills:domain-modelThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Legacy: prefer `/grill-with-docs`. Keep only for backward compatibility with local three-hat workflow.
Legacy: prefer
/grill-with-docs. Keep only for backward compatibility with local three-hat workflow.
Grill + document. Three-hat adversarial review PLUS institutional memory captured inline as CONTEXT.md + ADRs.
Walk every branch of decision tree. Resolve dependencies one-by-one. Each question, give recommended answer. One at time.
If question answerable by exploring codebase, explore first.
USE: Ubiquitous Language | Bounded Contexts | ADRs SKIP: Entities | Value Objects | Aggregates | Domain Events
Goal = "just enough docs" make codebase navigable. Language into software, not patterns into software.
During codebase exploration, look for existing docs:
/
├── CONTEXT.md
├── docs/adr/
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-for-write-model.md
└── src/
/
├── CONTEXT-MAP.md
├── docs/adr/ <- system-wide decisions
├── src/
│ ├── ordering/
│ │ ├── CONTEXT.md
│ │ └── docs/adr/ <- context-specific decisions
│ └── billing/
│ ├── CONTEXT.md
│ └── docs/adr/
Create files lazy -- only when first term resolved or first ADR needed.
Challenge glossary: Term conflict with CONTEXT.md? Call out now.
Sharpen language: Vague or overloaded term? Propose precise canonical term. "You say 'account' -- Customer or User? Different things."
Concrete scenarios: Stress-test relationships with edge cases. Force precision on boundaries.
Cross-reference code: User state how something works -> verify code agrees. Surface contradictions.
Once user present coherent plan + terms resolved, spawn three reviewers in parallel (single message, multiple Agent tool calls):
plan-product-hat: persona, pain, success metric, scope, reversibility, TTVplan-engineering-hat: architecture, error paths, perf, security, test strategy, rollbackplan-design-hat: flow, a11y, copy, visual consistency, states (empty/loading/error)Each emit {reviewer, status, findings[], must_answer[]} per findings-schema.md.
Consolidate all must_answer questions into single list, deduped. Surface to user. User answer each. Plan updated inline.
Update CONTEXT.md inline: Term resolved or scope clarified -> update now. No batch. See CONTEXT-FORMAT.md.
Offer ADRs sparingly: Only when ALL three true: hard reverse, surprising without context, result of real trade-off. See ADR-FORMAT.md.
Any reviewer return status: BLOCKED -> plan no advance until blocking finding addressed or user override.
All hats return APPROVED or user override specific findings -> plan approved -> Phase 3 (Implement).
Skip three-hat fan-out only if:
Else, fan-out mandatory. For a light grill without DDD docs, use /grill-me instead.
npx claudepluginhub redpanda-data/ui-harness --plugin frontend-skillsStress-tests a plan against the existing domain model and documented decisions by interviewing the user one question at a time, sharpening fuzzy terminology, and updating CONTEXT.md and ADRs.
Stress-tests a plan against existing domain models and documentation, sharpening terminology, and updating CONTEXT.md and ADRs inline as decisions crystallize.
Stress-tests plans and terminology against the project's domain model and documented decisions via Socratic questioning. Updates CONTEXT.md and ADRs inline as decisions crystallise.