{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ftw",
    "name": "Piv",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/SmokeAlot420/ftw",
    "canonicalUrl": "https://clawhub.ai/SmokeAlot420/ftw",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ftw",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ftw",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "assets/prp_base.md",
      "assets/workflow-template.md",
      "references/codebase-analysis.md",
      "references/create-prd.md",
      "references/execute-prp.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ftw"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ftw",
    "agentPageUrl": "https://openagent3.xyz/skills/ftw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ftw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ftw/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Arguments: $ARGUMENTS",
        "body": "Parse arguments using this logic:"
      },
      {
        "title": "PRD Path Mode (first argument ends with .md)",
        "body": "If the first argument ends with .md, it's a direct path to a PRD file:\n\nPRD_PATH - Direct path to the PRD file\nPROJECT_PATH - Derived by going up from PRDs/ folder\nSTART_PHASE - Second argument (default: 1)\nEND_PHASE - Third argument (default: auto-detect from PRD)"
      },
      {
        "title": "Project Path Mode",
        "body": "If the first argument does NOT end with .md:\n\nPROJECT_PATH - Absolute path to project (default: current working directory)\nSTART_PHASE - Second argument (default: 1)\nEND_PHASE - Third argument (default: 4)\nPRD_PATH - Auto-discover from PROJECT_PATH/PRDs/ folder"
      },
      {
        "title": "Detection Logic",
        "body": "If $ARGUMENTS[0] ends with \".md\":\n  PRD_PATH = $ARGUMENTS[0]\n  PROJECT_PATH = dirname(dirname(PRD_PATH))\n  START_PHASE = $ARGUMENTS[1] or 1\n  END_PHASE = $ARGUMENTS[2] or auto-detect from PRD\n  PRD_NAME = basename without extension\nElse:\n  PROJECT_PATH = $ARGUMENTS[0] or current working directory\n  START_PHASE = $ARGUMENTS[1] or 1\n  END_PHASE = $ARGUMENTS[2] or 4\n  PRD_PATH = auto-discover from PROJECT_PATH/PRDs/\n  PRD_NAME = discovered PRD basename"
      },
      {
        "title": "Mode Detection",
        "body": "After parsing arguments:\n\nIf PRD_PATH was provided or auto-discovered → MODE = \"execute\" (normal flow)\nIf no PRD found and no PRD_PATH provided → MODE = \"discovery\""
      },
      {
        "title": "Required Reading by Role",
        "body": "CRITICAL: Each role MUST read their instruction files before acting.\n\nRoleInstructionsDiscovery (no PRD)Read {baseDir}/references/piv-discovery.mdPRD CreationRead {baseDir}/references/create-prd.mdPRP GenerationRead {baseDir}/references/generate-prp.mdCodebase AnalysisRead {baseDir}/references/codebase-analysis.mdExecutorRead {baseDir}/references/piv-executor.md + {baseDir}/references/execute-prp.mdValidatorRead {baseDir}/references/piv-validator.mdDebuggerRead {baseDir}/references/piv-debugger.md\n\nPrerequisite: A PRD must exist before entering the Phase Workflow. If no PRD exists, the orchestrator enters Discovery Mode (see below)."
      },
      {
        "title": "Discovery Mode (No PRD Found)",
        "body": "When MODE = \"discovery\":\n\nRead {baseDir}/references/piv-discovery.md for the discovery process\nPresent discovery questions to the user in a friendly, conversational tone (single message)\n\nTarget audience is vibe coders, not senior engineers — keep it approachable\nSkip questions the user already answered in their initial message\n\n\nWait for user answers\nFill gaps with your own expertise:\n\nIf user doesn't know tech stack → research (web search, codebase scan) and PROPOSE one\nIf user can't define phases → propose 3-4 phases based on scope\nAlways propose-and-confirm: \"Here's what I'd suggest — does this sound right?\"\n\n\nRun project setup (create PRDs/, PRPs/templates/, PRPs/planning/)\nGenerate PRD: Read {baseDir}/references/create-prd.md, use discovery answers + your proposals to write PRD to PROJECT_PATH/PRDs/PRD-{project-name}.md\nSet PRD_PATH to the generated PRD, auto-detect phases → continue to Phase Workflow\n\nThe orchestrator handles discovery and PRD generation directly (no sub-agent needed — interactive Q&A requires staying in the same session, and answers are already in context for PRD generation)."
      },
      {
        "title": "Orchestrator Philosophy",
        "body": "\"Context budget: ~15% orchestrator, 100% fresh per subagent\"\n\nYou are the orchestrator. You stay lean and manage workflow. You DO NOT execute PRPs yourself - you spawn specialized sub-agents with fresh context for each task.\n\nSub-agent spawning: Use the sessions_spawn tool to create fresh sub-agent sessions. Each spawn is non-blocking — you'll receive results via an announce step. Wait for each agent's results before proceeding to the next step."
      },
      {
        "title": "Project Setup (piv-init)",
        "body": "If the project doesn't have PIV directories, create them:\n\nmkdir -p PROJECT_PATH/PRDs PROJECT_PATH/PRPs/templates PROJECT_PATH/PRPs/planning\n\nCopy {baseDir}/assets/prp_base.md to PROJECT_PATH/PRPs/templates/prp_base.md if it doesn't exist.\nCreate PROJECT_PATH/WORKFLOW.md from {baseDir}/assets/workflow-template.md if it doesn't exist."
      },
      {
        "title": "Phase Workflow",
        "body": "For each phase from START_PHASE to END_PHASE:"
      },
      {
        "title": "Step 1: Check/Generate PRP",
        "body": "Check for existing PRP:\n\nls -la PROJECT_PATH/PRPs/ 2>/dev/null | grep -i \"phase.*N\\|pN\\|p-N\"\n\nIf no PRP exists, spawn a fresh sub-agent using sessions_spawn to do both codebase analysis and PRP generation in sequence:\n\nRESEARCH & PRP GENERATION MISSION - Phase {N}\n==============================================\n\nProject root: {PROJECT_PATH}\nPRD Path: {PRD_PATH}\n\n## Phase {N} Scope (from PRD)\n{paste phase scope}\n\n## Step 1: Codebase Analysis\nRead {baseDir}/references/codebase-analysis.md for the process.\nSave to: {PROJECT_PATH}/PRPs/planning/{PRD_NAME}-phase-{N}-analysis.md\n\n## Step 2: Generate PRP (analysis context still loaded)\nRead {baseDir}/references/generate-prp.md for the process.\nUse template: PRPs/templates/prp_base.md\nOutput to: {PROJECT_PATH}/PRPs/PRP-{PRD_NAME}-phase-{N}.md\n\nDo BOTH steps yourself. DO NOT spawn sub-agents."
      },
      {
        "title": "Step 2: Spawn EXECUTOR",
        "body": "Spawn a fresh sub-agent using sessions_spawn:\n\nEXECUTOR MISSION - Phase {N}\n============================\n\nRead {baseDir}/references/piv-executor.md for your role definition.\nRead {baseDir}/references/execute-prp.md for the execution process.\n\nPRP Path: {PRP_PATH}\nProject: {PROJECT_PATH}\n\nFollow: Load PRP → Plan Thoroughly → Execute → Validate → Verify\nOutput EXECUTION SUMMARY with Status, Files, Tests, Issues."
      },
      {
        "title": "Step 3: Spawn VALIDATOR",
        "body": "Spawn a fresh sub-agent using sessions_spawn:\n\nVALIDATOR MISSION - Phase {N}\n=============================\n\nRead {baseDir}/references/piv-validator.md for your validation process.\n\nPRP Path: {PRP_PATH}\nProject: {PROJECT_PATH}\nExecutor Summary: {SUMMARY}\n\nVerify ALL requirements independently.\nOutput VERIFICATION REPORT with Grade, Checks, Gaps.\n\nProcess result: PASS → commit | GAPS_FOUND → debugger | HUMAN_NEEDED → ask user"
      },
      {
        "title": "Step 4: Debug Loop (Max 3 iterations)",
        "body": "Spawn a fresh sub-agent using sessions_spawn:\n\nDEBUGGER MISSION - Phase {N} - Iteration {I}\n============================================\n\nRead {baseDir}/references/piv-debugger.md for your debugging methodology.\n\nProject: {PROJECT_PATH}\nPRP Path: {PRP_PATH}\nGaps: {GAPS}\nErrors: {ERRORS}\n\nFix root causes, not symptoms. Run tests after each fix.\nOutput FIX REPORT with Status, Fixes Applied, Test Results.\n\nAfter debugger: re-validate → PASS (commit) or loop (max 3) or escalate."
      },
      {
        "title": "Step 5: Smart Commit",
        "body": "cd PROJECT_PATH && git status && git diff --stat\n\nCreate semantic commit with Built with FTW (First Try Works) - https://github.com/SmokeAlot420/ftw."
      },
      {
        "title": "Step 6: Update WORKFLOW.md",
        "body": "Mark phase complete, note validation results."
      },
      {
        "title": "Step 7: Next Phase",
        "body": "Loop back to Step 1 for next phase."
      },
      {
        "title": "Error Handling",
        "body": "No PRD: Enter Discovery Mode (see Discovery Mode section above)\nExecutor BLOCKED: Ask user for guidance\nValidator HUMAN_NEEDED: Ask user for guidance\n3 debug cycles exhausted: Escalate to user"
      },
      {
        "title": "Sub-Agent Timeout/Failure",
        "body": "When a sub-agent times out or fails:\n\nCheck for partial work (files created, tests written)\nRetry once with a simplified, shorter prompt\nIf retry fails, escalate to user with what was accomplished"
      },
      {
        "title": "Completion",
        "body": "## PIV RALPH COMPLETE\n\nPhases Completed: START to END\nTotal Commits: N\nValidation Cycles: M\n\n### Phase Summary:\n- Phase 1: [feature] - validated in N cycles\n...\n\nAll phases successfully implemented and validated."
      }
    ],
    "body": "PIV Ralph Orchestrator\nArguments: $ARGUMENTS\n\nParse arguments using this logic:\n\nPRD Path Mode (first argument ends with .md)\n\nIf the first argument ends with .md, it's a direct path to a PRD file:\n\nPRD_PATH - Direct path to the PRD file\nPROJECT_PATH - Derived by going up from PRDs/ folder\nSTART_PHASE - Second argument (default: 1)\nEND_PHASE - Third argument (default: auto-detect from PRD)\nProject Path Mode\n\nIf the first argument does NOT end with .md:\n\nPROJECT_PATH - Absolute path to project (default: current working directory)\nSTART_PHASE - Second argument (default: 1)\nEND_PHASE - Third argument (default: 4)\nPRD_PATH - Auto-discover from PROJECT_PATH/PRDs/ folder\nDetection Logic\nIf $ARGUMENTS[0] ends with \".md\":\n  PRD_PATH = $ARGUMENTS[0]\n  PROJECT_PATH = dirname(dirname(PRD_PATH))\n  START_PHASE = $ARGUMENTS[1] or 1\n  END_PHASE = $ARGUMENTS[2] or auto-detect from PRD\n  PRD_NAME = basename without extension\nElse:\n  PROJECT_PATH = $ARGUMENTS[0] or current working directory\n  START_PHASE = $ARGUMENTS[1] or 1\n  END_PHASE = $ARGUMENTS[2] or 4\n  PRD_PATH = auto-discover from PROJECT_PATH/PRDs/\n  PRD_NAME = discovered PRD basename\n\nMode Detection\n\nAfter parsing arguments:\n\nIf PRD_PATH was provided or auto-discovered → MODE = \"execute\" (normal flow)\nIf no PRD found and no PRD_PATH provided → MODE = \"discovery\"\nRequired Reading by Role\n\nCRITICAL: Each role MUST read their instruction files before acting.\n\nRole\tInstructions\nDiscovery (no PRD)\tRead {baseDir}/references/piv-discovery.md\nPRD Creation\tRead {baseDir}/references/create-prd.md\nPRP Generation\tRead {baseDir}/references/generate-prp.md\nCodebase Analysis\tRead {baseDir}/references/codebase-analysis.md\nExecutor\tRead {baseDir}/references/piv-executor.md + {baseDir}/references/execute-prp.md\nValidator\tRead {baseDir}/references/piv-validator.md\nDebugger\tRead {baseDir}/references/piv-debugger.md\n\nPrerequisite: A PRD must exist before entering the Phase Workflow. If no PRD exists, the orchestrator enters Discovery Mode (see below).\n\nDiscovery Mode (No PRD Found)\n\nWhen MODE = \"discovery\":\n\nRead {baseDir}/references/piv-discovery.md for the discovery process\nPresent discovery questions to the user in a friendly, conversational tone (single message)\nTarget audience is vibe coders, not senior engineers — keep it approachable\nSkip questions the user already answered in their initial message\nWait for user answers\nFill gaps with your own expertise:\nIf user doesn't know tech stack → research (web search, codebase scan) and PROPOSE one\nIf user can't define phases → propose 3-4 phases based on scope\nAlways propose-and-confirm: \"Here's what I'd suggest — does this sound right?\"\nRun project setup (create PRDs/, PRPs/templates/, PRPs/planning/)\nGenerate PRD: Read {baseDir}/references/create-prd.md, use discovery answers + your proposals to write PRD to PROJECT_PATH/PRDs/PRD-{project-name}.md\nSet PRD_PATH to the generated PRD, auto-detect phases → continue to Phase Workflow\n\nThe orchestrator handles discovery and PRD generation directly (no sub-agent needed — interactive Q&A requires staying in the same session, and answers are already in context for PRD generation).\n\nOrchestrator Philosophy\n\n\"Context budget: ~15% orchestrator, 100% fresh per subagent\"\n\nYou are the orchestrator. You stay lean and manage workflow. You DO NOT execute PRPs yourself - you spawn specialized sub-agents with fresh context for each task.\n\nSub-agent spawning: Use the sessions_spawn tool to create fresh sub-agent sessions. Each spawn is non-blocking — you'll receive results via an announce step. Wait for each agent's results before proceeding to the next step.\n\nProject Setup (piv-init)\n\nIf the project doesn't have PIV directories, create them:\n\nmkdir -p PROJECT_PATH/PRDs PROJECT_PATH/PRPs/templates PROJECT_PATH/PRPs/planning\n\n\nCopy {baseDir}/assets/prp_base.md to PROJECT_PATH/PRPs/templates/prp_base.md if it doesn't exist. Create PROJECT_PATH/WORKFLOW.md from {baseDir}/assets/workflow-template.md if it doesn't exist.\n\nPhase Workflow\n\nFor each phase from START_PHASE to END_PHASE:\n\nStep 1: Check/Generate PRP\n\nCheck for existing PRP:\n\nls -la PROJECT_PATH/PRPs/ 2>/dev/null | grep -i \"phase.*N\\|pN\\|p-N\"\n\n\nIf no PRP exists, spawn a fresh sub-agent using sessions_spawn to do both codebase analysis and PRP generation in sequence:\n\nRESEARCH & PRP GENERATION MISSION - Phase {N}\n==============================================\n\nProject root: {PROJECT_PATH}\nPRD Path: {PRD_PATH}\n\n## Phase {N} Scope (from PRD)\n{paste phase scope}\n\n## Step 1: Codebase Analysis\nRead {baseDir}/references/codebase-analysis.md for the process.\nSave to: {PROJECT_PATH}/PRPs/planning/{PRD_NAME}-phase-{N}-analysis.md\n\n## Step 2: Generate PRP (analysis context still loaded)\nRead {baseDir}/references/generate-prp.md for the process.\nUse template: PRPs/templates/prp_base.md\nOutput to: {PROJECT_PATH}/PRPs/PRP-{PRD_NAME}-phase-{N}.md\n\nDo BOTH steps yourself. DO NOT spawn sub-agents.\n\nStep 2: Spawn EXECUTOR\n\nSpawn a fresh sub-agent using sessions_spawn:\n\nEXECUTOR MISSION - Phase {N}\n============================\n\nRead {baseDir}/references/piv-executor.md for your role definition.\nRead {baseDir}/references/execute-prp.md for the execution process.\n\nPRP Path: {PRP_PATH}\nProject: {PROJECT_PATH}\n\nFollow: Load PRP → Plan Thoroughly → Execute → Validate → Verify\nOutput EXECUTION SUMMARY with Status, Files, Tests, Issues.\n\nStep 3: Spawn VALIDATOR\n\nSpawn a fresh sub-agent using sessions_spawn:\n\nVALIDATOR MISSION - Phase {N}\n=============================\n\nRead {baseDir}/references/piv-validator.md for your validation process.\n\nPRP Path: {PRP_PATH}\nProject: {PROJECT_PATH}\nExecutor Summary: {SUMMARY}\n\nVerify ALL requirements independently.\nOutput VERIFICATION REPORT with Grade, Checks, Gaps.\n\n\nProcess result: PASS → commit | GAPS_FOUND → debugger | HUMAN_NEEDED → ask user\n\nStep 4: Debug Loop (Max 3 iterations)\n\nSpawn a fresh sub-agent using sessions_spawn:\n\nDEBUGGER MISSION - Phase {N} - Iteration {I}\n============================================\n\nRead {baseDir}/references/piv-debugger.md for your debugging methodology.\n\nProject: {PROJECT_PATH}\nPRP Path: {PRP_PATH}\nGaps: {GAPS}\nErrors: {ERRORS}\n\nFix root causes, not symptoms. Run tests after each fix.\nOutput FIX REPORT with Status, Fixes Applied, Test Results.\n\n\nAfter debugger: re-validate → PASS (commit) or loop (max 3) or escalate.\n\nStep 5: Smart Commit\ncd PROJECT_PATH && git status && git diff --stat\n\n\nCreate semantic commit with Built with FTW (First Try Works) - https://github.com/SmokeAlot420/ftw.\n\nStep 6: Update WORKFLOW.md\n\nMark phase complete, note validation results.\n\nStep 7: Next Phase\n\nLoop back to Step 1 for next phase.\n\nError Handling\nNo PRD: Enter Discovery Mode (see Discovery Mode section above)\nExecutor BLOCKED: Ask user for guidance\nValidator HUMAN_NEEDED: Ask user for guidance\n3 debug cycles exhausted: Escalate to user\nSub-Agent Timeout/Failure\n\nWhen a sub-agent times out or fails:\n\nCheck for partial work (files created, tests written)\nRetry once with a simplified, shorter prompt\nIf retry fails, escalate to user with what was accomplished\nCompletion\n## PIV RALPH COMPLETE\n\nPhases Completed: START to END\nTotal Commits: N\nValidation Cycles: M\n\n### Phase Summary:\n- Phase 1: [feature] - validated in N cycles\n...\n\nAll phases successfully implemented and validated."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/SmokeAlot420/ftw",
    "publisherUrl": "https://clawhub.ai/SmokeAlot420/ftw",
    "owner": "SmokeAlot420",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ftw",
    "downloadUrl": "https://openagent3.xyz/downloads/ftw",
    "agentUrl": "https://openagent3.xyz/skills/ftw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ftw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ftw/agent.md"
  }
}