Agent Skills: Plugin Dev Studio Workflow

Plugin Dev Studio workflow for hot-reload development, interactive testing, dependency visualization, and validation of Claude Code plugins. Covers the full plugin development lifecycle from scaffold to publish.

UncategorizedID: lobbi-docs/claude/devstudio

Install this agent skill to your local

pnpm dlx add-skill https://github.com/markus41/claude/tree/HEAD/plugins/marketplace-pro/skills/devstudio

Skill Files

Browse the full folder contents for devstudio.

Download Skill

Loading file tree…

plugins/marketplace-pro/skills/devstudio/SKILL.md

Skill Metadata

Name
devstudio
Description
Plugin Dev Studio workflow for hot-reload development, interactive testing, dependency visualization, and validation of Claude Code plugins. Covers the full plugin development lifecycle from scaffold to publish.

Plugin Dev Studio Workflow

Comprehensive development environment for building, testing, and validating Claude Code plugins with hot-reload support.

When to Use This Skill

Activate this skill when:

  • Developing a new plugin and need rapid iteration with live validation
  • Debugging plugin manifest or resource file issues
  • Visualizing plugin dependency graphs for architecture review
  • Building regression test suites for plugin commands
  • Preparing a plugin for publication to a registry

Architecture Overview

The Dev Studio consists of four core subsystems:

+------------------+     +---------------+     +-------------------+
|   FileWatcher    | --> |  HotReloader  | --> | Resource Registry |
| (FNV-1a hashing) |     | (Validation)  |     | (Live state)      |
+------------------+     +---------------+     +-------------------+
                                |
                                v
                     +--------------------+
                     | Console Reporter   |
                     | (file:line errors) |
                     +--------------------+

+-------------------+     +---------------------------+
| PluginPlayground  |     | DependencyGraphRenderer   |
| (Record/Replay)   |     | (ASCII + Mermaid output)  |
+-------------------+     +---------------------------+

FileWatcher

Monitors a plugin directory for file changes using filesystem watchers with content-hash-based change detection.

Key design decisions:

  • Uses FNV-1a (32-bit) hashing for speed — non-cryptographic, but extremely fast for small files
  • Only triggers reload when file content actually changed (ignores timestamp-only updates)
  • Debounces rapid changes with a 100ms window to batch editor save operations
  • Classifies files by resource type (command, skill, agent, config, source)

HotReloader

Processes file changes and maintains a live resource registry.

On each change:

  1. If manifest changed: re-read, re-validate JSON structure and required fields
  2. If markdown resource changed: re-lint frontmatter (YAML validity, required fields)
  3. Update resource registry: add new resources, update modified ones, remove deleted ones
  4. Report validation results with file:line references for inline error display

PluginPlayground

Isolated execution context for testing plugin commands.

Record-replay workflow:

  1. Register mock capabilities for external dependencies
  2. Execute commands and record full input/output pairs as fixtures
  3. Save fixtures to tests/fixtures/ as JSON
  4. Replay fixtures in CI to detect regressions

DependencyGraphRenderer

Builds and renders plugin dependency graphs.

Two output formats:

  • ASCII tree: Uses Unicode box-drawing characters for terminal display
  • Mermaid diagram: Pasteable into GitHub markdown, Notion, or Mermaid Live Editor

Development Workflow

Phase 1: Scaffold and Configure

# Create plugin structure
mkdir -p my-plugin/{commands,skills,agents,config,src,tests/fixtures}
mkdir -p my-plugin/.claude-plugin

# Create minimal manifest
cat > my-plugin/.claude-plugin/plugin.json << 'EOF'
{
  "name": "my-plugin",
  "version": "0.1.0",
  "description": "My new plugin",
  "contextEntry": "CONTEXT.md",
  "capabilities": {
    "provides": ["my-capability"],
    "requires": []
  }
}
EOF
# Create required operator runbook
cat > my-plugin/CLAUDE.md << 'EOF'
# My Plugin Guide

## Purpose
- Brief description of plugin intent.

## Supported Commands
- command-name (commands/command-name.md)

## Prohibited Actions
- List destructive or out-of-scope operations.

## Required Validation Checks
- npm run check:plugin-context
- npm run check:plugin-schema

