Scan project structure and generate ARCHITECTURE.md with a Mermaid module relationship diagram. Use when user says \"/map\".
Scanned 9/5/2026
Install to Claude Code
npx -y skills add shenxingy/Clade --skill map --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Map?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shenxingy-map-clade)More formats (shields.io, HTML) on the badges page.
---
name: map
description: "Scan project structure and generate ARCHITECTURE.md with a Mermaid module relationship diagram. Use when user says \"/map\"."
---
# Clade for Codex
This workflow runs **directly in Codex**. Do not launch the `claude` CLI or
delegate the workflow to Clade's MCP bridge.
Codex compatibility rules:
- Plugin skills are namespaced. Invoke this workflow explicitly as
`$clade:map`; a bare `$name` does not select the installed Clade plugin.
- Read the nearest `AGENTS.md` files for repository instructions. If a project
has only `CLAUDE.md`, treat it as legacy project guidance and read it too.
- Store new Clade working state under `.clade/` (or `~/.clade/` for personal
state). Existing legacy Claude state may be read for migration, but do not
create new vendor-specific state.
- A `/skill-name` reference means the corresponding Codex
`$clade:skill-name` plugin skill, or the same workflow invoked naturally when
explicit skill invocation is not available.
- Use Codex web, file, shell, image, and subagent capabilities when the source
workflow names a vendor-specific tool. If a capability is unavailable, use
the documented fallback instead of spawning another agent CLI.
- Paths such as `<plugin-root>/...` are relative to the installed Clade plugin
containing this `SKILL.md`; resolve that root before invoking a helper.
## Canonical Clade workflow
# /map Skill: Generate Project Architecture Diagram
## Purpose
Automatically scan the project structure and generate `ARCHITECTURE.md` with a module relationship diagram using Mermaid.
## Execution Steps
1. **Read existing ARCHITECTURE.md**
- If `ARCHITECTURE.md` exists at the project root, read it first
- This helps preserve any existing documentation and allows you to update rather than overwrite
2. **Scan project structure**
- Use Glob to find major directories: `find . -maxdepth 2 -type d -not -path '*/\.*' -not -path '*/node_modules/*' -not -path '*/__pycache__/*'`
- For each top-level directory (src/, lib/, app/, components/, etc.), identify:
- What it contains (modules, libraries, features)
- Its primary responsibility
- Key files or sub-modules within it
3. **Identify modules and dependencies**
- Scan key files with Grep/Read to understand module structure
- Map logical dependencies (imports, API calls, shared state)
- Identify which modules depend on which others
- Look for: package.json, setup.py, .go files, main entry points
4. **Generate Mermaid diagram**
- Create a `graph TD` (top-down) Mermaid diagram showing:
- Each major module as a node (use clear, short names)
- Arrows showing dependencies: `ModuleA --> ModuleB` means ModuleA imports/uses ModuleB
- Group related modules if they form a subsystem
- Keep the diagram readable (max ~10-15 nodes for clarity)
- Example structure:
```
graph TD
API["API Layer"]
DB["Database"]
Auth["Authentication"]
UI["Frontend"]
UI --> API
API --> Auth
API --> DB
Auth --> DB
```
5. **Write ARCHITECTURE.md**
- Create or update `ARCHITECTURE.md` at the project root
- **Structure**:
```markdown
# Project Architecture
## Overview
[1-2 sentence high-level description of what the project does]
## Directory Structure
### src/
[Description of what this directory contains]
- Key files: file1.ts, file2.ts
### lib/
[Description]
- Key files: ...
[... repeat for each top-level directory ...]
## Module Relationships
```mermaid
[Your generated Mermaid graph]
```
## Key Components
### Module Name
- **Location**: src/module/
- **Responsibility**: What this module does
- **Exports**: Key functions/classes
- **Depends on**: Other modules it uses
[... repeat for each major module ...]
## Data Flow
[Optional: describe how data flows through the system, if applicable]
```
- Keep descriptions concise (1-3 lines per section)
- Focus on "why" not "what" — what problem does each module solve?
6. **Report success**
- Tell the user: "Updated ARCHITECTURE.md"
- If the diagram is complex, add a note about what the diagram shows
## Implementation Notes
- **Diagram scope**: Show the 5-10 most important modules, not every single file
- **Avoid noise**: Don't include vendored code (node_modules, venv, .git)
- **Update strategy**: If ARCHITECTURE.md exists, preserve existing descriptions and update the diagram + file list
- **Language**: Use English for all documentation
- **Mermaid syntax**: Use valid Mermaid graph TD syntax; test the diagram visually if possible
## Success Criteria
✓ ARCHITECTURE.md exists at project root
✓ Diagram renders without syntax errors
✓ All major modules are represented
✓ Dependencies are correctly shown
✓ Descriptions are clear and concise
---
## Completion Status
- ✅ **DONE** — task completed successfully
- ⚠ **DONE_WITH_CONCERNS** — completed but with caveats to note
- ❌ **BLOCKED** — cannot proceed; write details to `.clade/blockers.md`
- ❓ **NEEDS_CONTEXT** — missing information; use AskUserQuestion
**3-strike rule:** If the same approach fails 3 times, switch to BLOCKED — do not retry indefinitely.
## Delivery completion
If this workflow changes files or external state:
- Inspect the real final state before responding, including `git status` for a
repository task.
- Never report `DONE` while task-owned changes are uncommitted. Use or continue
`$clade:delivery` and create a repository-compliant checkpoint or preserve
the work when committing is unavailable.
- When the user request or trusted repository policy makes publication,
deployment, or live verification part of the task, do not silently downgrade
the result to local-only work.
- If a required delivery transition lacks authority, credentials, a destination,
or reachable external state, report `BLOCKED` or `NEEDS_CONTEXT` rather than
appending a "not committed/pushed/deployed" caveat after `DONE`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!