{"id":18039,"plugin_id":"plugins_6a82b32a6ee8819191258c0368112b78","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:14:35.165Z","digest":"21805a770f78c57e56db3f368b0fc17e7a3edb63a209337773eb8f975b04d0ac","against":null,"payload":{"description":"Build test plan, API scripts, and UI docs for scoped features; optional verify segment","included_files":[],"name":"zuora-uat-build","skill_md_contents":"---\nname: zuora-uat-build\ndescription: Build test plan, API scripts, and UI docs for scoped features; optional verify segment\nargument-hint: \"[features_input=all] [force_overwrite=false] [verify=false] [environment=mcp] [max_fix_retries=3]\"\nallowed-tools: [Read, Write, Edit, Glob, Grep, Bash, Agent, Task, mcp__zuora-mcp__zuora_codegen, mcp__zuora-mcp__ask_zuora]\n---\n\nCodex-only path resolution: When an instruction refers to `${CLAUDE_PLUGIN_ROOT}`, treat it as the root of this installed plugin.\n\nOrchestrator: discover scope → one worker per feature → aggregate. **Does not run pytest by default** (`verify=false`).\n\n## Input\n\n$ARGUMENTS\n\n## Workflow\n\n### Step 1: Resolve paths and scaffold\n\n```bash\nGIT_ROOT=$(git rev-parse --show-toplevel)\nUAT_ROOT=$(python3 \"${CLAUDE_PLUGIN_ROOT}/references/uat-test/execution/scripts/resolve_uat_root.py\" \\\n  --git-root \"$GIT_ROOT\" | python3 -c \"import sys,json; print(json.load(sys.stdin)['uat_root'])\")\n```\n\nIf `$UAT_ROOT/design` missing, scaffold per `zuora-uat-design` Step 2.\n\n### Step 2: Discover scope\n\n```bash\npython3 \"${CLAUDE_PLUGIN_ROOT}/references/uat-test/execution/scripts/discover_groups.py\" \\\n  --git-root \"$GIT_ROOT\" \\\n  --features-input \"<features_input>\"\n```\n\n### Step 3: Delegate per feature\n\nPass workers: feature stem, `tr_filter`, flags, `UAT_ROOT`, and `${CLAUDE_PLUGIN_ROOT}/skills/zuora-uat/generate-feature/SKILL.md`.\n\n**Multiple features:** sequential sub-agents. **Single feature:** inline OK.\n\nCollect **compact JSON summary only** from workers.\n\n### Step 3b: Finalize verification marks (required)\n\nAfter each feature worker completes, **always** run (do not skip even if the worker JSON already lists verification):\n\n```bash\npython3 \"${CLAUDE_PLUGIN_ROOT}/references/uat-test/execution/scripts/uat_verification.py\" finalize-generate \\\n  --git-root \"$GIT_ROOT\" \\\n  --feature \"<feature_stem>\" \\\n  --verify \"<verify>\"\n# When the worker had tr_filter, append --tr N for each TR in scope\n```\n\nWhen `verify=false`, this writes `{\"verified\": false}` for every TR in scope to `.uat-verification.json`. When `verify=true`, this is a no-op (the verify segment sets marks on pass/fail).\n\nValidate the manifest (must pass before continuing):\n\n```bash\npython3 \"${CLAUDE_PLUGIN_ROOT}/references/uat-test/execution/scripts/uat_verification.py\" validate \\\n  --scenario-dir \"$UAT_ROOT/execution/tests/test_scenarios/<scenario_folder>\"\n```\n\nIf validate fails, re-run `ensure-manifest` for that feature and report the failure in the roll-up.\n\n### Step 4: Aggregate\n\nRoll-up table per feature. One failure does not abort siblings.\n\n## MCP\n\nUse `mcp__zuora-mcp__zuora_codegen` during generation. Call `mcp__zuora-mcp__ask_zuora` only when verify/fix needs unresolved product-behavior answers.\n\n## References\n\n- `${CLAUDE_PLUGIN_ROOT}/references/uat-test/execution/docs/E2E_TEST_IMPLEMENTATION_GUIDELINE.md`\n- `${CLAUDE_PLUGIN_ROOT}/references/uat-test/execution/docs/UI_TEST_DOC_FORMAT.md`\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}