## Context Budget
1. CONTEXT_SUMMARY.md
2. commands/index (or commands/)
3. README.md and only task-relevant deep docs

## Escalation Path
- Describe who reviews risky or blocking changes.
EOF

# Create operator context entrypoint (keep concise)
cat > my-plugin/CONTEXT.md << 'EOF'
# my-plugin Context

## Purpose
One-paragraph operator summary.

## Key Commands
- /my:command

## Agent Inventory
- my-agent

## Load Deeper Docs When
- You need implementation details or architecture rationale.
EOF

Phase 2: Develop with Hot-Reload

# Start the dev server with file watching
/mp:dev serve ./my-plugin --watch

The dev server will:

  • Validate the manifest on startup
  • Discover and register all commands, skills, and agents
  • Watch for file changes and re-validate on save
  • Show inline errors with file:line references

Phase 3: Test in Playground

# Launch interactive playground
/mp:dev playground ./my-plugin

# In the playground:
# > run /my:command "test input"
# > save my-test-case
# > log

Phase 4: Visualize Dependencies

# Show dependency graph
/mp:dev graph ./my-plugin

Review the ASCII tree to verify:

  • All capability declarations are correct
  • Inter-resource dependencies are properly linked
  • No circular dependencies exist

Phase 5: Validate Before Publish

# Full validation suite
/mp:dev validate ./my-plugin

Fix all errors before publishing. Warnings are advisory but should be addressed.

Phase 6: Regression Testing

# List saved fixtures
/mp:dev fixture list

# Replay a specific fixture
/mp:dev fixture replay my-test-case

Validation Rules

Manifest Validation (plugin.json)

| Rule | Severity | Description | |------|----------|-------------| | Valid JSON | error | File must be parseable JSON | | name field | error | Must be a non-empty string | | version field | error | Must be a non-empty string | | description field | error | Must be a non-empty string | | contextEntry field | error | Must reference CONTEXT.md or PLUGIN_CONTEXT.md | | CLAUDE.md present | error | Plugin root must include CLAUDE.md runbook | | capabilities present | warning | Plugin should declare capabilities | | capabilities.provides is array | error | Must be an array of strings | | capabilities.requires is array | error | Must be an array of strings |

Command/Skill Validation (.md files)

| Rule | Severity | Description | |------|----------|-------------| | Has frontmatter | error | Must start with --- | | Frontmatter closed | error | Must have closing --- | | name in frontmatter | error | Commands and skills must have a name | | description in frontmatter | warning | Should have a description | | Top-level heading | info | Should have # Title after frontmatter |

File Structure

plugin-root/
  .claude-plugin/
    plugin.json          # Plugin manifest (validated by HotReloader)
  CLAUDE.md              # Required operator runbook and context budget
  CONTEXT.md             # Minimal operator context entrypoint
  commands/
    *.md                 # Slash commands (validated for frontmatter)
  skills/
    */SKILL.md           # Skills (validated for frontmatter)
  agents/
    *.md                 # Agents (validated for frontmatter)
  config/
    *.json               # Configuration files
  src/
    devstudio/
      types.ts           # Type definitions
      server.ts          # FileWatcher, HotReloader, Playground, GraphRenderer
  tests/
    fixtures/
      *.json             # Recorded test fixtures (from playground)

Troubleshooting

Common Issues

"Plugin manifest not found"

  • Ensure .claude-plugin/plugin.json exists in the plugin root
  • Check that the path passed to /mp:dev is correct

"Missing YAML frontmatter"

  • Markdown resource files must start with --- on the first line
  • Frontmatter must be closed with a second --- line

"Content hash unchanged but file was modified"

  • The FileWatcher uses content hashing, not timestamps
  • If only whitespace changed, verify the hash actually differs
  • The FNV-1a hash has a very low (but non-zero) collision rate for small changes

"Fixture replay fails with empty output"

  • Playground execution is a simulation; real command execution requires the Claude runtime
  • Record the actual output using recordOutput() after command execution

Source Files

  • Types: src/devstudio/types.ts
  • Implementation: src/devstudio/server.ts
  • Command: commands/dev.md
  • This skill: skills/devstudio/SKILL.md

Skill version: 1.0 Module: dev-studio (marketplace-pro plugin)