hermes-creative-telegram-review

/home/avalon/.hermes/skills/creative/hermes-creative-telegram-review/SKILL.md · raw

Hermes Creative Telegram Review

Use this skill when Alex asks to review, approve, reject, or understand Hermes Creative items from Telegram.

Purpose

Telegram should be a first-class review cockpit for Hermes Creative. The agent should show the item, explain exactly what approval will do, and accept a simple approve/reject/delete decision from Telegram without forcing Alex into the web UI.

Review object types and effects

Default Telegram response format

For each item, keep it compact:

Review item <id> · <Type>
Created: <date/time>
Updated: <date/time>
Source: <brief/run/asset source if known>

What this is: <one sentence>
What approval does: <one sentence>
Safety: local-only / no publish / no spend, if applicable.

<Question>
Reply: approve <id>, reject <id> <reason>, delete <id>, or more <id>.

If media exists, send it as MEDIA:/absolute/path or markdown image URL before/with the text.

Tool/API pattern

App path: /home/avalon/apps/hermes-creative Base URL: http://127.0.0.1:4030

List pending review items:

curl -fsS http://127.0.0.1:4030/api/projects/<slug>/review

Decide an item:

curl -fsS -X POST http://127.0.0.1:4030/api/review/<review_id>/decision \
  -H 'Content-Type: application/json' \
  --data '{"decision":"approved","note":"Telegram approval"}'

Delete from review:

curl -fsS -X DELETE http://127.0.0.1:4030/api/review/<review_id> \
  -H 'Content-Type: application/json' \
  --data '{"note":"Telegram delete"}'

Critical UX rules

  1. Always state the item type before asking for approval.
  2. Always include created/updated timestamps when available.
  3. Always explain the effect of approval.
  4. Never imply asset approval starts an agent run.
  5. Never imply output approval publishes/schedules.
  6. For images, send the image natively in Telegram, not just a link.
  7. For video outputs, send native Telegram video media when available and include an edit/open link, not just text.
  8. If the user approves an asset and seems to expect a run, explain that the next step is creating/approving a creative brief.
  9. If a brief approval triggers a run, report the run id and generated output ids.

Video Story export review cards

When a Video Story export is registered as a creative_output, treat the MP4 as reviewable content:

  1. If a brief approval triggers a run, report the run id and generated output ids.

Routing and direct-send pitfalls

Telegram button contract

Hermes Creative review callbacks in the Telegram gateway use compact callback data:

URL-only actions such as Edit in Video Story should be regular Telegram URL buttons, not callback buttons. If adding new callback verbs such as social/ads handoff, update the gateway callback allowlist and handler before emitting them.

Future app integration target

A complete Telegram implementation should add a server-side endpoint that returns Telegram-ready review payloads, including:

Then a Telegram gateway/bot layer can render inline Approve / Reject / More buttons that call the review decision endpoint.

Video Story export review pattern

When a Video Story export becomes a Hermes Creative creative_output, make the Creative review item own the review lifecycle:

  1. Register/copy the final MP4 into the Creative media vault, rather than only posting the transient Video Story upload path.
  2. Create a pending creative_output review row with preview_kind: video / video media metadata.
  3. Telegram review card should include native video preview, approve/reject/more callbacks, and an Edit in Video Story URL action.
  4. Approval should mean “usable for downstream handoff” only; it must not publish, schedule, or spend.
  5. Social/Ads handoff buttons should be approval-gated unless the user explicitly asks to bypass review. After approval, prefer a follow-up card/action row such as Create Social draft / Prepare Ads draft rather than publishing or spending directly.
  6. The Video Story registration endpoint itself should push the Telegram review card as soon as it creates the review item; this is not a watcher-only concern.
  7. Before adding the editor URL to Telegram, verify the target app actually honors the project deep link. A URL like https://video-story.apps.poofc.com/?project=<uuid> is only useful if the React app reads URLSearchParams, fetches /api/projects/:id, and opens the project after PIN/auth; otherwise it just lands on the homepage.

Pitfall: Telegram gateway restarts only load callback-handler code; they do not fix target-app deep links. If a URL button opens the app homepage, debug the target PWA/router/deep-link handling, not the Telegram button rendering first.