Analysis of PR #24, the Agent Skills specification, and CLI-wrapping skill patterns across the ecosystem.
- Executive Summary
- PR #24 Analysis
- The Agent Skills Specification (Authoritative Source)
- Anthropic's Official Best Practices
- Ecosystem Survey: CLI-Wrapping Skills
- Comparative Analysis: Single-File vs Multi-File
- Verdict on PR #24 Changes
- References
PR #24 proposes consolidating agent-slack's skill from 4 files (SKILL.md + 3 reference docs) into a single self-contained SKILL.md with install instructions and a unified command reference. Based on authoritative sources -- the official Agent Skills Specification at agentskills.io and Anthropic's published best practices -- the PR's direction is partially correct but goes too far in consolidation.
Key findings:
| Change in PR #24 | Verdict | Reasoning |
|---|---|---|
| Added install instructions | Correct | Best practices say "don't assume tools are installed" |
| One big command reference block | Partially wrong | Spec recommends < 500 lines in SKILL.md; detailed refs belong in references/ |
| Removed reference files entirely | Wrong | Spec explicitly defines references/ as a supported directory; progressive disclosure is a core design principle |
| Split auth by platform | Correct | Clearer for cross-platform users |
PR: stablyai/agent-slack#24 - "fix[skill]: consolidate into single self-contained SKILL.md" Author: TimPietrusky
- Added install instructions --
curlone-liner +npm i -gso agents can guide users through installation - Split auth by platform -- macOS (automatic) vs Linux/Windows (manual) with clear headings
- Added parse-curl auth guide -- step-by-step DevTools instructions
- One big command reference block -- every command as a commented one-liner (cites runpodctl skill as precedent)
- Merged reference docs -- targets, output shapes, and flags all inlined into SKILL.md
- Removed reference files -- deleted
commands.md,targets.md,output.md
"Agents load one file and have everything they need -- no cross-referencing. Easier to maintain -- one place to update."
SKILL.md: 116 lines (workflow-focused, references 3 external docs)references/commands.md: 85 lines (full command map with all flags)references/targets.md: 53 lines (URL vs channel targeting)references/output.md: 39 lines (JSON output shapes)- Total: ~293 lines across 4 files
SKILL.md: ~180 lines (everything inlined)- No reference files
- Total: ~180 lines in 1 file
Source: agentskills.io/specification (the official open standard, originally developed by Anthropic)
The spec defines skills as a directory with a required SKILL.md and explicitly supports optional directories:
skill-name/
├── SKILL.md # Required
├── scripts/ # Optional: executable code
├── references/ # Optional: additional documentation
└── assets/ # Optional: static resources
The spec defines a three-tier context loading model:
- Metadata (~100 tokens):
nameanddescriptionloaded at startup for ALL skills - Instructions (< 5000 tokens recommended): Full
SKILL.mdbody loaded when skill activates - Resources (as needed): Files in
scripts/,references/,assets/loaded only when required
"Keep your main SKILL.md under 500 lines. Move detailed reference material to separate files." -- agentskills.io/specification
The spec explicitly describes references/ as an optional directory:
"Contains additional documentation that agents can read when needed:
REFERENCE.md- Detailed technical referenceFORMS.md- Form templates or structured data formats- Domain-specific files (
finance.md,legal.md, etc.)Keep individual reference files focused. Agents load these on demand, so smaller files mean less use of context."
"Keep file references one level deep from SKILL.md. Avoid deeply nested reference chains."
This means SKILL.md -> references/commands.md is fine. SKILL.md -> references/advanced.md -> references/details.md is not.
Source: platform.claude.com - Skill authoring best practices
"The context window is a public good. Your Skill shares the context window with everything else Claude needs to know."
"Default assumption: Claude is already very smart. Only add context Claude doesn't already have."
Anthropic explicitly recommends Pattern 1: High-level guide with references:
# PDF Processing
## Quick start
[essential content here]
## Advanced features
**Form filling**: See [FORMS.md](FORMS.md) for complete guide
**API reference**: See [REFERENCE.md](REFERENCE.md) for all methods"Claude loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed."
"Keep SKILL.md body under 500 lines for optimal performance. If your content exceeds this, split it into separate files."
"Don't assume packages are available... Explicit about dependencies."
The best practices include an explicit anti-pattern:
Bad: "Use the pdf library to process the file."
Good: "Install required package:
pip install pypdf"
"Structure longer reference files with table of contents. For reference files longer than 100 lines, include a table of contents at the top."
This confirms reference files are expected and supported -- they just need good structure.
- SKILL.md body is under 500 lines
- Additional details are in separate files (if needed)
- File references are one level deep
- Progressive disclosure used appropriately
- Repo: runpod/skills/runpodctl
- Structure: Single
SKILL.md(~80 lines) - Install instructions: No (assumes CLI already installed)
- Command reference: Concise commented one-liners grouped by category
- Why single-file works: runpodctl has ~25 commands with simple flags. The entire reference fits in ~60 lines.
- Location:
~/.agents/skills/agent-browser/SKILL.md - Structure: Multi-file (SKILL.md + 6 reference docs + 3 templates)
- SKILL.md: 218 lines (core workflow + essential commands)
- References:
commands.md,snapshot-refs.md,session-management.md,authentication.md,video-recording.md,proxy-support.md - Install instructions: Platform-specific (Appium for iOS)
- Why multi-file works: agent-browser has deep features (sessions, state persistence, iOS, proxies, video recording) that would bloat SKILL.md past 500 lines
- Location:
~/.agents/skills/agent-slack/SKILL.md - Structure: Multi-file (SKILL.md + 3 reference docs)
- SKILL.md: 116 lines (workflow-focused)
- References:
commands.md(85 lines),targets.md(53 lines),output.md(39 lines) - Install instructions: No (assumes pre-installed)
- Repo: vercel-labs/skills/find-skills
- Structure: Single
SKILL.md(134 lines) - Install instructions: Describes
npx skills addfor installing other skills - Command reference: 4 key commands (
find,add,check,update)
- Repo: anthropics/skills/mcp-builder
- Structure: Multi-file (SKILL.md +
reference/dir +scripts/dir) - References:
reference/mcp_best_practices.md,reference/node_mcp_server.md,reference/python_mcp_server.md,reference/evaluation.md - Why multi-file: Complex 4-phase workflow with language-specific docs
From github.com/anthropics/skills:
| Skill | Type | Structure |
|---|---|---|
| algorithmic-art | Knowledge | Single file |
| brand-guidelines | Knowledge | Single file |
| canvas-design | Knowledge | Single file |
| doc-coauthoring | Workflow | Multi-file |
| docx | CLI/Tool | Multi-file (scripts + references) |
| frontend-design | Knowledge | Single file |
| internal-comms | Knowledge | Single file |
| mcp-builder | Workflow | Multi-file (reference/ + scripts/) |
| CLI/Tool | Multi-file (scripts + references) | |
| pptx | CLI/Tool | Multi-file |
| skill-creator | Meta | Single file |
| slack-gif-creator | Workflow | Single file |
| theme-factory | Knowledge | Single file |
| web-artifacts-builder | Workflow | Single file |
| webapp-testing | Workflow | Single file |
| xlsx | CLI/Tool | Multi-file |
Pattern: Knowledge/guideline skills tend to be single-file. Tool-wrapping and complex workflow skills are multi-file.
skills.sh -- "The Open Agent Skills Ecosystem" by Vercel -- lists 200+ skills. The platform is compatible with 27+ agent products including Claude Code, Cursor, Windsurf, VS Code, GitHub Copilot, Goose, Gemini CLI, OpenAI Codex, Roo Code, Amp, and more.
Compatible agents from the skills.sh homepage: Claude Code, Cursor, Windsurf, VS Code, GitHub Copilot, Goose, Gemini CLI, OpenAI Codex, Roo Code, Amp, Factory, Firebender, Letta, OpenCode, Mux, Piebald, Autohand, TRAE, Spring AI, Qodo, Agentman, Command Code, VT Code, Ona, Databricks, Mistral Vibe, pi
- Simple CLI tools with < 25 commands and minimal flags (e.g., runpodctl)
- Knowledge skills that are purely instructional (e.g., frontend-design)
- Total content fits under 500 lines (the spec's recommended limit)
- No domain-specific reference material that would be loaded conditionally
- Complex CLI tools with many commands, modes, and flags
- Content exceeds 500 lines when fully detailed
- Different reference domains that should be loaded independently (e.g., targets vs output shapes vs command flags)
- Progressive disclosure provides real savings -- agent doesn't need ALL reference material for most tasks
agent-slack has:
- 8 command groups (auth, message get/list/send/edit/delete, react, search, channel, canvas, user)
- Complex targeting rules (URL vs channel vs channel ID, workspace disambiguation)
- Detailed output shapes (message, thread, search, channel admin)
- Per-command flags (many commands have 5-8 flags each)
- Platform-specific auth flows
Full detail would be 300+ lines. The current 293 lines across 4 files is well-organized. The proposed single-file at ~180 lines achieves brevity by dropping detail, not by being more efficient.
This is correct per Anthropic's best practices:
"Don't assume packages are available... Explicit about dependencies."
agent-slack is a CLI binary that must be installed. The skill should tell agents how to guide users through installation. The curl script + npm i -g approach is appropriate.
Recommendation: Include install instructions, but keep them concise (5-10 lines max).
The PR cites runpodctl as precedent, but the comparison is flawed:
| runpodctl | agent-slack | |
|---|---|---|
| Commands | ~25, simple flags | 15+, complex flags per command |
| Targeting modes | None | URL vs channel vs ID (complex rules) |
| Output shapes | Simple | Multiple shapes per command group |
| Auth flows | API key only | 5+ methods, platform-specific |
| Total reference | ~60 lines | ~177 lines |
runpodctl's entire reference fits in ~60 lines. agent-slack's doesn't.
The spec is clear:
"Keep your main SKILL.md under 500 lines. Move detailed reference material to separate files."
Recommendation: Keep a "quick reference" in SKILL.md (like the current approach) with commented one-liners for common operations. Keep detailed flag documentation in references/commands.md.
The spec explicitly supports references/:
"Contains additional documentation that agents can read when needed... Agents load these on demand, so smaller files mean less use of context."
The current structure provides real progressive disclosure benefits:
- When an agent needs to send a message, it only needs the SKILL.md workflow section
- When it needs to understand URL vs channel targeting, it loads
targets.md - When it needs output shape details, it loads
output.md - It rarely needs ALL three at once
Inlining everything means the agent always loads everything, wasting context window budget.
Recommendation: Keep the reference files. Improve them if needed (add TOCs per the best practices), but don't delete them.
Clear platform-specific sections (macOS auto-detect vs Linux/Windows manual) are better than the current "fallback" wording.
Useful for Linux/Windows users, but consider putting detailed DevTools instructions in a reference file rather than the main SKILL.md, since most macOS users won't need it.
Based on the spec and best practices, the ideal agent-slack skill structure would be:
agent-slack/
├── SKILL.md # ~150-200 lines: install, auth, workflows, quick reference
└── references/
├── commands.md # Full command map with all flags
├── targets.md # URL vs channel targeting rules
└── output.md # JSON output shapes + download paths
- Add install instructions to SKILL.md (from PR #24)
- Add platform-specific auth sections (from PR #24)
- Keep reference files (reject PR #24's deletion)
- Add TOC to each reference file (per best practices)
- Add a concise "quick command reference" to SKILL.md (commented one-liners for the most common 10 commands)
- Keep the "References" links section at the bottom of SKILL.md
-
Agent Skills Specification (the canonical format spec) https://agentskills.io/specification
-
What Are Skills? (overview from agentskills.io) https://agentskills.io/what-are-skills
-
Anthropic - Skill Authoring Best Practices (official best practices from Anthropic) https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices
-
Anthropic Skills Repository (16 official example skills) https://github.com/anthropics/skills
-
Agent Skills Standard (open standard GitHub repo) https://github.com/agentskills/agentskills
-
skills.sh -- The Open Agent Skills Ecosystem (200+ skills directory) https://skills.sh
-
RunPod Skills (CLI-wrapping skill example) https://github.com/runpod/skills/blob/main/runpodctl/SKILL.md
-
Anthropic mcp-builder (multi-file skill with references/) https://github.com/anthropics/skills/blob/main/skills/mcp-builder/SKILL.md
-
Anthropic frontend-design (single-file knowledge skill) https://github.com/anthropics/skills/blob/main/skills/frontend-design/SKILL.md
- PR #24 -- "fix[skill]: consolidate into single self-contained SKILL.md" stablyai/agent-slack#24