Workspace Surface Audit
affaan-m/ECC
Audit the active repo, MCP servers, plugins, connectors, env surfaces, and harness setup, then recommend the highest-value ECC-native skills, hooks, agents, and operator workflows.
For a code change, pick the right test tier by change surface, run apc test with baseline diff, and report only NEW reds vs baseline back to the task's acceptance criterion.
$ npx skills add Prismer-AI/PrismerCloud --skill test-runner -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Prismer-AI/PrismerCloud test-runner --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sdk/apc/skills/test-runner .claude/skills/test-runner && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "test-runner" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runner into .claude/skills/test-runner/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-runner", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runnerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Prismer-AI/PrismerCloud --skill test-runner -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Prismer-AI/PrismerCloud test-runner --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .agents/skills && cp -r skills-src/sdk/apc/skills/test-runner .agents/skills/test-runner && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "test-runner" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runner into .agents/skills/test-runner/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-runner", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Prismer-AI/PrismerCloud --skill test-runner -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Prismer-AI/PrismerCloud test-runner --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/sdk/apc/skills/test-runner .cursor/skills/test-runner && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "test-runner" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runner into .cursor/skills/test-runner/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-runner", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Prismer-AI/PrismerCloud.git --path sdk/apc/skills/test-runner--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Prismer-AI/PrismerCloud --skill test-runner -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Prismer-AI/PrismerCloud test-runner --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/sdk/apc/skills/test-runner .gemini/skills/test-runner && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "test-runner" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runner into .gemini/skills/test-runner/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-runner", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Prismer-AI/PrismerCloud test-runnerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Prismer-AI/PrismerCloud --skill test-runner -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .github/skills && cp -r skills-src/sdk/apc/skills/test-runner .github/skills/test-runner && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "test-runner" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runner into .github/skills/test-runner/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-runner", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Prismer-AI/PrismerCloud --skill test-runner -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Prismer-AI/PrismerCloud test-runner --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/sdk/apc/skills/test-runner .opencode/skills/test-runner && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "test-runner" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/test-runner into .opencode/skills/test-runner/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-runner", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
test-runnerFor a code change, pick the right test tier by change surface, run apc test with baseline diff, and report only NEW reds vs baseline back to the task's acceptance criterion.
Test Runner is an agent skill from Prismer-AI/PrismerCloud. For a code change, pick the right test tier by change surface, run apc test with baseline diff, and report only NEW reds vs baseline back to the task's acceptance criterion. Separates envblocked from SUT red so a broken machine never fails the code.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `skill.json`). Compatibility notes: ["claude-code"]
The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5d9444. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
["claude-code"]
From compatibility in the SKILL.md frontmatter.
Test Runner loads about 1.6k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 476 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Prismer-AI/PrismerCloud at commit e5d9444, republished under its MIT licence (© Prismer-AI). 476 words, ~1,570 tokens.
.claude/skills/test-runner/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.对一个改动选层跑测试并把**新增红(vs baseline)**报回 task 的验收 criterion(apc/02 §2 R1 · apc/05 A1 S7)。核心纪律:环境红(env_blocked)与被测代码红(SUT red)分域——机器坏了绝不判代码红。
什么时候用:一个 coding task 改完进 review,需要按改动面选层跑回归、把结果作为 acceptance criterion 的 pass/fail 证据。
| 命令 | 作用 | 退出码 |
|---|---|---|
apc env doctor | 环境体检(见 env-doctor skill) | 0 全绿 · 78 env_blocked |
apc test [--tier=T0,T1] [--diff] [--json] [--list] | 全层测试编排(包装 scripts/test203/run.ts) | 0 绿 · 1 SUT 红/回归 · 2 用法错 · 78 env_blocked |
cloud task verify-criterion <task-id> <criterion-id> --outcome <passed|failed|n/a|waived> | 把一个 criterion 的判定报回 task | 0 成功 |
apc test 的退出码原样透传,含 78。把 78 折成 1 会让下游去重试一个根本没跑的圈次——绝不这么干。--json 下 stdout 是结构化 test203.run/v1 产物,含每层 TierResult(命令 / 退出码 / failed names / envStatus)+ baseline diff。从 stdout JSON 取结果,人读报告在 stderr。| 改动面 | tier |
|---|---|
src/lib/**(纯库 / 单元) | T0 |
src/im/**、endpoint / IM 域 | T1 |
src/app/** 组件 | T2 |
| e2e / 跨端(需 cloud:3000) | T3 |
跨 src/lib + endpoint 的改动 → --tier=T0,T1。宁可多选一层,不可漏层。
apc env doctor > /tmp/apc-doctor.json; DOC=$?
echo "doctor exit=$DOC"apc env doctor 是全局体检:它 exit 78 只表示"存在某个环境红",不等于你要跑的 tier 被挡。跑不跑的权威判据是 apc test 自己的退出码——run.ts 按 tier 做逐层 env 门(TIER_ENV_REQUIRES):
| tier | 需要的环境 |
|---|---|
T0 / T1 / T2 / TD / TA | 无(纯逻辑,不被任何 infra 红挡) |
T3 | cloud(:3000) |
T4 | mysql + redis + cloud |
所以:doctor 红在你选的 tier 的 env 需求之外(典型 toolchain.node pin 漂移之于 T0/T1)→ 记一条故障域备注即可,照跑。别把全局 78 当作"停"——那会因为一条无关的 toolchain 红漏掉整轮回归。真正的 env_blocked 由第 2 步 apc test 的 exit 78 表达(run.ts 只在你选的 tier 的 infra 缺失时才给 78)。
按上表选层。跨 src/lib + endpoint 的改动:
apc test --tier=T0,T1 --diff --json > /tmp/apc-test.json; T=$?
echo "apc test exit=$T"从 /tmp/apc-test.json 读结构化产物,真实 schema(字段名以此为准):
{ schema, doctor, envStatus, tiers:[...], regressions:[...], fixed:[...], exitCode }。envStatus:ok | env_blocked(全局)。regressions[]:新增红 vs baseline(跨所有层的并集)——这是 --diff 判据的核心。fixed[]:本圈由红转绿的用例。exitCode:整轮退出码(与命令退出码一致)。tiers[] 元素:{ tier, passed, failed, skipped, total, failedNames:[...], envStatus, regressions:[...] }(注意是 failedNames,且 command/exitCode 不在每层——退出码看顶层)。按 apc test 退出码定 criterion outcome:
| exit | 含义 | criterion outcome |
|---|---|---|
0 | 全绿,无新增红 | passed |
1 | 有 SUT 红(--diff 下 = 新增红/回归) | failed(附 failed names + baseline diff) |
78 | env_blocked(某层环境未就绪) | 不判 failed——回第 1 步,报环境故障域,不计 SUT 红 |
2 | 用法错(tier 名非法等) | 修命令重跑,不报 criterion |
只把"新增红"当回归:baseline 里已知的红不是本次回归(--diff 的退出码只看新增红)。
拿到本 task 的 criterionId(从 acceptance view),按第 3 步结论上报:
# 绿:
cloud task verify-criterion "$PRISMER_TASK_ID" "<criterion-id>" --outcome passed \
--note "apc test T0,T1 green; no new reds vs baseline"
# 红(附证据):
cloud task verify-criterion "$PRISMER_TASK_ID" "<criterion-id>" --outcome failed \
--note "T1 new reds: <failed-name-1>,<failed-name-2>"
verify-criterion也支持--run让服务端下发的criterion.execution就地执行后按退出码上报——但那条路的命令串来自服务端,本 skill 走的是"本地apc test选层跑 + 手动上报"这条主路。
本 skill 的判据不是「报告里出现了 --diff / 78 这些字」,而是判据自己重解析你贴的产物、重算每层算术、并从真 scripts/test203/baseline.json 重推 regressions[](structured-criteria.ts 的 json-claim)。所以报告必须带下面两行 + 一段原样的 JSON:
RUN-EXIT: <apc test 的原始退出码:0 | 1 | 78>
VERDICT: <exit 0 → passed | exit 1 → failed | exit 78 → env-fault>紧跟着把 --json 的 stdout 一字不改贴进 fenced json 块:
```json
{ "schema": "test203.run/v1", "timestamp": "…", "envStatus": "…", "tiers": [ … ], "regressions": [ … ], "exitCode": 0 }
```判据会判红的情况(任一):
RUN-EXIT: 与产物里的 exitCode 不一致——把红叙述成绿正是这条要抓的;VERDICT: 不是从退出码推出来的那个:78 恒 env-fault,永远不是 failed(环境故障域不计 SUT 红,这是本 skill 的承重纪律,判据里是硬映射不是措辞);exit 78 而 envStatus != env_blocked、exit 1 而 regressions 空、exit 0 而 regressions 非空;passed+failed+skipped != total,或 failedNames.length != failed——编的计数会露馅;tiers[] 里(跑了别的层顶包);regressions[] 与「用真 baseline.json 重算的新增红集合」不等:把新增红藏进已知红、或把已知红报成回归,两个方向都红;timestamp 相差超过 skew——「我跑了」但磁盘上没有这一刻的痕迹,判红。诚实边界:freshArtifacts / requireItems 的取值是按本 sample task 钉的(TD 层 + desktop-shell-skip-evidence.txt),换 tier 必须同步换 args;判据也不能证明产物里的数字来自真 vitest——一个肯读 baseline、肯 touch 副产物的伪造者仍能构造自洽产物。它杀的是廉价伪造(编计数、叙述判定、无痕迹)。
{envStatus, exitCode} + 每层 {tier, passed/failed/skipped/total, failedNames, envStatus}(取自 apc test --json stdout)。regressions[](区分"回归"与"从未通过"——baseline 已知红不进这个数组)。cloud task verify-criterion 落库的 outcome 行(可回读 acceptance view 确认)。不许:把 env_blocked(exit 78)计成 SUT 红去判 criterion failed;把 baseline 已知红当新增红上报;断言聊天文本而非 TierResult 结构字段。
<!-- APC-ACK:v1 -->
执行本 skill 的第一步,先落一条调用回执:
cloud skill ack test-runner --task "$PRISMER_TASK_ID"按退出码分流(这条命令的退出码是承重信息,禁止用 || 兜底、; true、
set +e 或重定向把它抹掉):
| exit | 含义 | 你要做的 |
|---|---|---|
0 | 回执已落库(im_task_logs.action='skill_ack') | 继续执行本 skill |
3 | 无 task 上下文——本次运行没有 task,产不出回执 | 继续执行本 skill;但本次运行没有回执,任何报告里都不得声称已 ack |
4 | 你不是该 task 的 assignee,服务端拒绝 | 停下并上报:回执只能由执行该 task 的 agent 产生 |
1 | 其它失败(网络 / 服务端) | 重试一次;仍失败则继续执行,并在结果里显式标注「回执缺失」 |
回执只证明本 skill 被调度,不证明执行正确——效果证明由本 skill 自己的 acceptanceCriteria 副作用断言承担(apc/04 §2 层 1 诚实标注)。
<!-- /APC-ACK:v1 -->
© Prismer-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in sdk/apc/skills/test-runner of Prismer-AI/PrismerCloud.
Open the folder on GitHubat commit e5d9444
Test Runner next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Test Runner this skillPrismer-AI/PrismerCloud | 1.6k | — | ~1.6k | Automated safety check: Notes | MIT | |
| Workspace Surface Auditaffaan-m/ECC | 275k | 3 repos | ~1.3k | Automated safety check: Notes | MIT | |
| Flutter Cherry Pickflutter/flutter | 179k | — | ~1.8k | Automated safety check: Pass | BSD-3-Clause | |
| Agent Test Long Runnerruvnet/ruflo | 74k | 2 repos | ~426 | Automated safety check: Pass | MIT | |
| Depot GitHub RunnersPostHog/posthog | 40k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Add Runner Evalpaperclipai/paperclip | 99k | — | ~1k | Automated safety check: Pass | MIT |
affaan-m/ECC
Audit the active repo, MCP servers, plugins, connectors, env surfaces, and harness setup, then recommend the highest-value ECC-native skills, hooks, agents, and operator workflows.
flutter/flutter
How to land a formal cherry-pick of a merged PR for the flutter/flutter repo stable or beta channel.
ruvnet/ruflo
Agent skill for test-long-runner - invoke with $agent-test-long-runner
PostHog/posthog
Configures Depot-managed GitHub Actions runners as a drop-in replacement for GitHub-hosted runners.
paperclipai/paperclip
Add or extend a Paperclip Runner protocol evaluation definition, roster, assertion, or report fixture with provenance and narrow validation.
srid/emanote
How a downstream app consumes the shared @kolu/surface stack (@kolu/surface · surface-app · surface-nix-host · surface-mcp) — declaring a typed reactive surface, serving it, consuming it (SolidJS…
Prismer-AI/PrismerCloud
Operates a mailbox from the terminal with the external Himalaya CLI over IMAP, SMTP, Notmuch or Sendmail, separate from any built-in email gateway adapter.
Prismer-AI/PrismerCloud
Walks an agent through creating, importing, editing, validating, testing and publishing Prismer Skills with a fixed workflow and bundled scripts.
Prismer-AI/PrismerCloud
Produces 3Blue1Brown-style explainer animations with Manim Community Edition for math, algorithms, equations and architecture diagrams, with planning and rendering references.
Prismer-AI/PrismerCloud
Generates one image from a text prompt with a bundled Node.js helper and delivers it once as the attachment to the current Prismer reply.
Prismer-AI/PrismerCloud
Fetches a YouTube transcript with a helper script and reshapes it into chapters, summaries, X threads, blog posts or timestamped quotes.
Prismer-AI/PrismerCloud
Creates or updates Prismer role templates from a persona, SOP or job description, and turns a role into a working agent that runs its first task through a bundled script.
For a code change, pick the right test tier by change surface, run apc test with baseline diff, and report only NEW reds vs baseline back to the task's acceptance criterion. Test Runner is an agent skill from Prismer-AI/PrismerCloud. For a code change, pick the right test tier by change surface, run apc test with baseline diff, and report only NEW reds vs baseline back to the task's acceptance criterion.
Run `npx skills add Prismer-AI/PrismerCloud --skill test-runner -a claude-code`. Or copy the skill folder (sdk/apc/skills/test-runner in Prismer-AI/PrismerCloud) into .claude/skills/test-runner in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Prismer-AI/PrismerCloud --skill test-runner -a codex`. Or copy the skill folder (sdk/apc/skills/test-runner in Prismer-AI/PrismerCloud) into .agents/skills/test-runner in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Prismer-AI/PrismerCloud --skill test-runner -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-runner, .gemini/skills/test-runner, .github/skills/test-runner and .opencode/skills/test-runner in your project.
SKILL.md names no scripts, command-line tools or credentials: Test Runner is instructions for the agent only. Its frontmatter pre-approves these tools: Bash. Compatibility (from SKILL.md): ["claude-code"].
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Test Runner is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Test Runner: Workspace Surface Audit (affaan-m/ECC, 275k stars), Flutter Cherry Pick (flutter/flutter, 179k stars), Agent Test Long Runner (ruvnet/ruflo, 74k stars) and Depot GitHub Runners (PostHog/posthog, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Prismer-AI (a GitHub organization) maintains it in Prismer-AI/PrismerCloud, which has 1,554 GitHub stars. The repository holds 88 skills in this directory. The repository was last updated on September 30, 2026.
Source: Prismer-AI/PrismerCloud on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.