一键导入
uat-suite-updater
Manual-only repo workflow. Use only when explicitly invoked as uat-suite-updater or by SKILL.md path; do not auto-select from related requests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manual-only repo workflow. Use only when explicitly invoked as uat-suite-updater or by SKILL.md path; do not auto-select from related requests.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Manual-only repo workflow. Use only when explicitly invoked as uat-regression or by SKILL.md path; do not auto-select from related requests.
Manual-only repo workflow. Use only when explicitly invoked as doc-regression or by SKILL.md path; do not auto-select from related requests.
Manual-only repo workflow. Use only when explicitly invoked as doc-suite-updater or by SKILL.md path; do not auto-select from related requests.
Manual-only repo workflow. Use only when explicitly invoked as fastmcp-spike-guide or by SKILL.md path; do not auto-select from related requests.
Manual-only repo workflow. Use only when explicitly invoked as omnifocus-api-ground-truth-audit or by SKILL.md path; do not auto-select from related requests.
Manual-only repo workflow. Use only when explicitly invoked as test-omnifocus-operator or by SKILL.md path; do not auto-select from related requests.
| name | uat-suite-updater |
| description | Manual-only repo workflow. Use only when explicitly invoked as uat-suite-updater or by SKILL.md path; do not auto-select from related requests. |
Two-phase workflow for updating UAT regression suites after shipping a milestone: initialize (deep research → seed file) then worker (pick up chunks → execute).
These suites are spec conformance tests — "does the implementation match what was specified?" They are NOT derived from reading source code.
Allowed sources (for both seed generation and workers):
.research/updated-spec/MILESTONE-v{X}.md — the authoritative spec, supersedes originals.planning/phases/{N}-{name}/:
{N}-CONTEXT.md — phase requirements and scope{N}-DISCUSSION-LOG.md — decision resolutions ("we decided X instead of Y"){N}-VERIFICATION.md — did we build what was planned?{N}-VALIDATION.md — does it meet requirements?{N}-{NN}-SUMMARY.md — what each sub-plan delivered{N}-UAT.md — previous UAT results (if any).planning/ROADMAP.md, .planning/REQUIREMENTS.md, .planning/STATE.md.planning/milestones/v{X}-ROADMAP.md, v{X}-REQUIREMENTS.md, v{X}-phases/docs/architecture.md, docs/model-taxonomy.md, docs/omnifocus-concepts.md.claude/skills/uat-regression/tests/The agent should explore these locations autonomously — the list above is guidance, not exhaustive. If other non-code docs exist (e.g., RETROSPECTIVE.md, research notes), those are fair game too. The only hard rule is: never read .py files or automated test files.
Never read: .py source files, automated test files, or any implementation code. If you derive tests by reading the code, you confirm what the code does — not what it should do. That's circular and defeats the purpose of UAT.
Warning/error assertions: if the spec or planning docs include the exact warning text, use it. If they don't, the test asserts behavioral criteria instead — "warning is present, is helpful, contains no internals (no type=, pydantic, input_value)". The self-verification step (Worker Step 4) is where spec expectations meet reality.
Regression meaning: once a suite passes, running it later should still pass — unless there's a documented, agreed-upon breaking change visible in planning docs. The suite updater's job is to update suites when the spec evolves, not when the code changes.
Always run this first. Determines which mode to enter.
UAT-SUITE-ANALYSIS.md at repo root## Progress section:
.research/uat-suite-seeds/ and enter Initialization Mode.Idempotency: this workflow is safe to re-run. Initialization always compares the spec against the current state of existing suites. If suites are already up to date (from a previous run or manual edits), the gap analysis will find fewer or no gaps. Running it twice on the same state produces the same result.
Deep research session that produces a seed file coordinating future worker sessions.
Precondition: verify this session is running in a git worktree (git rev-parse --show-toplevel vs git worktree list). Hard stop if not — the seed file and chunk work should happen on a branch, not main.
.planning/STATE.md (frontmatter: milestone, milestone_name).planning/ROADMAP.md for phase rangesgit tag --list).planning/ROADMAP.md + .planning/phases/.planning/milestones/v{X}-ROADMAP.md + v{X}-phases/v1.3..v1.3.1)Spawn four agents in parallel:
git diff {prev}..{tag} --stat to understand which areas changed, then read phase CONTEXT files and verification reports to understand what each phase delivered. Group into themes based on planning docs, not code..claude/skills/uat-regression/tests/, catalog test counts and coverage domainsUAT-SUITE-ANALYSIS.md at repo root following the Seed File Template section belowBefore committing, present all ambiguities encountered during research. The user will NOT review the seed itself — this is their only chance to catch misinterpretations before they get baked into chunk instructions.
Resolution hierarchy (when sources conflict):
.research/updated-spec/ supersedes original specPresent each ambiguity with:
docs: add UAT suite gap analysis for v{version}If no ambiguities were found, say so explicitly ("no ambiguities — all requirements were clear and consistent") and proceed to commit.
If research shows suites are already up to date, say so with evidence (which spec requirements are covered, which warnings have tests). Don't produce an empty seed file — this is a successful result, not an edge case. This is the expected outcome when re-running on a milestone whose suites were already updated.
Pick up the next chunk from the seed file and execute it.
UAT-SUITE-ANALYSIS.md, find first unchecked content chunk.planning/STATE.md — warn if mismatched.claude/skills/uat-regression/SKILL.md) silently to internalize conventionsAfter writing the suite changes, identify assumptions that need live verification (e.g., exact warning text, filter behavior, edge cases).
add_tasks (use a UAT-Verify- prefix for isolation)⚠️ DELETE THIS AFTER UAT in inbox (or reuse if one exists), move all verification tasks under it, tell user to delete it. Same cleanup protocol as the main uat-regression skill.Never run verification autonomously. Always present assumptions first, always ask permission, always wait for explicit approval before touching OmniFocus.
test(uat): ...chore: mark chunk N complete in UAT suite analysisThe checkbox mechanism isn't atomic. If a chunk was just checked by another session, move to the next unchecked chunk.
All content chunks are done. Archive the seed file and wrap up.
.research/uat-suite-seeds/ directory if it doesn't existgit mv UAT-SUITE-ANALYSIS.md .research/uat-suite-seeds/v{version}.mdchore: archive UAT suite analysis for v{version}If the user names a specific suite and a specific change ("just add X to edit-operations.md"), skip mode detection entirely. Read the target suite, follow uat-regression conventions, make the change. No seed file involved.
The seed file must follow this exact structure. See the real UAT-SUITE-ANALYSIS.md in the repo for a concrete example.
# UAT Suite Analysis — v{version} "{milestone_name}"
## How to Use This File
This file is the output of a research session that analyzed what v{version} changed vs what existing UAT suites cover. It contains everything a fresh agent needs to update the suites without re-doing the research.
**Workflow:** Run `/uat-suite-updater` in a new session. The skill auto-detects this file and enters Worker mode — it will find the next unchecked chunk, do targeted research, execute the changes, and mark the chunk done.
**Important:** The agent still needs to do its own targeted research for the specific suites it's updating — the gap tables below are a starting point, not exhaustive. The agent should verify against actual source code, especially for exact warning strings.
---
## Progress
- [ ] Chunk 1 — {title}
- [ ] Chunk 2 — {title}
- [ ] ...
- [ ] **Delete this file** (all chunks done, everything merged)
---
## Chunks — Task List
### Chunk completion protocol
After finishing the suite edits for a chunk, the agent does NOT commit. Instead:
1. **Present assumptions** — list any assumptions about live behavior that the suite relies on (exact warning text, filter results, edge cases)
2. **Offer self-verification** — "Want me to run these checks myself against your live OmniFocus?" If approved, the agent creates minimal test tasks via MCP, runs the checks, reports results, and cleans up (see Worker Mode Step 4 in the skill for the full protocol). If a discrepancy is found, the agent updates the suite before proceeding.
3. **Summarize changes** — list every file modified, tests added, assertions fixed, and verification results if applicable
4. **Wait for sign-off** — user reviews the changes
5. **On approval**: commit the suite changes, then update the Progress checklist above (check the box)
---
### Chunk 1: {title}
**Suites:** {list of suite files}
**What to do:**
- {detailed instructions per suite — new tests, assertion fixes, with line references}
**Est. scope:** ~N new tests + ~M assertion fixes.
---
{repeat for each chunk}
---
## Reference Material
Everything below is research output — the chunks above reference it.
---
## What v{version} Built
{Themes with bullet points — what changed and why}
---
## Gap Analysis by Suite
### {suite name} ({N} tests) — {NEEDS UPDATES | UP TO DATE}
**New scenarios needed:**
| Category | Test | Why |
|----------|------|-----|
| ... | ... | ... |
**Existing tests that may need assertion updates:**
- {test reference — what changed}
---
{repeat for each suite}
### Suites that DON'T need changes
| Suite | Why it's fine |
|-------|---------------|
| ... | ... |
---
## Warning/Error Inventory
Every new warning/error from v{version} that needs at least one UAT test:
### Errors
| ID | Text Pattern | Covered By |
|----|-------------|------------|
| ... | ... | ... |
### Warnings
| ID | Text Pattern | Covered By |
|----|-------------|------------|
| ... | ... | ... |
---
## Combined Suite Strategy
{If composites need restructuring — rationale and plan. Omit if no changes needed.}
---
## Summary of Work
| Suite | Action | New Tests | Assertion Fixes |
|-------|--------|-----------|-----------------|
| ... | ... | ... | ... |
| **Total** | | **~N** | **~M** |
---
## Final Cleanup
Once ALL chunks are complete and committed, and the user has validated everything:
1. Run `/uat-suite-updater` one more time — it will enter Completion mode and archive this file
2. The worktree branch is now ready for the user to review and merge to main
Workers must follow these conventions when writing or updating suite files. Read at least one existing suite in .claude/skills/uat-regression/tests/ to internalize the patterns.
# [Suite Name] Test Suite
[One-line description]
## Conventions
- Inbox only, 1-item limit, plus any suite-specific rules
## Setup
### Task Hierarchy
[ASCII tree of tasks to create, with notes on pre-configured state]
### Manual Actions
[What the user needs to do in OmniFocus before tests run]
## Tests
### 1. [Category]
#### Test 1a: [Name]
1. [Step]
2. PASS if: [criteria]
## Report Table Rows
| # | Test | Description | Result |
|---|------|-------------|--------|
T[N]-[ShortName] formatThe single most important gap-finding mechanism. Take the warning/error inventory and check each entry against existing tests. For every warning or error string with no test triggering it, add one. Warnings are first-class citizens in this codebase — every one deserves a UAT test.
Pay special attention to cross-feature interactions:
After the inventory cross-reference, also consider:
get_task that data survived the round-trip