Cost Diff
ruvnet/ruflo
Snapshot delta between two cost-summary JSON outputs. An agent skill from ruvnet/ruflo.
Every Render endpoint, plus diff, drift, cost, audit, and orphan analytics no other Render tool ships.
$ npx skills add mvanhorn/printing-press-library --skill pp-render -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-render --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-skills/pp-render .claude/skills/pp-render && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pp-render" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-render into .claude/skills/pp-render/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-render", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-renderType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mvanhorn/printing-press-library --skill pp-render -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-render --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-skills/pp-render .agents/skills/pp-render && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pp-render" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-render into .agents/skills/pp-render/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-render", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvanhorn/printing-press-library --skill pp-render -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-render --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-skills/pp-render .cursor/skills/pp-render && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pp-render" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-render into .cursor/skills/pp-render/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-render", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mvanhorn/printing-press-library.git --path cli-skills/pp-render--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mvanhorn/printing-press-library --skill pp-render -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-render --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-skills/pp-render .gemini/skills/pp-render && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pp-render" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-render into .gemini/skills/pp-render/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-render", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mvanhorn/printing-press-library pp-renderInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mvanhorn/printing-press-library --skill pp-render -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-skills/pp-render .github/skills/pp-render && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pp-render" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-render into .github/skills/pp-render/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-render", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvanhorn/printing-press-library --skill pp-render -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvanhorn/printing-press-library pp-render --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-skills/pp-render .opencode/skills/pp-render && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pp-render" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-render into .opencode/skills/pp-render/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-render", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pp-renderEvery Render endpoint, plus diff, drift, cost, audit, and orphan analytics no other Render tool ships.
Pp Render is an agent skill from mvanhorn/printing-press-library. Every Render endpoint, plus diff, drift, cost, audit, and orphan analytics no other Render tool ships. Trigger phrases: diff render env vars, promote env vars between render services, check render blueprint drift, render monthly cost, clean up stale render preview environments, where is this render env var used, render incident timeline, render audit log search, use render, run render-pp-cli.
Its SKILL.md is about 7.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Official library of CLIs generated by the CLI Printing Press. Endorsed, tested, and community-contributed. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 7638ad4. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
claudenpxgoFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
render.comdashboard.render.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
STRIPE_KEYRENDER_API_KEYDEBUG_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pp Render loads about 7.3k tokens when it runs. Until then it costs about 106 tokens; SKILL.md has 3,393 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mvanhorn/printing-press-library at commit 7638ad4, republished under its Apache-2.0 licence (© mvanhorn). 3,393 words, ~7,317 tokens.
.claude/skills/pp-render/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/cloud/render/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
This skill drives the render-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:npx -y @mvanhorn/printing-press-library install render --cli-onlyrender-pp-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):
go install github.com/mvanhorn/printing-press-library/library/cloud/render/cmd/render-pp-cli@latestIf --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
Use render-pp-cli when you need to reason about your Render footprint as a whole, not one resource at a time. It shines for env-var promotion across environments, blueprint drift checks in CI, monthly cost rollups, preview cleanup, and audit-log forensics. For one-off interactive workflows like render psql or render ssh, the official CLI is fine — render-pp-cli covers those too but its real value is the analytical commands the dashboard hides.
These capabilities aren't available in any other tool for this API.
env diff — Compare env vars between any two services, env-groups, or a service vs an env-group, three-way diff style.
Reach for this when promoting config across environments — it's the cheapest way to see what's actually different without click-through.
render-pp-cli env diff srv-staging-api srv-prod-api --jsonenv promote — Copy env vars from a source service or env-group to a target with --only/--exclude/--dry-run.
Use when shipping a known-good staging config to prod without dragging dev-only keys along.
render-pp-cli env promote --from srv-staging-api --to srv-prod-api --exclude DEBUG_TOKEN --dry-rundrift — Compare a checked-in render.yaml against live workspace state and report added/removed/modified entities by name.
Run this in CI to fail builds when someone edits prod through the dashboard instead of the blueprint.
render-pp-cli drift --blueprint render.yaml --jsoncost — Sum monthly cost across services, postgres, key-value, redis, and disks; group by project, environment, or owner.
Reach for this on the Friday cost-review or when finance asks 'what would happen if we downsized these three services?'
render-pp-cli cost --group-by project --jsonrightsize — For each service, fetch last --since 7d of CPU and memory; compute p95 utilization; flag services breaching --high or --low thresholds against plan capacity.
Run this before the cost rollup to find quick downsizing wins or services about to throttle.
render-pp-cli rightsize --since 7d --high 80 --low 20 --jsonpreview-cleanup — List preview services older than --stale-days N; delete in bulk on --confirm.
Use when the monthly bill spikes and you suspect orphaned preview envs.
render-pp-cli preview-cleanup --stale-days 14 --confirmorphans — Find unattached disks, empty env-groups, custom-domains pointing at deleted services, registry credentials referenced by no service, and disk snapshots beyond retention.
Audit cleanup, billing review, and SOC 2 evidence-gathering all start here.
render-pp-cli orphans --jsonenv where — For a given env-var key, list every service and env-group that defines it with hash, length, and last-modified timestamp (never raw value).
First call during a credential rotation or a 'who uses this secret' audit.
render-pp-cli env where STRIPE_KEY --jsonincident-timeline — Merge deploys, events, and audit-logs for one service into one chronological table for a given window.
First command on-call should run during a 2am page after a deploy.
render-pp-cli incident-timeline srv-checkout-api --since 2h --jsonaudit search — FTS5 search across cached audit logs by actor, target, action, and time window.
Use during SOC 2 evidence-gathering or to answer 'who rotated this key last quarter'.
render-pp-cli audit search --actor riley@example.com --target STRIPE_KEY --since 30d --jsondeploys diff — Show commit range, env-var changes, image-tag changes, and plan/region/scale changes between two deploys of one service.
First command in a post-deploy regression triage — answers 'what actually changed'.
render-pp-cli deploys diff srv-checkout-api dep-aaa dep-bbb --jsonblueprints — Blueprints allow you to define your resources in a render.yaml file and automatically sync changes to your Render services.
The API gives control over how your Blueprints are used to create and manage resources.
render-pp-cli blueprints disconnect — Disconnect the Blueprint with the provided ID. Disconnecting a Blueprint stops automatic resource syncing via the...render-pp-cli blueprints list — List Blueprints for the specified workspaces. If no workspaces are provided, returns all Blueprints the API key has...render-pp-cli blueprints retrieve — Retrieve the Blueprint with the provided ID.render-pp-cli blueprints update — Update the Blueprint with the provided ID.render-pp-cli blueprints validate — Validate a render.yaml Blueprint file without creating or modifying any resources. This endpoint checks the syntax...cron-jobs — Manage cron jobs
disks — Disks allow you to attach persistent storage to your services.
render-pp-cli disks add — Attach a persistent disk to a web service, private service, or background worker. The service must be redeployed for...render-pp-cli disks delete — Delete a persistent disk attached to a service. All data on the disk will be lost. The disk's associated service...render-pp-cli disks list — List persistent disks matching the provided filters. If no filters are provided, returns all disks you have...render-pp-cli disks retrieve — Retrieve the persistent disk with the provided ID.render-pp-cli disks update — Update the persistent disk with the provided ID. The disk's associated service must be deployed and active for...env-groups — Manage env groups
render-pp-cli env-groups create — Create a new environment group.render-pp-cli env-groups delete — Delete the environment group with the provided ID, including all environment variables and secret files it contains.render-pp-cli env-groups list — List environment groups matching the provided filters. If no filters are provided, all environment groups are returned.render-pp-cli env-groups retrieve — Retrieve an environment group by ID.render-pp-cli env-groups update — Update the attributes of an environment group.environments — Manage environments
render-pp-cli environments create — Create a new environment belonging to the project with the provided ID.render-pp-cli environments delete — Delete the environment with the provided ID. Requires the environment to be empty (i.e., it must contain no services...render-pp-cli environments list — List a particular project's environments matching the provided filters. If no filters are provided, all environments...render-pp-cli environments retrieve — Retrieve the environment with the provided ID.render-pp-cli environments update — Update the details of the environment with the provided ID.events — View events for a service, postgres or key value
render-pp-cli events <eventId> — Retrieve the details of a particular eventkey-value — Key Value allows you to interact with your Render Key Value instances.
render-pp-cli key-value create — Create a new Key Value instance.render-pp-cli key-value delete — Delete a Key Value instance by ID.render-pp-cli key-value list — List Key Value instances matching the provided filters. If no filters are provided, all Key Value instances are...render-pp-cli key-value retrieve — Retrieve a Key Value instance by ID.render-pp-cli key-value update — Update a Key Value instance by ID.logs — Logs allow you to retrieve logs for your services, Postgres databases, and redis instances. You can query for logs or subscribe to logs in real-time via a websocket.
render-pp-cli logs delete-owner-stream — Removes the log stream for the specified workspace.render-pp-cli logs delete-resource-stream — Removes the log stream override for the specified resource. After deletion, the resource will use the workspace's...render-pp-cli logs get-owner-stream — Returns log stream information for the specified workspace.render-pp-cli logs get-resource-stream — Returns log stream override information for the specified resource. A log stream override takes precedence over a...render-pp-cli logs list — List logs matching the provided filters. Logs are paginated by start and end timestamps. There are more logs to...render-pp-cli logs list-resource-streams — Lists log stream overrides for the provided workspace that match the provided filters. These overrides take...render-pp-cli logs list-values — List all values for a given log label in the logs matching the provided filters.render-pp-cli logs subscribe — Open a websocket connection to subscribe to logs matching the provided filters. Logs are streamed in real-time as...render-pp-cli logs update-owner-stream — Updates log stream information for the specified workspace. All logs for resources owned by this workspace will be...render-pp-cli logs update-resource-stream — Updates log stream override information for the specified resource. A log stream override takes precedence over a...maintenance — The Maintenance endpoints allow you to retrieve the latest maintenance runs for your Render services. You can also reschedule maintenance or trigger it to start immediately.
render-pp-cli maintenance list — List scheduled and/or recent maintenance runs for specified resources.render-pp-cli maintenance retrieve — Retrieve the maintenance run with the provided ID.render-pp-cli maintenance update — Update the maintenance run with the provided ID. Updates from this endpoint are asynchronous. To check your update's...metrics — The Metrics endpoints allow you to retrieve metrics for your services, Postgres databases, and redis instances.
render-pp-cli metrics get-active-connections — Get the number of active connections for one or more Postgres databases or Redis instances.render-pp-cli metrics get-bandwidth — Get bandwidth usage for one or more resources.render-pp-cli metrics get-bandwidth-sources — Get bandwidth usage for one or more resources broken down by traffic source (HTTP, WebSocket, NAT, PrivateLink)....render-pp-cli metrics get-cpu — Get CPU usage for one or more resources.render-pp-cli metrics get-cpu-limit — Get the CPU limit for one or more resources.render-pp-cli metrics get-cpu-target — Get CPU target for one or more resources.render-pp-cli metrics get-disk-capacity — Get persistent disk capacity for one or more resources.render-pp-cli metrics get-disk-usage — Get persistent disk usage for one or more resources.render-pp-cli metrics get-http-latency — Get HTTP latency metrics for one or more resources.render-pp-cli metrics get-http-requests — Get the HTTP request count for one or more resources.render-pp-cli metrics get-instance-count — Get the instance count for one or more resources.render-pp-cli metrics get-memory — Get memory usage for one or more resources.render-pp-cli metrics get-memory-limit — Get the memory limit for one or more resources.render-pp-cli metrics get-memory-target — Get memory target for one or more resources.render-pp-cli metrics get-replication-lag — Get seconds of replica lag of a Postgres replica.render-pp-cli metrics get-task-runs-completed — Get the total number of task runs completed for one or more tasks. Optionally filter by state (succeeded/failed) or...render-pp-cli metrics get-task-runs-queued — Get the total number of task runs queued for one or more tasks.render-pp-cli metrics list-application-filter-values — List instance values to filter by for one or more resources.render-pp-cli metrics list-http-filter-values — List status codes and host values to filter by for one or more resources.render-pp-cli metrics list-path-filter-values — The path suggestions are based on the most recent 5000 log lines as filtered by the provided filtersmetrics-stream — Manage metrics stream
render-pp-cli metrics-stream delete-owner — Deletes the metrics stream for the specified workspace.render-pp-cli metrics-stream get-owner — Returns metrics stream information for the specified workspace.render-pp-cli metrics-stream upsert-owner — Creates or updates the metrics stream for the specified workspace.notification-settings — Notification Settings allow you to configure which notifications you want to recieve, and where you will receive them.
render-pp-cli notification-settings list-notification-overrides — List notification overrides matching the provided filters. If no filters are provided, returns all notification...render-pp-cli notification-settings patch-owner — Update notification settings for the owner with the provided ID.render-pp-cli notification-settings patch-service-notification-overrides — Update the notification override for the service with the provided ID.render-pp-cli notification-settings retrieve-owner — Retrieve notification settings for the owner with the provided ID. Note that you provide an owner ID to this...render-pp-cli notification-settings retrieve-service-notification-overrides — Retrieve the notification override for the service with the provided ID. Note that you provide a service ID to this...organizations — Manage organizations
owners — Manage owners
render-pp-cli owners list — List the workspaces that your API key has access to, optionally filtered by name or owner email address.render-pp-cli owners retrieve — Retrieve the workspace with the provided ID. Workspace IDs start with tea-. If you provide a user ID (starts with...postgres — Postgres endpoints enable you to interact with your Render Postgres databases. You can manage databases, exports, recoveries, and failovers.
render-pp-cli postgres create — Create a new Postgres instance.render-pp-cli postgres delete — Delete a Postgres instance by ID. This operation is irreversible, and all data will be lost.render-pp-cli postgres list — List Postgres instances matching the provided filters. If no filters are provided, all Postgres instances are returned.render-pp-cli postgres retrieve — Retrieve a Postgres instance by ID.render-pp-cli postgres update — Update a Postgres instance by ID.projects — Manage projects
render-pp-cli projects create — Create a new project.render-pp-cli projects delete — Delete the project with the provided ID. Requires all of the project's environments to be empty (i.e., they must...render-pp-cli projects list — List projects matching the provided filters. If no filters are provided, all projects are returned.render-pp-cli projects retrieve — Retrieve the project with the provided ID.render-pp-cli projects update — Update the details of a project. To update the details of a particular environment in the project, instead use the...redis — Manage redis
render-pp-cli redis create — Create a new Redis instance. This API is deprecated in favor of the Key Value API.render-pp-cli redis delete — Delete a Redis instance by ID. This API is deprecated in favor of the Key Value API.render-pp-cli redis list — List Redis instances matching the provided filters. If no filters are provided, all Redis instances are returned....render-pp-cli redis retrieve — Retrieve a Redis instance by ID. This API is deprecated in favor of the Key Value API.render-pp-cli redis update — Update a Redis instance by ID. This API is deprecated in favor of the Key Value API.registrycredentials — Manage registrycredentials
render-pp-cli registrycredentials create-registry-credential — Create a new registry credential.render-pp-cli registrycredentials delete-registry-credential — Delete the registry credential with the provided ID.render-pp-cli registrycredentials list-registry-credentials — List registry credentials matching the provided filters. If no filters are provided, returns all registry...render-pp-cli registrycredentials retrieve-registry-credential — Retrieve the registry credential with the provided ID.render-pp-cli registrycredentials update-registry-credential — Update the registry credential with the provided ID. Services that use this credential must be redeployed to use...services — Services allow you to manage your web services, private services, background workers, cron jobs, and static sites.
render-pp-cli services create — Creates a new Render service in the specified workspace with the specified configuration.render-pp-cli services delete — Delete the service with the provided ID.render-pp-cli services list — List services matching the provided filters. If no filters are provided, returns all services you have permissions...render-pp-cli services retrieve — Retrieve the service with the provided ID.render-pp-cli services update — Update the service with the provided ID.task-runs — Manage task runs
render-pp-cli task-runs cancel — Cancel a running task run with the provided ID.render-pp-cli task-runs create-task — Kicks off a run of the workflow task with the provided ID, passing the provided input data.render-pp-cli task-runs get — Retrieve the workflow task run with the provided ID.render-pp-cli task-runs list — List task runs that match the provided filters. If no filters are provided, all task runs accessible by the...render-pp-cli task-runs stream-events — Establishes a unidirectional event stream. The server sends events as lines formatted per the SSE spec. Clients...tasks — Manage tasks
render-pp-cli tasks get — Retrieve the workflow task with the provided ID.render-pp-cli tasks list — List workflow tasks that match the provided filters. If no filters are provided, all task definitions accessible by...users — The User endpoints allow you to retrieve information about the authenticated user
render-pp-cli users — Retrieve the user associated with the provided API key.webhooks — Webhooks allows you to manage your Render webhook configuration.
render-pp-cli webhooks create — Create a new webhook.render-pp-cli webhooks delete — Delete the webhook with the provided ID.render-pp-cli webhooks list — List webhooksrender-pp-cli webhooks retrieve — Retrieve the webhook with the provided IDrender-pp-cli webhooks update — Update the webhook with the provided ID.workflows — Manage workflows
render-pp-cli workflows create — Create a new workflow service with the specified configuration.render-pp-cli workflows delete — Delete the workflow service with the provided ID.render-pp-cli workflows get — Retrieve the workflow service with the provided ID.render-pp-cli workflows list — List workflows that match the provided filters. If no filters are provided, all workflows accessible by the...render-pp-cli workflows update — Update the workflow service with the provided ID.workflowversions — Manage workflowversions
render-pp-cli workflowversions create-workflow-version — Creates and deploys a new version of a workflow.render-pp-cli workflowversions get-workflow-version — Retrieve the specific workflow service version with the provided ID.render-pp-cli workflowversions list-workflow-versions — List known versions of the workflow service with the provided ID.When you know what you want to do but not which command does it, ask the CLI directly:
render-pp-cli which "<capability in your own words>"which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match — fall back to --help or use a narrower query.
render-pp-cli env promote --from srv-staging --to srv-prod --exclude DEBUG_TOKEN,SENTRY_DEV_DSNFirst diff to see what would change, then promote with the dev-only keys filtered out. Add --apply after review to actually issue the writes.
render-pp-cli env where STRIPE_KEY --json --select 'service.name,service.id,updatedAt'Returns service names, IDs, and timestamps for every place STRIPE_KEY is referenced — your rotation checklist.
render-pp-cli cost --group-by project --json --select 'project,monthly_usd,resource_count'Joins cached service/postgres/kv/disk plans against a curated price table; export to CSV for finance.
render-pp-cli drift --blueprint render.yaml --json --quiet || exit 1Exits non-zero when the live workspace diverges from the checked-in blueprint; wire it into your CI pipeline.
render-pp-cli incident-timeline srv-checkout-api --since 2h --json --select 'timestamp,kind,actor,summary'Merges deploys + events + audit-logs into one chronological table — answers 'what changed' during an on-call page.
Render uses bearer-token auth. Set RENDER_API_KEY (generate one at https://dashboard.render.com/u/settings#api-keys), or run render-pp-cli auth set-token <RENDER_API_KEY> to paste it interactively. Every command sends Authorization: Bearer <key>; doctor verifies the key is live.
Run render-pp-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable — JSON on stdout, errors on stderr
Filterable — --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
render-pp-cli blueprints list --agent --select id,name,statusPreviewable — --dry-run shows the request without sending
Offline-friendly — sync/search commands can use the local SQLite store when available
Non-interactive — never prompts, every input is a flag
Explicit retries — use --idempotent only when an already-existing create should count as success, and --ignore-missing only when a missing delete target should count as success
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal — piped/agent consumers get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
render-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
render-pp-cli feedback --stdin < notes.txt
render-pp-cli feedback list --json --limit 10Entries are stored locally at ~/.render-pp-cli/feedback.jsonl. They are never POSTed unless RENDER_FEEDBACK_ENDPOINT is set AND either --send is passed or RENDER_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
render-pp-cli profile save briefing --json
render-pp-cli --profile briefing blueprints list
render-pp-cli profile list --json
render-pp-cli profile show briefing
render-pp-cli profile delete briefing --yesExplicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
For endpoints that submit long-running work, the generator detects the submit-then-poll pattern (a job_id/task_id/operation_id field in the response plus a sibling status endpoint) and wires up three extra flags on the submitting command:
| Flag | Purpose |
|---|---|
--wait | Block until the job reaches a terminal status instead of returning the job ID immediately |
--wait-timeout | Maximum wait duration (default 10m, 0 means no timeout) |
--wait-interval | Initial poll interval (default 2s; grows with exponential backoff up to 30s) |
Use async submission without --wait when you want to fire-and-forget; use --wait when you want one command to return the finished artifact.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show render-pp-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)Install the MCP binary from this CLI's published public-library entry or pre-built release, then register it:
claude mcp add render-pp-mcp -- render-pp-mcpVerify: claude mcp list
which render-pp-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:render-pp-cli <command> [subcommand] [args] --agentrender-pp-cli <command> --help.© mvanhorn, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in cli-skills/pp-render of mvanhorn/printing-press-library.
Open the folder on GitHubat commit 7638ad4
Pp Render next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pp Render this skillmvanhorn/printing-press-library | 2.1k | — | ~7.3k | Automated safety check: Notes | Apache-2.0 | |
| Cost Diffruvnet/ruflo | 74k | — | ~1.3k | Automated safety check: Notes | MIT | |
| Cost Trackingaffaan-m/ECC | 274k | 1 repos | ~1.3k | Automated safety check: Pass | MIT | |
| Cost Conversationruvnet/ruflo | 74k | — | ~407 | Automated safety check: Notes | MIT | |
| @pierre/diffs Code Renderingpierrecomputer/pierre | 6.2k | 2 repos | ~803 | Automated safety check: Pass | Apache-2.0 | |
| Cost Reportruvnet/ruflo | 74k | — | ~830 | Automated safety check: Notes | MIT |
ruvnet/ruflo
Snapshot delta between two cost-summary JSON outputs. An agent skill from ruvnet/ruflo.
affaan-m/ECC
Track and report Claude Code token usage, spending, and budgets from the local ECC cost-tracker metrics log.
ruvnet/ruflo
Per-conversation cost view — list every session in cost-tracking with started-at, message count, top model, and total cost
pierrecomputer/pierre
Guides an agent through using @pierre/diffs to render syntax-highlighted files and diffs, and to build editing and review surfaces in React or plain JavaScript.
ruvnet/ruflo
Generate a cost report showing token usage and USD costs by agent and model
ruvnet/ruflo
Burn-rate trend over time with optional drift-alert exit code.
mvanhorn/printing-press-library
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.
mvanhorn/printing-press-library
Search, browse, and download Google Fonts from the terminal via the gfonts CLI.
mvanhorn/printing-press-library
The free, offline Trigger phrases: search 1688 for, find a factory on 1688 for, wholesale price on 1688 for, who is the cheapest supplier on 1688 for, compare 1688 suppliers for, use 1688, run 1688.
mvanhorn/printing-press-library
Inspect known Activity Japan plan IDs or URLs, compare dated prices and sessions, check language-sitemap coverage, and hand off to canonical booking pages.
mvanhorn/printing-press-library
Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...
mvanhorn/printing-press-library
macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.
Every Render endpoint, plus diff, drift, cost, audit, and orphan analytics no other Render tool ships. Pp Render is an agent skill from mvanhorn/printing-press-library. Every Render endpoint, plus diff, drift, cost, audit, and orphan analytics no other Render tool ships.
Pp Render fits situations like: phrases: diff render env vars; promote env vars between render services; check render blueprint drift; render monthly cost.
Run `npx skills add mvanhorn/printing-press-library --skill pp-render -a claude-code`. Or copy the skill folder (cli-skills/pp-render in mvanhorn/printing-press-library) into .claude/skills/pp-render in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-render -a codex`. Or copy the skill folder (cli-skills/pp-render in mvanhorn/printing-press-library) into .agents/skills/pp-render in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mvanhorn/printing-press-library --skill pp-render -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pp-render, .gemini/skills/pp-render, .github/skills/pp-render and .opencode/skills/pp-render in your project.
Going by SKILL.md and its folder, Pp Render needs the command-line tools its instructions call (claude, npx and go) and credentials named STRIPE_KEY, RENDER_API_KEY and DEBUG_TOKEN. Our summary lists: Node.js; A credential in DEBUG_TOKEN; A credential in STRIPE_KEY. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md names 2 domains. As links in the text: render.com and dashboard.render.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Pp Render is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.3k tokens (SKILL.md is roughly 29k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pp Render: Cost Diff (ruvnet/ruflo, 74k stars), Cost Tracking (affaan-m/ECC, 274k stars), Cost Conversation (ruvnet/ruflo, 74k stars) and @pierre/diffs Code Rendering (pierrecomputer/pierre, 6.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvanhorn (a GitHub user) maintains it in mvanhorn/printing-press-library, which has 2,053 GitHub stars. The repository holds 505 skills in this directory. The repository was last updated on October 6, 2026.
Source: mvanhorn/printing-press-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.