Files
gh-levnikolaevich-claude-co…/skills/ln-115-presentation-creator/SKILL.md
2025-11-30 08:37:27 +08:00

786 lines
31 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 `<details>` 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 `<!-- EXAMPLE START: Remove this block after replacing placeholder -->`
- Look for `<!-- EXAMPLE END -->`
2. **Delete example blocks** using Edit tool:
- Remove everything between `<!-- EXAMPLE START -->` and `<!-- EXAMPLE END -->` (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 `<!-- EXAMPLE START -->` markers should remain
- ✅ NO `<!-- EXAMPLE END -->` 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
<!-- PLACEHOLDER: {{PROJECT_SUMMARY}} -->
<!-- EXAMPLE START: Remove this block after replacing placeholder -->
<div class="project-summary">
<h3>The Problem</h3>
<p>Traditional e-commerce platforms struggle...</p>
</div>
<!-- EXAMPLE END -->
```
**After Step 6.2 (placeholder replaced):**
```html
<div class="project-summary">
<h3>The Problem</h3>
<p>Our healthcare system needs unified patient records...</p>
</div>
<!-- EXAMPLE START: Remove this block after replacing placeholder -->
<div class="project-summary">
<h3>The Problem</h3>
<p>Traditional e-commerce platforms struggle...</p>
</div>
<!-- EXAMPLE END -->
```
**After Step 6.3 (examples deleted):**
```html
<div class="project-summary">
<h3>The Problem</h3>
<p>Our healthcare system needs unified patient records...</p>
</div>
```
**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 → `<style>` tag
- **Step 3**: Read and inline scripts.js → `<script>` tag
- **Step 4**: Read all 6 tab files → inject into empty `<div>` containers
- **Step 5**: Replace {{PLACEHOLDERS}} with actual values
- **Step 6**: Write `../presentation_final.html`
5. **Validate Output** (only if file was built):
- Check file size (~120-150 KB expected)
- Verify Mermaid diagrams syntax is valid
- Log: `✓ Build completed successfully`
6. **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`
**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 `presentation_final.html` directly** — changes will be lost on next rebuild
- ✅ **DO edit source files** in `assets/` directory (template, tabs, styles, scripts)
- 🔄 **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
- ✅ Checks file existence before creation (presentation/README.md)
- ✅ Auto-rebuild: Always rebuilds presentation_final.html (generated file)
- ✅ Assets preservation: Skips copying templates if assets/ exists (preserves customizations)
- ✅ Safe re-runs: Can invoke multiple times without data loss
### During Documentation Reading (Phase 1)
- Validate paths: Check docs/ exists before reading
- Graceful degradation: Continue if some files missing (warn user)
- Extract metadata: Pull project name, date, version
- Parse Mermaid blocks: Preserve diagram syntax
### During Source Validation (Phase 2/3)
- **Phase 2**: STOP execution if required files missing (requirements.md, architecture.md, tech_stack.md)
- **Phase 3**: WARN about quality issues but don't block (missing diagrams, placeholders, sparse content)
- Provide actionable suggestions: "Run ln-114 to complete docs"
- Read-only: Never edit source docs
### During Template Copying (Phase 5)
- Check existing assets: Don't overwrite user-customized templates
- Verify directory structure: Ensure tabs/ subdirectory created
- Preserve permissions: Maintain executable permissions for build script
### During Content Injection & Cleanup (Phase 6)
- Preserve Markdown formatting: Convert MD → HTML correctly
- Generate valid Mermaid syntax: Test all diagram syntax
- Escape special characters: Prevent XSS vulnerabilities
- Use semantic HTML: Proper heading hierarchy, ARIA labels
- Preserve SCOPE tags: Keep HTML comments in tab files
- **Complete example cleanup**: Ensure ALL example blocks deleted
- **Verify project-specific content**: NO hardcoded e-commerce examples in final tabs
### During Build (Phase 7)
- Validate Node.js availability: Check `node --version` before running
- Handle errors gracefully: Provide clear error messages
- Test output: Open presentation_final.html to verify rendering
- Size check: Warn if file >200 KB (may indicate issues)
---
## 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:
```bash
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 (invokes this worker in final step)
**Standalone usage**: Can also be invoked directly for:
- Rebuilding HTML presentation after documentation updates
- Creating standalone presentation for existing docs
- Validating source documentation readiness
**Source Documentation Requirements**:
- **Required files** (must exist):
- docs/project/requirements.md
- docs/project/architecture.md
- docs/project/tech_stack.md
- **Optional files** (enhance presentation):
- docs/project/api_spec.md, database_schema.md, design_guidelines.md, runbook.md
- docs/reference/adrs/*.md (with Category field)
- docs/reference/guides/*.md
- docs/tasks/kanban_board.md
**Quality Recommendations** (warnings only, not blocking):
- architecture.md should have Mermaid diagrams (C4 Context/Container/Component)
- database_schema.md should have ER diagram
- Source docs should NOT contain placeholders (`{{PLACEHOLDER}}`, `[Add your...]`)
- Minimum content length: requirements.md >500 words, architecture.md >1000 words, tech_stack.md >200 words
**Dependencies**:
- Node.js v18+ (for build-presentation.js)
- Modern browser (Chrome/Firefox/Safari/Edge last 2 versions)
- Internet connection (Mermaid.js CDN, optional)
**Idempotent**: Yes - can be invoked multiple times without side effects:
- Preserves existing README.md
- Preserves existing assets/ (user customizations)
- Always rebuilds presentation_final.html (generated file)
---
## 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 `<!-- EXAMPLE -->` markers ✅ No hardcoded e-commerce data |
| **7. BUILD HTML** | ✅ `node build-presentation.js` executed ✅ presentation_final.html created (~120-150 KB) ✅ Tested in browser |
**Output:** docs/presentation/presentation_final.html + assets/ + README.md
---
## Example Usage
User: "Build HTML presentation"
Process:
1. **READ DOCS** - Load documentation from docs/project/, docs/reference/, docs/tasks/
2. **VALIDATE SOURCE EXISTS** - Check requirements.md, architecture.md, tech_stack.md exist (ERROR if missing)
3. **VALIDATE SOURCE QUALITY** - Check diagrams, placeholders, content length (WARN if issues, but continue)
4. **CREATE DIR** - Create docs/presentation/ + README.md navigation hub
5. **COPY TEMPLATES** - Copy HTML/CSS/JS templates to assets/ (or preserve existing)
6. **INJECT CONTENT** - Parse MD docs → replace placeholders in tabs → delete example blocks
7. **BUILD HTML** - Assemble modular components → standalone presentation_final.html (~120-150 KB)
Output: docs/presentation/presentation_final.html (6 tabs: Overview, Requirements, Architecture, Technical Spec, Roadmap, Guides) + docs/presentation/README.md (navigation hub) + docs/presentation/assets/ (modular source files)
---
## Troubleshooting
- **ERROR: Missing required files**: Run ln-114-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
---
## Technical Details
**Standards**: HTML5, CSS3 (Flexbox/Grid/Variables), ES6+, WCAG 2.1 Level AA, Mobile-first responsive design, Progressive enhancement, Mermaid.js v11
**Dependencies**:
- Node.js v18+ (build script)
- Modern browser (Chrome/Firefox/Safari/Edge last 2 versions)
- Internet connection (Mermaid.js CDN, optional)
**Language**: English only (all presentation content)
---
**Version:** 7.0.0 (MAJOR: Added Phase 2/3 validation (source docs existence + content quality). Removed ln-120-docs-validator references. Renumbered phases (2-5 → 4-7). Unified READ+VALIDATE+CREATE workflow. Read-only source validation.)
**Last Updated:** 2025-11-18