engine

SkillAI & models

Use when running the full engine loop: author, test, review, release. Trigger words: create engine, extract engine, engine release, mountable engine.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the engine skill

What this skill tells your AI

The instructions your AI receives, as published by igmarin/rails-agent-skills in skills/engine/SKILL.md and read by ahel’s review.

Phase 1: Engine Authoring

  1. skills/create-engine (sub-skill — invoke separately) — Design and scaffold namespace isolation, directory structure, and gemspec configuration

Kickoff command:

rails plugin new my_engine --mountable --test-framework=rspec

Key files to verify after scaffolding:

  • lib/my_engine/engine.rb — must contain isolate_namespace MyEngine
  • lib/my_engine/version.rb
  • my_engine.gemspec — must pass gem specification validation
  • test/dummy/ — dummy app present

HARD GATE — Engine Structure Check:

grep -r 'module MyEngine' lib/my_engine/engine.rb
ruby -e "require 'rubygems'; spec = Gem::Specification.load('my_engine.gemspec'); puts spec.validate"
grep 'isolate_namespace\|engine.config.isolate_namespace' lib/my_engine/engine.rb

If structure check FAILS: Return to create-engine and fix.


Phase 2: Testing Setup

  1. skills/test-engine (sub-skill — invoke separately) — Set up dummy app, spec helpers, factory isolation, and test database

  2. Write initial characterization tests:

    • Test engine mounting
    • Test generators if any
    • Test core functionality

Run tests from engine root:

cd my_engine && bundle exec rspec

HARD GATE — Tests Run:

bundle exec rspec --format progress 2>&1 | tail -5

Must show no load errors and exit 0.

If load errors appear: Consult the test-engine sub-skill for ordered troubleshooting steps.

HARD GATE — Isolation Before Integration:

NEVER integrate engine into host app before:

  1. Engine tests pass standalone
  2. Namespace properly isolated
  3. Migrations won't conflict
  4. Dependencies clearly declared

Phase 3: Implementation & Review

  1. Implement features using:

    • tdd agent for complex features
    • Individual skills for simple additions
  2. skills/review-engine (sub-skill — invoke separately)

  3. skills/upgrade-engine (sub-skill — invoke separately)

Check gem dependencies:

bundle exec rake dependencies
bundle exec bundler-audit check --update

Phase 4: Documentation & Release

  1. skills/document-engine (sub-skill — invoke separately) — Installation, configuration, usage examples, changelog

  2. skills/release-engine (sub-skill — invoke separately) — Version bump (SemVer), changelog, upgrade notes, git tag

Release commands:

gem build my_engine.gemspec
gem push my_engine-1.0.0.gem
git tag v1.0.0 && git push origin v1.0.0

Optional: 3. skills/create-engine-installer — Idempotent rails g my_engine:install generator for host app configuration

Output: Published gem or releasable GitHub repository.


Quick Reference

New engine?        → create-engine → test-engine
Extract from app?  → extract-engine → create-engine
Release engine?    → review-engine → release-engine
Not sure?          → skill-router

Common Anti-Patterns

Anti-PatternFix
Namespace leakage::MyEngine instead of MyEngine::Verify isolate_namespace MyEngine in engine.rb
Migration conflicts — Migrations outside engine dir or missing path configRun engine migrations in isolation via dummy app
Missing gemspec dependencies — Runtime gems in Gemfile but not in .gemspecRun bundle exec rake dependencies and bundler-audit check at Phase 3 end
Dummy app load errors — Missing require or incorrect spec_helperUse test-engine sub-skill diagnostic steps

Signals

GitHub stars
25
Forks
7
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
engine
Source
github.com/igmarin/rails-agent-skills