Skip to content
cccskills
FreePublished on GitHub

forge-qa

QA 纯验收(只测不修):Mode A 完整验收(test-spec → 10 维度断言引擎 → 报告 + User Gate);Mode B 供 forge-bugfix P6 调用做单 bug 回归并回填 BF 报告。

铁律:每个测试必须有 pass/fail 和深层断言;console.error 零容忍;不猜端口,只用传入的 app_url。触发方式:Mode A 用户说"测试"、"QA"、"forge-qa"或 forge-dev 调度;Mode B 由 forge-bugfix P6 调用(传 review_doc)。

The English summary is being prepared. Showing the original description.

Works withPlaywright
See how to install

Files included (7)

  • SKILL.md12.8 KB
  • README.md2.7 KB
  • references/mode-a-execution.md41.5 KB
  • references/mode-b-regression.md7.3 KB
  • references/qa-template.md6.3 KB
  • references/test-dimensions.md64.9 KB
  • scripts/qa-runner.mjs32.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

文档落地路径:遵循 forge-doc-policy 规范。完整白名单 + frontmatter schema 见 ~/.claude/skills/forge-doc-policy/doc-paths.md。 当前文档加载顺序:完整 QA 先读项目 CLAUDE.md、docs/README.md、docs/INDEX.md、 docs/QA.md 当前验收手册和相关 .features/{feature-id}/feature-spec.md;单 bug 回归读取活跃 BF 报告。 详细规则见 ~/.claude/skills/_shared/current-doc-loading.md。

/forge-qa:QA 验收与测试报告

纯验收模式:测试 + 报告,不修代码。 发现的问题生成结构化 bug 记录;单 bug 回归时回填 Bug 修复验收报告。

调用模式

forge-qa 支持两种调用模式,入口判断在前置脚本阶段完成(见"前置脚本"节)。

模式触发条件输入输出下游
Mode A:完整 QA用户直接触发,或 forge-dev 调度PRD / DESIGN / git diffQA.md 报告 + 结构化 bug 候选 + User Gateforge-ship / forge-bugfix / forge-eng
Mode B:单 bug 修复验收报告forge-bugfix 的 P6 调用;入口带参数 review_doc=docs/bugfix/reviews/BF-XX.md单 bug Bug 修复验收报告报告内 QA 证据区、环境身份校验、逐步截图回填forge-bugfix 的 P6.5 / 批次最终验收 / P5(回修)

模式判断优先级(AI 从 args 或触发消息中判断,从高到低):

  1. 显式参数 — Skill 调用时 args 含 mode=B 和 review_doc=<路径> → 直接 Mode B
  2. 调用来源 — 触发消息里出现 "forge-bugfix"、"review-checklist"、BF-\d+-\d+.md 文件路径 → Mode B(从消息里提取 review_doc 路径,其余必需参数从报告或上下文推断)
  3. 默认 — Mode A

Mode B 入口校验:review_doc 不存在 → 直接终止并报错;bug_id 缺失时取报告文件名。有 worktree 但没传 app_url 时,若验收项涉及浏览器/curl/截图,要求调用方先运行项目的 dev:status / dev-stack status,把 Frontend URL 作为 app_url 传入后再调用。

Mode B 详见"## Mode B:单 bug 修复验收报告模式"节(本文档末尾)。

Mode A 详见"## 三层架构"往下的完整流程。

Mode B 的 args 契约(forge-bugfix 必须传,forge-qa 必须接收):

参数必填含义
mode=B✅强制信号,优先级最高
review_doc=<路径>✅Bug 修复验收报告(存在性校验失败直接 exit)
bug_id=BF-{MMDD}-{N}✅用于命名截图 / 日志
worktree=<路径>✅在该 worktree 内运行测试
commit=<hash>✅用于定位修复范围
app_url=<URL>条件仅当 bug 类型涉及应用运行时;必须来自调用方的 dev:status / dev-stack status 输出

三层架构

