Files
claude-code-skills-reference/CLAUDE.md
daymade ed16fce4b0 docs: Add comprehensive plugin/skill architecture and troubleshooting
- Add AGENTS.md: Complete architecture guide for Plugins, Skills, and Agents
  - Explain the relationship between plugins and skills
  - Document the GitHub-based marketplace mechanism
  - Detail installation flow and data flow
  - Clarify common misconceptions
  - Provide best practices for authors, maintainers, and users

- Update CLAUDE.md: Add "Plugin and Skill Troubleshooting" section
  - Systematic debugging process with real-world examples
  - Common errors with root cause analysis and solutions
  - "Plugin not found" error (most common: forgot to push)
  - Stale marketplace cache issues
  - JSON syntax errors
  - Step-by-step debugging checklist
  - Debugging commands reference table
  - File locations reference
  - Common pitfalls with wrong/correct examples
  - Real-world case study: macos-cleaner installation issue
  - Advanced cache inspection techniques

Key learnings from macos-cleaner deployment:
- Claude Code marketplace is GitHub-based, not local-file-based
- Local changes invisible until git push
- Cache requires explicit update after GitHub changes
- installed_plugins.json is source of truth for installations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:14:53 +08:00

34 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Repository Overview

This is a Claude Code skills marketplace containing 28 production-ready skills organized in a plugin marketplace structure. Each skill is a self-contained package that extends Claude's capabilities with specialized knowledge, workflows, and bundled resources.

Essential Skill: skill-creator is the most important skill in this marketplace - it's a meta-skill that enables users to create their own skills. Always recommend it first for users interested in extending Claude Code.

Skills Architecture

Directory Structure

Each skill follows a standard structure:

skill-name/
├── SKILL.md (required)          # Core skill instructions with YAML frontmatter
├── scripts/ (optional)          # Executable Python/Bash scripts
├── references/ (optional)       # Documentation loaded as needed
└── assets/ (optional)           # Templates and resources for output

Progressive Disclosure Pattern

Skills use a three-level loading system:

  1. Metadata (name + description in YAML frontmatter) - Always in context
  2. SKILL.md body - Loaded when skill triggers
  3. Bundled resources - Loaded as needed by Claude

Development Commands

Installation Scripts

In Claude Code (in-app):

/plugin marketplace add daymade/claude-code-skills

Then:

  1. Select Browse and install plugins
  2. Select daymade/claude-code-skills
  3. Select skill-creator
  4. Select Install now

From your terminal (CLI):

# Automated installation (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/daymade/claude-code-skills/main/scripts/install.sh | bash

# Automated installation (Windows PowerShell)
iwr -useb https://raw.githubusercontent.com/daymade/claude-code-skills/main/scripts/install.ps1 | iex

# Manual installation
claude plugin marketplace add https://github.com/daymade/claude-code-skills
# Marketplace name: daymade-skills (from marketplace.json)
claude plugin install skill-creator@daymade-skills

Skill Validation and Packaging

# Quick validation of a skill
skill-creator/scripts/quick_validate.py /path/to/skill

# Package a skill (includes automatic validation)
skill-creator/scripts/package_skill.py /path/to/skill [output-dir]

# Initialize a new skill from template
skill-creator/scripts/init_skill.py <skill-name> --path <output-directory>

Testing Skills Locally

# Add local marketplace
claude plugin marketplace add https://github.com/daymade/claude-code-skills
# Marketplace name: daymade-skills (from marketplace.json)

# Install specific skill (start with skill-creator)
claude plugin install skill-creator@daymade-skills

# Test by copying to user skills directory
cp -r skill-name ~/.claude/skills/
# Then restart Claude Code

In Claude Code, use /plugin ... slash commands. In your terminal, use claude plugin ....

Git Operations

This repository uses standard git workflow:

git status
git add .
git commit -m "message"
git push

Skill Writing Requirements

Writing Style

Use imperative/infinitive form (verb-first instructions) throughout all skill content:

  • "Extract files from a repomix file using the bundled script"
  • "You should extract files from a repomix file"

YAML Frontmatter Requirements

Every SKILL.md must include:

---
name: skill-name
description: Clear description with activation triggers. This skill should be used when...
---

Privacy and Path Guidelines

