# SPEC: Skill Dependency Manifest Generator ## Contract - **Script:** `scripts/dep_manifest.py` — scans a skill directory, outputs `dependency-manifest.json` - **Template:** `references/dep-template.md.j2` — renders manifest JSON into SKILL.md Dependencies section - **Output format:** JSON with fields: `imports`, `fileRefs`, `binDeps`, `skillDeps` - **Each entry:** `name`, `sourceRef`, `status` (ok/warn/error), `suggestion` - **Output location:** Skill root (same level as SKILL.md) ## Shared Constants - Status enum: `ok`, `warn`, `error` - Category fields: `imports`, `fileRefs`, `binDeps`, `skillDeps` - Entry schema: `{"name": str, "sourceRef": str, "status": str, "suggestion": str | null}` ## Backend (Socrates) Write to: /home/hoffmann_admin/.openclaw/shared/build-20260505/backend/ - Write `scripts/dep_manifest.py` - Accepts `` argument, output to skill root - Scans .py files for Python imports, SKILL.md for CLI deps and file refs - Validates file refs against filesystem - `--tree` flag for pretty-print, `--stdout` for JSON to stdout ## Frontend (Daedalus) Write to: /home/hoffmann_admin/.openclaw/shared/build-20260505/frontend/ - Write `references/dep-template.md.j2` - Self-contained Jinja2 template rendering from `manifest` variable - Summary table at top: category | total | ✅ pass | ⚠️ warn | ❌ error - Per-category tables: status | name | sourceRef | suggestion - Empty categories hidden in detail, still shown in summary ## Success Criteria 1. `python scripts/dep_manifest.py /path/to/skill` creates manifest.json 2. Template renders manifest into readable Dependencies section 3. Both work on the skill-creator itself 4. Zero existing functionality broken