SQL Database Support for pREST
prest/prest
Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.
Every Steam Web API endpoint, plus a local SQLite store that turns friend playtimes, achievement progress, and library backlogs into single SQL queries no other tool can answer.
$ npx skills add mvanhorn/printing-press-library --skill pp-steam-web -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-steam-web --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-steam-web .claude/skills/pp-steam-web && 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-steam-web" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-steam-web into .claude/skills/pp-steam-web/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-steam-web", 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-steam-webType 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-steam-web -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-steam-web --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-steam-web .agents/skills/pp-steam-web && 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-steam-web" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-steam-web into .agents/skills/pp-steam-web/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-steam-web", 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-steam-web -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-steam-web --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-steam-web .cursor/skills/pp-steam-web && 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-steam-web" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-steam-web into .cursor/skills/pp-steam-web/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-steam-web", 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-steam-web--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-steam-web -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-steam-web --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-steam-web .gemini/skills/pp-steam-web && 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-steam-web" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-steam-web into .gemini/skills/pp-steam-web/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-steam-web", 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-steam-webInstalls 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-steam-web -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-steam-web .github/skills/pp-steam-web && 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-steam-web" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-steam-web into .github/skills/pp-steam-web/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-steam-web", 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-steam-web -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-steam-web --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-steam-web .opencode/skills/pp-steam-web && 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-steam-web" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-steam-web into .opencode/skills/pp-steam-web/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-steam-web", 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-steam-webEvery Steam Web API endpoint, plus a local SQLite store that turns friend playtimes, achievement progress, and library backlogs into single SQL queries no other tool can answer.
Pp Steam Web is an agent skill from mvanhorn/printing-press-library. Every Steam Web API endpoint, plus a local SQLite store that turns friend playtimes, achievement progress, and library backlogs into single SQL queries no other tool can answer. Trigger phrases: what should I play next on steam, find friends who own this game, easiest steam achievement to unlock, audit my steam backlog, use steam-web.
Its SKILL.md is about 9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases, covering SQL and REST APIs. It works with SQLite and SQL. 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 76de244. 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:
goclaudenpxFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
steamcommunity.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
STEAM_WEB_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pp Steam Web loads about 9k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 2,923 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 76de244, republished under its Apache-2.0 licence (© mvanhorn). 2,923 words, ~8,976 tokens.
.claude/skills/pp-steam-web/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/media-and-entertainment/steam-web/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 steam-web-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 steam-web --cli-onlysteam-web-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/media-and-entertainment/steam-web/cmd/steam-web-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.
Pick this CLI when an agent is asked to query Steam profile, library, achievement, or news data and the question crosses entities — anything joining friends with owned games, achievements with global rarity, or news with a date filter. The local SQLite store turns those questions into one SQL query instead of an N+1 fanout. Every other Steam tool is single-shot read-once; this one compounds. For pure single-endpoint reads (one player's profile, one app's news), the per-endpoint MCP tools work too — but the novel commands are where this CLI earns its weight.
These capabilities aren't available in any other tool for this API.
library audit — Surface never-launched games, paid titles you bounced off in under 2 hours, and where your hours actually went by genre.
Use this when an agent is asked to plan what to play next, justify a refund, or summarize the user's gaming spend.
steam-web-pp-cli library audit 76561197960287930 --bounce --jsonreview-velocity — Reviews per day and voted-up share over a rolling window for one app — date-bucket aggregation over the cursor-paginated appreviews stream.
Use this when an agent is asked to track sentiment shifts after a patch, sale, or controversy.
steam-web-pp-cli review-velocity 1245620 --window 30d --jsonnews search — FTS5 search across the title and contents of every news post you've synced, optionally scoped by appid or date range.
Use this when an agent is asked to dig up patch notes, devlog mentions, or news around a specific topic across the user's library.
steam-web-pp-cli news search 'patch notes' --since 2026-04-01 --jsonplay-trend — Show concurrent-player count over time for one app as a sparkline plus min/max/last over a rolling window — value scales with how often you sample.
Use this when an agent needs to see whether a game's playerbase is growing, falling, or has spiked around an event — sample the count every few hours via cron and the window query becomes meaningful within a week.
steam-web-pp-cli play-trend 1245620 --window 7d --jsonfriends compare — Rank everyone in your friend list by hours spent in a specific game, with throttled fan-out so you don't trip Steam's 25 req/s budget.
Use this when an agent is asked 'who in my friends has the most hours in <game>' or 'who owns this and never played'.
steam-web-pp-cli friends compare 1245620 --my-steamid 76561197960287930 --agent --select results.persona_name,results.playtime_hourslibrary compare — Set operations across two libraries — what's mine-only, what's theirs-only, what's shared with playtime delta.
Use this when an agent is asked 'what games do my friend and I both own' or to plan a co-op session.
steam-web-pp-cli library compare 76561197960287930 --my-steamid 76561197960287930 --shared --jsoncurrently-playing — Show which friends are in-game right now and what they're playing — one batched API call across the friend list, no fanout.
Use this when an agent is asked 'who is online and playing what' or to power a status panel.
steam-web-pp-cli currently-playing --my-steamid 76561197960287930 --jsonachievement-leaderboard — Rank your friends by achievement completion percentage for one app, throttled fan-out via the same limiter that powers friends compare.
Use this when an agent is asked 'who in my friends is closest to 100% in <game>' or to seed a competitive completion challenge.
steam-web-pp-cli achievement-leaderboard 1245620 --my-steamid 76561197960287930 --jsonnext-achievement — Across your entire library, surface the achievement with the highest global unlock percentage that you still don't have.
Use this when an agent is asked 'what should I go unlock next' or to recommend low-effort achievement progress for completionists.
steam-web-pp-cli next-achievement --steamid 76561197960287930 --limit 10 --jsonachievement-hunt — Render the full achievement schema for one app side-by-side with your unlock state and the global rarity of each achievement in one table.
Use this when an agent needs the full unlock landscape for one game to plan a completion run.
steam-web-pp-cli achievement-hunt 1245620 --steamid 76561197960287930 --locked --jsonrare-achievements — Surface your rarest achievement unlocks across all owned games — the inverse of the next-achievement query, sorted by ascending global percentage.
Use this when an agent is asked to summarize what the user is proud of, or to power a profile-flex panel.
steam-web-pp-cli rare-achievements --steamid 76561197960287930 --limit 10 --jsoniauthentication-service — Manage iauthentication service
steam-web-pp-cli iauthentication-service begin-auth-session-via-credentials — BeginAuthSessionViaCredentials operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service begin-auth-session-via-qr — BeginAuthSessionViaQR operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service get-auth-session-info — GetAuthSessionInfo operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service get-auth-session-risk-info — GetAuthSessionRiskInfo operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service get-password-rsapublic-key — GetPasswordRSAPublicKey operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service notify-risk-quiz-results — NotifyRiskQuizResults operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service poll-auth-session-status — PollAuthSessionStatus operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service update-auth-session-with-mobile-confirmation — UpdateAuthSessionWithMobileConfirmation operation of IAuthenticationServicesteam-web-pp-cli iauthentication-service update-auth-session-with-steam-guard-code — UpdateAuthSessionWithSteamGuardCode operation of IAuthenticationServiceibroadcast-service — Manage ibroadcast service
steam-web-pp-cli ibroadcast-service — PostGameDataFrameRTMP operation of IBroadcastServiceicheat-reporting-service — Manage icheat reporting service
steam-web-pp-cli icheat-reporting-service — ReportCheatData operation of ICheatReportingServiceiclient-stats-1046930 — Manage iclient stats 1046930
steam-web-pp-cli iclient-stats-1046930 — ReportEvent operation of IClientStats_1046930icontent-server-config-service — Manage icontent server config service
steam-web-pp-cli icontent-server-config-service get-steam-cache-node-params — GetSteamCacheNodeParams operation of IContentServerConfigServicesteam-web-pp-cli icontent-server-config-service set-steam-cache-client-filters — SetSteamCacheClientFilters operation of IContentServerConfigServicesteam-web-pp-cli icontent-server-config-service set-steam-cache-performance-stats — SetSteamCachePerformanceStats operation of IContentServerConfigServiceicontent-server-directory-service — Manage icontent server directory service
steam-web-pp-cli icontent-server-directory-service get-cdnfor-video — GetCDNForVideo operation of IContentServerDirectoryServicesteam-web-pp-cli icontent-server-directory-service get-client-update-hosts — GetClientUpdateHosts operation of IContentServerDirectoryServicesteam-web-pp-cli icontent-server-directory-service get-depot-patch-info — GetDepotPatchInfo operation of IContentServerDirectoryServicesteam-web-pp-cli icontent-server-directory-service get-servers-for-steam-pipe — GetServersForSteamPipe operation of IContentServerDirectoryServicesteam-web-pp-cli icontent-server-directory-service pick-single-content-server — PickSingleContentServer operation of IContentServerDirectoryServiceicsgoplayers-730 — Manage icsgoplayers 730
steam-web-pp-cli icsgoplayers-730 — GetNextMatchSharingCode operation of ICSGOPlayers_730icsgoservers-730 — Manage icsgoservers 730
steam-web-pp-cli icsgoservers-730 get-game-maps-playtime — GetGameMapsPlaytime operation of ICSGOServers_730steam-web-pp-cli icsgoservers-730 get-game-servers-status — GetGameServersStatus operation of ICSGOServers_730icsgotournaments-730 — Manage icsgotournaments 730
steam-web-pp-cli icsgotournaments-730 get-tournament-fantasy-lineup — GetTournamentFantasyLineup operation of ICSGOTournaments_730steam-web-pp-cli icsgotournaments-730 get-tournament-items — GetTournamentItems operation of ICSGOTournaments_730steam-web-pp-cli icsgotournaments-730 get-tournament-layout — GetTournamentLayout operation of ICSGOTournaments_730steam-web-pp-cli icsgotournaments-730 get-tournament-predictions — GetTournamentPredictions operation of ICSGOTournaments_730steam-web-pp-cli icsgotournaments-730 upload-tournament-fantasy-lineup — UploadTournamentFantasyLineup operation of ICSGOTournaments_730steam-web-pp-cli icsgotournaments-730 upload-tournament-predictions — UploadTournamentPredictions operation of ICSGOTournaments_730idota2-match-570 — Manage idota2 match 570
steam-web-pp-cli idota2-match-570 get-live-league-games — GetLiveLeagueGames operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-match-details — GetMatchDetails operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-match-history — GetMatchHistory operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-match-history-by-sequence-num — GetMatchHistoryBySequenceNum operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-team-info-by-team-id — GetTeamInfoByTeamID operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-top-live-event-game — GetTopLiveEventGame operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-top-live-game — GetTopLiveGame operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-top-weekend-tourney-games — GetTopWeekendTourneyGames operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-tournament-player-stats — GetTournamentPlayerStats operation of IDOTA2Match_570steam-web-pp-cli idota2-match-570 get-tournament-player-stats-idota2match570 — GetTournamentPlayerStats operation of IDOTA2Match_570idota2-match-stats-570 — Manage idota2 match stats 570
steam-web-pp-cli idota2-match-stats-570 — GetRealtimeStats operation of IDOTA2MatchStats_570idota2-stream-system-570 — Manage idota2 stream system 570
steam-web-pp-cli idota2-stream-system-570 — GetBroadcasterInfo operation of IDOTA2StreamSystem_570idota2-ticket-570 — Manage idota2 ticket 570
steam-web-pp-cli idota2-ticket-570 get-steam-idfor-badge-id — GetSteamIDForBadgeID operation of IDOTA2Ticket_570steam-web-pp-cli idota2-ticket-570 set-steam-account-purchased — SetSteamAccountPurchased operation of IDOTA2Ticket_570steam-web-pp-cli idota2-ticket-570 steam-account-valid-for-badge-type — SteamAccountValidForBadgeType operation of IDOTA2Ticket_570iecon-dota2-570 — Manage iecon dota2 570
steam-web-pp-cli iecon-dota2-570 get-event-stats-for-account — GetEventStatsForAccount operation of IEconDOTA2_570steam-web-pp-cli iecon-dota2-570 get-heroes — GetHeroes operation of IEconDOTA2_570steam-web-pp-cli iecon-dota2-570 get-item-creators — GetItemCreators operation of IEconDOTA2_570steam-web-pp-cli iecon-dota2-570 get-item-workshop-published-file-ids — GetItemWorkshopPublishedFileIDs operation of IEconDOTA2_570steam-web-pp-cli iecon-dota2-570 get-rarities — GetRarities operation of IEconDOTA2_570steam-web-pp-cli iecon-dota2-570 get-tournament-prize-pool — GetTournamentPrizePool operation of IEconDOTA2_570iecon-items-1046930 — Manage iecon items 1046930
steam-web-pp-cli iecon-items-1046930 — GetPlayerItems operation of IEconItems_1046930iecon-items-1269260 — Manage iecon items 1269260
steam-web-pp-cli iecon-items-1269260 — GetEquippedPlayerItems operation of IEconItems_1269260iecon-items-440 — Manage iecon items 440
steam-web-pp-cli iecon-items-440 get-player-items — GetPlayerItems operation of IEconItems_440steam-web-pp-cli iecon-items-440 get-schema — GetSchema operation of IEconItems_440steam-web-pp-cli iecon-items-440 get-schema-items — GetSchemaItems operation of IEconItems_440steam-web-pp-cli iecon-items-440 get-schema-overview — GetSchemaOverview operation of IEconItems_440steam-web-pp-cli iecon-items-440 get-schema-url — GetSchemaURL operation of IEconItems_440steam-web-pp-cli iecon-items-440 get-store-meta-data — GetStoreMetaData operation of IEconItems_440steam-web-pp-cli iecon-items-440 get-store-status — GetStoreStatus operation of IEconItems_440iecon-items-570 — Manage iecon items 570
steam-web-pp-cli iecon-items-570 get-player-items — GetPlayerItems operation of IEconItems_570steam-web-pp-cli iecon-items-570 get-store-meta-data — GetStoreMetaData operation of IEconItems_570iecon-items-583950 — Manage iecon items 583950
steam-web-pp-cli iecon-items-583950 — GetEquippedPlayerItems operation of IEconItems_583950iecon-items-620 — Manage iecon items 620
steam-web-pp-cli iecon-items-620 get-player-items — GetPlayerItems operation of IEconItems_620steam-web-pp-cli iecon-items-620 get-schema — GetSchema operation of IEconItems_620iecon-items-730 — Manage iecon items 730
steam-web-pp-cli iecon-items-730 get-player-items — GetPlayerItems operation of IEconItems_730steam-web-pp-cli iecon-items-730 get-schema — GetSchema operation of IEconItems_730steam-web-pp-cli iecon-items-730 get-schema-url — GetSchemaURL operation of IEconItems_730steam-web-pp-cli iecon-items-730 get-store-meta-data — GetStoreMetaData operation of IEconItems_730iecon-service — Manage iecon service
steam-web-pp-cli iecon-service get-trade-history — GetTradeHistory operation of IEconServicesteam-web-pp-cli iecon-service get-trade-hold-durations — GetTradeHoldDurations operation of IEconServicesteam-web-pp-cli iecon-service get-trade-offer — GetTradeOffer operation of IEconServicesteam-web-pp-cli iecon-service get-trade-offers — GetTradeOffers operation of IEconServicesteam-web-pp-cli iecon-service get-trade-offers-summary — GetTradeOffersSummary operation of IEconServicesteam-web-pp-cli iecon-service get-trade-status — GetTradeStatus operation of IEconServiceigame-notifications-service — Manage igame notifications service
steam-web-pp-cli igame-notifications-service user-create-session — UserCreateSession operation of IGameNotificationsServicesteam-web-pp-cli igame-notifications-service user-delete-session — UserDeleteSession operation of IGameNotificationsServicesteam-web-pp-cli igame-notifications-service user-update-session — UserUpdateSession operation of IGameNotificationsServiceigame-servers-service — Manage igame servers service
steam-web-pp-cli igame-servers-service create-account — CreateAccount operation of IGameServersServicesteam-web-pp-cli igame-servers-service delete-account — DeleteAccount operation of IGameServersServicesteam-web-pp-cli igame-servers-service get-account-list — GetAccountList operation of IGameServersServicesteam-web-pp-cli igame-servers-service get-account-public-info — GetAccountPublicInfo operation of IGameServersServicesteam-web-pp-cli igame-servers-service get-server-ips-by-steam-id — GetServerIPsBySteamID operation of IGameServersServicesteam-web-pp-cli igame-servers-service get-server-steam-ids-by-ip — GetServerSteamIDsByIP operation of IGameServersServicesteam-web-pp-cli igame-servers-service query-by-fake-ip — QueryByFakeIP operation of IGameServersServicesteam-web-pp-cli igame-servers-service query-login-token — QueryLoginToken operation of IGameServersServicesteam-web-pp-cli igame-servers-service reset-login-token — ResetLoginToken operation of IGameServersServicesteam-web-pp-cli igame-servers-service set-memo — SetMemo operation of IGameServersServiceigcversion-1046930 — Manage igcversion 1046930
steam-web-pp-cli igcversion-1046930 get-client-version — GetClientVersion operation of IGCVersion_1046930steam-web-pp-cli igcversion-1046930 get-server-version — GetServerVersion operation of IGCVersion_1046930igcversion-1269260 — Manage igcversion 1269260
steam-web-pp-cli igcversion-1269260 get-client-version — GetClientVersion operation of IGCVersion_1269260steam-web-pp-cli igcversion-1269260 get-server-version — GetServerVersion operation of IGCVersion_1269260igcversion-1422450 — Manage igcversion 1422450
steam-web-pp-cli igcversion-1422450 get-client-version — GetClientVersion operation of IGCVersion_1422450steam-web-pp-cli igcversion-1422450 get-server-version — GetServerVersion operation of IGCVersion_1422450igcversion-440 — Manage igcversion 440
steam-web-pp-cli igcversion-440 get-client-version — GetClientVersion operation of IGCVersion_440steam-web-pp-cli igcversion-440 get-server-version — GetServerVersion operation of IGCVersion_440igcversion-570 — Manage igcversion 570
steam-web-pp-cli igcversion-570 get-client-version — GetClientVersion operation of IGCVersion_570steam-web-pp-cli igcversion-570 get-server-version — GetServerVersion operation of IGCVersion_570igcversion-583950 — Manage igcversion 583950
steam-web-pp-cli igcversion-583950 get-client-version — GetClientVersion operation of IGCVersion_583950steam-web-pp-cli igcversion-583950 get-server-version — GetServerVersion operation of IGCVersion_583950igcversion-730 — Manage igcversion 730
steam-web-pp-cli igcversion-730 — GetServerVersion operation of IGCVersion_730ihelp-request-logs-service — Manage ihelp request logs service
steam-web-pp-cli ihelp-request-logs-service get-application-log-demand — GetApplicationLogDemand operation of IHelpRequestLogsServicesteam-web-pp-cli ihelp-request-logs-service upload-user-application-log — UploadUserApplicationLog operation of IHelpRequestLogsServiceiinventory-service — Manage iinventory service
steam-web-pp-cli iinventory-service combine-item-stacks — CombineItemStacks operation of IInventoryServicesteam-web-pp-cli iinventory-service get-price-sheet — GetPriceSheet operation of IInventoryServicesteam-web-pp-cli iinventory-service split-item-stack — SplitItemStack operation of IInventoryServiceiplayer-service — Manage iplayer service
steam-web-pp-cli iplayer-service get-badges — GetBadges operation of IPlayerServicesteam-web-pp-cli iplayer-service get-community-badge-progress — GetCommunityBadgeProgress operation of IPlayerServicesteam-web-pp-cli iplayer-service get-owned-games — GetOwnedGames operation of IPlayerServicesteam-web-pp-cli iplayer-service get-recently-played-games — GetRecentlyPlayedGames operation of IPlayerServicesteam-web-pp-cli iplayer-service get-steam-level — GetSteamLevel operation of IPlayerServicesteam-web-pp-cli iplayer-service is-playing-shared-game — IsPlayingSharedGame operation of IPlayerServicesteam-web-pp-cli iplayer-service record-offline-playtime — RecordOfflinePlaytime operation of IPlayerServiceiportal2-leaderboards-620 — Manage iportal2 leaderboards 620
steam-web-pp-cli iportal2-leaderboards-620 — GetBucketizedData operation of IPortal2Leaderboards_620ipublished-file-service — Manage ipublished file service
steam-web-pp-cli ipublished-file-service get-details — GetDetails operation of IPublishedFileServicesteam-web-pp-cli ipublished-file-service get-sub-section-data — GetSubSectionData operation of IPublishedFileServicesteam-web-pp-cli ipublished-file-service get-user-file-count — GetUserFileCount operation of IPublishedFileServicesteam-web-pp-cli ipublished-file-service get-user-files — GetUserFiles operation of IPublishedFileServicesteam-web-pp-cli ipublished-file-service get-user-vote-summary — GetUserVoteSummary operation of IPublishedFileServicesteam-web-pp-cli ipublished-file-service query-files — QueryFiles operation of IPublishedFileServiceisteam-apps — Manage isteam apps
steam-web-pp-cli isteam-apps get-sdrconfig — GetSDRConfig operation of ISteamAppssteam-web-pp-cli isteam-apps get-servers-at-address — GetServersAtAddress operation of ISteamAppssteam-web-pp-cli isteam-apps up-to-date-check — UpToDateCheck operation of ISteamAppsisteam-broadcast — Manage isteam broadcast
steam-web-pp-cli isteam-broadcast player-stats — PlayerStats operation of ISteamBroadcaststeam-web-pp-cli isteam-broadcast viewer-heartbeat — ViewerHeartbeat operation of ISteamBroadcastisteam-cdn — Manage isteam cdn
steam-web-pp-cli isteam-cdn set-client-filters — SetClientFilters operation of ISteamCDNsteam-web-pp-cli isteam-cdn set-performance-stats — SetPerformanceStats operation of ISteamCDNisteam-directory — Manage isteam directory
steam-web-pp-cli isteam-directory get-cmlist — GetCMList operation of ISteamDirectorysteam-web-pp-cli isteam-directory get-cmlist-for-connect — GetCMListForConnect operation of ISteamDirectorysteam-web-pp-cli isteam-directory get-steam-pipe-domains — GetSteamPipeDomains operation of ISteamDirectoryisteam-economy — Manage isteam economy
steam-web-pp-cli isteam-economy get-asset-class-info — GetAssetClassInfo operation of ISteamEconomysteam-web-pp-cli isteam-economy get-asset-prices — GetAssetPrices operation of ISteamEconomyisteam-news — Manage isteam news
steam-web-pp-cli isteam-news get-news-for-app — GetNewsForApp operation of ISteamNewssteam-web-pp-cli isteam-news get-news-for-app-isteamnews — GetNewsForApp operation of ISteamNewsisteam-remote-storage — Manage isteam remote storage
steam-web-pp-cli isteam-remote-storage get-collection-details — GetCollectionDetails operation of ISteamRemoteStoragesteam-web-pp-cli isteam-remote-storage get-published-file-details — GetPublishedFileDetails operation of ISteamRemoteStoragesteam-web-pp-cli isteam-remote-storage get-ugcfile-details — GetUGCFileDetails operation of ISteamRemoteStorageisteam-user — Manage isteam user
steam-web-pp-cli isteam-user get-friend-list — GetFriendList operation of ISteamUsersteam-web-pp-cli isteam-user get-player-bans — GetPlayerBans operation of ISteamUsersteam-web-pp-cli isteam-user get-player-summaries — GetPlayerSummaries operation of ISteamUsersteam-web-pp-cli isteam-user get-player-summaries-isteamuser — GetPlayerSummaries operation of ISteamUsersteam-web-pp-cli isteam-user get-user-group-list — GetUserGroupList operation of ISteamUsersteam-web-pp-cli isteam-user resolve-vanity-url — ResolveVanityURL operation of ISteamUseristeam-user-auth — Manage isteam user auth
steam-web-pp-cli isteam-user-auth — AuthenticateUserTicket operation of ISteamUserAuthisteam-user-oauth — Manage isteam user oauth
steam-web-pp-cli isteam-user-oauth — GetTokenDetails operation of ISteamUserOAuthisteam-user-stats — Manage isteam user stats
steam-web-pp-cli isteam-user-stats get-global-achievement-percentages-for-app — GetGlobalAchievementPercentagesForApp operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-global-achievement-percentages-for-app-isteamuserstats — GetGlobalAchievementPercentagesForApp operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-global-stats-for-game — GetGlobalStatsForGame operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-number-of-current-players — GetNumberOfCurrentPlayers operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-player-achievements — GetPlayerAchievements operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-schema-for-game — GetSchemaForGame operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-schema-for-game-isteamuserstats — GetSchemaForGame operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-user-stats-for-game — GetUserStatsForGame operation of ISteamUserStatssteam-web-pp-cli isteam-user-stats get-user-stats-for-game-isteamuserstats — GetUserStatsForGame operation of ISteamUserStatsisteam-web-apiutil — Manage isteam web apiutil
steam-web-pp-cli isteam-web-apiutil get-server-info — GetServerInfo operation of ISteamWebAPIUtilsteam-web-pp-cli isteam-web-apiutil get-supported-apilist — GetSupportedAPIList operation of ISteamWebAPIUtilistore-service — Manage istore service
steam-web-pp-cli istore-service get-app-list — Gets a list of all apps available on the Steam Storesteam-web-pp-cli istore-service get-games-followed — GetGamesFollowed operation of IStoreServicesteam-web-pp-cli istore-service get-games-followed-count — GetGamesFollowedCount operation of IStoreServicesteam-web-pp-cli istore-service get-recommended-tags-for-user — GetRecommendedTagsForUser operation of IStoreServiceitfitems-440 — Manage itfitems 440
steam-web-pp-cli itfitems-440 get-golden-wrenches — GetGoldenWrenches operation of ITFItems_440steam-web-pp-cli itfitems-440 get-golden-wrenches-itfitems440 — GetGoldenWrenches operation of ITFItems_440itfpromos-440 — Manage itfpromos 440
steam-web-pp-cli itfpromos-440 get-item-id — GetItemID operation of ITFPromos_440steam-web-pp-cli itfpromos-440 grant-item — GrantItem operation of ITFPromos_440itfpromos-620 — Manage itfpromos 620
steam-web-pp-cli itfpromos-620 get-item-id — GetItemID operation of ITFPromos_620steam-web-pp-cli itfpromos-620 grant-item — GrantItem operation of ITFPromos_620itfsystem-440 — Manage itfsystem 440
steam-web-pp-cli itfsystem-440 — GetWorldStatus operation of ITFSystem_440iwishlist-service — Manage iwishlist service
steam-web-pp-cli iwishlist-service get-wishlist — GetWishlist operation of IWishlistServicesteam-web-pp-cli iwishlist-service get-wishlist-item-count — GetWishlistItemCount operation of IWishlistServicesteam-web-pp-cli iwishlist-service get-wishlist-sorted-filtered — GetWishlistSortedFiltered operation of IWishlistServiceWhen you know what you want to do but not which command does it, ask the CLI directly:
steam-web-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.
steam-web-pp-cli friends compare 1245620 --my-steamid 76561197960287930 --filter owns-zero-hours --agent --select results.persona_name,results.steamidThrottled fan-out to identify dormant owners — the people most likely to actually play if invited.
steam-web-pp-cli achievement-hunt 1245620 --steamid 76561197960287930 --locked --agent --select achievements.display_name,achievements.global_pctSurfaces every locked achievement plus its global rarity so you can rank effort vs. reward.
steam-web-pp-cli next-achievement --steamid 76561197960287930 --limit 10 --jsonCross-library SQL — the ten achievements with the highest global unlock rate that you still don't have.
steam-web-pp-cli library audit 76561197960287930 --never-launched --jsonReveals what you bought and didn't open; pairs well with library audit --bounce for the under-2h paid set.
steam-web-pp-cli news search 'mod support' --since 2026-04-01 --jsonFTS5 search over every news post you've synced — useful for tracking when devs ship features you care about across all your owned games.
Standard Steam Web API key auth: get one at https://steamcommunity.com/dev/apikey and set STEAM_WEB_API_KEY in your environment. The key is sent as a ?key= query parameter on every request. Some endpoints (server time, app list, news) require no auth at all and work without a key. The IAuthenticationService endpoints in the spec are NOT for Web API auth — they implement Steam's interactive QR-code login flow. They remain reachable via the CLI subcommand and the MCP code-orchestration pair for completeness but should not be used as part of normal Web API workflows.
Run steam-web-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:
steam-web-pp-cli iauthentication-service begin-auth-session-via-credentials --account-name example-resource --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
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:
steam-web-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
steam-web-pp-cli feedback --stdin < notes.txt
steam-web-pp-cli feedback list --json --limit 10Entries are stored locally at ~/.steam-web-pp-cli/feedback.jsonl. They are never POSTed unless STEAM_WEB_FEEDBACK_ENDPOINT is set AND either --send is passed or STEAM_WEB_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.
steam-web-pp-cli profile save briefing --json
steam-web-pp-cli --profile briefing iauthentication-service begin-auth-session-via-credentials --account-name example-resource
steam-web-pp-cli profile list --json
steam-web-pp-cli profile show briefing
steam-web-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.
| 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 steam-web-pp-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)go install github.com/mvanhorn/printing-press-library/library/other/steam-web/cmd/steam-web-pp-mcp@latestclaude mcp add steam-web-pp-mcp -- steam-web-pp-mcpclaude mcp listwhich steam-web-pp-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:steam-web-pp-cli <command> [subcommand] [args] --agentsteam-web-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-steam-web of mvanhorn/printing-press-library.
Open the folder on GitHubat commit 76de244
Pp Steam Web 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 Steam Web this skillmvanhorn/printing-press-library | 2.1k | — | ~9k | Automated safety check: Notes | Apache-2.0 | |
| SQL Database Support for pRESTprest/prest | 4.6k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Cursor BYOK Database Schemaleookun/cursor-byok | 3.2k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Squixeduardofuncao/squix | 273 | — | ~784 | Automated safety check: Pass | MIT | |
| NpgsqlrestNpgsqlRest/NpgsqlRest | 132 | — | ~7k | Automated safety check: Notes | MIT | |
| Analyzing SQL Tracesnwjs/chromium.src | 160 | — | ~2.9k | Automated safety check: Pass | BSD-3-Clause |
prest/prest
Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.
leookun/cursor-byok
Guides SQLite schema changes in the Cursor BYOK server, keeping SQLx migrations, the Rust store, API contracts and fixtures aligned.
eduardofuncao/squix
Run SQL queries across databases (Postgres, MySQL, SQLite, etc.) via the squix CLI.
NpgsqlRest/NpgsqlRest
Build and modify REST APIs with NpgsqlRest — exposing PostgreSQL as HTTP endpoints from two sources (database functions/procedures/tables/views, and plain .sql files), driven by SQL comment…
nwjs/chromium.src
Extracts raw trace data from Perfetto traces, runs arbitrary SQL queries for custom follow-up analysis, and applies expert cognitive principles (Tiered Flow Analysis, Semantic Mismatch, Redundancy)…
unxed/f4
Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…
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.
Categories
Every Steam Web API endpoint, plus a local SQLite store that turns friend playtimes, achievement progress, and library backlogs into single SQL queries no other tool can answer. Pp Steam Web is an agent skill from mvanhorn/printing-press-library. Every Steam Web API endpoint, plus a local SQLite store that turns friend playtimes, achievement progress, and library backlogs into single SQL queries no other tool can answer.
Pp Steam Web fits situations like: phrases: what should I play next on steam; find friends who own this game; easiest steam achievement to unlock; audit my steam backlog.
Run `npx skills add mvanhorn/printing-press-library --skill pp-steam-web -a claude-code`. Or copy the skill folder (cli-skills/pp-steam-web in mvanhorn/printing-press-library) into .claude/skills/pp-steam-web in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-steam-web -a codex`. Or copy the skill folder (cli-skills/pp-steam-web in mvanhorn/printing-press-library) into .agents/skills/pp-steam-web 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-steam-web -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-steam-web, .gemini/skills/pp-steam-web, .github/skills/pp-steam-web and .opencode/skills/pp-steam-web in your project.
Going by SKILL.md and its folder, Pp Steam Web needs the command-line tools its instructions call (go, claude and npx) and credentials named STEAM_WEB_API_KEY. Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md names 1 domain. As links in the text: steamcommunity.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 Steam Web 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 9k tokens (SKILL.md is roughly 36k 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 Steam Web: SQL Database Support for pREST (prest/prest, 4.6k stars), Cursor BYOK Database Schema (leookun/cursor-byok, 3.2k stars), Squix (eduardofuncao/squix, 273 stars) and Npgsqlrest (NpgsqlRest/NpgsqlRest, 132 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,056 GitHub stars. The repository holds 506 skills in this directory. The repository was last updated on October 9, 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.