Overview

A plugin is a directory that extends the agent with slash commands (skills) and MCP server tools. Athena loads plugins from paths in your config or via --plugin.

What Plugins Provide

Skills — Slash commands defined as SKILL.md files with YAML frontmatter. Skills marked user-invocable: true appear as commands:

/add-e2e-tests <url> <feature>
/analyze-test-codebase [path]
/plan-test-coverage <url> <feature>

MCP Servers — A .mcp.json file in the plugin root exposes tools to the agent. Athena merges all plugin MCP configs into a single temp file passed to the harness at startup.

Directory Structure

my-plugin/
  .claude-plugin/
    plugin.json          # required — manifest
  skills/
    add-tests/
      SKILL.md           # skill definition
    analyze/
      SKILL.md
  .mcp.json              # optional — MCP server config
  workflow.json           # optional — auto-discovered workflow

The Manifest: .claude-plugin/plugin.json

{
  "name": "e2e-test-builder",
  "description": "Iterative workflow runner for adding Playwright E2E tests.",
  "version": "1.0.0",
  "author": { "name": "Your Name" },
  "repository": "https://github.com/..."
}
FieldTypeRequired
namestringYes
descriptionstringYes
versionstringYes
authorobjectNo
repositorystringNo

Skill Frontmatter

Each skills/<name>/SKILL.md uses YAML frontmatter:

---
name: add-e2e-tests
description: Full pipeline orchestrator for adding Playwright E2E tests
user-invocable: true
argument-hint: "<url> <feature>"
allowed-tools:
  - Read
  - Bash
  - Write
---
FieldTypeDescription
namestringSlash command name (add-e2e-tests/add-e2e-tests)
descriptionstringShown in help output
user-invocablebooleanIf true, appears as a user command. Default: false
argument-hintstringArgument description in help
allowed-toolsstring[]Tools this skill can use

The body below --- is the prompt template. Use $ARGUMENTS to interpolate user input.