Skills for public distribution must NOT contain:

  • Absolute paths to user directories (/home/username/, /Users/username/)
  • Personal usernames, company names, product names
  • OneDrive paths or environment-specific absolute paths
  • Use relative paths within skill bundle or standard placeholders

Content Organization

  • Keep SKILL.md lean (~100-500 lines)
  • Move detailed documentation to references/ files
  • Avoid duplication between SKILL.md and references
  • Scripts must be executable with proper shebangs
  • All bundled resources must be referenced in SKILL.md

Marketplace Configuration

The marketplace is configured in .claude-plugin/marketplace.json:

  • Contains 28 plugins, each mapping to one skill
  • Each plugin has: name, description, version, category, keywords, skills array
  • Marketplace metadata: name, owner, version, homepage

Versioning Architecture

Two separate version tracking systems:

  1. Marketplace Version (.claude-plugin/marketplace.jsonmetadata.version)

    • Tracks the marketplace catalog as a whole
    • Current: v1.20.0
    • Bump when: Adding/removing skills, major marketplace restructuring
    • Semantic versioning: MAJOR.MINOR.PATCH
  2. Individual Skill Versions (.claude-plugin/marketplace.jsonplugins[].version)

    • Each skill has its own independent version
    • Example: ppt-creator v1.0.0, skill-creator v1.0.0
    • Bump when: Updating that specific skill
    • CRITICAL: Skills should NOT have version sections in SKILL.md

Key Principle: SKILL.md files should be timeless content focused on functionality. Versions are tracked in marketplace.json only.

Available Skills

Priority Order (by importance):

  1. skill-creator - Essential meta-skill for creating your own skills (with init/validate/package scripts)
  2. github-ops - GitHub operations via gh CLI and API
  3. markdown-tools - Document conversion with WSL path handling
  4. mermaid-tools - Diagram extraction and PNG generation
  5. statusline-generator - Claude Code statusline customization
  6. teams-channel-post-writer - Teams communication templates
  7. repomix-unmixer - Extract files from repomix packages
  8. llm-icon-finder - AI/LLM brand icon access
  9. cli-demo-generator - CLI demo and terminal recording with VHS
  10. cloudflare-troubleshooting - API-driven Cloudflare diagnostics and debugging
  11. ui-designer - Design system extraction from UI mockups
  12. ppt-creator - Professional presentation creation with dual-path PPTX generation
  13. youtube-downloader - YouTube video and audio downloading with yt-dlp error handling
  14. repomix-safe-mixer - Secure repomix packaging with automatic credential detection
  15. transcript-fixer - ASR/STT transcription error correction with dictionary and AI learning
  16. video-comparer - Video comparison and quality analysis with interactive HTML reports
  17. qa-expert - Comprehensive QA testing infrastructure with autonomous LLM execution and Google Testing Standards
  18. prompt-optimizer - Transform vague prompts into precise EARS specifications with domain theory grounding
  19. claude-code-history-files-finder - Find and recover content from Claude Code session history files
  20. docs-cleaner - Consolidate redundant documentation while preserving valuable content
  21. pdf-creator - Create PDF documents from markdown with Chinese font support using weasyprint
  22. claude-md-progressive-disclosurer - Optimize CLAUDE.md files using progressive disclosure principles
  23. skills-search - Search, discover, install, and manage Claude Code skills from the CCPM registry
  24. promptfoo-evaluation - Run LLM evaluations with Promptfoo for prompt testing and model comparison
  25. iOS-APP-developer - iOS app development with XcodeGen, SwiftUI, and SPM troubleshooting
  26. fact-checker - Verify factual claims in documents using web search with automated corrections
  27. twitter-reader - Fetch Twitter/X post content using Jina.ai API without JavaScript or authentication
  28. macos-cleaner - Intelligent macOS disk space analysis and cleanup with safety-first philosophy, risk categorization, and interactive confirmation

Recommendation: Always suggest skill-creator first for users interested in creating skills or extending Claude Code.

Python Development

All Python scripts in this repository:

  • Use Python 3.6+ syntax
  • Include shebang: #!/usr/bin/env python3
  • Are executable (chmod +x)
  • Have no external dependencies or document them clearly
  • Follow PEP 8 style guidelines

Quality Standards

