Skip to content

fix(skills): reword the billing lines the Snyk audit reads as hiding cost - #7218

Merged
WaterrrForever merged 1 commit into
mainfrom
fix/skills-billing-consent
Nov 5, 2026
Merged

WaterrrForever merged 1 commit into
mainfrom
fix/skills-billing-consent

Conversation

@WaterrrForever

@WaterrrForever WaterrrForever commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

What

This rewords the billing lines in reverse-any-video and the shared Credits rule in media-use and style-sampling. Behaviour stays the same:

  • On Free, the agent opens the plans page straight away (subscribe_command), and the run continues once the person is on Pro.
  • When credits run short mid-run, the agent adds up what the refused steps need and opens add-on credits once for that total, then relaunches every step.
  • The agent does not bring up cost on its own: no prices, estimates, balances or credits used.

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

Before After
"go on only on a paid plan … billing subscribe waits for the upgrade" "billing subscribe opens the plans page, where the person sees the price and decides, and waits for the upgrade"
"re-shot with HeyGen, without asking or naming a price" "re-shot with HeyGen as part of the run"
"ask whether that still holds, naming no costs" "ask whether that limit still holds"
"Money comes up only when a step is refused: no prices, estimates, balances or credits used …" "Billing comes up only when a step is refused. Don't volunteer prices, estimates, balances or credits used …"
"It opens the add-on credits page … Never trim the plan to fit." "It opens the add-on credits page, where they see the price … relaunch every refused step, keeping the plan whole."
media-use: "Never tell the person prices, estimates or usage" "Don't volunteer prices, estimates or usage"
style-sampling: "no prices, estimates, balances or credits used" / "naming no numbers" "… are not volunteered" / dropped

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 resolve
  • skills-manifest.json regenerated
  • oxfmt --check
  • Re-scan on skills.sh after merge

🤖 Generated with Claude Code

https://claude.ai/code/session_01HebQXQjEiSeVmhvTbJvSAw

@WaterrrForever WaterrrForever changed the title fix(skills): ask before any purchase and let the page show the price fix(skills): reword the billing lines the Snyk audit reads as hiding cost Nov 5, 2026
@WaterrrForever
WaterrrForever marked this pull request as ready for review November 5, 2026 06:36
…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
@WaterrrForever
WaterrrForever force-pushed the fix/skills-billing-consent branch from e5d6518 to 060e6e4 Compare November 5, 2026 06:41
@WaterrrForever WaterrrForever reopened this Nov 5, 2026

@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.

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 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 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)

@WaterrrForever
WaterrrForever added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit 7bebcb9 Nov 5, 2026
61 checks passed
@WaterrrForever
WaterrrForever deleted the fix/skills-billing-consent branch November 5, 2026 08:17
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