agentsclimarketplace

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.

Install
npx -y skills add nexu-io/open-design --skill build-test

Assembled 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

frameworktypechecktest
nextpnpm typecheckpnpm test
vitepnpm typecheckpnpm test
remixpnpm typecheckpnpm 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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.