home / skills / nikiforovall / claude-code-rules / update-component-reference

update-component-reference skill

/.claude/skills/update-component-reference

This skill adds documentation for Claude Code components to the Component Reference, ensuring new commands, agents, skills, hooks, or MCP servers are properly

npx playbooks add skill nikiforovall/claude-code-rules --skill update-component-reference

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
8.1 KB
---
name: update-component-reference
description: This skill should be used when the user wants to add components (commands, agents, skills, hooks, or MCP servers) to the Component Reference section of the website.
---

# Update Component Reference Skill

Add documentation for Claude Code components (commands, agents, skills, hooks, MCP servers) to the website's Component Reference section.

## When to Use

Use this skill when the user requests to:
- Add a new component to the Component Reference documentation
- Document a newly created command, agent, skill, hook, or MCP server
- Update component documentation in the reference section

## Prerequisites Checklist

Before documenting a component, ensure:

1. **Component exists** in the appropriate plugin directory:
   - Commands: `plugins/handbook/commands/{name}.md`
   - Agents: `plugins/handbook/agents/{name}.md`
   - Skills: `plugins/handbook/skills/{name}/SKILL.md`
   - Hooks: `plugins/{plugin-name}/hooks/hooks.json` and hook scripts
   - MCP Servers: `plugins/{plugin-name}/.mcp.json`

2. **For skills only**: Component is registered in plugin.json:
   ```json
   {
     "skills": [
       "./skills/skill-creator",
       "./skills/{new-skill-name}"
     ]
   }
   ```

3. **Verify plugin name**: Check `.claude-plugin/plugin.json` for the badge (e.g., "handbook", "handbook-dotnet")

## Implementation Process

### Step 1: Determine Target Directory

Component documentation goes in: `website/docs/component-reference/{type}/`

- Commands → `website/docs/component-reference/commands/`
- Agents → `website/docs/component-reference/agents/`
- Skills → `website/docs/component-reference/skills/`
- Hooks → `website/docs/component-reference/hooks/`
- MCP Servers → `website/docs/component-reference/mcp-servers/`

All category directories and `_category_.json` files already exist for these types.

### Step 2: Determine sidebar_position

Read existing `.mdx` files in the target directory to find the highest `sidebar_position` and add 1.

Example:
```bash
grep -h "sidebar_position:" website/docs/component-reference/skills/*.mdx | sort -n
```

### Step 3: Create Component Documentation File

**Filename convention**: Use kebab-case matching the component name
- Command `/commit` → `commit.mdx`
- Agent `@backend-architect` → `backend-architect.mdx`
- Skill `skill-creator` → `skill-creator.mdx`
- Hook `csharp-formatter` → `csharp-formatter.mdx`
- MCP Server `context7` → `context7.mdx`

### Step 4: Write MDX Content

Use the appropriate template based on component type:

#### Commands Template

```mdx
---
title: "/command-name"
sidebar_position: N
---

import CommandNameSource from '!!raw-loader!../../../../plugins/handbook/commands/command-name.md'
import CodeBlock from '@theme/CodeBlock';

# Use `/command-name`

<span className="badge badge--handbook">handbook</span>

Brief description of what this command does (1-2 sentences).

More detailed explanation of the command's purpose and benefits.

## Command Specification

<CodeBlock language="markdown">
{CommandNameSource}
</CodeBlock>

## Additional sections as needed
- Example usage
- Tips and tricks
- Related commands
```

#### Agents Template

```mdx
---
title: "@agent-name"
sidebar_position: N
---

import AgentNameSource from '!!raw-loader!../../../../plugins/handbook/agents/agent-name.md'
import CodeBlock from '@theme/CodeBlock';

# Use `@agent-name` agent

<span className="badge badge--handbook">handbook</span>

Brief description of what this agent specializes in (1-2 sentences).

More detailed explanation of the agent's capabilities and when to use it.

## Agent Specification

<CodeBlock language="markdown">
{AgentNameSource}
</CodeBlock>

## Additional sections as needed
- Key strengths
- Example use cases
- Related agents
```

#### Skills Template

```mdx
---
title: "skill-name"
sidebar_position: N
---

import SkillNameSource from '!!raw-loader!../../../../plugins/handbook/skills/skill-name/SKILL.md'
import CodeBlock from '@theme/CodeBlock';

# Use `skill-name` skill

<span className="badge badge--handbook">handbook</span>

Brief description of what this skill provides (1-2 sentences).

More detailed explanation of the skill's purpose and capabilities.

## When to Use This Skill

Use the `skill-name` skill when you want to:

- Primary use case
- Secondary use case
- Additional scenarios

## Skill Specification

<CodeBlock language="markdown">
{SkillNameSource}
</CodeBlock>

## Additional sections as needed
- Key concepts
- Example workflows
- Related skills
```

#### Hooks Template

```mdx
---
title: "Hook Name"
sidebar_position: N
---

# Hook Name

<span className="badge badge--{plugin-name}">{plugin-name}</span>

Brief description (1-2 sentences).

## Configuration

```json
{ hook config from hooks.json }
```

## Use Cases

- Bullet points

## Installation

Setup notes.

## Related

- Links
```

#### MCP Servers Template

```mdx
---
title: "server-name"
sidebar_position: N
---

# Server Name MCP Server

<span className="badge badge--{plugin-name}">{plugin-name}</span>

Brief description (1-2 sentences).

## Configuration

```json
{ config from .mcp.json }
```

## Coverage

- Bullet list

## Example Usage

```
"Example query"
```

## Installation

Setup notes.

## Related

- Links
```

