output-style-to-plugin
This skill should be used when converting deprecated Claude Code output styles (.md files) into the new plugin format. It automates the entire conversion process including creating plugin structure, generating configuration files, and setting up local marketplace for testing.
What this skill does
Convert deprecated Claude Code output style markdown files into properly structured plugins using SessionStart hooks. This skill handles the complete conversion process automatically, requiring only essential information from the user.
## When to Use This Skill
Use this skill when:
- Converting an existing output style `.md` file to plugin format
- Migrating from the deprecated `outputStyle` configuration to the plugin system
- Setting up a new plugin-based output style from scratch
- User asks to "convert output style to plugin" or similar migration requests
## Conversion Workflow
### Step 1: Gather Required Information
Ask the user for essential information before starting the conversion. Use the AskUserQuestion tool to collect:
1. **Output Style File**: Path to the existing output style `.md` file
2. **Plugin Name**: Identifier for the plugin (suggest kebab-case version of file name)
3. **Plugin Description**: Brief description (can extract from output style frontmatter if present)
4. **Version**: Default to "1.0.0" for initial conversion
5. **Author Name**: Plugin author's name
6. **Author Email** (optional): Author's email address
**Example questions**:
```
Question: "What is the path to your output style markdown file?"
Question: "What would you like to name this plugin? (e.g., 'my-output-style')"
Question: "Brief description of this output style?"
Question: "Author name for the plugin?"
Question: "Author email? (optional, press Enter to skip)"
```
### Step 2: Check for Existing Marketplace
Before creating a new marketplace, check if the user has an existing marketplace they want to use:
1. Ask: "Do you have an existing marketplace you'd like to add this plugin to?"
2. If yes:
- Ask for marketplace path
- Read the existing `marketplace/.claude-plugin/marketplace.json`
- Extract marketplace name and owner information
- Plan to add plugin entry to existing plugins array
3. If no:
- Collect marketplace information:
- Marketplace name (suggest based on user context)
- Owner name (suggest same as plugin author)
- Owner email (suggest same as plugin author email)
- Plan to create new marketplace structure
### Step 3: Create Plugin Directory Structure
Create the complete plugin structure in the appropriate location:
```
If new marketplace:
marketplace/
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
└── {plugin-name}/
├── .claude-plugin/
│ └── plugin.json
├── hooks/
│ └── hooks.json
├── hooks-handlers/
│ └── session-start.sh
├── {output-style}.md
└── README.md
If existing marketplace:
{marketplace-path}/
└── plugins/
└── {plugin-name}/
├── .claude-plugin/
│ └── plugin.json
├── hooks/
│ └── hooks.json
├── hooks-handlers/
│ └── session-start.sh
├── {output-style}.md
└── README.md
```
Use `mkdir -p` to create all necessary directories in a single operation.
### Step 4: Generate Configuration Files
Generate all required configuration files using the templates in `assets/`:
#### 4.1 plugin.json
Use `assets/plugin.json.template` and replace:
- `{{PLUGIN_NAME}}`: Plugin name from user input
- `{{VERSION}}`: Version from user input (default "1.0.0")
- `{{DESCRIPTION}}`: Plugin description from user input
- `{{AUTHOR_NAME}}`: Author name from user input
- `{{AUTHOR_EMAIL}}`:
- If email provided: `,\n "email": "[email protected]"`
- If no email: empty string (remove the line)
#### 4.2 hooks.json
Use `assets/hooks.json.template` directly - no substitutions needed.
**Critical**: This file must follow exact structure:
```json
{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks-handlers/session-start.sh"
}
]
}
]
}
}
```
#### 4.3 session-start.sh
Use `assets/session-start.sh.template` and replace:
- `{{OUTPUT_STYLE_FILENAME}}`: Base name of the output style markdown file
Make the script executable:
```bash
chmod +x hooks-handlers/session-start.sh
```
#### 4.4 marketplace.json
If creating new marketplace, use `assets/marketplace.json.template` and replace:
- `{{MARKETPLACE_NAME}}`: Marketplace name from user input
- `{{OWNER_NAME}}`: Owner name from user input
- `{{OWNER_EMAIL}}`: Owner email from user input
- `{{MARKETPLACE_DESCRIPTION}}`: Marketplace description from user input
- `{{PLUGIN_NAME}}`: Plugin name
- `{{PLUGIN_DESCRIPTION}}`: Plugin description
- `{{VERSION}}`: Plugin version
If updating existing marketplace:
- Read existing marketplace.json
- Add new plugin entry to `plugins` array
- Write updated content back
#### 4.5 README.md
Use `assets/README.md.template` and replace:
- `{{PLUGIN_NAME}}`: Plugin name
- `{{DESCRIPTION}}`: Plugin description
- `{{MARKETPLACE_PATH}}`: Full path to marketplace directory
- `{{MARKETPLACE_NAME}}`: Marketplace name
- `{{OUTPUT_STYLE_FILENAME}}`: Output style filename
- `{{PLUGIN_PATH}}`: Full path to plugin directory
- `{{VERSION}}`: Plugin version
- `{{AUTHOR_NAME}}`: Author name
- `{{AUTHOR_EMAIL_LINE}}`:
- If email provided: `\n\n{{AUTHOR_EMAIL}}`
- If no email: empty string
### Step 5: Copy Output Style Content
Copy the output style markdown file to the plugin directory:
```bash
cp {source-path}/{output-style}.md {plugin-path}/{output-style}.md
```
Preserve the original filename to maintain clarity about the content source.
### Step 6: Verify Installation
After creating all files, provide installation instructions:
```
1. Add marketplace (if new):
/plugin marketplace add {marketplace-path}
2. Install plugin:
/plugin install {plugin-name}@{marketplace-name}
3. Restart Claude Code or start new session
```
Also inform the user:
- How to modify the output style (edit the `.md` file)
- That changes take effect in new sessions without reinstallation
- How to uninstall if needed
### Step 7: Validate Structure
After creating all files, perform basic validation:
1. Check all required files exist:
- `.claude-plugin/plugin.json`
- `hooks/hooks.json`
- `hooks-handlers/session-start.sh`
- Output style markdown file
- `README.md`
2. Verify JSON files are valid:
- Parse each JSON file to check syntax
- Report any parsing errors immediately
3. Check script permissions:
- Ensure `session-start.sh` is executable
4. Verify marketplace.json structure:
- Check required fields: name, owner, plugins
- Verify plugin source path starts with `./`
If any validation fails, report the specific issue and suggest fixes.
## Template Variable Reference
Quick reference for template substitutions:
### Plugin Configuration
- `{{PLUGIN_NAME}}`: Kebab-case plugin identifier
- `{{VERSION}}`: Semantic version (e.g., "1.0.0")
- `{{DESCRIPTION}}`: Brief plugin description
- `{{AUTHOR_NAME}}`: Author's name
- `{{AUTHOR_EMAIL}}`: Author's email (optional)
### Marketplace Configuration
- `{{MARKETPLACE_NAME}}`: Marketplace identifier
- `{{OWNER_NAME}}`: Marketplace owner name
- `{{OWNER_EMAIL}}`: Marketplace owner email
- `{{MARKETPLACE_DESCRIPTION}}`: Marketplace description
### File References
- `{{OUTPUT_STYLE_FILENAME}}`: Name of output style markdown file
- `{{MARKETPLACE_PATH}}`: Full path to marketplace directory
- `{{PLUGIN_PATH}}`: Full path to plugin directory
## Error Handling
If issues occur during conversion:
1. **Permission errors**: Ensure write access to target directories
2. **File already exists**: Ask user if they want to overwrite
3. **Invalid JSON**: Check template substitution and JSON syntax
4. **Missing source file**: Verify output style file path
For common errors and solutions, reference `references/troubleshooting.md`.
## Post-Conversion Support
After conversion, users may ask about:
1. **Modifying output style**: Point to the `.md` fileRelated in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".