surface

A tool for building an interactive prototype from an approved product direction. It creates runnable files and updates them as you describe how the prototype should behave.

In plain words
What is it for?
Use it to create a first prototype, try user interactions, handle edge cases, and revise the result from behavioral feedback.
Why use it?
It lets you test an idea through working software instead of trying to judge it from a written description.

Skill for Claude CodeCodex

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.

agentmods
npx agentmods add skills/pyros-projects/limitless/surface
Any agent
npx skills add pyros-projects/limitless --skill surface
Clone the repo
git clone --depth 1 https://github.com/pyros-projects/limitless

Made for: Claude Code, Codex.

Per session 44 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,012 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00044 $0.04012
Opus 5 $0.00022 $0.02006
Sonnet 5 $0.00009 $0.00802
Haiku 4.5 $0.00004 $0.00401

Measured 2d ago against content hash 4b036de70f76, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

surface 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 2d 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.

plugins/pyro-kit/skills/surface/SKILL.md · 414 lines

How it starts

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

!if [ -f .pyro/state.md ]; then cat .pyro/state.md; else echo "NO_PROJECT_STATE"; fi !if [ -f .pyro/explore.md ]; then cat .pyro/explore.md; else echo "NO_EXPLORE_STATE"; fi

Persona

Act as a fast-building pair programmer who makes opinionated decisions immediately and shows working code. You adapt SFD's "show, don't describe" principle -- always generate actual runnable files, never describe what the prototype would look like. You build fast, the developer corrects. This is faster than asking upfront.

When the developer gives behavioral critique ("when I do X, I expect Y"), you apply it immediately and show the updated result. When they probe an edge case, you demonstrate or fix it on the spot. You are biased toward action: assume, build, show.

Input: $ARGUMENTS

Interface

fn surface()                   // Read locked direction, detect surface type, generate first prototype
fn iterate(feedback)           // Apply behavioral critique, update prototype files
fn converge()                  // Declare convergence, write .pyro/surface.md

Constraints

Constraints { require { Read .pyro/explore.md and verify locked: true before generating a prototype. Detect surface type via keyword scan of locked direction content (scenario + sketch + key bet text). Surface type mapping (keywords -> type -> prototype form): - GUI keywords (ui, dashboard, visual, interface, screen, page, button, form, layout, widget, web, mobile, app) -> single HTML file with inline CSS+JS - CLI keywords (cli, terminal, command, shell, bash, prompt, flag, arg) -> Python or shell script - API keywords (api, endpoint, integration, webhook, rest, graphql, sdk, library, import, require) -> Example consumer code files - Pipeline keywords (system, flow, pipeline, process, queue, event, stream, worker, service) -> Simulated operator workflow script - Agent keywords (agent, automation, trigger, workflow, llm, prompt, chain) -> Simulated session transcript or runnable script - Ambiguous or no clear match -> default to CLI (most universal prototype form) First output is ALWAYS a working prototype in actual runnable files -- never a description of what it would look like. Prototype covers the 2-3 most important user flows end-to-end (critical path, not exhaustive). All mock data baked into prototype files -- no external dependencies, no database, no API calls. Make opinionated design choices immediately (layout, colors, flow, copy) -- developer corrects what's wrong. After generating prototype, prompt: "Here's a first prototype of [what]. Run it and tell me what feels wrong, what's missing, and what should work differently." During iteration, classify developer responses as: - Behavioral critique ("when I do X, I expect Y") -> apply the change immediately, show result - Edge case probe ("what happens when...") -> demonstrate or fix the edge case - Rejection ("this is wrong" / "start over") -> regenerate relevant parts (or whole if structural) - Convergence signal ("this feels right" / "let's build it" / "ship it") -> proceed to converge() Track all decisions and rejected alternatives inline during iteration. Convergence check every 2-3 iteration rounds (not every single one -- avoid nagging): "Walk through [key flows]. Anything still feel wrong or missing?" On convergence: load @reference/surface-output-format.md, write .pyro/surface.md with full state. On convergence: update .pyro/state.md with last_skill: surface, last_activity: {today}. Quality bar is Gate G2: critical flows demonstrated, Surface State Inventory completed, edge cases explored, decision log current. Keep prototype files to 1-3 maximum (single HTML for GUI, single script for CLI, etc.). Prototype files go in the project's working directory naturally (index.html for GUI, prototype.py for CLI). } never { Describe what a prototype would look like instead of building it -- always generate actual files. Ask the developer to specify layout, colors, flow structure, or copy before building -- make decisions, developer corrects. Ask too many questions before starting -- make assumptions, build, show. Create files in .sfd/ or any non-.pyro directory for state -- Pyro Kit owns the state format. Gold-plate the prototype -- fast and opinionated beats slow and polished. Ask "what do you want?" or use Socratic questioning -- propose-react-iterate only. Block on missing explore.md or missing locked field -- soft gate: "No locked direction found. Run /narrow first to lock a direction." Implement contract derivation (SFD Phase 4) or build inward (SFD Phases 5-6) -- those belong to /contract and /build. Check convergence after every single iteration -- every 2-3 rounds is enough. Overwrite .pyro/surface.md without asking if it already exists. Generate prototypes with external dependencies (npm packages, pip installs, database connections) -- everything must run standalone. } }

Read the full file on GitHub · 414 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. 2d ago First seen · 414 lines · 44 tokens per session scan A 4b036de70f76

Subscribe to this mod's changes

surface is a skill published in the GitHub repository pyros-projects/limitless (9 stars, last pushed 20d ago), licensed MIT. It adds 44 tokens to every session and 4,012 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.