Skip to main content
kata-verify-work Validate built features through conversational testing, running UAT, user acceptance testing, checking if features work, or verifying implementation. Triggers include "verify work", "test features", "UAT", "user testing", "check if it works", and "validate features".
Jump to install Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/gannonh/kata-skills --skill kata-verify-workThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository Capture an idea, task, or issue that surfaces during a Kata session as a structured issue for later work. This skill creates markdown issue files in the .planning/issues/open directory with relevant metadata and content extracted from the conversation. Triggers include "add issue", "capture issue", "new issue", "create issue", "log issue", "file issue", "add todo" (deprecated), "capture todo" (deprecated), "new todo" (deprecated).
Add a milestone to an existing project, starting a new milestone cycle, creating the first milestone after project init, or defining what's next after completing work. Triggers include "add milestone", "new milestone", "start milestone", "create milestone", "first milestone", "next milestone", and "milestone cycle".
Add planned work discovered during execution to the end of the current milestone in the roadmap. This skill appends sequential phases to the current milestone's phase list, automatically calculating the next phase number. Triggers include "add phase", "append phase", "new phase", and "create phase". This skill updates ROADMAP.md and STATE.md accordingly.
Related occupations
SOC
Based on SOC occupation classification
name kata-verify-work description Validate built features through conversational testing, running UAT, user acceptance testing, checking if features work, or verifying implementation. Triggers include "verify work", "test features", "UAT", "user testing", "check if it works", and "validate features". metadata {"version":"1.6.1"}
Validate built features through conversational testing with persistent state.
Purpose: Confirm what Claude built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, automatically diagnose, plan fixes, and prepare for execution.
Output: {phase}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for /kata-execute-phase
<execution_context>
@./references/verify-work.md
</execution_context>
Phase: $ARGUMENTS (optional)
- If provided: Test specific phase (e.g., "4")
- If not provided: Check for active sessions or prompt for phase
@.planning/STATE.md
@.planning/ROADMAP.md
<pre_flight>
Run validation checks before starting verification:
node scripts/kata-lib.cjs check-config 2>/dev/null || true
node scripts/kata-lib.cjs check-template-drift 2>/dev/null || true
If warnings are printed, relay them to the user before proceeding with verification.
</pre_flight>
Resolve UAT template (project override -> plugin default):
UAT_TEMPLATE_PATH=$(node scripts/kata-lib.cjs resolve-template "UAT-template.md" )
UAT_TEMPLATE_CONTENT=$( )
cat
"$UAT_TEMPLATE_PATH "
Use UAT_TEMPLATE_CONTENT as the format specification when creating or updating UAT.md files.
Check for active UAT sessions (resume or start new)
Find SUMMARY.md files for the phase
Extract testable deliverables (user-observable outcomes)
Create {phase}-UAT.md with test list
Present tests one at a time:
Show expected behavior
Wait for plain text response
"yes/y/next" = pass, anything else = issue (severity inferred)
Update UAT.md after each response
On completion: commit UAT.md
7.1. Run extra verification commands (if configured in workflows.verify-work)
7.5. Finalize changes (pr_workflow only) โ commit fixes, push, mark PR ready
7.6. Run PR review (pr_workflow only, optional) โ offer automated review
7.7. Handle review findings โ fix issues or add to backlog
If issues found:
Spawn parallel debug agents to diagnose root causes
Spawn kata-planner in --gaps mode to create fix plans
Spawn kata-plan-checker to verify fix plans
Iterate planner โ checker until plans pass (max 3)
Present ready status with /clear then /kata-execute-phase
7.5. Finalize Changes (pr_workflow only) PR_WORKFLOW=$(node scripts/kata-lib.cjs read-config "pr_workflow" "false" )
WORKTREE_ENABLED=$(node scripts/kata-lib.cjs read-config "worktree.enabled" "false" )
If PR_WORKFLOW=false: Skip to offer_next.
Check for uncommitted changes:
git status --porcelain
If changes exist, stage and commit them:
git add -u
git commit -m "fix({phase}): UAT fixes"
Push to branch:
BRANCH=$(git branch --show-current)
git push origin "$BRANCH "
Check if PR exists:
PR_NUMBER=$(gh pr list --head "$BRANCH " --json number --jq '.[0].number' 2>/dev/null)
If PR exists, mark ready (if still draft):
gh pr ready "$PR_NUMBER " 2>/dev/null || true
PR_URL=$(gh pr view --json url --jq '.url' )
Store PR_NUMBER and PR_URL for offer_next.
</step_7_5_pr_workflow>
7.6. Run PR Review (pr_workflow only, optional) After marking PR ready, offer to run automated review:
header: "PR Review"
question: "Run automated PR review before team review?"
options:
"Yes, run full review" โ Run kata-review-pull-requests with all aspects
"Quick review (code only)" โ Run kata-review-pull-requests with "code" aspect only
"Skip" โ Proceed without review
Invoke skill: Skill("kata-review-pull-requests", "<aspect>")
Display review summary with counts: {N} critical, {M} important, {P} suggestions
STOP and ask what to do with findings (see step 7.7)
If user chooses "Skip":
Continue to offer_next without review.
</step_7_6_pr_review>
<step_7_7_handle_findings>
7.7. Handle Review Findings (required after review completes) STOP here. Do not proceed to offer_next until user chooses an action.
Use AskUserQuestion with options based on what was found:
header: "Review Findings"
question: "How do you want to handle the review findings?"
options (show only applicable ones):
"Fix critical issues" โ (if critical > 0) Fix critical, then offer to add remaining to backlog
"Fix critical & important" โ (if critical + important > 0) Fix both, then offer to add suggestions to backlog
"Fix all issues" โ (if any issues) Fix everything
"Add to backlog" โ Create issues for all findings without fixing
"Ignore and continue" โ Skip all issues
Path A: "Fix critical issues"
Fix each critical issue
If important or suggestions remain, ask: "Add remaining {N} issues to backlog?"
"Yes" โ Create issues, store TODOS_CREATED count
"No" โ Continue
Commit and push fixes
Continue to offer_next
Path B: "Fix critical & important"
Fix each critical and important issue
If suggestions remain, ask: "Add {N} suggestions to backlog?"
"Yes" โ Create issues, store TODOS_CREATED count
"No" โ Continue
Commit and push fixes
Continue to offer_next
Fix all critical, important, and suggestion issues
Commit and push fixes
Continue to offer_next
Create issues for all findings using /kata-add-issue
Store TODOS_CREATED count
Continue to offer_next
Path E: "Ignore and continue"
Store REVIEW_SUMMARY and TODOS_CREATED for offer_next output.
</step_7_7_handle_findings>
Don't use AskUserQuestion for test responses โ plain text conversation
Don't ask severity โ infer from description
Don't present full checklist upfront โ one test at a time
Don't run automated tests โ this is manual user validation
Don't fix issues during testing โ log as gaps, diagnose after all tests complete
</anti_patterns>
<offer_next>
Output this markdown directly (not as a code block). Route based on UAT results:
Status Route All tests pass + more phases Route A (next phase) All tests pass + last phase Route B (milestone complete) Issues found + fix plans ready Route C (execute fixes) Issues found + planning blocked Route D (manual intervention)
Route A: All tests pass, more phases remain
Step 1: If PR_WORKFLOW=true, STOP and ask about merge BEFORE showing completion output.
header: "PR Ready for Merge"
question: "PR #{pr_number} is ready. Merge before continuing to next phase?"
options:
"Yes, merge now" โ merge PR, then show completion
"No, continue without merging" โ show completion with PR status
Step 2: Handle merge response (if PR_WORKFLOW=true)
If user chose "Yes, merge now":
gh pr merge "$PR_NUMBER " --merge
if [ "$WORKTREE_ENABLED " = "true" ]; then
git -C main pull
bash "scripts/manage-worktree.sh" cleanup-phase workspace "$PHASE_BRANCH "
else
git checkout main && git pull
fi
Set MERGED=true for output below.
Step 3: Show completion output
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Kata โบ PHASE {Z} VERIFIED โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
{N}/{N} tests passed
UAT complete โ
{If PR_WORKFLOW and MERGED: PR: #{pr_number} โ merged โ}
{If PR_WORKFLOW and not MERGED: PR: #{pr_number} ({pr_url}) โ ready for review}
{If REVIEW_SUMMARY: PR Review: {summary_stats}}
{If TODOS_CREATED: Backlog: {N} issues created from review suggestions}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โถ Next Up Phase {Z+1}: {Name} โ {Goal from ROADMAP.md}
/kata-plan-phase {Z+1} โ plan next phase
/clear first โ fresh context window
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
/kata-discuss-phase {Z+1} โ gather context and clarify approach
/kata-execute-phase {Z+1} โ skip to execution (if already planned)
{If PR_WORKFLOW and not MERGED: - gh pr view --web โ review PR in browser before next phase}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Route B: All tests pass, milestone complete
Step 1: If PR_WORKFLOW=true, STOP and ask about merge BEFORE showing completion output.
header: "PR Ready for Merge"
question: "PR #{pr_number} is ready. Merge before completing milestone?"
options:
"Yes, merge now" โ merge PR, then show completion
"No, continue without merging" โ show completion with PR status
Step 2: Handle merge response (if PR_WORKFLOW=true)
If user chose "Yes, merge now":
gh pr merge "$PR_NUMBER " --merge
if [ "$WORKTREE_ENABLED " = "true" ]; then
git -C main pull
bash "scripts/manage-worktree.sh" cleanup-phase workspace "$PHASE_BRANCH "
else
git checkout main && git pull
fi
Set MERGED=true for output below.
Step 3: Show completion output
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Kata โบ PHASE {Z} VERIFIED โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
{N}/{N} tests passed
Final phase verified โ
{If PR_WORKFLOW and MERGED: PR: #{pr_number} โ merged โ}
{If PR_WORKFLOW and not MERGED: PR: #{pr_number} ({pr_url}) โ ready for review}
{If REVIEW_SUMMARY: PR Review: {summary_stats}}
{If TODOS_CREATED: Backlog: {N} issues created from review suggestions}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โถ Next Up Audit milestone โ verify requirements, cross-phase integration, E2E flows
/clear first โ fresh context window
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
/kata-complete-milestone โ skip audit, archive directly
{If PR_WORKFLOW and not MERGED: - gh pr view --web โ review PR in browser before audit}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Route C: Issues found, fix plans ready
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Kata โบ PHASE {Z} ISSUES FOUND โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
{N}/{M} tests passed
{X} issues diagnosed
Fix plans verified โ
Issues Found {List issues with severity from UAT.md}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โถ Next Up Execute fix plans โ run diagnosed fixes
/kata-execute-phase {Z} --gaps-only
/clear first โ fresh context window
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
cat ${PHASE_DIR}/*-PLAN.md โ review fix plans
/kata-plan-phase {Z} --gaps โ regenerate fix plans
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Route D: Issues found, planning blocked
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Kata โบ PHASE {Z} BLOCKED โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
{N}/{M} tests passed
Fix planning blocked after {X} iterations
Unresolved Issues {List blocking issues from planner/checker output}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โถ Next Up Manual intervention required
Review the issues above and either:
Provide guidance for fix planning
Manually address blockers
Accept current state and continue
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
/kata-plan-phase {Z} --gaps โ retry fix planning with guidance
/kata-discuss-phase {Z} โ gather more context before replanning
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
</offer_next>