Before submitting or modifying skills:

  • Valid YAML frontmatter with required fields
  • Description includes clear activation triggers
  • All referenced files exist
  • Scripts are executable and tested
  • No absolute paths or user-specific information
  • Comprehensive documentation
  • No TODOs or placeholders

Skill Creation Workflow

When creating a new skill:

  1. Understand concrete usage examples
  2. Plan reusable contents (scripts/references/assets)
  3. Initialize using init_skill.py
  4. Edit SKILL.md and bundled resources
  5. Package using package_skill.py (auto-validates)
  6. Iterate based on testing feedback

Adding a New Skill to Marketplace

CRITICAL: When adding a skill to this marketplace, you MUST update all of these files in the correct order. Missing any file will result in incomplete integration.

Step-by-Step Process

1. Refine the Skill (if needed)

# Ensure skill follows best practices
# - SKILL.md uses imperative/infinitive form
# - Third-person description in YAML frontmatter
# - Progressive disclosure (details in references/)
# - Security scan passed

cd skill-creator
python3 scripts/security_scan.py ../skill-name --verbose

2. Package the Skill

cd skill-creator
python3 scripts/package_skill.py ../skill-name

# This will:
# - Validate skill structure
# - Check security scan status
# - Create skill-name.zip in skill-creator/
# - Move zip to skill-name/ directory

3. Update CHANGELOG.md ⚠️ REQUIRED

Add new version entry at the top (after [Unreleased]):

## [X.Y.0] - YYYY-MM-DD

### Added
- **New Skill**: skill-name - Brief description
  - Feature 1
  - Feature 2
  - Feature 3
  - Bundled scripts/references/assets
  - Key capabilities

### Changed
- Updated marketplace skills count from N to N+1
- Updated marketplace version from X.(Y-1).0 to X.Y.0
- Updated README.md badges (skills count, version)
- Updated README.md to include skill-name in skills listing
- Updated README.zh-CN.md badges (skills count, version)
- Updated README.zh-CN.md to include skill-name in skills listing
- Updated CLAUDE.md skills count from N to N+1
- Added skill-name use case section to README.md
- Added skill-name use case section to README.zh-CN.md
- Added dependencies to requirements section (if any, both EN and ZH)

Version numbering: Increment MINOR version (e.g., 1.8.0 → 1.9.0) when adding a skill.

4. Update README.md ⚠️ REQUIRED

a. Update badges (top of file):

