AI & Agentslow risk

build-test

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

nexu-io/open-design·plugins/_official/atoms/build-test/SKILL.md
61/ 100推荐值

导入这个 Skill

选择你的 coding agent,复制项目级或个人级安装命令。

固定到平台收录的 commit
导入当前项目.agents/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a codex -y
导入个人环境~/.agents/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a codex -g -y
手动放置目录.agents/skills/build-testOfficial docs ↗
导入当前项目.claude/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a claude-code -y
导入个人环境~/.claude/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a claude-code -g -y
手动放置目录.claude/skills/build-testOfficial docs ↗
导入当前项目.agents/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a github-copilot -y
导入个人环境~/.copilot/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a github-copilot -g -y
手动放置目录.agents/skills/build-testOfficial docs ↗
导入当前项目.agents/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a cursor -y
导入个人环境~/.cursor/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a cursor -g -y
手动放置目录.agents/skills/build-testOfficial docs ↗
导入当前项目.agents/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a gemini-cli -y
导入个人环境~/.gemini/skills/build-test
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/build-test -a gemini-cli -g -y
Native Gemini CLIgemini skills install https://github.com/nexu-io/open-design.git --scope workspace --path plugins/_official/atoms/build-test
手动放置目录.agents/skills/build-testOfficial docs ↗
⚠ 安装命令使用开源 skills CLI。执行前请检查来源、脚本和权限。
# 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

```text
project-cwd/
└── critique/
    ├── build-test.json   # { build: 'passing' | 'failing', tests: 'passing' | 'failing' | 'skipped', durationMs, commandsRun: [...], failures: [...] }
    └── build-test.log    # raw stdout / stderr (truncated to OD_BUILD_TEST_LOG_BUDGET_BYTES, 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:

```jsonc
{
  "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

Reserved id, prompt-only fragment in v1. The shell-out wrapper +
log-truncation worker land in spec §16 Phase 7.