┌─────────────────────────────────────────────────┐
│  Layer 1: 测试规格生成(文档 → test-spec.json)     │
│  输入: PRD / DESIGN.md / git diff / 会话上下文       │
├─────────────────────────────────────────────────┤
│  Layer 2: 10 维度 Playwright 断言引擎               │
│  控制台|数据驱动|网络|视觉|交互|响应式|可访问|SSE|URL|懒加载│
├─────────────────────────────────────────────────┤
│  Layer 3: 智能分析(失败归因 + 根因定位)            │
│  console → 源码 → git diff 交叉引用                │
└─────────────────────────────────────────────────┘

铁律

  1. 只测不修 — forge-qa 不修改任何业务代码。发现 bug 记录到报告,由 forge-eng 修复。
  2. 不生成 test-spec 就不执行测试 — 先从文档提取验收项,结构化后再执行。
  3. 每个测试必须有 pass/fail — 不允许 .catch(() => {}) 吞错误,不允许"只截图不断言"。
  4. 断言必须验证功能正确性,不能只验证元素存在 — visible 和 count_gte 是前置条件,不是验收断言。每个测试用例必须至少包含一个验证数据值/文本内容/状态变化的深层断言(contains_text、has_attribute、css_value、matches_regex、自定义 evaluate)。详见下方"断言深度规则"。
  5. 证据先于结论 — 每个测试结果必须有截图、输出、或日志作为证据。
  6. 控制台零容忍 — 任何 pageerror 或 console.error 自动 FAIL。
  7. 不得猜本地端口 — 有 app_url 就只测该 URL;没有 app_url 时,优先读取 dev:status / dev-stack status,不得自行发明 localhost:3000、5173、8080 等地址。

环境适配:在 Codex 中做本地前端页面/交互 QA 时,若 Browser Use 插件可用,优先使用 browser-use:browser(Computer Use 只作明确兜底);Claude Code 环境用 Playwright(qa-runner.mjs)。

定位说明

forge-eng 负责forge-qa 负责
单元测试(TDD 红绿重构)端到端用户流程测试
原子 commit 验证(exit code)跨模块集成测试
任务级验证10 维度断言(视觉+响应式+可访问性+网络+数据驱动)
—验收标准逐项核对
—User Gate(用户验收关卡)

完整流程

第0步 上下文探测
  ├── 0.1 Worktree 检测
  ├── 0.2 文档链定位(PRD/DESIGN/ENGINEERING/FEEDBACK)
  ├── 0.3 变更范围分析(git diff)
  ├── 0.4 选择器审计(铁律:不盲猜选择器)
  └── 0.5 测试级别确认
  │
第1步 建立健康基准
  │
  ├── 已有 QA.md → 第2步 理解现状
  └── 无 QA.md   → 第2步(替代) 从零创建
  │
第2.5步 生成 test-spec(铁律:不生成就不执行)
  │
第3步 测试计划确认(用户审查 test-spec 摘要)
  │
第4步 更新 QA 文档
  │
第5步 10 维度测试执行
  ├── Phase 1: 控制台[console] + 网络[network]
  ├── Phase 2: 交互[functional] + 数据驱动[data-driven] + SSE[streaming] + URL状态[url-state] + 懒加载[async-content]
  ├── Phase 3: 视觉[visual] + 响应式[responsive]
  │     └── 有设计页面包时加跑:零件库守门 check_system.py(新增越界算 fail)、
  │         实现比对 compare_impl.mjs(tokens.json 有 implCheck 时;骨架与实现误差 > 2px 算 fail)
  └── Phase 4: 可访问性[accessibility]
  │
第6步 智能分析 + Bug 报告
  │
第7步 User Gate(用户验收 — 不可跳过)
  │
  ├── accept → forge-ship
  └── reject → FEEDBACK.md → forge-eng → forge-qa (回归) → User Gate

全程中文。关键测试策略需用户确认后再执行。

报告产出后的出口

QA 验收完成。下一步:

[全部通过 + 用户验收通过]
→ /forge-ship 或 /forge-review

[有 FAIL 或用户 reject]
→ 生成修复清单 + FEEDBACK.md → /forge-eng 修复 → /forge-qa 回归

前置脚本

_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
echo "当前分支: $_BRANCH"

# === Worktree 检测 ===
_IN_WORKTREE="no"
_WORKTREE_ROOT=""
git worktree list 2>/dev/null | while read line; do
  echo "  worktree: $line"
