Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/antiwork/gumroad-cli/gumroadnpx skills add antiwork/gumroad-cli --skill gumroadgit clone --depth 1 https://github.com/antiwork/gumroad-cliWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/antiwork/gumroad-cli/gumroad)<a href="https://agentmods.dev/skills/antiwork/gumroad-cli/gumroad"><img src="https://agentmods.dev/badge/skills/antiwork/gumroad-cli/gumroad.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00341 | $0.13270 |
| Opus 5 | $0.00170 | $0.06635 |
| Sonnet 5 | $0.00068 | $0.02654 |
| Haiku 4.5 | $0.00034 | $0.01327 |
Grade A, and why
gumroad scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 702 lines — stays where its author put it; the contents beside it link to each section on GitHub.
gumroad CLI
Use gumroad (Gumroad CLI) to query and manage Gumroad data.
Agent invariants
Always follow these rules:
- Always pass
--no-inputto prevent interactive prompts from blocking. - Always pass
--jsonfor programmatic access. - Use
--json --jq <expr>together to extract exactly what you need. - For operations that can prompt for confirmation (delete, refund, workflow step adds, workflow delay changes, mutating admin actions,
files abort,files completereplay, product updates that remove files, orproducts content setwhen omitted page IDs will be deleted), add--yesto skip confirmation. - Pass
--quietto suppress spinners and status messages. - Pass
--dry-runto preview mutating requests without executing them. - Use
--page-delay 200mswith--allto avoid rate limits on large datasets. - Prices are in whole currency units (e.g.
--price 10.00for $10), not cents. The CLI converts internally. Use--currency eurto change currency. - Products are created as drafts — use
gumroad products publish <id>to make them live. - Product cover and thumbnail uploads support JPEG, PNG, and GIF. WebP is not supported by the API and the CLI rejects it before upload.
- Product custom HTML landing pages use
gumroad products page preview <id> ./landing.htmlto run the backend sanitizer without writing,gumroad products page publish <id> ./landing.htmlto store the page,gumroad products page clear <id> --yesto remove it, andgumroad products page url <id>to print the live URL.--dry-runonly previews the CLI request body; it does not call the backend sanitizer. Inspect.sanitization_reportinpreviewandpublishJSON output for server-side changes. - Profile custom HTML landing pages mirror the product commands without a product id and without checkout:
gumroad user page preview ./landing.html,gumroad user page publish ./landing.html(read from stdin with-),gumroad user page clear --yes, andgumroad user page url(prints the public profile URL and its/landing/embedURL). A profile has no buy button, so omitdata-gumroad-action="buy"and the checkout data attributes; link to products instead. - Storefront pages (slugged pages serving at
<username>.gumroad.com/<slug>) usegumroad pages list,gumroad pages create --title <title> [--slug <slug>] [path](with an HTML path or-the page is created as custom HTML; without one it starts empty for the in-app editor),gumroad pages pull <slug>to download a page's existing custom HTML so pull → edit → push is a real round trip (writes<slug>.html;-o <path>to choose,-o -for stdout; refuses to overwrite without--force; errors with a hint when the page has no custom HTML),gumroad pages scaffold <slug>to generate starter HTML for a rich-text page or a default profile from a static snapshot of its current render (same flags as pull; pushing the scaffold converts the page to custom HTML and replaces the dynamic storefront/editor experience),gumroad pages push <slug> ./page.htmlto replace a page with custom HTML, andgumroad pages preview ./page.htmlto run the backend sanitizer without publishing. The loop for going custom:pull(orscaffoldwhen there's no custom HTML yet) → edit →preview→push.--json/--jqonpull/scaffoldstill write the file and additionally print the raw API response; combining them with-o -is rejected since both would own stdout. The special slugprofiletargets the profile landing page (pull profiledownloads your published custom HTML,scaffold profilesnapshots the default storefront render when none is published; push uses the same endpoints asuser page publish). Custom HTML pages require the seller'scustom_html_pagesfeature to be enabled; without it writes fail with an access message. Writes to slugged pages (pages create/pages push <slug>) also require the token to carry theedit_profilescope — tokens minted before the CLI requested that scope get a 403 telling them to re-rungumroad auth login. - Product rich content uses
gumroad products content list <id> --json --no-inputto inspect page IDs,gumroad products content get <id> --json --no-inputto dump the sharedrich_contentpage array, andgumroad products content set <id> content.json --dry-run --json --no-inputto preview a whole-document replacement. Without an explicit path, whole-documentsetreads./content.json;set --pagereads./page.json. Use--page <page_id>withget/setto edit one matching page object;set --pagestill sends a merged whole-document PUT. For per-variant content, pass both--variant <variant_id>and--category <cat_id>. Whole-documentsetdeletes existing pages omitted from the JSON. - Custom HTML pages can use
data-gumroad-field="name",data-gumroad-field="price",data-gumroad-field="description", anddata-gumroad-action="buy". To preselect checkout state, adddata-gumroad-option="<variant name>",data-gumroad-quantity="<integer>",data-gumroad-price="<decimal>", ordata-gumroad-recurrence="monthly|quarterly|biannually|yearly|every_two_years". Production validates these values and falls back to product defaults when invalid. Prefer anchors for buy CTAs so production can add a checkout href; non-anchor buy elements also post to checkout. - Audience emails are created as drafts by default. Use
gumroad emails send-preview <id> --json --no-inputand inspect.preview_urlbeforegumroad emails send <id> --yes --json --no-input. Creating with--sendpublishes and blasts immediately, so use--dry-runfirst and require explicit human approval. To schedule a send instead of blasting immediately, create the draft thengumroad emails schedule <id> --at "<RFC3339>" --json --no-input;gumroad emails unschedule <id>returns a scheduled email to draft. - Workflow email writes do not change the workflow publication state. Adding a step to a published workflow can schedule eligible past recipients. Changing a delay can reschedule recipients. Use
--dry-runbefore each write. - If a command fails with a seller auth error, run
gumroad auth status --json --no-inputfirst. Agents can start seller auth withgumroad auth login --no-inputand hand the printed approval URL to a human, or use an existing seller token viaGUMROAD_ACCESS_TOKENorgumroad auth login --with-token. - For admin commands in agents/CI, pass
--non-interactiveand setGUMROAD_ADMIN_TOKEN; interactive shells can store an admin token withgumroad auth login --web.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 702 lines · 341 tokens per session scan A 0e3443c14879
gumroad is a skill published in the GitHub repository antiwork/gumroad-cli (49 stars, last pushed 18d ago), licensed MIT. It adds 341 tokens to every session and 13,270 once invoked, about $0.0017 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
nemoclaw-contributor-implement-issue
Implement an accepted NemoClaw GitHub issue in the current checkout. Use when a user asks to pick up an issue for implementation, implement or fix a named issue, or add the issue's tests. Confirm accepted scope, deliver the smallest independently valuable capability slice, and record validation and remaining gates…
amazon-reviews-api-skill
This skill helps users automatically extract Amazon product reviews via the Amazon Reviews API. Agent should proactively apply this skill when users express needs like getting reviews for Amazon product with ASIN B07TS6R1SF, analyzing customer feedback for a specific Amazon item, getting ratings and comments for a…
amazon-competitor-analyzer
Scrapes Amazon product data from ASINs using browseract.com automation API and performs surgical competitive analysis. Compares specifications, pricing, review quality, and visual strategies to identify competitor moats and vulnerabilities.
shopify-functions
Shopify Functions allow developers to customize the backend logic that powers parts of Shopify. Available APIs: Discount, Cart and Checkout Validation, Cart Transform, Pickup Point Delivery Option Generator, Delivery Customization, Fulfillment Constraints, Local Pickup Delivery Option Generator, Order Routing Location…
food-order
Reorder previous Foodora orders, preview cart contents, and track delivery ETA/status with ordercli. Use when the user wants to reorder food, check delivery status, or browse recent Foodora order history. Never confirm an order without explicit user approval.
asc-subscription-localization
Bulk-localize subscription, subscription-group, and in-app purchase display names across App Store locales using asc, including API 4.4.1 version-scoped v2 resources. Use when filling or updating subscription/IAP names and descriptions without App Store Connect UI work.