Agent Skills › gmickel/flow-next › flow-next-qa

flow-next-qa

GitHub

驱动运行中的应用进行实时用户QA,基于规格生成测试场景,记录P0/P1/P2问题及证据,并输出YES/NO的交付判定。

plugins/flow-next/codex/skills/flow-next-qa/SKILL.md gmickel/flow-next

Trigger Scenarios

需要验证已构建应用的运行时行为 在PR合并前执行自动化质量门禁

Install

npx skills add gmickel/flow-next --skill flow-next-qa -g -y
More Options

Non-standard path

npx skills add https://github.com/gmickel/flow-next/tree/main/plugins/flow-next/codex/skills/flow-next-qa -g -y

Use without installing

npx skills use gmickel/flow-next@flow-next-qa

指定 Agent (Claude Code)

npx skills add gmickel/flow-next --skill flow-next-qa -a claude-code -g -y

安装 repo 全部 skill

npx skills add gmickel/flow-next --all -g -y

预览 repo 内 skill

npx skills add gmickel/flow-next --list

SKILL.md

Frontmatter
{
    "name": "flow-next-qa",
    "description": "Live-app QA pass derived from the spec. Drives the running app, files P0\/P1\/P2 findings with evidence, emits a YES or NO qa_verdict receipt.",
    "allowed-tools": "Read, Bash, Grep, Glob, Write, Edit, Task",
    "user-invocable": false
}

/flow-next:qa — live-app real-user QA pass

Drive the running app the way an unforgiving real user would, with scenarios taken from the spec, file P0/P1/P2 findings with captured evidence, and end with a YES/NO ship verdict written as a qa_verdict receipt. The spec is the source of intent: acceptance criteria become scenarios, R-IDs become the coverage table, boundaries say what not to test, decision context says what the app should do.

QA is a cheap first live pass over the finished build. It does not replace CI, staging or manual QA, and it does not fix product code: it files, surfaces and hands off. Findings are advisory; the human reviewer and the land gate decide.

It runs when the user invokes it, or as the optional pipeline.qa stage (off | on | auto, default off) that /flow-next:flow runs after all tasks are done and before make-pr. When setting or reading that key, read gate-selection.md; flowctl.md has the config row. Enable the stage only where /flow-next:prime reports the app is QA-ready (seeded data, a documented dev login, a drivable surface, readable runtime evidence); otherwise every run ends BLOCKED.

Read working-rules.md first unless you already have this run; it holds for every step.

The hard rule

SHIP rests on evidence captured from the running app (screenshots, console output, observed state). A SHIP reached by reading the source or the diff, from narration, or from "the code looks right" has broken this. With no reachable app or no driver, the outcome is BLOCKED, never a pass. Reading source to explain a failure you already captured is fine.

Preamble

flowctl is bundled, not on PATH. Define it once; later blocks here and in workflow.md use $FLOWCTL:

FLOWCTL="${CODEX_HOME:-$HOME/.codex}/scripts/flowctl"
[ -x "$FLOWCTL" ] || FLOWCTL="<plugin-root>/scripts/flowctl"   # <plugin-root> = the directory two levels above this skill's SKILL.md file (the harness gave you that file's absolute path when the skill loaded); substitute it literally
[ -x "$FLOWCTL" ] || FLOWCTL=".flow/bin/flowctl"

This skill runs inline on the host (not forked) so it can ask the user for undocumented facts.

Arguments

The first non-flag token is the spec id. --target <url>, --receipt <path> and --base <ref> take a value (as --flag value or --flag=value). mode:autonomous turns on autonomous mode.

SPEC_ID=""; PREV=""
# No positional parameters: the host rewrites them inside skill code blocks.
# Quote the pasted arguments once so a URL's `&` or `;` stays data.
RAW_ARGS="$ARGUMENTS"
for ARG in $RAW_ARGS; do
  case "$PREV" in
    --target)  QA_TARGET_URL="$ARG"; PREV=""; continue ;;
    --receipt) QA_RECEIPT_OVERRIDE="$ARG"; PREV=""; continue ;;
    --base)    QA_BASE_REF="$ARG"; PREV=""; continue ;;
  esac
  case "$ARG" in
    --target|--receipt|--base) PREV="$ARG" ;;
    --target=*)  QA_TARGET_URL="${ARG#--target=}" ;;
    --receipt=*) QA_RECEIPT_OVERRIDE="${ARG#--receipt=}" ;;
    --base=*)    QA_BASE_REF="${ARG#--base=}" ;;
    mode:autonomous) QA_AUTONOMOUS=1 ;;
    -*) echo "Unknown flag: $ARG (ignored)" >&2 ;;
    *)  [[ -z "$SPEC_ID" ]] && SPEC_ID="$ARG" ;;
  esac
done
[[ -n "$PREV" ]] && echo "Flag $PREV given without a value (ignored)" >&2
[[ "${FLOW_AUTONOMOUS:-}" == "1" ]] && QA_AUTONOMOUS=1
NO_PROMPT=0
[[ "${QA_AUTONOMOUS:-}" == "1" || "${AUTONOMOUS:-}" == "1" ]] && NO_PROMPT=1
export QA_TARGET_URL QA_RECEIPT_OVERRIDE QA_BASE_REF QA_AUTONOMOUS NO_PROMPT

