ask-skills

Gem Version

Discover, validate, and load agent skills for the ask-rb ecosystem. A skill is a markdown file with step-by-step methodology for a domain task. Skills are listed in the agent's system prompt (name + description) and loaded on demand when the agent decides it needs domain guidance. Ships built-in skills (skill.design, skill.compose).

Installation

gem "ask-skills"

Quick Start

require "ask/skills"

# Discover skills from project, user config, gems, and built-ins
registry = Ask::Skills.discover
registry.names   # => ["skill.compose", "skill.design", ...]

# Get a skill by name
skill = registry["skill.design"]
skill.name         # => "skill.design"
skill.description  # => "How to design and write effective skills..."
skill.instructions # => markdown body with step-by-step methodology

# Include per-agent skills too
registry = Ask::Skills.discover(agent_dir: "agents/health_check")

Where Skills Live

Project skills live in agents/shared/skills/ (or app/agents/shared/skills/ in Rails), per-agent skills in agents/<name>/skills/, user skills in ~/.config/ask/skills/, and gems ship skills under ask/skills/*/SKILL.md.

agents/shared/skills/
└── db_debug/
    └── SKILL.md          # project-shared skill

agents/health_check/skills/
└── nginx_debug/
    ┗── SKILL.md          # per-agent skill

~/.config/ask/skills/
└── my_workflow/
    └── SKILL.md          # user-global skill

When the same skill name exists in multiple places, the first source wins: per-agent > shared project (Rails included) > user > gems > built-in. Place a skill with the same name in a higher-priority location to override it.

Skill Format

---
name: db_debug
description: Step-by-step methodology for debugging database issues
tags: database, debugging
version: 1
author: your-team
always: true
---

When investigating database performance issues, follow these steps...

always: true auto-injects the full instructions into the system prompt instead of listing the skill for on-demand loading.

Essential API

Entry point Purpose
Ask::Skills.discover(agent_dir: nil, sources: nil) Build a Registry from all sources in priority order
registry["name"] Look up a skill by name
registry.names List all skill names
registry.skills Hash of name to Skill
Ask::Skills::Skill Data object: name, description, instructions, source, metadata, siblings (references, scripts, assets)
`askr skills <list\ show\ search>` CLI (from ask-agent) for inspecting available skills

Full documentation

The full ask-rb documentation lives at https://ask-rb.github.io/ask-docs. https://ask-rb.github.io/ask-docs/core/skills covers ask-skills in depth, including custom sources, the validator, and formatting for system prompts. API reference: https://ask-rb.github.io/ask-docs/reference/api.

Development

bundle install bundle exec rake test

License

MIT