Skip to content

docs(skills): reverse-any-video runs sign-in and payment itself and opens the result - #7101

Merged
WaterrrForever merged 4 commits into
mainfrom
miao/reverse-skill-wenbo
Nov 3, 2026
Merged

WaterrrForever merged 4 commits into
mainfrom
miao/reverse-skill-wenbo

Conversation

@WaterrrForever

Copy link
Copy Markdown
Collaborator

Skill wording from Wenbo's end-to-end reverse test on 0.9.8: https://www.heygenverse.com/a/reverse-style-sampling-findings-45a4fd9e-fb0a-4484-b12e-9289afa6868f

references/start.md

  • F13, sign-in: the agent runs auth login itself instead of asking the person to type ! npx hyperframes auth login. Where no browser opens, it gives the printed link and code. It never signs in with an API key to get past Pro: that signs in a HeyGen app account, which has no HyperFrames plan. The person-facing line says their HyperFrames account is their HeyGen account (part of F14).
  • F1, paywall and top-up: the person types nothing. The agent runs subscribe_command / billing top-up --needed <total> itself and puts the page in its message as a link (reverse.upgrade_url, the refusal's url from fix(cli): two CLI fixes from Wenbo's reverse test (paywall link, plan label) #7099, or the link in fix on an older CLI). Both examples lose their ! command blocks.
  • F2, plan: reverse start's free/pro is final. auth status is read only for a null plan, and only its hyperframes field, never user.subscription.
  • F12, old CLI: a CLI without reverse start used to be worked around, which is how 0.8.152 got through. Outside a plugin it now means an old install shadowing the release: run the session as npx -y hyperframes@latest and tell the person once.
  • F9, hand-off (new section): last diff with --sbs, open the side by side, start preview, say they can keep editing there, pass on the Framey line, then skill_completed.

SKILL.md: one pointer to the hand-off section. To stay under the 5,120-byte budget (main was at 5,118), I dropped "Small score differences are not worth another round.", which repeats the "then stop" before it.

references/animated.md (F8): cut a generated shot's guide inside a dissolve, never across it (a guide holding dissolve frames came back as the neighbouring shot), and retime every generated shot with data-media-start / data-playback-rate (HeyGen does camera moves late; this lifted Wenbo's mean SSIM from 0.707 to 0.746).

Not verified live: an agent-run auth login inside Claude Code on 0.9.9. From source it opens the browser (isAgentDriven), but nobody has walked it yet. node scripts/check-core-skills.mjs passes.

…pens the result

From Wenbo's end-to-end reverse test (F1, F2, F8, F9, F12, F13):
- the person types nothing: the agent runs auth login, billing subscribe and
  billing top-up itself and gives each page as a clickable link
- never sign in with an API key to get past Pro
- reverse start's plan is final; auth status is read only for a null plan,
  and its hyperframes field, never user.subscription
- an old CLI without reverse start: run this run as npx -y hyperframes@latest
- hand over: side by side from diff --sbs, Studio preview, Framey line
- animated shots: cut the guide inside a dissolve, retime each generated shot

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 9539c67ef4ae516a5025df3fc9af62c2ac051444.

Code/content reads clear, with three small wording corrections below. This head currently conflicts with main only in generated skills-manifest.json (confirmed with git merge-tree --write-tree HEAD origin/main), so this is a COMMENT review; approval needs the resolved head.

The plan instructions distinguish reverse's known plan from an unknown plan and avoid using the HeyGen subscription to bypass Pro. The refusal URL contract matches #7099's 66d1793a4 producer and serializer; the documented fallback to the link in fix also works on the older CLI. reverse start, rendered-video diff --sbs, and preview/conditional Framey guidance exist. The latest-CLI override explicitly excludes plugins, preserving their pinned launcher.

Nits:

  • skills/reverse-any-video/references/start.md:13–14: use auth status --json when instructing the agent to read the named hyperframes field. Without it, the CLI prints a readable HyperFrames row rather than that JSON field.
  • start.md:33–35: default auth login refuses remote/headless terminals with a --device hint; it does not automatically print a device code. Say to run auth login --device on that refusal and relay its complete link, or link plus code when separately printed. A local detected agent can use browser OAuth; a failed browser-open there yields a manual loopback URL, not a device code. Both this head and #7099 implement that distinction.
  • skills/reverse-any-video/references/animated.md:28: clarify “cut the guide inside a dissolve” as trimming away blended edge frames and keeping the stable part of the shot. The following warning about retaining dissolve frames currently makes the instruction ambiguous.

Validation: bun run lint:skills passes, including command/path and size checks; bun run --cwd packages/cli gen:skills-manifest --check reports nine skills in sync. Full four-file content/diff and relevant CLI contracts were inspected. A fresh independent pass checked those contracts against both pinned trees and source-derived remote/local login guard cases, which I independently reran against both trees (node review-artifacts/7101/login-guards.mjs). No live agent-run login, purchase, generated-shot timing, browser preview or complete reverse run was exercised. The reported SSIM improvement remains the author's evidence, not my measurement. No runtime source changed, so no full build/runtime test run was needed for this review.

Need: yes · Size: bounded four-file documentation change · Reuse: existing CLI, plugin and hand-off contracts · Simpler: already minimal · Structure: fine
Risk: low — wording only; live sign-in/payment hand-off remains unverified.

Verdict: COMMENT — content clear with nits; resolve conflicts before approval
Reasoning: No verified Important content defect found. GitHub currently reports this exact head CONFLICTING/DIRTY; merge main, regenerate the skill manifest and return the resolved head for approval.

— hf-review

…n, trims dissolve frames

Rames's three wording notes on #7101, and the old-CLI subscribe line now
applies only to a plugin's pinned CLI, beside main's null upgrade_url rule.
@WaterrrForever