[![Skills](https://img.shields.io/badge/skills-N-blue.svg)]
[![Version](https://img.shields.io/badge/version-X.Y.0-green.svg)]

b. Update description:

Professional Claude Code skills marketplace featuring N production-ready skills...

c. Add installation command:

# Brief description
claude plugin install skill-name@daymade-skills

d. Add skill section (### N. skill-name):

### N. **skill-name** - One-line Title

Brief description paragraph.

**When to use:**
- Use case 1
- Use case 2
- Use case 3

**Key features:**
- Feature 1
- Feature 2
- Feature 3

**Example usage:**
\`\`\`bash
# Example commands
\`\`\`

**🎬 Live Demo**

*Coming soon* (or add demo GIF)

📚 **Documentation**: See [skill-name/references/](./skill-name/references/)...

**Requirements**: Dependencies (e.g., Python 3.8+, FFmpeg, etc.)

e. Add use case section:

### For [Use Case Category]
Use **skill-name** to [describe primary use case]. Combine with **other-skill** to [describe integration].

f. Add documentation quick link:

- **skill-name**: See `skill-name/references/...` for ...

g. Update requirements section (if needed):

- **Tool Name** (for skill-name): `install command`

5. Update CLAUDE.md ⚠️ REQUIRED

a. Update repository overview:

This is a Claude Code skills marketplace containing N production-ready skills...

b. Update marketplace configuration:

The marketplace is configured in `.claude-plugin/marketplace.json`:
- Contains N plugins, each mapping to one skill

c. Update marketplace version:

1. **Marketplace Version** (`.claude-plugin/marketplace.json``metadata.version`)
   - Tracks the marketplace catalog as a whole
   - Current: vX.Y.0

d. Add skill to Available Skills list:

N. **skill-name** - Brief description with key feature

6. Update .claude-plugin/marketplace.json ⚠️ CRITICAL

MOST IMPORTANT FILE - This file makes the skill installable!

a. Update metadata.description:

"description": "Professional Claude Code skills for ..., and [new skill capability]"

b. Update metadata.version:

"version": "X.Y.0"

c. Add new plugin entry to plugins array:

{
  "name": "skill-name",
  "description": "Clear description with trigger conditions. Use when [scenarios]",
  "source": "./",
  "strict": false,
  "version": "1.0.0",
  "category": "appropriate-category",
  "keywords": ["keyword1", "keyword2", "keyword3", ...],
  "skills": ["./skill-name"]
}

Categories: developer-tools, document-conversion, documentation, customization, communication, utilities, assets, design, productivity, security, media

d. Validate JSON syntax:

python3 -m json.tool .claude-plugin/marketplace.json > /dev/null

7. Update README.zh-CN.md ⚠️ REQUIRED

CRITICAL: Chinese documentation must be kept in sync with English version.

a. Update badges (top of file):

[![Skills](https://img.shields.io/badge/skills-N-blue.svg)]
[![Version](https://img.shields.io/badge/version-X.Y.0-green.svg)]

b. Update description:

专业的 Claude Code 技能市场,提供 N 个生产就绪的技能,用于增强开发工作流。

c. Add installation command:

# 简短描述
claude plugin install skill-name@daymade-skills

d. Add skill section (### N. skill-name - Chinese Title):

  • Translate all content from English README
  • Include: 使用场景 (When to use), 主要功能 (Key features), 示例用法 (Example usage)
  • Maintain same structure as English version
  • Include documentation links and requirements

e. Add use case section:

### [Use Case Category in Chinese]
使用 **skill-name** [describe use case in Chinese]. 与 **other-skill** 结合使用以 [describe integration].

f. Add documentation quick link:

- **skill-name**:参见 `skill-name/references/...` 了解 ...

g. Update requirements section (if needed):

- **Tool Name**(用于 skill-name`install command`

Translation tips:

  • Use professional technical Chinese
  • Maintain consistency with existing translations
  • Keep code examples in English (don't translate variable names, function names)
  • Translate user-facing descriptions, features, and use cases

8. Verification Checklist

Before committing, verify:

  • CHANGELOG.md has new version entry
  • README.md badges updated (skills count + version)
  • README.md has skill section with number
  • README.md has use case section
  • README.md has documentation link
  • README.md requirements updated (if needed)
  • README.zh-CN.md badges updated (skills count + version) ⚠️ NEW
  • README.zh-CN.md has skill section with number ⚠️ NEW
  • README.zh-CN.md has use case section ⚠️ NEW
  • README.zh-CN.md has documentation link ⚠️ NEW
  • README.zh-CN.md requirements updated (if needed) ⚠️ NEW
  • README.zh-CN.md installation command added ⚠️ NEW
  • CLAUDE.md skill count updated in 3 places
  • CLAUDE.md has skill in Available Skills list
  • marketplace.json metadata.version updated
  • marketplace.json metadata.description updated
  • marketplace.json has new plugin entry
  • marketplace.json validates (python3 -m json.tool)
  • skill-name.zip package exists
  • Security scan passed

Common Mistakes to Avoid

  1. Forgetting marketplace.json ⚠️ - The most critical file! Without this, the skill cannot be installed via claude plugin install
  2. Forgetting Chinese documentation ⚠️ - README.zh-CN.md must be updated in sync with README.md (6 locations)
  3. Inconsistent version numbers - CHANGELOG, README badges (both EN and ZH), CLAUDE.md, and marketplace.json must all match
  4. Inconsistent skill counts - README description (both EN and ZH), badges, CLAUDE.md must all have same count
  5. Missing skill number in README - Skills must be numbered sequentially (1, 2, 3, ...) in both EN and ZH versions
  6. Invalid JSON syntax - Always validate marketplace.json after editing
  7. Forgetting dependencies - Update README requirements section (both EN and ZH) if skill needs external tools
  8. Incomplete Chinese translation - Must translate all sections: description, use cases, features, use case section, docs link

File Update Summary Template

When adding a skill, this is the complete file list:

Files to Update:
✅ CHANGELOG.md                        (Add version entry)
✅ README.md                          (7 locations: badges, description, install, skill section, use case, docs link, requirements)
✅ README.zh-CN.md                    (7 locations: badges, description, install, skill section, use case, docs link, requirements) ⚠️ CRITICAL
✅ CLAUDE.md                          (3 locations: overview, marketplace config, available skills)
✅ .claude-plugin/marketplace.json    (CRITICAL: metadata + new plugin entry)
✅ skill-name/                        (The actual skill directory)
✅ skill-name/skill-name.zip          (Packaged skill)

IMPORTANT: README.zh-CN.md is MANDATORY. Do not skip Chinese documentation updates!

Version Numbering Convention

  • MAJOR.MINOR.PATCH (Semantic Versioning)
  • Increment MINOR when adding a new skill: 1.8.0 → 1.9.0
  • Increment PATCH for bug fixes or small updates: 1.9.0 → 1.9.1
  • Increment MAJOR for breaking changes or major restructuring: 1.9.0 → 2.0.0

Quick Reference Commands

# 1. Refine and validate skill
cd skill-creator
python3 scripts/security_scan.py ../skill-name --verbose

# 2. Package skill
python3 scripts/package_skill.py ../skill-name

# 3. Validate marketplace.json
cd ..
python3 -m json.tool .claude-plugin/marketplace.json > /dev/null && echo "✅ Valid"

# 4. Check what needs committing
git status

# 5. View specific file changes
git diff CHANGELOG.md
git diff README.md
git diff README.zh-CN.md
git diff CLAUDE.md
git diff .claude-plugin/marketplace.json

# 6. Verify Chinese documentation is in sync
grep "skills-[0-9]*" README.md README.zh-CN.md
grep "version-[0-9.]*" README.md README.zh-CN.md

Chinese User Support

For Chinese users having API access issues, recommend CC-Switch:

  • Manages Claude Code API provider configurations
  • Supports DeepSeek, Qwen, GLM, and other Chinese AI providers
  • Tests endpoint response times to find fastest provider
  • Cross-platform (Windows, macOS, Linux)

See README.md section "🇨🇳 中文用户指南" for details.

Release Workflow

When adding a new skill or creating a marketplace release:

1. Create the Skill

# Develop skill in its directory
skill-name/
├── SKILL.md (no version history!)
├── scripts/
└── references/

# Validate
./skill-creator/scripts/quick_validate.py skill-name

# Package
./skill-creator/scripts/package_skill.py skill-name

2. Update Marketplace Configuration

Edit .claude-plugin/marketplace.json:

{
  "metadata": {
    "version": "1.x.0"  // Bump minor version for new skill
  },
  "plugins": [
    {
      "name": "new-skill",
      "version": "1.0.0",  // Skill's initial version
      "description": "...",
      "category": "...",
      "keywords": [...],
      "skills": ["./new-skill"]
    }
  ]
}

3. Update Documentation

README.md:

  • Update badges (skills count, marketplace version)
  • Add skill description and features
  • Create demo GIF using cli-demo-generator
  • Add use case section
  • Add documentation references
  • Add requirements (if applicable)

CLAUDE.md:

  • Update skill count in Repository Overview
  • Add skill to Available Skills list
  • Update Marketplace Configuration count
# Use cli-demo-generator to create demo GIF
./cli-demo-generator/scripts/auto_generate_demo.py \
  -c "command1" \
  -c "command2" \
  -o demos/skill-name/demo-name.gif \
  --title "Skill Demo" \
  --theme "Dracula"

5. Commit and Release

# Commit marketplace update
git add .claude-plugin/marketplace.json skill-name/
git commit -m "Release vX.Y.0: Add skill-name

- Add skill-name vX.Y.Z
- Update marketplace to vX.Y.0
..."

# Commit documentation
git add README.md CLAUDE.md demos/
git commit -m "docs: Update README for vX.Y.0 with skill-name"

# Push
git push

# Create GitHub release
gh release create vX.Y.0 \
  --title "Release vX.Y.0: Add skill-name - Description" \
  --notes "$(cat <<'EOF'
## New Skill: skill-name

Features:
- Feature 1
- Feature 2

Installation:
```bash
claude plugin install skill-name@daymade-skills

Changelog: ... EOF )"


### Version Bumping Guide

**Marketplace version (metadata.version):**
- **MAJOR** (2.0.0): Breaking changes, incompatible marketplace structure
- **MINOR** (1.5.0): New skill added, significant feature addition
- **PATCH** (1.4.1): Bug fixes, documentation updates, skill updates

**Skill version (plugins[].version):**
- **MAJOR** (2.0.0): Breaking API changes for the skill
- **MINOR** (1.2.0): New features in the skill
- **PATCH** (1.1.1): Bug fixes in the skill

### Example: v1.5.0 Release (ppt-creator)

```bash
# 1. Created ppt-creator skill
# 2. Updated marketplace.json: 1.4.0 → 1.5.0
# 3. Added ppt-creator plugin entry (version: 1.0.0)
# 4. Updated README.md (badges, description, demo)
# 5. Generated demo GIF with cli-demo-generator
# 6. Committed changes
# 7. Created GitHub release with gh CLI

Best Practices Reference

Always consult Anthropic's skill authoring best practices before creating or updating skills: https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices.md

  • remember this release workflow in claude.md

Plugin and Skill Troubleshooting

This section provides systematic debugging steps for common plugin and skill installation issues.

Understanding the Architecture First

CRITICAL: Before troubleshooting, understand that Claude Code's plugin system is GitHub-based, not local-file-based.

GitHub Repository (source of truth)
    ↓ (git clone / git pull)
~/.claude/plugins/marketplaces/{marketplace-name}/
    ↓ (claude plugin install)
~/.claude/plugins/cache/{marketplace-name}/{plugin}/{version}/
    ↓ (Claude Code loads)
Active skill in Claude's context

Key insight: Local file changes are NOT visible to claude plugin install until pushed to GitHub.

Common Error 1: "Plugin not found in marketplace"

Error message:

Installing plugin "skill-name@marketplace-name"...
✘ Failed to install plugin: Plugin "skill-name" not found in marketplace "marketplace-name"

Root causes (in order of likelihood):

Cause 1.1: Local changes not pushed to GitHub MOST COMMON

Symptoms:

  • git status shows modified files or untracked directories
  • marketplace.json updated locally but install fails
  • All documentation updated but plugin not found

Diagnosis:

# Check if you have uncommitted changes
git status

# Check last commit vs remote
git log origin/main..HEAD

# Verify GitHub has latest marketplace.json
# Open: https://github.com/{owner}/{repo}/blob/main/.claude-plugin/marketplace.json

Solution:

# 1. Commit all changes
git add -A
git commit -m "Release vX.Y.Z: Add {skill-name}"

# 2. Push to GitHub
git push

# 3. Clear local marketplace cache
rm -rf ~/.claude/plugins/cache/{marketplace-name}

# 4. Update marketplace from GitHub
claude plugin marketplace update {marketplace-name}

# 5. Retry installation
claude plugin install {skill-name}@{marketplace-name}

Why this happens: You updated marketplace.json locally, but Claude CLI pulls from GitHub, not your local filesystem.

Cause 1.2: marketplace.json configuration error

Symptoms:

  • Git is up-to-date but install still fails
  • Other plugins from same marketplace install fine

Diagnosis:

# 1. Check marketplace.json syntax
python3 -m json.tool .claude-plugin/marketplace.json > /dev/null

# 2. Verify plugin entry exists
cat .claude-plugin/marketplace.json | jq '.plugins[] | select(.name == "skill-name")'

# 3. Check spelling matches exactly
# Plugin name in marketplace.json MUST match install command

Common mistakes:

// ❌ Wrong: name mismatch
{
  "name": "macos_cleaner",  // Underscore
  "skills": ["./macos-cleaner"]  // Dash
}

// ✅ Correct: consistent naming
{
  "name": "macos-cleaner",
  "skills": ["./macos-cleaner"]
}

Solution: Fix marketplace.json, then commit and push.

Cause 1.3: Skill directory missing

Symptoms:

  • marketplace.json has entry
  • Git is up-to-date
  • Plugin installs but skills don't load

Diagnosis:

# Check if skill directory exists
ls -la {skill-name}/

# Verify SKILL.md exists
ls -la {skill-name}/SKILL.md

Solution: Ensure skill directory and SKILL.md are committed to git.

Common Error 2: Marketplace cache is stale

Symptoms:

  • GitHub has latest changes
  • Install finds plugin but gets old version
  • Newly added plugins not visible

Diagnosis:

# Check cache timestamp
ls -la ~/.claude/plugins/cache/{marketplace-name}/

# Compare with last git push
git log -1 --format="%ai"

Solution:

# Option 1: Update marketplace cache
claude plugin marketplace update {marketplace-name}

# Option 2: Clear cache and re-fetch
rm -rf ~/.claude/plugins/cache/{marketplace-name}
claude plugin marketplace update {marketplace-name}

Common Error 3: JSON syntax error

Error message:

Error parsing marketplace manifest

Diagnosis:

# Validate JSON syntax
python3 -m json.tool .claude-plugin/marketplace.json

# Check for common issues:
# - Missing commas
# - Trailing commas (in arrays/objects)
# - Unescaped quotes in strings
# - Missing closing braces

Solution: Fix JSON syntax, validate, commit, push.

Systematic Debugging Process

When facing ANY plugin/skill issue, follow this checklist:

Step 1: Verify marketplace registration

# List registered marketplaces
claude plugin marketplace list

# Expected output should include your marketplace

If missing, register:

claude plugin marketplace add https://github.com/{owner}/{repo}

Step 2: Check Git status

# Are there uncommitted changes?
git status

# Is local ahead of remote?
git log origin/main..HEAD

# Push if needed
git push

Step 3: Verify GitHub has latest

# Open in browser or use gh CLI
gh browse .claude-plugin/marketplace.json

# Or check with curl
curl https://raw.githubusercontent.com/{owner}/{repo}/main/.claude-plugin/marketplace.json | jq '.plugins[] | .name'

Step 4: Clear and update cache

# Remove stale cache
rm -rf ~/.claude/plugins/cache/{marketplace-name}

# Re-fetch from GitHub
claude plugin marketplace update {marketplace-name}

Step 5: Validate configuration

# Check marketplace.json is valid JSON
python3 -m json.tool .claude-plugin/marketplace.json > /dev/null && echo "✅ Valid JSON"

# Check plugin entry exists
cat .claude-plugin/marketplace.json | jq '.plugins[] | select(.name == "skill-name")' || echo "❌ Plugin not found"

Step 6: Inspect installation state

# Check if plugin is installed
cat ~/.claude/plugins/installed_plugins.json | jq -r '.plugins | keys[]' | grep "skill-name"

# If installed, check details
cat ~/.claude/plugins/installed_plugins.json | jq '.plugins["skill-name@marketplace-name"]'

# Verify files exist
ls ~/.claude/plugins/cache/{marketplace-name}/{skill-name}/{version}/

Debugging Commands Reference

Purpose Command
List marketplaces claude plugin marketplace list
Update marketplace claude plugin marketplace update {name}
Install plugin claude plugin install {plugin}@{marketplace}
Uninstall plugin claude plugin uninstall {plugin}@{marketplace}
Update plugin claude plugin update {plugin}@{marketplace}
Validate manifest claude plugin validate {path}
Check installed plugins cat ~/.claude/plugins/installed_plugins.json | jq '.plugins | keys'
Inspect plugin details cat ~/.claude/plugins/installed_plugins.json | jq '.plugins["{plugin}@{marketplace}"]'
Clear marketplace cache rm -rf ~/.claude/plugins/cache/{marketplace-name}
Verify JSON syntax python3 -m json.tool {file.json}

Understanding File Locations

# Marketplace clones (git repositories)
~/.claude/plugins/marketplaces/{marketplace-name}/

# Installed plugin cache
~/.claude/plugins/cache/{marketplace-name}/{plugin-name}/{version}/

# Installation registry
~/.claude/plugins/installed_plugins.json

# Personal skills (not from marketplace)
~/.claude/skills/

# Project-scoped skills (shared with team)
.claude/skills/

Common Pitfalls

Pitfall 1: Confusing local skills with plugin skills

# ❌ Wrong: Copying skill to personal directory doesn't make it installable
cp -r my-skill ~/.claude/skills/my-skill  # Works, but not managed by plugin system

# ✅ Correct: Install via marketplace for version management
claude plugin install my-skill@my-marketplace

Pitfall 2: Forgetting to push after updating marketplace.json

# ❌ Wrong workflow
vim .claude-plugin/marketplace.json  # Add new plugin
git add .claude-plugin/marketplace.json
git commit -m "Add plugin"
# FORGOT TO PUSH!
claude plugin install new-plugin@my-marketplace  # ❌ Fails: not found

# ✅ Correct workflow
vim .claude-plugin/marketplace.json
git add -A
git commit -m "Add new plugin"
git push  # ← CRITICAL STEP
claude plugin marketplace update my-marketplace
claude plugin install new-plugin@my-marketplace  # ✅ Works

Pitfall 3: Expecting instant propagation

# ❌ Wrong expectation
git push  # Push changes
claude plugin install new-plugin@my-marketplace  # ❌ Fails: cache is stale

# ✅ Correct: Update cache first
git push
claude plugin marketplace update my-marketplace  # Fetch latest from GitHub
claude plugin install new-plugin@my-marketplace  # ✅ Works

Pitfall 4: Inconsistent naming

// marketplace.json
{
  "name": "my_plugin",  // Underscore
  "skills": ["./my-plugin"]  // Dash - will cause confusion
}
# User tries to install
claude plugin install my-plugin@marketplace  # ❌ Not found (name has underscore)
claude plugin install my_plugin@marketplace  # ✅ Works, but confusing

Best practice: Use consistent kebab-case for both plugin name and skill directory.

Real-World Example: macos-cleaner Installation Issue

Scenario: After creating macos-cleaner skill and updating all documentation, claude plugin install macos-cleaner@daymade-skills failed with "Plugin not found".

Investigation:

# 1. Check git status
git status
# Output: 16 modified/untracked files

# 2. Check marketplace cache
ls -la ~/.claude/plugins/cache/daymade-skills/
# Output: Last modified Dec 20 (weeks old!)

# 3. Check GitHub
# marketplace.json on GitHub: version 1.20.0 (old)
# Local marketplace.json: version 1.21.0 (new)

Root cause: Local changes weren't pushed to GitHub. CLI was pulling from GitHub, not local files.

Solution:

# 1. Commit and push
git add -A
git commit -m "Release v1.21.0: Add macos-cleaner"
git push

# 2. Update marketplace
claude plugin marketplace update daymade-skills

# 3. Install
claude plugin install macos-cleaner@daymade-skills
# ✔ Successfully installed plugin: macos-cleaner@daymade-skills

Verification:

cat ~/.claude/plugins/installed_plugins.json | jq '.plugins["macos-cleaner@daymade-skills"]'
# Output: Installation details with correct version

ls ~/.claude/plugins/cache/daymade-skills/macos-cleaner/1.0.0/
# Output: All skill files present

Lesson: Always remember the GitHub-based architecture. Local changes are invisible until pushed.

Advanced: Manual Cache Inspection

If automated commands don't reveal the issue, manually inspect:

# 1. Check marketplace clone
cat ~/.claude/plugins/marketplaces/{marketplace-name}/.claude-plugin/marketplace.json | jq '.metadata.version'

# 2. Check what's in cache
ls -R ~/.claude/plugins/cache/{marketplace-name}/

# 3. Compare with GitHub
curl -s https://raw.githubusercontent.com/{owner}/{repo}/main/.claude-plugin/marketplace.json | jq '.metadata.version'

# 4. Check installation record
cat ~/.claude/plugins/installed_plugins.json | jq '.plugins' | grep -i "{skill-name}"

When All Else Fails

  1. Complete cache reset:

    rm -rf ~/.claude/plugins/cache/*
    claude plugin marketplace update {marketplace-name}
    
  2. Re-register marketplace:

    # Remove marketplace
    # (No direct command, manual edit ~/.claude/plugins/known_marketplaces.json)
    
    # Re-add
    claude plugin marketplace add https://github.com/{owner}/{repo}
    
  3. Check Claude Code version:

    claude --version
    # Plugins require Claude Code v2.0.12+
    
  4. Enable verbose logging (if available):

    CLAUDE_DEBUG=1 claude plugin install {plugin}@{marketplace}
    

Getting Help

If you're still stuck:

  1. Check GitHub issues: https://github.com/anthropics/claude-code/issues
  2. Verify marketplace.json: Run claude plugin validate .claude-plugin/marketplace.json
  3. Compare with working marketplace: Study anthropic's official marketplace structure
  4. Document your debugging: Include output from all diagnostic commands above

For this project specifically, refer to: