mcpbeat

Build Test

nexu-io/build-test

Run the project's build / typecheck / lint / test commands and emit the build.passing + tests.passing signals devloop convergence reads.

852 tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
83386
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/nexu-io/open-design --skill build-test

What comes with it

911 bytes besides the instruction
open-design.json

The instruction itself

7 sections, as written by the author

Build test

Spec §20.2 / §22.4: the "subjective critique-theater panel" is

not enough on its own — a code-migration / tune-collab run must

prove the build still passes. This atom shells out to the

project's declared test commands and emits structured signals the

devloop's until evaluator reads.

Inputs

  • The active target stack (recorded in code/index.json +

plan.md's targetStack block).

  • The user's optional override (`od plugin run --input

testCommand='pnpm test'`).

Default commands by framework

| framework | typecheck | test |

| --- | --- | --- |

| next | pnpm typecheck | pnpm test |

| vite | pnpm typecheck | pnpm test |

| remix | pnpm typecheck | pnpm test |

| custom | (read from package.json.scripts) | (read from package.json.scripts) |

Output

project-cwd/
└── critique/
    ├── build-test.json   # { build: 'passing' | 'failing', tests: 'passing' | 'failing' | 'skipped', durationMs, commandsRun: [...], failures: [...] }
    └── build-test.log    # raw stdout / stderr (truncated to the runner's logBudgetBytes limit, default 1 MiB)

The atom emits two signals the devloop reads:

  • build.passing: boolean — the typecheck command exited 0.
  • tests.passing: boolean — the test command exited 0.

Plus the legacy critique.score so existing pipelines that read

the score keep working: 5 when both pass, 3 when only build

passes, 1 when both fail.

Convergence

Pipelines wire the atom into a devloop:

{
  "id": "verify",
  "atoms": ["patch-edit", "build-test"],
  "repeat": true,
  "until": "(build.passing && tests.passing) || iterations >= 8"
}

Anti-patterns the prompt fragment forbids

  • Running tests on a partially-edited working tree (the atom

always runs after patch-edit, and only when plan.steps's

current step is in completed state).

  • Suppressing test failures by changing test files; that violates

the rewrite-plan ownership rule.

  • Setting tests: 'skipped' without a non-empty reason field.

Status

Implemented by the daemon runner in

apps/daemon/src/plugins/atoms/build-test.ts. It executes the configured

build and test commands, bounds runtime and captured logs, and persists the

report and log outputs above.

How to use it

Copy the folder

Take nexu-io/build-test from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.