π Quick start template for creating high-quality Claude Code plugins with built-in validation, testing, and CI/CD.
This template provides:
- β Plugin Structure - Proper directory layout following Claude Code marketplace conventions
- β Validation Scripts - Automated naming, JSON schema, and frontmatter validation
- β GitHub Actions - CI/CD workflows for automatic validation on push/PR
- β ShellCheck Integration - Zero-warning shell script quality enforcement
- β Git Hooks - Pre-commit validation to catch issues before pushing
- β Testing Framework - Automated test suite for plugin functionality
- β Documentation Templates - Pre-filled docs with placeholders
- β Security Scanning - Automated secret detection and security checks
- β Compliance Framework - OWASP, CIS, NIST compliance documentation
Click "Use this template" button above, then:
# Clone your new repository
git clone https://github.com/YOUR_USERNAME/YOUR_PLUGIN.git
cd YOUR_PLUGIN
# Run setup script
./scripts/setup.shThe setup script will:
- Replace
{{PLUGIN_NAME}}placeholders with your plugin name - Configure git hooks
- Install validation dependencies
- Create your first plugin structure
# Edit plugin metadata
nano .claude-plugin/plugin.json
# Create your first skill
mkdir -p skills/your-skill-name
nano skills/your-skill-name/skill.md
# Validate your changes
./scripts/validate-all.sh# Run validation
./scripts/validate-all.sh
# Run tests (if you have tests)
# ./tests/test-all.sh
# Install locally to test
/plugin marketplace add /path/to/your-plugin
/plugin install {{PLUGIN_NAME}}@{{PLUGIN_NAME}}-marketplacegit add .
git commit -m "feat: Initial plugin implementation"
git push
# GitHub Actions will automatically:
# - Validate your plugin
# - Run ShellCheck
# - Check security
# - Run testsyour-plugin/
βββ .github/workflows/ # CI/CD automation
β βββ validate.yml # Plugin validation
β βββ security.yml # Security scanning
β βββ test.yml # Automated testing
βββ .claude-plugin/
β βββ plugin.json # Plugin metadata
βββ skills/ # Your plugin skills
β βββ example-skill/
β βββ skill.md # Skill definition
βββ agents/ # Interactive tutors (optional)
β βββ example-tutor.md
βββ hooks/ # Git hooks (optional)
β βββ pre-commit.sh
βββ scripts/ # Validation and setup
β βββ setup.sh # First-time setup
β βββ validate-all.sh # Run all validations
β βββ validate-naming.sh # Naming conventions
β βββ validate-json.sh # JSON schema
β βββ validate-frontmatter.sh # YAML frontmatter
βββ tests/ # Test suite
β βββ test-all.sh
β βββ integration/
βββ docs/ # Documentation
β βββ INSTALLATION.md
β βββ CONTRIBUTING.md
β βββ CHANGELOG.md
βββ .gitignore
βββ LICENSE
βββ README.md # This file (update it!)
After using this template, customize these files:
-
.claude-plugin/plugin.json- Update name, description, author, keywords -
README.md- Replace this content with your plugin description -
skills/example-skill/skill.md- Create your actual skills -
LICENSE- Update copyright year and name -
docs/CHANGELOG.md- Start your version history -
.github/workflows/*.yml- Update repository URLs in badges - Delete
skills/example-skill/after creating real skills
# 1. Make changes
nano skills/my-skill/skill.md
# 2. Validate locally (pre-commit hook does this automatically)
./scripts/validate-all.sh
# 3. Test
./tests/test-all.sh
# 4. Commit (hook validates automatically)
git add .
git commit -m "feat: Add new skill"
# 5. Push (GitHub Actions validates automatically)
git push# Use the provided script
./scripts/create-skill.sh my-new-skill
# Or manually:
mkdir -p skills/my-new-skill
cat > skills/my-new-skill/skill.md << 'EOF'
---
name: my-new-skill
description: What this skill does
license: MIT
---
# My New Skill
## Activation Triggers
- "do something"
- "perform task"
## Behaviour
1. Step one
2. Step two
3. Step three
EOF
# Validate
./scripts/validate-all.sh# Update version in plugin.json
jq '.version = "1.1.0"' .claude-plugin/plugin.json > tmp.$$.json && mv tmp.$$.json .claude-plugin/plugin.json
# Update CHANGELOG.md
# Commit and tag
git add .
git commit -m "chore: Bump version to 1.1.0"
git tag -a v1.1.0 -m "Release v1.1.0"
git push && git push --tagsThis template enforces:
All shell scripts must pass ShellCheck with no warnings:
find . -name "*.sh" -exec shellcheck {} \;- Directories: lowercase-with-hyphens (e.g.,
my-skill) - Pattern:
^[a-z0-9-]+$
- Author/Owner must be objects:
{"name": "..."} - Semantic versioning:
x.y.z - Required fields: name, version, description
- All skills must have valid YAML frontmatter
- Required fields: name, description, license
- No hardcoded secrets
- No CRLF line endings (LF only)
- Proper file permissions
- Installation Guide - How users install your plugin
- Contributing Guide - How developers contribute
- Changelog - Version history
- Validation Guide - Understanding validation rules
See CONTRIBUTING.md for development guidelines.
MIT - See LICENSE for details
This template is maintained by ZenterFlow and achieves:
- 100% GitHub Actions pass rate
- Zero ShellCheck warnings
- 10/10 quality score
- 100% compliance (OWASP, CIS, NIST, ISO 27001)
- Customize - Replace placeholders with your plugin details
- Develop - Create your skills and agents
- Test - Use the validation and test scripts
- Deploy - Push to GitHub and let CI/CD validate
- Publish - Submit to Claude Code marketplace
Need help? Check out:
Happy coding! π