decomposing-work — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited decomposing-work (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill guides a breakdown-agent through converting an approved ARCHITECTURE.md into a persistent roadmap of implementation chunks. It sits between upstream architecture design (architecting-software) and downstream enrichment (enriching-roadmap), encoding the decomposition discipline that determines whether developer-agents succeed.
Use this skill when an ARCHITECTURE.md exists and has been confirmed by the human before implementation begins.
This skill covers:
This skill does NOT cover:
architecting-software)enriching-roadmap)orchestrating-software-dev)Handoff position:
architecting-software → decomposing-work → enriching-roadmap → developer-agent
(ARCHITECTURE.md) (ROADMAP.md (ROADMAP.md (implementation)
structure) enriched)Receive from upstream: a confirmed ARCHITECTURE.md with component boundaries, interfaces, data model, and non-functional requirements.
Hand off downstream: ROADMAP.md in the project root — a persistent, phased list of chunks with structural metadata (type, dependencies, files, phases). The enriching-roadmap skill then adds acceptance criteria and pattern references to make each chunk executable.
Before starting, confirm you have:
ARCHITECTURE.md — reviewed and approved by the humanIf the architecture is ambiguous — missing component boundaries, implicit interfaces, or unclear data ownership — flag specific gaps to the human before producing chunks. Do not infer boundaries from unclear architecture; inferred boundaries produce misaligned briefs.
Always:
ROADMAP.md — placed in the project root. Contains a header block, global Definition of Done, and all chunks grouped by phase. Uses the chunk schema defined in the Templates section.Propose before finalising: Present the draft roadmap to the human before treating it as the working baseline. Label it "proposed" until the human confirms. Apply any corrections before writing the final file.
Read ARCHITECTURE.md fully. While reading, extract and list:
If any element is ambiguous or absent, log it as an open question. Do not proceed past Step 1 with unresolved questions that would force you to infer chunk boundaries.
Output: Four labelled lists (components, integration surfaces, infrastructure, cross-cutting concerns). Unresolved questions listed separately.
Before decomposing, assess the project scale from the architecture and set a target chunk range. This prevents over-decomposition where the overhead of brief-develop-review cycles exceeds the project's complexity.
Assess these signals:
Target chunk ranges:
| Project scale | Target chunks | Example |
|---|---|---|
| Small (1-2 components, solo dev) | 5-12 | Personal recipe app, CLI tool |
| Medium (3-5 components, small team) | 10-20 | SaaS feature, API service |
| Large (5+ components, team) | 15-40 | Platform, multi-service system |
Use this as a sanity check after Step 4 (dependency graph). If your chunk count significantly exceeds the target range, consolidate by merging chunks that form natural vertical slices. Over-decomposition creates more overhead than it prevents risk.
Before any other chunk, identify the Walking Skeleton. This is non-negotiable.
The Walking Skeleton is the thinnest end-to-end implementation through all major architectural layers — a single request or operation that traverses the full system and returns a result, with no real business logic. Its purpose is to validate that all layers connect and to establish the project structure into which all subsequent chunks plug.
Define the skeleton: state what the single traversal is (e.g., "HTTP request to /health returns 200 from behind the database connection"), which architectural layers it touches, and what infrastructure it establishes. Assign it chunk-001.
The Walking Skeleton is always Phase 0, Chunk 001. It has no dependencies. Every other chunk depends on it.
Work through the extracted lists from Step 1. For each element, assign one or more chunks using this mapping:
| Architecture element | Chunk type |
|---|---|
| Component / service / module | One or more feature chunks (start with thinnest viable path through that component) |
| API boundary / shared interface / event contract | One interface chunk (define the contract before either side implements) |
| Shared data model or schema | One infrastructure chunk (schema and migrations before data access layer) |
| Foundation infrastructure (CI, scaffold, auth skeleton, shared types) | One or more infrastructure chunks in Phase 0 |
| Third-party integration or adapter | One integration chunk |
| Cross-cutting concern (logging, observability, error handling) | Scaffold in Phase 0 as infrastructure; harden in Phase 3 as hardening |
Chunk granularity principle: Each chunk delivers a coherent vertical slice — the smallest unit of work that produces a testable capability end-to-end.
The previous hard constraint of 1-3 files caused artificial splits in practice. Vertical slices aligned with how code is written and tested produce better results.
For each chunk, write a draft entry using the schema from the Templates section. Do not fill Depends on yet — that is Step 5.
For each chunk, identify which other chunks must be complete before it can begin. Record these as Depends on references using chunk IDs.
Apply these rules:
After filling all Depends on fields, verify the graph is a DAG (no cycles). If a cycle exists, the decomposition has a structural problem — resolve it before proceeding.
Identify chunks with no dependencies beyond the Walking Skeleton — these are the first parallel candidates.
Group chunks into phases by dependency depth. Use this default phasing:
| Phase | Content |
|---|---|
| Phase 0 — Foundation | Walking Skeleton, CI/CD scaffold, shared types and interfaces, database schema, auth skeleton, logging wiring |
| Phase 1 — Core domains | Primary capability of each bounded context or component; no cross-component integration yet |
| Phase 2 — Integration | Cross-component flows, API composition, third-party adapters, authentication flows using the auth skeleton |
| Phase 3 — Hardening | Comprehensive error handling, observability, performance-sensitive paths, security hardening |
If the architecture is simple (one or two components, no distinct integration layer), collapse Phase 1 and Phase 2 into a single phase. Do not create empty phases.
For each chunk, list the files it will likely create or modify. This is the primary mechanism for parallel conflict detection — before the orchestrator dispatches two chunks simultaneously, it checks whether their file sets overlap.
Rules:
src/api/routes/user.ts)src/core/auth/)If two chunks in the same phase have overlapping file sets, they cannot run in parallel. Either re-sequence them or re-examine the chunk boundary.
Before writing the roadmap file, run this checklist:
chunk-001, Phase 0, with Depends on: —Correct any failures. Record any non-obvious decomposition judgements (chunk boundary choices, ordering rationale, scope decisions) in the Decisions Log section of the roadmap. Then present the proposed roadmap to the human. Note any open questions, ambiguous boundaries, or decomposition judgements the human should review.
Write ROADMAP.md only after the human confirms.
# Implementation Roadmap
**Project:** <project name>
**Architecture source:** ARCHITECTURE.md (confirmed <date>)
**Created:** <date>
**Status:** <draft | confirmed | in-progress>
## Definition of Done (applies to every chunk)
- Code compiles and existing tests pass
- New unit tests written and passing
- No files modified outside the declared file set
- Code reviewed and approved by reviewer-agent
---
## Phase 0 — Foundation
### chunk-001: <title>
**Type:** walking-skeleton
**Component:** —
**Status:** pending
**Size:** S | M | L
**Depends on:** —
**Files:** <list of files to create or modify>
**Description:** <what this chunk implements and why it must come first>
<!-- Acceptance criteria added by enriching-roadmap -->
---
### chunk-002: <title>
**Type:** infrastructure | interface
...
---
## Phase 1 — Core Domains
### chunk-00N: <title>
**Type:** feature
**Component:** <component name from architecture>
**Status:** pending
**Size:** S | M | L
**Depends on:** chunk-001[, chunk-00X]
**Files:** <list>
**Description:** <what and why>
<!-- Acceptance criteria added by enriching-roadmap -->
---
## Phase 2 — Integration
...
## Phase 3 — Hardening
...
---
## Decisions Log
<!-- Append decomposition decisions here. Never edit existing entries. -->
### <date>: <decision title>
<Brief rationale for a non-obvious chunk boundary, ordering decision, or scope choice>Every chunk entry must include all fields:
| Field | Required | Values | |||||
|---|---|---|---|---|---|---|---|
Title | Yes | Short imperative phrase (the ### chunk-NNN: <title> heading) | |||||
Type | Yes | walking-skeleton \ | interface \ | infrastructure \ | feature \ | integration \ | hardening |
Component | Yes | Component name from architecture, or — for cross-cutting chunks | |||||
Status | Yes | pending \ | ready \ | in-progress \ | done \ | blocked | |
Size | Yes | S (< 50 lines), M (50–200 lines), L (200–400 lines) | |||||
Depends on | Yes | Chunk IDs, or — for chunk-001 | |||||
Files | Yes | Concrete paths or directory-level notation | |||||
Description | Yes | What and why in 2–4 sentences | |||||
Acceptance criteria | Added by enriching-roadmap | Bulleted, testable conditions — not part of initial decomposition |
Status update rule: Only append status changes; never edit previous values. The roadmap is append-only after confirmation.
Architecture is prose-heavy with no explicit component boundaries: Do not infer boundaries. Read the prose for any named systems, services, subsystems, or data stores. If boundaries remain unclear after careful reading, log specific questions for human resolution. Present partial decomposition for discussion rather than filling gaps with assumptions.
Single-component project (no integration layer): Collapse to Phase 0 (Walking Skeleton + any infrastructure) and Phase 1 (feature chunks). Skip Phase 2 and Phase 3 unless hardening or observability is explicitly called for in the architecture. Fewer phases is better when the architecture is simple.
Cross-cutting concern spans the whole system (e.g., authentication): Create a Phase 0 infrastructure chunk for the skeleton (interfaces, middleware wiring, stub implementation). Create integration chunks in Phase 2 for the consuming features. Do not attempt to implement authentication fully in Phase 0 — only the wiring that unblocks parallel feature development.
Two chunks have overlapping file sets and cannot be re-sequenced: Add a dependency so the earlier chunk completes before the later one begins. Overlap means sequential, not parallel. Document this as a sequencing constraint in the Decisions Log.
Architecture specifies a technology the agent is unfamiliar with: Proceed with decomposition based on the component boundaries and interface descriptions. Note technology uncertainty in the Decisions Log. Technology-specific implementation knowledge is the developer-agent's responsibility, not the breakdown-agent's.
Greenfield vs brownfield: For brownfield, Step 1 must include reading the existing codebase structure to identify which files will be modified versus created. The Walking Skeleton may already exist — if so, chunk-001 becomes an integration chunk connecting the new components to the existing scaffold.
Context: ARCHITECTURE.md describes a single REST API service with a PostgreSQL database, three endpoint groups (users, items, orders), hexagonal internal structure, and JWT authentication. No external integrations.
Expected roadmap:
Validation checks:
Context: ARCHITECTURE.md describes a notification service that receives events from an orders service via a shared event schema, and dispatches email and push notifications through third-party providers. Two components, one shared event schema, two adapters.
Expected roadmap:
Validation checks:
integration type, not feature typeContext: ARCHITECTURE.md describes a "content management platform" in narrative form. It names a "content store", a "publishing pipeline", and a "delivery layer" but does not define the interfaces between them or the data model for content.
Expected agent behaviour:
This skill succeeds when:
ROADMAP.md from ARCHITECTURE.md without asking for clarification on methodology, chunk schema, or dependency representationchunk-001, always Phase 0, always with no dependencies — and every subsequent chunk traces its dependency chain back to it~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.