Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add kyh/vibedgames --skill game-balancegit clone --depth 1 https://github.com/kyh/vibedgamesWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kyh/vibedgames/game-balance)<a href="https://agentmods.dev/skills/kyh/vibedgames/game-balance"><img src="https://agentmods.dev/badge/skills/kyh/vibedgames/game-balance/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kyh/vibedgames/game-balance"><img src="https://agentmods.dev/badge/skills/kyh/vibedgames/game-balance.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00139 | $0.01796 |
| Opus 5 | $0.00069 | $0.00898 |
| Sonnet 5 | $0.00028 | $0.00359 |
| Haiku 4.5 | $0.00014 | $0.00180 |
Grade A, and why
game-balance scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 125 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Systems, loops & balance
Games are loops, not arcs: model → action → rules → feedback, nested at every timescale. Fun is acquiring skills before old ones burn out; balance is mostly figuring out what numbers to use. What the player can't perceive doesn't exist — surface the math.
Core loop construction
- Write the loop sentence first: "player does A, system responds B, player gets C, which lets them do A better/differently." Can't write it = no game yet.
- Nest 3 timescales: moment loop (~1s: dodge/shoot), session loop (2–5 min: a run/wave/level), meta loop (across sessions: upgrades, unlocks, best score). Each loop's output feeds the next one up.
- Close every skill atom: each verb needs action + rule + feedback (<100ms) + perceived reward. A reward with no feedback is invisible.
- Full loop cycle in the first 10–30s. Lore and intros come after the hook, or never. Cut content that neither repeats nor teaches the loop.
- Schedule against burnout: list skill atoms, estimate when each is mastered, introduce a new one (mechanic, enemy, modifier) before the old one dies — every 30–60s in a 5-minute game.
Economy: sources & sinks (Machinations vocabulary)
- Table every resource × (sources, sinks, converters, caps). Sources with no sink → inflation; sinks with no source → soft-lock; a converter strictly better than another in all states → dead option.
- Decisions live at converters (gold→tower, scrap→upgrade), not at raw sources. Want more decisions? Add competing conversions, not more income.
- Cap or decay hoardables when hoarding is degenerate (ammo, energy).
- Faucet-of-last-resort: every spendable resource needs an income path from zero (trickle, sell-back, free reroll) — fix soft-locks structurally, not with warnings.
Cost & power curves
- Transitive balance rule (Schreiber): sum(costs) = sum(benefits) on one resource scale. Pick a numéraire (gold, DPS-seconds) and price everything in it. Conditional/limited benefits get a discount, never a refund — a limitation is never worth more than the benefit it limits.
- Price choice at its best option: an ability offering a choice costs as much as its strongest branch.
- Derive unknowns pairwise: find two items differing in exactly one attribute, solve for it; bootstrap the curve from 3–4 hand-tuned anchors.
- Err weak: a too-weak option is ignored; a too-strong one deletes every other option from the game.
- Upgrade price curve:
cost(n) = base × growth^n. Real-world growth constants: 1.07 (AdVenture Capitalist, gentle) to ~1.15 (Cookie Clicker, steep). Production stays linear inownedwith milestone multipliers (×2 at 25/50/100) — exponential cost vs polynomial income guarantees the slow-down wall that makes progression feel earned. - XP curves: increasing cost-to-next-level — fast early levels (hook), but time-per-level never exceeds one session without a payoff.
- Perceived difficulty = (skill + power demanded) − (skill + power held) (Schreiber). Player skill rises on its own across sessions — a fixed challenge curve drifts easier.
- Upgrades should change decisions, not just numbers: ≤3 pure stat bumps between mechanic-changing purchases. Want build variety? Make tradeoffs intransitive (rock-paper-scissors), which no single cost curve can solve.
- Show cost, current effect, next effect on every upgrade.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 125 lines · 139 tokens per session scan A 4b11cbb0144d
game-balance is a skill published in the GitHub repository kyh/vibedgames (55 stars, last pushed today), licensed MIT. It adds 139 tokens to every session and 1,796 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
supabase
Use when doing ANY task involving Supabase: Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues, supabase-js, @supabase/ssr, RLS, schema migrations, CLI, MCP server. Includes security checklist.
reskin
Author a NEW skin for the reskinnable-demo app. A skin is a self-contained domain plugin under src/skins/ / that implements the frozen Skin contract (src/shell/skin-contract.ts) to swap the app's entire experience — brand, theme, layout, pages, tools, data, and agent — as a live sales demo. Use when the user says "add…
setup-slack-channel
Use for the PROVIDER half of getting a locally running CopilotKit Channels agent to answer in Slack, when no Slack app exists yet — setting up a Channels bot in Slack for the first time, creating the Slack app and its tokens, attaching it to a managed Intelligence Channel, or when a Channel reports setuprequired, sits…
a2ui-renderer
Render A2UI (Agent-to-UI declarative surfaces) in CopilotKit v2. Enable the runtime via CopilotRuntime({ a2ui: {...} }), then enable the provider via . Auto-activates via /info — do NOT manually pass renderActivityMessages. createA2UIMessageRenderer ships from @copilotkit/react-core/v2; low-level primitives…
copilotkit-develop
Use when building AI-powered features with CopilotKit v2 -- adding chat interfaces, registering frontend tools, sharing application context with agents, handling agent interrupts, and working with the CopilotKit runtime.
copilotkit-integrations
Use when wiring an external agent framework (LangGraph, CrewAI, PydanticAI, Mastra, ADK, LlamaIndex, Agno, Strands, Microsoft Agent Framework, or others) into a CopilotKit application via the AG-UI protocol.