config/ai/claude/skills/ralph/SKILL.md
Use when user says "ralph <dir>" or "ralph this". Implements the highest-priority issue from issues.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 issues.json and progress.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: Load current PRD state and session history.
Exit criterion: You've read issues.json, progress.md, and know which issues are open.
Read:
$ARGUMENTS/issues.json — issues, statuses, metadata$ARGUMENTS/progress.md — session historyGoal: Select exactly one issue to implement this session.
Exit criterion: One issue selected, recap displayed.
Evaluate all open issues. You decide priority — not necessarily the first listed. Weight: blockers, dependencies, impact, complexity.
Glob for $ARGUMENTS/issue-*.md. Read the detail file for your chosen issue.
Display a recap of the issue.
Pick one. Touch nothing else.
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.
Skip if: SKIP ONLY IF the acceptance criterion is satisfied purely by editing a declarative config file (settings.json, .eslintrc, YAML…) and involves no executable code path.
Write the tests that cover the acceptance criteria of the issue — at least one per criterion. Run them. Read the failure output.
If tests 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, etc)Goal: Get external feedback, apply it, verify nothing broke.
Exit criterion: All actionable feedback addressed, linter clean, tests green.
review, no args):
reviewSkipped feedback:Goal: Leave full context for the next session.
Exit criterion: progress.md and issues.json both updated.
Append to $ARGUMENTS/progress.md:
## Session YYYY-MM-DD — <issue-id>: <title>
- Completed: <what was done>
- Tests added: <list>
- Discovered: <unexpected issues found, or "none">
- Fixed: <unplanned fixes made, or "none">
- Skipped feedback: <review items not applied, or "none">
- Next: <recommended next issue or action>
Update $ARGUMENTS/issues.json: mark issue as complete, update any relevant status fields.
Goal: Hand off to user.
Exit criterion: ralph-end called, session recap displayed.
Run ralph-end $ARGUMENTS first
Print the session entry that was written to progress.md
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 can infer priority without reading the detail file" | You can't. Read the file. |
| "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. |
zsh-writer, js-writer, etc)/review via Skill tool and received outputtools
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.