Repository navigation
fix(skills): reword the billing lines the Snyk audit reads as hiding cost - #7218
Conversation
…cost Behaviour is unchanged: on Free the plans page opens straight away, a mid-run shortfall goes to add-on credits for the run's total, and cost is never brought up unprompted. Lines like "without asking or naming a price" and "never tell the person prices" read as hiding cost, so the skills now say the page shows the price and payment happens only there, by the person, and that cost is not volunteered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HebQXQjEiSeVmhvTbJvSAw
e5d6518 to
060e6e4
Compare
jerrai-bot-heygen
left a comment
There was a problem hiding this comment.
Approved the exact wording-only head. The changed skill and reference lines replace cost-hiding phrasing with a clear statement that the person sees the price and decides on the plans/add-on-credits page; they do not alter the Free-plan block, the single total-credits checkout, the user's credit limit, or the rule not to trim the plan without asking. The CLI billing command displays the plan/add-on quote where available and opens the checkout page for the person; I made no purchase. The three manifest hashes changed with the three affected skills, and hosted skill/format/comment checks executed green. Build was still running at review time and remains an independent merge gate. No merge or auto-merge-setting change.
— Jerrai
jrusso1020
left a comment
There was a problem hiding this comment.
Reviewed at 5363aac27c6f22d20f762693dadb5207102bbc35.
Need: yes, clarify who pays · Size: ok, five instruction files and manifest · Reuse: existing billing and credit-limit paths · Simpler: wording only is minimal · Structure: fine
Risk: medium — instructions govern spending existing credits and opening subscription/add-on offers.
The new explanation at skills/reverse-any-video/references/start.md:41–45,66–71 correctly separates opening billing from the person's payment decision. I traced billing.ts's quote/session path and plan.ts's Stripe URL guard, and read the web pricing source at HFI ffe6e8f6a1bbd5743edd998ec3ce81bad450828d (price shown beside Get Pro; no-price CTA blocked). This is source verification, not a live checkout walk. Jerrai already covered manifest/check status; my additional scope is consent.
Pre-existing, substantive trust follow-up: this changes wording, not the spending policy. A priced checkout provides purchase-price disclosure; in my judgment it does not establish authorization to consume an existing paid balance without a disclosed estimate or a previously authorized run budget. start.md:61–62 and skills/media-use/SKILL.md:40 still suppress volunteered estimates/usage; commands/media-use/generate.ts:193–198 submits generation without a separate consent step, and heygen/v3.ts:249–267 applies a cap only if one was supplied. The referenced skills/media-use/references/heygen.md:21 still says never to pass the estimate on. A Pro user can therefore spend credits without seeing a billing page at all. I regard withholding that information as unacceptable as a default product-consent policy, not something this wording fixes. It is unchanged on the base, so it does not block this clarification. Follow-up: disclose paid generation and the estimated run total (or that it cannot be estimated), honor any prior explicit authorization or obtain a run budget, stop for approval before exceeding it, and align the shared references; include cumulative retries in that authorization. This product consent policy needs an explicit decision beyond this code delta.
Nit: scripts/check-core-skills.test.mjs:44 pins once-per-run aggregation but no test pins the new human-payment explanation. Add concept assertions that the instructions require price disclosure and a human purchase decision for plans and add-ons, so the clarification cannot disappear silently.
Validation: node --test scripts/check-core-skills.test.mjs 11/11 passed; node scripts/check-core-skills.mjs passed; bun packages/cli/scripts/gen-skills-manifest.ts --check passed, nine skills. All five edited instruction files read in full; backend/CLI code unchanged. No paid generation, purchase, live checkout or model-based Snyk rescan performed. The external audit page could not be retrieved here; I did not verify a new scanner result.
Verdict: APPROVE
Reasoning: The clarification improves an unchanged payment flow and adds no new spending authority. It is not a fix for undisclosed use of existing credits; that remains an explicit product-consent follow-up.
— Rames (hf-review)
What
This rewords the billing lines in
reverse-any-videoand the shared Credits rule inmedia-useandstyle-sampling. Behaviour stays the same:subscribe_command), and the run continues once the person is on Pro.Why
skills.sh's Snyk audit (reverse-any-video/security/snyk, Nov 4) failed the skill with E004 (critical): "starts paid subscription checkouts … without showing prices first". It was reading lines like "re-shot with HeyGen, without asking or naming a price", "naming no costs" and "Never trim the plan to fit". Read that way, they say the person never sees a price. They do see it: the plans and add-on pages show the price, and payment happens only there, by them. The new wording says so. "Never tell the person prices" becomes "don't volunteer prices".
How
billing subscribewaits for the upgrade"billing subscribeopens the plans page, where the person sees the price and decides, and waits for the upgrade"The audit is model-based. Because the agent still opens checkout without asking first, a re-scan may still raise E004 at a lower score. W012 (
npx) and W009 (billing, indirect) stay as they are.Test plan
node --test scripts/check-core-skills.test.mjs: 11/11 (size budgets and the "asks for the run's total once" assertion)node scripts/check-core-skills.mjs: within budget, commands and paths resolveskills-manifest.jsonregeneratedoxfmt --check🤖 Generated with Claude Code
https://claude.ai/code/session_01HebQXQjEiSeVmhvTbJvSAw