mirror of
https://github.com/pssah4/vault-operator.git
synced 2026-07-22 07:01:22 +00:00
Cleanup pass for the directories the earlier batches missed:
- bundled-skills/obsilo-guide -> vault-operator-guide (dir + SKILL.md content +
frontmatter name; trigger regex now matches "vault operator" too, keeps
"obsilo" so users who still call it the old name during the transition still
hit the guide). main.js rebuilt (bundled skills are embedded).
- relay/ (Cloudflare Worker sub-project): README + index.ts prose/messages
rebranded; the worker name `obsilo-relay` and the `relay: 'obsilo'` health-
check field are KEPT (renaming would orphan existing relay deployments and
break clients that read the health field).
- tools/template-analyzer/README.md rebranded.
- CHANGELOG.md / README.md leftover prose ("obsilo Releases", `cd obsilo`,
German possessive "Obsilos" -> "Vault Operators").
- _devprocess/*.md: German possessives + code-snippet identifiers in historical
ADRs/specs (ObsiloPlugin/ObsiloEmbeddingProvider/ObsiloSettings/...). Audit-
report filenames (AUDIT-NNN-obsilo-*.md) are left as-is -- renaming them would
break every link to them; they are archival artifacts.
KEPT (data/protocol identifiers, as before): the `obsilo` surface tag in
docs/code, obsidian://obsilo-chat protocol, .obsilo-vault folders, OBSILO_PUBLIC_TOKEN
secret, obsilo-relay worker name, source_interface defaults.
Build clean, 1356 tests green. Phase B + D complete.
Refs: rebrand to Vault Operator (Phase B+D cleanup)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| .gitignore | ||
| README.md | ||
Vault Operator Template Analyzer
Analyzes a PPTX template and generates a Visual Design Language (VDL) Skill document for use in Vault Operator.
Prerequisites
- Python 3.11+
- LibreOffice (for slide rendering)
- OpenRouter API Key (openrouter.ai/keys)
macOS
brew install --cask libreoffice
Linux (Ubuntu/Debian)
sudo apt install libreoffice
Setup
cd tools/template-analyzer
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Usage
Web UI (Streamlit)
streamlit run app.py
Opens a browser with:
- OpenRouter API Key input
- Model Picker (curated suggestions + live fetch from OpenRouter)
- File upload for .pptx
- Analyze button
- Download the generated SKILL.md
CLI
python analyze.py path/to/template.pptx --api-key sk-or-... --output skill.md
Options:
--api-key(required): Your OpenRouter API key--model: OpenRouter model ID (default:anthropic/claude-sonnet-4.5)--output/-o: Output file path (default:{template-name}-skill.md)
How It Works
- python-pptx: Extracts shapes, positions, text, placeholders, theme colors, fonts
- LibreOffice headless: Renders each slide to PNG for visual analysis
- Heuristic classification: Pre-classifies slides by shape patterns (chevrons, grids, etc.)
- Claude Vision (via OpenRouter): Analyzes slide images + structural data for semantic interpretation
- VDL generation: Produces a SKILL.md with compositions, brand DNA, and shape mappings
Output Format
The generated SKILL.md follows the Visual Design Language format:
---
name: template-name
description: Template Name -- N Slides, M Compositions
trigger: template|name
source: user
requiredTools: [create_pptx]
---
# Template Name -- Visual Design Language
## Brand-DNA
- Primary: #hex | Accent: #hex, #hex
- Heading: Font | Body: Font
## Compositions
### Composition Name (Slides 1, 5, 12)
**Meaning**: What this layout communicates
**Use when**: Content scenario
## Compositions by Narrative Phase
| Phase | Compositions | Rationale |
...
## Design Rules
...
Import the generated file as a User Skill in Vault Operator (Settings > Skills > Import).
Customization
The Claude Vision prompt is in prompts/vision-prompt.md. Edit it to adjust how slides are interpreted -- for example, to add domain-specific composition types or refine classification criteria.