obto-build-loop

obto-build-loop is a skill for Claude Code, Codex from obto-inc/platform. It costs 91 tokens per session (3,482 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 as pages, routes, and scripts while following the platform’s stateless workflow.

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

Your own site · 80×15
<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="Reviewed on agentmods" width="80" height="20"></a>
Per session 91 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,482 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.00091 $0.03482
Opus 5.5 $0.00036 $0.01393
Sonnet 5.5 $0.00018 $0.00696
Haiku 4.5 $0.00009 $0.00348

Measured today against content hash 612145324eb1, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, 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 today.

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 · 87 lines

How it starts

The opening of the file, as written. The whole thing — 87 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 and follow its startHere.rules. Read domain and availableResources.
  2. The server is stateless: pass appName AND domain on every app-scoped call. Never assume a "current app" — if the user hasn't named one, ask, or find it with obto_list_all_apps / obto_find_app_by_name.
  3. 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.

Organize first. One thread = one item; its train id is the work item id (e.g. WT-28) or the team's train number. Title the thread <train id> <emoji> <short name>: ⚪ queued, 🟡 in progress, 🟠 blocked (name the blocker), 🟢 done. Retitle when the state changes; with no rename tool, ask the person once. Finish or hand off the item, mark it 🟢, then take the next, one at a time. New work found mid-thread is its own item (sdlc_create_item), not a detour.

The build loop

Work in this order; do not skip steps:

  1. Contract first. Write the build contract: (1) what the app does, (2) the FIRST vertical slice, (3) what "done" means for it. Show it as a numbered plan and get the client's yes before any save, scaffold included; never invent scope. obto_scaffold_app requires it as buildContract.
  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 only after a yes — 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.
  5. Review, test, gate — after every save. This is the same loop as obto://guide/quickstart Rule 5.
    • Review what you saved: obto_review_change with targets = every record you changed in this step. Fix every error finding, save, and review those records again. Repeat until there are no errors. Fix warnings, or suppress one with a comment // obto-review-ignore <rule> -- <reason> on or above the line (warn/info only; an error can never be suppressed).
    • Test. If obto_run_tests is in your tool list, run every plan and add a test for new behaviour (obto_save_test). Otherwise say "tests not run" (obto_test_results shows earlier runs). Never call untested verified.
    • Gate. obto_review_change mode gate must return gateOk: true before you say done or ask to go live. obto_validate_app shows the same verdict in doneGate. Going live (obto_build_app) needs the client's yes to that, and it refuses a failing gate (done_gate_failed).
    • Never rename or split a record to dodge a finding, suppress an error, or ask for a gate override. gateOverride is an operator tool with an audited reason, not part of the loop.
  6. 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:
    • The done gate passes: obto_review_change mode gate returns gateOk: true (step 5).
    • 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.
    • obto_capture_preview each page; read visibleText (sign-in or loading = not seen) and check console / pageErrors / failedRequests.
    • Best proof: one real user action end to end, read back through the app's API — with test data the client agreed to (preview data is real), then remove it.
    • Report the evidence: the gate verdict, the review ids or "no errors" per record, test run ids (or "tests not run"), and the smoke results above.

Read the full file on GitHub · 87 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. today Changed 612145324eb1
  2. 17d ago Changed 4d164de6f33e
  3. 22d ago Changed · +7 lines · +8 tokens per session b5a665f9a9fb
  4. 2mo ago Changed · +9 lines 3cc76a98689b
  5. 2mo 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 today), licensed Apache-2.0. It adds 91 tokens to every session and 3,482 once invoked, about $0.0004 per session on Opus 5.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

obto-build-loop compared with skills from other repositories

obto-build-loop next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
obto-build-loopobto-inc/platformSkill1todayApache-2.0A91Claude Code, Codex
canvas-designAgiFlow/aicode-toolkitSkill1602d agoAGPL-3.0A59Claude Code, Codex
playwriterAgiFlow/aicode-toolkitSkill1602d agoAGPL-3.0A99Claude Code
develop-featureAgiFlow/aicode-toolkitSkill1602d agoAGPL-3.0A50Claude Code
author-templatesAgiFlow/aicode-toolkitSkill1602d agoAGPL-3.0A40Claude Code
initialize-workspaceAgiFlow/aicode-toolkitSkill1602d agoAGPL-3.0A44Claude Code
review-changesAgiFlow/aicode-toolkitSkill1602d agoAGPL-3.0A37Claude Code