done
[ "$(git rev-parse --git-common-dir 2>/dev/null)" != "$(git rev-parse --git-dir 2>/dev/null)" ] && _IN_WORKTREE="yes" && _WORKTREE_ROOT="$_ROOT"
echo "在 Worktree 中: $_IN_WORKTREE"

# === 测试引擎: Playwright ===
PW=""
command -v npx >/dev/null 2>&1 && npx playwright --version >/dev/null 2>&1 && PW="npx"
[ -z "$PW" ] && python3 -c "from playwright.sync_api import sync_playwright" 2>/dev/null && PW="python"
[ -n "$PW" ] && echo "Playwright: 可用 ($PW)" || echo "Playwright: 不可用"

# === qa-runner.mjs 检测 ===
QA_RUNNER=""
[ -f "$HOME/.claude/skills/forge-qa/scripts/qa-runner.mjs" ] && QA_RUNNER="$HOME/.claude/skills/forge-qa/scripts/qa-runner.mjs"
[ -n "$QA_RUNNER" ] && echo "qa-runner: $QA_RUNNER" || echo "qa-runner: 不可用"

# === 框架检测 ===
[ -f "$_ROOT/package.json" ] && grep -q '"react"' "$_ROOT/package.json" 2>/dev/null && echo "框架: React"
[ -f "$_ROOT/package.json" ] && grep -q '"vue"' "$_ROOT/package.json" 2>/dev/null && echo "框架: Vue"
[ -f "$_ROOT/package.json" ] && grep -q '"next"' "$_ROOT/package.json" 2>/dev/null && echo "框架: Next.js"
[ -f "$_ROOT/requirements.txt" ] || [ -f "$_ROOT/pyproject.toml" ] && echo "运行时: Python"
[ -f "$_ROOT/package.json" ] && echo "运行时: Node.js"

# === 本地服务探测 ===
echo "本地服务:"
if [ -n "$APP_URL" ]; then
  echo "  APP_URL=$APP_URL(由调用方传入)"
elif [ -f "$_ROOT/package.json" ] && (cd "$_ROOT" && npm run 2>/dev/null | grep -q "dev:status"); then
  (cd "$_ROOT" && npm run dev:status)
  echo "  未传 APP_URL:如需浏览器验收,请使用 dev:status 输出中的 Frontend URL 重新调用 forge-qa。"
elif [ -x "$_ROOT/scripts/dev-stack.sh" ]; then
  (cd "$_ROOT" && bash scripts/dev-stack.sh status)
  echo "  未传 APP_URL:如需浏览器验收,请使用 dev-stack status 输出中的 Frontend URL 重新调用 forge-qa。"
else
  for port in 3000 3456 4000 5173 8080 8081; do
    curl -s -o /dev/null -w "%{http_code}" "http://localhost:$port" 2>/dev/null | grep -qE "200|301|302|304" && echo "  http://localhost:$port ✓(旧项目兜底探测)"
  done
fi

# === 报告目录 ===
REPORT_DIR="$_ROOT/.gstack/qa-reports"
mkdir -p "$REPORT_DIR/screenshots" 2>/dev/null
echo "报告目录: $REPORT_DIR"

提问格式与批量策略见 ~/.claude/skills/_shared/interaction-protocol.md。


执行手册(按需加载,执行时必读)

本文件只保留契约、铁律和流程总览。进入执行阶段前,必须先读对应手册:

场景必读文件内容
Mode A 完整 QA(第0步~第8步)references/mode-a-execution.md上下文探测、健康基准、test-spec 生成、验收计划、10 维度执行、智能分析、User Gate、健康评分全细则
Mode B 单 bug 回归(bugfix P6 调用)references/mode-b-regression.md报告解析、环境身份校验、逐项测试与回填、判定与出口
写测试脚本时references/test-dimensions.md10 维度逐个的代码模板与断言写法
产出报告时references/qa-template.mdQA.md 结构、验收计划、健康评分表格式

规矩:不允许凭记忆执行细则——骨架没写的操作细节,一律以对应手册为准;手册与骨架冲突时,以骨架的铁律和契约为准。


Feature 状态管理

