fix: ai-presenter-video resolves its dir via ${HERMES_SKILL_DIR}, regen docs page

The shell `find ~/.hermes/skills ~/.hermes/hermes-agent/optional-skills ...`
snippet hardcoded a dev-clone path that does not exist on user installs; the
loader already substitutes ${HERMES_SKILL_DIR} (skills.template_vars), which
is what every other bundled skill uses. Drop the upstream-agent path mention.
Regenerated the docs page so it matches SKILL.md (also fixes the comfyui
related-skill link, which now lives under optional).
This commit is contained in:
teknium1
2026-09-13 19:47:21 -07:00
committed by Teknium
parent a79ff58d65
commit c8e155dcbf
2 changed files with 31 additions and 14 deletions

View File

@@ -34,16 +34,16 @@ the whisper/STT tooling, ffmpeg for everything deterministic).
## Hermes adaptations (read first)
- **Skill dir resolution** — upstream hardcoded `~/.codex/skills/...`. In
Hermes resolve it once per session:
- **Skill dir resolution** — upstream hardcoded its own agent's skills path.
In Hermes the loader expands `${HERMES_SKILL_DIR}` to this skill's installed
directory, so every command below uses that token directly:
```bash
SKILL_DIR="$(dirname "$(find ~/.hermes/skills ~/.hermes/hermes-agent/optional-skills -path '*/ai-presenter-video/SKILL.md' 2>/dev/null | head -1)")"
[ -f "$SKILL_DIR/SKILL.md" ] || echo "skill dir not found — locate ai-presenter-video/SKILL.md manually and set SKILL_DIR to its directory"
SKILL_DIR="${HERMES_SKILL_DIR}"
```
Shell variables do not persist between tool calls — re-paste the resolution
line (or the expanded path) in each terminal call that uses it.
Shell variables do not persist between tool calls — re-paste the assignment
(or the expanded path) in each terminal call that uses it.
- **Capability mapping** — where the references say "a voice generation
capability", use `text_to_speech` (OpenAI/Edge/ElevenLabs per user config);
"presenter/avatar generation" → FAL image-to-video families (Kling, Wan,

View File

@@ -21,7 +21,7 @@ Make a verified AI presenter video from script + image.
| License | MIT |
| Platforms | linux, macos |
| Tags | `video`, `presenter`, `avatar`, `lipsync`, `tts`, `captions`, `creative` |
| Related skills | [`hyperframes`](/docs/user-guide/skills/optional/creative/creative-hyperframes), [`kanban-video-orchestrator`](/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator), [`comfyui`](/docs/user-guide/skills/bundled/creative/creative-comfyui) |
| Related skills | [`hyperframes`](/docs/user-guide/skills/optional/creative/creative-hyperframes), [`kanban-video-orchestrator`](/docs/user-guide/skills/optional/creative/creative-kanban-video-orchestrator), [`comfyui`](/docs/user-guide/skills/optional/creative/creative-comfyui) |
## Reference: full SKILL.md
@@ -49,15 +49,16 @@ the whisper/STT tooling, ffmpeg for everything deterministic).
## Hermes adaptations (read first)
- **Skill dir resolution** — upstream hardcoded `~/.codex/skills/...`. In
Hermes resolve it once per session:
- **Skill dir resolution** — upstream hardcoded its own agent's skills path.
In Hermes the loader expands `${HERMES_SKILL_DIR}` to this skill's installed
directory, so every command below uses that token directly:
```bash
SKILL_DIR="$(dirname "$(find ~/.hermes/skills ~/.hermes/hermes-agent/optional-skills -path '*/ai-presenter-video/SKILL.md' 2>/dev/null | head -1)")"
SKILL_DIR="${HERMES_SKILL_DIR}"
```
Shell variables do not persist between tool calls — re-paste the resolution
line (or the expanded path) in each terminal call that uses it.
Shell variables do not persist between tool calls — re-paste the assignment
(or the expanded path) in each terminal call that uses it.
- **Capability mapping** — where the references say "a voice generation
capability", use `text_to_speech` (OpenAI/Edge/ElevenLabs per user config);
"presenter/avatar generation" → FAL image-to-video families (Kling, Wan,
@@ -104,14 +105,30 @@ the whisper/STT tooling, ffmpeg for everything deterministic).
2. **Manual input review.** Actually look at the presenter image
(`vision_analyze`) and listen to any voice sample; record findings by
setting the `manual_input_review` booleans in `job.json`. Then gate:
setting the `manual_input_review` booleans in `job.json`, e.g.:
```bash
python3 - <<'PY'
import json
p = "~/Videos/my-presenter-video/job.json" # expand ~ or use an absolute path
import os; p = os.path.expanduser(p)
j = json.load(open(p))
j["manual_input_review"].update(image_viewed=True, single_clear_face=True,
image_has_no_unwanted_text=True)
json.dump(j, open(p, "w"), indent=2)
PY
```
Then gate:
```bash
python3 "$SKILL_DIR/scripts/preflight.py" ~/Videos/my-presenter-video/job.json
```
Proceed only when `ok: true`; do remote generation only when
`remote_ready: true`.
`remote_ready: true`. Note: preflight also updates `job.json` in place
(records the report path) — re-read it after running rather than editing
a stale copy.
3. **Lock content and audio** — read `references/generation.md`. Script →
full narration via `text_to_speech` → ASR-verify the narration against the