| name | set-domain-strategy |
| description | Frame a product domain and set its cross-cutting strategy: the domain boundary and brief (_domain/DOMAIN.md), the start/config.json identity, and the vision/KPI/strategy-horizon coherence that spans customers, products, bricks, and teams. Use when defining or reframing a domain's scope, vision, north-star metrics, or 1/3/5-year strategic horizons — the strategy layer that the per-customer productStrategy and team metrics must align to. Registers the domain in run.sh. |
Set Domain Strategy
The framing and cross-cutting strategy skill. Unlike the edit-* skills (one artifact
each), this one sets the domain boundary, identity, and strategic spine that the
other artifacts must stay coherent with. Read
.claude/skills/_references/domain-model.md first, and study two comparable existing
domains plus the reference ride-sharing-marketplace.
Method (what good looks like)
Domain framing
- Inspect adjacent domains before choosing the boundary. Name the domain in business
language, not implementation language.
- Define core scope, adjacent scope, and explicitly excluded scope, and the main
value exchange (who gets value, who pays, who operates, what makes value
repeatable).
- Confirm the domain can support customers, products, 20+ bricks, teams, and a
competition landscape. ID is lowercase hyphen-case; display name is title case.
Cross-cutting strategy
- Set a vision in terms of customer outcomes and business viability.
- Define differentiation, strategic focus, product themes, and major tradeoffs.
- Create 1/3/5-year horizons that show sequencing — not the same theme thrice —
each with focus, product theme, customer KPI (north-star + supporting), and business
KPI. Acknowledge constraints (trust, regulation, liquidity, integration, reliability,
operations) where they bind.
- KPI names must be reused verbatim across
customers.json (kpiPyramids,
productStrategy), teams.json (charter metrics), and insights.json (kpis).
Where strategy lives (this repo has no single strategy file)
| Concern | File |
|---|
| Domain identity (id/name/description) | start/config.json |
| Domain brief / boundary narrative | _domain/DOMAIN.md (narrative markdown, not generated) |
| Per-customer vision & 1/3/5-year horizons | customers/customers.json → each persona's productStrategy (see edit-customers) |
| KPI pyramids (north-star/supporting/diagnostic) | customers/customers.json → kpiPyramids |
| Sourced strategic insights | customers/insights.json |
| Team-level metrics aligned to KPIs | teams/teams.json → teamCharter.metrics |
| Competitive positioning | business/competition.json |
start/config.json
{
"id": "ride-sharing-marketplace",
"name": "Ride Sharing Marketplace",
"description": "The … domain covers …"
}
Registering the domain
Registration is automatic: run.sh discovers every domain that has a
start/config.json with id/name/description. Create that file and you're
generating. Keep the name/description identical to start/config.json.
Working the strategy across artifacts
Because strategy is distributed, setting it means coordinated edits:
- Frame the domain (
_domain/DOMAIN.md, start/config.json, register in run.sh).
- Set per-customer vision/horizons and KPI pyramids via
edit-customers.
- Align team charter metrics via
edit-teams and insights via edit-customers.
- Verify horizons sequence and KPI names match everywhere (use
audit-domain-balance
→ "KPI & strategy coherence").
After editing
python3 .claude/skills/scripts/validate-domain-model.py <domain-id> --strict-ids.
- Regenerate affected areas: at minimum
python3 generate-start-docs.py <domain-id> "<Domain Name>" "<Domain description>"
from _wiring/product-domains/, plus customers/teams generators if you changed
those.
- Report scope decisions, the vision, the horizon sequence, and KPI-name alignment.
Avoid
- Generic growth language; identical horizons repeated across years or personas.
- A domain boundary that's really a whole-company description.
- KPI names that drift between customers, teams, and insights.
- Mismatched id/name/description between
start/config.json and run.sh.