.claude/skills/add-game-id/SKILL.md
--- name: add-game-id description: Add a Steam-to-HLTB game ID mapping. Usage: /add-game-id <appid>, <name>, or <appid> -> <hltb_id> allowed-tools: Read, Edit, WebFetch, WebSearch --- # Add Game ID Adds a Steam AppID to HLTB game ID mapping in `backend/game_ids.lua`. ## Input Formats The skill accepts three input formats: ### 1. Steam App ID (preferred) ``` /add-game-id 1004640 ``` ### 2. Steam Game Name ``` /add-game-id "FINAL FANTASY TACTICS - The Ivalice Chronicles" ``` ### 3. Full Map
npx skillsauth add jcdoll/hltb-millennium-plugin .claude/skills/add-game-idInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Adds a Steam AppID to HLTB game ID mapping in backend/game_ids.lua.
The skill accepts three input formats:
/add-game-id 1004640
/add-game-id "FINAL FANTASY TACTICS - The Ivalice Chronicles"
/add-game-id 1004640 -> 169173
https://store.steampowered.com/app/{APPID}{game_name} site:store.steampowered.comstore.steampowered.com/app/{APPID}/...)https://store.steampowered.com/app/{APPID}->):https://store.steampowered.com/app/{APPID}https://howlongtobeat.com/game/{HLTB_ID}Note: Claude cannot directly access howlongtobeat.com, so use IsThereAnyDeal as a proxy.
{game_name} IsThereAnyDealisthereanydeal.com/game/{slug}/info/)https://howlongtobeat.com/game/{id}Always present this exact format before asking for user confirmation:
- **AppID:** {appid}
- **Steam name:** "{name from Steam page}"
- **HLTB ID:** {numeric ID}
- **HLTB name:** "{exact name from HLTB}"
- **HLTB page:** {URL}
backend/game_ids.lua[{APPID}] = {HLTB_ID}, -- {HLTB game name}When adding many entries at once (e.g., from discover-game-ids.js output):
})/game-id-review to sort numerically and remove duplicatesThis is much faster than inserting each entry in the correct position.
After adding entries, verify them against Steam's API to catch mismatches:
node -e "
const ids = [APPID1, APPID2, ...]; // Add your AppIDs here
(async () => {
for (const id of ids) {
const r = await fetch('https://store.steampowered.com/api/appdetails?appids=' + id);
const d = await r.json();
const name = d[id]?.data?.name || 'N/A';
console.log(id + ': ' + name);
await new Promise(r => setTimeout(r, 200));
}
})();
"
For app ID 1004640:
https://store.steampowered.com/app/1004640[1004640] = 169173, -- Final Fantasy Tactics: The Ivalice Chroniclestools
Create a new release of the plugin. Bumps version, builds, creates GitHub release, and updates PluginDatabase.
tools
Reviews game_ids.lua for duplicates, then removes them. Ensures numerical sort order.
development
Reviews code for quality, security, and maintainability. Use after implementing features, completing significant work, or when user asks for code review.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.