Quality
This is my personal configuration of skills as a Ruby on Rails Dev
npx -y skills add igmarin/rails-agent-skills --skill qualityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 22 stars22 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Complete code quality loop for Rails projects with hard gates: enforce naming conventions and linter compliance (rubocop/brakeman/erblint must pass) → refactor only after characterization tests PASS on current code, verify behavior preserved after each extraction → generate YARD docstrings for all public APIs → NEVER open PR before linter, ERB linter, full test suite, security scan, and YARD docs all pass; phases conventions review→refactoring→documentation. Use this composite end-to-end loop instead of individual refactoring or documentation skills when full three-phase production-readiness review is needed in one pass. Trigger: code review prep, before PR, full Rails quality sweep, quality audit, production-ready review, end-to-end quality check.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
7.2 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Quality Persona
Orchestrates systematic code quality checks, safe refactoring, and documentation updates across three phases. Use this instead of individual refactoring or documentation skills when full production-readiness is required end-to-end. If unsure which skill applies, use skill-router.
Complexity Thresholds
| Metric | Threshold | Action |
|---|---|---|
| Cyclomatic Complexity | > 10 | Extract method |
| Method Length | > 20 lines | Extract method |
| Parameter Count | > 4 | Parameter object |
| Nesting Depth | > 3 levels | Extract method |
| Duplication | > 3 similar blocks | DRY violation |
| Class Length | > 300 lines | Extract class |
Agent Phases
Phase 1: Conventions Review
Check code against Rails standards via skills/code-quality/apply-code-conventions (DRY/YAGNI/PORO/CoC/KISS compliance, linter as style source of truth, structured logging) and skills/code-quality/apply-stack-conventions (Rails + PostgreSQL patterns, Hotwire + Tailwind conventions, security best practices).
Key file patterns to review: app/controllers, app/models, app/services, app/jobs, spec/.
Tool Integration:
# Complexity and duplication
bundle exec rubocop --only Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/ParameterLists,Metrics/AbcSize,Metrics/PerceivedComplexity
# Security
bundle exec brakeman --no-pager
bundle exec bundle-audit check --update
Phase 2: Refactoring (Optional)
Decision Gate — Proceed if any threshold from the table above is exceeded; otherwise skip to Phase 3.
If refactoring is needed, follow TDD discipline:
TDD Enforcement for Refactoring
Before any code change:
- testing/plan-tests — Choose the best characterization test to document current behavior
- testing/write-tests — Write characterization test and verify it PASSES (documents current behavior)
- Refactoring Checkpoint — Propose specific refactoring (e.g., "Extract
calculate_discountmethod toDiscountCalculatorclass") - User Approval — Wait for explicit confirmation
- Implement Refactoring — Make the structural change only
- Verify PASS — Run characterization test to confirm behavior is preserved
- Regression Check — Run full test suite to ensure no regressions
HARD GATE — Test Verification:
- Characterization test EXISTS and PASSES before refactoring
- Characterization test PASSES after refactoring (behavior preserved)
- Full test suite PASSES (no regressions)
- If test fails: Fix the refactoring, not the test
Follow skills/code-quality/refactor-code for specific extraction patterns and safety guidelines.
bundle exec rspec # All tests must pass before proceeding to Phase 3
If gate fails: Fix the failing test or refactoring before proceeding to Phase 3.
Phase 3: Documentation
Document public APIs via skills/ruby-core-skills/write-yard-docs (annotate all public methods with params, return values, and examples; update README/diagrams for architecture or API changes).
Output: Updated YARD comments, refreshed README sections
HARD-GATE: Quality Before Merge
NEVER open PR before:
bundle exec rubocop # Linter must pass
bundle exec erblint --lint-all # ERB linter must pass
bundle exec rspec # All tests must pass
bundle exec brakeman # Security scan must pass
Plus: YARD docs complete for all public APIs.
If gate fails: Fix the failing item before opening PR.
Output Format
# Quality Report — [Date]
## Conventions Check
### Critical Violations (Must Fix)
- [CRITICAL] app/controllers/orders_controller.rb:42 — Method `process_payment` has cyclomatic complexity of 15 (> 10 threshold)
- [CRITICAL] app/models/user.rb:28 — Class has 450 lines (> 300 threshold), extract to service objects
### Warning Violations (Should Fix)
- [WARNING] app/services/order_service.rb:17 — Method `calculate_discount` has 6 parameters (> 4 threshold)
### Suggestion Violations (Nice to Have)
- [SUGGESTION] spec/models/order_spec.rb:12 — Test duplication detected, extract to shared examples
## Refactoring
- [x] / [ ] Required (threshold exceeded)
- Characterization tests added, methods extracted, all tests passing
## Documentation
- YARD coverage: 87% (improved from 65%)
- README updated: YES
Error Recovery
RuboCop offenses after refactoring:
- Run
bundle exec rubocop -afor auto-correctable offenses - Fix remaining offenses manually — refactoring may have introduced style violations
- Re-run full suite to ensure fixes don't break behavior
Characterization test fails after refactoring:
- The refactoring changed behavior — this is a regression, not a test problem
- Revert the refactoring change
- Re-examine the extraction — ensure the new method/class preserves the exact contract
- Try a smaller, more focused refactoring step
YARD generation errors:
- Check for syntax errors in YARD tags (
@param,@return,@raise) - Verify method signatures match YARD annotations
- Run
yard statsto identify undocumented public methods
Anti-Patterns to Avoid
- Refactoring without tests: NEVER refactor without characterization tests passing first
- Fixing tests to match refactoring: If a test fails after refactoring, the refactoring broke behavior — fix the code, not the test
- Scope creep during quality pass: Don't add features during a quality review — only fix conventions, refactor, and document
- Skipping ERB linter:
erblintcatches view-layer issues that RuboCop misses - Ignoring Brakeman warnings: Every Brakeman warning MUST be assessed — false positives should be annotated, not silently ignored
- Partial YARD coverage: All public methods MUST have YARD docs — don't skip "obvious" methods