Class: Antigravity::Skill

Inherits:
Base
  • Object
show all
Defined in:
lib/antigravity/skill.rb

Overview

Represents an Agent Skill loaded from a SKILL.md file or defined inline. Spec: https://agentskills.io/specification

A skill directory must contain a SKILL.md with YAML frontmatter:

name: my-skill description: What this skill does

Instructions in markdown...

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

inherited

Methods included from Emojifiable

#emoji, included

Constructor Details

#initialize(path) ⇒ Skill

Load a skill from a directory containing SKILL.md.

Parameters:

  • path (String)

    path to skill directory



21
22
23
24
25
# File 'lib/antigravity/skill.rb', line 21

def initialize(path)
  @path = File.expand_path(path)
  @metadata = {}
  parse_skill_file
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



17
18
19
# File 'lib/antigravity/skill.rb', line 17

def description
  @description
end

#instructionsObject (readonly)

Returns the value of attribute instructions.



17
18
19
# File 'lib/antigravity/skill.rb', line 17

def instructions
  @instructions
end

#metadataObject (readonly)

Returns the value of attribute metadata.



17
18
19
# File 'lib/antigravity/skill.rb', line 17

def 
  @metadata
end

#nameObject (readonly)

Returns the value of attribute name.



17
18
19
# File 'lib/antigravity/skill.rb', line 17

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.



17
18
19
# File 'lib/antigravity/skill.rb', line 17

def path
  @path
end

Class Method Details

.inline(name:, description:, instructions:) ⇒ Skill

Factory: create an inline skill (no file needed).

Parameters:

  • name (String)

    skill name (lowercase, hyphenated)

  • description (String)

    what the skill does

  • instructions (String)

    the skill instructions (markdown)

Returns:

  • (Skill)

    an inline skill instance



37
38
39
40
41
# File 'lib/antigravity/skill.rb', line 37

def self.inline(name:, description:, instructions:)
  skill = allocate
  skill.send(:init_inline, name: name, description: description, instructions: instructions)
  skill
end

.load(path) ⇒ Object

Factory: load from directory path.



28
29
30
# File 'lib/antigravity/skill.rb', line 28

def self.load(path)
  new(path)
end

.skill_dir?(path) ⇒ Boolean

Check if a directory is a valid skill (contains SKILL.md).

Parameters:

  • path (String)

    directory path to check

Returns:

  • (Boolean)


46
47
48
# File 'lib/antigravity/skill.rb', line 46

def self.skill_dir?(path)
  SkillResolver.skill_dir?(path)
end

Instance Method Details

#inspectObject



54
55
56
# File 'lib/antigravity/skill.rb', line 54

def inspect
  "#<Antigravity::Skill name=#{@name.inspect} description=#{@description.inspect} path=#{@path.inspect}>"
end

#to_sObject



50
51
52
# File 'lib/antigravity/skill.rb', line 50

def to_s
  "#<Skill name=#{@name.inspect} path=#{@path.inspect}>"
end