{
  "schemaVersion": "1.0",
  "item": {
    "slug": "better-ralph",
    "name": "Better Ralph",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/RuneweaverStudios/better-ralph",
    "canonicalUrl": "https://clawhub.ai/RuneweaverStudios/better-ralph",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/better-ralph",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=better-ralph",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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",
      "slug": "better-ralph",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T12:20:15.217Z",
      "expiresAt": "2026-05-07T12:20:15.217Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=better-ralph",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=better-ralph",
        "contentDisposition": "attachment; filename=\"better-ralph-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "better-ralph"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/better-ralph"
    },
    "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/better-ralph",
    "agentPageUrl": "https://openagent3.xyz/skills/better-ralph/agent",
    "manifestUrl": "https://openagent3.xyz/skills/better-ralph/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/better-ralph/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": "Better Ralph – One Iteration (OpenClaw)",
        "body": "Execute one iteration of the Better Ralph workflow: pick the next PRD story, implement it, run quality checks, commit, update the PRD, and append progress. Uses only standard tools (read_file, write_file, edit, exec, git). No external runner or Aether-Claw required."
      },
      {
        "title": "When to Use",
        "body": "User says: \"run better ralph\", \"do one better ralph iteration\", \"next prd story\", \"ralph loop\", \"implement next story from prd\".\nProject has a prd.json in the workspace root (see Output Format below for schema)."
      },
      {
        "title": "One-Iteration Workflow",
        "body": "Do these steps in order. Use only your standard file, exec, and git tools."
      },
      {
        "title": "1. Read state",
        "body": "Read prd.json (workspace root). Parse the JSON.\nRead progress.txt if it exists. If it has a section ## Codebase Patterns near the top (up to the next ## or end of file), use that as context for implementation patterns. Otherwise proceed without it."
      },
      {
        "title": "2. Pick the next story",
        "body": "From prd.json.userStories, find all with passes === false.\nSort by priority ascending (lower number = higher priority).\nTake the first (highest priority incomplete story).\nIf every story has passes === true, reply: \"All PRD stories are complete. Nothing left to do.\" and stop."
      },
      {
        "title": "3. Ensure git branch",
        "body": "Check current git branch (e.g. run git branch --show-current or use your git tool).\nIf prd.json has a branchName and it differs from the current branch, checkout or create that branch (e.g. git checkout -b <branchName> or git checkout <branchName>)."
      },
      {
        "title": "4. Implement the story",
        "body": "Story = the one you picked. It has: id, title, description, acceptanceCriteria, priority, passes.\nImplement the story: write or edit code so that every item in acceptanceCriteria is satisfied.\nWork on this story only. Do not start the next story."
      },
      {
        "title": "5. Run quality checks",
        "body": "Run the project’s quality commands (e.g. npm test, npm run lint, npm run typecheck, or whatever the project uses).\nIf any check fails, do not commit. Tell the user what failed and stop. Do not update prd.json or progress.txt for a failed story."
      },
      {
        "title": "6. Commit (only if checks passed)",
        "body": "Stage all changes (e.g. git add -A or your git tool’s equivalent).\nCommit with message exactly: feat: [Story ID] - [Story Title]\nExample: feat: US-002 - Display priority on task cards"
      },
      {
        "title": "7. Mark story passed in prd.json",
        "body": "Read prd.json again (in case it changed).\nFind the user story with the same id you just completed. Set its passes to true.\nWrite the full updated prd.json back (preserve structure and other fields; only change that story’s passes)."
      },
      {
        "title": "8. Append progress to progress.txt",
        "body": "Append (do not overwrite) a new block to progress.txt with this format:\n\n## [Current date/time] - [Story ID]\n- What was implemented (1–2 sentences)\n- Files changed (list paths)\n- **Learnings for future iterations:**\n  - Patterns or gotchas (e.g. \"this codebase uses X for Y\", \"remember to update Z when changing W\")\n---\n\nIf progress.txt does not exist, create it with a first line like # Better Ralph Progress then the block above."
      },
      {
        "title": "9. Report to user",
        "body": "Say which story you completed (ID and title) and that you updated the PRD and progress.\nIf there are still stories with passes === false, say: \"Run another iteration to do the next story.\" If all are complete, say: \"All PRD stories are complete.\""
      },
      {
        "title": "prd.json format",
        "body": "If the user wants to create a new prd.json (no file yet), create it with this shape:\n\n{\n  \"project\": \"ProjectName\",\n  \"branchName\": \"ralph/feature-kebab-case\",\n  \"description\": \"Short feature description\",\n  \"userStories\": [\n    {\n      \"id\": \"US-001\",\n      \"title\": \"Short title\",\n      \"description\": \"As a [role], I want [thing] so that [benefit].\",\n      \"acceptanceCriteria\": [\n        \"Verifiable criterion 1\",\n        \"Verifiable criterion 2\",\n        \"Typecheck passes\"\n      ],\n      \"priority\": 1,\n      \"passes\": false,\n      \"notes\": \"\"\n    }\n  ]\n}\n\npriority: Lower number = higher priority. Order by dependency (e.g. schema before UI).\npasses: Start as false; set to true only after the story is implemented and committed.\nacceptanceCriteria: Each item must be checkable (e.g. \"Typecheck passes\", \"Tests pass\")."
      },
      {
        "title": "Codebase Patterns (progress.txt)",
        "body": "Optionally keep a Codebase Patterns section at the top of progress.txt so future iterations (or you in the next run) see it first:\n\n# Better Ralph Progress\n\n## Codebase Patterns\n- Use X for Y in this codebase\n- Always run Z after changing W\n- Tests require PORT=3000\n\n---\n\nWhen you read progress.txt at the start of an iteration, use this section as context. When you discover a reusable pattern, add it here (edit the top of the file and keep the rest intact). Do not put story-specific details in Codebase Patterns."
      },
      {
        "title": "Rules",
        "body": "One story per invocation. Do not implement multiple stories in one go.\nDo not commit failing code. Only commit after quality checks pass.\nDo not mark a story as passed if you did not commit (e.g. checks failed).\nAppend to progress.txt; never replace the whole file (except when creating it for the first time).\nKeep changes minimal and focused on the current story’s acceptance criteria."
      },
      {
        "title": "Checklist (one iteration)",
        "body": "Read prd.json and progress.txt (and Codebase Patterns if present)\n Picked next story (passes=false, lowest priority number)\n Git branch matches prd.json.branchName\n Implemented story and satisfied all acceptance criteria\n Quality checks passed (test/lint/typecheck)\n Committed with message feat: [ID] - [Title]\n Set that story’s passes to true in prd.json\n Appended progress block to progress.txt"
      }
    ],
    "body": "Better Ralph – One Iteration (OpenClaw)\n\nExecute one iteration of the Better Ralph workflow: pick the next PRD story, implement it, run quality checks, commit, update the PRD, and append progress. Uses only standard tools (read_file, write_file, edit, exec, git). No external runner or Aether-Claw required.\n\nWhen to Use\nUser says: \"run better ralph\", \"do one better ralph iteration\", \"next prd story\", \"ralph loop\", \"implement next story from prd\".\nProject has a prd.json in the workspace root (see Output Format below for schema).\nOne-Iteration Workflow\n\nDo these steps in order. Use only your standard file, exec, and git tools.\n\n1. Read state\nRead prd.json (workspace root). Parse the JSON.\nRead progress.txt if it exists. If it has a section ## Codebase Patterns near the top (up to the next ## or end of file), use that as context for implementation patterns. Otherwise proceed without it.\n2. Pick the next story\nFrom prd.json.userStories, find all with passes === false.\nSort by priority ascending (lower number = higher priority).\nTake the first (highest priority incomplete story).\nIf every story has passes === true, reply: \"All PRD stories are complete. Nothing left to do.\" and stop.\n3. Ensure git branch\nCheck current git branch (e.g. run git branch --show-current or use your git tool).\nIf prd.json has a branchName and it differs from the current branch, checkout or create that branch (e.g. git checkout -b <branchName> or git checkout <branchName>).\n4. Implement the story\nStory = the one you picked. It has: id, title, description, acceptanceCriteria, priority, passes.\nImplement the story: write or edit code so that every item in acceptanceCriteria is satisfied.\nWork on this story only. Do not start the next story.\n5. Run quality checks\nRun the project’s quality commands (e.g. npm test, npm run lint, npm run typecheck, or whatever the project uses).\nIf any check fails, do not commit. Tell the user what failed and stop. Do not update prd.json or progress.txt for a failed story.\n6. Commit (only if checks passed)\nStage all changes (e.g. git add -A or your git tool’s equivalent).\nCommit with message exactly: feat: [Story ID] - [Story Title]\nExample: feat: US-002 - Display priority on task cards\n7. Mark story passed in prd.json\nRead prd.json again (in case it changed).\nFind the user story with the same id you just completed. Set its passes to true.\nWrite the full updated prd.json back (preserve structure and other fields; only change that story’s passes).\n8. Append progress to progress.txt\nAppend (do not overwrite) a new block to progress.txt with this format:\n## [Current date/time] - [Story ID]\n- What was implemented (1–2 sentences)\n- Files changed (list paths)\n- **Learnings for future iterations:**\n  - Patterns or gotchas (e.g. \"this codebase uses X for Y\", \"remember to update Z when changing W\")\n---\n\nIf progress.txt does not exist, create it with a first line like # Better Ralph Progress then the block above.\n9. Report to user\nSay which story you completed (ID and title) and that you updated the PRD and progress.\nIf there are still stories with passes === false, say: \"Run another iteration to do the next story.\" If all are complete, say: \"All PRD stories are complete.\"\nprd.json format\n\nIf the user wants to create a new prd.json (no file yet), create it with this shape:\n\n{\n  \"project\": \"ProjectName\",\n  \"branchName\": \"ralph/feature-kebab-case\",\n  \"description\": \"Short feature description\",\n  \"userStories\": [\n    {\n      \"id\": \"US-001\",\n      \"title\": \"Short title\",\n      \"description\": \"As a [role], I want [thing] so that [benefit].\",\n      \"acceptanceCriteria\": [\n        \"Verifiable criterion 1\",\n        \"Verifiable criterion 2\",\n        \"Typecheck passes\"\n      ],\n      \"priority\": 1,\n      \"passes\": false,\n      \"notes\": \"\"\n    }\n  ]\n}\n\npriority: Lower number = higher priority. Order by dependency (e.g. schema before UI).\npasses: Start as false; set to true only after the story is implemented and committed.\nacceptanceCriteria: Each item must be checkable (e.g. \"Typecheck passes\", \"Tests pass\").\nCodebase Patterns (progress.txt)\n\nOptionally keep a Codebase Patterns section at the top of progress.txt so future iterations (or you in the next run) see it first:\n\n# Better Ralph Progress\n\n## Codebase Patterns\n- Use X for Y in this codebase\n- Always run Z after changing W\n- Tests require PORT=3000\n\n---\n\n\nWhen you read progress.txt at the start of an iteration, use this section as context. When you discover a reusable pattern, add it here (edit the top of the file and keep the rest intact). Do not put story-specific details in Codebase Patterns.\n\nRules\nOne story per invocation. Do not implement multiple stories in one go.\nDo not commit failing code. Only commit after quality checks pass.\nDo not mark a story as passed if you did not commit (e.g. checks failed).\nAppend to progress.txt; never replace the whole file (except when creating it for the first time).\nKeep changes minimal and focused on the current story’s acceptance criteria.\nChecklist (one iteration)\n Read prd.json and progress.txt (and Codebase Patterns if present)\n Picked next story (passes=false, lowest priority number)\n Git branch matches prd.json.branchName\n Implemented story and satisfied all acceptance criteria\n Quality checks passed (test/lint/typecheck)\n Committed with message feat: [ID] - [Title]\n Set that story’s passes to true in prd.json\n Appended progress block to progress.txt"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/RuneweaverStudios/better-ralph",
    "publisherUrl": "https://clawhub.ai/RuneweaverStudios/better-ralph",
    "owner": "RuneweaverStudios",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/better-ralph",
    "downloadUrl": "https://openagent3.xyz/downloads/better-ralph",
    "agentUrl": "https://openagent3.xyz/skills/better-ralph/agent",
    "manifestUrl": "https://openagent3.xyz/skills/better-ralph/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/better-ralph/agent.md"
  }
}