obto-build-loop

obto-build-loop is a skill for Claude Code, Codex from obto-inc/platform. It costs 83 tokens per session (3,328 once invoked), scanned A, original, Apache-2.0.

A build process for creating or changing applications on the OBTO platform, including scaffolding, pages, routes, and scripts.

In plain words
What is it for?
Use it to create an OBTO app or add application artifacts such as pages, routes, and scripts while following the platform’s stateless workflow.
Why use it?
It reduces build errors by requiring the correct tenant and application details on every operation and by ending with a smoke test.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to create an OBTO app or add application artifacts such…

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/obto-inc/platform/obto-build-loop
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.

Any agent
npx skills add obto-inc/platform --skill obto-build-loop
Clone the repo
git clone --depth 1 https://github.com/obto-inc/platform

Made for: Claude Code, Codex.

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 obto-build-loop

README.md
[![agentmods](https://agentmods.dev/badge/skills/obto-inc/platform/obto-build-loop.svg)](https://agentmods.dev/skills/obto-inc/platform/obto-build-loop)
Your own site
<a href="https://agentmods.dev/skills/obto-inc/platform/obto-build-loop"><img src="https://agentmods.dev/badge/skills/obto-inc/platform/obto-build-loop.svg" alt="Measured on agentmods" height="20"></a>
Per session 83 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,328 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.
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.00083 $0.03328
Opus 5 $0.00042 $0.01664
Sonnet 5 $0.00017 $0.00666
Haiku 4.5 $0.00008 $0.00333

Measured 2d ago against content hash 3cc76a98689b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

obto-build-loop 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 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.

Makes network callslowCapability

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

- `fetch(id)` — read a WHOLE artifact. Right for small/medium files; avoid on large modules — it can flood your context.
plugins/obto-codex/skills/obto-build-loop/SKILL.md · 80 lines

How it starts

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

OBTO App Build Loop

Before anything else

  1. Call obto_whoami first in every new conversation. Read the user's domain, super-user status, operatorIdentity flag, and availableResources from the response.
  2. The server is stateless (3.3.0+ contract): there is no session-level active app. Pass appName AND domain explicitly on every app-scoped tool call. Never assume a "current app" — if the user hasn't named one, ask, or discover with obto_list_all_apps / obto_find_app_by_name. (obto_set_active_app / obto_reset_domain / obto_create_app are RETIRED — do not call them.)
  3. Operator identities (3.5.2): if whoami returns operatorIdentity: true, the home domain is the platform-operations domain — do NOT build user apps there. Ask the human which tenant domain to target. obto_scaffold_app refuses operator domains without an explicit confirmOperatorDomain: true (super-user only, logged).
  4. Cross-tenant addressing (3.5.26): whoami's domain is only the connection vhost's default. Super-users (crossTenantEnabled: true) may pass ANY active tenant's domain per call — whoami also returns identityDomain (the identity's own tenant) and a tenantDomains registry summary (count + slugs) for discovery. Confirm a named tenant's slug against tenantDomains before writing; an unknown slug is refused with unknown_domain + didYouMean (typo guard). Regular users are pinned to their own domain (cross_tenant_not_allowed).
  5. Read obto://guide/quickstart from the server's resources before the first deployment. The server-served guides are the source of truth — prefer them over assumptions. Scan the availableResources directory whoami returns and load the ones whose whenToRead fits the task — e.g. obto://guide/blueprints before writing code for a collection type, and obto://guide/public-app-baseline before claiming an app is done.

The build loop

Work in this order; do not skip steps:

  1. Contract first. Write a one-paragraph build contract: (1) what the app does, (2) the FIRST vertical slice to ship, (3) what "done" means for that slice. Confirm with the user if scope is unclear — never invent scope. As of 3.5.2 this is the buildContract parameter obto_scaffold_app requires (missing → missing_build_contract refusal with a teaching hint); it is stored on the application record.
  2. Scaffold. Use obto_scaffold_app for new apps (creates record + working skeleton in one call), passing buildContract and kind: 'public' for a browser web app (index page + App.tsx + App.css, ESM imports + relative ./ paths) or 'native' for an OBTO shell component (ui_template + policy_client + script_client, window-global libs + return ComponentName;). The skeleton passes obto_validate_app immediately and writes each artifact to its correct collection. The response includes structured nextSteps — follow them in order.
  3. One vertical slice. Ship a single end-to-end path (one page, one route, one script) and verify it works before expanding. Anything beyond the contract's slice is a NEW slice the human approves — not a silent addition.
  4. Verify after every write. After each obto_upsert_record / route change, read the artifact back (fetch by id <collection>::<app>::<domain>::<name>, or obto_grep_artifact for a slice of a large one) and confirm the content landed. Never claim a write succeeded without reading it back. For a code-bearing script, obto_validate_script also runs by reference — omit script and name the stored artifact — so you can validate exactly what the platform stored, not what you meant to send. (Known false-fire: a pltf_script_server module containing ESM syntax fails by-reference validation at line 1; that one signature is benign.)
  5. Smoke gate before "done" — verify semantically, on the surface a real visitor uses. A preview URL proves only that the preview infra responded, and HTTP 200 proves nothing at all: OBTO's own "Site Missing" / "domain was not found" shells are served with status 200, so a status-only check certifies broken apps as working. "Done" means all of:
    • obto_validate_app returns no errors.
    • Every public API route called via obto_invoke_route returns the expected status, content type, and JSON shape. An HTML 200 on an /api/... route is a failure, never a response; so is a non-200, a 524/timeout, or a degraded-mode UI fallback.
    • The receipt says WHICH surface answered. connectVia:'canonical' means the real canonical host served it; a tenant_ingress_semantic_fallback (with canonicalAttempt + layerVerdict) means the canonical host served a platform shell and the tool fell back — that is a finding to report, not a pass. Fallback success is not canonical success.
    • For a published app, obto_get_build_status shows publish.status: 'published' with its per-surface verify evidence, and you have READ any caveats (a publish can be genuinely published and still carry a known platform degradation).
    • pltf_log (via obto_db_query) shows no runtime errors.
    • Where headless Chromium is provisioned, obto_capture_preview confirms the UI renders with clean console / pageErrors / failedRequests.
    • Best proof of all: exercise one real user action end to end and confirm it persisted (submit/vote/save, then read the record back through the app's own API).

Read the full file on GitHub · 80 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. 2d ago Changed · +9 lines 3cc76a98689b
  2. 6d ago First seen · 71 lines · 83 tokens per session scan A 3b1a76f3889b

Subscribe to this mod's changes

obto-build-loop is a skill published in the GitHub repository obto-inc/platform (1 stars, last pushed 3d ago), licensed Apache-2.0. It adds 83 tokens to every session and 3,328 once invoked, about $0.0004 per session on Opus 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-31.

Related

Other skills, from other repositories

canvas-design

Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.

AgiFlow/aicode-toolkit · 59 tokens

debug-optimize-lcp

Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions…

ChromeDevTools/chrome-devtools-mcp · 99 tokens

specflow-use

To connect Rosetta with Grid Dynamics SpecFlow MCP; only when SpecFlow is mentioned and the MCP is installed.

griddynamics/rosetta · 27 tokens

ue-mcp-epic-routing

Use when deciding between ue-mcp's native category actions and Epic's wrapped ToolsetRegistry tools (the epic actions, incl. the Blueprint graph DSL) for a task in Unreal. Pulls in when authoring Blueprint graph bodies, or any time both a native action and an epic action could do the job and you need to pick.

db-lyon/ue-mcp · 81 tokens

mcp-google-map-project

Project knowledge for developing and maintaining @cablate/mcp-google-map. Architecture, Google Maps API guide, GIS domain knowledge, and design decisions. Read this skill to onboard onto the project or make informed development decisions.

cablate/mcp-google-map · 49 tokens

frontmcp-setup

Use when starting, scaffolding, or organizing a FrontMCP project. Covers creating a new project (CLI scaffold or manual) for Node, Vercel, and other targets; standalone versus Nx-monorepo layout, naming conventions, generators, and dependency rules; composing multiple @App classes, ESM packages, and remote MCP servers…

agentfront/frontmcp · 176 tokens