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/tesslateai/opensail/agent-buildernpx skills add TesslateAI/OpenSail --skill agent-buildergit clone --depth 1 https://github.com/TesslateAI/OpenSailWrote 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.
[](https://agentmods.dev/skills/tesslateai/opensail/agent-builder)<a href="https://agentmods.dev/skills/tesslateai/opensail/agent-builder"><img src="https://agentmods.dev/badge/skills/tesslateai/opensail/agent-builder.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00030 | $0.01586 |
| Opus 5 | $0.00015 | $0.00793 |
| Sonnet 5 | $0.00006 | $0.00317 |
| Haiku 4.5 | $0.00003 | $0.00159 |
Grade A, and why
agent-builder 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 4d 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 — 150 lines — stays where its author put it; the contents beside it link to each section on GitHub.
When to use
Invoke this skill when the user asks you to:
- Create a new specialised agent (e.g., "build me a daily standup digester").
- Wire a schedule, webhook, or app event to an agent so it fires autonomously.
- Attach a skill or MCP server to an agent you (or the user) own.
- Request a missing capability before performing a gated action.
Do NOT invoke this skill for:
- Editing the system prompt of an already-published agent — that requires forking; the UI handles it.
- Publishing an agent to the marketplace. Publishing is a UI-only
action that flips
is_published=Trueafter a human review. There is nopublish_agenttool.
Hard rules — read before any tool call
- Depth-1 cap. You can create child agents and attach schedules
to them, but those children cannot themselves spawn grandchildren.
The
attach_scheduletool rejects depth-2 attempts with codedepth_exceeded. The DB also enforcesdepth IN (0, 1)as a second line of defence. - Drafts only. Every agent and automation you create starts in
DRAFT state:
MarketplaceAgent.is_published=False— invisible in the public marketplace.AutomationDefinition.is_active=False— never fires. The user must enable both in the UI before anything goes live.
- Positive-list inheritance. A child automation's contract MAY
only carry scopes from this list:
tools.execute,read_file,write_file,bash_exec,web_fetch,web_search,send_message,app.invoke, plus anymcp.*prefix. The non-inheritable scopes you can NOT propagate includemarketplace.authorandautomations.write—attach_schedulerejects child contracts that contain them. - Budget rollup. A child automation's
max_spend_per_run_usdmust be<=the parent's. Daily spend is debited from BOTH the child's daily counter AND every ancestor in the parent chain — if any counter would go negative the run is paused withpaused_reason='parent_budget_exhausted'. You cannot use a child to escape a parent's daily cap.
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.
- 4d ago First seen · 150 lines · 30 tokens per session scan A 89bfe2ea252b
agent-builder is a skill published in the GitHub repository TesslateAI/OpenSail (637 stars, last pushed 3d ago), licensed Apache-2.0. It adds 30 tokens to every session and 1,586 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-30.
Other skills, from other repositories
pinme-llm
Use this skill when a PinMe project (Worker TypeScript) needs to call OpenRouter-backed LLM APIs, including models, chat/completions, streaming, or OpenRouter web search. Guides AI to generate correct Worker TS code.
pinme-share
Use this skill when the user wants to share, publish, or upload a static result through PinMe, especially by generating a static HTML share page for a PinMe project link, deployed full-stack app, Codex conversation summary, report, file, demo, or any 分享/发布/上传分享页 request that should end with pinme upload.
ecspresso
ECS deployment tool - deploy, manage, and troubleshoot ECS services.
i18n-lookup
Look up Zeabur platform UI term translations from the dashboard i18n files. Use when writing or reviewing docs that reference UI elements (button labels, tab names, menu items) to ensure docs match the actual platform translations.
nvcf-self-managed-installation
Install and operate NVCF self-hosted control-plane and separate compute-plane stacks. Covers Helmfile values and CLI profile installation flows, teardown, values overrides, pull secrets, and troubleshooting. Use for nvcf-self-managed-stack, nvcf-compute-plane-stack, split compute-plane installation, control-plane…
translate
Translate documentation pages to all missing locales. Use when a document exists in one locale but needs to be translated to others. Supports --dry-run, single-locale targeting, and incremental updates.