Claude-skill-registry ln-150-presentation-creator
Builds interactive HTML presentation with 6 tabs (Overview, Requirements, Architecture/C4, Tech Spec, Roadmap, Guides). Creates presentation/README.md hub. L2 Worker under ln-100-documents-pipeline.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ln-150-presentation-creator" ~/.claude/skills/majiayu000-claude-skill-registry-ln-150-presentation-creator && rm -rf "$T"
skills/data/ln-150-presentation-creator/SKILL.mdHTML Presentation Builder
This skill creates an interactive, self-contained HTML presentation from existing project documentation. It transforms Markdown documents into a professional, navigable web presentation with diagrams, collapsible sections, and modern UI.
When to Use This Skill
This skill is a L2 WORKER invoked by ln-100-documents-pipeline orchestrator OR used standalone.
Use this skill when:
- Building HTML presentation from existing documentation
- Rebuilding presentation after documentation updates
- Creating standalone presentation for sharing (no full documentation setup needed)
- Validating that source documentation is ready for presentation generation
Part of workflow: ln-100-documents-pipeline → ln-110-project-docs-coordinator → ln-120-reference-docs-creator → ln-130-tasks-docs-creator → ln-140-test-docs-creator (optional) → ln-150-presentation-creator
Prerequisites: Existing documentation in
docs/ directory with required files:
(REQUIRED)docs/project/requirements.md
(REQUIRED)docs/project/architecture.md
(REQUIRED)docs/project/tech_stack.md
Optional files (enhance presentation but not blocking):
,docs/project/api_spec.md
,database_schema.md
,design_guidelines.mdrunbook.md
(ADRs with Category: Strategic|Technical)docs/reference/adrs/*.md
(How-to guides)docs/reference/guides/*.md
(Epic Story Counters for Roadmap)docs/tasks/kanban_board.md
How It Works
The skill follows a 7-phase workflow: READ DOCS → VALIDATE SOURCE EXISTS → VALIDATE SOURCE QUALITY → CREATE DIR → COPY TEMPLATES → INJECT CONTENT → BUILD HTML.
Phase 1: READ DOCS - Load all project documentation from docs/ Phase 2: VALIDATE SOURCE EXISTS - Check required files exist (requirements.md, architecture.md, tech_stack.md), warn if optional missing Phase 3: VALIDATE SOURCE QUALITY - Check diagrams, placeholders, content length (read-only validation) Phase 4: CREATE DIR - Create presentation/ directory + README.md navigation hub Phase 5: COPY TEMPLATES - Copy HTML/CSS/JS templates to assets/ Phase 6: INJECT CONTENT - Parse MD docs → replace placeholders in tab files → delete example blocks Phase 7: BUILD HTML - Assemble modular components into standalone presentation_final.html
Phase 1: Read Documentation
Objective: Load all project documentation for transformation.
When to execute: Always (first phase)
Process:
-
Use docs/ as source:
- Read documentation from
,docs/project/
,docs/reference/
directoriesdocs/tasks/ - Standard locations created by ln-114, ln-112, ln-113
- Read documentation from
-
Read Core MD Documents:
- Functional Requirementsproject/requirements.md
- Architecture design, C4 diagramsproject/architecture.md
- Technology versions, Docker configurationproject/tech_stack.md
- API endpoints, authentication (if exists)project/api_spec.md
- Database schema, ER diagrams (if exists)project/database_schema.md
- UI/UX design system (if exists)project/design_guidelines.md
- Operational procedures (if exists)project/runbook.md
-
Read ADRs (if exist):
throughreference/adrs/adr-001-*.mdadr-NNN-*.md- Parse ADR metadata (status, date, title, Category: Strategic|Technical)
-
Read Guides (if exist):
- How-to guides for Guides tabreference/guides/*.md
-
Read Kanban Board (if exists):
- Epic Story Counters table for Roadmap progresstasks/kanban_board.md
-
Extract metadata:
- Project name, date, version from documents
- Preserve Mermaid diagram blocks
Output: Loaded documentation data ready for validation and HTML generation
Phase 2: Validate Source Documentation Exists
Objective: Verify that required source documentation exists before building presentation. Prevent building incomplete presentations.
When to execute: After Phase 1 (documentation loaded)
Process:
2.1 Check required files
REQUIRED (must exist - block execution if missing):
- ✅
docs/project/requirements.md - ✅
docs/project/architecture.md - ✅
docs/project/tech_stack.md
For each required file:
- Use Glob tool:
pattern: "docs/project/{filename}" - If NOT found:
- Add to missing list
- If found:
- Check file size > 100 bytes (not empty)
If ANY required file missing or empty:
❌ ERROR: Cannot build presentation - missing required documentation: - docs/project/requirements.md [missing/empty] - docs/project/architecture.md [missing/empty] Suggestion: Run ln-111-project-docs-creator to create missing files. STOP execution.
2.2 Check optional files
OPTIONAL (enhance presentation - warn if missing but continue):
- ⚠️
(for backend projects)docs/project/api_spec.md - ⚠️
(for projects with database)docs/project/database_schema.md - ⚠️
(for frontend projects)docs/project/design_guidelines.md - ⚠️
(for operational projects)docs/project/runbook.md
For each optional file:
- Use Glob tool:
pattern: "docs/project/{filename}" - If NOT found:
- Add to optional missing list
If optional files missing:
⚠ WARN: Optional files missing: [list] Presentation will have reduced content in some tabs. Continue execution.
2.3 Check optional directories
OPTIONAL directories:
- check if any ADR files exist (docs/reference/adrs/
)adrs/*.md
- check if any guide files exist (docs/reference/guides/
)guides/*.md
- check for Roadmap datadocs/tasks/kanban_board.md
For each directory:
- Use Glob tool to find files
- If empty/missing:
- Log:
ℹ Optional directory empty: {directory} - related tab will show placeholder
- Log:
2.4 Report validation summary
Log summary:
✓ Source documentation validation completed: Required files: - ✅ requirements.md (found, 8.5 KB) - ✅ architecture.md (found, 15.2 KB) - ✅ tech_stack.md (found, 3.1 KB) Optional files: - ⚠️ api_spec.md (missing - Technical Spec tab will have reduced content) - ✅ database_schema.md (found, 4.7 KB) - ⚠️ design_guidelines.md (missing) Optional directories: - ✅ adrs/ (5 ADR files found) - ⚠️ guides/ (empty - Guides tab will show placeholder) - ✅ kanban_board.md (found - Roadmap will show progress)
Output: Validation passed (all required files exist) OR error (stop execution)
Phase 3: Validate Source Content Quality
Objective: Verify source docs contain sufficient content. Warn about incomplete content but don't block execution.
When to execute: After Phase 2 (source files exist)
Checks performed (warnings only, non-blocking):
- Mermaid diagrams: architecture.md must have ≥1 diagram, database_schema.md must have ER diagram
- Placeholders: Detect
,{{PLACEHOLDER}}
,[Add your ...]
patternsTODO: - Content length: requirements.md >500 words, architecture.md >1000 words, tech_stack.md >200 words
Auto-fix: None - ln-115 is read-only. Run ln-111-project-docs-creator to fix issues.
Output: Content quality report with warnings
📖 Detailed workflow: See references/phases_detailed.md
Phase 4: Create Presentation Directory & README
Objective: Setup presentation directory structure and navigation hub.
When to execute: After Phase 3 (source validation complete, warnings logged)
Process:
-
Create presentation directory:
mkdir -p docs/presentation/ -
Check if presentation/README.md exists:
- Use Glob tool:
pattern: "docs/presentation/README.md" - If file exists:
- Skip creation
- Log:
✓ docs/presentation/README.md already exists (preserved) - Proceed to Phase 5
- If NOT exists:
- Continue to step 3
- Use Glob tool:
-
Create presentation/README.md from template:
- Copy template:
→references/presentation_readme_template.mddocs/presentation/README.md - Replace placeholders:
— from requirements.md{{PROJECT_NAME}}
— current date (YYYY-MM-DD){{LAST_UPDATED}}
- Content structure:
- Purpose: What is this presentation
- Quick Navigation: Links to presentation_final.html and assets/
- Customization Guide: How to edit source files in assets/
- Build Instructions: How to rebuild after changes
- Maintenance: When to rebuild, verification checklist
- Copy template:
-
Notify user:
- If created:
✓ Created docs/presentation/README.md (navigation hub) - If skipped:
✓ docs/presentation/README.md already exists (preserved)
- If created:
Output: docs/presentation/README.md (created or existing)
Phase 5: Copy Templates to Project
Objective: Copy HTML/CSS/JS templates from skill references/ to presentation directory.
When to execute: After Phase 4 (presentation directory exists)
Process:
-
Check if assets exist:
- Use Glob tool:
pattern: "docs/presentation/assets/" - If
exists:docs/presentation/assets/- Skip copying (user may have customized files)
- Log:
✓ Presentation assets already exist - preserving user customizations - Proceed to Phase 6
- If NOT exists:
- Continue to step 2
- Use Glob tool:
-
Copy template files:
cp references/presentation_template.html → docs/presentation/assets/ cp references/styles.css → docs/presentation/assets/ cp references/scripts.js → docs/presentation/assets/ cp references/build-presentation.js → docs/presentation/assets/ cp -r references/tabs/ → docs/presentation/assets/tabs/ -
Verify copied structure:
docs/presentation/assets/ ├── presentation_template.html # Base HTML5 + 6 tab navigation ├── styles.css # ~400-500 lines ├── scripts.js # Tab switching + Mermaid init ├── build-presentation.js # Node.js build script └── tabs/ ├── tab_overview.html # Landing page ├── tab_requirements.html # FRs + ADRs ├── tab_architecture.html # C4 diagrams ├── tab_technical_spec.html # API + Data + Deployment ├── tab_roadmap.html # Epic list └── tab_guides.html # How-to guides
Output: Template files copied to docs/presentation/assets/ (or skipped if already exist)
Note: Templates contain placeholders (
{{VARIABLE_NAME}}) that will be replaced in Phase 6.
Phase 6: Content Injection & Example Cleanup
Objective: Parse MD docs, inject into HTML templates, remove example blocks.
When to execute: After Phase 5 (templates exist in assets/)
Process:
- Parse MD docs (10 sources): requirements, architecture, tech_stack, api_spec, database_schema, design_guidelines, runbook, adrs/.md, kanban_board, guides/.md
- Inject content: Replace
in 6 tab files with parsed content{{PLACEHOLDER}} - Delete examples: Remove
blocks from all tabs<!-- EXAMPLE START -->...<!-- EXAMPLE END -->
Tab placeholders: Overview (5), Requirements (4 + NFR ban), Architecture (5), Technical Spec (4), Roadmap (3), Guides (6)
Validation: No example markers, no hardcoded e-commerce data, only project-specific content
Output: Clean, project-specific tab files ready for build
📖 Placeholder reference & example transformation: See references/phases_detailed.md
Phase 7: Build Final Presentation
Objective: Assemble modular components into standalone HTML file.
When to execute: After Phase 6 (content injected, examples deleted)
Process:
-
Check if presentation_final.html exists (Auto-rebuild for automation):
- Use Glob tool:
pattern: "docs/presentation/presentation_final.html" - If file exists:
- ✓ Auto-rebuild (generated file, safe operation)
- Log:
ℹ Rebuilding presentation_final.html (generated file, safe to rebuild) - Continue to step 2
- If NOT exists:
- Log:
Creating presentation_final.html - Continue to step 2
- Log:
Why auto-rebuild:
- presentation_final.html is a generated file (source of truth: assets/ directory)
- Rebuilding is safe - no data loss (source files preserved in assets/)
- Maintains fully automatic workflow when invoked by ln-110-documents-pipeline
- User customizations in assets/ are preserved (only final HTML is regenerated)
- Use Glob tool:
-
Navigate to presentation assets directory:
cd docs/presentation/assets/ -
Run build script:
node build-presentation.js -
Build Script Process:
- Step 1: Read presentation_template.html
- Step 2: Read and inline styles.css →
tag<style> - Step 3: Read and inline scripts.js →
tag<script> - Step 4: Read all 6 tab files → inject into empty
containers<div> - Step 5: Replace {{PLACEHOLDERS}} with actual values
- Step 6: Write
../presentation_final.html
-
Validate Output (only if file was built):
- Check file size (~120-150 KB expected)
- Verify Mermaid diagrams syntax is valid
- Log:
✓ Build completed successfully
-
Notify user:
- If rebuilt (file existed):
✓ Rebuilt docs/presentation/presentation_final.html (~120-150 KB) - If created (file NOT existed):
✓ Created docs/presentation/presentation_final.html (~120-150 KB) - Remind:
Test in browser: Double-click to open, or use http-server
- If rebuilt (file existed):
Output: docs/presentation/presentation_final.html (self-contained, ~120-150 KB, no external dependencies except Mermaid.js CDN)
⚠️ Important Note:
presentation_final.html is a generated file built from modular source files in assets/.
- ❌ DO NOT edit
directly — changes will be lost on next rebuildpresentation_final.html - ✅ DO edit source files in
directory (template, tabs, styles, scripts)assets/ - 🔄 Rebuild after changes:
cd assets/ && node build-presentation.js
Complete Output Structure
docs/ ├── project/ # Source documentation (input) │ ├── requirements.md │ ├── architecture.md │ ├── tech_stack.md │ ├── api_spec.md (conditional) │ ├── database_schema.md (conditional) │ ├── design_guidelines.md (conditional) │ └── runbook.md (conditional) ├── reference/ # Source documentation (input) │ ├── adrs/ │ │ └── *.md (Category: Strategic | Technical) │ └── guides/ │ └── *.md (optional) ├── tasks/ # Source documentation (input) │ └── kanban_board.md (Epic Story Counters) └── presentation/ # Output directory ├── README.md # Navigation hub ├── presentation_final.html # Final standalone HTML (~120-150 KB) └── assets/ # Modular HTML structure ├── presentation_template.html # Base HTML5 + 6 tabs ├── styles.css # ~400-500 lines ├── scripts.js # Tab switching + Mermaid ├── build-presentation.js # Node.js build script └── tabs/ ├── tab_overview.html # Landing page ├── tab_requirements.html # FRs + ADRs ├── tab_architecture.html # C4 diagrams ├── tab_technical_spec.html # API + Data + Deployment ├── tab_roadmap.html # Epic list └── tab_guides.html # How-to guides
Note: Presentation READS from docs/project/, docs/reference/, docs/tasks/ but OUTPUTS to docs/presentation/.
HTML Features
- Single Source of Truth: No information duplication - each piece lives in exactly ONE tab
- Landing Page (Overview): Problem/Solution/Business Value, Stakeholders, Documentation Guide, Quick Facts, Tech Stack badges
- Interactive Navigation: 6 tabs with SCOPE tags, state persistence (localStorage), smooth transitions
- Table-Based Layout: FRs table only (Non-Functional Requirements are forbidden), Architecture highlights table
- Roadmap Simplified: Vertical Epic list with In/Out Scope sections, status badges, Dependencies/Success Criteria
- ADR Organization: Grouped by category (Strategic/Technical) with accordion, full content inline
- Diagram Visualization: Mermaid.js with tab-switch rerender (C4, ER, Sequence, Deployment)
- Responsive Design: Mobile-first (320px/768px/1024px+ breakpoints)
- Collapsible Sections: Auto-collapse with scroll preservation
- Modern UI: Clean professional design, WCAG 2.1 Level AA compliant
- English Language: All presentation content in English
Best Practices
Idempotent operation: Preserves README.md, preserves assets/ (user customizations), auto-rebuilds presentation_final.html.
Key rules by phase:
- Phase 2: STOP if required files missing; Phase 3: WARN only (non-blocking)
- Phase 5: Don't overwrite existing assets (user customizations)
- Phase 6: Delete ALL example blocks, escape XSS, valid Mermaid syntax
- Phase 7: Warn if output >200 KB
Customization Options
Edit
assets/styles.css (CSS variables for theming), assets/presentation_template.html (layout/tabs), or assets/tabs/*.html (tab content).
⚠️ After any customization: Always rebuild the presentation:
cd assets/ node build-presentation.js
Important: Never edit
presentation_final.html directly — it's a generated file that gets overwritten on each build.
Prerequisites
Orchestrator: ln-110-documents-pipeline | Standalone: Yes (rebuild/validate existing docs)
Required files: requirements.md, architecture.md, tech_stack.md (in docs/project/) Optional files: api_spec, database_schema, design_guidelines, runbook, adrs/.md, guides/.md, kanban_board.md
Dependencies: Node.js v18+, Modern browser, Internet (Mermaid CDN)
Definition of Done
| Phase | Critical Checkpoints |
|---|---|
| 1. READ DOCS | ✅ All docs loaded from docs/project/, docs/reference/, docs/tasks/ ✅ Metadata extracted ✅ Mermaid blocks preserved |
| 2. VALIDATE EXISTS | ✅ Required files exist (requirements.md, architecture.md, tech_stack.md) ✅ ERROR if missing |
| 3. VALIDATE QUALITY | ✅ Diagrams checked ✅ Placeholders detected ✅ Content length checked ✅ WARN only (non-blocking) |
| 4. CREATE DIR | ✅ docs/presentation/ created ✅ README.md created/preserved |
| 5. COPY TEMPLATES | ✅ assets/ created with all templates OR preserved if exists |
| 6. INJECT CONTENT | ✅ All 6 tabs populated ✅ CRITICAL: Example blocks deleted ✅ No markers ✅ No hardcoded e-commerce data |
| 7. BUILD HTML | ✅ executed ✅ presentation_final.html created (~120-150 KB) ✅ Tested in browser |
Output: docs/presentation/presentation_final.html + assets/ + README.md
Troubleshooting
- ERROR: Missing required files: Run ln-111-project-docs-creator to create requirements.md, architecture.md, tech_stack.md
- WARN: Missing diagrams: Add Mermaid diagrams to architecture.md (C4 Context/Container/Component) and database_schema.md (ER diagram)
- WARN: Placeholders found: Complete documentation in source MD files before building
- WARN: Sparse content: Expand documentation (requirements.md >500 words, architecture.md >1000 words, tech_stack.md >200 words)
- Build script fails: Check Node.js v18+, navigate to assets/, verify all files exist
- Mermaid diagrams not rendering: Check syntax with Mermaid Live Editor, verify CDN loaded
- Tabs not switching: Check JavaScript loaded, open browser console for errors
- File too large (>200 KB): Reduce diagrams, minify CSS/JS, remove unused rules
Version: 8.0.0 Last Updated: 2025-12-12