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

> Create a custom slash command to invoke a skill in Claude Financial Services. Add a markdown file with YAML frontmatter, no code changes needed. Learn how now.

- Repository: [Anthropic/financial-services](https://github.com/anthropics/financial-services)
- Tags: how-to-guide
- Published: 2026-05-07

---

**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`](https://github.com/anthropics/financial-services/blob/main/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

```markdown
---
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:

```markdown
---
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`](https://github.com/anthropics/financial-services/blob/main/README.md) in the "Vertical Plugins" table:

```markdown
| 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:

```bash
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`](https://github.com/anthropics/financial-services/blob/main/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`](https://github.com/anthropics/financial-services/blob/main/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-name>\` 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`](https://github.com/anthropics/financial-services/blob/main/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`](https://github.com/anthropics/financial-services/blob/main/SKILL.md) frontmatter.

### Can one slash command invoke multiple skills?

No. Each command file targets exactly one skill via the `Load the \`<skill-name>\` 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`](https://github.com/anthropics/financial-services/blob/main/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`](https://github.com/anthropics/financial-services/blob/main/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.