.claude/skills/map-systems/SKILL.md
Creates a visual and textual map of the project systems, services, data flows, and integration boundaries. Use when documenting system architecture or when the user mentions system map, architecture diagram, or service boundaries.
npx skillsauth add tranhieutt/software_development_department map-systemsInstall 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.
When this skill is invoked:
Two modes:
/map-systems — Run the full decomposition workflow (Phases 1-5)
to create or update the systems index.next: /map-systems next — Pick the highest-priority undesigned system
from the index and hand off to /design-system (Phase 6).Read the product concept and any existing design work. This provides the raw material for systems decomposition.
Required:
design/docs/product-concept.md — fail with a clear message if missing:
"No product concept found at
design/docs/product-concept.md. Run/brainstormfirst to create one, then come back to decompose it into systems."
Optional (read if they exist):
design/docs/product-pillars.md — pillars constrain priority and scopedesign/docs/systems-index.md — if exists, resume from where it left off
(update, don't recreate from scratch)design/docs/*.md — check which system PRDs already existIf the systems index already exists:
AskUserQuestion to ask:
"The systems index already exists with [N] systems ([M] designed, [K] not started).
What would you like to do?"
Extract and identify all systems the product needs. This is the creative core of the skill — it requires human judgment because concept docs rarely enumerate every system explicitly.
Scan the product concept for directly mentioned systems and mechanics:
For each explicit system, identify the hidden systems it implies. Products always need more systems than the concept doc mentions. Use this inference pattern:
Explain in conversation text why each implicit system is needed (with examples).
Present the enumeration organized by category. For each system, show:
Then use AskUserQuestion to capture feedback:
Iterate until the user approves the enumeration.
For each system, determine what it depends on. A system "depends on" another if it cannot function without that other system existing first.
For each system, list its dependencies. Use these dependency heuristics:
Arrange systems into layers:
Check for cycles in the dependency graph. If found:
Show the dependency map as a layered list. Highlight:
Use AskUserQuestion to ask: "Does this dependency ordering look right? Any
dependencies I'm missing or that should be removed?"
Assign each system to a priority tier based on what milestone it's needed for.
Use these heuristics for initial assignment:
Present the priority assignments in a table. For each tier, explain why systems were placed there.
Use AskUserQuestion to ask: "Do these priority assignments match your vision?
Which systems should be higher or lower priority?"
Explain reasoning in conversation: "I placed [system] in MVP because the core loop requires it — without [system], the 30-second loop can't function."
Combine dependency sort + priority tier to produce the final design order:
This is the order the team should write PRDs in.
Using the template at .claude/docs/templates/systems-index.md, populate the
systems index with all data from Phases 2-4:
Present a summary of the document:
Ask: "May I write the systems index to design/docs/systems-index.md?"
Wait for approval. Write the file only after "yes."
After writing, update production/session-state/active.md with:
This phase is entered when:
/map-systems [system-name]/map-systems nextnext was used, pick the highest-priority undesigned system (by design order)Use AskUserQuestion for: "Start designing [system-name] now, pick a different
system, or stop here?"
Once a system is selected, invoke the /design-system [system-name] skill.
The /design-system skill handles the full PRD authoring process:
/design-review when completeDo not duplicate the /design-system workflow here. This skill owns the systems
index; /design-system owns individual system PRDs.
After /design-system completes, use AskUserQuestion:
If continuing, return to Step 6a.
After the systems index is created (or after designing some systems), suggest the appropriate next actions:
/design-system [system-name] to write the next system's PRD"/design-review [path] on each completed PRD to validate quality"/gate-check pre-production to check if you're ready to start building"/prototype [system]"/sprint-plan new"This skill follows the collaborative design principle at every phase:
/design-system/design-system, which handles
incremental section writing, cross-referencing, design review, and index updatesproduction/session-state/active.md after
each milestone (index created, system designed, priorities changed)Never auto-generate the full systems list and write it without review. Never start designing a system without user confirmation. Always show the enumeration, dependencies, and priorities for user validation.
design/docs/systems-index.md?"Deliver exactly:
design/docs/systems-index.md — all systems enumerated with dependencies and MVP tier/design-system [first-priority-system]testing
Generates high-fidelity architecture diagrams, sequence flows, and component maps for SDD projects. Use when finalizing a design phase, documenting system architecture, or visualizing agentic workflows. Default style: Style 6 (Claude Official).
data-ai
Provides vector database and semantic search patterns for Pinecone, Weaviate, Qdrant, Milvus, and pgvector in RAG and recommendation systems. Use when implementing vector search or when the user mentions vector database, semantic search, embeddings, or similarity search.
development
Updates docs/technical/CODEMAP.md by scanning the current codebase structure. Run after a significant feature merge, refactor, or when CODEMAP feels stale.
development
Unlocks the codebase after a release freeze or incident freeze period to resume normal development. Use when a freeze period ends or when the user mentions unfreezing or lifting the code freeze.