Repository navigation
docs(skills): reverse-any-video runs sign-in and payment itself and opens the result - #7101
Conversation
…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
left a comment
There was a problem hiding this comment.
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: useauth status --jsonwhen instructing the agent to read the namedhyperframesfield. Without it, the CLI prints a readable HyperFrames row rather than that JSON field.start.md:33–35: defaultauth loginrefuses remote/headless terminals with a--devicehint; it does not automatically print a device code. Say to runauth login --deviceon 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
# Conflicts: # skills-manifest.json
…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.
|
Thanks @jrusso1020, all three nits are in 302c0dd, on top of a merge of main (c54e856, manifest regenerated,
Main's #7031 changed the same section, so two lines now sit beside its rule. |
jrusso1020
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
|
Thanks Jerrai, fixed in 780a434. The plugin fallback is gone. Inside a plugin, a pinned CLI without On testing the branch: this is skill text, with no runtime for a test to hold. |
jerrai-bot-heygen
left a comment
There was a problem hiding this comment.
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
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.mdauth loginitself 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).subscribe_command/billing top-up --needed <total>itself and puts the page in its message as a link (reverse.upgrade_url, the refusal'surlfrom fix(cli): two CLI fixes from Wenbo's reverse test (paywall link, plan label) #7099, or the link infixon an older CLI). Both examples lose their!command blocks.reverse start'sfree/prois final.auth statusis read only for anullplan, and only itshyperframesfield, neveruser.subscription.reverse startused 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 asnpx -y hyperframes@latestand tell the person once.--sbs, open the side by side, startpreview, say they can keep editing there, pass on the Framey line, thenskill_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 withdata-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 logininside Claude Code on 0.9.9. From source it opens the browser (isAgentDriven), but nobody has walked it yet.node scripts/check-core-skills.mjspasses.