Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "steam-cursor-plugin",
"displayName": "Steam Developer Tools",
"version": "1.3.6",
"description": "Integrates Steam and Steamworks APIs for game developers, modders, and power users. 30 skills covering store data, multiplayer, cloud saves, leaderboards, input, inventory, social, profiles, Workshop/UGC, comparisons, reviews, pricing, market research, wishlists, CI/CD, release checklists, steamcmd, community, store pages, pricing strategy, DLC, playtesting, bug reporting, anti-cheat, testing sandbox, and platform migration - plus 9 rules. Companion Steam MCP server provides 25 MCP tools.",
"description": "Integrates Steam and Steamworks APIs for game developers, modders, and power users. 30 skills covering store data, multiplayer, cloud saves, leaderboards, input, inventory, social, profiles, Workshop/UGC, comparisons, reviews, pricing, market research, wishlists, CI/CD, release checklists, steamcmd, community, store pages, pricing strategy, DLC, playtesting, bug reporting, anti-cheat, testing sandbox, and platform migration - plus 9 rules. Companion Steam MCP server provides 26 MCP tools.",
"author": {
"name": "TMHSDigital",
"url": "https://github.com/TMHSDigital"
Expand Down
33 changes: 32 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,43 @@
# Environment and secrets
.env
.env.*
.env.local
.env.partner
!.env.example
*.ssfn
ssfn*

# Steam credentials
config.vdf
loginusers.vdf
local.vdf

# Cookie jars and Playwright auth
cookies.txt
cookies.json
*.cookies
*cookie-jar*
storageState.json
**/playwright/.auth/

# Chromium / Playwright profiles (never store these in-repo)
**/*user-data-dir*/
**/chromium-profile/
**/partner-profile/
**/.pw-profile/
playwright-report/
blob-report/
*.har

# Generic secrets
secrets.json
*.pem
*.key
*.p12

# Partner-admin dry-run dumps
partner-dry-run*.json
admin-save-payload*.json

# Node
node_modules/
Expand Down Expand Up @@ -35,4 +67,3 @@ __pycache__/
# Phase 2c: release-doc-sync verification trigger (DTD#5)

# DTD#27: release-doc-sync v1 migration verification

4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Guidance for AI coding agents working on the Steam Cursor Plugin repository.

## Repository overview

A Cursor IDE plugin for Steam and Steamworks integration. 30 skills and 9 rules covering store data, achievements, Workshop, multiplayer, cloud saves, and game development workflows. 25 MCP tools via companion server.
A Cursor IDE plugin for Steam and Steamworks integration. 30 skills and 9 rules covering store data, achievements, Workshop, multiplayer, cloud saves, and game development workflows. 26 MCP tools via companion server.

**Docs site:** https://tmhsdigital.github.io/Steam-Cursor-Plugin/

Expand All @@ -17,7 +17,7 @@ Steam-Cursor-Plugin/
.cursor-plugin/plugin.json # Plugin manifest (name, version, description)
skills/ # 30 skill directories, each with SKILL.md
rules/ # 9 rule files (.mdc)
mcp-tools.json # MCP tool catalog (25 tools, manually maintained)
mcp-tools.json # MCP tool catalog (26 tools, manually maintained)
site.json # GitHub Pages branding/config
docs/ # Generated GitHub Pages site (do not edit manually)
assets/ # Logo and images
Expand Down
6 changes: 3 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

**Steam Developer Tools** is a Cursor IDE plugin that integrates Steam and Steamworks APIs for game developers, modders, and power users. It provides AI-assisted workflows for querying Steam store data, managing Steamworks configurations, building multiplayer networking, implementing cloud saves, leaderboards, input, inventory/economy, social features, looking up API docs, fetching player statistics, integrating Workshop UGC, designing achievements, looking up player profiles, comparing games, analyzing reviews, researching pricing, evaluating market fit, estimating wishlists, automating builds, validating release readiness, scripting steamcmd, managing communities, optimizing store pages, planning pricing strategy, configuring DLC, setting up playtests, creating bug report workflows, integrating anti-cheat, providing a testing sandbox, and guiding platform migration.

This plugin uses Markdown skill files and MDC rule files for AI guidance, paired with the companion [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) (separate repo) which provides 25 API tools (18 read-only + 7 write/guidance) for live data access. No build system, no npm, no compiled code in this repo.
This plugin uses Markdown skill files and MDC rule files for AI guidance, paired with the companion [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) (separate repo) which provides 26 API tools (19 read-only + 7 write/guidance) for live data access. No build system, no npm, no compiled code in this repo.

The project shipped v1.0.0 "Stable" as the production milestone (see `ROADMAP.md`). 30 skills, 9 rules, 25 MCP tools.
The project shipped v1.0.0 "Stable" as the production milestone (see `ROADMAP.md`). 30 skills, 9 rules, 26 MCP tools.

**Version:** 1.3.6
**License:** CC-BY-NC-ND-4.0
Expand Down Expand Up @@ -77,7 +77,7 @@ Each `SKILL.md` uses YAML frontmatter followed by markdown sections: **Trigger**

### Companion MCP Server

The [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) provides 25 tools (17 read-only + 8 write/guidance). Skills reference these tools in their `## MCP Usage` sections. When the MCP server is configured in Cursor, skills prefer MCP tool calls over shell `curl` commands.
The [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp) provides 26 tools (19 read-only + 7 write/guidance). Skills reference these tools in their `## MCP Usage` sections. When the MCP server is configured in Cursor, skills prefer MCP tool calls over shell `curl` commands.

| MCP Tool | Auth | Maps to |
|----------|------|---------|
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
---

<p align="center">
<strong>30 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>25 MCP tools</strong>
<strong>30 skills</strong> &nbsp;&bull;&nbsp; <strong>9 rules</strong> &nbsp;&bull;&nbsp; <strong>26 MCP tools</strong>
</p>

Query Steam store data, manage Steamworks app configurations, build multiplayer networking, implement cloud saves, design achievements, manage Workshop mods, compare games, and look up player profiles — all from within Cursor's AI chat. Covers the full Steam &amp; Steamworks ecosystem with live data via the companion [Steam MCP Server](https://github.com/TMHSDigital/steam-mcp).
Expand All @@ -44,7 +44,7 @@ Query Steam store data, manage Steamworks app configurations, build multiplayer
| **CLAUDE.md** context | Yes | Yes | Yes | - |
| **30 Skills** (SKILL.md) | Yes | Yes | Yes | - |
| **9 Rules** (.mdc) | Yes | Via CLAUDE.md | Yes | - |
| **25 MCP tools** | Yes | Yes | Yes | Yes |
| **26 MCP tools** | Yes | Yes | Yes | Yes |

> The MCP server lives in a separate repo: [steam-mcp](https://github.com/TMHSDigital/steam-mcp). It works with any client that supports the MCP stdio transport.

Expand Down Expand Up @@ -75,7 +75,7 @@ That's it. No configuration needed for basic usage.
flowchart LR
A["You ask Cursor\na Steam question"] --> B["Cursor loads\na Skill"]
B --> C{"MCP server\navailable?"}
C -- Yes --> D["Steam MCP Server\n(25 tools)"]
C -- Yes --> D["Steam MCP Server\n(26 tools)"]
C -- No --> E["curl to\nSteam Web API"]
D --> F["Steam API"]
E --> F
Expand Down
4 changes: 2 additions & 2 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

Themed release plan toward v1.0.0.

**Current:** v1.3.6 - 30 skills, 9 rules, companion [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) with 25 tools (18 read-only + 7 write/guidance).
**Current:** v1.3.6 - 30 skills, 9 rules, companion [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) with 26 tools (19 read-only + 7 write/guidance).

**Status:** v1.0.0 "Stable" released. 30 skills, 9 rules, 25 MCP tools.
**Status:** v1.0.0 "Stable" released. 30 skills, 9 rules, 26 MCP tools.

| Version | Theme | New Skills | New Rules | MCP Tools | Total Skills | Total Rules |
|---------|-------|-----------|-----------|-----------|-------------|-------------|
Expand Down
1 change: 1 addition & 0 deletions mcp-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
{"name": "steam_getAppReviewSummary", "description": "Review score, totals, and positive percentage", "category": "Read-Only (No Auth)"},
{"name": "steam_getRegionalPricing", "description": "Pricing breakdown across multiple countries", "category": "Read-Only (No Auth)"},
{"name": "steam_getNewsForApp", "description": "Recent news and announcements for a game", "category": "Read-Only (No Auth)"},
{"name": "steam_validateStoreAsset", "description": "Validate a local store or library image against Valve pixel sizes and library-hero heuristics.", "category": "Read-Only (No Auth)"},
{"name": "steam_getPlayerSummary", "description": "Player profile - name, avatar, status", "category": "Read-Only (API Key)"},
{"name": "steam_getOwnedGames", "description": "Game library with playtime", "category": "Read-Only (API Key)"},
{"name": "steam_queryWorkshop", "description": "Search and browse Workshop items", "category": "Read-Only (API Key)"},
Expand Down
17 changes: 11 additions & 6 deletions rules/steamworks-secrets.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@ When reviewing, creating, or editing files, watch for these sensitive patterns a
2. **Steamworks Partner credentials:**
- Publisher API keys (used for sales/financial data)
- `STEAMWORKS_PARTNER_KEY`, `publisher_key`, `partner_api_key`
- `STEAM_PARTNER_COOKIES` (path to a cookie jar; treat the file as a password)
- `STEAM_PARTNER_PROFILE_DIR` (Chromium user-data dir with live Partner session)

3. **Authentication tokens:**
- `ssfn*` files (Steam Guard machine auth tokens)
- Login tokens in `steamcmd` scripts with `+login username password`
- Session tokens or `steamLoginSecure` cookie values
- Session cookies: `steamLoginSecure`, `sessionid`
- Playwright `storageState.json` dumps and Chromium user-data directories

4. **Build signing credentials:**
- DRM wrapping keys
Expand All @@ -36,12 +39,14 @@ When any of these patterns are detected:
- Use environment variables: `$env:STEAM_API_KEY` or `process.env.STEAM_API_KEY`
- Use a `.env` file (which should be in `.gitignore`)
- For CI/CD: use repository secrets or a secret manager
- **Check `.gitignore`**: verify that `.env`, `*.ssfn`, and credential files are listed in `.gitignore`. If not, suggest adding them.
- **Check `.gitignore`**: verify that `.env`, `*.ssfn`, cookie jars, Chromium profiles, and credential files are listed in `.gitignore`. If not, suggest adding them.

## Files to Never Commit

These files should always be in `.gitignore`:
- `.env`, `.env.*`
- `*.ssfn`
- `config.vdf` (contains login tokens)
- Any file matching `*secret*`, `*credential*`, `*password*` in a Steam context
- `.env`, `.env.*`, `.env.local`, `.env.partner`
- `*.ssfn`, `ssfn*`, `config.vdf`, `loginusers.vdf`, `local.vdf`
- `cookies.txt`, `cookies.json`, `*.cookies`, `storageState.json`
- Chromium / Playwright profiles (`*user-data-dir*`, `chromium-profile/`, `partner-profile/`)
- `secrets.json`, `*.pem`, `*.key`, `*.p12`
- `partner-dry-run*.json`, `admin-save-payload*.json`
2 changes: 1 addition & 1 deletion site.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"<strong>Install the companion MCP server:</strong><br><code>npm install -g @tmhs/steam-mcp</code>",
"<strong>Get a Steam API key</strong> (free) at <a href=\"https://steamcommunity.com/dev/apikey\" target=\"_blank\">steamcommunity.com/dev/apikey</a>.",
"<strong>Add to Cursor MCP config</strong> (<code>.cursor/mcp.json</code>):<br><code>{\"mcpServers\":{\"steam\":{\"command\":\"npx\",\"args\":[\"-y\",\"@tmhs/steam-mcp\"],\"env\":{\"STEAM_API_KEY\":\"YOUR_KEY_HERE\"}}}}</code>",
"Restart Cursor. The 30 skills, 9 rules, and 25 MCP tools are now available. The API key is optional for store lookups but required for player-specific tools."
"Restart Cursor. The 30 skills, 9 rules, and 26 MCP tools are now available. The API key is optional for store lookups but required for player-specific tools."
],
"links": {
"npm": "https://www.npmjs.com/package/@tmhs/steam-mcp",
Expand Down
2 changes: 1 addition & 1 deletion skills/steam-api-reference/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Users should store their API key in an environment variable (`STEAM_API_KEY`) an

## MCP Usage

The [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) provides 25 tools that call Steam APIs directly, eliminating the need for manual `curl` commands for common operations.
The [Steam MCP server](https://github.com/TMHSDigital/steam-mcp) provides 26 tools that call Steam APIs directly, eliminating the need for manual `curl` commands for common operations.

### Available MCP Tools (25)

Expand Down
16 changes: 10 additions & 6 deletions skills/steam-release-checklist/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,15 @@ Walk through each section with the user. Mark items as done, flagged, or not app
- [ ] **App name** finalized and matches marketing materials
- [ ] **Short description** (< 300 characters) written and compelling
- [ ] **Detailed description** with formatting, features list, and call to action
- [ ] **Header capsule** (460×215) uploaded
- [ ] **Small capsule** (231×87) uploaded
- [ ] **Main capsule** (616×353) uploaded
- [ ] **Hero capsule** (3840×1240) uploaded
- [ ] **Logo** (1280×720, transparent background) uploaded
- [ ] **Screenshots** - minimum 5, recommended 10+, showing actual gameplay
- [ ] **Header capsule** (920×430) uploaded
- [ ] **Small capsule** (462×174) uploaded
- [ ] **Main capsule** (1232×706) uploaded
- [ ] **Vertical capsule** (748×896) uploaded
- [ ] **Library capsule** (600×900) uploaded
- [ ] **Library hero** (3840×1240 PNG, no text) uploaded
- [ ] **Library logo** (1280 wide and/or 720 tall, PNG alpha) uploaded
- [ ] **Library header** (920×430) uploaded
- [ ] **Screenshots** - minimum 5 at 1920×1080 16:9 or larger, actual gameplay
- [ ] **Trailer** uploaded (MP4, recommended 1080p/4K)
- [ ] **Tags** configured (at least 5-10 relevant tags)
- [ ] **Genre** selected correctly
Expand Down Expand Up @@ -161,6 +164,7 @@ Walk through each section with the user. Mark items as done, flagged, or not app

| Step | MCP Tool | Auth | Purpose |
|------|----------|------|---------|
| Validate local art | `steam_validateStoreAsset({ path, slot })` | None | Catch wrong sizes, half-size heroes, PROTOTYPE ribbons before upload |
| Check store page | `steam_getAppDetails({ appid })` | None | Verify description, screenshots, tags, price, platforms |
| Check achievements | `steam_getAchievementStats({ appid })` | None | Verify achievements are uploaded and visible |
| Check player stats | `steam_getPlayerCount({ appid })` | None | Confirm game is accessible (returns data = app is public) |
Expand Down
25 changes: 14 additions & 11 deletions skills/steam-store-page-optimizer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,23 +33,25 @@ All images are required before the store page can go live.

| Asset | Size | Format | Usage |
|-------|------|--------|-------|
| **Header Capsule** | 460×215 | JPG/PNG | Library, search results, featured lists |
| **Small Capsule** | 231×87 | JPG/PNG | Wishlists, search, smaller displays |
| **Main Capsule** | 616×353 | JPG/PNG | Store page header, browse pages |
| **Hero Capsule** | 3840×1240 | JPG/PNG | Top of store page (with logo overlay) |
| **Page Background** | 1438×810 | JPG/PNG | Store page background (faded edges) |
| **Library Capsule** | 600×900 | JPG/PNG | Steam Library grid view |
| **Library Hero** | 3840×1240 | JPG/PNG | Steam Library detail view |
| **Library Logo** | 1280×720 | PNG (transparent) | Overlaid on Library Hero |
| **Header Capsule** | 920×430 | JPG/PNG | Search, featured lists, library fallback |
| **Small Capsule** | 462×174 | JPG/PNG | Wishlists, search, smaller displays |
| **Main Capsule** | 1232×706 | JPG/PNG | Store page header, browse pages |
| **Vertical Capsule** | 748×896 | JPG/PNG | Store vertical/hero capsule slot |
| **Page Background** | 1438×810 | JPG/PNG | Store page background (subtle, not too bright) |
| **Library Capsule** | 600×900 | JPG/PNG | Steam Library grid view (logo on art) |
| **Library Hero** | 3840×1240 | PNG | Library details artwork only. No text. Reject 1920×620 half-size |
| **Library Logo** | 1280 wide and/or 720 tall | PNG (alpha) | Overlaid on Library Hero |
| **Library Header** | 920×430 | JPG/PNG | Recent Games and other library chrome |
| **Screenshots** | min 1920×1080, 16:9 | JPG/PNG | Store media; larger 16:9 is OK |
| **Community Icon** | 32×32 | JPG | Community Hub, activity feed |

**Image guidelines:**
- Game title/logo must be readable at small sizes
- No review quotes, awards, or "Game of the Year" text
- No "Coming Soon", "Available Now", or date text
- Consistent branding across all capsule sizes
- Hero capsule: place logo in lower-left third; leave upper area for background art
- High contrast — images are shown on both light and dark backgrounds
- Library hero: artwork only, no wordmark. Put the title on Library Logo. Keep critical art in the center 860×380 safe area
- High contrast. Images are shown on both light and dark backgrounds

### 2. Store Description

Expand Down Expand Up @@ -196,13 +198,14 @@ For a full audit, verify:

| Step | MCP Tool | Auth | Purpose |
|------|----------|------|---------|
| Validate local art | `steam_validateStoreAsset({ path, slot })` | None | Exact Valve sizes, format, library-hero ribbon/seam/wordmark heuristics |
| Current page state | `steam_getAppDetails({ appid })` | None | Check existing description, tags, screenshots, price |
| Competitor research | `steam_searchApps({ query })` | None | Find competing games in the genre |
| Competitor details | `steam_getAppDetails({ appid })` | None | Inspect competitor tags, descriptions, pricing |

## Common Pitfalls

1. **Using the wrong capsule image dimensions** Steam has strict size requirements for each capsule type (header, small, main, hero, library). Wrong sizes get rejected or look blurry.
1. **Using the wrong capsule image dimensions** - Steam has strict size requirements for each capsule type (header 920x430, small 462x174, main 1232x706, vertical 748x896, library hero 3840x1240). Wrong sizes get rejected or look blurry. Run `steam_validateStoreAsset` before upload.
2. **Burying the game's hook in the description** — the first ~300 characters of your description show in search results. Lead with your unique selling point, not generic genre descriptions.
3. **Over-tagging your game** — applying too many tags (15+) dilutes each tag's weight. Focus on 5-8 highly relevant tags that accurately describe your game.
4. **Not having a trailer in the first media slot** — the first media item is auto-played on the store page. A screenshot in slot 1 means players miss your trailer unless they scroll.
Expand Down
Loading