Build test
Skill nexu-io/open-design/plugins/_official/atoms/build-test
π¨ The open-source Claude Design alternative. π₯οΈ Local-first desktop app. πΌοΈ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video β real files, HTML/PDF/PPTX/MP4 export. π€ Claude Code / Codex / Cursor / Gemini / OpenCode / Qwen & 20+ CLIs via BYOK.
npx -y skills add nexu-io/open-design --skill build-testAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Run the project's build / typecheck / lint / test commands and emit the build.passing + tests.passing signals devloop convergence reads.
SKILL.md
2.4 KB, as published. Nobody here has run it
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 whenplan.steps's current step is incompletedstate). - Suppressing test failures by changing test files; that violates the rewrite-plan ownership rule.
- Setting
tests: 'skipped'without a non-emptyreasonfield.
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.