duck-adventure

duck-adventure is a skill for Claude Code from sprngr/rubber-duck. It costs 38 tokens per session (1,378 once invoked), scanned A, original, MIT.

A small, opt-in role-playing game for the coding agent, set in randomly generated dungeons with dice-based combat, merchants, loot, and achievements.

In plain words
What is it for?
Playing a multi-turn dungeon adventure, managing game progress across sessions, and ending the game explicitly when you are done.
Why use it?
It provides a self-contained way to play during a coding session without mixing the game with work tasks.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the rubber-duck plugin — 17 skills shipped together

Good fit Playing a multi-turn dungeon adventure, managing game progress across sessions, and ending the game explicitly when you are done.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/sprngr/rubber-duck/duck-adventure
Install

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.

Any agent
npx skills add sprngr/rubber-duck --skill duck-adventure
Clone the repo
git clone --depth 1 https://github.com/sprngr/rubber-duck

Made for: Claude Code.

Or install rubber-duck, the plugin that ships this one along with the rest of its 17 skills.

Wrote 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.

agentmods badge for duck-adventure

README.md
[![agentmods](https://agentmods.dev/badge/skills/sprngr/rubber-duck/duck-adventure/github.svg)](https://agentmods.dev/skills/sprngr/rubber-duck/duck-adventure)
Your own site
<a href="https://agentmods.dev/skills/sprngr/rubber-duck/duck-adventure"><img src="https://agentmods.dev/badge/skills/sprngr/rubber-duck/duck-adventure/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.

agentmods 80×15 button for duck-adventure

Your own site · 80×15
<a href="https://agentmods.dev/skills/sprngr/rubber-duck/duck-adventure"><img src="https://agentmods.dev/badge/skills/sprngr/rubber-duck/duck-adventure.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 38 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,378 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00038 $0.01378
Opus 5 $0.00019 $0.00689
Sonnet 5 $0.00008 $0.00276
Haiku 4.5 $0.00004 $0.00138

Measured 11d ago against content hash d89c37455cc2, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

duck-adventure 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 11d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (hooks/adventure.py), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

skills/duck-adventure/SKILL.md · 121 lines

How it starts

The opening of the file, as written. The whole thing — 121 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Standalone easter-egg rogue game 🦆🎲. Multi-turn dungeon crawls, dice combat, then exit. No work involved.

Purpose

Run a self-contained rogue RPG: multi-turn dungeon crawls with maps, dice combat, random merchants, loot, and achievements tracked across sessions. Fun for its own sake. No handoff to productivity flows.

Skill-specific delta:

  • Opt-in only: game runs on explicit signal; if no signal, do not auto-inject into normal flows.
  • Pure play: no productivity coupling, no handoff, no quack routing.
  • Explicit exit: game ends when user says done/exit/quit. No implied return-to-work.
  • Scripted engine: deterministic mechanics via hooks/adventure.py; LLM narrates output.
  • State scope: writes only .duck-adventure/state.json + state.md (+ .gitignore if missing).
  • One-time scope approval: game session approves state-file scope once at start; script writes state.json, LLM writes state.md summary at run end.
  • Redaction: scan state content for secrets before any write; reject flagged content.

Activation

Explicit opt-in signals only: "duck adventure", "adventure mode", "chaos duck", "quest mode", "play a game", "make it fun", /adventure. No signal = no game. Do not auto-activate from inferred intent.

Method

1. Opt-in gate

Verify explicit signal. If absent, decline: no game. Continue normal flow.

2. State load + scope approval

Read .duck-adventure/state.json (schema v3, references/STATE_SCHEMA.md, references/PARSER.md for verb surface) via python3 hooks/adventure.py resume. If missing, request one-time execution approval for the state-file scope (.duck-adventure/state.json + state.md + auto-created .duck-adventure/.gitignore). Preflight: target files, expected = run + permanent ledger, verification = adventure.py state. On approval, proceed. Without approval, game runs session-only or exits. Existing run in state: resume at saved floor/room/diagram. Else: new run.

3. Run setup

New run: python3 hooks/adventure.py init (generates floor 1, player stats). Resume: python3 hooks/adventure.py resume. Both return JSON state. Name the quest from a assets/quests.md frame + category; record as current_quest via python3 hooks/adventure.py save (script field; LLM narrates the quest name).

Read the full file on GitHub · 121 lines

Files

What ships with it

10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

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.

  1. 11d ago First seen · 121 lines · 38 tokens per session scan A d89c37455cc2

Subscribe to this mod's changes

duck-adventure is a skill published in the GitHub repository sprngr/rubber-duck (8 stars, last pushed yesterday), licensed MIT. It adds 38 tokens to every session and 1,378 once invoked, about $0.0002 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-31.

Related

Other skills, from other repositories

web-game-engine-expert

Expert guide for web-based game development. Covers Entity Component System (ECS) architectures, physics engines (Rapier, Havok, Cannon-es), collision detection, and game loop optimization.

roedyrustam/vibes-plug · 44 tokens

roblox-studio

Build and edit in Roblox Studio via the Roblox Studio MCP the RIGHT way - preflight the Studio connection, do the whole build in a few big executeluau scripts (not dozens of tiny calls), make REALISTIC terrain with the Terrain VOXEL api driven by Perlin noise (NEVER stacked Parts or concentric layers - those give ugly…

XAIHT/Tlamatini · 120 tokens

avatar-contribution-pr

Turn an avatar GitHub issue (from the in-app avatar-editor easter egg) into a merged sprite — validate the art, then either add a new module or replace an existing one, and open a PR that closes the issue. Handles both "Avatar contribution: " (a brand-new sprite) and "Avatar edit: " (a hand-redraw of an existing…

khromov/codebay · 0 tokens

threejs

Use when the user asks to build 3D web experiences with Three.js.

tamnguyendinh/Anvien · 19 tokens

godot-devtool

Use when MCP clients and connected AI assistants work on a Godot 4 project through the godot-devtool 3.2.1 MCP server.

wangdiandao/godot-devtool · 36 tokens

axiom-localization

Use when localizing apps, using String Catalogs, generating type-safe symbols (Xcode 26+), handling plurals, RTL layouts, locale-aware formatting, or migrating from .strings files - comprehensive i18n patterns for Xcode 15-26.

ComeOnOliver/skillshub · 57 tokens