Copy link
Copy Markdown
Collaborator Author

Thanks @jrusso1020, all three nits are in 302c0dd, on top of a merge of main (c54e856, manifest regenerated, gen:skills-manifest --check in sync).

  • auth status --json when reading the hyperframes field.
  • Sign-in: when the browser doesn't open, give the link it prints. When it refuses as a remote or headless terminal, run auth login --device and give its link, and the code when shown.
  • Dissolves: trim the guide to the shot's own frames, leaving out the blended frames at either end.

Main's #7031 changed the same section, so two lines now sit beside its rule. upgrade_url is given as a link only when it isn't null. The "on a CLI without reverse start, run billing subscribe" line now applies only to a plugin's pinned CLI, since outside a plugin the old-CLI case switches to npx -y hyperframes@latest. lint:skills and check-core-skills pass.

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 302c0dd1755f5eef436d6e37ccd4dac19f504f93, delta from my reviewed 9539c67ef.

All three wording nits are fixed: the plan-field instruction uses auth status --json, headless refusal explicitly switches to auth login --device, and the guide excludes blended dissolve edge frames. The main merge preserves #7031's null-purchase semantics: a null upgrade URL is not relayed, and a null subscribe command stops rather than inventing a purchase path (skills/reverse-any-video/references/start.md:14,33–36,43–51; references/animated.md:28). The standalone latest override and plugin-only legacy fallback remain separate.

Validation: bun run lint:skills passes command/path and size checks; bun run --cwd packages/cli gen:skills-manifest --check reports nine skills in sync. I read the complete documentation delta and its merged reverse producer/refusal contract. Fresh independent source-derived controls exercise 18 reverse cases, six login guard cases, pinned-plugin invocation and exact nine-skill hash/file-count parity; I inspected and reran them with node review-artifacts/7101/r2/adversarial-offline.mjs. These execute extracted pure functions with fixture dependencies, not a packaged CLI or service walk.

Limits: no live Claude Code login, device approval, purchase/top-up, generation/retiming, browser preview or complete reverse run. The earlier field/URL and hand-off contract review still applies; no new runtime implementation was authored by this PR.

Need: yes · Size: bounded documentation re-review · Reuse: existing reverse/auth/plugin contracts and manifest generator · Simpler: already minimal · Structure: fine
Risk: low — wording and generated manifest, with live hand-offs explicitly unverified.

Verdict: APPROVE
Reasoning: The prior wording issues and manifest conflict are resolved; the merged null-purchase instructions match the actual CLI contract, with no new Important finding.

— hf-review

@jerrai-bot-heygen jerrai-bot-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 302c0dd against the installed-plugin CLI and purchase-consent contract. The normal path opens a page and leaves checkout to the person; it does not instruct the agent to complete a purchase. The new null-upgrade-link path and standalone @latest rule are also scoped correctly. One plugin-specific fallback still offers paid checkout when the pinned CLI cannot run Reverse at all; please resolve the inline finding before approval. Hosted exact-head skills and bootstrap jobs executed successfully; other green labels include skipped wrappers. No local run or merge. — Jerrai

purchased right now: say so plainly, give no link, run nothing, and stop. Only on a CLI without `reverse start`, run
`npx hyperframes billing subscribe` instead. If the command times out, tell the person and run it again once they say
purchased right now: say so plainly, give no link, run nothing, and stop. Only on a plugin's CLI without
`reverse start`, run `npx hyperframes billing subscribe` instead. If the command times out, tell the person and run it again once they say

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fallback can send someone to pay for Pro precisely when their installed plugin's pinned CLI does not implement reverse start, the command this skill needs to start/resume the actual run. A bare npx hyperframes also conflicts with the plugin execution rule that all examples use the pinned launcher, while this plain subscribe has no reverse feature/session id to credit the purchase to this run. Please make this an incompatibility/upgrade-the-plugin stop (or show an executable, version-pinned reverse path), rather than opening checkout for a run that cannot proceed. Test the plugin-without-reverse start branch.

Jerrai on #7101: the plugin fallback sent the person to subscribe when the
pinned CLI has no reverse start, so the run could not go on after paying.
It now stops and says the plugin needs updating.
@WaterrrForever

Copy link
Copy Markdown
Collaborator Author

Thanks Jerrai, fixed in 780a434. The plugin fallback is gone. Inside a plugin, a pinned CLI without reverse start now stops before anything is paid for, with one line saying the HyperFrames plugin needs updating to reverse a video. No billing subscribe and no bare npx. The rule sits beside the standalone old-CLI rule (npx -y hyperframes@latest), so each case has one path.

On testing the branch: this is skill text, with no runtime for a test to hold. lint:skills, check-core-skills and the manifest check pass, and nothing in the skills still says to subscribe on a CLI without reverse start (grepped).

@jerrai-bot-heygen jerrai-bot-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed 780a434 against my 302c0dd plugin-paywall hold. A plugin whose pinned CLI lacks reverse start now stops before any payment, tells the person to update the plugin, and no longer runs a bare npx subscribe. Standalone-only @latest, normal nullable upgrade-link behavior, and human-completed checkout remain scoped as reviewed. The reverse skill manifest hash was updated for the changed file. Earlier head 302c0dd had executed green skills/bootstrap tests; at this new head the hosted check jobs were still starting at review time, so I do not call its tests green yet. Approval is source-quality only, not a merge action.

— Jerrai

@WaterrrForever
WaterrrForever added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 341fdd3 Nov 3, 2026
65 of 66 checks passed
@WaterrrForever
WaterrrForever deleted the miao/reverse-skill-wenbo branch November 3, 2026 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants