home / skills / geoffjay / claude-plugins / documentation-update

documentation-update skill

/plugins/claude-plugin/skills/documentation-update

npx playbooks add skill geoffjay/claude-plugins --skill documentation-update

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

Files (6)
SKILL.md
9.8 KB
---
name: documentation-update
description: Regenerates documentation files (agents.md, agent-skills.md, plugins.md, usage.md) from marketplace data using Jinja templates. Use when plugins are added, updated, or removed to keep documentation in sync.
---

# Documentation Update Skill

This skill automatically regenerates documentation files in the `docs/` directory by reading the marketplace catalog and applying Jinja2 templates.

## Purpose

Maintain synchronized documentation by:

- Generating agent reference documentation
- Creating skill catalog documentation
- Building plugin directory
- Updating usage guides
- Ensuring consistency across all docs

## When to Use

Use this skill when:

- A new plugin is added to the marketplace
- An existing plugin is updated (components added/removed)
- Agent or skill metadata changes
- Documentation needs to be regenerated
- Ensuring docs match marketplace state

## Documentation Files

This skill generates four main documentation files:

### 1. agents.md

Complete reference of all agents across all plugins:

- Organized by plugin
- Lists agent name, description, and model
- Includes links to agent files
- Shows agent capabilities and use cases

### 2. agent-skills.md

Catalog of all skills with progressive disclosure details:

- Organized by plugin
- Lists skill name and description
- Shows "Use when" triggers
- Includes skill structure information

### 3. plugins.md

Directory of all plugins in the marketplace:

- Organized by category
- Shows plugin name, description, and version
- Lists components (agents, commands, skills)
- Provides installation and usage information

### 4. usage.md

Usage guide and command reference:

- Getting started instructions
- Command usage examples
- Workflow patterns
- Integration guides

## Template Structure

Templates are stored in `assets/` using Jinja2 syntax:

```
assets/
├── agents.md.j2
├── agent-skills.md.j2
├── plugins.md.j2
└── usage.md.j2
```

### Template Variables

All templates receive the following context:

```python
{
  "marketplace": {
    "name": "marketplace-name",
    "owner": {...},
    "metadata": {...},
    "plugins": [...]
  },
  "plugins_by_category": {
    "category-name": [plugin1, plugin2, ...]
  },
  "all_agents": [
    {
      "plugin": "plugin-name",
      "name": "agent-name",
      "file": "agent-file.md",
      "description": "...",
      "model": "..."
    }
  ],
  "all_skills": [
    {
      "plugin": "plugin-name",
      "name": "skill-name",
      "path": "skill-path",
      "description": "..."
    }
  ],
  "all_commands": [
    {
      "plugin": "plugin-name",
      "name": "command-name",
      "file": "command-file.md",
      "description": "..."
    }
  ],
  "stats": {
    "total_plugins": 10,
    "total_agents": 25,
    "total_commands": 15,
    "total_skills": 30
  }
}
```

## Python Script

The skill includes a Python script `doc_generator.py` that:

1. **Loads marketplace.json**

   - Reads the marketplace catalog
   - Validates structure
   - Builds component index

2. **Scans Plugin Files**

   - Reads agent/command frontmatter
   - Extracts skill metadata
   - Builds comprehensive component list

3. **Prepares Template Context**

   - Organizes plugins by category
   - Creates component indexes
   - Calculates statistics

4. **Renders Templates**
   - Applies Jinja2 templates
   - Generates documentation files
   - Writes to docs/ directory

### Usage

```bash
# Generate all documentation files
python doc_generator.py

# Generate specific file only
python doc_generator.py --file agents

# Dry run (show output without writing)
python doc_generator.py --dry-run

# Specify custom paths
python doc_generator.py \
  --marketplace .claude-plugin/marketplace.json \
  --templates plugins/claude-plugin/skills/documentation-update/assets \
  --output docs
```

## Integration with Commands

The `/claude-plugin:create` and `/claude-plugin:update` commands should invoke this skill automatically after marketplace updates:

### Workflow

```
1. Plugin operation completes (add/update/remove)
2. Marketplace.json is updated
3. Invoke documentation-update skill
4. Documentation files regenerated
5. Changes ready to commit
```

### Example Integration

```python
# After creating/updating plugin
print("Updating documentation...")

# Run doc generator
import subprocess
result = subprocess.run(
    ["python", "plugins/claude-plugin/skills/documentation-update/doc_generator.py"],
    capture_output=True,
    text=True
)

if result.returncode == 0:
    print("✓ Documentation updated")
else:
    print(f"❌ Documentation update failed: {result.stderr}")
```

## Template Examples

### agents.md.j2

