Development

Development

How software gets built and tested, for any app type (web app, local app, CLI, worker).

03
Workflows
02
Tools
00
References
11
Triggers

Key Points

  • Build turns spoken or typed intent into an ISA of atomic ISCs, each with its eval, interviewing until nothing is unclear, then builds against it; Test checks a live app's code and ISA are in sync and runs every criterion's eval; Migrate reverse-engineers an existing app into the ISA it should have had, then proves it with Test
Not for editing the ISA document itself (ISA), eval framework or judge work (Assay), importing notes or external content (Migrate), deploying (the project's deploy command)

Inside the Skill

The thinking, frameworks, and architecture that distinguish this skill from a generic version of the same task.

Ideal State

  • Every app ends with one ISA that is its spec and its test suite at once: atomic criteria, an eval per criterion, a spanning criterion per Feature.
  • No code is written ahead of the criteria it satisfies.
  • A Test report says, criterion by criterion, what holds today, and lists every surface the ISA doesn't mention.
  • Nothing inferred passes as something the principal said, and nothing the code does passes as something it should do until the principal ratifies it.

Tools

Tool What it does
Tools/Inventory.ts <repo> [--json] Lists every HTTP route, CLI command, package script, SQL table and test file the repo exposes. Read-only.
Tools/Inventory.ts sync <repo> <isa> [--json] Surfaces no criterion names, probes pointing at missing files, and the surface kinds the tool can't see. Exit 1 when it finds gaps.
Tools/IsaCheck.ts bar <isa> [--json] The deterministic half of Build's granularity bar: compound criteria, probes that AND two checks, criteria with no row. Exit 1 on any finding.
Tools/IsaCheck.ts write-probes <isa> [--json] Test Strategy rows that would write to a non-local target. Test does not run bunker test while any exist.

Examples

Example 1: new app from a voice note

User: "Here's what I want the tracker to do…" (dictated)
→ Build: ISA scaffolded, interviewed until every criterion is atomic with an eval
→ granularity bar passes → the Algorithm builds against the ISA

Example 2: an old repo

User: "Catch the old dashboard up"
→ Migrate: inventory → seed or extend the ISA → dispositions → intent questions
→ observed criteria ratified, suspected defects listed → Test report

Example 3: a health check

User: "Is the site still matching its ISA?"
→ Test: sync report, ISAGate and Rate, bunker test through the deep tiers

Gotchas

  • ISAGate's bundled-claim finding is not an atomicity check. It fires only on two conjunctions, two semicolons or "including", and it is advisory on purpose. Build uses IsaCheck.ts bar plus an independent reviewer instead; don't make ISAGate block to match (2026-09-24 review: three compound criteria passed ISAGate clean).
  • Skill("ISA", "seed …") refuses when ISA.md already exists. Migrate on a repo with a thin ISA extends that ISA in place; it never deletes the file to make Seed run.
  • Bunker runs Test Strategy commands from the ISA's folder unless the ISA's frontmatter says probe_cwd: config-root. Relative paths in probes resolve against that folder.
  • The inventory sees Hono/Express-style routes (app.get("/x", …)), subcommands compared against a variable bound from argv (cmd === "x" chains and switch (cmd) blocks), package.json scripts and bins, CREATE TABLE, and *.test.*/*.spec.* files, with comments stripped first. Everything in the tool's uncovered list needs criteria found by hand. A case label in an unrelated switch used to be read as a command (2026-09-24: 12 fake commands on one real CLI, 0 of its 16 real ones).
  • Sync counts a surface as covered when a criterion or probe names it: a route by method and path together, a test by its repo path, a script, command or table only inside a backtick span or a probe (names like build are English words). A named surface can still have a weak criterion; sync catches missing criteria, not weak ones.

Workflows & Routing · 3

Each workflow is one job the skill runs. The trigger phrases route your request to the right one — this is the skill's routing table.

  1. 01
    Build Workflows/Build.md

    new app, new feature, build this, intent spoken or typed

  2. 02
    Test Workflows/Test.md

    test the app, is it in sync, run the evals, a health check on an app with an ISA

  3. 03
    Migrate Workflows/Migrate.md

    an existing app with no ISA or a thin one, catch it up, reverse engineer this repo

Tools · 2

Deterministic executables the workflows call — the code that does the real work, not prompt scaffolding.

  • Inventory.ts
  • IsaCheck.ts

How to Invoke

Say any of these to your DA and LifeOS activates the Development skill automatically:

  • "build an app"
  • "build this software"
  • "start a new app"
  • "develop this feature"
  • "test the app"
  • "is the code in sync with the ISA"
  • "run the app's evals"
  • "migrate this app"
  • "catch this app up"
  • "reverse engineer this repo into an ISA"
  • "bring this old project up to standard"

Or invoke explicitly:

Skill("Development")

Want LifeOS to do this for you?

Install LifeOS on your machine — your DA gets the Development skill plus 57 others, all hooked into one Life OS.