状态标记与通用操作规则见 ~/.claude/skills/_shared/feature-status-protocol.md。

qa 特有动作:启动前确认 eng 行为 [✅ 已完成];执行中更新 QA Items 表(每个测试项独立状态);完成时 note 填 {passed}/{total} PASS, {score}/100(未通过填 {failed} FAIL, 需修复后重测)。


重要规则

  1. 像真实用户一样测试 — 点所有可点的,填所有表单,测试所有状态。
  2. 截图留证 — 每个测试步骤至少一张截图。用 snapElement() 紧凑裁剪,不用 fullPage。截图后用 Read 工具展示给用户。
  3. 不要只测 Happy Path — 边界、空状态、超长输入、网络错误都要测。
  4. 控制台是第一现场 — 每次交互后检查控制台。视觉上没问题不代表没有 JS 错误。
  5. 数据驱动是核心 — 不只测一条数据。用 pickStratified() 采样多条。
  6. 前后端联动是重点 — 验证 API 调用是否正确、响应是否合理。
  7. 深度优于广度 — 5-10 个证据充分的 Bug > 20 个模糊描述。
  8. 自我调节 — 拿不准就停下来问。
  9. 绝不拒绝使用浏览器 — 后端变更也会影响应用行为,始终打开浏览器测试。
  10. User Gate 不可跳过 — 自动化测不到设计意图偏差,必须等用户验收。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

forge

Free

Forge 工作流总入口。只读检测项目状态,推荐下一步该用哪个 skill,自己不干活。触发方式:用户说"forge"、"下一步"、"接下来做什么"。

The English summary is being prepared. Showing the original description.

yike-gunshi/forge-skills13Updated Oct 14, 2026

通用头脑风暴:4 种模式(产品/内容/构建/探索)× 6 阶段,强制前提挑战和 2-3 方案,产出可跨会话续聊的思考文档;支持 Mermaid/图辅助判断。 触发方式:用户说"头脑风暴"、"brainstorm"、"讨论一下"、"我有个想法"、"帮我想想"、"画图梳理想法"。

The English summary is being prepared. Showing the original description.

yike-gunshi/forge-skills13Updated Oct 14, 2026

系统性 Bug 修复流水线(P0-P8):一次修一个,强制根因分析、独立 worktree、TDD、双层验收报告、forge-qa 回归;多会话经 .forge/active.md 防撞车。 铁律:不做根因分析不写代码;新发现禁止顺手修;没有用户最终结论不合并。 触发方式:用户说"bugfix"、"反馈个问题"、"修这个 bug"、"这里有问题"、"为什么不对"、"排查一下"、"investigate"、"forge-bugfix",或报告错误、异常行为、功能失效时。

The English summary is being prepared. Showing the original description.

yike-gunshi/forge-skills13Updated Oct 14, 2026

端到端交付纯编排层:调用 forge-* 子 skill 从需求一路编排到发布和文档,.deliver/state.json 检查点,支持 --auto / --resume。 触发方式:用户说"forge-deliver"、"端到端交付"、"全自动交付"。

The English summary is being prepared. Showing the original description.

yike-gunshi/forge-skills13Updated Oct 14, 2026

全栈设计规划:分级门控管理 DESIGN.md 与 DESIGN-CHANGELOG,内置可检索设计规则库(UX 规则/配色/字体),三层 Token、forge-design-lab 工作台门禁(布局/比例/密度在真 token 骨架上定,Image 2 退为气质稿)、反 AI 模板检测。 触发方式:用户说"设计"、"forge-design"、"先看效果图",或 forge-dev 调度、需要创建/更新设计文档时。

The English summary is being prepared. Showing the original description.

yike-gunshi/forge-skills13Updated Oct 14, 2026

设计实现:把 DESIGN.md 转成代码,只改样式不改逻辑;CSS 优先、Token 驱动、反 AI 模板、原子提交,以真实截图和 CSS 断言验证。 触发方式:用户说"实现设计"、"forge-design-impl"、设计文档确认后需要写代码时。

The English summary is being prepared. Showing the original description.

yike-gunshi/forge-skills13Updated Oct 14, 2026

See all skills by yike-gunshi

Report a problem with this skill