What Is the Purpose of the `skills/` Directory in a Claude Code Plugin?
The skills/ directory serves as the central capability registry for Claude Code plugins, containing self-contained markdown definitions that automatically register as slash-commands.
Every Claude Code plugin in the anthropics/claude-plugins-community repository uses the skills/ directory as its functional core. This folder houses discrete capability definitions—each a standalone SKILL.md file within its own subfolder—that tell Claude Code exactly what commands to expose and how to execute them. When you install a plugin, Claude Code scans this directory, registers every skill ID (derived from the folder name), and makes them available as invocable tools like /tres-wallets-upload or /tres-onboarding.
Core Function: The skills/ Directory as a Capability Registry
The skills/ directory functions as the single source of truth for plugin functionality. Unlike traditional software where capabilities are buried in compiled code, Claude Code plugins expose every feature through declarative markdown documents stored in this folder.
Each subfolder under skills/ represents one atomic capability. For example, in the tres-finance-plugin, the path tres-finance-plugin/skills/tres-wallets-upload/SKILL.md defines the "wallets upload" skill, while tres-finance-plugin/skills/tres-asset-balance-validation/SKILL.md handles DeBank balance validation. This structure enables the "skills-only" plugin model (strict:false) prevalent throughout the marketplace, allowing Claude Code to load capabilities without requiring complex build steps or compiled binaries.
How Skill Discovery and Registration Works
Claude Code implements automatic discovery for the skills/ directory. When a plugin loads, the system iterates through every immediate subfolder, extracts the folder name as the skill ID, and parses the SKILL.md file for metadata.
According to the tres-finance-plugin/README.md Structure section, this registration process requires zero configuration beyond placing the markdown file in the correct location. The folder name becomes the slash-command trigger, enabling users to invoke tres-wallets-upload simply by typing /tres-wallets-upload in the chat interface. This convention-over-configuration approach ensures that adding capabilities is as simple as creating a new directory and documenting the skill behavior.
Anatomy of a Skill Definition
The SKILL.md Specification
Every skill in the skills/ directory is defined by a SKILL.md file that acts as both documentation and functional specification. This markdown document contains:
- Description and trigger phrases that tell Claude Code when to suggest the skill
- Required MCP connectors specifying which Model Context Protocol servers the skill needs
- Usage steps detailing the execution flow
- Parameter definitions for inputs like file paths or configuration options
Because capabilities are defined entirely in markdown, they remain version-controllable, human-readable, and reviewable through standard pull request processes without requiring compilation or build artifacts.
Reference Assets and Modularity
Skills can include optional reference assets—HTML templates, test data files, or utility scripts—stored alongside the SKILL.md within the skill folder. This modularity allows developers to update individual skills like tres-report-analyzer (which processes XLSX files) or tres-request-skill-update (which collects user feedback) without risk of breaking unrelated functionality. The self-contained nature of each skill folder means you can add, remove, or modify capabilities independently while the plugin remains operational.
Practical Usage: Invoking and Orchestrating Skills
Interactive Chat Commands
Once registered from the skills/ directory, skills become native slash-commands in Claude Code conversations. When a user mentions a relevant task, Claude Code suggests the appropriate skill from the registry:
User: I want to add my new crypto wallets to TRES Finance.
Claude: Sure! Let's run the /tres-wallets-upload skill.
Claude: /tres-wallets-upload
CLI Execution
You can also invoke skills directly from the terminal using the Claude CLI, specifying the skill ID that corresponds to the folder name in the skills/ directory:
# Install the plugin (once)
/plugin marketplace add tres-finance/tres-finance-plugin
# Execute the wallets-upload skill directly
claude skill run tres-wallets-upload --input-file wallets.csv
Skill Orchestration and Workflows
The skills/ directory also encodes workflow logic through orchestrator skills. Certain skills act as coordinators that invoke a sequence of other skills defined in sibling folders. The tres-onboarding skill demonstrates this pattern by running a pipeline of sub-skills:
# The onboarding skill internally runs a pipeline of sub-skills:
claude skill run tres-onboarding
# → tres-wallets-upload → tres-data-collection-commit → tres-asset-balance-validation → ...
This orchestration capability allows complex, multi-step operations to be defined declaratively across multiple SKILL.md files while maintaining clean separation of concerns.
Summary
- The
skills/directory is the central registry for all capabilities in a Claude Code plugin, located at the repository root. - Each subfolder represents one skill, with the folder name serving as the unique skill ID and slash-command trigger.
- The
SKILL.mdfile contains the complete specification—description, MCP connectors, usage steps, and parameters—enabling thestrict:falseskills-only plugin model. - Claude Code automatically discovers and registers every skill on plugin installation, requiring no manual configuration.
- Skills support orchestration patterns, where one skill can invoke others (like
tres-onboardingcallingtres-wallets-upload), enabling complex workflows. - The markdown-based approach ensures skills are version-controllable, self-documenting, and modular, allowing independent updates to individual capabilities.
Frequently Asked Questions
What file format defines a skill in the skills/ directory?
Each skill is defined by a SKILL.md file—a markdown document that contains the skill's description, trigger phrases, required MCP connectors, usage instructions, and parameter specifications. This file lives inside a subfolder named after the skill ID (e.g., skills/tres-wallets-upload/SKILL.md).
How does Claude Code discover new capabilities in a plugin?
Claude Code automatically scans the skills/ directory during plugin installation, registering every immediate subfolder as a distinct skill. The folder name becomes the skill ID and slash-command trigger. This discovery mechanism supports the "skills-only" (strict:false) model documented in the repository's README files.
Can skills depend on or call other skills?
Yes. The skills/ directory supports orchestration patterns where one skill invokes others. For example, the tres-onboarding skill acts as an orchestrator that executes a sequence of sub-skills including tres-wallets-upload, tres-data-collection-commit, and tres-asset-balance-validation to complete complex workflows.
What is the difference between strict:false and strict plugin models?
The strict:false model—used throughout the anthropics/claude-plugins-community repository—refers to the skills-only architecture where functionality is declared entirely in markdown files within the skills/ directory. This contrasts with traditional strict models that might require compiled code or complex manifests, allowing for simpler, declarative capability definitions that Claude Code can parse and execute directly.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →