--- name: ln-115-presentation-creator description: Builds interactive HTML presentation with 6 tabs (Overview, Requirements, Architecture/C4, Tech Spec, Roadmap, Guides). Creates presentation/README.md hub. Worker under ln-110-documents-pipeline. --- # HTML 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 WORKER** invoked by **ln-110-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-110-documents-pipeline → ln-111-root-docs-creator → ln-112-reference-docs-creator → ln-113-tasks-docs-creator → ln-114-project-docs-creator → **ln-115-presentation-creator** **Prerequisites**: Existing documentation in `docs/` directory with **required files**: - `docs/project/requirements.md` (REQUIRED) - `docs/project/architecture.md` (REQUIRED) - `docs/project/tech_stack.md` (REQUIRED) **Optional files** (enhance presentation but not blocking): - `docs/project/api_spec.md`, `database_schema.md`, `design_guidelines.md`, `runbook.md` - `docs/reference/adrs/*.md` (ADRs with Category: Strategic|Technical) - `docs/reference/guides/*.md` (How-to guides) - `docs/tasks/kanban_board.md` (Epic Story Counters for Roadmap) ## 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**: 1. **Use docs/ as source**: - Read documentation from `docs/project/`, `docs/reference/`, `docs/tasks/` directories - Standard locations created by ln-114, ln-112, ln-113 2. **Read Core MD Documents**: - `project/requirements.md` - Functional Requirements - `project/architecture.md` - Architecture design, C4 diagrams - `project/tech_stack.md` - Technology versions, Docker configuration - `project/api_spec.md` - API endpoints, authentication (if exists) - `project/database_schema.md` - Database schema, ER diagrams (if exists) - `project/design_guidelines.md` - UI/UX design system (if exists) - `project/runbook.md` - Operational procedures (if exists) 3. **Read ADRs** (if exist): - `reference/adrs/adr-001-*.md` through `adr-NNN-*.md` - Parse ADR metadata (status, date, title, Category: Strategic|Technical) 4. **Read Guides** (if exist): - `reference/guides/*.md` - How-to guides for Guides tab 5. **Read Kanban Board** (if exists): - `tasks/kanban_board.md` - Epic Story Counters table for Roadmap progress 6. **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: 1. Use Glob tool: `pattern: "docs/project/{filename}"` 2. If NOT found: - Add to missing list 3. 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-114-project-docs-creator to create missing files. STOP execution. ``` ### 2.2 Check optional files **OPTIONAL** (enhance presentation - warn if missing but continue): - ⚠️ `docs/project/api_spec.md` (for backend projects) - ⚠️ `docs/project/database_schema.md` (for projects with database) - ⚠️ `docs/project/design_guidelines.md` (for frontend projects) - ⚠️ `docs/project/runbook.md` (for operational projects) For each optional file: 1. Use Glob tool: `pattern: "docs/project/{filename}"` 2. 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:** - `docs/reference/adrs/` - check if any ADR files exist (`adrs/*.md`) - `docs/reference/guides/` - check if any guide files exist (`guides/*.md`) - `docs/tasks/kanban_board.md` - check for Roadmap data For each directory: 1. Use Glob tool to find files 2. If empty/missing: - Log: `ℹ Optional directory empty: {directory} - related tab will show placeholder` ### 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 that source docs contain sufficient content for presentation generation. Warn about incomplete content but don't block execution. **When to execute**: After Phase 2 (source files exist) **Process**: ### 3.1 Check for Mermaid diagrams **Required diagrams:** - `architecture.md` MUST have at least 1 Mermaid diagram (preferably C4 Context) - `database_schema.md` (if exists) MUST have ER diagram For each file: 1. Read file content 2. Search for Mermaid code blocks: ` ```mermaid` 3. Count diagrams **If diagrams missing:** ``` ⚠ WARN: Missing diagrams in architecture.md Expected: At least 1 Mermaid diagram (C4 Context, Container, or Component) Found: 0 diagrams Presentation Architecture tab will have incomplete visualization. Suggestion: Add C4 diagrams to architecture.md before building. ``` ### 3.2 Check for placeholders **Placeholder patterns to detect:** - `{{PLACEHOLDER}}` (template placeholder) - `[Add your ...]` (instruction placeholder) - `TODO:` (incomplete content marker) For each source file: 1. Read file content 2. Search for placeholder patterns (case-insensitive) 3. Collect matches with line numbers **If placeholders found:** ``` ⚠ WARN: Source docs contain placeholders: - requirements.md:42 - {{PROJECT_DESCRIPTION}} - tech_stack.md:15 - [Add your technology rationale] - api_spec.md:8 - TODO: Add authentication endpoints Presentation will show incomplete content. Suggestion: Complete placeholders before building for professional result. ``` ### 3.3 Check content length **Minimum expected lengths:** - `requirements.md` > 500 words - `architecture.md` > 1000 words - `tech_stack.md` > 200 words For each file: 1. Read file content 2. Count words (split by whitespace, exclude code blocks) 3. Compare to threshold **If content too short:** ``` ⚠ WARN: Sparse content detected: - requirements.md: 320 words (expected >500) - tech_stack.md: 150 words (expected >200) Presentation may look incomplete with thin content. Suggestion: Expand documentation before building. ``` ### 3.4 Auto-fix opportunities **None** - ln-115 is **read-only** for source docs: - ❌ Does NOT edit markdown documentation - ✅ Only READS and TRANSFORMS to HTML **If issues found:** ``` 💡 To fix content issues: - Run ln-114-project-docs-creator to complete documentation - Manually edit source files in docs/project/ - Re-run ln-115-presentation-creator after fixes ``` ### 3.5 Report content quality summary Log summary: ``` ✓ Content quality validation completed: Diagrams: - ✅ architecture.md: 3 Mermaid diagrams found (C4 Context, Container, Component) - ⚠️ database_schema.md: No ER diagram found Placeholders: - ⚠️ Found 2 placeholders in 2 files (see details above) Content length: - ✅ requirements.md: 1,250 words - ✅ architecture.md: 2,100 words - ⚠️ tech_stack.md: 180 words (expected >200) Warnings: 3 (non-blocking) Recommendation: Address warnings for professional result, or continue with current content. ``` **Output**: Content quality report (warnings only, does not block execution) --- ## 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**: 1. **Create presentation directory**: ```bash mkdir -p docs/presentation/ ``` 2. **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 3. **Create presentation/README.md from template**: - Copy template: `references/presentation_readme_template.md` → `docs/presentation/README.md` - Replace placeholders: - `{{PROJECT_NAME}}` — from requirements.md - `{{LAST_UPDATED}}` — current date (YYYY-MM-DD) - 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 4. **Notify user**: - If created: `✓ Created docs/presentation/README.md (navigation hub)` - If skipped: `✓ docs/presentation/README.md already exists (preserved)` **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**: 1. **Check if assets exist**: - Use Glob tool: `pattern: "docs/presentation/assets/"` - If `docs/presentation/assets/` exists: - 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 2. **Copy template files**: ```bash 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/ ``` 3. **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 documentation, inject into HTML templates, and remove example blocks to create project-specific presentation. **When to execute**: After Phase 5 (templates exist in assets/) **Process**: ### 6.1 Read and Parse MD Documents Read and parse the following documentation files (from Phase 1): 1. **requirements.md**: Project name, tagline, business goal, functional requirements, constraints, success criteria 2. **architecture.md**: Architecture diagrams (C4 Context/Container/Component), solution strategy, quality attributes 3. **tech_stack.md**: Technology Stack table (with versions, rationale, ADR links), Docker configuration 4. **api_spec.md** (if exists): API endpoints, authentication methods, error codes 5. **database_schema.md** (if exists): ER diagrams, data dictionary (tables/columns/types) 6. **design_guidelines.md** (if exists): Typography, colors, component library, accessibility 7. **runbook.md** (if exists): Development setup, deployment procedures, troubleshooting 8. **adrs/*.md**: All ADR files (parse title, status, category, content) 9. **kanban_board.md** (if exists): Epic Story Counters table for Roadmap progress 10. **guides/*.md** (if exist): How-to guides for Guides tab ### 6.2 Inject Content into Templates Replace placeholders in copied template files with parsed content from project documentation. **Key Placeholders (in tab templates):** **Overview Tab** (`tab_overview.html`): - `{{PROJECT_SUMMARY}}` — Problem/Solution/Business Value structure (3 sections) - `{{TECH_STACK}}` — Technology badges (brief list only) - `{{STAKEHOLDERS}}` — Stakeholder cards with names and roles - `{{QUICK_FACTS}}` — Project Status, Total Epics, Deployment Model, Target Platforms - `{{NAVIGATION_GUIDE}}` — Documentation guide with tab descriptions **Requirements Tab** (`tab_requirements.html`): - `{{FUNCTIONAL_REQUIREMENTS}}` — FRs table (ID, Priority, Requirement, Acceptance Criteria) - `{{ADR_STRATEGIC}}` — Strategic ADRs grouped section with accordion - `{{ADR_TECHNICAL}}` — Technical ADRs grouped section with accordion - `{{SUCCESS_CRITERIA}}` — Project success metrics - **Non-Functional Requirements are banned**: Drop any NFR content found in source docs instead of converting it into tables or IDs **Architecture Tab** (`tab_architecture.html`): - `{{C4_CONTEXT}}` — System Context diagram (C4 Level 1) - `{{C4_CONTAINER}}` — Container diagram (C4 Level 2) - `{{C4_COMPONENT}}` — Component diagram (C4 Level 3) - `{{DEPLOYMENT_DIAGRAM}}` — Infrastructure deployment diagram - `{{ARCHITECTURE_NOTES}}` — Key architecture highlights table **Technical Spec Tab** (`tab_technical_spec.html`): - `{{TECH_STACK_TABLE}}` — Full technology stack table with versions and purposes - `{{API_ENDPOINTS}}` — API endpoints tables (Authentication, Products, Cart, etc.) - `{{DATA_MODELS}}` — ER diagram + Data dictionary table - `{{TESTING_STRATEGY}}` — Risk-Based Testing approach and test pyramid **Roadmap Tab** (`tab_roadmap.html`): - `{{EPIC_CARDS}}` — All Epic cards with In/Out Scope, Dependencies, Success Criteria, Progress - `{{OUT_OF_SCOPE_ITEMS}}` — Project-level out-of-scope items with reasons - `{{ROADMAP_LEGEND}}` — Status badges explanation **Guides Tab** (`tab_guides.html`): - `{{GETTING_STARTED}}` — Prerequisites, Installation, Verification - `{{HOW_TO_GUIDES}}` — Step-by-step how-to guides (from guides/*.md) - `{{BEST_PRACTICES}}` — Code style, Testing approach, Design patterns - `{{TROUBLESHOOTING}}` — Common problems and solutions - `{{CONTRIBUTING}}` — Contributing guidelines - `{{EXTERNAL_RESOURCES}}` — Links to external documentation **Placeholder Replacement Logic:** - Use **Edit** tool to replace `{{PLACEHOLDER}}` → actual content from project docs - For lists/arrays: generate HTML dynamically (e.g., loop through ADRs, create `
` elements) - For Kanban: parse kanban_board.md → calculate progress % → generate Epic card HTML - Preserve SCOPE tags in tab files (HTML comments at top) - Escape special characters to prevent XSS - Generate valid Mermaid syntax ### 6.3 Delete Example Blocks **CRITICAL**: Remove all example content blocks to create project-specific presentation. **Process**: 1. **Search for example markers** in all 6 tab files: - Look for `` - Look for `` 2. **Delete example blocks** using Edit tool: - Remove everything between `` and `` (inclusive) - Do this for ALL occurrences across all 6 tab files - Leave only the actual project content that replaced `{{PLACEHOLDER}}` comments 3. **Validate cleanup**: - ✅ NO `` markers should remain - ✅ NO `` markers should remain - ✅ NO hardcoded e-commerce examples (John Smith, React 18 badges, Stripe, etc.) - ✅ Only actual project data should be visible in tab files **Example transformation:** **Before (dual-content template):** ```html

The Problem

Traditional e-commerce platforms struggle...

``` **After Step 6.2 (placeholder replaced):** ```html

The Problem

Our healthcare system needs unified patient records...

The Problem

Traditional e-commerce platforms struggle...

``` **After Step 6.3 (examples deleted):** ```html

The Problem

Our healthcare system needs unified patient records...

``` **Output**: Clean, project-specific tab files with NO example content, ready for build --- ## Phase 7: Build Final Presentation **Objective**: Assemble modular components into standalone HTML file. **When to execute**: After Phase 6 (content injected, examples deleted) **Process**: 1. **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 **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) 2. **Navigate to presentation assets directory**: ```bash cd docs/presentation/assets/ ``` 3. **Run build script**: ```bash node build-presentation.js ``` 4. **Build Script Process**: - **Step 1**: Read presentation_template.html - **Step 2**: Read and inline styles.css → `