用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/publieople/hermes-config-kit --skill openany-test命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | openany-test |
| description | Run OpenAny unit tests + Playwright E2E tests — both handlers and browser rendering |
| trigger | 测试 open-any|openany test|run e2e|px test |
design-taste-frontend skill first. The LILA RULE applies — no purple/blue AI gradients, no decorative glassmorphism, no BorderBeam/particles on a tool-grade app. Tool-grade aesthetic: zinc-neutral palette, single accent, MOTION_INTENSITY 3-4, VISUAL_DENSITY 5-6. If you catch yourself writing indigo-500 or cyan-400 or from-#818cf8 to-#06b6d4, stop and re-read the design skill.design-taste-frontend Section 0.B. For this project: "Reading this as: desktop file viewer tool for developers, VS Code / Linear tool-grade aesthetic, Tailwind + restrained motion." Any component that doesn't fit this read is wrong.research-first-development).references/react-pdf-blobs.md — Web Workers can't access blob URLs from the main thread.cd ~/projects/open-any
# Start dev server (Hermes terminal can't background npm run dev — use subprocess)
python3 -c "
import subprocess, time
p = subprocess.Popen(['npm','run','dev'], stdout=subprocess.DEVNULL)
time.sleep(3)
print('Server ready')
"
# Run E2E — MUST use env var to point to existing Chromium
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=$HOME/.cache/ms-playwright/chromium-1217/chrome-linux64/chrome \
npx playwright test --reporter=list
Use Hermes' built-in browser_navigate, browser_console, browser_snapshot:
// browser_console expression to drop a file programmatically
(async () => {
const resp = await fetch('/test-package.json');
const blob = await resp.blob();
const file = new File([blob], 'test.json', { type: 'application/json' });
const dt = new DataTransfer(); dt.items.add(file);
const dropDiv = document.querySelector('[class*=\"border\"]') as HTMLElement;
if (!dropDiv) throw new Error('No drop zone');
const dragover = new DragEvent('dragover', { bubbles: true, cancelable: true });
Object.defineProperty(dragover, 'dataTransfer', { value: dt });
dropDiv.dispatchEvent(dragover);
const drop = new DragEvent('drop', { bubbles: true, cancelable: });
.(drop, , { : dt });
dropDiv.(drop);
( (r, ));
...() ? : ;
})()
e2e/handlers.spec.ts
public/test-* and test-files/Two jobs: check (lint → test → build) → e2e (Playwright)
npm run dev now runs vite --host 0.0.0.0. Without --host, the Windows browser cannot reach the WSL2 dev server — localhost on Windows does not point to WSL2. Use the Network URL shown by Vite (e.g. http://172.x.x.x:5173/).terminal(background=true) silently kills npm run dev. Use execute_code with subprocess.Popen instead.@playwright/test 1.61.0 expects chromium_headless_shell-1228, but the system has chromium-1217. Use PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH env var to point to the existing binary. In CI (GitHub Actions), the npx playwright install --with-deps chromium step handles this automatically.webServer in playwright.config.ts causes timeouts in Hermes' environment. Use local-only mode with the env var and let CI handle its own server start.test-files/ to public/ when adding new test data.HTTP_PROXY=http://127.0.0.1:7890. If Clash is not running, npm registry connections time out. npm install succeeds locally but silently skips some packages.If test files need updating, copy from test-files to public:
cp test-files/02-data/package.json public/test-package.json
cp test-files/06-pdf/icml2026-paper.pdf public/test-paper.pdf
# ...etc