
Visualize
- 1 installs
- 52 repo stars
- Updated July 6, 2026
- buiducnhat/co-drew
visualize is a Claude Code skill that generates source-adjacent HTML visualizations of docs, plans, and process flows from real repository source material.
About
visualize creates source-adjacent HTML visualizations from repository documentation, markdown files, and standardized plan folders. A developer uses it to turn docs, plans, and process flows into readable maps, timelines, flows, and Mermaid diagrams. It is documentation-focused, uses fixed templates and a shared theme, and never invents facts or metrics.
- Creates source-adjacent HTML visualizations of docs, plans, and process flows
- Documentation-focused: maps, timelines, flows, Mermaid diagrams, not marketing or product pages
- Uses fixed templates and a shared theme, and never invents facts or metrics
Visualize by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,366 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
visualize capabilities & compatibility
- Capabilities
- docs · write plan
- Use cases
- documentation
What visualize says it does
Create source-adjacent HTML visualizations for /visualize requests, docs, markdown, standardized plans, process flows, charts, Mermaid diagrams, context maps, and recommendation diagrams.
it is intentionally documentation-focused: it turns real source material into readable maps, timelines, flows, risk blocks, and recommendation diagrams.
Do not invent facts, fake metrics, fake decisions, fake users, fake constraints, or unsupported recommendations.
npx skills add https://github.com/buiducnhat/co-drew --skill visualizeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 52 |
| Last updated | July 6, 2026 |
| Repository | buiducnhat/co-drew ↗ |
What it does
Turn repository docs or a plan folder into a source-adjacent HTML visualization with maps, flows, and diagrams.
Who is it for?
Visualizing documentation, markdown, and standardized plan folders as maps, flows, and diagrams.
Skip if: Brand sites, marketing pages, product prototypes, or slide decks.
When should I use this skill?
You need to turn docs, a plan folder, or a process flow into an inspectable HTML visualization.
What you get
A source-adjacent HTML visualization (plan map, document map, or process flow) linked to a fixed theme, with Mermaid diagrams where helpful.
- visualize.html
- visualize-assets folder with copied theme CSS
- Mermaid diagrams
By the numbers
- 8-step workflow
- 3 HTML templates: plan, document, context
Files
Visualize
Overview
Create source-adjacent HTML visualizations from repository documentation, markdown files, standardized plan folders, and arbitrary user context. This skill is Huashu-derived in workflow discipline, but it is intentionally documentation-focused: it turns real source material into readable maps, timelines, flows, risk blocks, and recommendation diagrams.
Scope
Use this skill for:
- Documentation and markdown visualization
- Standardized plan folder visualization
- Flow, chart, Mermaid, context map, and recommendation diagram requests
- Source-adjacent HTML summaries that help users inspect structure, risks, decisions, and next steps
Do not use this skill for:
- Brand sites or marketing pages
- Product prototypes or production web apps
- Slide decks, long motion demos, or broad visual design systems
Output Conventions
- Plan folder: create
visualize.htmlandvisualize-assets/inside the plan folder. - Markdown or document file: create
<source-base>.visualize.htmland<source-base>.visualize-assets/beside the source file. - Source-less context: create
visualize-YYMMDD-HHmm-<slug>.htmland a matching assets folder in the current working directory unless the user specifies a target. Generate the timestamp withdate +%y%m%d-%H%M.
Always copy references/templates/visualize-theme.css into the adjacent assets folder and link the copied local CSS from the generated HTML. Mermaid CDN usage is allowed for diagrams.
Workflow
1. Load project context when visualizing repository files (if the current session does not already have it).
- Follow the shared Context Loading Protocol: read
docs/SUMMARY.mdfirst, then load only directly relevant detail files.
2. Load the source material.
- For plan folders, read
SUMMARY.mdand relevantphase-XX-*.mdfiles. - For markdown or document files, read the requested source directly.
- For source-less user context, use only the provided conversation/request content.
3. Identify the visualization intent.
- Determine whether the user needs a plan map, document map, process flow, decision view, recommendation view, or mixed visualization.
- Ask with the question tool only when the source, target, or output ambiguity cannot be resolved safely.
4. Choose the template with references/router.md.
- Plan folders use
references/templates/plan.html. - Single documents use
references/templates/document.html. - Source-less context uses
references/templates/context.html.
5. Extract facts and assumptions.
- Use
references/workflow.mdandreferences/content-patterns.md. - Preserve source facts, file paths, statuses, risks, decisions, verification steps, and recommendations.
- Label assumptions clearly when the source leaves gaps.
6. Compose the HTML.
- Start from the selected template.
- Replace
VISUALIZE:marker regions with source-backed content. - Copy
visualize-theme.cssbeside the output before linking it.
7. Add Mermaid diagrams where they clarify structure.
- Use
references/mermaid-recipes.md. - Prefer several small diagrams over one dense diagram.
- Use readable HTML/CSS fallback blocks when Mermaid syntax is uncertain.
8. Verify the output with references/verification.md.
Rules
- Do not invent facts, fake metrics, fake decisions, fake users, fake constraints, or unsupported recommendations.
- Do not hide missing source content. Add an assumption or warning block instead.
- Keep visualizations factual, source-adjacent, and easy to inspect.
- Keep templates and generated HTML focused on documentation visualization, not broad design/prototype work.
- Avoid large inline style blocks; use the copied fixed theme CSS.
- Preserve source links and paths when they help the user trace content back to origin.
Content Patterns
Use these blocks as needed. Keep labels factual and compact.
Source Header
Show title, source path, source type, generated timestamp, and any source metadata present in the file.
Section Map
Turn top-level headings into a navigable list. Add one factual sentence per section when the source provides enough detail.
Key Takeaways
Use three to six bullets that summarize source-backed facts. Do not invent impact or priority.
Phase Timeline
For plans, show phase name, status, objective, touched files, and verification command. Preserve [ ], [-], and [x] states.
Task Checklist
Use source task wording where practical. Group by phase or section.
Risk Matrix
List risk, trigger, impact, and mitigation. If impact or mitigation is not present, mark it as missing instead of guessing.
Decision Or Recommendation Block
Separate source decisions from recommendations. A recommendation must cite the source fact or gap that supports it.
Assumption Block
Use when output location, title, ordering, or grouping is inferred. Keep assumptions visibly labeled.
Warning Block
Use for missing files, ambiguous source content, unsupported diagrams, or verification limitations.
Mermaid Recipes
Prefer several small diagrams over one dense diagram. Keep labels factual and short. If Mermaid syntax is uncertain, use a readable HTML/CSS block instead.
Process Flow
flowchart TD
A[Load source] --> B[Extract facts]
B --> C[Choose template]
C --> D[Verify output]Timeline
timeline
title Plan Phases
Phase 1 : Add shell
Phase 2 : Add references
Phase 3 : Align docsJourney
journey
title User Review Journey
section Inspect
Open visualization: 4: User
Trace source links: 5: UserStatus Transitions
stateDiagram-v2
[*] --> Pending
Pending --> InProgress
InProgress --> Complete
InProgress --> BlockedActor Or System Interaction
sequenceDiagram
participant User
participant Agent
participant Source
User->>Agent: Request visualization
Agent->>Source: Read source files
Agent-->>User: HTML outputPriority Or Risk Map
quadrantChart
title Risk Priority
x-axis Low likelihood --> High likelihood
y-axis Low impact --> High impact
Missing source detail: [0.6, 0.5]Use a table fallback for risk maps when labels are long or quadrant placement is not source-backed.
Template Router
Choose the smallest template that fits the requested source.
Routes
| Source | Template | Output |
|---|---|---|
Standard plan folder with SUMMARY.md and phase-XX-*.md files | templates/plan.html | visualize.html plus visualize-assets/ in the plan folder |
| Single markdown or document file | templates/document.html | <source-base>.visualize.html plus <source-base>.visualize-assets/ beside the source |
| Conversation, pasted text, or arbitrary context | templates/context.html | visualize-YYMMDD-HHmm-<slug>.html plus matching assets in the current working directory unless specified |
Fallbacks
- Mixed inputs: use the dominant source type and add a source list block.
- Directory without plan files: treat as mixed context only if the user supplied enough content; otherwise ask.
- Missing requested file: stop and report the missing path.
- Multiple possible output locations: prefer source-adjacent output when a source path exists.
- Existing output file: overwrite only when that is the obvious user request or the file was generated in the current task; otherwise ask.
Asset Paths
Plan templates link ./visualize-assets/visualize-theme.css. Document and context outputs may need the asset folder name adjusted to <source-base>.visualize-assets/ or visualize-YYMMDD-HHmm-<slug>.visualize-assets/.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><!-- VISUALIZE:TITLE --></title>
<link rel="stylesheet" href="./visualize-assets/visualize-theme.css" />
<!-- Adjust href to ./visualize-YYMMDD-HHmm-slug.visualize-assets/visualize-theme.css when needed. -->
</head>
<body>
<main class="viz-shell">
<header class="viz-hero">
<p class="viz-kicker">Context Visualization</p>
<h1 class="viz-title"><!-- VISUALIZE:TITLE --></h1>
<p class="viz-summary"><!-- VISUALIZE:SUMMARY --></p>
<ul class="viz-meta">
<!-- VISUALIZE:SOURCE_META -->
</ul>
</header>
<section class="viz-grid">
<article class="viz-panel">
<h2>Context Map</h2>
<div class="mermaid">
<!-- VISUALIZE:MERMAID_CONTEXT -->
</div>
</article>
<article class="viz-panel half">
<h2>Decisions</h2>
<!-- VISUALIZE:DECISIONS -->
</article>
<article class="viz-panel half">
<h2>Recommendations</h2>
<!-- VISUALIZE:RECOMMENDATIONS -->
</article>
<article class="viz-panel">
<h2>Assumptions</h2>
<!-- VISUALIZE:ASSUMPTIONS -->
</article>
</section>
</main>
<script type="module">
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
mermaid.initialize({ startOnLoad: true });
</script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><!-- VISUALIZE:TITLE --></title>
<link rel="stylesheet" href="./visualize-assets/visualize-theme.css" />
<!-- Adjust href to ./<source-base>.visualize-assets/visualize-theme.css when needed. -->
</head>
<body>
<main class="viz-shell">
<header class="viz-hero">
<p class="viz-kicker">Document Visualization</p>
<h1 class="viz-title"><!-- VISUALIZE:TITLE --></h1>
<p class="viz-summary"><!-- VISUALIZE:SUMMARY --></p>
<ul class="viz-meta">
<!-- VISUALIZE:SOURCE_META -->
</ul>
</header>
<section class="viz-grid">
<article class="viz-panel half">
<h2>Section Map</h2>
<!-- VISUALIZE:SECTION_MAP -->
</article>
<article class="viz-panel half">
<h2>Key Takeaways</h2>
<!-- VISUALIZE:TAKEAWAYS -->
</article>
<article class="viz-panel">
<h2>Structure</h2>
<div class="mermaid">
<!-- VISUALIZE:MERMAID_STRUCTURE -->
</div>
</article>
<article class="viz-panel">
<h2>Warnings Or Assumptions</h2>
<!-- VISUALIZE:ASSUMPTIONS -->
</article>
</section>
</main>
<script type="module">
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
mermaid.initialize({ startOnLoad: true });
</script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><!-- VISUALIZE:TITLE --></title>
<link rel="stylesheet" href="./visualize-assets/visualize-theme.css" />
</head>
<body>
<main class="viz-shell">
<header class="viz-hero">
<p class="viz-kicker">Plan Visualization</p>
<h1 class="viz-title"><!-- VISUALIZE:TITLE --></h1>
<p class="viz-summary"><!-- VISUALIZE:SUMMARY --></p>
<ul class="viz-meta">
<!-- VISUALIZE:SOURCE_META -->
</ul>
</header>
<section class="viz-grid">
<article class="viz-panel">
<h2>Plan Flow</h2>
<div class="mermaid">
<!-- VISUALIZE:MERMAID_FLOW -->
</div>
</article>
<article class="viz-panel half">
<h2>Phase Timeline</h2>
<div class="viz-timeline">
<!-- VISUALIZE:PHASE_TIMELINE -->
</div>
</article>
<article class="viz-panel half">
<h2>Risks And Questions</h2>
<!-- VISUALIZE:RISKS -->
</article>
<article class="viz-panel">
<h2>Verification</h2>
<!-- VISUALIZE:VERIFICATION -->
</article>
</section>
</main>
<script type="module">
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
mermaid.initialize({ startOnLoad: true });
</script>
</body>
</html>
:root {
--viz-bg: #f7f5ef;
--viz-panel: #ffffff;
--viz-ink: #1f2528;
--viz-muted: #5f686d;
--viz-line: #d8d4c9;
--viz-accent: #0f766e;
--viz-accent-soft: #d9f2ed;
--viz-warn: #9a3412;
--viz-risk: #b91c1c;
--viz-radius: 8px;
--viz-shadow: 0 18px 45px rgba(31, 37, 40, 0.08);
font-family:
Inter,
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
background: var(--viz-bg);
color: var(--viz-ink);
font-size: 16px;
line-height: 1.55;
}
a {
color: var(--viz-accent);
}
.viz-shell {
width: min(1180px, calc(100% - 40px));
margin: 0 auto;
padding: 40px 0 56px;
}
.viz-hero {
display: grid;
gap: 14px;
padding: 28px 0 24px;
border-bottom: 1px solid var(--viz-line);
}
.viz-kicker {
margin: 0;
color: var(--viz-accent);
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.viz-title {
margin: 0;
max-width: 900px;
font-size: clamp(2rem, 5vw, 4.25rem);
line-height: 1.02;
letter-spacing: 0;
}
.viz-summary {
max-width: 840px;
margin: 0;
color: var(--viz-muted);
font-size: 1.05rem;
}
.viz-meta {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0;
padding: 0;
list-style: none;
}
.viz-pill {
border: 1px solid var(--viz-line);
border-radius: 999px;
padding: 5px 10px;
background: rgba(255, 255, 255, 0.6);
color: var(--viz-muted);
font-size: 0.86rem;
}
.viz-grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 18px;
margin-top: 22px;
}
.viz-panel {
grid-column: span 12;
border: 1px solid var(--viz-line);
border-radius: var(--viz-radius);
background: var(--viz-panel);
box-shadow: var(--viz-shadow);
padding: 20px;
}
.viz-panel.half {
grid-column: span 6;
}
.viz-panel.third {
grid-column: span 4;
}
.viz-panel h2,
.viz-panel h3 {
margin: 0 0 12px;
line-height: 1.15;
letter-spacing: 0;
}
.viz-list {
display: grid;
gap: 10px;
margin: 0;
padding-left: 1.1rem;
}
.viz-timeline {
display: grid;
gap: 12px;
}
.viz-step {
border-left: 4px solid var(--viz-accent);
padding: 10px 0 10px 14px;
}
.viz-step-title {
margin: 0;
font-weight: 700;
}
.viz-step-meta {
margin: 4px 0 0;
color: var(--viz-muted);
font-size: 0.92rem;
}
.viz-callout {
border: 1px solid var(--viz-line);
border-left: 5px solid var(--viz-accent);
border-radius: var(--viz-radius);
padding: 14px 16px;
background: var(--viz-accent-soft);
}
.viz-callout.warning {
border-left-color: var(--viz-warn);
background: #fff7ed;
}
.viz-callout.risk {
border-left-color: var(--viz-risk);
background: #fef2f2;
}
.viz-table {
width: 100%;
border-collapse: collapse;
font-size: 0.94rem;
}
.viz-table th,
.viz-table td {
border-bottom: 1px solid var(--viz-line);
padding: 10px 8px;
text-align: left;
vertical-align: top;
}
.mermaid {
overflow-x: auto;
padding: 12px;
border-radius: var(--viz-radius);
background: #fbfaf7;
}
@media (max-width: 760px) {
.viz-shell {
width: min(100% - 24px, 1180px);
padding-top: 24px;
}
.viz-panel,
.viz-panel.half,
.viz-panel.third {
grid-column: span 12;
}
.viz-title {
font-size: 2.2rem;
}
}
Verification
Run these checks before delivering a visualization.
Required Checks
- HTML file exists and opens as text without malformed template markers.
- CSS link resolves to a copied local
visualize-theme.css. - Mermaid CDN script is present when Mermaid blocks are used.
mermaid.initialize({ startOnLoad: true })is present.- Diagram containers are not empty and Mermaid source remains readable before render.
- Source metadata is visible.
- Text does not overlap at desktop width.
- Missing source content is shown as an assumption or warning, not silently filled in.
Optional Browser Check
When browser or Playwright tooling is available:
1. Open the generated HTML. 2. Capture a screenshot at desktop width. 3. Confirm the page is not blank. 4. Confirm the primary layout, Mermaid blocks, and warning/assumption blocks render without overlap.
Visualization Workflow
Use an HTML-first workflow for documentation visualization. The output should make source structure easier to inspect without changing the source material.
Checkpoints
- Small docs and standard plan folders: proceed in one pass, then verify.
- Ambiguous, mixed, or high-volume sources: ask once with the question tool before generating output.
- Missing source files: stop unless a safe fallback source was explicitly provided.
Source Extraction Checklist
Capture only source-backed content:
- Title or inferred title
- Source path
- Created or updated metadata when present
- Section map
- Tasks, statuses, owners, and dependencies when present
- Risks, mitigations, blockers, and open questions
- Decisions and recommendations
- Verification steps and expected results
- Explicit assumptions when the source leaves gaps
Composition Steps
1. Choose the route in router.md. 2. Copy the matching HTML template. 3. Copy templates/visualize-theme.css into the output assets folder. 4. Replace every VISUALIZE: marker with factual content or remove the unused block. 5. Add Mermaid only where it clarifies a process, timeline, state, dependency, or recommendation. 6. Run the checks in verification.md.
Related skills
FAQ
What can visualize NOT be used for?
It is not for brand sites, marketing pages, product prototypes, production web apps, or slide decks.
Does it fabricate content?
No. It does not invent facts, fake metrics, fake decisions, or unsupported recommendations, and flags missing source content.