Use this skill when Alex asks to review, approve, reject, or understand Hermes Creative items from Telegram.
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.
asset / image assetmedia_url or file_path is available.Suggested next action after approval: offer to create a creative brief using this asset or a selected batch.
creative_brief
Approval does not publish or spend.
creative_output
Approval does not publish or schedule.
direction / brand_strategy
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.
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"}'
When a Video Story export is registered as a creative_output, treat the MP4 as reviewable content:
creative_output review row; approval means usable for downstream handoff only.https://video-story.apps.poofc.com/project/<project_id>) over query-only links; verify the app actually opens the project, not just the homepage.vsedit:start:<review_id> for Telegram edit mode and vsedit:review:<review_id> for overlay review video assembly.references/video-story-output-review-deeplinks.md, references/video-story-output-direct-telegram-send.md, and references/video-story-direct-review-card-routing.md for session-derived deep-link/direct-send/routing checklists.HERMES_CREATIVE_TELEGRAM_CHAT_ID plus optional HERMES_CREATIVE_TELEGRAM_THREAD_ID) or request/origin context before falling back to TELEGRAM_HOME_CHANNEL.pending review item, send it to the active topic, then let Alex click the inline buttons. Do not pre-approve or reject it via API unless the user specifically asks for that.Hermes Creative review callbacks in the Telegram gateway use compact callback data:
hc:approve:<review_id> — approve review item.hc:reject:<review_id> — reject review item.hc:more:<review_id> — fetch/show expanded detail.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.
A complete Telegram implementation should add a server-side endpoint that returns Telegram-ready review payloads, including:
source_brief_id, run_id, asset_id)Then a Telegram gateway/bot layer can render inline Approve / Reject / More buttons that call the review decision endpoint.
When a Video Story export becomes a Hermes Creative creative_output, make the Creative review item own the review lifecycle:
creative_output review row with preview_kind: video / video media metadata.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.