Pester Failure Analysis
PowerShell/PowerShell
Investigates failing Pester tests in PowerShell CI jobs by following a six-step workflow from pull request status to documented fix recommendations.
Submit historical experiment results (agentresult) to Uni-Lab cloud platform (leap-lab) notebook — read data files, assemble JSON payload, PUT to cloud API.
$ npx skills add deepmodeling/Uni-Lab-OS --skill submit-agent-result -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install deepmodeling/Uni-Lab-OS submit-agent-result --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/deepmodeling/Uni-Lab-OS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/submit-agent-result .claude/skills/submit-agent-result && 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 "submit-agent-result" agent skill from https://github.com/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-result into .claude/skills/submit-agent-result/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-agent-result", 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/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-resultType 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 deepmodeling/Uni-Lab-OS --skill submit-agent-result -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install deepmodeling/Uni-Lab-OS submit-agent-result --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepmodeling/Uni-Lab-OS.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/submit-agent-result .agents/skills/submit-agent-result && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "submit-agent-result" agent skill from https://github.com/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-result into .agents/skills/submit-agent-result/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-agent-result", 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 deepmodeling/Uni-Lab-OS --skill submit-agent-result -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install deepmodeling/Uni-Lab-OS submit-agent-result --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepmodeling/Uni-Lab-OS.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/submit-agent-result .cursor/skills/submit-agent-result && 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 "submit-agent-result" agent skill from https://github.com/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-result into .cursor/skills/submit-agent-result/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-agent-result", 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/deepmodeling/Uni-Lab-OS.git --path .cursor/skills/submit-agent-result--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 deepmodeling/Uni-Lab-OS --skill submit-agent-result -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install deepmodeling/Uni-Lab-OS submit-agent-result --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepmodeling/Uni-Lab-OS.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/submit-agent-result .gemini/skills/submit-agent-result && 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 "submit-agent-result" agent skill from https://github.com/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-result into .gemini/skills/submit-agent-result/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-agent-result", 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 deepmodeling/Uni-Lab-OS submit-agent-resultInstalls 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 deepmodeling/Uni-Lab-OS --skill submit-agent-result -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/deepmodeling/Uni-Lab-OS.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/submit-agent-result .github/skills/submit-agent-result && 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 "submit-agent-result" agent skill from https://github.com/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-result into .github/skills/submit-agent-result/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-agent-result", 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 deepmodeling/Uni-Lab-OS --skill submit-agent-result -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install deepmodeling/Uni-Lab-OS submit-agent-result --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepmodeling/Uni-Lab-OS.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/submit-agent-result .opencode/skills/submit-agent-result && 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 "submit-agent-result" agent skill from https://github.com/deepmodeling/Uni-Lab-OS/tree/main/.cursor/skills/submit-agent-result into .opencode/skills/submit-agent-result/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "submit-agent-result", 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.
submit-agent-resultSubmit historical experiment results (agentresult) to Uni-Lab cloud platform (leap-lab) notebook — read data files, assemble JSON payload, PUT to cloud API.
Submit Agent Result is an agent skill from deepmodeling/Uni-Lab-OS. Submit historical experiment results (agentresult) to Uni-Lab cloud platform (leap-lab) notebook — read data files, assemble JSON payload, PUT to cloud API. Use when the user wants to submit experiment results, upload agent results, report experiment data, or mentions agentresult/实验结果/历史记录/notebook结果.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/prepare_agent_result.py`).
It works with PowerShell. The repository describes itself as: A Platform for Laboratory Automation. The licence is GPL-3.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 43923ec. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythoncurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
leap-lab.test.bohrium.comleap-lab.uat.bohrium.comleap-lab.bohrium.comFrom 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.
Submit Agent Result loads about 1.7k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 330 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 found no risky patterns in SKILL.md.
Automated 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); the scripts in this folder are not scanned.
The full file from deepmodeling/Uni-Lab-OS at commit 43923ec, republished under its GPL-3.0 licence (© deepmodeling). 330 words, ~1,739 tokens.
.claude/skills/submit-agent-result/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.通过 Uni-Lab 云端 API 向已创建的 notebook 提交实验结果数据(agent_result)。支持从 JSON / CSV 文件读取数据,整合后提交。
重要:本指南中的
Authorization: Lab <token>是 Uni-Lab 平台专用的认证方式,Lab是 Uni-Lab 的 auth scheme 关键字,不是 HTTP Basic 认证。请勿将其替换为Basic。
使用本指南前,必须先确认以下信息。如果缺少任何一项,立即向用户询问并终止,等补齐后再继续。
询问用户的启动参数,从 --ak --sk 或 config.py 中获取。
生成 AUTH token:
# ⚠️ 注意:scheme 是 "Lab"(Uni-Lab 专用),不是 "Basic"
python -c "import base64,sys; print(base64.b64encode(f'{sys.argv[1]}:{sys.argv[2]}'.encode()).decode())" <ak> <sk>输出即为 token 值,拼接为 Authorization: Lab <token>(Lab 是 Uni-Lab 平台 auth scheme,不可替换为 Basic)。
--addr 值 | BASE |
|---|---|
test | https://leap-lab.test.bohrium.com |
uat | https://leap-lab.uat.bohrium.com |
local | http://127.0.0.1:48197 |
| 不传(默认) | https://leap-lab.bohrium.com |
确认后设置:
BASE="<根据 addr 确定的 URL>"
# ⚠️ Auth scheme 必须是 "Lab"(Uni-Lab 专用),不是 "Basic"
AUTH="Authorization: Lab <上面命令输出的 token>"必须主动询问用户:「请提供要提交结果的 notebook UUID。」
notebook_uuid 来自之前通过「批量提交实验」创建的实验批次,即 POST /api/v1/lab/notebook 返回的 data.uuid。
如果用户不记得,可提示:
绝不能跳过此步骤,没有 notebook_uuid 无法提交。
用户需要提供实验结果数据,支持以下方式:
| 方式 | 说明 |
|---|---|
| JSON 文件 | 直接作为 agent_result 的内容合并 |
| CSV 文件 | 转为 {"文件名": [行数据...]} 格式 |
| 手动指定 | 用户直接告知 key-value 数据,由 agent 构建 JSON |
四项全部就绪后才可开始。
在整个对话过程中,agent 需要记住以下状态:
lab_uuid — 实验室 UUID(通过 API #1 自动获取,不需要问用户)notebook_uuid — 目标 notebook UUID(必须询问用户)所有请求使用 curl -s,PUT 需加 Content-Type: application/json。
Windows 平台必须使用
curl.exe(而非 PowerShell 的curl别名),示例中的curl均指curl.exe。PowerShell JSON 传参:PowerShell 中
-d '{"key":"value"}'会因引号转义失败。请将 JSON 写入临时文件,用-d '@tmp_body.json'(单引号包裹@,否则@会被 PowerShell 解析为 splatting 运算符导致报错)。
curl -s -X GET "$BASE/api/v1/edge/lab/info" -H "$AUTH"返回:
{ "code": 0, "data": { "uuid": "xxx", "name": "实验室名称" } }记住 data.uuid 为 lab_uuid。
curl -s -X PUT "$BASE/api/v1/lab/notebook/agent-result" \
-H "$AUTH" -H "Content-Type: application/json" \
-d '<request_body>'请求体结构:
{
"notebook_uuid": "<notebook_uuid>",
"agent_result": {
"<key1>": "<value1>",
"<key2>": 123,
"<nested_key>": {"a": 1, "b": 2},
"<array_key>": [{"col1": "v1", "col2": "v2"}, ...]
}
}注意:HTTP 方法是 PUT(不是 POST)。
| 字段 | 类型 | 说明 |
|---|---|---|
notebook_uuid | string (UUID) | 目标 notebook 的 UUID,从批量提交实验时获取 |
agent_result | object | 实验结果数据,任意 JSON 对象 |
agent_result 接受任意 JSON 对象,常见格式:
简单键值对:
{
"avg_rtt_ms": 12.5,
"status": "success",
"test_count": 5
}包含嵌套结构:
{
"summary": { "total": 100, "passed": 98, "failed": 2 },
"measurements": [
{ "sample_id": "S001", "value": 3.14, "unit": "mg/mL" },
{ "sample_id": "S002", "value": 2.71, "unit": "mg/mL" }
]
}从 CSV 文件导入(脚本自动转换):
{
"experiment_data": [
{ "温度": 25, "压力": 101.3, "产率": 0.85 },
{ "温度": 30, "压力": 101.3, "产率": 0.91 }
]
}本文档同级目录下的 scripts/prepare_agent_result.py 可自动读取文件并构建请求体。
python scripts/prepare_agent_result.py \
--notebook-uuid <uuid> \
--files data1.json data2.csv \
[--auth <token>] \
[--base <BASE_URL>] \
[--submit] \
[--output <output.json>]| 参数 | 必选 | 说明 |
|---|---|---|
--notebook-uuid | 是 | 目标 notebook UUID |
--files | 是 | 输入文件路径(支持多个,JSON / CSV) |
--auth | 提交时必选 | Lab token(base64(ak:sk)) |
--base | 提交时必选 | API base URL |
--submit | 否 | 加上此标志则直接提交到云端 |
--output | 否 | 输出 JSON 路径(默认 agent_result_body.json) |
| 文件类型 | 合并方式 |
|---|---|
.json(dict) | 字段直接合并到 agent_result 顶层 |
.json(list/other) | 以文件名为 key 放入 agent_result |
.csv | 以文件名(不含扩展名)为 key,值为行对象数组 |
多个文件的字段会合并。JSON dict 中的重复 key 后者覆盖前者。
# 仅生成请求体文件(不提交)
python scripts/prepare_agent_result.py \
--notebook-uuid 73c67dca-c8cc-4936-85a0-329106aa7cca \
--files results.json measurements.csv
# 生成并直接提交
python scripts/prepare_agent_result.py \
--notebook-uuid 73c67dca-c8cc-4936-85a0-329106aa7cca \
--files results.json \
--auth YTFmZDlkNGUt... \
--base https://leap-lab.test.bohrium.com \
--submit如果不使用脚本,也可手动构建请求体:
{
"notebook_uuid": "<uuid>",
"agent_result": { ... }
}curl -s -X PUT "$BASE/api/v1/lab/notebook/agent-result" \
-H "$AUTH" -H "Content-Type: application/json" \
-d '@tmp_body.json'Task Progress:
- [ ] Step 1: 确认 ak/sk → 生成 AUTH token
- [ ] Step 2: 确认 --addr → 设置 BASE URL
- [ ] Step 3: GET /edge/lab/info → 获取 lab_uuid
- [ ] Step 4: **询问用户** notebook_uuid(必须,不可跳过)
- [ ] Step 5: 确认实验结果数据来源(文件路径或手动数据)
- [ ] Step 6: 运行 prepare_agent_result.py 或手动构建请求体
- [ ] Step 7: PUT /lab/notebook/agent-result 提交
- [ ] Step 8: 检查返回结果,确认提交成功从之前「批量提交实验」时 POST /api/v1/lab/notebook 的返回值 data.uuid 获取。也可以在平台 UI 中查找对应的 notebook。
没有严格 schema,接受任意 JSON 对象。但建议包含有意义的字段名和结构化数据,方便后续分析。
可以,后续提交会覆盖之前的 agent_result。
本指南统一使用 Authorization: Lab <base64(ak:sk)> 方式(Lab 是 Uni-Lab 平台的 auth scheme,绝不能用 Basic 替代)。如果用户有独立的 API Key,也可用 Authorization: Api <key> 替代。
© deepmodeling, GPL-3.0. 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 (scripts) in .cursor/skills/submit-agent-result of deepmodeling/Uni-Lab-OS.
Open the folder on GitHubat commit 43923ec
Submit Agent Result 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 |
|---|---|---|---|---|---|---|
| Submit Agent Result this skilldeepmodeling/Uni-Lab-OS | 178 | — | ~1.7k | Automated safety check: Pass | GPL-3.0 | |
| Pester Failure AnalysisPowerShell/PowerShell | 56k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Copilot Session Failure Analysisdotnet/maui | 23k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Windows App SDK Issue Triage Reportmicrosoft/WindowsAppSDK | 4.7k | — | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Evaluate PR Testsdotnet/maui | 23k | — | ~2.9k | Automated safety check: Pass | MIT | |
| Translation ReviewDevolutions/UniGetUI | 26k | — | ~1.3k | Automated safety check: Pass | MIT |
PowerShell/PowerShell
Investigates failing Pester tests in PowerShell CI jobs by following a six-step workflow from pull request status to documented fix recommendations.
dotnet/maui
Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.
microsoft/WindowsAppSDK
Generates GitHub Feature Area Status reports for the Windows App SDK repository, scoring issues so teams can see what needs attention in each area.
dotnet/maui
Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.
Devolutions/UniGetUI
Reviews UniGetUI .json language files for localization quality, detects parity issues, English-equal entries, wrong-script content, and cross-language outliers, then generates a dataset for…
Kuddev/pebrel
Control the live Pebrel terminal workspace from Codex or Claude Code.
deepmodeling/Uni-Lab-OS
Batch submit experiments (notebooks) to the Uni-Lab cloud platform (leap-lab) — list workflows, generate nodeparams from registry schemas, submit multiple rounds, check notebook status.
deepmodeling/Uni-Lab-OS
Create a skill for any Uni-Lab device by extracting action schemas from the device registry.
deepmodeling/Uni-Lab-OS
Query backend workflow list, aggregate all tags, and filter workflows by domain/scenario requirements using tags.
deepmodeling/Uni-Lab-OS
Guide for adding new devices to Uni-Lab-OS (接入新设备). An agent skill from deepmodeling/Uni-Lab-OS.
deepmodeling/Uni-Lab-OS
Guide for adding new resources (materials, bottles, carriers, decks, warehouses) to Uni-Lab-OS (添加新物料/资源).
deepmodeling/Uni-Lab-OS
Guide for adding new workstations to Uni-Lab-OS (接入新工作站). An agent skill from deepmodeling/Uni-Lab-OS.
Works with
Submit historical experiment results (agentresult) to Uni-Lab cloud platform (leap-lab) notebook — read data files, assemble JSON payload, PUT to cloud API. Submit Agent Result is an agent skill from deepmodeling/Uni-Lab-OS. Submit historical experiment results (agentresult) to Uni-Lab cloud platform (leap-lab) notebook — read data files, assemble JSON payload, PUT to cloud API.
Submit Agent Result fits situations like: the user wants to submit experiment results; upload agent results; report experiment data; mentions agentresult/实验结果/历史记录/notebook结果.
Run `npx skills add deepmodeling/Uni-Lab-OS --skill submit-agent-result -a claude-code`. Or copy the skill folder (.cursor/skills/submit-agent-result in deepmodeling/Uni-Lab-OS) into .claude/skills/submit-agent-result in your project. Claude Code loads it when a task matches its description.
Run `npx skills add deepmodeling/Uni-Lab-OS --skill submit-agent-result -a codex`. Or copy the skill folder (.cursor/skills/submit-agent-result in deepmodeling/Uni-Lab-OS) into .agents/skills/submit-agent-result 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 deepmodeling/Uni-Lab-OS --skill submit-agent-result -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/submit-agent-result, .gemini/skills/submit-agent-result, .github/skills/submit-agent-result and .opencode/skills/submit-agent-result in your project.
Going by SKILL.md and its folder, Submit Agent Result needs Python for the scripts in its folder and the command-line tools its instructions call (python and curl). Our summary lists: Python 3.
SKILL.md names 3 domains. In commands or code: leap-lab.test.bohrium.com, leap-lab.uat.bohrium.com and leap-lab.bohrium.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Submit Agent Result is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 7k 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 Submit Agent Result: Pester Failure Analysis (PowerShell/PowerShell, 56k stars), Copilot Session Failure Analysis (dotnet/maui, 23k stars), Windows App SDK Issue Triage Report (microsoft/WindowsAppSDK, 4.7k stars) and Evaluate PR Tests (dotnet/maui, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
deepmodeling (a GitHub organization) maintains it in deepmodeling/Uni-Lab-OS, which has 178 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on September 24, 2026.
Source: deepmodeling/Uni-Lab-OS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.