palladius / palladius/antigravity-ruby-sdk

✨ [P2] Better skills loading mechanism

Open
#19 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Ruby
Stars
0
Forks
0
Avg merge
4m
Merged PRs (30d)
1

Description

Feature Request

Make adding skills to agents feel natural and Rubyesque. Currently we pass skills in the constructor or call add_skill(). We should support more idiomatic patterns.

Proposed Syntax Options

Option 1: Array-like << and +=
agent = Antigravity::Agent.new
agent.skills << "https://github.com/gemini-cli-extensions/sre"
agent.skills += ["./skills/code-review", "./skills/security-audit"]
Option 2: Block DSL (tap-style)
agent.skills do |s|
  s << "https://github.com/gemini-cli-extensions/sre"
  s << "./skills/code-review"
end
Option 3: Chainable / Builder pattern
agent
  .with_skill("https://github.com/gemini-cli-extensions/sre")
  .with_skill("./skills/code-review")
  .connect!
Option 4: Varargs (Python p() stacking equivalent)
agent.add_skills(
  "https://github.com/gemini-cli-extensions/sre",
  "./skills/code-review",
  "./skills/security-audit"
)
Option 5: Constructor DSL (RubyLLM-inspired)
Antigravity::Agent.new do |a|
  a.model = "gemini-2.5-pro"
  a.skills << "https://github.com/gemini-cli-extensions/sre"
  a.skills << "./skills/code-review"
  a.workspace = "."
end
Option 6: Method missing magic (Rails-style)
agent.skill "https://github.com/gemini-cli-extensions/sre"
agent.skill "./skills/code-review"
# singular = add one, plural = list all
agent.skills  # => [Skill<sre>, Skill<code-review>]

Discussion

The most idiomatic Ruby approach is probably a combination of Options 1 + 5:

  • agent.skills returns a SkillSet (custom Array-like class with <<, +=, each)
  • Constructor accepts a block for initial config
  • SkillSet#<< auto-resolves URLs (GitHub clone) and local paths

This mirrors how Rails does config.middleware, Bundler does gem, and RSpec does config.include.

Current API (for reference)

# Constructor
agent = Antigravity::Agent.new(skills: ["./path", "https://github.com/..."])

# Post-construction
agent.add_skill("./path")
agent.add_skill("https://github.com/...")
agent.add_skills(["./a", "./b"])
agent.add_inline_skill(name: "x", description: "y", instructions: "z")

Priority

P4 -- nice-to-have DX improvement. Current API works fine.

Labels

enhancement, ruby-dx, P4

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the current Antigravity::Agent.new API and the add_skill, add_skills, and add_inline_skill entry points described in the issue. The proposal lists six alternatives without selecting one, so first confirm the intended syntax and SkillSet behavior. Done means the chosen API is implemented while preserving the current API, with tests for the agreed usage patterns.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.