Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when Ralph is working autonomously through Brain Dump backlogs. Covers ticket selection, implementation patterns, and autonomous workflow management.
.claude/skills/majiayu000-ralph-autonomous/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 105% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-20 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 27% | 0% |
This skill guides Ralph when working autonomously through Brain Dump backlogs without direct user supervision.
Ralph evaluates tickets based on:
bash# 1. Load current context read('plans/prd.json') # Get incomplete tickets read('plans/progress.txt') # Previous session context # 2. Analyze ticket landscape list_tickets() # Current state overview find_project_by_path() # Verify project context
typescript// Pseudo-code for Ralph's selection logic function selectTicket(tickets: Ticket[]): Ticket { // Filter: only incomplete tickets const incomplete = tickets.filter((t) => !t.passes); // Sort by priority, then dependencies const sorted = incomplete.sort((a, b) => { if (a.priority !== b.priority) { return priorityOrder[a.priority] - priorityOrder[b.priority]; } return dependencyCount(a) - dependencyCount(b); }); // Choose optimal ticket return sorted[0]; // Highest priority, least blocked }
bash# 1. Initialize ticket work workflow "start-work"(selectedTicketId) # 2. Implementation phase # - Read existing code patterns # - Follow project conventions # - Write minimal, focused changes # 3. Verification pnpm test # Must pass pnpm type-check # Must pass pnpm lint # Should pass # 4. Complete ticket workflow "complete-work"(ticketId, summary)
bash# Log the issue comment "add"(ticketId, "Blocked: [specific issue]. Will continue with next ticket.", "ralph", "blocker") # Move on (don't waste time) return next_best_ticket()
If selected ticket has unmet dependencies:
bash dependency_tickets = tickets.filter(t => selectedTicket.dependencies.includes(t.id) )
bash# Before starting implementation verify_ticket_scope(ticket) { estimated_time = estimate_complexity(ticket) if (estimated_time > 4_hours) { # Break into smaller tickets split_ticket(ticket) return smallest_piece() } }
bash# Always understand existing patterns find_similar_implementations(ticket.description) read_existing_components(ticket.related_area)
typescript// Every ticket must pass these checks interface TicketCompletion { tests_pass: boolean; // pnpm test succeeds types_check: boolean; // pnpm type-check succeeds acceptance_met: boolean; // All AC items verified no_regressions: boolean; // No existing functionality broken }
Ralph automatically logs:
bash# Start of session comment "add"("session-start", `Ralph session started. Available tickets: ${count}`, "ralph", "session") # Ticket decisions comment "add"(ticketId, `Selected ticket: ${ticket.title}. Reason: ${reason}`, "ralph", "decision") # Implementation progress comment "add"(ticketId, `Completed: ${component}. Next: ${next_step}`, "ralph", "progress") # Blockers and issues comment "add"(ticketId, `Issue: ${problem}. Solution: ${approach}`, "ralph", "issue-resolution")
bash# plans/progress.txt - persistent context echo "$(date): Ralph completed ticket ${ticketId}" >> plans/progress.txt echo "Next session context: ${next_priorities}" >> plans/progress.txt
Before calling workflow "complete-work"():
typescriptconst completion_checklist = { code_quality: verify_style_conventions(), error_handling: verify_error_boundaries(), performance: no_performance_regressions(), documentation: updated_docs_if_needed(), testing: all_tests_passing(), acceptance: all_criteria_met(), }; if (!completion_checklist.all_true()) { fix_remaining_issues(); }
If Ralph makes mistakes:
bash# Fallback to manual workflow if (!mcp_tools_available()) { git checkout -b "feature/ralph-manual" # Work without ticket tracking # Update PRD manually when done }
bash# Work offline if needed if (!database_accessible()) { create_local_branch() implement_changes() # Sync tickets when database recovers }
Ralph improves over time by analyzing:
When multiple similar tickets exist:
typescript// Batch similar work for efficiency similar_tickets = find_similar_tickets(current); if (similar_tickets.length > 1) { implement_common_base(); complete_individual_variants(); }
Ralph provides updates without being asked:
All decision-making is documented:
bashcomment "add"(ticketId, `Decision: Chose approach X over Y because: 1. Performance: 50% faster 2. Maintainability: Less code 3. Compatibility: Works with existing system`, "ralph", "decision")
When all tickets are complete:
bashecho "PRD_COMPLETE" # Signal completion # Generate summary comment "add"("project-complete", `All ${total_tickets} tickets completed. Total time: ${elapsed_time}. Key achievements: ${highlights}`, "ralph", "summary")
bash# Prepare for next session update_progress_file_with_next_steps() identify_remaining_dependencies() suggest_priorities_for_next_session()
This skill ensures Ralph works effectively and autonomously while maintaining high code quality and transparency.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 10,754 | 52,012 | +384% | 1 | 1 | 0% | 252 | 2,149 | +753% | 0 | 0 | — |
case-02 | fail→fail | 16,562 | 39,903 | +141% | 1 | 1 | 0% | 260 | 2,163 | +732% | 0 | 0 | — |
case-03 | fail→fail | 5,554 | 10,804 | +95% | 1 | 1 | 0% | 217 | 2,106 | +871% | 0 | 0 | — |
case-04 | pass→pass | 4,172 | 5,054 | +21% | 1 | 1 | 0% | 650 | 2,735 | +321% | 0 | 0 | — |
case-05 | pass→pass | 13,962 | 5,375 | -62% | 1 | 1 | 0% | 1,318 | 2,801 | +113% | 0 | 0 | — |
case-06 | fail→fail | 7,983 | 2,933 | -63% | 1 | 1 | 0% | 1,214 | 2,339 | +93% | 0 | 0 | — |
case-07 | fail→pass | 13,034 | 10,198 | -22% | 1 | 1 | 0% | 1,338 | 2,749 | +105% | 0 | 0 | — |
case-08 | pass→pass | 10,524 | 8,967 | -15% | 1 | 1 | 0% | 1,267 | 2,525 | +99% | 0 | 0 | — |
case-09 | fail→pass | 14,769 | 11,055 | -25% | 1 | 1 | 0% | 1,690 | 2,858 | +69% | 0 | 0 | — |
case-10 | fail→pass | 18,563 | 7,664 | -59% | 1 | 1 | 0% | 2,085 | 2,292 | +10% | 0 | 0 | — |
case-20 | fail→pass | 18,822 | 7,456 | -60% | 1 | 1 | 0% | 2,354 | 2,252 | -4% | 0 | 0 | — |
case-11 | fail→pass | 14,764 | 6,987 | -53% | 1 | 1 | 0% | 1,706 | 2,162 | +27% | 0 | 0 | — |
case-12 | fail→pass | 18,097 | 12,146 | -33% | 1 | 1 | 0% | 1,853 | 3,047 | +64% | 0 | 0 | — |
case-13 | fail→pass | 14,151 | 8,227 | -42% | 1 | 1 | 0% | 1,476 | 2,387 | +62% | 0 | 0 | — |
case-14 | pass→pass | 26,140 | 6,644 | -75% | 1 | 1 | 0% | 3,248 | 2,098 | -35% | 0 | 0 | — |
case-15 | fail→pass | 15,415 | 10,169 | -34% | 1 | 1 | 0% | 1,535 | 2,442 | +59% | 0 | 0 | — |
case-16 | fail→pass | 16,264 | 7,369 | -55% | 1 | 1 | 0% | 1,635 | 2,232 | +37% | 0 | 0 | — |
case-17 | pass→pass | 15,881 | 7,628 | -52% | 1 | 1 | 0% | 1,621 | 3,199 | +97% | 0 | 0 | — |
case-18 | pass→pass | 3,203 | 4,324 | +35% | 1 | 1 | 0% | 424 | 2,681 | +532% | 0 | 0 | — |
case-19 | pass→pass | 15,734 | 3,018 | -81% | 1 | 1 | 0% | 1,583 | 2,263 | +43% | 0 | 0 | — |
case-21 | pass→pass | 24,057 | 7,585 | -68% | 1 | 1 | 0% | 2,839 | 2,299 | -19% | 0 | 0 | — |
case-22 | fail→pass | 9,629 | 32,836 | +241% | 1 | 1 | 0% | 688 | 7,637 | +1010% | 0 | 0 | — |
case-23 | pass→pass | 17,117 | 26,945 | +57% | 1 | 1 | 0% | 2,128 | 4,134 | +94% | 0 | 0 | — |
case-24 | pass→pass | 18,593 | 10,507 | -43% | 1 | 1 | 0% | 2,577 | 3,865 | +50% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 21 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +42 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.