skills/compound/SKILL.md
Use when a problem has just been solved and verified working — the fix is fresh, the investigation is in recent history, and the solution is non-trivial enough to capture for future reference
npx skillsauth add lucianghinda/superpowers-ruby compoundInstall 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.
Captures problem solutions while context is fresh, creating structured documentation in docs/solutions/ with YAML frontmatter for searchability. Uses parallel subagents to gather context, extract the solution, find related docs, develop prevention strategies, and classify the category — then the orchestrator assembles and writes a single final file.
<critical_requirement> Only ONE file gets written — the final documentation.
Phase 1 subagents return TEXT DATA to the orchestrator. They must NOT write files. Only the orchestrator (Phase 2) writes the final documentation file. </critical_requirement>
Trigger phrases: "that worked", "it's fixed", "working now", "problem solved", "tests are passing"
Use when:
Don't use when:
/superpowers-ruby:compound # Document the most recent fix
/superpowers-ruby:compound [brief context] # Provide additional context hint
/compound --compact # Single-pass mode for context-constrained sessions
Output location: docs/solutions/[category]/[filename].md
Categories auto-detected from problem type:
build-errors · test-failures · runtime-errors · performance-issues · database-issues · security-issues · ui-bugs · integration-issues · logic-errors
Always run full mode by default. Use compact-safe mode only when explicitly requested.
Before Phase 1, read MEMORY.md from the auto memory directory. If relevant entries exist for the problem being documented, pass them as a labeled supplementary excerpt to the Context Analyzer and Solution Extractor prompts. Tag any memory-sourced content incorporated into the final doc with "(auto memory [claude])".
Launch these five subagents IN PARALLEL — each returns text data only, no files:
| Subagent | Returns |
|----------|---------|
| Context Analyzer | YAML frontmatter skeleton (problem type, component, symptoms) |
| Solution Extractor | Root cause + working solution with code examples |
| Related Docs Finder | Cross-references, related issues, stale doc candidates |
| Prevention Strategist | Prevention strategies and test cases |
| Category Classifier | Final docs/solutions/[category]/[filename].md path |
WAIT for all Phase 1 subagents to complete, then:
mkdir -p docs/solutions/[category]/docs/solutions/[category]/[filename].mdAfter writing, check whether older docs should be refreshed. superpowers-ruby:compound-refresh is not a default follow-up — invoke it selectively:
| Condition | Action |
|-----------|--------|
| New fix contradicts a prior doc's recommendation | Invoke superpowers-ruby:compound-refresh [doc-name] |
| New fix supersedes an older solution | Invoke with narrowest useful scope |
| Multiple related candidates in same area | Ask user whether to run targeted refresh |
| No related docs found, or docs still consistent | Skip |
Never invoke superpowers-ruby:compound-refresh without a scope argument.
After Phase 2, optionally invoke specialized agents based on problem type:
| Problem type | Agent |
|-------------|-------|
| performance_issue | performance-oracle |
| security_issue | security-sentinel |
| database_issue | data-integrity-guardian |
| test_failure | cora-test-reviewer |
| Code-heavy | kieran-rails-reviewer + code-simplicity-reviewer |
When context is tight: skip Phase 1 subagents entirely. In one sequential pass, extract problem/root cause/solution from conversation history (plus any relevant MEMORY.md notes), classify the category, and write a minimal doc with YAML frontmatter, 1-2 sentence problem description, root cause, key code snippets, and one prevention tip. Skip Phase 3 reviews.
| ❌ Wrong | ✅ Correct |
|----------|-----------|
| Subagents write files like context-analysis.md, solution-draft.md | Subagents return text data; orchestrator writes one final file |
| Research and assembly run in parallel | Research completes → then assembly runs |
| Multiple files created during workflow | Single file: docs/solutions/[category]/[filename].md |
development
Use when writing, reviewing, or debugging pure Ruby code — idiomatic patterns, modern 3.x+ features (pattern matching, Data.define, endless methods), error handling conventions (raise vs fail, result objects), memoization, and performance idioms. For Rails use rails-guides. For testing use minitest. For code style use sandi-metz-rules.
testing
Official Rails documentation. Use when asked about any Rails-specific topic including ActiveRecord, routing, controllers, views, mailers, jobs, Action Cable, Action Text, Active Storage, migrations, validations, callbacks, associations, caching, security, or internals.
tools
--- name: ruby-upgrade description: Use when upgrading the Ruby interpreter version of a Bundler/Rails app — especially "upgrade to Ruby 4", "bump Ruby to 4.0", "audit Ruby 4 compatibility", "what breaks on Ruby 4", or a specific target like "Ruby 4.0.5". Triggers on Ruby-major risk symptoms: CGI.parse/CGI::Cookie removal, Net::HTTP implicit Content-Type dropped, demoted default gems (ostruct/logger/benchmark/irb), SortedSet, Set#inspect changes, native-extension recompile crashes, openssl 4 pin
development
Use when stuck after multiple debug attempts and want to escalate to a stronger one-shot model (GPT-5 Pro, Opus, Gemini Pro) — packages a self-contained "oracle prompt" with Ruby/Rails project briefing, verbatim error, what-was-tried, constraints, and just-enough attached files. Triggers include "ask the oracle", "write a letter to GPT-5", "I'm stuck, draft a prompt for another model", "/tmp/letter.md".