SuperAPI AI Directory

engine

Coding & development

View repository

Updated 10-15 22:17

About this skill

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-Pattern Fix
Namespace leakage — ::MyEngine instead of MyEngine:: Verify isolate_namespace MyEngine in engine.rb
Migration conflicts — Migrations outside engine dir or missing path config Run engine migrations in isolation via dummy app
Missing gemspec dependencies — Runtime gems in Gemfile but not in .gemspec Run bundle exec rake dependencies and bundler-audit check at Phase 3 end
Dummy app load errors — Missing require or incorrect spec_helper Use test-engine sub-skill diagnostic steps