pyeye-mcp: Skill for Claude Code

.claude/skills/pyeye-scenarios/SKILL.md

pyeye-scenarios is a skill for Claude Code from okeefeco/pyeye-mcp. It costs 130 tokens per session (2,864 once invoked), scanned A, original, MIT.

A catalog of fixed, real-world codebase setups for testing pyeye. A dogfooding scenario means trying a tool on realistic projects, while a namespace package lets related Python packages span multiple repositories.

In plain words
What is it for?
Use it to provision the listed pyeye test scenarios at pinned commits and prepare their configuration, probes, and expected baseline.
Why use it?
It provides repeatable test data for checking pyeye across single repositories, multiple repositories, and shared Python namespaces.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is okeefeco/pyeye-mcp's own configuration. It tells Claude Code how to work on pyeye-mcp 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 pyeye-mcp configures →

Needs its repository: it reads a path above its own folder, which exists only inside the repository. The line is { "namespaces": { "jaraco": ["../jaraco.functools", "../jaraco.context"] } }.

Part of the pyeye plugin — 5 skills, 2 agents, 1 hook, 1 MCP server shipped together

Reuse

Borrowing it

Nothing to install: this file belongs to okeefeco/pyeye-mcp. 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/okeefeco/pyeye-mcp/main/.claude/skills/pyeye-scenarios/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/okeefeco/pyeye-mcp

Made for: Claude Code.

Or install pyeye, the plugin that ships this one along with the rest of its 5 skills, 2 agents, 1 hook, 1 MCP server.

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 pyeye-scenarios

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

Your own site · 80×15
<a href="https://agentmods.dev/skills/okeefeco/pyeye-mcp/pyeye-scenarios"><img src="https://agentmods.dev/badge/skills/okeefeco/pyeye-mcp/pyeye-scenarios.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 130 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,864 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.00130 $0.02864
Opus 5 $0.00065 $0.01432
Sonnet 5 $0.00026 $0.00573
Haiku 4.5 $0.00013 $0.00286

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

Security

Grade A, and why

pyeye-scenarios 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.

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.

.claude/skills/pyeye-scenarios/SKILL.md · 170 lines

How it starts

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

pyeye Scenarios

The catalog of real-world codebases we provision to dogfood and verify pyeye, each pinned to a commit so its recorded baseline stays meaningful. This skill is the data: which repos, at which commits, how they're laid out, the .pyeye.json that wires them, the probe suite, and the expected baseline. The procedure that runs the probes and judges the results lives in [[pyeye-verify]].

Announce at start: "Using the pyeye-scenarios skill to provision <scenario>."

Why scenarios exist

Different codebase shapes stress different pyeye capabilities. One target (a single tree) can't exercise cross-repo resolution, namespace stitching, or the namespace cold-start path. The catalog is the axis of variation:

Scenario Shape Stresses Provision
django single tree depth, scale, canonical-handle collapse, imported_by/superclasses, static-surface ceiling, honest-limit refusal clone (heavy — use --reference)
namespace-jaraco 3 repos, PEP 420 namespace namespace stitching via .pyeye.json, cross-repo resolve/trace, #444 cold-start clone 3 small repos
zope (planned) 2 repos, PEP 420 namespace deep inheritance + dense cross-import graphs
google-cloud (planned) monorepo, many dists scale + 3-segment namespaces

Conventions (apply to every scenario)

  • Target dir is an in-repo, gitignored dir — never a machine-global path. The default is <current-worktree-root>/.scenario-repos/, resolved with git rev-parse --show-toplevel so it follows you into a worktree automatically (each worktree gets its own isolated clones, removed when the worktree is). Overridable with PYEYE_SCENARIO_DIR. The .pyeye.json paths are relative, so the scenario's siblings just need this common parent. (.scenario-repos/ is in the repo's .gitignore; do NOT hardcode a personal path like ~/GitHub/test — it isn't portable and shared external clones collide across worktrees.)
  • Pin commits. A recorded baseline is only meaningful against fixed source. Each scenario lists exact SHAs.
  • Full clone, not --depth 1. A shallow clone cannot check out an arbitrary pinned SHA. The jaraco repos are ~350 KB each (free), so a per-worktree clone is trivial. django is ~366 MB — to avoid re-downloading it per worktree, clone with --reference <shared-django> (borrows objects from an existing local clone; the per-worktree copy is tiny on disk yet can still check out the pinned SHA), or point PYEYE_SCENARIO_DIR at a shared cache for that scenario.
  • Idempotent. Skip a repo that already exists; never re-clone over local work.
  • Never vendor. Third-party code is cloned on demand and never committed — a gitignored in-repo dir is never in git history, so "in the worktree" ≠ "vendored." The convention is about git history, not disk presence.

Read the full file on GitHub · 170 lines

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 · 170 lines · 130 tokens per session scan A f29ee1af1d1d

Subscribe to this mod's changes

pyeye-scenarios is a skill published in the GitHub repository okeefeco/pyeye-mcp (0 stars, last pushed 10d ago), licensed MIT. It adds 130 tokens to every session and 2,864 once invoked, about $0.0006 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

flutter-mcp-toolkit-control

Drive a running Flutter app — tap, scroll, type, fill forms, hot-reload, navigate. Use when you need to interact with the UI.

Arenukvern/mcp_flutter · 38 tokens

harness-engineering-lifecycle

Design, implement, and integrate generalized validation harnesses across a producer-consumer boundary after a local harness contract exists. Use when refactoring custom validation CLIs/MCPs for large polyrepos, extending Steward across sibling repos, or deploying a local tool to a consumer project for dogfooding and…

Arenukvern/mcp_flutter · 88 tokens

flutter-mcp-toolkit-dogfood-iterations

Runs and records fluttertestapp dogfood iterations (toolqualityrubric, rundogfoodeval.sh, dogfoodwebeval.yaml). Use when scoring MCP/intentcall quality, appending iteration N, comparing regressions, or CI static/weekly eval gates.

Arenukvern/mcp_flutter · 66 tokens

coding-agents-hooks-authoring

To author, register, and test Rosetta hooks, add a SemanticKind, or debug a hook that won't fire.

griddynamics/rosetta · 31 tokens

qa-knowledge

To run QA engineering — requirements/gap analysis, scenario & spec design, test implementation, failure triage — over the QA knowledge base.

griddynamics/rosetta · 32 tokens

frontmcp-testing

Use for anything about testing FrontMCP servers: writing or running unit, integration, and E2E tests and reaching the 95%+ coverage bar. Covers Jest setup and coverage gating; unit-testing a ToolContext execute() with mock context, inputs, and Zod schema validation; testing resources and prompts; in-memory testing via…

agentfront/frontmcp · 175 tokens