Curated library of 41 public AI agent skills for Ruby on Rails development. Organized by category: planning, testing, code-quality, ddd, engines, infrastructure, api, patterns, context, and orchestration. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and TDD automation. Repository workflows remain documented in GitHub but are intentionally excluded from the Tessl tile.
95
93%
Does it follow best practices?
Impact
96%
1.77xAverage score across 41 eval scenarios
Passed
No known issues
Progressive-disclosure reference. Read when the Context Summary detects a conflict, a missing requirement, or spec/code drift.
When two patterns coexist, requirements conflict, or specs disagree with code, silently picking is the highest-risk failure mode. The user's context-window is the source of truth for disambiguation — ask, do not guess.
Emit a Confusion Block whenever any of the following is true after loading context:
| Trigger | Example |
|---|---|
| Two patterns in the same repo | Services split between { success:, response: } hashes and Dry::Monads::Result |
| Spec passes against stale behavior | Spec asserts status: 200 but code returns 201 and neither is recently changed |
| Requirement omitted | PRD says "user can cancel subscription" — no mention of refund behavior |
| Domain term drift | Same concept called Plan, Tier, and Subscription::Level across layers |
| Boundary ambiguity | Change could live in host app or in mounted engine — neither is wrong on its own |
| Version/gem mismatch | Feature requires Rails 7.1+ but Gemfile.lock shows 7.0 |
| Authorization gap | Endpoint being modified has no before_action :authorize and no Pundit policy nearby |
After the Context Summary, attach:
### Confusion Block
Ambiguity: <one-line description of the conflict>
Evidence:
- <path:line> — <what that file shows>
- <path:line> — <what the other file shows>
Options:
A. <option one — named, with consequence>
B. <option two — named, with consequence>
(C. <third if relevant>)
Recommendation: <A/B/C> — <one-line reason>
Needed from you: <specific question, yes/no or A/B/C>Rules:
path:line citations that produce the ambiguity.### Confusion Block
Ambiguity: Two service return conventions coexist in this repo.
Evidence:
- app/services/billing/charge_service.rb:22 — returns `{ success: true, response: { charge_id: ... } }`
- app/services/onboarding/create_user_service.rb:18 — returns `Success(user)` / `Failure(:invalid_email)` (Dry::Monads)
Options:
A. Match billing pattern (hash) — consistent with most recent services, no new gem
B. Match onboarding pattern (Dry::Monads) — richer failure types, requires teaching callers
Recommendation: A — matches the cross-cutting convention in CLAUDE.md (`{ success:, response: }`).
Needed from you: A or B?### Confusion Block
Ambiguity: Spec asserts behavior the code no longer performs.
Evidence:
- spec/models/subscription_spec.rb:44 — expects `subscription.active?` to be false after 30 days
- app/models/subscription.rb:78 — `active?` currently checks only `status: :active`, not time
Options:
A. Fix the code to match the spec (time-based `active?`)
B. Fix the spec to match the code (status-only `active?`)
C. Neither — the spec is testing a dropped requirement; delete the example
Recommendation: B — a git blame on subscription.rb shows the time check was removed in a refactor 4 months ago; the spec was left stale.
Needed from you: A, B, or C?### Confusion Block
Ambiguity: The new feature could live in the host app or in the `Billing::Engine`.
Evidence:
- engines/billing/lib/billing/engine.rb:1 — isolate_namespace Billing; owns Subscription, Invoice, Plan
- app/controllers/accounts_controller.rb:40 — host owns Account → Subscription wiring via a cross-boundary call
Options:
A. Host app — consistent with current Account wiring, ships faster
B. Billing engine — keeps billing logic inside the engine boundary, matches isolate_namespace intent
Recommendation: B — the feature is a billing concept; adding it to the host perpetuates the boundary leak.
Needed from you: A or B?| Don't | Do |
|---|---|
| "I'll go with option A unless you say otherwise." | End with a closed question — wait for the answer |
| "There are some differences here." (vague) | Name the conflict in one line, cite both sides |
| Offer five options | Two, maximum three — otherwise you are offloading the decision you should have made |
| Confusion Block without a recommendation | Always recommend — your job is to reduce decision load, not add to it |
| Silently picking and noting "we can revisit" | Never ship a silent choice when the Confusion Block applies |
Once the user picks an option, update the Context Summary with a one-line Resolved: note pointing back to the Confusion Block so the choice is auditable:
### Context Summary
- ...
- Confusion: RESOLVED — chose A (hash-style service return) per user 2026-04-18Then proceed with the next skill.
docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
scenario-36
scenario-37
scenario-38
scenario-39
scenario-40
scenario-41
mcp_server
skills
api
generate-api-collection
implement-graphql
code-quality
apply-code-conventions
apply-stack-conventions
assets
snippets
code-review
refactor-code
respond-to-review
review-architecture
security-check
context
load-context
setup-environment
ddd
define-domain-language
model-domain
review-domain-boundaries
engines
create-engine
create-engine-installer
document-engine
extract-engine
release-engine
review-engine
test-engine
upgrade-engine
infrastructure
implement-background-job
implement-hotwire
optimize-performance
review-migration
seed-database
version-api
orchestration
skill-router
patterns
create-service-object
implement-calculator-pattern
write-yard-docs
planning
create-prd
generate-tasks
plan-tickets
testing
plan-tests
test-service
triage-bug
write-tests
workflows