### Step 5: Verify Import Paths (Commands, Agents, Skills Only)

**Note**: Hooks and MCP Servers show configuration directly (no raw-loader imports needed).

For commands, agents, and skills, double-check the raw-loader import path:

- Commands: `'!!raw-loader!../../../../plugins/handbook/commands/{name}.md'`
- Agents: `'!!raw-loader!../../../../plugins/handbook/agents/{name}.md'`
- Skills: `'!!raw-loader!../../../../plugins/handbook/skills/{name}/SKILL.md'` ⚠️ Note the `/SKILL.md` suffix

The path goes up 4 directories (`../../../../`) from the `.mdx` file to reach the repo root.

## Common Pitfalls

1. **Forgetting plugin.json registration for skills**
   - Skills MUST be in plugin.json or they won't be available
   - Commands, agents, hooks, and MCP servers are auto-discovered

2. **Incorrect import paths**
   - Skills use `/SKILL.md` suffix: `skills/{name}/SKILL.md`
   - Commands and agents use `.md` directly: `commands/{name}.md`
   - Hooks and MCP servers don't use raw-loader (show config directly)

3. **Wrong relative path depth (commands, agents, skills only)**
   - Always use 4 levels up: `../../../../`
   - Path starts from the `.mdx` file location

4. **Inconsistent naming**
   - File names should match component names exactly (kebab-case)
   - Title in frontmatter should include prefix (`/` for commands, `@` for agents)

5. **Wrong plugin badge**
   - Badge class follows pattern: `badge--{plugin-name}`
   - Badge text is the plugin name (e.g., "handbook", "handbook-dotnet")

## Quick Reference

### Import Variable Naming Convention (Commands, Agents, Skills)
Match the component name in PascalCase + "Source":
- `commit.md` → `CommitCommandSource`
- `backend-architect.md` → `BackendArchitectAgentSource`
- `skill-creator/SKILL.md` → `SkillCreatorSource`

**Note**: Hooks and MCP servers don't use imports.

### Badge
Badge format: `<span className="badge badge--{plugin-name}">{plugin-name}</span>`

Examples:
- handbook: `<span className="badge badge--handbook">handbook</span>`
- handbook-dotnet: `<span className="badge badge--handbook-dotnet">handbook-dotnet</span>`

## Adding a New Plugin

When documenting components from a **new plugin**, also update:

1. **Badge CSS**: Add style to `website/src/css/custom.css` (pick unique color)
2. **Plugin index**: Add entry to `website/docs/plugins.md` (both main list and Direct Installation section)

## Example Workflow

**User**: "Add the new @pair-programmer agent to the documentation"

1. **Verify** component exists: `plugins/handbook/agents/pair-programmer.md` ✓
2. **Check** it's an agent (auto-discovered, no plugin.json needed) ✓
3. **Find** next sidebar_position in `website/docs/component-reference/agents/`
4. **Create** `website/docs/component-reference/agents/pair-programmer.mdx`
5. **Write** content using agent template
6. **Import** using: `'!!raw-loader!../../../../plugins/handbook/agents/pair-programmer.md'`
7. **Verify** documentation renders correctly

Overview

This skill adds or updates Component Reference entries for Claude Code components (commands, agents, skills, hooks, or MCP servers) in the website docs. It ensures files are created with correct filenames, frontmatter, import paths, and sidebar ordering so components render consistently in the reference section. Use it to keep the Component Reference accurate and discoverable.

How this skill works

The skill verifies the component exists in the appropriate plugin directory, selects the correct target directory under website/docs/component-reference/{type}/, and determines the next sidebar_position by scanning existing files. It creates a kebab-case .mdx file using the correct template for commands, agents, skills, hooks, or MCP servers and verifies raw-loader import paths for commands, agents, and skills. It also highlights common pitfalls to avoid (import paths, registration, badges, naming).

When to use it

  • Add a new command, agent, skill, hook, or MCP server to the Component Reference
  • Document or update a newly created component’s public documentation
  • Fix incorrect import paths or sidebar_position ordering for a component entry
  • Add a component from a new plugin and update badge and plugin index info

Best practices

  • Confirm the component file exists in the plugin folder before creating the .mdx entry
  • Use kebab-case for filenames and include the correct prefix in frontmatter title ("/" for commands, "@" for agents)
  • Scan existing .mdx files to determine the highest sidebar_position and add 1
  • Use raw-loader import paths for commands, agents, and skills with a relative path up four levels
  • For skills, ensure the component is registered in plugin.json so it is discoverable
  • Apply the correct badge class and add plugin CSS and plugin index entries when documenting a new plugin

Example use cases

  • Add website/docs/component-reference/commands/commit.mdx for a new /commit command and import its markdown via raw-loader
  • Document @backend-architect by creating website/docs/component-reference/agents/backend-architect.mdx and embedding the agent source
  • Create website/docs/component-reference/skills/skill-creator.mdx and import skills/{name}/SKILL.md, verifying plugin.json registration
  • Document a hook by creating website/docs/component-reference/hooks/csharp-formatter.mdx and embedding hooks.json config directly
  • Add an MCP server entry with configuration shown from .mcp.json and include installation and example usage

FAQ

What import path should I use for a skill source?

Use '!!raw-loader!../../../../plugins/handbook/skills/{skill-name}/SKILL.md' — note the SKILL.md suffix and four-level relative path.

Do hooks and MCP servers use raw-loader imports?

No. Hooks and MCP servers display configuration directly (copy JSON from hooks.json or .mcp.json) and do not use raw-loader imports.