用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill uat-discipline-craft命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
基于 SOC 职业分类
正在显示 SKILL.md
| name | uat-discipline-craft |
| description | >- Use when this capability is needed. |
The cursor rule akos-uat-discipline.mdc and the canonical
UAT_DISCIPLINE.md tell you when to mint a closure UAT and what
the 11 sections + frontmatter fields are. This skill tells you how to
write them well, how to fill verdict_followup_rationale without abusing
PWF, and how to disposition validator findings without producing
governance-debt or false-PASS closure.
Read this skill before drafting any uat-*.md report for the first time
in a session, OR before re-running the validator after a multi-section
revision (the most common error is mis-numbering a section heading or
forgetting the PWF rationale).
The validator (scripts/validate_uat_report.py --report <path>) is
mechanical evidence for the wave-close §3 row. If you fill in the verdict
line before running the validator, you have to amend the UAT when the
validator surfaces a missing section or a PWF without rationale. Always:
git status
noise interferes with the validator; it only reads the target file
but stale fixtures confuse the self-test).py scripts/validate_uat_report.py --self-test — must PASS.py scripts/validate_uat_report.py --report docs/wip/planning/<NN>/reports/uat-<wave-or-initiative>-<YYYY-MM-DD>.md.AskQuestion).This is the same shape as the INTER_WAVE_REGRESSION sweep + the INDEX_INTEGRITY sweep. The three sweeps compose: a wave with clean regression + clean index but a FAIL-laden UAT validator is NOT closure-ready.
When the validator surfaces ≥ 1 FAIL finding, you do NOT silently
auto-fix and move on. You disposition via the 5-option enum from the
canonical §6 + the rule's RULE 5, surfaced as AskQuestion per
akos-inline-ratification.mdc.
Bad (auto-fix without ratification):
# Validator says UAT-FM-11-PWF-WITHOUT-RATIONALE.
# Agent silently appends a one-line rationale "see follow-up".
# Operator never sees that PWF is being used to defer real work.
Good (inline-ratify):
AskQuestion: validator FAIL UAT-FM-11 — verdict is PASS-WITH-FOLLOWUP
but verdict_followup_rationale is missing. Per 12th specialty
D-IH-86-CX, this MUST name the PWF class (1 of 5 per
PASS_WITH_FOLLOWUP_GOVERNANCE_DISCIPLINE.md §3) + the follow-up artifact
path + the closure-target ETA. Recommended: amend-followup-rationale
with class=monitoring-obligation (3-wave field-test window for the
UAT validator promotion itself); tracker=this UAT's §10 row 7;
ETA=Wave U close. Alternatives: rework-now (downgrade verdict to
PASS — only if the gap can be closed in this commit) / escalate-to-
blocker-tracker.
When findings exceed 10, split into 2 AskQuestion batches, grouped by class:
When findings exceed 20, halt + propose structural rework. A 20+ finding UAT report is mis-shapen: either the validator is misfiring (RULE 5 option 4 inline-ratify with operator) OR the draft skipped the template entirely (rework-now: copy a known-good report as scaffold).
The validator accepts BOTH compact form (## 1 — Closure summary) and
verbose form (## Section 1 — Closure summary). The verbose form is
preferred for closure UATs because:
Compact form is acceptable when space is tight (e.g. the
docs/wip/planning/_templates/uat-closure-template.md may use compact
form to keep the template skimmable), but production reports default to
verbose.
verdict_followup_rationale is load-bearing prose, not a checkboxWhen verdict=PASS-WITH-FOLLOWUP, the rationale field is the entire governance signal. Write it as one sentence per PWF class element:
verdict: PASS-WITH-FOLLOWUP
verdict_followup_rationale: >-
PWF class = deferred-work-with-tracker. Wave R Lane B drain dispositioned
53 findings; 6 forward-chartered as OPS-86-15..20 (Wave R+1 trigger). Tracker:
this UAT §9 closure registry edits row 4 (OPS_REGISTER appends).
ETA: Wave R+1 close (≤ 7 calendar days from this report).
Bad rationale (the false-PASS anti-pattern the 12th specialty exists to prevent):
verdict: PASS-WITH-FOLLOWUP
verdict_followup_rationale: "follow-up in next wave"
The bad version is what motivated the operator's META4-b ratification +
the META5-c full-specialty-mint (PASS_WITH_FOLLOWUP_GOVERNANCE_DISCIPLINE.md).
The five PWF classes are NOT optional categorization — they are the
forcing function that surfaces whether the deferred work has a real
tracker, a real ETA, and a real owner.
verdict_history is mandatory for amendmentsWhen you amend an existing closure UAT (e.g., operator review at Wave
M.5 surfaces a missed dimension; the I77 P3-P4 amendment precedent
applies), populate verdict_history with one entry per prior verdict:
verdict_history:
- "v1 — 2026-05-19 — PASS — amended at v2 to add dimension F.7 finding"
- "v2 — 2026-05-20 — PASS-WITH-FOLLOWUP — added deploy regression context"
verdict: PASS-WITH-FOLLOWUP
verdict_followup_rationale: >-
PWF class = monitoring-obligation. Wave M.5 amendment added Vercel
deploy-class verification per D-IH-86-AT. Field-test window: next 2
releases observed for build-context-class regression.
Skipping verdict_history on an amendment violates RULE 2 + erases the
audit trail. The validator catches this via UAT-FM-09-VERDICT-HISTORY- MISSING-ON-AMENDMENT (when an amendment is detectable from git history
or commit message).
When the parent initiative shipped a process_list.csv row, Section 6 is
mandatory + carries the AC-HUMAN + AC-AUTOMATION acceptance criteria per
akos-executable-process-catalog.mdc Rule 1 §5. Most drafts forget this
section because:
It is not redundant. Section 6 is the paired-closure attestation: the human can run the SOP without the runbook AND the runbook fires unattended. Both must be PASS-tested at closure.
Minimum Section 6 shape:
## Section 6 — SOP + runbook pair
| AC | Surface | Verification | Status |
|---|---|---|---|
| AC-HUMAN | [`SOP-PEOPLE_<NAME>_001.md`](../../../references/.../SOP-PEOPLE_<NAME>_001.md) | Operator (or AIC role_owner) ran the SOP steps end-to-end at <date>; outputs match expected | PASS |
| AC-AUTOMATION | [`scripts/<runbook>.py`](../../../../../scripts/<runbook>.py) | `py scripts/<runbook>.py --<flags>` exits 0; self-test mode wired into pre_commit | PASS |
The I86 cluster-coordinator pattern requires a 4-signal cross-check for cluster siblings:
release-gate.py INFO advisory: parent initiative row green.validate_hlk.py OVERALL PASS.For standalone initiatives (NOT inside an I86 cluster), Section 5 is N/A — but the section MUST still exist as a one-line N/A statement. The validator's regex requires the section heading; the body can be:
## Section 5 — D-IH-86-D mechanical cross-check (cluster wave closure)
N/A — this initiative is standalone (not registered as an I86 cluster
sibling per [`INITIATIVE_REGISTRY.csv`](../../../references/.../INITIATIVE_REGISTRY.csv)
cluster_membership column). The 4-signal cross-check applies to I86
sibling closures only per D-IH-86-D.
Omitting the section entirely triggers UAT-SEC-05-MISSING FAIL.
Per akos-agent-checkpoint-discipline.mdc §"Operator pause point
contract", the sign-off checklist is ≤ 7 items. More items = pause
fatigue. Fewer items = under-specified review surface.
Each item should:
Bad row:
- [ ] Review the report.
Good row:
- [ ] (reversible) §3.2 validator outputs reviewed; `validate_uat_report
--self-test` PASS confirmed at <commit-sha>.
- [ ] (IRREVERSIBLE) §9 DECISION_REGISTER appends confirmed via
`validate_decision_register PASS` at <commit-sha>; no row reordering;
D-IH-86-CW/CX rows match operator ratification.
py scripts/validate_uat_report.py --self-test).D-IH-NN-X decision IDs ratifying this closure listed.R-IH-NN-N risk IDs from the risk register listed.PASS_WITH_FOLLOWUP_GOVERNANCE_DISCIPLINE.md §3).docs/wip/planning/_templates/uat-closure-template.md
open as scaffold reference.closure_decision_source: agent_inline_default
without time-box compliance. This source is reserved for the 24h+
silence + clean validators + reversible items path per
akos-inline-ratification.mdc §"Time-box recovery". Using it for
irreversible items is a discipline violation.verdict_history); cite
the amending decision row (e.g., D-IH-NN-X-amend); revise the report
in-place; re-run validator; re-commit. Do NOT delete the prior
commit's history.verdict_history + populate the
rationale + cite the PWF class + tracker + ETA. The original commit
stays as v1; the amendment is v2.For L3 / L3.5 browser-evidence UAT (not the 11-section closure bar):
Read every journey PNG in the foreground session.agent_visual_review.json in the capture folder (delegation_allowed: false).py scripts/validate_uat_screenshot_evidence.py --session-dir …
before the UAT verdict line.I96 worked example: SOP-EXPERIENTIAL_UAT_AGENT_VISUAL_REVIEW_001.md.
.cursor/rules/akos-uat-discipline.mdc — the WHEN.UAT_DISCIPLINE.md — the doctrine.SOP-PEOPLE_UAT_GOVERNANCE_001.md — AC-HUMAN execution contract.scripts/validate_uat_report.py — AC-AUTOMATION enforcement.akos/hlk_uat_report.py — frozen models.docs/wip/planning/_templates/uat-closure-template.md — the scaffold..cursor/skills/inline-ratify-craft/SKILL.md — for disposition AskQuestion craft (used by Principle 2)..cursor/skills/index-integrity-craft/SKILL.md — sister 11th specialty (same compose() function shape).Source: FraysaXII/openclaw-akos — distributed by TomeVault.