Help us improve
Share bugs, ideas, or general feedback.
From agentic-development-workflow
Decomposes a product into a system map, layered story graph, and agent topology for execution planning. Use after product visioning or when breaking down architecture and stories.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agentic-development-workflow:mapThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Decompose the Context Document into a system map (modules + interfaces), a layered story graph (work items + dependencies + execution slices), and an agent topology (roles + handoff contracts). This is the hardest phase — a wrong module boundary means dozens of agents produce incompatible code.
references/orchestration-patterns.mdreferences/yaml-guardrails.mdtemplates/agent-topology.mdtemplates/context-document.mdtemplates/opportunity-brief.mdtemplates/product-context-schema.yamltemplates/references/symphony-spec-reference.mdtemplates/story-spec.mdtemplates/system-map.mdtemplates/technical-spec.mdShare bugs, ideas, or general feedback.
Decompose the Context Document into a system map (modules + interfaces), a layered story graph (work items + dependencies + execution slices), and an agent topology (roles + handoff contracts). This is the hardest phase — a wrong module boundary means dozens of agents produce incompatible code.
Where this fits:
/aep-envision → /aep-map → /aep-scaffold → [ /aep-design → /aep-launch → /aep-build → /aep-wrap ] → /aep-reflect
▲ you are here
Session: Main, interactive with user (System Map requires human review)
Input: Product definition from product/index.yaml (split mode) or product-context.yaml (v1 mode)
Output: product-context.yaml updated with architecture, stories, waves, topology, layer_gates, cost, and changelog sections
YAML Schema: See templates/product-context-schema.yaml for the full structure and field definitions.
File Resolution:
ls product/index.yaml 2>/dev/null && echo "SPLIT MODE" || echo "V1 MODE"
cat product-context.yaml
product/index.yaml exists): Read product definition (opportunity, personas, product.*) from product/index.yaml. Read operational state from product-context.yaml.product-context.yaml.If product definition is missing (no product section in either file), run /aep-envision first.
Produce a System Map (see templates/system-map.md) from the Context Document:
Write the system map to the architecture section of product-context.yaml.
If the System Map reveals any of these conditions, suggest producing a Technical Specification (see templates/technical-spec.md) before proceeding to story decomposition:
The System Map defines WHAT the modules are and HOW they connect. The Technical Spec defines HOW those connections behave under all conditions (success, failure, timeout, recovery). Write the Technical Spec as a standalone document and reference it from the architecture section:
architecture:
technical_spec: "docs/technical-spec.md"
See templates/references/symphony-spec-reference.md for the exemplar standard.
The user must review and approve the System Map. Architecture decisions have the highest error cost in the entire pipeline. Present the map and explicitly ask for approval before proceeding to story decomposition.
If the user wants changes, revise and re-present. Do not proceed until approved.
Once the System Map is confirmed, decompose into stories:
Each story follows the Story Spec format (see templates/story-spec.md) and must include:
business_value (1-10, or null to derive from priority)compile_mode (default single_change; use grouped_change for tightly coupled stories, shared_enabler for infrastructure)All stories start with status: pending. Stories follow a state machine: pending → ready → in_progress → in_review → completed (or blocked / failed as error states). The /aep-dispatch skill manages state transitions during execution.
After decomposition agents produce their stories, map each story to a user activity from product.activities:
create-profile because it enables the user to upload a selfie).activity as null. These are implementation enablers — they appear in the architecture view but NOT in the user journey story map. This is correct and expected.Not every story needs an activity. The story map shows the user's perspective — technical plumbing is visible in the architecture view.
Layer 0 is the most important layer. It is a horizontal slice across the activity backbone — the thinnest story from each user activity, strung together so a user can complete the crudest possible end-to-end journey from the Context Document's Layer 0 MVP Contract.
"Build a skeleton that can walk before building a perfect leg."
Every activity in product.activities with layer_introduced: 0 should have at least one Layer 0 story. Do not go deep into any module before proving the end-to-end path works. This is the most expensive mistake in this workflow.
A dedicated agent receives all stories and produces:
stories[].slice; the user-facing term is "wave.")Write all stories to the stories section of product-context.yaml. Also populate the waves section grouping stories by layer + wave.
For each layer that has an outcome_contract defined (see product.layers[].outcome_contract), ensure the layer gate test definition aligns with the success metric. If no outcome contract exists for a layer, consider adding one — Jeff Patton emphasizes that layers should be anchored in outcomes, not just feature completeness.
The outcome contract is evaluated by /aep-reflect after layer completion. It answers: "did this layer achieve what we hypothesized?"
If product/index.yaml exists (created by /aep-envision for multi-journey products), also write per-capability map.yaml files:
product/maps/<capability>/aep-map.yaml — backbone activities, layers, story stubs for this capabilitymap.yaml are sketches; the full stories in product-context.yaml are the operational versionsSplit mode note: In split mode, the capability map's
map.yamlstory stubs are narrative sketches. The full stories are written toproduct-context.yaml, andproduct/index.yamlis NOT modified by/aep-map(it only reads from it).
.5 Layers)After defining each implementation layer, review calibration.plan from product-context.yaml (operational file, both modes) (if populated by /aep-envision) or consider which quality dimensions may need human calibration:
For heavy dimensions (visual-design, ux-flow, copy-tone): plan a .5 alignment layer with stories tagged calibration_type: <dimension>. Run /aep-calibrate <dimension> before dispatching to generate a brief and capture decisions into calibration/<type>.yaml.
For light dimensions (api-surface, data-model, scope-direction, performance-quality): plan a /aep-calibrate <dimension> checkpoint BEFORE dispatching the relevant stories in the next integer layer. No .5 layer needed — decisions update product-context.yaml directly.
.5 layer): Typically establishes the visual design system. Run /aep-calibrate visual-design to create calibration/visual-design.yaml..5 layers): Extend calibration to new patterns. /aep-calibrate detects existing calibration artifacts and generates focused briefs covering only the delta./aep-reflect step after each layer classifies calibration needs by dimension. The human decides which dimensions need attention. But the workflow makes the question unavoidable.Decomposition agents may discover module boundaries are wrong. They submit amendment proposals to the System Map. When amendments accumulate to 3+ items or any single amendment affects an interface contract, trigger an Architecture Review with the user before continuing.
Why this lives here: Per Anthropic's research, "each subagent needs an objective, an output format, guidance on tools and sources, and clear task boundaries — defined before execution." Topology is a decomposition decision — it determines how /aep-launch configures workspaces and what context /aep-build agents receive.
Define the agent roles, handoff contracts, and routing rules using the Agent Topology template (see templates/agent-topology.md):
For each role in the execution pipeline, define:
implementer, contract-verifier, integration-tester)For every agent-to-agent transition:
Write the topology to the topology section of product-context.yaml. Also initialize the layer_gates and cost sections.
See references/yaml-guardrails.md for the full checklist. Run:
npx js-yaml product-context.yaml > /dev/null && echo "YAML OK"
If this fails, fix the YAML before committing. Common fixes: quote list items containing colons, flatten nested sub-lists, escape embedded double quotes.
# Resolve $BASE (integration branch) — see git-ref "Integration Branch" (override → develop → main)
BASE=$(git config --get aep.integration-branch 2>/dev/null || true)
[ -z "$BASE" ] && { git show-ref --verify --quiet refs/heads/develop \
|| git show-ref --verify --quiet refs/remotes/origin/develop; } && BASE=develop
BASE=${BASE:-main}
git pull --ff-only origin "$BASE"
git add product-context.yaml product/
git commit -m "feat: add system map, story graph, and agent topology"
git push origin "$BASE"
Sections written:
architecture — system map (modules, interfaces, data flow)stories — layered story graph with waves (all stories start status: pending)waves — stories grouped by layer + wave for batch dispatchtopology — agent roles, handoff contracts, routing ruleslayer_gates — integration test definitions per layer (aligned with outcome contracts if defined)cost — initial cost budgets and tracking structurechangelog — append an entry recording what was addedAlways append to the changelog section.
When updating the map (triggered by /aep-reflect or new requirements):
product/index.yaml in split mode, product-context.yaml in v1 mode) and operational state from product-context.yamlarchitecture, stories, topology)changelog sectionDecomposition is complete. If no project exists yet:
/aep-scaffold
If the project already exists, start executing stories:
/aep-dispatch
/aep-dispatch reads the story graph from product-context.yaml and begins moving stories through the state machine (pending → ready → in_progress → ...), routing each through /aep-design → /aep-launch → /aep-build → /aep-wrap.
npx claudepluginhub memorysaver/agentic-engineering-patterns --plugin agentic-development-workflowProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.