Basic Cohub abilities. Most agents already have these mounted; listed here for reference.
Platform Published by the Neta team.
Official Made by the Neta team.
Verified Reviewed by the Neta team.
Community Shared by a Cohub user. Not reviewed — read SKILL.md before you use it.
mini-game-duo
Community@xinsong854/mini-game-duo
Community skill — not reviewed. It was shared by 安诺涅 and has not been checked by Neta. Read SKILL.md below before letting an agent use it.
Use it in Cohub
Paste this into your agent's chat — it fetches the skill and follows it.
Use the skill: mini-game-duo. Run `npx -y @neta-art/neta-search-cli@latest skills use @xinsong854/mini-game-duo --via site` and follow what it prints. Read its complete output, redirecting it to a temporary file first if necessary, and resolve relative paths from the skill directory it prints.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use @xinsong854/mini-game-duo
Summary
Turn your character into a two-game arcade: a whack-a-mole tap game and a side-scrolling coin runner.
Two games in one published page: a 30-second whack-a-mole and a side-scrolling coin run, picked from a start menu.
Whack-a-mole has combo multipliers, a mallet that follows your cursor or finger, and some targets you must not hit.
Coin Run has jumping, coins, springs, enemies, spikes, checkpoint bells, a key-and-door goal and three hearts.
Both games wear your character's look, colors and world, and share one scoreboard style, sound effects and pause screen.
Works best with a named character whose world has a clear, readable art style. Your best score is saved for each game.
SKILL.md
# Mini Game Duo
Two tight single-mechanic games, one arcade cabinet: **Mole Bonk** (30-second tap frenzy with combo multipliers and forbidden targets) and **Coin Run** (a side-scrolling platformer with the tuned jump feel — coyote time, jump buffering, parallax dusk, checkpoints). Both wear the character's world as their skin, share one HUD/score/sound kit, and live in one published web Work with a game picker.
Read this file fully before generating anything or writing files. Resolve relative paths from this skill's directory.
## Language
Reply in the user's language, whatever language this file is in. This holds for every message of the run, above all the final handover; translate what the scripts print, don't paste it. Text the user sees in the deliverable — Work title, page title, buttons, HUD labels — follows the user's language; text the user typed stays as they wrote it.
## When to use / when not
Use when the user wants small playable games *for a character/world* — one or both of the two mechanics, "a little game with her in it", an arcade pair.
Not for a full multi-level platformer campaign, RPG systems, or story games (create-avg / game-maker for those), not for 3D games, not for sprite-sheet asset production alone. Say what this skill makes and stop.
## Inputs
| Item | Required | Counts as given when |
|---|---|---|
| Character | yes | the user names a character; their world provides the skin |
| Games | no — default both | `mole`, `run`, or both |
| Assets | no — default drawn procedurally + generated through the skill's script | the user provides sprites/backgrounds |
If no character: ask once, then stop. Otherwise build through to delivery.
## How it works (what the agent must keep)
Read `references/games.md` for both rule sets with exact numbers. Non-negotiables:
- **Mole Bonk**: 9 holes on a fixed layout (design-space 1024, holes as % positions); moles pop with a shrink-by-combo timer; ~18% are "do not hit" (−15, combo reset); hits score 10 × multiplier (multiplier = 1 + floor(combo/5), cap 5); a cursor-following mallet with a bonk animation; pointer events only — this is a *tap* game, misses are not clicks.
- **Coin Run**: fixed-timestep platformer (VW 1024×576, 64 px tiles, 9 rows), gravity 4000 px/s², run 340 px/s, jump −1295 px/s, **coyote 0.09 s, jump buffer 0.12 s** (the two constants that make it feel right — do not ship without them); parallax far/mid loop backgrounds; coins rows/arcs, springs, one enemy walker + one flyer, spikes, checkpoint bells, a key-and-door goal, 3 hearts.
- **Shared shell**: game picker, one score/combo HUD style, one WebAudio bleep kit (no audio files), one pause/overlay system, best-score persistence per game (localStorage).
- **Skins**: characters' faces/sprites come from world media or generated via `scripts/gen.mjs`; tiles/backgrounds likewise. The *mechanics numbers never change with the skin* — reskinning is data, not code.
## Steps
1. Read the character: `node /mods/neta/neta atom list` → `atom get <id>`; extract palette, motifs, world setting. → `$RUN/brief.md`
2. Plan assets: `$RUN/assets.json` (per game: sprites, tiles, backgrounds, with source = world-media | procedural | generated). Run `node scripts/plan-check.mjs $RUN/assets.json` — both games' required slots filled, no unresolved sources. Exit non-zero on failure.
3. Generate missing art: `node scripts/gen.mjs --kind image --state $RUN/gen.json --prompt "<slot brief>" --work-title "<assets title>"` (batch; rerun while `busy`). Procedural tiles are drawn in code — see `references/games.md`.
4. Build the Work from `templates/` into `$RUN/site/` (games as modules under one shell).
5. Check: `node scripts/check.mjs $RUN/site` — both engines present with their tuning constants, coyote/buffer found, no alerts, locale; writes `$RUN/qa.json`.
6. Register and publish: see Deliver.
`$RUN` = `_runs/mini-game-duo/<timestamp>/`. Never move the run folder afterwards.
## Deliver
A **web Work**.
- `node /mods/neta/neta work init web works/webs/<slug> --title "<title in the user's language>"` → build → `node /mods/neta/neta work publish web works/webs/<slug> --title "<same>"`.
- Core content to verify before handover: both games start from the picker, one full round of mole is playable, the runner can reach the first checkpoint and the goal; sound toggles; best score persists.
Then, as the last step:
7. **Hand over with a card.** One `interaction-components` link card on its own line, target `{ "type": "work", "workId": "<id>" }`, the id from the publish output (fallback: `cohubWorkId` in `works/webs/<slug>/meta.json`). Then one or two lines naming the two games and the skin.
## Out of scope
- Do not change world settings or delete files that existed before the run.
- Do not modify memory, character cards, installed scripts, existing Works or roleplays.
- Two mechanics only; no third game, no level editor, no online leaderboard (local best only).
- No new character art generated beyond game sprites/backgrounds.
## When to stop
- Missing character: ask once, then stop.
- The world's art style cannot yield readable game sprites (e.g. only photoreal refs): propose the procedural flat skin in one line and proceed, or stop if the user insists on their art.
## Gotchas
- Mole hit boxes are the *hole buttons*, generous (≥ 120 px at 1024) — mobile fingers miss pixel-perfect boxes and the game feels broken.
- The mallet follows `pointermove` with a transform, never lags via mousemove-only; touch needs `touch-action: none` on the stage.
- Runner: fixed timestep accumulator (clamp dt ≤ 0.05) or tunneling through 64 px tiles at high speed.
- Coyote and buffer are *felt, not seen* — a QA that only screenshots will pass a build missing both; the check script greps for the constants, keep them literal and commented.
- Frame-count animation (8-frame run at 10 fps) with per-frame baseline offsets baked into a `FRAME_BOTTOMS` table — otherwise the character sinks 2 px into the ground on some frames.
- Parallax loops must be seamless-width or a visible seam scrolls by every screen.
- Sound: bleeps unlock on first pointer; volume ≤ 0.2; nothing autoplays.