skills/arckit-wardley/SKILL.md
Create strategic Wardley Maps for architecture decisions and build vs buy analysis
npx skillsauth add tractorjuice/arckit-codex arckit-wardleyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert enterprise architect and Wardley Mapping strategist helping create strategic maps for architecture decisions, build vs buy analysis, vendor evaluation, and UK Government procurement strategy.
Wardley Mapping is a strategic situational awareness technique that maps:
| Stage | Evolution | Characteristics | Strategic Action | |-------|-----------|-----------------|------------------| | Genesis | 0.00-0.25 | Novel, uncertain, rapidly changing | Build only if strategic differentiator, R&D focus | | Custom | 0.25-0.50 | Bespoke, emerging practices, competitive advantage | Build vs Buy critical decision, invest in IP | | Product | 0.50-0.75 | Products with feature differentiation, maturing market | Buy from vendors, compare features, standardize | | Commodity | 0.75-1.00 | Utility, standardized, industrialized | Always use commodity/cloud, never build |
$ARGUMENTS
--tidy-owm — after building the OWM map, auto-place its component label [x, y]
offsets so labels do not overlap when rendered at https://create.wardleymaps.ai.
Opt-in: the OWM block is the canonical, author-edited source, so it is never
rewritten silently. See the Tidy OWM labels step in the Mermaid Wardley
Map procedure for where this runs. (The Mermaid wardley-beta block is always
tidied automatically by the tidy-wardley-labels.mjs hook on write —
--tidy-owm is only about the OWM block.)Note: Before generating, scan
projects/for existing project directories. For each project, list allARC-*.mdartifacts, checkexternal/for reference documents, and check000-global/for cross-project policies. If no external docs exist but they would improve output, ask the user.
MANDATORY (warn if missing):
$arckit-principles first$arckit-requirements firstRECOMMENDED (read if available, note if missing):
OPTIONAL (read if available, skip silently if missing):
projects/{current_project}/wardley-maps/ — Extract: Previous strategic analysis, evolution predictionsUnderstand the Mapping Goal:
external/ files) — extract existing component positions, evolution assessments, strategic plays, market contextprojects/000-global/external/ — extract enterprise technology landscape maps, market analysis reports, cross-project strategic contextprojects/{project-dir}/external/ and re-run, or skip.".arckit/references/citation-instructions.md. Place inline citation markers (e.g., [PP-C1]) next to findings informed by source documents and populate the "External References" section in the template.Based on the user's request, determine which type of Wardley Map to create:
Purpose: Understand the current system landscape and dependencies
When to Use:
Output: Map showing current components, their evolution stages, dependencies, and inertia points
Purpose: Visualize the target architecture and evolution path
When to Use:
Output: Map showing desired future components, evolution targets, and migration paths
Purpose: Compare current state vs future state to identify actions needed
When to Use:
Output: Side-by-side comparison showing components to build, buy, migrate, or decommission
Purpose: Compare vendor proposals against strategic positioning
When to Use:
Requirements:
projects/{project}/vendors/{vendor-name}/proposal.pdf or .mdOutput: Multiple maps showing each vendor's approach, with strategic analysis
Purpose: Guide UK Government Digital Marketplace procurement strategy
When to Use:
Output: Map with components color-coded by procurement strategy (build, G-Cloud, DOS, reuse GOV.UK services)
From requirements and architecture context, identify components and classify by:
Visibility (Y-axis: 0.0-1.0):
Evolution (X-axis: 0.0-1.0):
Example: Benefits Eligibility Chatbot (UK Government)
User Need: "Check benefits eligibility" [0.95, 0.20] (Genesis - novel user need)
Capability: "Conversational AI" [0.85, 0.35] (Custom - emerging capability)
Component: "GPT-4 Integration" [0.68, 0.72] (Product - commercial LLM)
Component: "Human Review Queue" [0.65, 0.45] (Custom - bespoke workflow)
Component: "Benefits Rules Engine" [0.55, 0.42] (Custom - domain-specific)
Component: "GOV.UK Notify" [0.45, 0.92] (Commodity - government utility)
Component: "Authentication (GOV.UK Verify)" [0.38, 0.68] (Product - government product)
Component: "Cloud Hosting (AWS)" [0.22, 0.95] (Commodity - cloud utility)
Component: "Database (RDS)" [0.18, 0.92] (Commodity - cloud utility)
Generate the Wardley Map using OnlineWardleyMaps syntax for https://create.wardleymaps.ai:
title {Map Title}
anchor {Anchor Component} [0.95, 0.63]
component {Component Name} [visibility, evolution]
{Component Name} -> {Dependency Name}
pipeline {Component Name} [visibility, evolution_start, evolution_end]
{Pipeline Component} -> {Dependency}
evolve {Component Name} {target_evolution} label {label text}
annotation 1 [visibility, evolution] {annotation text}
note {note text} [visibility, evolution]
style wardley
Syntax Rules:
ComponentA -> ComponentB means A depends on Bevolve ComponentName 0.85 label Target Statepipeline to show components moving through evolution stagesAfter generating the OWM code block, generate the Mermaid wardley-beta equivalent by running the bundled converter rather than re-emitting the syntax by hand. Hand-rolled wardley-beta is brittle across Mermaid versions: 11.14.0 tokenises hyphens as ->, 11.15.0 fixes hyphenated names but still requires care around bare numeric words (NIS 2031), keyword prefixes (label, evolve, pipeline), slashes, dots, and other punctuation. The converter resolves this by emitting every name as a double-quoted STRING for cross-version compatibility, and it also handles pipeline child detection, evolve-label stripping, and sourcing-decorator pass-through.
Procedure:
Write the OWM block (exactly as it will appear in the artifact's primary code block) to a temp file:
cat > /tmp/arckit-wardley.owm <<'OWM'
title …
anchor …
component …
…
build CustomComponent
buy CommodityComponent
outsource VendorComponent
…
style wardley
OWM
(build), (buy), (outsource)) on the Mermaid output, include matching build <Name> / buy <Name> / outsource <Name> lines in the OWM source. The converter reads them and emits the decorator next to the component declaration; it strips them from the Mermaid output (they are OWM-only directives).inertia on the component line in OWM (component Foo [v, e] inertia); the converter appends (inertia) automatically.1a. Tidy OWM labels — only if --tidy-owm was passed in $ARGUMENTS. Rewrite the
temp file's component label [x, y] offsets so labels do not overlap when rendered
at https://create.wardleymaps.ai:
node .arckit/hooks/owm-tidy.mjs /tmp/arckit-wardley.owm
This rewrites /tmp/arckit-wardley.owm in place. Collision-free authored offsets
are kept; only overlapping or untuned labels are moved. The tidied temp file then
becomes both the artifact's primary ```wardley block and the converter input
below, so the OWM and Mermaid blocks stay consistent. If --tidy-owm was not
passed, skip this step and use the OWM block as authored.
Run the converter and capture the output:
node .arckit/scripts/owm-to-mermaid.mjs /tmp/arckit-wardley.owm
Place the converter output verbatim inside a <details> block fenced with ```mermaid:
<details>
<summary>Mermaid Wardley Map</summary>
```mermaid
<converter stdout>
</details>
```
Do not re-author the wardley-beta block by hand. If the converter output is missing something the source OWM expressed, fix the OWM input and re-run — do not edit the Mermaid output directly. Manually check that the OWM source and Mermaid output stay consistent after conversion.
For each component, determine:
Build vs Buy Decision:
Inertia Factors:
Evolution Velocity:
Risk Assessment:
Mathematical Strategic Metrics (from tractorjuice/wardleymap_math_model):
Compute these metrics for each component and include a summary table in the output:
Validation: The metrics must be consistent with the strategic recommendations. A component with high D flagged as "Buy" or a component with high K flagged as "Build" indicates a positioning or strategy error — review and correct.
If the search-records tool from the Pinecone MCP is available, use it to search the Wardley Mapping book corpus for relevant strategic context. This index contains Simon Wardley's complete published works — doctrine, case studies, strategic plays, and evolution analysis.
For each major strategic question in the map, search for relevant passages:
Cite relevant passages in the strategic analysis sections. If the Pinecone tools are not available, skip this step silently — the local reference files below provide core patterns.
To deepen strategic analysis beyond build vs buy, read and apply these reference files:
.arckit/skills/wardley-mapping/references/doctrine.md — Score the organization's doctrine maturity (communication, development, operation, learning, leading) and identify weaknesses that affect strategic execution..arckit/skills/wardley-mapping/references/gameplay-patterns.md — Identify applicable offensive patterns (tower & moat, ecosystem, open source play) and defensive patterns. Flag anti-patterns (legacy trap, premature innovation)..arckit/skills/wardley-mapping/references/climatic-patterns.md — Assess external forces (everything evolves, co-evolution, efficiency enables innovation, inertia, technology waves) and their impact on each component..arckit/skills/wardley-mapping/references/mapping-examples.md — Use worked examples (E-Commerce, DevOps Platform, ML Product) as positioning benchmarks for common component types.Include a Doctrine Assessment Summary, Applicable Gameplay Patterns, and Climatic Pattern Analysis section in the output document.
If this is a UK Government project, add:
Map reusable GOV.UK services as commodity/product components:
component GOV.UK Notify [0.45, 0.92]
component GOV.UK Pay [0.42, 0.90]
component GOV.UK Design System [0.72, 0.75]
component GOV.UK PaaS [0.28, 0.85]
component GOV.UK Verify [0.38, 0.68]
Strategic Recommendation: Always use GOV.UK services where available (avoid building custom alternatives)
For each component, recommend procurement route:
| Component | Evolution | Procurement Route | Framework | |-----------|-----------|-------------------|-----------| | Genesis (< 0.25) | Build in-house OR DOS Outcomes (discovery + build) | DOS Outcomes | | Custom (0.25-0.50) | DOS Outcomes (if strategic) OR G-Cloud (if product exists) | DOS Outcomes / G-Cloud | | Product (0.50-0.75) | G-Cloud (commercial products) | G-Cloud | | Commodity (> 0.75) | G-Cloud (cloud services: AWS, Azure, GCP) | G-Cloud |
Map components to TCoP points:
If project includes AI components:
Create the Wardley Map document using the template:
File Location: projects/{project_number}-{project_name}/wardley-maps/ARC-{PROJECT_ID}-WARD-{NNN}-v1.0.md
Naming Convention:
ARC-001-WARD-001-v1.0.md - First map (e.g., current state)ARC-001-WARD-002-v1.0.md - Second map (e.g., future state)ARC-001-WARD-003-v1.0.md - Third map (e.g., gap analysis)Read the template (with user override support):
.arckit/templates-custom/wardley-map-template.md exists in the project root.arckit/templates/wardley-map-template.md (default)Tip: Users can customize templates with
$arckit-customize wardley
CRITICAL - Auto-Populate Document Control Fields:
Before completing the document, populate ALL document control fields in the header:
Construct Document ID:
ARC-{PROJECT_ID}-WARD-{NNN}-v{VERSION} (e.g., ARC-001-WARD-001-v1.0){NNN}: Check existing files in wardley-maps/ and use the next number (001, 002, ...)Populate Required Fields:
Auto-populated fields (populate these automatically):
[PROJECT_ID] → Extract from project path (e.g., "001" from "projects/001-project-name")[VERSION] → "1.0" (or increment if previous version exists)[DATE] / [YYYY-MM-DD] → Current date in YYYY-MM-DD format[DOCUMENT_TYPE_NAME] → "Wardley Map"ARC-[PROJECT_ID]-WARD-v[VERSION] → Construct using format above[COMMAND] → "arckit.wardley"User-provided fields (extract from project metadata or user input):
[PROJECT_NAME] → Full project name from project metadata or user input[OWNER_NAME_AND_ROLE] → Document owner (prompt user if not in metadata)[CLASSIFICATION] → Default to ${user_config.default_classification}; if unavailable, use "OFFICIAL" for UK Gov, "PUBLIC" otherwise (or prompt user)Calculated fields:
[YYYY-MM-DD] for Review Date → Current date + 30 daysPending fields (leave as [PENDING] until manually updated):
[REVIEWER_NAME] → [PENDING][APPROVER_NAME] → [PENDING][DISTRIBUTION_LIST] → Default to "Project Team, Architecture Team" or [PENDING]Populate Revision History:
| 1.0 | {DATE} | ArcKit AI | Initial creation from `$arckit-wardley` command | [PENDING] | [PENDING] |
Populate Generation Metadata Footer:
The footer should be populated with:
**Generated by**: ArcKit `$arckit-wardley` command
**Generated on**: {DATE} {TIME} GMT
**ArcKit Version**: {ARCKIT_VERSION}
**Project**: {PROJECT_NAME} (Project {PROJECT_ID})
**AI Model**: [Use actual model name, e.g., "claude-sonnet-4-5-20250929"]
**Generation Context**: [Brief note about source documents used]
The Wardley Map document must include:
Map Visualization Code:
wardley-beta equivalent in collapsible <details> block with sourcing decorators (build/buy/outsource/inertia)Component Inventory:
Evolution Analysis:
Build vs Buy Analysis:
Inertia and Barriers:
Movement and Predictions:
UK Government Context (if applicable):
Dependencies and Value Chain:
Risk Analysis:
Recommendations:
Traceability:
If required artifacts don't exist, recommend creating them first:
# If no requirements exist
"I recommend running `$arckit-requirements` first to establish requirements before creating a Wardley Map."
# If no architecture principles exist
"I recommend running `$arckit-principles` first to establish architecture principles."
Recommend next steps based on map insights:
# If map shows many commodity components
"Based on your Wardley Map, I recommend running `$arckit-sow` to create an RFP for vendor procurement."
# If map shows build vs buy decisions needed
"Your map identifies several build vs buy decisions. Consider running `$arckit-evaluate` to compare vendor options."
# If map shows UK Government project
"As a UK Government project, I recommend running `$arckit-tcop` to assess Technology Code of Practice compliance."
# If map shows AI components with HIGH-RISK
"Your map includes HIGH-RISK AI components. I recommend running `$arckit-ai-playbook` and `$arckit-atrs`."
When HLD/DLD review is requested, reference the Wardley Map:
"$arckit-hld-review Review HLD against Wardley Map strategic positioning"
The design review should validate:
The $arckit-analyze command should include Wardley Map validation:
User Request: "Create a Wardley Map for the DWP Benefits Eligibility Chatbot showing current state and procurement strategy"
Context:
Wardley Map Code:
title DWP Benefits Eligibility Chatbot - Procurement Strategy
anchor Citizen [0.95, 0.63]
annotation 1 [0.35, 0.25] HIGH-RISK AI - Human oversight mandatory
annotation 2 [0.85, 0.92] Use GOV.UK services - don't build
annotation 3 [0.48, 0.45] Build custom - competitive advantage
note G-Cloud procurement for commodity/product components [0.75, 0.15]
component Citizen [0.95, 0.20]
component Benefits Eligibility Guidance [0.92, 0.25]
component Conversational Interface [0.85, 0.38]
component Human Review Queue [0.82, 0.45]
component GPT-4 LLM Service [0.68, 0.72]
component Benefits Rules Engine [0.65, 0.42]
component Bias Testing Framework [0.62, 0.35]
component GOV.UK Notify [0.55, 0.92]
component GOV.UK Design System [0.72, 0.75]
component Authentication [0.48, 0.68]
component DWP Benefits Database [0.45, 0.52]
component Cloud Hosting AWS [0.28, 0.95]
component PostgreSQL RDS [0.25, 0.92]
Citizen -> Benefits Eligibility Guidance
Benefits Eligibility Guidance -> Conversational Interface
Benefits Eligibility Guidance -> Human Review Queue
Conversational Interface -> GPT-4 LLM Service
Conversational Interface -> Benefits Rules Engine
Human Review Queue -> GOV.UK Notify
Conversational Interface -> GOV.UK Design System
Conversational Interface -> Authentication
Benefits Rules Engine -> DWP Benefits Database
Benefits Rules Engine -> Bias Testing Framework
GPT-4 LLM Service -> Cloud Hosting AWS
DWP Benefits Database -> PostgreSQL RDS
PostgreSQL RDS -> Cloud Hosting AWS
pipeline Benefits Eligibility Guidance [0.92, 0.25, 0.55]
evolve GPT-4 LLM Service 0.85 label Commoditizing fast
evolve Benefits Rules Engine 0.68 label Move to product in 18m
style wardley
<details>
<summary>Mermaid Wardley Map</summary>
wardley-beta
title DWP Benefits Eligibility Chatbot - Procurement Strategy
size [1100, 800]
anchor Citizen [0.95, 0.63]
component Benefits Eligibility Guidance [0.92, 0.25] (build)
component Conversational Interface [0.85, 0.38] (build)
component Human Review Queue [0.82, 0.45] (build)
component "GPT-4 LLM Service" [0.68, 0.72] (buy)
component Benefits Rules Engine [0.65, 0.42] (build)
component Bias Testing Framework [0.62, 0.35] (build)
component "GOV.UK Notify" [0.55, 0.92] (buy)
component "GOV.UK Design System" [0.72, 0.75] (buy)
component Authentication [0.48, 0.68] (buy)
component DWP Benefits Database [0.45, 0.52] (build) (inertia)
component Cloud Hosting AWS [0.28, 0.95] (buy)
component PostgreSQL RDS [0.25, 0.92] (buy)
Citizen -> Benefits Eligibility Guidance
Benefits Eligibility Guidance -> Conversational Interface
Benefits Eligibility Guidance -> Human Review Queue
Conversational Interface -> "GPT-4 LLM Service"
Conversational Interface -> Benefits Rules Engine
Human Review Queue -> "GOV.UK Notify"
Conversational Interface -> "GOV.UK Design System"
Conversational Interface -> Authentication
Benefits Rules Engine -> DWP Benefits Database
Benefits Rules Engine -> Bias Testing Framework
"GPT-4 LLM Service" -> Cloud Hosting AWS
DWP Benefits Database -> PostgreSQL RDS
PostgreSQL RDS -> Cloud Hosting AWS
pipeline Benefits Eligibility Guidance {
component "Text-Based Guidance" [0.25]
component Conversational AI Guidance [0.55]
}
evolve "GPT-4 LLM Service" 0.85
evolve Benefits Rules Engine 0.68
note "HIGH-RISK AI - Human oversight mandatory" [0.35, 0.25]
note "Use GOV.UK services - do not build" [0.85, 0.92]
note "G-Cloud procurement for commodity/product" [0.75, 0.15]
annotations [0.05, 0.05]
annotation 1,[0.48, 0.45] "Build custom - competitive advantage"
</details>
Strategic Analysis:
Build (Genesis/Custom):
Buy - Product (G-Cloud):
Buy - Commodity (G-Cloud):
Reuse (GOV.UK Services):
Procurement Strategy:
HIGH-RISK AI Requirements:
Next Steps:
$arckit-sow to create RFP for G-Cloud procurement (AWS, GPT-4, Auth0)$arckit-ai-playbook to complete AI Playbook assessment$arckit-atrs to generate ATRS record$arckit-tcop to validate TCoP compliance (Cloud First, Open Standards, Reuse)✅ Good Wardley Maps:
❌ Poor Wardley Maps:
Misclassifying Evolution Stage:
Ignoring Dependencies:
Wrong Build vs Buy Decisions:
UK Government Specific Mistakes:
AI Project Mistakes:
Always remind users:
"View this map by pasting the code into https://create.wardleymaps.ai"
The visualization helps:
< or > (e.g., < 3 seconds, > 99.9% uptime) to prevent markdown renderers from interpreting them as HTML tags or emojiBefore writing the file, read .arckit/references/quality-checklist.md and verify all Common Checks plus the WARD per-type checks pass. Fix any failures before proceeding.
Generate a comprehensive Wardley Map document saved to:
projects/{project_number}-{project_name}/wardley-maps/ARC-{PROJECT_ID}-WARD-{NUM}-v{VERSION}.md
The document must be:
After creating the map, provide a summary to the user:
Summary Message:
✅ Wardley Map Created: {map_name}
📁 Location: projects/{project}/wardley-maps/ARC-{PROJECT_ID}-WARD-{NUM}-v{VERSION}.md
🗺️ View Map: Paste the Wardley code into https://create.wardleymaps.ai
📊 Key Insights:
- {insight_1}
- {insight_2}
- {insight_3}
💡 Build vs Buy Recommendations:
- BUILD: {components} (Genesis/Custom with competitive advantage)
- BUY: {components} (Product/Commodity with mature market)
- REUSE: {components} (GOV.UK services)
⚠️ High-Risk Areas:
- {risk_1}
- {risk_2}
🎯 Next Steps:
- {action_1}
- {action_2}
- {action_3}
🔗 Recommended Commands:
- $arckit-sow - Generate RFP for vendor procurement
- $arckit-tcop - Assess Technology Code of Practice compliance
- $arckit-ai-playbook - Assess AI Playbook compliance (if AI components)
Remember: Wardley Mapping is about situational awareness and strategic decision-making. The map quality matters less than the strategic insights and decisions it enables.
After completing this command, consider running:
$arckit-roadmap -- Create strategic roadmap from evolution analysis$arckit-strategy -- Synthesise Wardley insights into architecture strategy$arckit-research -- Research vendors for Custom-Built components (when Custom-Built components identified that need market research)$arckit-wardley-doctrine -- Assess organizational doctrine maturity$arckit-wardley-gameplay -- Identify strategic plays from the map$arckit-wardley-climate -- Assess climatic patterns affecting componentstools
Procurement market intelligence — award-value benchmarks, top suppliers, incumbency and concentration, from the UK Tenders MCP
tools
Competitor landscape — rival suppliers, awarded-value market share, head-to-head and concentration, from the UK Tenders MCP
development
[COMMUNITY] Generate a SOCI Act Critical Infrastructure Risk Management Program (CIRMP) governance and evidence pack for Australian critical infrastructure assets.
development
[COMMUNITY] Generate an ASD operational technology cyber security assessment for Australian Government and critical-infrastructure projects with connected OT environments.