Autonomous mode (NO_PROMPT=1; flow --auto dispatches with mode:autonomous) asks nothing. Each fact the interactive run would ask for is resolved from the spec, config or environment; when it cannot be, the run writes a BLOCKED receipt and exits cleanly. The one exception is an unresolvable spec id, which is an error (non-zero exit, message on stderr).

Now follow workflow.md: discover, derive, prepare, execute, file, verdict.

Version History

  • 4eba935 Current 2026-10-19 16:48

    优化参数解析以支持含特殊字符的URL;修复前置检查失败时的容错逻辑;调整证据引用方式避免内联过大内容;修正模式默认值与回退逻辑。

  • 7db792a 2026-09-28 08:13

    修复未运行模式下的正确性问题,包括保留作用域、审查状态和工人交接;修复守卫控制字绕过及陈旧规范携带问题;优化屏幕块处理和审计重复项修剪。

  • b91f43c 2026-09-22 21:16

    将QA配置从pilot迁移至flow-auto,支持unattended模式下的pipeline.qa=auto,并更新路由引用和依赖文档。

  • cd9ddf8 2026-08-28 18:46
  • 8baa538 2026-08-20 07:59

Same Skill Collection

optimization/audit/baseline/SKILL.md
optimization/interview/baseline/SKILL.md
optimization/make-pr/baseline/SKILL.md
optimization/plan/baseline/SKILL.md
optimization/prospect/baseline/SKILL.md
plugins/flow-next/codex/skills/flow-next-audit/SKILL.md
plugins/flow-next/codex/skills/flow-next-capture/SKILL.md
plugins/flow-next/codex/skills/flow-next-chart/SKILL.md
plugins/flow-next/codex/skills/flow-next-deps/SKILL.md
plugins/flow-next/codex/skills/flow-next-export-context/SKILL.md
plugins/flow-next/codex/skills/flow-next-features/SKILL.md
plugins/flow-next/codex/skills/flow-next-flow/SKILL.md
plugins/flow-next/codex/skills/flow-next-guide/SKILL.md
plugins/flow-next/codex/skills/flow-next-impl-review/SKILL.md
plugins/flow-next/codex/skills/flow-next-interview/SKILL.md
plugins/flow-next/codex/skills/flow-next-land/SKILL.md
plugins/flow-next/codex/skills/flow-next-make-pr/SKILL.md
plugins/flow-next/codex/skills/flow-next-map/SKILL.md
plugins/flow-next/codex/skills/flow-next-memory-migrate/SKILL.md
plugins/flow-next/codex/skills/flow-next-pilot/SKILL.md
plugins/flow-next/codex/skills/flow-next-plan-review/SKILL.md
plugins/flow-next/codex/skills/flow-next-plan/SKILL.md
plugins/flow-next/codex/skills/flow-next-prime/SKILL.md
plugins/flow-next/codex/skills/flow-next-prose/SKILL.md
plugins/flow-next/codex/skills/flow-next-prospect/SKILL.md
plugins/flow-next/codex/skills/flow-next-ralph-init/SKILL.md
plugins/flow-next/codex/skills/flow-next-resolve-pr/SKILL.md
plugins/flow-next/codex/skills/flow-next-setup/SKILL.md
plugins/flow-next/codex/skills/flow-next-spec-completion-review/SKILL.md
plugins/flow-next/codex/skills/flow-next-strategy/SKILL.md
plugins/flow-next/codex/skills/flow-next-sync/SKILL.md
plugins/flow-next/codex/skills/flow-next-tracker-sync/SKILL.md
plugins/flow-next/codex/skills/flow-next-visual/SKILL.md
plugins/flow-next/codex/skills/flow-next-work-rolling/SKILL.md
plugins/flow-next/codex/skills/flow-next-work/SKILL.md
plugins/flow-next/codex/skills/flow-next-worktree-kit/SKILL.md
plugins/flow-next/codex/skills/flow-next/SKILL.md
plugins/flow-next/skills/flow-next-chart/SKILL.md
plugins/flow-next/skills/flow-next-deps/SKILL.md
plugins/flow-next/skills/flow-next-export-context/SKILL.md
plugins/flow-next/skills/flow-next-features/SKILL.md
plugins/flow-next/skills/flow-next-guide/SKILL.md
plugins/flow-next/skills/flow-next-impl-review/SKILL.md
plugins/flow-next/skills/flow-next-interview/SKILL.md
plugins/flow-next/skills/flow-next-land/SKILL.md
plugins/flow-next/skills/flow-next-make-pr/SKILL.md
plugins/flow-next/skills/flow-next-map/SKILL.md
plugins/flow-next/skills/flow-next-pilot/SKILL.md
plugins/flow-next/skills/flow-next-plan-review/SKILL.md

Metadata

Files
0
Version
4eba935
Hash
90191ebb
Indexed
2026-08-20 07:59

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-31 14:14
浙ICP备14020137号-1