Tdd
This is my personal configuration of skills as a Ruby on Rails Dev
npx -y skills add igmarin/rails-agent-skills --skill tddAssembled 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
Orchestrates the full Rails TDD cycle with hard gates: test MUST exist, be run, and FAIL for the correct reason (e.g. undefined method, not syntax error) before any implementation code — propose minimal implementation and wait for user approval → verify test PASSES → run full suite with rubocop, brakeman, rspec all green → produce YARD documentation and self-reviewed PR; phases context/test design→implementation→iterate→finish. Use when practicing test-driven development, red-green-refactor, TDD workflow, writing tests before code, adding tests first, or building a Rails feature where specs must gate implementation.
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
5.5 KB, as published. Nobody here has run it
TDD Persona
Agent Phases
Phase 1: Context & Test Design
- context/load-context: Load schema, routes, and patterns.
- testing/plan-tests: Choose the best first failing spec.
- testing/write-tests: Write test and verify failure.
HARD GATE — tdd-process (from ruby-core-skills)
- Test EXISTS and is RUN.
- FAILS for correct reason (e.g.,
undefined method 'full_name'). - If FAIL is incorrect (syntax, config), return to
write-tests.
Phase 2: Implementation
- Proposal Checkpoint: Propose implementation (e.g., "Concatenate first + last name").
- User Approval: Wait for explicit confirmation.
- Minimal Implement: Smallest change to pass test.
- Verify PASS:
bundle exec rspec spec/path/to/spec.rb.
If test does not pass, fix minimal changes and re-verify.
Phase 3: Iterate (Optional)
Return to Phase 1 for next behavior or proceed to Phase 4.
Phase 4: Finish
- Quality Check:
bundle exec rubocop && bundle exec brakeman && bundle exec rspec. - write-yard-docs (from ruby-core-skills): Document public Ruby API.
- code-quality/code-review: Self-review PR diff.
- Open PR: Feature complete.
Concrete Example
Abbreviated walkthrough for adding a full_name method to a User model. For the full end-to-end example, see assets/example.md.
Step 1 — Write the failing spec (spec/models/user_spec.rb):
RSpec.describe User, type: :model do
describe '#full_name' do
it 'returns first and last name joined by a space' do
user = User.new(first_name: 'Jane', last_name: 'Doe')
expect(user.full_name).to eq('Jane Doe')
end
end
end
Run: bundle exec rspec spec/models/user_spec.rb
Expected failure: NoMethodError: undefined method 'full_name' for #<User ...> ✅
Step 2 — Propose & confirm
Proposal: Add
def full_name = "#{first_name} #{last_name}"toapp/models/user.rb. Proceed?
Step 3 — Minimal implementation (app/models/user.rb):
def full_name
"#{first_name} #{last_name}"
end
Run: bundle exec rspec spec/models/user_spec.rb → 1 example, 0 failures ✅
Step 4 — Quality check:
bundle exec rubocop && bundle exec brakeman && bundle exec rspec
All green → write YARD docs → self-review → open PR.
Output Style
When completing a TDD cycle, produce a report following the template in assets/tdd-report-template.md. At minimum the report must include:
- RED: spec file path and line, exact failure class and message, confirmation the failure is for the correct reason.
- Proposal: one-line implementation summary and explicit user approval confirmation.
- GREEN: implementation file path and line range, spec pass confirmation.
- Iterate: number of additional RED→GREEN cycles and a summary of each.
- Quality Gate: RuboCop, Brakeman, full RSpec suite, YARD docs, and self-review results.
Integration
| Predecessor | This Persona | Successor |
|---|---|---|
| load-context | tdd | code-review |
| define-domain-language | tdd | quality |
| None (standalone) | tdd | PR submission |
Use plan-tests alone if you only need to decide which test to write next.
Use write-tests alone if the test design is already decided and you only need to implement the spec.
Error Recovery
Test fails for the wrong reason (syntax/config error):
- Identify error class —
SyntaxError,NameError,LoadErrorindicate test problems, not missing features. - Fix the test to correctly target the missing behavior and re-run until the failure class is correct (e.g.,
NoMethodError).
Implementation makes test pass but breaks other tests:
- Run
bundle exec rspecto identify regressions. - Revise implementation to satisfy both the new test and existing tests.
- If impossible, the feature conflicts with existing behavior — discuss with user before proceeding.
Quality gate fails (RuboCop/Brakeman):
- Run
bundle exec rubocop -afor auto-correctable offenses; fix remaining ones manually. - For Brakeman warnings, assess whether they are false positives — if real, fix before proceeding.