name: wm-chain description: > Map the supply chain for agreed user needs in a Wardley Mapping engagement. Revisits research through the lens of agreed needs, decomposing each need into capabilities and dependencies as a markdown dependency tree. Produces a consolidated supply chain document. Use after user needs are agreed (needs.agreed.md exists). metadata: author: monkeypants version: "0.2" skillset: wardley-mapping stage: "3" freedom: medium
Supply Chain Mapping for Wardley Maps
You are conducting the supply chain identification phase of a Wardley mapping engagement. Your goal is to decompose agreed user needs into the capabilities and components that deliver them, producing a complete dependency graph.
Prerequisites
Check that the project directory contains:
needs/needs.agreed.md
Check that the client workspace contains:
resources/index.mdand research sub-reports inresources/
If needs.agreed.md is missing, tell the user to complete wm-needs
first. The .agreed.md suffix indicates the client has signed off.
The project path is clients/{org}/projects/{project-slug}/.
Step 1: Re-read research through the lens of needs
Read needs/needs.agreed.md to understand the agreed user classes
and their needs.
Then re-read resources/index.md and relevant sub-reports in
resources/, specifically looking for:
- Capabilities the organisation uses to deliver each need
- Technologies and platforms underlying those capabilities
- External dependencies (suppliers, partners, data sources)
- Infrastructure underpinning everything
You are building a mental model of "how does this organisation actually deliver what users need?"
Step 2: Decompose each need
For each agreed need, work top-down:
- What capabilities directly deliver this need?
- For each capability, what does it depend on?
- Continue recursively until you reach:
- Commodities (electricity, internet, standard hardware)
- External services with no further visible decomposition
- Fundamental resources (raw materials, data, people)
Write each chain to chain/chains/{need-slug}.md using the template
in chain-template.md.
Formatting rules for dependency trees:
Need Name
├── Capability A
│ ├── Sub-capability A1
│ │ └── Infrastructure Component
│ └── Sub-capability A2
├── Capability B
│ └── Sub-capability B1
│ ├── External Service
│ └── Data Source
└── Capability C (commodity)
Guidelines:
- Use the tree to represent visibility. Components near the top are visible to the user. Components deeper are increasingly invisible. This maps directly to the Y-axis (visibility) of the eventual Wardley map.
- Do NOT attempt to position components on the evolution axis. That is stage 4 (wm-evolve). The horizontal axis has no meaning at this stage. Dependency trees are the honest representation — they encode what we know (depth/visibility) without pretending to know what we don't (evolution).
- Flag shared components. When a component appears in multiple chains, note it with "(shared)" and list which other needs also depend on it. Shared components are structurally important.
- Stop at sensible boundaries. Don't decompose "electricity" into "power generation -> transmission -> distribution." Stop where the organisation's agency ends, unless infrastructure is specifically in scope.
- Use the organisation's language where possible. If they call it a "Fleet Management System" not "Asset Tracking Platform," use their term. The client needs to recognise their own supply chain.
Run chains in parallel where possible — each need's chain is independent.
Step 3: Identify shared components
After all chains are written, look across them for:
- Shared components: same capability serving multiple needs. These are structurally important — they sit at critical junctions and often become strategic leverage points.
- Implicit dependencies: components that are assumed but not explicit in any single chain (e.g. "identity management" underlying multiple systems).
- Potential duplication: cases where two chains use different names for what might be the same component. Consolidate these.
Step 4: Synthesise
Write chain/supply-chain.md using the consolidated template in
chain-template.md. Include:
- Merged dependency graph — all chains combined, deduplicating shared components
- Shared components table — each shared component with the needs it serves and its depth from the user
- Component inventory — a flat table of every unique component with its parents, children, and notes
- Observations — structural insights:
- Bottlenecks or single points of failure
- Surprisingly deep dependency chains
- Missing capabilities (things that should exist but weren't found)
- Clusters of related components
- Chain-to-need validation — before presenting output, verify
correspondence between chain files and agreed needs:
- Every chain file in
chain/chains/must map to at least one agreed need inneeds/needs.agreed.md - Every agreed need must have a corresponding chain file
- Produce an explicit mapping table showing need → chain file(s)
- Flag orphan chains (no corresponding need) and uncovered needs (no corresponding chain) as errors to resolve before proceeding
- Every chain file in
- Open questions — for client review
Step 5: Present to client
Present the consolidated supply chain to the client. Ask:
- "Does this dependency structure match how your organisation actually works?"
- "Are there capabilities missing from these chains?"
- "Are there capabilities listed that don't actually exist or are wrong?"
- "Do the shared components look right? Are there others?"
- Address any open questions.
The client will likely:
- Correct component names to match internal terminology
- Add capabilities you couldn't see from public research
- Identify dependencies between components that weren't obvious
- Flag components that are planned but don't exist yet
Step 6: Iterate and agree
Based on client feedback:
- Update individual chains in
chain/chains/as needed - Rewrite
chain/supply-chain.md - Ask the client to confirm: "Is this supply chain now accurate and complete enough to proceed to evolution assessment?"
When the client agrees:
- Copy to
chain/supply-chain.agreed.md - Record the agreement:
wm-chain/scripts/record-agreement.sh --client {org} --project {slug} \ --field "Components={total count} unique components identified" \ --field "Shared components={list of key shared components}" \ --field "Scope notes={any caveats}"
Important notes
- Output is markdown only. No OWM files at this stage. The evolution axis is unknown, so OWM would require guessing half the coordinates. Markdown dependency trees are the honest representation.
- The
.agreed.mdfile is a gate. The next skill (wm-evolve) will refuse to proceed without it. - Component count matters. A typical map has 15-30 components. If you have fewer than 10, you may be too coarse. If you have more than 50, you may need to split into submaps. Discuss with the client.
Completion
When supply-chain.agreed.md is written, tell the user the next step
is wm-evolve to position components on the evolution axis and
produce the first real Wardley map in OWM format.