ワンクリックで
wtg2
// Generate Wardley Maps in the WTG2 domain-specific language. Use when the user asks to create, design, or describe a Wardley Map, or asks about strategic mapping.
// Generate Wardley Maps in the WTG2 domain-specific language. Use when the user asks to create, design, or describe a Wardley Map, or asks about strategic mapping.
Generate a Wardley Map from a scenario description using a formal mathematical model. Produces OWM-format output (with an optional Mermaid wardley-beta block for GitHub rendering) and strategic analysis grounded in Wardley's cheat sheet, 61 gameplays, and 40 doctrine principles. Use this skill whenever the user asks for strategic reasoning about the components of a business, product, or system — specifically when they mention any of value chain, strategic positioning, competitive landscape, strategic moat, component evolution, genesis-to-commodity spectrum, build-vs-buy across multiple components, where to invest engineering effort, what to commoditise or outsource, mapping a business or platform or marketplace strategically, or explicitly "Wardley map". Always trigger when "Wardley" appears in the request. Also trigger when the user describes a business or system and asks about strategic roadmap, moats, or board-level positioning — even without naming the framework. Skip for flowcharts, UX journey maps, proc
Create strategic Wardley Maps for architecture decisions and build vs buy analysis
Decompose user needs into value chains for Wardley Mapping
Generate a Wardley Map from a scenario description using a formal mathematical model. Produces OWM-format output and strategic analysis grounded in Wardley's cheat sheet, 61 gameplays, and 40 doctrine principles. Use when the user wants a Wardley Map of a system, business, or domain, or asks to "map" something strategically.
| name | wtg2 |
| description | Generate Wardley Maps in the WTG2 domain-specific language. Use when the user asks to create, design, or describe a Wardley Map, or asks about strategic mapping. |
| argument-hint | ["description of the map to generate"] |
You are generating Wardley Maps in the WTG2 domain-specific language. Your output must be a valid .wtg2 file that can be parsed and rendered to SVG.
A Wardley Map is a strategic tool that visualizes a value chain (vertical axis) against the evolution of each component (horizontal axis).
Key principles:
User -> Application -> Database -> Compute.A gameplay is a deliberate action to modify your position on the map. Annotate gameplays on the component that is the target of the maneuver.
| Gameplay | Description | Typical context |
|---|---|---|
ILC | Innovate-Leverage-Commoditize: provide infrastructure, observe what thrives, absorb | Platform with ecosystem |
open-source | Commoditize a layer to capture value in an adjacent layer | Competitor with proprietary rent |
land-grab | Sacrifice profitability for rapid market share | New market with strong network effects |
embrace-extend | Adopt a standard, add proprietary extensions, close ecosystem | Standard you want to control |
tower-moat | Erect barriers: patents, lock-in, closed protocols | Protecting an existing rent |
FUD | Spread fear/uncertainty/doubt to slow competitor adoption | Competitor gaining traction |
strangler-fig | Progressively replace a legacy system by commoditizing non-differentiating layers | Legacy system blocking evolution |
signal-distortion | Mislead competitors about strategic intent | Competitive misdirection |
gameplay ILC on Platform API
gameplay open-source "Commoditize compute to capture AI layer" on Cloud Infra
gameplay strangler-fig on Legacy CRM
Components represent different types of organizational capital. The asset field classifies the nature of the asset (orthogonal to type which classifies sourcing):
| Asset type | Description | Example |
|---|---|---|
tech | Technological capital: code, infrastructure, patents | A routing engine, a data pipeline |
financial | Financial capital: revenue models, pricing power | A billing system, a licensing model |
human | Human capital: expertise, skills, tacit knowledge | An ML engineering team, domain experts |
relational | Relational capital: partnerships, brand, contracts | A partner API, a brand, a patent portfolio |
social | Social/environmental capital: community, regulatory | Open-source community, regulatory compliance |
AI Team : II.3 {
type: build
asset: human
note: "12 ML engineers, hard to replace"
}
Inertia is not just a severity level — it has a nature. The book identifies 5 forms:
| Kind | Meaning | Symptom |
|---|---|---|
tech | Technology lock-in, infrastructure debt | "We've always used Java" |
financial | Sunk costs, established revenue models | "We've invested 5M in this" |
human | Skills gap, identity threat, expertise obsolescence | "Our team doesn't know cloud-native" |
relational | Contractual obligations, partner dependencies | "We have a 3-year vendor contract" |
social | Cultural resistance, regulatory inertia | "That's not how we do things here" |
Component : II.7 !!(tech,human) >> III.5 // tech and human inertia
Component : II.7 !(financial) >> III.5 // financial inertia only
Component : II.7 !!! >> III.5 // unqualified (backward-compatible)
Beyond accelerating/stagnating/declining, mark climatic forces that explain why components evolve:
| Signal | Meaning |
|---|---|
co-evolution | Technology and practice evolving together (e.g., containers + DevOps) |
red-queen | Must evolve constantly just to maintain position |
commoditization | Gravitational pull toward utility/commodity |
network-effects | Value increases with number of users/participants |
economies-of-scale | Cost advantage from volume, favoring consolidation |
signal co-evolution on DevOps Practices
signal commoditization on Cloud Infrastructure
signal network-effects on Social Platform
The Explorer-Villager-Town-planner model aligns team types to evolution phases. Use team: in groups to declare this alignment:
| Team type | Evolution phase | Mindset |
|---|---|---|
explorer / pioneer | Genesis (I) | Discovery, intuition, high failure tolerance |
settler / villager | Custom-Product (II-III) | Productization, standards, analysis |
town-planner | Commodity (IV) | Industrialization, cost optimization, experience-driven |
A mismatch between team type and component evolution phase is a strategic signal worth highlighting.
group R&D Team {
team: explorer
Quantum Algo
}
The book emphasizes that 70-80% of IT budgets go to maintenance. Use cost: to annotate financial context:
Legacy CRM : III.2 {
type: buy
cost: "850k/year, 80% maintenance"
}
A WTG2 document follows this canonical order:
1. Metadata (title, date, author, scope, question, doctrine)
2. Configuration (stages, legend)
3. Nodes (anchors, components, submaps, pipelines)
4. Value chain (edges / dependencies)
5. Groups (visual organization)
6. Annotations (notes, warnings, signals, gameplays, focus)
All sections are optional. Comments can appear anywhere.
// Single-line comment
/* Block comment */
title: My Wardley Map
date: 2026-01-15
author: Strategy Team
scope: B2C mobile platform, European market
question: "Where should we invest to differentiate?"
All metadata fields are optional. The question value should be quoted.
doctrine: context
The doctrine field indicates organizational maturity phase: hygiene, context, excellence, or evolution.
Override the default evolution axis labels (default: I, II, III, IV):
stages: Genesis, Custom, Product, Commodity
Exactly four labels, comma-separated.
Display an auto-generated legend panel to the right of the map. The legend shows only the element types actually present in the map (component types, edges, signals, gameplays, groups, etc.).
legend
The keyword is standalone — no configuration needed. The SVG viewBox is automatically widened to accommodate the legend without distorting the map.
There are three node kinds:
| Keyword | Purpose |
|---|---|
anchor | User or actor — rendered with a person icon, always at the top of the map. Has a position on the evolution axis to control horizontal placement. |
component | Regular component (keyword is optional) |
submap | Encapsulated sub-map shown as a component |
[kind] <name> : <evolution> [(<type>)] [@<visibility>]
The component keyword is optional — a bare name with a position is treated as a component.
Examples:
anchor User
anchor User : III.5
anchor User : II.3 >> III.5
Application : III.5
Database : III.8 (buy)
Infrastructure : IV.3 (buy) @0.2
submap Payment System : III.6
Anchors have a position on the evolution axis that controls their horizontal placement on the map. They are always rendered at the top of the map (vertical position is fixed) with a person icon. Anchors can also have movement (>>) to show a shift in user positioning.
<name> : <evolution> {
type: build
color: #3498DB
note: "Our key differentiator"
}
Block config fields:
| Field | Values |
|---|---|
type | build, buy, outsource |
asset | tech, financial, human, relational, social |
evolution | Evolution expression (e.g., II.7 !! >> III.5) |
color | #RRGGBB or #RGB |
visibility | 0.0 (bottom) to 1.0 (top) |
cost | Free-text cost annotation |
note | Quoted text description |
The horizontal position uses roman numerals with an optional decimal subdivision:
<roman>.<digit>
Where <roman> is I, II, III, or IV, and <digit> is 0-9.
Each phase spans 25% of the axis. The decimal subdivides within the phase (0 = start, 9 = end). Without a decimal, the center of the phase is used.
Position mapping to 0-100 coordinate:
| Position | Coordinate | Meaning |
|---|---|---|
I.0 | 0 | Start of Genesis |
I.5 | 12 | Middle of Genesis |
I.9 | 22 | End of Genesis |
II.0 | 25 | Start of Custom |
II.5 | 37 | Middle of Custom |
II.9 | 47 | End of Custom |
III.0 | 50 | Start of Product |
III.5 | 62 | Middle of Product |
III.9 | 72 | End of Product |
IV.0 | 75 | Start of Commodity |
IV.5 | 87 | Middle of Commodity |
IV.9 | 97 | End of Commodity |
Formula: floor((base + digit/10 * 0.25) * 100) where base is I=0.00, II=0.25, III=0.50, IV=0.75.
Show that a component is evolving from one position to another:
Component : II.7 >> III.5
This renders an arrow from position II.7 to III.5 on the map.
Mark resistance to evolution with ! (1-3 levels), optionally qualified by kind:
Component : II.7 ! >> III.5 // moderate inertia
Component : II.7 !! >> III.5 // strong inertia
Component : II.7 !!! >> III.5 // blocking inertia
Component : II.7 !!(tech,human) >> III.5 // qualified: tech + human inertia
Component : II.7 !(financial) >> III.5 // qualified: financial inertia
Inertia appears between the current position and the >> movement operator. The optional (kind,...) qualifier specifies the nature of the resistance (see "Qualified Inertia" above).
By default, vertical positioning is computed automatically from the dependency graph. Override it with @:
Component : III.5 @0.9 // near top of map
Component : III.5 @0.1 // near bottom of map
Values range from 0.0 (bottom) to 1.0 (top).
Edges define dependencies between components.
A -> B // A depends on B
A <-> B // bidirectional relationship
A -[label text]-> B // annotated dependency
A <-[label text]-> B // annotated bidirectional
All four forms are supported. Annotated bidirectional edges combine <-> with [label].
Edges can be chained:
User -> App -> API -> Database -> Cloud
This creates four edges: User->App, App->API, API->Database, Database->Cloud.
Target a specific member within a pipeline:
Component -> Pipeline:Member
A pipeline shows multiple implementations of a component at different evolution stages:
pipeline <component-name> {
Implementation A : III.5
Implementation B : II.3
Implementation C : I.2
}
Rules:
Visually group components (purely visual, no scoping). Optionally specify team type for EVT/PST alignment:
group Team Name {
Component A
Component B
Component C
}
group R&D Team {
team: explorer
color: #E74C3C
Quantum Algo
Experimental Cache
}
Members must reference existing component names.
Group directives:
| Directive | Values |
|---|---|
color: | #RRGGBB or #RGB |
team: | explorer, settler, town-planner, pioneer, villager |
note "Description text" on Component Name
warning "Risk description" on Component Name
Mark market dynamics and climatic patterns on a component:
signal accelerating on Component Name // moving rapidly toward commodity
signal stagnating on Component Name // evolution has plateaued
signal declining on Component Name // regression in relevance
signal co-evolution on Component Name // technology-practice mutual reinforcement
signal red-queen on Component Name // must evolve to maintain position
signal commoditization on Component Name // gravitational pull toward utility
signal network-effects on Component Name // value grows with adoption
signal economies-of-scale on Component // cost advantage from volume
Annotate strategic maneuvers on a component:
gameplay ILC on Platform API
gameplay open-source "Commoditize to capture adjacent value" on Database Engine
gameplay strangler-fig on Legacy System
gameplay land-grab on New Market
Gameplay types: ILC, open-source, land-grab, embrace-extend, tower-moat, FUD, strangler-fig, signal-distortion.
The quoted description is optional and provides strategic context.
The focus keyword highlights a component and all its descendants in the value chain. Elements outside the focus are rendered with reduced opacity.
focus Recommendation Engine
Multiple focus declarations can be combined — their subtrees are merged:
focus Recommendation Engine
focus Real-Time Personalisation
Focus is useful for presenting a specific part of the map during a discussion or presentation.
Identifiers (component names, group names, etc.):
., -, ', _, and spacesApplication Mobile)Reserved keywords: anchor, component, submap, pipeline, group, note, warning, signal, gameplay, legend, focus, title, date, author, scope, question, stages, doctrine, evolution, type, asset, color, visibility, cost, team, build, buy, outsource, accelerating, stagnating, declining, co-evolution, red-queen, commoditization, network-effects, economies-of-scale, ILC, open-source, land-grab, embrace-extend, tower-moat, FUD, strangler-fig, signal-distortion, explorer, settler, town-planner, pioneer, villager, tech, financial, human, relational, social, on, hygiene, context, excellence
// Wardley Map — GPS Navigation Platform
title: Navigation Platform — 2026 Strategy
date: 2026-01-15
author: Product Strategy Cell
scope: B2C mobile app, European market
question: "Where to invest to differentiate against Google Maps?"
doctrine: context
stages: Genesis, Custom, Product, Commodity
legend
// Anchors
anchor Driver
anchor Local Authority
// Visible layer
Application : III.5
Displayed Route : III.2
Real-Time Traffic Alerts : II.3
// Core engine with qualified inertia and asset/cost
Route Calculation Engine : II.7 !!(tech,human) >> III.5 {
type: build
asset: tech
color: #3498DB
cost: "1.2M/year, 12 FTEs"
note: "Key differentiator"
}
// Pipeline: the engine exists in multiple forms
pipeline Route Calculation Engine {
Classic Dijkstra : III.5
Predictive AI : II.3
Quantum Algo : I.2
}
Cartographic Data Model : III.1 (buy)
B2G Partner API : II.1 {
asset: relational
}
// Infrastructure
OSM Data : III.8 (buy)
Real-Time Sensor Feed : I.8 !(relational) >> II.5 {
type: build
asset: tech
color: #E67E22
cost: "300k/year"
note: "Partnership in progress with Waze/TomTom"
}
Cloud Infrastructure : IV.3 (buy) {
cost: "500k/year, rising 30%"
}
CDN : IV.5 (buy)
Mobile Network : IV.7 (outsource)
submap Payment System : III.6
// Value chain
Driver -> Application -> Displayed Route -> Route Calculation Engine
Application -> Real-Time Traffic Alerts -> Real-Time Sensor Feed
Route Calculation Engine -> Cartographic Data Model -> OSM Data
Route Calculation Engine -> Cloud Infrastructure
Real-Time Sensor Feed -> Cloud Infrastructure
Local Authority -> B2G Partner API -[Open Data, annual license]-> Cartographic Data Model
Local Authority -> Real-Time Traffic Alerts
Application -> CDN -> Cloud Infrastructure
Cloud Infrastructure -> Mobile Network
Application -> Payment System
// Link to specific pipeline member
Real-Time Traffic Alerts -> Route Calculation Engine:Predictive AI
// Groups with team types
group Core Navigation Team {
team: settler
Route Calculation Engine
Predictive AI
Cartographic Data Model
}
group Platform Team {
team: town-planner
Cloud Infrastructure
CDN
Payment System
}
group Data Team {
team: explorer
Real-Time Sensor Feed
OSM Data
Quantum Algo
}
// Annotations
warning "SPOF — no fallback if unavailable" on Route Calculation Engine
warning "Vendor lock-in AWS, cost rising 30%/year" on Cloud Infrastructure
warning "Critical dependency on single supplier" on OSM Data
note "Candidate for outsourcing Q4 2026" on Payment System
note "Partnership signed with 12 cities" on B2G Partner API
note "R&D budget 400k, horizon 2028" on Quantum Algo
// Market signals and climatic patterns
signal accelerating on Predictive AI
signal co-evolution on Real-Time Sensor Feed
signal stagnating on Classic Dijkstra
signal commoditization on Cloud Infrastructure
signal declining on OSM Data
signal red-queen on Application
// Gameplays
gameplay strangler-fig "Replace Classic Dijkstra with Predictive AI" on Route Calculation Engine
gameplay open-source "Commoditize mapping data to reduce dependency" on OSM Data
gameplay ILC on B2G Partner API
// Focus
focus Route Calculation Engine
When generating a WTG2 map:
Start with the user need. Identify the anchor(s) — who is the user/customer? Place them as anchor declarations.
Build the value chain top-down. Ask: "What does the user need?" Then for each component: "What does this component need?" Continue until you reach infrastructure.
Position evolution realistically:
Use (buy) and (outsource) for components you consume rather than build. Leave untyped or use (build) for in-house work.
Mark evolution movement (>>) only for components actively transitioning. Add inertia (!, !!, !!!) when organizational or market resistance slows the transition.
Use pipelines when a component exists in multiple forms at different evolution stages (e.g., legacy vs. modern implementations).
Add annotations sparingly. Use warning for risks and note for strategic observations. Use signal to mark market dynamics.
Group by team or domain to show organizational ownership.
Keep identifiers readable. Use natural language names with spaces, not camelCase or snake_case.
Follow the canonical section order: metadata, stages/legend, nodes, edges, groups, annotations.
Annotate gameplays when the map represents a competitive strategy. Ask: "What maneuver is being applied to which component?" Use gameplay to make strategic intent explicit.
Classify asset types for components where the strategic value is non-obvious. A database is tech capital; a brand is relational capital; a specialized team is human capital.
Qualify inertia beyond severity. When marking !!, ask: "Is this technical debt (tech), sunk cost (financial), skills gap (human), contractual lock-in (relational), or cultural resistance (social)?"
Apply climatic patterns to explain evolutionary forces. Components in phase III with many dependents should likely have signal commoditization. Use signal co-evolution when a practice and technology evolve together.
Align teams to evolution phases. When defining groups with team:, verify that explorer teams own Genesis-phase components and town-planner teams own Commodity-phase components. Highlight mismatches as strategic risks.
Annotate cost for components consuming significant budget. This enables run/change ratio analysis across the value chain. Use cost: in block config.
Before finalizing a map, verify:
>>) or a signal