← YardCONTENT HISTORY
WHAT CHANGED
Update to Yard
Snapshot Nov 3, 2026 · 00:14 UTC · version 0.1.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Yard and check future changes in Following.
Up to 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Yard sells, licenses, distributes and hosts software. Use whenever the user mentions Yard or the yard CLI: projects, pricing, license keys, releases and updates, sandboxes, hosted services and databases, yard dev, landing pages, Yard Auth sign-in, realtime rooms, templates, coupons, users or sales, and products sold on top of a tier (add-ons, DLC, consumables, in-app purchases, add-on subscriptions, fulfillment).",
"included_files": [
{
"relative_path": ".DS_Store",
"size_in_bytes": 6148
},
{
"relative_path": "references/api.md",
"size_in_bytes": 5287
},
{
"relative_path": "references/checkout.md",
"size_in_bytes": 3025
},
{
"relative_path": "references/cli.md",
"size_in_bytes": 4559
},
{
"relative_path": "references/coupons.md",
"size_in_bytes": 1909
},
{
"relative_path": "references/database.md",
"size_in_bytes": 2516
},
{
"relative_path": "references/landing-pages.md",
"size_in_bytes": 5577
},
{
"relative_path": "references/license-keys.md",
"size_in_bytes": 3537
},
{
"relative_path": "references/local-dev.md",
"size_in_bytes": 5938
},
{
"relative_path": "references/pricing.md",
"size_in_bytes": 4532
},
{
"relative_path": "references/products.md",
"size_in_bytes": 5546
},
{
"relative_path": "references/project-files.md",
"size_in_bytes": 5637
},
{
"relative_path": "references/projects.md",
"size_in_bytes": 4247
},
{
"relative_path": "references/releases.md",
"size_in_bytes": 5337
},
{
"relative_path": "references/rooms.md",
"size_in_bytes": 7816
},
{
"relative_path": "references/sales.md",
"size_in_bytes": 1596
},
{
"relative_path": "references/sandboxes.md",
"size_in_bytes": 3992
},
{
"relative_path": "references/services.md",
"size_in_bytes": 6366
},
{
"relative_path": "references/templates.md",
"size_in_bytes": 2776
},
{
"relative_path": "references/troubleshooting.md",
"size_in_bytes": 4657
},
{
"relative_path": "references/updates.md",
"size_in_bytes": 2495
},
{
"relative_path": "references/webhooks.md",
"size_in_bytes": 1566
},
{
"relative_path": "references/yard-auth.md",
"size_in_bytes": 5505
}
],
"name": "yard",
"skill_md_contents": "---\nname: yard\nmetadata:\n author: yard.sh\n files:\n - SKILL.md\n - references/cli.md\n - references/projects.md\n - references/project-files.md\n - references/pricing.md\n - references/coupons.md\n - references/products.md\n - references/checkout.md\n - references/license-keys.md\n - references/releases.md\n - references/updates.md\n - references/sandboxes.md\n - references/landing-pages.md\n - references/services.md\n - references/yard-auth.md\n - references/database.md\n - references/rooms.md\n - references/local-dev.md\n - references/webhooks.md\n - references/api.md\n - references/sales.md\n - references/templates.md\n - references/troubleshooting.md\ndescription: >-\n Yard sells, licenses, distributes and hosts software. Use whenever the user mentions Yard or the yard CLI:\n projects, pricing, license keys, releases and updates, sandboxes, hosted services and databases, yard dev,\n landing pages, Yard Auth sign-in, realtime rooms, templates, coupons, users or sales, and products sold on top\n of a tier (add-ons, DLC, consumables, in-app purchases, add-on subscriptions, fulfillment).\n---\n\n# Yard\n\nYard lets developers sell software: checkout with Yard as the merchant of record, for pricing tiers and for products sold on top of a tier, license keys and device activations, release downloads with an update server, custom landing pages, and hosted services with a database, user sign-in (Yard Auth) and realtime rooms. Developers manage it with the `yard` CLI or Yard's MCP server; shipped software integrates through the REST API.\n\nInstall: `curl -fsSL https://cli.yard.sh | sh` (Windows: `irm https://cli.yard.sh/install.ps1 | iex`). `yard login` prints a nine-digit code and opens `https://yard.sh/login/device`: show the user the code, they authorize, and the command exits signed in (run it in the background if your shell only returns output on exit). `yard <command> --help` is always current.\n\n## Ground rules\n\n- **Read the docs, not memory.** Every page of https://docs.yard.sh is Markdown at its URL plus `.md`; https://docs.yard.sh/llms.txt lists them all with one-line descriptions and names a search endpoint. Each reference file below names the pages that hold the detail: fetch a page before quoting a shape, limit or endpoint the file does not show. The REST API reference is online only (api.md).\n- **Manage with the MCP server or the CLI, integrate with the API.** Projects, pricing, products, releases, pages, services, coupons, users and sales are management work: Yard's MCP tools when connected, otherwise the CLI. The REST API is for shipped software (license validation, updates, subscriptions, products, Yard Auth in external apps). Never create a project over HTTP.\n- **Non-interactive only.** `--json` (result on stdout; messages and errors on stderr) and `--spec <file|->` (JSON input). Never pipe answers into a prompt. Commands that delete or overwrite take `--yes`; a run without it previews the question. Bare `yard init` is for humans.\n- **Teams own everything.** Projects, coupons, API keys and payouts belong to a team; the CLI acts as the active team (`yard team --json` `.active_team`), shared with the dashboard. Projects live at `https://<team>.yard.sh/<slug>/`.\n- **Check entitlements, never assume them.** Read `yard me --json` `.team_permissions` before proposing a feature (`.permissions` is the user's own and gates nothing on a project). Plan-dependent: license keys and activations, custom pages, services, Yard Auth, rooms, coupons, seat pricing, trials, tier and product counts, extra sandboxes and channels, API keys and webhooks (Pro). Never quote a plan's features from memory.\n- **Read errors by `error_code`.** `upgrade_required` or `*_limit_reached`: the plan lacks the feature or hit a limit; send a spec it supports or point to https://yard.sh/pricing (tier and product plan refusals are plain `400`s naming the rule). `forbidden`: the member's team role; upgrading does not help. `no_team`: send the user to https://yard.sh/finish. `not_team_owner`: payouts and billing are owner-only. `cli_outdated`: run `yard update`.\n- **Launch stages are one-way** (`draft` -> `early_access` -> `published`). Never advance one to test: a draft project already serves its pages and services to its own team. Launching needs no payout setup; selling does.\n- **Sandboxes are for testing.** A sandbox (`/<slug>/@<name>/`) is a private copy with its own data, secrets and simulated commerce: purchases, trials and license keys work, no money moves. A sandbox key validates only when the request names its sandbox; shipped software never sends `sandbox`.\n- **Look before creating.** `yard projects --json` first, so a retry never creates a duplicate.\n- **Keys, not names.** Tiers and products are identified by `key` everywhere (settings.json, specs, headers, webhooks, checkout); names are display text.\n\n## New project\n\nAsk first: **guided** (the user drives and you explain each step) or **autopilot** (you drive). On autopilot: get a one-line description and a price idea; propose title, pricing model (one-time or subscription), tiers (each with a stable `key`), seat type, prices and launch plan, flagging anything the team's plan lacks, and wait for the user's OK; then `yard projects --json` and `yard init --spec - --json` (schema in projects.md), or `yard init --project <slug> --json` to link an existing project.\n\nThen cover what the project type needs:\n\n- **Installed software** (desktop app, CLI, binary): publish each version with `yard releases publish` (releases.md) and point the app's updater at the update server with the user's license key (updates.md, license-keys.md); otherwise the buy page has nothing to download.\n- **Web app, API or backend Yard runs:** services.md, yard-auth.md, database.md; realtime belongs in rooms.md. Check the `service` permission while planning, not at push time.\n- **Custom landing page:** `yard init --page`, edit `.yard/landing-page/`, preview with `yard dev` (landing-pages.md).\n- **Extras on top of a tier** (DLC, add-ons, consumables, add-on subscriptions): products.md. Only when the software sells extras; they need a tier and a signed-in buyer who holds it.\n- **A template others can start from:** templates.md.\n\n## Hosted services loop\n\n`yard service init <name>` scaffolds a bundle whose backend is one file, `_service.js`, exporting a fetch handler: no ports, no `listen()`, no Express, relative URLs only. Never build auth: Yard Auth gives the service trusted `X-Yard-*` headers, `\"access\": \"users\"` is a paywall with no code, and tier features are gated on `X-Yard-Tier-Key`. The loop: `yard dev` (local), `yard push` (into a draft; nothing serves a draft), `yard releases publish <tag>` (go live in `Production`), `yard sandbox list` (deploy status). To try it first, pin the storefront and use a sandbox (sandboxes.md).\n\n## Yard's MCP server\n\nWhen Yard's MCP tools are connected (`https://mcp.yard.sh/`), manage through them; they need no CLI install or `yard login`. The user approved them for one team, which sees each change as yours. `whoami` names the team and what its plan includes; connecting needs `.team_permissions.agent_access`. `yard dev` still needs the CLI. Overview: https://docs.yard.sh/v1/platform/getting-started/mcp-server.md (or `read_yard_docs` with topic `getting-started/mcp-server`; it reads the Platform pages, and the REST reference is fetched from docs.yard.sh).\n\n- Every change takes an optional `note`, a short summary the team reads beside the change.\n- A change to something that exists passes the `base_hash` you read for it (a file's `content_hash`, or one of the release's `versions` from `get_release`). `stale_base` means it changed since: read it again and redo the change.\n- Text files go inline with `write_file`. Binary files, text over about 1 MB, product icons and release downloads go through `create_upload_link`: `PUT` the bytes to the link, then `finalize_upload`. A release download is added in the background, so poll `get_upload` until it is `done` or `failed`.\n\n## References\n\nOpen only the files whose row the task matches, usually one or two. Each file's first lines name the docs pages to fetch for anything it does not show. All live in `references/`.\n\n| File | Open when the task mentions | Commands |\n| --- | --- | --- |\n| cli.md | installing, signing in, sessions, `--json`/`--spec`/`--yes`, exit codes, the active team | login, logout, me, team, update, skill, uninstall |\n| projects.md | creating or linking a project, the init spec, slug, launch stage, project limits | init, projects, projects show/edit |\n| project-files.md | settings.json keys, pushing or pulling files, sync conflicts, what a draft holds | push, pull, status, ls, init --page |\n| pricing.md | tiers, prices, one-time vs subscription, seats, trials, gifts | projects tiers |\n| coupons.md | discount codes, generating, deactivating, redemptions | coupons |\n| products.md | add-ons, DLC, consumables, add-on subscriptions, holdings, fulfillment | projects products |\n| checkout.md | buy or trial links, pay.yard.sh parameters, return_to, the payouts gate, price order | |\n| license-keys.md | license keys, device activations, validating a key from shipped software | projects edit |\n| releases.md | publishing a version, channels, rollback, download buttons, storage, GitHub sync | releases, channels, github |\n| updates.md | an app's updater, the update endpoints, beta channels | |\n| sandboxes.md | testing a release or purchase privately, preview, pin, promote, deploy status | sandbox |\n| landing-pages.md | custom page HTML, data-yard, window.yard, ownership, custom domain | init --page |\n| services.md | hosted backend, _service.js, routes, static files, secrets, logs | service |\n| yard-auth.md | sign-in, X-Yard-* headers, gating by tier, guests, OIDC in external apps | |\n| database.md | SQL, env.DB, migrations, a failed migration | db |\n| rooms.md | WebSockets, realtime, presence, multiplayer, room storage, alarms | service init --realtime |\n| local-dev.md | running locally, personas, the control panel, dev --json events | dev |\n| webhooks.md | being notified of sales or renewals, X-Yard-Signature, event_id | |\n| api.md | the REST reference, API keys and scopes, the sandbox parameter, conditional writes, errors | keys |\n| sales.md | customers, transactions, refunds, extending a trial | users, transactions |\n| templates.md | a template repository, the Create in Yard button | |\n| troubleshooting.md | an error code or refusal message you do not recognise | |\n"
}SHA-256 of public snapshot: aaf247256e70b1cc9f2f1ff3c022e20929d7cb9d1fae5ad97fa970484c487825