How to Create a Custom Slash Command to Invoke a Skill in Claude Financial Services

Create a markdown file in plugins/vertical-plugins/<vertical>/commands/<name>.md with YAML frontmatter declaring the description and argument hint, followed by a directive to load the target skill, and commit it—no build step or code changes required.

The anthropics/financial-services repository implements a plugin architecture where slash commands act as the primary entry point for triggering specific skills within Claude Cowork sessions. These commands are declarative markdown files that map user input (e.g., /tlh) to skill implementations without requiring compilation or deployment. This guide explains the exact file structure, content format, and registration process needed to create a working custom slash command.

Understanding the Command Architecture

In the financial-services framework, commands and skills are decoupled components connected by convention-based file paths. The runtime discovers commands by scanning the commands/ directory within each vertical plugin.

The architecture follows this flow:

  1. User input: Typing /command-name in the chat interface
  2. File resolution: The runtime locates plugins/vertical-plugins/<vertical>/commands/command-name.md
  3. Manifest parsing: The YAML frontmatter provides metadata (description, argument hints)
  4. Skill delegation: The markdown body instructs the system to load a specific skill from plugins/vertical-plugins/<vertical>/skills/<skill-name>/SKILL.md
  5. Execution: The skill logic runs with any provided arguments streamed back to the user

This design means adding a new command is purely a file-creation operation.

Step-by-Step: Creating a Custom Slash Command

1. Create the Command Definition File

Navigate to your vertical's commands directory (e.g., plugins/vertical-plugins/wealth-management/commands/) and create a new markdown file. The filename determines the command name—quick-review.md creates the /quick-review command.

Every command file requires two sections:

  • YAML frontmatter: Contains description and optional argument-hint
  • Body content: Contains the instruction to load the specific skill
---
description: Run a quick client review
argument-hint: "[client name]"
---
Load the `client-review` skill to generate a concise review of the indicated client’s portfolio.

The runtime parses the frontmatter to populate UI help text, while the body text triggers the skill resolution.

2. Verify the Skill Implementation Path

Ensure the skill referenced in your command file exists at the expected path:


plugins/vertical-plugins/<vertical>/skills/<skill-name>/SKILL.md

For the example above, the file must exist at:


plugins/vertical-plugins/wealth-management/skills/client-review/SKILL.md

The skill file itself contains its own YAML frontmatter declaring arguments it accepts:

---
description: Prepare a client-review briefing pack
arguments:
  - client
  - account
---
... (skill logic) ...

The runtime automatically maps arguments from the slash command invocation to the skill's declared parameters.

3. Register the Vertical Plugin

Confirm that your vertical contains a valid plugin manifest at:


plugins/vertical-plugins/<vertical>/.claude-plugin/plugin.json

This JSON file registers the vertical with the runtime, enabling discovery of its commands and skills subdirectories. Without this manifest, the commands directory will not be scanned.

4. Update the Marketplace Documentation (Optional)

To surface the new command in the plugin catalog, add an entry to the top-level README.md in the "Vertical Plugins" table:

| Plugin | What it adds |
|---|---|
| **[wealth-management](plugins/vertical-plugins/wealth-management)** | `/quick-review` – fast client review, `/tlh` – tax-loss harvesting |

After committing changes, run the repository lint script to validate the manifest:

python3 scripts/check.py

Working Examples from the Repository

The wealth-management vertical provides two canonical implementations demonstrating this pattern.

Tax-Loss Harvesting Command

File: plugins/vertical-plugins/wealth-management/commands/tlh.md

This command loads the tax-loss-harvesting skill. It demonstrates standard frontmatter structure and concise skill invocation.

Portfolio Rebalance Command

File: plugins/vertical-plugins/wealth-management/commands/rebalance.md

This command invokes the portfolio-rebalance skill, showing how commands map to distinct skill implementations within the same vertical.

Both files follow the identical structure: YAML metadata followed by a single-line instruction to load the corresponding skill by exact folder name.

Summary

  • Custom slash commands are markdown files placed in plugins/vertical-plugins/<vertical>/commands/<name>.md
  • Each command requires YAML frontmatter with description and optional argument-hint
  • The file body must contain Load the \` skill` to trigger the correct implementation
  • Skills reside at plugins/vertical-plugins/<vertical>/skills/<skill-name>/SKILL.md
  • No build step or application restart is required—commands are active immediately upon commit
  • Update README.md and run python3 scripts/check.py to publish the command to the marketplace

Frequently Asked Questions

Do slash commands support passing arguments to skills?

Yes. Include an argument-hint in the command file's YAML frontmatter (e.g., argument-hint: "[client name]"). When users type /quick-review Alice, the runtime passes "Alice" to the skill's declared arguments list as defined in the skill's own SKILL.md frontmatter.

Can one slash command invoke multiple skills?

No. Each command file targets exactly one skill via the Load the \` skill` directive. To chain multiple operations, create a composite skill that orchestrates sub-tasks, or create separate slash commands for each discrete skill.

What happens if the skill folder name does not match the command file reference?

The runtime will fail to resolve the skill and return an error. The skill name inside the command file's body (the text between the backticks after Load the) must exactly match the folder name containing SKILL.md under the skills/ directory, including hyphenation and casing.

Is a plugin manifest required for every vertical?

Yes. Each vertical must contain a plugin.json file at plugins/vertical-plugins/<vertical>/.claude-plugin/plugin.json. This manifest registers the vertical with the Claude Cowork platform, enabling the runtime to discover and index its commands and skills directories.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →