Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Skills

Skills are Markdown files with optional YAML frontmatter parsed by crates/core/src/skills/frontmatter.rs.

Skill Locations

Discovery order (first match wins by name):

  1. Project directory-style: .swarmie/skills/<name>/SKILL.md
  2. Project flat legacy: .skills/<name>.md
  3. User directory-style: ~/.swarmie/skills/<name>/SKILL.md
  4. System skills: $SWARMIE_HOME/skills/.system/<name>/SKILL.md
  5. Admin skills: /etc/swarmie/skills/<name>/SKILL.md

Implemented in SkillsManager (crates/core/src/skills/manager.rs).

Frontmatter Schema

Supported frontmatter keys (SkillFrontmatter):

KeyTypePurpose
namestringDisplay/command name override.
descriptionstringSkill description.
user-invocableboolEnables slash invocation as /skill-name ....
disable-model-invocationboolHide from model-driven skill execution.
allowed-toolsarray(string)Skill tool allowlist hint.
modelstringSkill-specific model preference.
contextstringfork for subagent execution context.
agentstringSubagent type when using fork context.
argument-hintstringUI hint shown in pickers.
hookstableOptional hooks config on skill.
policytableIncludes allow-implicit-invocation.
interfacetabledisplay-name, short-description, default-prompt.
dependenciestableTool dependency metadata.
permissionstableSkill network/file-system permissions metadata.
unsafeboolReserved/no-op sandbox marker.

Example Skill

---
name: review
description: Review patch for risks
user-invocable: true
argument-hint: "<path>"
interface:
  short-description: Focused code review
dependencies:
  tools:
    - type: mcp
      value: github
permissions:
  network: true
  file-system:
    read: ["src", "docs"]
    write: []
---
 
Review the diff in $ARGUMENTS and summarize risks.

Arguments

substitute_arguments() supports:

  • $ARGUMENTS (full argument string)
  • $ARGUMENTS[0]..[9]
  • $0..$9 shorthand

Defined in crates/core/src/skills/loader.rs.

/skills Picker

TUI integration:

  • /skills opens the Manage Skills dialog.
  • Core sends Op::SkillsList and returns Event::AvailableSkills.
  • Space toggles enabled state in the picker.
  • Enter sends Op::SkillVisibility { name, enabled } diffs for changed skills.
  • Disabled skill paths are persisted in ~/.swarmie/config.toml under [skills].disabled.

Relevant files:

  • crates/tui/src/input/slash.rs
  • crates/tui/src/app/update/commands.rs
  • crates/tui/src/app/update/pickers.rs
  • crates/tui/src/app/update/modals.rs
  • crates/core/src/submission/op_handlers.rs
  • crates/core/src/skills/manager.rs

Built-in System Skills

Swarmie embeds and installs system skills:

  • skill-creator
  • skill-installer

Installed under $SWARMIE_HOME/skills/.system by crates/core/src/skills/system.rs.