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.
npx agentmods add skills/pyros-projects/limitless/surfacenpx skills add pyros-projects/limitless --skill surfacegit clone --depth 1 https://github.com/pyros-projects/limitlessWhat 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.
| Model | Per session | Once 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 |
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.
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.
}
}
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.
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.
- 2d ago First seen · 414 lines · 44 tokens per session scan A 4b036de70f76
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.
Other skills, from other repositories
omh-accessibility-audit
This is a Hermes-native accessibility-audit workflow skill.
omh-design-quality-gate
This is a Hermes-native design-quality-gate workflow skill.
design-negotiation
Advocate for design quality, scope, and timeline with partners and leadership using evidence and shared goals. Use in the conversation itself. For the commercial vocabulary behind it, use business-design (ux-strategy).
design-sprint-plan
Plan and facilitate a design sprint from challenge framing through prototype testing. Use when compressing discovery into days. For ongoing team cadence, use team-workflow.
handoff-spec
Write the implementation handoff — measurements, behaviours, assets, states, and edge cases. Use when engineering picks up the work. For verifying the result afterwards use design-qa-checklist; for reusable library components use component-spec (design-systems).
version-control-strategy
Define version control for design files, components, and libraries — branching, naming, and release. Use when file history is chaotic. For design system contribution rules, use design-system-governance (design-systems).