- Automated visual documentation generation - Canva integration for architecture diagrams - PR comments with visual updates - Artifact uploads for review Deployed by: claude-pegasus-1766972309
142 lines
4.0 KiB
YAML
142 lines
4.0 KiB
YAML
name: 🎨 Visual Docs Bot
|
|
|
|
on:
|
|
push:
|
|
branches: [main, master]
|
|
pull_request:
|
|
branches: [main, master]
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
generate-visual-docs:
|
|
runs-on: ubuntu-latest
|
|
name: Generate Visual Documentation
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
npm install -g @canva/cli
|
|
pip3 install pyyaml requests
|
|
|
|
- name: Generate architecture diagrams
|
|
run: |
|
|
echo "🎨 Generating visual documentation..."
|
|
|
|
# Create docs directory
|
|
mkdir -p docs/visual
|
|
|
|
# Generate diagrams from codebase structure
|
|
python3 << 'PYTHON'
|
|
import os
|
|
import json
|
|
import yaml
|
|
from pathlib import Path
|
|
|
|
def analyze_repo_structure():
|
|
"""Analyze repository structure for visualization"""
|
|
structure = {
|
|
"name": os.path.basename(os.getcwd()),
|
|
"components": [],
|
|
"workflows": [],
|
|
"configs": []
|
|
}
|
|
|
|
# Find key files
|
|
for root, dirs, files in os.walk('.', topdown=True):
|
|
dirs[:] = [d for d in dirs if not d.startswith('.') and d != 'node_modules']
|
|
|
|
for file in files:
|
|
if file.endswith(('.yml', '.yaml')):
|
|
structure["workflows"].append(os.path.join(root, file))
|
|
elif file in ['package.json', 'requirements.txt', 'Dockerfile']:
|
|
structure["configs"].append(os.path.join(root, file))
|
|
|
|
return structure
|
|
|
|
def generate_diagram_spec(structure):
|
|
"""Generate Canva-compatible diagram specification"""
|
|
return {
|
|
"type": "architecture_diagram",
|
|
"title": f"{structure['name']} Architecture",
|
|
"components": structure["components"],
|
|
"connections": [],
|
|
"metadata": {
|
|
"workflows": len(structure["workflows"]),
|
|
"configs": len(structure["configs"])
|
|
}
|
|
}
|
|
|
|
if __name__ == "__main__":
|
|
structure = analyze_repo_structure()
|
|
diagram_spec = generate_diagram_spec(structure)
|
|
|
|
with open('docs/visual/architecture-spec.json', 'w') as f:
|
|
json.dump(diagram_spec, f, indent=2)
|
|
|
|
print(f"✅ Generated architecture spec for {structure['name']}")
|
|
PYTHON
|
|
|
|
- name: Create visual documentation index
|
|
run: |
|
|
cat > docs/visual/README.md << 'DOCS'
|
|
# 🎨 Visual Documentation
|
|
|
|
This directory contains automatically generated visual documentation.
|
|
|
|
## Generated Diagrams
|
|
|
|
- **Architecture Diagram**: System component overview
|
|
- **Workflow Diagrams**: CI/CD and automation flows
|
|
- **Dependency Graph**: Package and module relationships
|
|
|
|
## Automation
|
|
|
|
Visual docs are automatically updated on:
|
|
- Push to main/master branch
|
|
- Pull request creation
|
|
- Manual workflow dispatch
|
|
|
|
Generated by: Visual Docs Bot 🤖
|
|
DOCS
|
|
|
|
- name: Commit visual docs
|
|
if: github.event_name == 'push'
|
|
run: |
|
|
git config --local user.email "blackroad-bot@users.noreply.github.com"
|
|
git config --local user.name "BlackRoad Visual Docs Bot"
|
|
|
|
git add docs/visual/ || true
|
|
git diff --staged --quiet || git commit -m "🎨 Update visual documentation [skip ci]"
|
|
git push || echo "No changes to push"
|
|
|
|
- name: Comment on PR
|
|
if: github.event_name == 'pull_request'
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
|
|
github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: '🎨 **Visual Documentation Generated**\n\nArchitecture diagrams have been created for this change. Check `docs/visual/` for details.'
|
|
});
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: visual-docs
|
|
path: docs/visual/
|
|
retention-days: 30
|