```jinja2
# Agent Reference

This document lists all agents available across plugins in the marketplace.

{% for category, plugins in plugins_by_category.items() %}
## {{ category|title }}

{% for plugin in plugins %}
### {{ plugin.name }}

{{ plugin.description }}

**Agents:**

{% for agent in all_agents %}
{% if agent.plugin == plugin.name %}
- **{{ agent.name }}** (`{{ agent.model }}`)
  - {{ agent.description }}
  - File: `plugins/{{ plugin.name }}/agents/{{ agent.file }}`
{% endif %}
{% endfor %}

{% endfor %}
{% endfor %}

---
*Last updated: {{ now }}*
*Total agents: {{ stats.total_agents }}*
```

### agent-skills.md.j2

```jinja2
# Agent Skills Reference

This document catalogs all skills with progressive disclosure patterns.

{% for plugin in marketplace.plugins %}
## {{ plugin.name }}

{{ plugin.description }}

**Skills:**

{% for skill in all_skills %}
{% if skill.plugin == plugin.name %}
### {{ skill.name }}

{{ skill.description }}

- **Location:** `plugins/{{ plugin.name }}/skills/{{ skill.path }}/`
- **Structure:** SKILL.md + assets/ + references/

{% endif %}
{% endfor %}

{% endfor %}

---
*Last updated: {{ now }}*
*Total skills: {{ stats.total_skills }}*
```

## Error Handling

### Marketplace Not Found

```
Error: Marketplace file not found: .claude-plugin/marketplace.json
Suggestion: Ensure marketplace.json exists
```

### Template Not Found

```
Error: Template file not found: assets/agents.md.j2
Suggestion: Ensure all template files exist in assets/
```

### Invalid Plugin Structure

```
Warning: Plugin 'plugin-name' missing components
Suggestion: Verify plugin has agents or commands
```

### Frontmatter Parse Error

```
Warning: Could not parse frontmatter in agents/agent-name.md
Suggestion: Check YAML frontmatter syntax
```

## Best Practices

1. **Always Regenerate After Changes**

   - Run after every plugin add/update/remove
   - Ensure docs stay synchronized
   - Commit documentation with plugin changes

2. **Validate Before Generation**

   - Run marketplace validation first
   - Fix any errors or warnings
   - Ensure all files exist

3. **Review Generated Output**

   - Check generated files for correctness
   - Verify formatting and links
   - Test any code examples

4. **Template Maintenance**

   - Keep templates simple and readable
   - Use consistent formatting
   - Document template variables

5. **Version Control**
   - Commit documentation changes
   - Include in pull requests
   - Document significant changes

## Template Customization

### Adding New Sections

To add a new section to a template:

1. **Modify Template**

   ```jinja2
   ## New Section

   {% for plugin in marketplace.plugins %}
   ### {{ plugin.name }}
   [Your content here]
   {% endfor %}
   ```

2. **Update Context (if needed)**

   - Add new data to template context in doc_generator.py
   - Process additional metadata

3. **Test Output**
   - Run generator with dry-run
   - Verify formatting
   - Check for errors

### Creating New Templates

To add a new documentation file:

1. **Create Template**

   - Add `assets/newdoc.md.j2`
   - Define structure and content

2. **Update Script**

   - Add to doc_generator.py template list
   - Define output path

3. **Test Generation**
   - Run generator
   - Verify output
   - Commit template and output

## File Structure

```
plugins/claude-plugin/skills/documentation-update/
├── SKILL.md                      # This file
├── doc_generator.py              # Python implementation
├── assets/                       # Jinja2 templates
│   ├── agents.md.j2
│   ├── agent-skills.md.j2
│   ├── plugins.md.j2
│   └── usage.md.j2
└── references/                   # Optional examples
    └── template-examples.md
```

## Requirements

- Python 3.8+
- No external dependencies (uses standard library only)
- Access to `.claude-plugin/marketplace.json`
- Read access to plugin directories
- Write access to `docs/` directory

## Success Criteria

After running this skill:

- ✓ All documentation files generated
- ✓ Content matches marketplace state
- ✓ All links are valid
- ✓ Formatting is consistent
- ✓ Statistics are accurate
- ✓ No template rendering errors

## Maintenance

### Updating Templates

When marketplace structure changes:

1. **Assess Impact**

   - Identify affected templates
   - Determine required changes

2. **Update Templates**

   - Modify Jinja2 templates
   - Test with current data

3. **Update Script**

   - Adjust context preparation if needed
   - Add new data processing

4. **Validate Output**
   - Regenerate all docs
   - Review changes
   - Test links and formatting

### Version Compatibility

- Templates should handle missing fields gracefully
- Use Jinja2 default filters for optional data
- Validate marketplace version compatibility

## Example Output

The skill generates comprehensive, well-formatted documentation:

- **agents.md**: ~500-1000 lines for 20-30 agents
- **agent-skills.md**: ~300-600 lines for 30-50 skills
- **plugins.md**: ~400-800 lines for 10-20 plugins
- **usage.md**: ~200-400 lines of usage information

All files include:

- Clear structure and headings
- Formatted tables where appropriate
- Links to source files
- Statistics and metadata
- Last updated timestamp