tools/ai/claude/config/skills/ralph/SKILL.md
Use when user says "ralph <dir>" or "ralph this". Implements the highest-priority issue from state.json in the given directory using TDD, updates docs, runs review in a subagent, fixes actionable feedback, then stops for user to commit. Argument is the directory containing state.json and GUIDANCE.md.
npx skillsauth add pixelastic/oroshi ralphInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
One issue, TDD, documented, reviewed, fixed, stopped. Do not commit. Do not continue to the next issue.
Working directory: $ARGUMENTS
If $ARGUMENTS is empty, "this", ".", or "here" → use current working directory.
Goal: Select the next issue and load context.
Exit criterion: Issue selected, guidance loaded, ready to implement.
Run ralph-start $ARGUMENTS and parse the JSON output:
status: "finished" → display "All issues complete." and stop.status: "deadlocked" → display the message field and stop.status: "ready" → continue.Read the file at the guidance path — accumulated knowledge from prior sessions.
Read the file at the issue path — the spec for this session.
Display a one-line recap of the selected issue.
Goal: Write tests that fail — either because the feature doesn't exist yet, or because they demonstrate a bug.
Exit criterion: Test runs and fails.
If you have any ## Behavioral Tests from the issue:
__tests__ folder, next to the file being tested.If you have any ## Scaffolding Tests from the issue:
plans/<slug>/scaffold/<issue-filename>.batsRun tests. If they passes immediately: tests are wrong. Rewrite them.
Do not write any production code in this step.
Goal: Make the tests pass with minimal code, then verify the full suite.
Exit criterion: Linter clean, all tests green.
zsh-writer, js-writer, skill-writer, etc)git-directory-root)git-file-lint and fix any issues.git-file-test. All tests must pass.Goal: Get external feedback, apply it, verify nothing broke.
Exit criterion: All actionable feedback addressed, linter clean, tests green.
reviewref:dirty and spec:<issue_path>reviewralph-start output)git-file-lint and fix any issues.git-file-test. All tests must pass.Goal: Leave full context for the next session.
Exit criterion: state.json, GUIDANCE.md (optional), COMMIT_HINT.md, and review-log.md (optional) updated.
All paths of the following files are from ralph-start output.
Update state.json: find the issue
entry by id, set done: true, add recap — a short one-sentence summary
of what was done.
Append to GUIDANCE.md under ## Discoveries:
### Issue XX — <title>
- <non-trivial finding>
Skip this step if there are no non-trivial findings.
Write COMMIT_HINT.md
The file is free prose for the next commit message author. Cover:
feat(git-commit-message), chore(gitignore)Be specific enough that an agent can write a good commit message without re-reading the diff.
If review had skipped items, create or append at the end of review-log.md:
## Issue XX — <title>
### <feedback item>
```code block of the flagged code```
**Problem:** <what the reviewer flagged>
**Reason skipped:** <why it was dismissed>
Goal: Hand off to user.
Exit criterion: ralph-end called, session recap displayed.
Run ralph-end $ARGUMENTS first
Print the issue id, tldr, recap, and any discoveries logged.
Stop here. Do not commit. Do not start the next issue. Wait for the user.
| Rationalization | Reality |
|---|---|
| "I don't need a specific skill, I know that language" | You don't know my style. Follow the standards of the skill. |
| "I'll write the test after to go faster" | Tests-after prove nothing. Delete the code. Start with RED. |
| "I'll do one more issue while I'm at it" | One issue. Full stop. |
| "Review feedback is minor, not worth it" | Minor feedback ignored = minor bugs shipped. Fix it. |
| "I don't need to read the guidance and issue files, I can start implementing" | You can't. Read both — guidance has prior discoveries; the issue has the acceptance criteria. |
| "I should commit so the review has something to diff" | Do not commit. That's the user's job. |
| "I should run review via the Bash tool" | Use the /review skill instead, Bash will go to the background and we need to wait for the review. |
ralph-start, parsed output, handled finished/deadlocked__tests__/zsh-writer, js-writer, etc)/review via Skill tool and received outputref:dirty and spec:<path> to the review skilldone: true + recaptools
Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.
tools
Break a plan, spec, or PRD into independently-grabbable issues using tracer-bullet vertical slices. Use when user wants to convert a plan into issues, create implementation tickets, or break down work into issues.
documentation
Use when user says "sidequest" or "handoff" — compact conversation context into a document for a fresh agent to pick up.
development
Use when the user wants to nail down domain terms, resolve terminology ambiguities, or build a shared language for a module or repo. Drills vocabulary one question at a time and writes to the project GLOSSARY.md.