|
Download plugins/plugin-dev/skills/plugin-structure/examples/standard-plugin.md from SaylorTwift/claude-code: direct link, hf CLI and curl.
- Browser
- Download file 13.3 kB
-
https://huggingface.co/SaylorTwift/claude-code/resolve/main/plugins/plugin-dev/skills/plugin-structure/examples/standard-plugin.md
- Command line
-
hf download hf://SaylorTwift/claude-code/plugins/plugin-dev/skills/plugin-structure/examples/standard-plugin.md
-
curl -L -o standard-plugin.md https://huggingface.co/SaylorTwift/claude-code/resolve/main/plugins/plugin-dev/skills/plugin-structure/examples/standard-plugin.md
13.3 kB
| # Standard Plugin Example | |
| A well-structured plugin with commands, agents, and skills. | |
| ## Directory Structure | |
| ``` | |
| code-quality/ | |
| ├── .claude-plugin/ | |
| │ └── plugin.json | |
| ├── commands/ | |
| │ ├── lint.md | |
| │ ├── test.md | |
| │ └── review.md | |
| ├── agents/ | |
| │ ├── code-reviewer.md | |
| │ └── test-generator.md | |
| ├── skills/ | |
| │ ├── code-standards/ | |
| │ │ ├── SKILL.md | |
| │ │ └── references/ | |
| │ │ └── style-guide.md | |
| │ └── testing-patterns/ | |
| │ ├── SKILL.md | |
| │ └── examples/ | |
| │ ├── unit-test.js | |
| │ └── integration-test.js | |
| ├── hooks/ | |
| │ ├── hooks.json | |
| │ └── scripts/ | |
| │ └── validate-commit.sh | |
| └── scripts/ | |
| ├── run-linter.sh | |
| └── generate-report.py | |
| ``` | |
| ## File Contents | |
| ### .claude-plugin/plugin.json | |
| ```json | |
| { | |
| "name": "code-quality", | |
| "version": "1.0.0", | |
| "description": "Comprehensive code quality tools including linting, testing, and review automation", | |
| "author": { | |
| "name": "Quality Team", | |
| "email": "quality@example.com" | |
| }, | |
| "homepage": "https://docs.example.com/plugins/code-quality", | |
| "repository": "https://github.com/example/code-quality-plugin", | |
| "license": "MIT", | |
| "keywords": ["code-quality", "linting", "testing", "code-review", "automation"] | |
| } | |
| ``` | |
| ### commands/lint.md | |
| ```markdown | |
| --- | |
| name: lint | |
| description: Run linting checks on the codebase | |
| --- | |
| # Lint Command | |
| Run comprehensive linting checks on the project codebase. | |
| ## Process | |
| 1. Detect project type and installed linters | |
| 2. Run appropriate linters (ESLint, Pylint, RuboCop, etc.) | |
| 3. Collect and format results | |
| 4. Report issues with file locations and severity | |
| ## Implementation | |
| Execute the linting script: | |
| \`\`\`bash | |
| bash ${CLAUDE_PLUGIN_ROOT}/scripts/run-linter.sh | |
| \`\`\` | |
| Parse the output and present issues organized by: | |
| - Critical issues (must fix) | |
| - Warnings (should fix) | |
| - Style suggestions (optional) | |
| For each issue, show: | |
| - File path and line number | |
| - Issue description | |
| - Suggested fix (if available) | |
| ``` | |
| ### commands/test.md | |
| ```markdown | |
| --- | |
| name: test | |
| description: Run test suite with coverage reporting | |
| --- | |
| # Test Command | |
| Execute the project test suite and generate coverage reports. | |
| ## Process | |
| 1. Identify test framework (Jest, pytest, RSpec, etc.) | |
| 2. Run all tests | |
| 3. Generate coverage report | |
| 4. Identify untested code | |
| ## Output | |
| Present results in structured format: | |
| - Test summary (passed/failed/skipped) | |
| - Coverage percentage by file | |
| - Critical untested areas | |
| - Failed test details | |
| ## Integration | |
| After test completion, offer to: | |
| - Fix failing tests | |
| - Generate tests for untested code (using test-generator agent) | |
| - Update documentation based on test changes | |
| ``` | |
| ### agents/code-reviewer.md | |
| ```markdown | |
| --- | |
| description: Expert code reviewer specializing in identifying bugs, security issues, and improvement opportunities | |
| capabilities: | |
| - Analyze code for potential bugs and logic errors | |
| - Identify security vulnerabilities | |
| - Suggest performance improvements | |
| - Ensure code follows project standards | |
| - Review test coverage adequacy | |
| --- | |
| # Code Reviewer Agent | |
| Specialized agent for comprehensive code review. | |
| ## Expertise | |
| - **Bug detection**: Logic errors, edge cases, error handling | |
| - **Security analysis**: Injection vulnerabilities, authentication issues, data exposure | |
| - **Performance**: Algorithm efficiency, resource usage, optimization opportunities | |
| - **Standards compliance**: Style guide adherence, naming conventions, documentation | |
| - **Test coverage**: Adequacy of test cases, missing scenarios | |
| ## Review Process | |
| 1. **Initial scan**: Quick pass for obvious issues | |
| 2. **Deep analysis**: Line-by-line review of changed code | |
| 3. **Context evaluation**: Check impact on related code | |
| 4. **Best practices**: Compare against project and language standards | |
| 5. **Recommendations**: Prioritized list of improvements | |
| ## Integration with Skills | |
| Automatically loads `code-standards` skill for project-specific guidelines. | |
| ## Output Format | |
| For each file reviewed: | |
| - Overall assessment | |
| - Critical issues (must fix before merge) | |
| - Important issues (should fix) | |
| - Suggestions (nice to have) | |
| - Positive feedback (what was done well) | |
| ``` | |
| ### agents/test-generator.md | |
| ```markdown | |
| --- | |
| description: Generates comprehensive test suites from code analysis | |
| capabilities: | |
| - Analyze code structure and logic flow | |
| - Generate unit tests for functions and methods | |
| - Create integration tests for modules | |
| - Design edge case and error condition tests | |
| - Suggest test fixtures and mocks | |
| --- | |
| # Test Generator Agent | |
| Specialized agent for generating comprehensive test suites. | |
| ## Expertise | |
| - **Unit testing**: Individual function/method tests | |
| - **Integration testing**: Module interaction tests | |
| - **Edge cases**: Boundary conditions, error paths | |
| - **Test organization**: Proper test structure and naming | |
| - **Mocking**: Appropriate use of mocks and stubs | |
| ## Generation Process | |
| 1. **Code analysis**: Understand function purpose and logic | |
| 2. **Path identification**: Map all execution paths | |
| 3. **Input design**: Create test inputs covering all paths | |
| 4. **Assertion design**: Define expected outputs | |
| 5. **Test generation**: Write tests in project's framework | |
| ## Integration with Skills | |
| Automatically loads `testing-patterns` skill for project-specific test conventions. | |
| ## Test Quality | |
| Generated tests include: | |
| - Happy path scenarios | |
| - Edge cases and boundary conditions | |
| - Error handling verification | |
| - Mock data for external dependencies | |
| - Clear test descriptions | |
| ``` | |
| ### skills/code-standards/SKILL.md | |
| ```markdown | |
| --- | |
| name: Code Standards | |
| description: This skill should be used when reviewing code, enforcing style guidelines, checking naming conventions, or ensuring code quality standards. Provides project-specific coding standards and best practices. | |
| version: 1.0.0 | |
| --- | |
| # Code Standards | |
| Comprehensive coding standards and best practices for maintaining code quality. | |
| ## Overview | |
| Enforce consistent code quality through standardized conventions for: | |
| - Code style and formatting | |
| - Naming conventions | |
| - Documentation requirements | |
| - Error handling patterns | |
| - Security practices | |
| ## Style Guidelines | |
| ### Formatting | |
| - **Indentation**: 2 spaces (JavaScript/TypeScript), 4 spaces (Python) | |
| - **Line length**: Maximum 100 characters | |
| - **Braces**: Same line for opening brace (K&R style) | |
| - **Whitespace**: Space after commas, around operators | |
| ### Naming Conventions | |
| - **Variables**: camelCase for JavaScript, snake_case for Python | |
| - **Functions**: camelCase, descriptive verb-noun pairs | |
| - **Classes**: PascalCase | |
| - **Constants**: UPPER_SNAKE_CASE | |
| - **Files**: kebab-case for modules | |
| ## Documentation Requirements | |
| ### Function Documentation | |
| Every function must include: | |
| - Purpose description | |
| - Parameter descriptions with types | |
| - Return value description with type | |
| - Example usage (for public functions) | |
| ### Module Documentation | |
| Every module must include: | |
| - Module purpose | |
| - Public API overview | |
| - Usage examples | |
| - Dependencies | |
| ## Error Handling | |
| ### Required Practices | |
| - Never swallow errors silently | |
| - Always log errors with context | |
| - Use specific error types | |
| - Provide actionable error messages | |
| - Clean up resources in finally blocks | |
| ### Example Pattern | |
| \`\`\`javascript | |
| async function processData(data) { | |
| try { | |
| const result = await transform(data) | |
| return result | |
| } catch (error) { | |
| logger.error('Data processing failed', { | |
| data: sanitize(data), | |
| error: error.message, | |
| stack: error.stack | |
| }) | |
| throw new DataProcessingError('Failed to process data', { cause: error }) | |
| } | |
| } | |
| \`\`\` | |
| ## Security Practices | |
| - Validate all external input | |
| - Sanitize data before output | |
| - Use parameterized queries | |
| - Never log sensitive information | |
| - Keep dependencies updated | |
| ## Detailed Guidelines | |
| For comprehensive style guides by language, see: | |
| - `references/style-guide.md` | |
| ``` | |
| ### skills/code-standards/references/style-guide.md | |
| ```markdown | |
| # Comprehensive Style Guide | |
| Detailed style guidelines for all supported languages. | |
| ## JavaScript/TypeScript | |
| ### Variable Declarations | |
| Use `const` by default, `let` when reassignment needed, never `var`: | |
| \`\`\`javascript | |
| // Good | |
| const MAX_RETRIES = 3 | |
| let currentTry = 0 | |
| // Bad | |
| var MAX_RETRIES = 3 | |
| \`\`\` | |
| ### Function Declarations | |
| Use function expressions for consistency: | |
| \`\`\`javascript | |
| // Good | |
| const calculateTotal = (items) => { | |
| return items.reduce((sum, item) => sum + item.price, 0) | |
| } | |
| // Bad (inconsistent style) | |
| function calculateTotal(items) { | |
| return items.reduce((sum, item) => sum + item.price, 0) | |
| } | |
| \`\`\` | |
| ### Async/Await | |
| Prefer async/await over promise chains: | |
| \`\`\`javascript | |
| // Good | |
| async function fetchUserData(userId) { | |
| const user = await db.getUser(userId) | |
| const orders = await db.getOrders(user.id) | |
| return { user, orders } | |
| } | |
| // Bad | |
| function fetchUserData(userId) { | |
| return db.getUser(userId) | |
| .then(user => db.getOrders(user.id) | |
| .then(orders => ({ user, orders }))) | |
| } | |
| \`\`\` | |
| ## Python | |
| ### Import Organization | |
| Order imports: standard library, third-party, local: | |
| \`\`\`python | |
| # Good | |
| import os | |
| import sys | |
| import numpy as np | |
| import pandas as pd | |
| from app.models import User | |
| from app.utils import helper | |
| # Bad - mixed order | |
| from app.models import User | |
| import numpy as np | |
| import os | |
| \`\`\` | |
| ### Type Hints | |
| Use type hints for all function signatures: | |
| \`\`\`python | |
| # Good | |
| def calculate_average(numbers: list[float]) -> float: | |
| return sum(numbers) / len(numbers) | |
| # Bad | |
| def calculate_average(numbers): | |
| return sum(numbers) / len(numbers) | |
| \`\`\` | |
| ## Additional Languages | |
| See language-specific guides for: | |
| - Go: `references/go-style.md` | |
| - Rust: `references/rust-style.md` | |
| - Ruby: `references/ruby-style.md` | |
| ``` | |
| ### hooks/hooks.json | |
| ```json | |
| { | |
| "PreToolUse": [ | |
| { | |
| "matcher": "Write|Edit", | |
| "hooks": [ | |
| { | |
| "type": "prompt", | |
| "prompt": "Before modifying code, verify it meets our coding standards from the code-standards skill. Check formatting, naming conventions, and documentation. If standards aren't met, suggest improvements.", | |
| "timeout": 30 | |
| } | |
| ] | |
| } | |
| ], | |
| "Stop": [ | |
| { | |
| "matcher": ".*", | |
| "hooks": [ | |
| { | |
| "type": "command", | |
| "command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/validate-commit.sh", | |
| "timeout": 45 | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ``` | |
| ### hooks/scripts/validate-commit.sh | |
| ```bash | |
| #!/bin/bash | |
| # Validate code quality before task completion | |
| set -e | |
| # Check if there are any uncommitted changes | |
| if [[ -z $(git status -s) ]]; then | |
| echo '{"systemMessage": "No changes to validate. Task complete."}' | |
| exit 0 | |
| fi | |
| # Run linter on changed files | |
| CHANGED_FILES=$(git diff --name-only --cached | grep -E '\.(js|ts|py)$' || true) | |
| if [[ -z "$CHANGED_FILES" ]]; then | |
| echo '{"systemMessage": "No code files changed. Validation passed."}' | |
| exit 0 | |
| fi | |
| # Run appropriate linters | |
| ISSUES=0 | |
| for file in $CHANGED_FILES; do | |
| case "$file" in | |
| *.js|*.ts) | |
| if ! npx eslint "$file" --quiet; then | |
| ISSUES=$((ISSUES + 1)) | |
| fi | |
| ;; | |
| *.py) | |
| if ! python -m pylint "$file" --errors-only; then | |
| ISSUES=$((ISSUES + 1)) | |
| fi | |
| ;; | |
| esac | |
| done | |
| if [[ $ISSUES -gt 0 ]]; then | |
| echo "{\"systemMessage\": \"Found $ISSUES code quality issues. Please fix before completing.\"}" | |
| exit 1 | |
| fi | |
| echo '{"systemMessage": "Code quality checks passed. Ready to commit."}' | |
| exit 0 | |
| ``` | |
| ## Usage Examples | |
| ### Running Commands | |
| ``` | |
| $ claude | |
| > /lint | |
| Running linter checks... | |
| Critical Issues (2): | |
| src/api/users.js:45 - SQL injection vulnerability | |
| src/utils/helpers.js:12 - Unhandled promise rejection | |
| Warnings (5): | |
| src/components/Button.tsx:23 - Missing PropTypes | |
| ... | |
| Style Suggestions (8): | |
| src/index.js:1 - Use const instead of let | |
| ... | |
| > /test | |
| Running test suite... | |
| Test Results: | |
| ✓ 245 passed | |
| ✗ 3 failed | |
| ○ 2 skipped | |
| Coverage: 87.3% | |
| Untested Files: | |
| src/utils/cache.js - 0% coverage | |
| src/api/webhooks.js - 23% coverage | |
| Failed Tests: | |
| 1. User API › GET /users › should handle pagination | |
| Expected 200, received 500 | |
| ... | |
| ``` | |
| ### Using Agents | |
| ``` | |
| > Review the changes in src/api/users.js | |
| [code-reviewer agent selected automatically] | |
| Code Review: src/api/users.js | |
| Critical Issues: | |
| 1. Line 45: SQL injection vulnerability | |
| - Using string concatenation for SQL query | |
| - Replace with parameterized query | |
| - Priority: CRITICAL | |
| 2. Line 67: Missing error handling | |
| - Database query without try/catch | |
| - Could crash server on DB error | |
| - Priority: HIGH | |
| Suggestions: | |
| 1. Line 23: Consider caching user data | |
| - Frequent DB queries for same users | |
| - Add Redis caching layer | |
| - Priority: MEDIUM | |
| ``` | |
| ## Key Points | |
| 1. **Complete manifest**: All recommended metadata fields | |
| 2. **Multiple components**: Commands, agents, skills, hooks | |
| 3. **Rich skills**: References and examples for detailed information | |
| 4. **Automation**: Hooks enforce standards automatically | |
| 5. **Integration**: Components work together cohesively | |
| ## When to Use This Pattern | |
| - Production plugins for distribution | |
| - Team collaboration tools | |
| - Plugins requiring consistency enforcement | |
| - Complex workflows with multiple entry points | |