Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计异常

qa-engineer质量保证工程师

Agent Skill

qa-engineer 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,247

周安装

53

GitHub Stars

7,531

下载量

437
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:qa-engineer(质量保证工程师)
来源仓库:https://github.com/anyproto/anytype-ts
仓库路径:skills/qa-engineer
安装命令:
npx skills add https://github.com/anyproto/anytype-ts --skill qa-engineer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/anyproto/anytype-ts --skill qa-engineer

简介

qa-engineer 用于分析代码变更并生成 Playwright E2E 测试用例。

  • 适合编辑器组件修改后的自动化测试覆盖场景。
  • 仅针对最近变更的功能生成测试,不重复覆盖已有测试范围。
  • 测试代码写入 ../anytype-desktop-suite 仓库,需确认目标路径可写权限。
  • 依赖 git diff 获取变更内容,要求工作区处于有效 git 分支状态。

SKILL.md

QA Engineer Skill

Analyze recent code changes in anytype-ts, map them to testable user-facing behavior, and generate Playwright E2E tests in the ../anytype-desktop-suite repository.

When to Use

Activate this skill when:

  • After implementing a new feature or modifying existing functionality
  • After editor/component changes that affect user interactions
  • The user explicitly asks to add tests for recent changes
  • After completing a task referenced in CLAUDE.md's "QA Engineer" section

Principles

  1. Change-driven — Only test what actually changed, don't generate tests for untouched code
  2. User-facing — Focus on observable behavior, not implementation details
  3. Compatible — Follow the existing test patterns in anytype-desktop-suite exactly
  4. Minimal — One test file per feature area, don't over-test
  5. Translation-aware — Always use translation keys, never hardcoded UI text

Process

Phase 1: Analyze Changes

  1. Identify what changed — Run git diff against the base branch (or recent commits) to see modified files
  2. Classify changes — Determine which changes are user-facing vs internal refactoring
  3. Map to features — Connect code changes to testable user flows:

- Component changes → UI interactions to verify - Store changes → State transitions to test - Menu/popup changes → Open/close/interact flows - Editor changes → Block creation, editing, selection - API changes → Data flow and error handling

Skip internal-only changes (type refactors, utility extractions, pure style changes) that have no user-facing impact.

Phase 2: Research Existing Coverage

  1. Check existing tests — Search ../anytype-desktop-suite/tests/ for tests that already cover the changed feature area
  2. Check existing page objects — Search ../anytype-desktop-suite/src/pages/ for page objects that interact with affected components
  3. Check test plans — Search ../anytype-desktop-suite/specs/ for existing plans covering the area
  4. Identify gaps — Determine what's not yet covered

Phase 3: Create Test Plan

Write a test plan in ../anytype-desktop-suite/specs/ following this format:

# Feature Area — Test Plan

**Source changes:** List of changed files in anytype-ts
**Date:** YYYY-MM-DD

## Prerequisites
- Seed: `tests/seed.spec.ts` (creates account, opens vault)
- Any additional setup needed

### 1. Test Group Name
**Seed:** `tests/seed.spec.ts`

#### 1.1 Scenario Name
**Steps:**
1. Step description
2. Step description
**Expected:** What should happen

#### 1.2 Another Scenario
...

Phase 4: Generate Test Files

Create test files in ../anytype-desktop-suite/tests/ following these strict conventions:

File Structure

// spec: specs/plan-name.md
// seed: tests/seed.spec.ts

import { test, expect } from '../../src/fixtures';
import { restartGrpcServer } from '../../src/helpers/test-server';
// Import relevant page objects
import { SidebarPage } from '../../src/pages/main/sidebar.page';

test.describe('Feature Area', () => {
  test.describe.configure({ mode: 'serial' });

  test.beforeAll(async () => {
    await restartGrpcServer();
  });

  test('should do the expected behavior', async ({ page, translations }) => {
    const sidebar = new SidebarPage(page, translations);
    await sidebar.waitForReady();

    // Step: Description of what we're doing
    await page.getByText(translations.someTranslationKey).click();

    // Verify: Expected outcome
    await expect(page.locator('#some-element')).toBeVisible();
  });
});

