Narraitor: Skill for Claude Code

.claude/skills/narraitor-hardest-problem-campaign/SKILL.md

narraitor-hardest-problem-campaign is a skill for Claude Code from jerseycheese/Narraitor. It costs 105 tokens per session (2,405 once invoked), scanned A, original, MIT.

A guided release campaign for Narraitor, a game whose story is driven by live AI conversations. It checks the part automated tests cannot cover: real Gemini conversations, multiple turns, consequences, and endings.

In plain words
What is it for?
Use it to run or resume full release-gate testing, including the player-provided AI key path. It is intended for deciding whether the first release is shippable, not for fixing one isolated bug.
Why use it?
It provides evidence for deciding whether version 1.0 is ready to ship. It helps avoid relying only on automated tests that intentionally skip the live AI play loop.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is jerseycheese/Narraitor's own configuration. It tells Claude Code how to work on Narraitor itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything Narraitor configures →

Reuse

Borrowing it

Nothing to install: this file belongs to jerseycheese/Narraitor. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/jerseycheese/Narraitor/main/.claude/skills/narraitor-hardest-problem-campaign/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/jerseycheese/Narraitor

Made for: Claude Code.

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 narraitor-hardest-problem-campaign

README.md
[![agentmods](https://agentmods.dev/badge/skills/jerseycheese/narraitor/narraitor-hardest-problem-campaign/github.svg)](https://agentmods.dev/skills/jerseycheese/narraitor/narraitor-hardest-problem-campaign)
Your own site
<a href="https://agentmods.dev/skills/jerseycheese/narraitor/narraitor-hardest-problem-campaign"><img src="https://agentmods.dev/badge/skills/jerseycheese/narraitor/narraitor-hardest-problem-campaign/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 narraitor-hardest-problem-campaign

Your own site · 80×15
<a href="https://agentmods.dev/skills/jerseycheese/narraitor/narraitor-hardest-problem-campaign"><img src="https://agentmods.dev/badge/skills/jerseycheese/narraitor/narraitor-hardest-problem-campaign.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 105 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,405 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
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.00105 $0.02405
Opus 5.5 $0.00042 $0.00962
Sonnet 5.5 $0.00021 $0.00481
Haiku 4.5 $0.00011 $0.00241

Measured 2mo ago against content hash 6c47936b51c4, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

narraitor-hardest-problem-campaign scanned grade A with 1 finding 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 2mo 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

npm run dev # then: curl -s localhost:3000 | head -1 -> HTML
.claude/skills/narraitor-hardest-problem-campaign/SKILL.md · 112 lines

How it starts

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

Campaign: close the v1.0 gate (and prove the AI play loop)

1. Purpose

Drive the release gate to a decision with evidence. Everything automated is already strong (2399 unit tests, visual regression, boundary gates); the hard residue is the live AI loop, which only a disciplined manual campaign can validate. This skill is that campaign, resumable by any session.

2. When to use

Release-gate work; "is v1.0 shippable"; full play-loop validation; resuming a partially-run campaign (start at the phase whose evidence is missing).

3. When not to use

  • A single bug inside the loop → narraitor-debugging-playbook + change-control fix loop.
  • Post-1.0 ambitions → narraitor-product-frontier.

4. Inputs required

Local Mac (visual suites are macOS-only), ~2 focused hours for Phase 3, and a working Gemini key: for the dev server, set GEMINI_API_KEY in .env.local (server-side fallback via resolveApiKey); alternatively enter a key in the app at /settings/providers (BYO path — sent per-request as the x-provider-api-key header). Phase 3 must exercise the BYO path at least once, since that's what players use.

5. Procedure

Phase 0 — preflight.

git fetch && git status                      # on develop, clean, up to date — or stop
npm ci && npm test && npm run type-check && npm run lint && npm run lint:css
lsof -nP -iTCP:3000 -sTCP:LISTEN             # know who owns the port before starting
npm run dev                                  # then: curl -s localhost:3000 | head -1  -> HTML

Expected: all green (baseline 2026-07-04: 353 suites / 2399 tests). Branch: any red here is NOT campaign work — fix via debugging-playbook first.

Phase 1 — confirm what the gate still contains.

gh issue view 1417 --json title,state,body   # v1.0 QA tracking epic
gh issue view 1320 --json title,state        # release tracking
gh issue list --milestone "" --label MVP --state open
gh issue view 1434 --json state,title        # last open QA finding (character-creation DS/UX)
gh issue view 1477 --json state,title        # touch targets - launch-blocking? ASK OWNER

Expected (as of 2026-07-04): QA findings #1423–#1438 closed except #1434 and post-1.0 #1438. Branch: if new blockers appeared, list them, triage against the roadmap (public_docs/development/mvp-roadmap.md), and get owner sign-off on the blocking set before proceeding. #1477's launch status is owner-confirmation-needed — do not decide it yourself.

Read the full file on GitHub · 112 lines

Files

What ships with it

1 file 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. 2mo ago First seen · 112 lines · 105 tokens per session scan A 6c47936b51c4

Subscribe to this mod's changes

narraitor-hardest-problem-campaign is a skill published in the GitHub repository jerseycheese/Narraitor (32 stars, last pushed 4d ago), licensed MIT. It adds 105 tokens to every session and 2,405 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.