qoobee-t&f-skill
Automated and manual testing engine for ImmerseAI to audit code and fix reported failures.
Install
mkdir -p .claude/skills/qoobee-t-f-skill && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10517" && unzip -o skill.zip -d .claude/skills/qoobee-t-f-skill && rm skill.zipInstalls to .claude/skills/qoobee-t-f-skill
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Test & Fix skill for ImmerseAI. Supports automated testing (Agent runs code audits and auto-fixes) and manual test report fixing (Agent parses human test reports and fixes failures). Trigger with: 自动化测试, 自动测试, auto test, 人工测试, manual test, 测试报告, test report, 运行测试, run tests.Key capabilities
- →Execute automated code audits for TypeScript projects
- →Parse and fix failures from manual test reports
- →Manage todo lists for multi-step test execution
- →Perform compilation checks using electron-vite
- →Verify fixes by re-running failed test items
How it works
The agent routes between automated audit execution and manual report parsing, using predefined test definitions to identify, implement, and verify code fixes.
Inputs & outputs
When to use qoobee-t&f-skill
- →Running automated code audits
- →Repairing failed test cases
- →Processing manual QA reports
About this skill
QooBee Test & Fix Skill
自动化测试执行 + 人工测试报告修复的双模式 Agent Skill。
数据源: docs/test-classification.md — 包含所有自动化测试项 (AT-01AT-14) 和人工测试表格 (HT-01HT-10) 的完整定义。
Step 1: Mode Routing (模式路由)
根据用户输入自动分流到对应模式。
Case A: 自动化测试模式
If the user's message contains any of: 自动化测试, 自动测试, auto test, 运行测试, run tests, AT-
→ Go to Step 2: Automated Test Engine
Case B: 人工报告修复模式
If the user's message contains any of: 人工测试, manual test, 测试报告, test report, 修复报告
AND the message includes test report content (Markdown tables with status columns, or ❌/FAIL markers)
→ Go to Step 3: Manual Report Fix Engine
Case C: 模糊输入
If the user's message is ambiguous (e.g., just 测试, test, 检查):
Use the ask_questions tool to let user choose:
Question: "你想执行哪种测试模式?"
Options:
- "🤖 自动化测试 — Agent 自动执行代码审计 (AT-01~AT-14) 并修复问题"
- "📋 人工测试修复 — 提交人工测试报告,Agent 修复失败项"
Then route to the selected mode.
Step 2: Automated Test Engine (自动化测试执行引擎)
Agent 自主执行代码检查,产出 PASS/FAIL,FAIL 时自动修复并重验。
2.1 Initialization
- Read
docs/test-classification.mdto load the full test definitions - Use manage_todo_list to create a tracking list for all AT items to execute
- If user specified a specific test (e.g., "运行 AT-06"), only execute that item
- Otherwise, execute AT-01 through AT-14 in order
2.2 Per-Test Execution Loop
For each AT-XX test item, execute the following cycle:
┌─────────────────────────────────────────┐
│ AT-XX: <Test Name> │
│ │
│ 1. Execute 执行步骤 (read files, run │
│ commands, grep search, etc.) │
│ │
│ 2. Compare against 预期结果 │
│ ├── Match → PASS ✅ │
│ └── Mismatch → FAIL ❌ │
│ │
│ 3. If FAIL: │
│ a. Follow 结果处理 fix strategy │
│ b. Implement code changes │
│ c. Re-run this test to verify │
│ d. If still FAIL, retry once more │
│ e. If FAIL after 2 fix attempts, │
│ log as UNRESOLVED and continue │
│ │
│ 4. Update todo list, move to next test │
└─────────────────────────────────────────┘
2.3 Test Item Definitions
Each test item below defines: what to check, what to expect, and how to fix if failing. The Agent MUST follow these steps precisely.
AT-01: TypeScript 编译检查
Execute:
- Run
npx electron-vite buildin terminal - Capture output, count errors
Expect: Zero compilation errors (0 errors)
On FAIL:
- Parse error messages, group by file
- Fix each type error:
anytype → replace with correct specific type- Missing type declaration → create .d.ts file
- Import path error → fix path alias
- Interface mismatch → align definition with usage
- Re-run build to verify
AT-02: 依赖完整性检查
Execute:
- Check if node_modules exists, run
npm installif not - Run
npm ls --depth=0 - Grep all .ts/.tsx files for third-party imports
- Compare against package.json dependencies
Expect:
- No MISSING or INVALID in npm ls
- Every imported package exists in package.json
On FAIL:
- Missing dependency → run
npm install <package> - Ghost dependency → log but don't remove
- Version conflict → log details
AT-03: Zustand Store 结构一致性
Execute:
- Read
src/shared/types/index.ts— extract ImmerseStore interface - Read
src/shared/store/index.ts— extract actual implementation - Compare field-by-field: state fields have initial values, actions have implementations
- Check persist middleware: books/personas/currentSession persisted; indexingProgress/isGenerating NOT persisted
Expect: All fields match, persist config correct
On FAIL:
- Missing field → add to store implementation
- Persist config wrong → fix partialize function
- Type mismatch → align types
AT-04: IPC Channel 一致性
Execute:
- Read
electron/preload/index.ts— extract allipcRenderer.invoke('channel')channels - Read
electron/main/ipc-handlers.ts— extract allipcMain.handle('channel')channels - Read
electron/main/index.ts— confirmregisterIpcHandlers()is called - Compare channel lists
Expect: 1:1 match between preload and main
On FAIL:
- Preload has channel but main doesn't → add handler in ipc-handlers.ts
- Main has channel but preload doesn't → add to preload
- Signature mismatch → align both sides
AT-05: 路由配置完整性
Execute:
- Read
src/app/router.tsx - Check each route's component file exists and is non-empty
- Verify routes:
/→ redirect to/bookshelf,/bookshelf,/reader/:id
Expect: All core routes configured, components exist
On FAIL:
- Missing route → add to router.tsx
- Component missing → create minimal page skeleton
- Missing 404 → add
*catch-all route
AT-06: IPC→MCP 真实桥接 (关键缺陷)
Execute:
- Read
electron/main/ipc-handlers.ts - Check if McpManager is imported and called for mcp:* handlers
- Check if handlers return hardcoded mock data
Expect: mcp:* handlers call McpManager.getInstance() methods, no mock data
On FAIL:
- Import McpManager from './mcp-manager'
- Replace mcp:list-files with
McpManager.getInstance().listFiles(path) - Replace mcp:read-file with
McpManager.getInstance().readFile(path) - Replace mcp:write-file with
McpManager.getInstance().writeFile(path, content) - Replace mcp:move-file with
McpManager.getInstance().moveFile(source, destination) - Add mcp:connect and mcp:disconnect handlers
- Add try-catch with meaningful error messages
- Re-run AT-01 to verify compilation
AT-07: BookCard 路由跳转 (关键缺陷)
Execute:
- Read
src/features/bookshelf/components/BookCard.tsx - Check if onClick triggers
useNavigateto/reader/:id - Check BookGrid.tsx and BookshelfPage.tsx pass click handlers
Expect: BookCard click → navigate(\/reader/${book.id}`)+selectBook(book.id)`
On FAIL:
- In BookGrid, add onBookClick callback that navigates and selects
- Pass onClick to each BookCard
- Ensure BookshelfPage uses store.books not MOCK_BOOKS
- Verify compilation
AT-08: 挂载书架流程 (关键缺陷)
Execute:
- Check TopBar.tsx button onClick handlers
- Check if BookshelfPage uses real data (not MOCK_BOOKS)
- Check if
window.electronAPI.app.selectDirectory()is called anywhere - Check if MCP listFiles result writes to Zustand store
Expect: Complete mount flow: TopBar button → selectDirectory → MCP connect → listFiles → setBooks → BookGrid renders
On FAIL:
- Create
src/features/bookshelf/hooks/useBookshelf.tswith mountBookshelf() - TopBar Import button calls mountBookshelf()
- BookshelfPage reads from store.books
- Handle empty/loading states
- Verify compilation
AT-09: Worker 消息协议完整性
Execute:
- Read
src/workers/rag-types.ts - Read
src/workers/rag.worker.tsonmessage handler - Verify WorkerMessage includes: ingest / search / status
- Verify WorkerResponse includes: ingest:progress / ingest:complete / search:result / status:result / error
- Read
src/shared/hooks/useRagWorker.ts— verify hook wraps all message types
Expect: All message types defined and handled
On FAIL: Add missing message types/handlers
AT-10: Persona System Prompt 模板
Execute:
- Read
src/features/chat/services/persona-generator.ts - Find systemPrompt generation logic
- Compare with constitution template (section 4.3.4):
- Contains {role_name}
- Contains 【身份背景】【性格特征】【说话风格】【当前上下文】
- Contains 5 行为准则 (rule 4: "绝对不要暴露你是AI")
Expect: Template structure matches constitution
On FAIL: Fix template to match constitution exactly
AT-11: 安全配置检查
Execute:
- Read
electron/main/index.tsBrowserWindow config - Verify: nodeIntegration=false, contextIsolation=true
- Grep
src/forapiKeydirect references - Check llm-handler.ts reads Key from safeStorage
- Check preload doesn't expose Node.js APIs
Expect: Security config compliant
On FAIL:
- nodeIntegration not false → fix immediately
- API Key leaked to renderer → remove and use IPC
AT-12: 设置页面存在性 (关键缺陷)
Execute:
- Check if
src/features/settings/directory exists - Check if router.tsx has
/settingsroute - Check if TopBar settings button navigates
Expect: SettingsPage.tsx exists, /settings route registered, TopBar links to it
On FAIL:
- Create
src/features/settings/SettingsPage.tsxwith:- LLM Provider select (deepseek/kimi/moonshot/openai/custom)
- API Key input (via safeStorage IPC)
- Base URL, Model inputs
- Temperature slider (0.0-1.0), MaxTokens slider (256-8192)
- Bookshelf path display + change directory button
- Test connection button
- Register /settings route in router.tsx
- TopBar settings button → navigate('/settings')
- Verify compilation
AT-13: shadcn/ui 组件完整性
Execute:
- List files in
src/shared/components/ui/ - Grep all
from '@/shared/components/ui/'imports insrc/ - Check for imported but missing component files
Expect: All imported UI components exist as files
On FAIL: Create missing component files (manually or via shadcn CLI pattern)
AT-14: electron.d.ts 类型声明
Execute:
- Check if
src/shared/types/electron.d.tsexists - Verify ElectronAPI interface matches preload exposed API
- Check Window.electronAPI global type declaration
Expect: electron.d.ts exists, types match preload
On FAIL:
- Create/fix electron.d.ts with ElectronAPI interface
- Add Window interface extension
- Ensure tsconfig.json includes the file
2.4 Compilation Gate (编译门禁)
After ALL automated tests complete (or after any batch of fixes):
- Run
npx electron-vite build - If errors exist, fix them
- Repeat until clean build
2.5 Output: Automated Test Repor
Content truncated.
When not to use it
- →When a fix requires architectural changes
- →When the user has not provided a test report for manual mode
Prerequisites
Limitations
- →Maximum of 2 fix attempts per test item
- →Cannot modify test definitions during execution
How it compares
It automates the entire cycle of identifying failures, applying code changes, and re-verifying, rather than requiring manual intervention for each step.
Compared to similar skills
qoobee-t&f-skill side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| qoobee-t&f-skill (this skill) | 0 | 6mo | No flags | Intermediate |
| chrome-devtools | 41 | 7mo | Review | Intermediate |
| playwright-browser-automation | 29 | 7mo | Review | Intermediate |
| browser-tools | 6 | 9mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by Piaoxuemoli
View all by Piaoxuemoli →You might also like
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
browser-tools
Whamp
Lightweight Chrome automation toolkit with shared configuration, JSON-first output, and six focused scripts for starting, navigating, inspecting, capturing, evaluating, and cleaning up browser sessions.
playwright-mcp-dev
microsoft
Explains how to add and debug playwright MCP tools and CLI commands.
obsidian-local-dev-loop
jeremylongshore
Configure Obsidian plugin development with hot-reload and fast iteration. Use when setting up development workflow, configuring test vaults, or establishing a rapid development cycle. Trigger with phrases like "obsidian dev loop", "obsidian hot reload", "obsidian development workflow", "develop obsidian plugin".
testing
lobehub
Testing guide using Vitest. Use when writing tests (.test.ts, .test.tsx), fixing failing tests, improving test coverage, or debugging test issues. Triggers on test creation, test debugging, mock setup, or test-related questions.