Rules

  1. Translations — Always use translations.keyName for UI text. Look up keys in ../anytype-ts/dist/lib/json/lang/en-US.json or ../anytype-ts/src/json/text.json
  2. Page Objects — Use existing page objects from ../anytype-desktop-suite/src/pages/. Create new ones only if needed
  3. Waits — Use await expect(locator).toBeVisible() or waitFor({state: 'visible'}). Never use setTimeout, networkidle, or fixed delays
  4. Selectors — Prefer role-based > test ID > text > CSS selectors
  5. Isolation — Each test file restarts gRPC server in beforeAll. Tests in a file can share state with serial mode
  6. Naming — File names are kebab-case matching the feature: feature-name.spec.ts
  7. Directory — Place in a subdirectory matching the feature area: tests/editor/, tests/blocks/, etc.

Phase 5: Create Page Objects (if needed)

If the changed feature needs new page interactions not covered by existing page objects, create a new page object:

import { BasePage } from '../base.page';

export class FeaturePage extends BasePage {
  // Locators
  get someButton() {
    return this.page.locator('#some-button');
  }

  get someText() {
    return this.page.getByText(this.t('translationKey'));
  }

  // Actions
  async waitForReady() {
    await this.someButton.waitFor({ state: 'visible' });
  }

  async doSomething() {
    await this.someButton.click();
    await expect(this.someText).toBeVisible();
  }
}

Page objects go in ../anytype-desktop-suite/src/pages/ in the appropriate subdirectory.

Phase 6: Output Summary

After generating tests, provide a summary:

## QA Engineer Summary

### Changes Analyzed
- file1.tsx — description of change
- file2.tsx — description of change

### Tests Generated
- `tests/feature/scenario-name.spec.ts` — what it tests
- `specs/feature-plan.md` — test plan

### New Page Objects
- `src/pages/main/feature.page.ts` — (if created)

### Coverage Notes
- What's covered by new tests
- What's NOT covered and why (e.g., requires manual testing, backend-only change)

### Run Tests

cd ../anytype-desktop-suite && npm test -- tests/feature/scenario-name.spec.ts

Finding Translation Keys

To map UI text to translation keys:

  1. Search ../anytype-ts/src/json/text.json for the English text
  2. The key is the JSON property name (e.g., "authSelectSignup": "Create new vault" → use translations.authSelectSignup)
  3. For dynamic text with parameters, check how the component calls translate() with substitution params

Finding Selectors

To find stable selectors for elements:

  1. Search the component source in ../anytype-ts/src/ts/component/ for id=, data-, className
  2. Check for block IDs: blocks typically have #block-{id} selectors
  3. Check for menu IDs: menus use #menu{Type} pattern
  4. Check for popup IDs: popups use #popup{Type} pattern
  5. The sidebar uses #sidebarPage{Section} pattern

Test Areas Mapping

anytype-ts AreaTest DirectoryPage Objects
component/block/text.tsxtests/editor/pages/main/editor.page.ts
component/block/dataview.tsxtests/dataview/pages/main/dataview.page.ts
component/menu/tests/menus/(inline or new page object)
component/popup/tests/popups/pages/components/modal.component.ts
component/sidebar/tests/sidebar/pages/main/sidebar.page.ts
component/widget/tests/widgets/pages/main/widget.page.ts
component/page/main/graph.tsxtests/graph/(new page object)
component/page/auth/tests/auth/pages/auth/*.page.ts
store/(test via UI)(use existing page objects)

What NOT to Test

  • Pure TypeScript type changes
  • Internal utility refactors with no UI impact
  • CSS-only changes (unless they affect element visibility/layout)
  • Backend (anytype-heart) changes — those have their own tests
  • Build/config changes

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.22%
按下载量换算150

Claude

29.7%
按下载量换算130

Cursor

18.04%
按下载量换算79

Gemini CLI

8.25%
按下载量换算36

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills