76df8b7ab6
Add owner-safe lesson catalog, fixture-backed capability statuses, CLI, and unit tests without live OAuth or connect scripts.
3.9 KiB
3.9 KiB
name, description, domain
| name | description | domain |
|---|---|---|
| setup-education | Owner-safe connect education and capability report | system |
setup-education
Owner-safe connect education and capability report.
Description
Guides the owner through connecting their SaaS integrations (Square, QBO, Vagaro) and messaging channels. Provides a capability report showing what is connected, what is offline/fixtures, and what was skipped.
All education text is owner-safe: browser/vendor UI steps only. Never terminal, docker, nano, or shell instructions.
What it does
- Presents 7 setup education lessons (matching
docs/SETUP_UX.mdsteps 1–7) - Builds a capability report from fixture or live connection state
- Labels all fixture data as
📋 FIXTURE DATA— never silent fake live data - Validates that education text never contains forbidden keywords
- Outputs structured text or JSON
Data sources
| Source | Status | Label in output |
|---|---|---|
| Fixtures (JSON) | ✅ Implemented | 📋 FIXTURE DATA |
| Live connection state | Not yet | LIVE DATA (future) |
Constraints
- Deterministic facts from fixtures; no model inference for capability data.
- Owner-safe: no terminal/docker/nano/shell instructions in education text.
- Fixtures/stubs only — no real OAuth, no live secrets.
- Fixture
is_fixtureflag alwaystrue— never silent as live.
Usage
CLI
# Build capability report from fixtures (default demo data)
python skills/setup-education/scripts/build_capability_report.py
# JSON output
python skills/setup-education/scripts/build_capability_report.py --format json
# Show a specific lesson
python skills/setup-education/scripts/build_capability_report.py --lesson 4
# Show all lessons
python skills/setup-education/scripts/build_capability_report.py --all-lessons
# Use a different fixture
python skills/setup-education/scripts/build_capability_report.py \
--fixtures data/fixtures/setup/capability_matrix_all_connected.json
Programmatic
from lumina_skills.providers.setup.fixture_provider import load_capability_fixture
from lumina_skills.setup.capability_report import format_capability_report_text
from lumina_skills.setup.lesson_catalog import get_lesson, format_lesson_text
# Capability report
report = load_capability_fixture("data/fixtures/setup/capability_matrix.json")
print(format_capability_report_text(report))
# Individual lesson
lesson = get_lesson(4)
print(format_lesson_text(lesson))
Output format
Text (default)
Structured text grouped by area (identity, profile, channels, scheduling, books) with emoji status labels and a summary line.
JSON
{
"salon_name": "Lumina Hair Studio & Spa",
"is_fixture": true,
"capabilities": [
{
"area": "channels",
"provider": "whatsapp",
"status": "connected",
"label": "✅ Connected",
"details": "WhatsApp channel active"
}
],
"summary": {
"connected": 4,
"offline": 2,
"skipped_or_later": 2,
"errors": 0,
"all_connected": false
}
}
Files
| Path | Purpose |
|---|---|
SKILL.md |
Skill spec and usage |
scripts/build_capability_report.py |
CLI entrypoint |
../../skills/_lib/lumina_skills/setup/capability_report.py |
Domain model + builder |
../../skills/_lib/lumina_skills/setup/lesson_catalog.py |
Static lesson steps |
../../skills/_lib/lumina_skills/providers/setup/fixture_provider.py |
Fixture loader |
../../data/fixtures/setup/ |
Fixture JSON files |
Design references
- Use case: E1 — Educational setup
- Use case: E6 — Capability report
- Use case: E7 — Degraded mode
- Setup UX: docs/SETUP_UX.md
- Deterministic boundary: design/det-vs-inf.md
Future
- Live connection state provider (replaces fixtures)
- Per-lesson progress tracking
- Automated lesson sequencing