Sevgi Appendix

Sevgi Appendix packages development extras for the Sevgi SVG DSL: an agent skill and RuboCop rules for readable .sevgi source. Installing the umbrella sevgi gem installs the matching Appendix version. A project that only needs the development extras can install this package separately:

gem install sevgi-appendix

Require

The package version is available without loading RuboCop:

require "sevgi/appendix"

Agent skill

For a complete user installation, install Sevgi with Homebrew on macOS or Linux:

brew install roktas/tap/sevgi

Locate the skill without guessing a Homebrew prefix or Cellar version:

sevgi --skill

The command prints one validated absolute path and nothing else. It fails if the installed sevgi-appendix version does not match Sevgi or its SKILL.md is missing. Homebrew reports a stable path below its opt tree, so an agent's skill directory may safely link to it. Homebrew keeps that path current across upgrades.

Coding agents look for skills in different directories. Paste this prompt into the agent you want to configure:

Run sevgi --skill. Install the reported directory as a user-level skill named sevgi using this agent product's supported skill location. Use a symbolic link because this is a stable Homebrew path. Report the destination and whether a new session is required.

When the umbrella sevgi gem was installed through RubyGems or Bundler, the same query works, including inside a bundle:

bundle exec sevgi --skill

Gem paths contain the package version and can disappear after an upgrade. Copy the complete reported directory into the agent's skill location instead of keeping a long-lived symbolic link, then repeat the copy after updating Sevgi. The skill uses progressive disclosure to route an agent through the DSL, SVG rendering semantics, Geometry and Sundries helpers, Derender, and output workflows.

RuboCop

Add the gem to development dependencies when the umbrella gem is not already present:

gem "sevgi-appendix", require: false

Then enable the plugin in .rubocop.yml:

plugins:
  - sevgi-appendix

Run RuboCop through the application's bundle:

bundle exec rubocop

The plugin adds *.sevgi files to RuboCop and checks the DSL's deliberate source shape: optional parentheses are omitted from statement-like calls, one-line blocks use braces, multiline blocks use do/end, and strings use double quotes. Parentheses remain valid where Ruby needs them or they clarify a compact chained expression.

With rubyfmt

rubyfmt remains authoritative for ordinary Ruby. Keep .sevgi files hand-formatted and let Sevgi Appendix inspect their DSL-specific shape:

inherit_gem:
  rubocop-rubyfmt:
    - config/full.yml

plugins:
  - rubocop-rubyfmt
  - sevgi-appendix

Add the scripts to .rubyfmtignore so rubyfmt does not erase the shape the plugin protects:

*.sevgi
**/*.sevgi

Ruby compatibility

Requires Ruby 3.4.0 or newer. CI verifies the current Ruby 3.4 release and the development Ruby from .ruby-version.

Native prerequisites

This gem needs only Ruby and its Ruby dependencies.