mirror of
https://github.com/anthropics/claude-code.git
synced 2026-05-06 06:12:41 +00:00
905 lines
16 KiB
Markdown
905 lines
16 KiB
Markdown
|
|
# Marketplace Considerations for Commands
|
|||
|
|
|
|||
|
|
Guidelines for creating commands designed for distribution and marketplace success.
|
|||
|
|
|
|||
|
|
## Overview
|
|||
|
|
|
|||
|
|
Commands distributed through marketplaces need additional consideration beyond personal use commands. They must work across environments, handle diverse use cases, and provide excellent user experience for unknown users.
|
|||
|
|
|
|||
|
|
## Design for Distribution
|
|||
|
|
|
|||
|
|
### Universal Compatibility
|
|||
|
|
|
|||
|
|
**Cross-platform considerations:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Cross-platform command
|
|||
|
|
allowed-tools: Bash(*)
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Platform-Aware Command
|
|||
|
|
|
|||
|
|
Detecting platform...
|
|||
|
|
|
|||
|
|
case "$(uname)" in
|
|||
|
|
Darwin*) PLATFORM="macOS" ;;
|
|||
|
|
Linux*) PLATFORM="Linux" ;;
|
|||
|
|
MINGW*|MSYS*|CYGWIN*) PLATFORM="Windows" ;;
|
|||
|
|
*) PLATFORM="Unknown" ;;
|
|||
|
|
esac
|
|||
|
|
|
|||
|
|
Platform: $PLATFORM
|
|||
|
|
|
|||
|
|
<!-- Adjust behavior based on platform -->
|
|||
|
|
if [ "$PLATFORM" = "Windows" ]; then
|
|||
|
|
# Windows-specific handling
|
|||
|
|
PATH_SEP="\\"
|
|||
|
|
NULL_DEVICE="NUL"
|
|||
|
|
else
|
|||
|
|
# Unix-like handling
|
|||
|
|
PATH_SEP="/"
|
|||
|
|
NULL_DEVICE="/dev/null"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Platform-appropriate implementation...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Avoid platform-specific commands:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!-- BAD: macOS-specific -->
|
|||
|
|
!`pbcopy < file.txt`
|
|||
|
|
|
|||
|
|
<!-- GOOD: Platform detection -->
|
|||
|
|
if command -v pbcopy > /dev/null; then
|
|||
|
|
pbcopy < file.txt
|
|||
|
|
elif command -v xclip > /dev/null; then
|
|||
|
|
xclip -selection clipboard < file.txt
|
|||
|
|
elif command -v clip.exe > /dev/null; then
|
|||
|
|
cat file.txt | clip.exe
|
|||
|
|
else
|
|||
|
|
echo "Clipboard not available on this platform"
|
|||
|
|
fi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Minimal Dependencies
|
|||
|
|
|
|||
|
|
**Check for required tools:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Dependency-aware command
|
|||
|
|
allowed-tools: Bash(*)
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Check Dependencies
|
|||
|
|
|
|||
|
|
Required tools:
|
|||
|
|
- git
|
|||
|
|
- jq
|
|||
|
|
- node
|
|||
|
|
|
|||
|
|
Checking availability...
|
|||
|
|
|
|||
|
|
MISSING_DEPS=""
|
|||
|
|
|
|||
|
|
for tool in git jq node; do
|
|||
|
|
if ! command -v $tool > /dev/null; then
|
|||
|
|
MISSING_DEPS="$MISSING_DEPS $tool"
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
if [ -n "$MISSING_DEPS" ]; then
|
|||
|
|
❌ ERROR: Missing required dependencies:$MISSING_DEPS
|
|||
|
|
|
|||
|
|
INSTALLATION:
|
|||
|
|
- git: https://git-scm.com/downloads
|
|||
|
|
- jq: https://stedolan.github.io/jq/download/
|
|||
|
|
- node: https://nodejs.org/
|
|||
|
|
|
|||
|
|
Install missing tools and try again.
|
|||
|
|
|
|||
|
|
Exit.
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
✓ All dependencies available
|
|||
|
|
|
|||
|
|
[Continue with command...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Document optional dependencies:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!--
|
|||
|
|
DEPENDENCIES:
|
|||
|
|
Required:
|
|||
|
|
- git 2.0+: Version control
|
|||
|
|
- jq 1.6+: JSON processing
|
|||
|
|
|
|||
|
|
Optional:
|
|||
|
|
- gh: GitHub CLI (for PR operations)
|
|||
|
|
- docker: Container operations (for containerized tests)
|
|||
|
|
|
|||
|
|
Feature availability depends on installed tools.
|
|||
|
|
-->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Graceful Degradation
|
|||
|
|
|
|||
|
|
**Handle missing features:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Feature-aware command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Feature Detection
|
|||
|
|
|
|||
|
|
Detecting available features...
|
|||
|
|
|
|||
|
|
FEATURES=""
|
|||
|
|
|
|||
|
|
if command -v gh > /dev/null; then
|
|||
|
|
FEATURES="$FEATURES github"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if command -v docker > /dev/null; then
|
|||
|
|
FEATURES="$FEATURES docker"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
Available features: $FEATURES
|
|||
|
|
|
|||
|
|
if echo "$FEATURES" | grep -q "github"; then
|
|||
|
|
# Full functionality with GitHub integration
|
|||
|
|
echo "✓ GitHub integration available"
|
|||
|
|
else
|
|||
|
|
# Reduced functionality without GitHub
|
|||
|
|
echo "⚠ Limited functionality: GitHub CLI not installed"
|
|||
|
|
echo " Install 'gh' for full features"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Adapt behavior based on available features...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## User Experience for Unknown Users
|
|||
|
|
|
|||
|
|
### Clear Onboarding
|
|||
|
|
|
|||
|
|
**First-run experience:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Command with onboarding
|
|||
|
|
allowed-tools: Read, Write
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# First Run Check
|
|||
|
|
|
|||
|
|
if [ ! -f ".claude/command-initialized" ]; then
|
|||
|
|
**Welcome to Command Name!**
|
|||
|
|
|
|||
|
|
This appears to be your first time using this command.
|
|||
|
|
|
|||
|
|
WHAT THIS COMMAND DOES:
|
|||
|
|
[Brief explanation of purpose and benefits]
|
|||
|
|
|
|||
|
|
QUICK START:
|
|||
|
|
1. Basic usage: /command [arg]
|
|||
|
|
2. For help: /command help
|
|||
|
|
3. Examples: /command examples
|
|||
|
|
|
|||
|
|
SETUP:
|
|||
|
|
No additional setup required. You're ready to go!
|
|||
|
|
|
|||
|
|
✓ Initialization complete
|
|||
|
|
|
|||
|
|
[Create initialization marker]
|
|||
|
|
|
|||
|
|
Ready to proceed with your request...
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Normal command execution...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Progressive feature discovery:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Command with tips
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Command Execution
|
|||
|
|
|
|||
|
|
[Main functionality...]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
💡 TIP: Did you know?
|
|||
|
|
|
|||
|
|
You can speed up this command with the --fast flag:
|
|||
|
|
/command --fast [args]
|
|||
|
|
|
|||
|
|
For more tips: /command tips
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Comprehensive Error Handling
|
|||
|
|
|
|||
|
|
**Anticipate user mistakes:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Forgiving command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# User Input Handling
|
|||
|
|
|
|||
|
|
Argument: "$1"
|
|||
|
|
|
|||
|
|
<!-- Check for common typos -->
|
|||
|
|
if [ "$1" = "hlep" ] || [ "$1" = "hepl" ]; then
|
|||
|
|
Did you mean: help?
|
|||
|
|
|
|||
|
|
Showing help instead...
|
|||
|
|
[Display help]
|
|||
|
|
|
|||
|
|
Exit.
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
<!-- Suggest similar commands if not found -->
|
|||
|
|
if [ "$1" != "valid-option1" ] && [ "$1" != "valid-option2" ]; then
|
|||
|
|
❌ Unknown option: $1
|
|||
|
|
|
|||
|
|
Did you mean:
|
|||
|
|
- valid-option1 (most similar)
|
|||
|
|
- valid-option2
|
|||
|
|
|
|||
|
|
For all options: /command help
|
|||
|
|
|
|||
|
|
Exit.
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Command continues...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Helpful diagnostics:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Diagnostic command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Operation Failed
|
|||
|
|
|
|||
|
|
The operation could not complete.
|
|||
|
|
|
|||
|
|
**Diagnostic Information:**
|
|||
|
|
|
|||
|
|
Environment:
|
|||
|
|
- Platform: $(uname)
|
|||
|
|
- Shell: $SHELL
|
|||
|
|
- Working directory: $(pwd)
|
|||
|
|
- Command: /command $@
|
|||
|
|
|
|||
|
|
Checking common issues:
|
|||
|
|
- Git repository: $(git rev-parse --git-dir 2>&1)
|
|||
|
|
- Write permissions: $(test -w . && echo "OK" || echo "DENIED")
|
|||
|
|
- Required files: $(test -f config.yml && echo "Found" || echo "Missing")
|
|||
|
|
|
|||
|
|
This information helps debug the issue.
|
|||
|
|
|
|||
|
|
For support, include the above diagnostics.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Distribution Best Practices
|
|||
|
|
|
|||
|
|
### Namespace Awareness
|
|||
|
|
|
|||
|
|
**Avoid name collisions:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Namespaced command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<!--
|
|||
|
|
COMMAND NAME: plugin-name-command
|
|||
|
|
|
|||
|
|
This command is namespaced with the plugin name to avoid
|
|||
|
|
conflicts with commands from other plugins.
|
|||
|
|
|
|||
|
|
Alternative naming approaches:
|
|||
|
|
- Use plugin prefix: /plugin-command
|
|||
|
|
- Use category: /category-command
|
|||
|
|
- Use verb-noun: /verb-noun
|
|||
|
|
|
|||
|
|
Chosen approach: plugin-name prefix
|
|||
|
|
Reasoning: Clearest ownership, least likely to conflict
|
|||
|
|
-->
|
|||
|
|
|
|||
|
|
# Plugin Name Command
|
|||
|
|
|
|||
|
|
[Implementation...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Document naming rationale:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!--
|
|||
|
|
NAMING DECISION:
|
|||
|
|
|
|||
|
|
Command name: /deploy-app
|
|||
|
|
|
|||
|
|
Alternatives considered:
|
|||
|
|
- /deploy: Too generic, likely conflicts
|
|||
|
|
- /app-deploy: Less intuitive ordering
|
|||
|
|
- /my-plugin-deploy: Too verbose
|
|||
|
|
|
|||
|
|
Final choice balances:
|
|||
|
|
- Discoverability (clear purpose)
|
|||
|
|
- Brevity (easy to type)
|
|||
|
|
- Uniqueness (unlikely conflicts)
|
|||
|
|
-->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Configurability
|
|||
|
|
|
|||
|
|
**User preferences:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Configurable command
|
|||
|
|
allowed-tools: Read
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Load User Configuration
|
|||
|
|
|
|||
|
|
Default configuration:
|
|||
|
|
- verbose: false
|
|||
|
|
- color: true
|
|||
|
|
- max_results: 10
|
|||
|
|
|
|||
|
|
Checking for user config: .claude/plugin-name.local.md
|
|||
|
|
|
|||
|
|
if [ -f ".claude/plugin-name.local.md" ]; then
|
|||
|
|
# Parse YAML frontmatter for settings
|
|||
|
|
VERBOSE=$(grep "^verbose:" .claude/plugin-name.local.md | cut -d: -f2 | tr -d ' ')
|
|||
|
|
COLOR=$(grep "^color:" .claude/plugin-name.local.md | cut -d: -f2 | tr -d ' ')
|
|||
|
|
MAX_RESULTS=$(grep "^max_results:" .claude/plugin-name.local.md | cut -d: -f2 | tr -d ' ')
|
|||
|
|
|
|||
|
|
echo "✓ Using user configuration"
|
|||
|
|
else
|
|||
|
|
echo "Using default configuration"
|
|||
|
|
echo "Create .claude/plugin-name.local.md to customize"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Use configuration in command...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Sensible defaults:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Command with smart defaults
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Smart Defaults
|
|||
|
|
|
|||
|
|
Configuration:
|
|||
|
|
- Format: ${FORMAT:-json} # Defaults to json
|
|||
|
|
- Output: ${OUTPUT:-stdout} # Defaults to stdout
|
|||
|
|
- Verbose: ${VERBOSE:-false} # Defaults to false
|
|||
|
|
|
|||
|
|
These defaults work for 80% of use cases.
|
|||
|
|
|
|||
|
|
Override with arguments:
|
|||
|
|
/command --format yaml --output file.txt --verbose
|
|||
|
|
|
|||
|
|
Or set in .claude/plugin-name.local.md:
|
|||
|
|
\`\`\`yaml
|
|||
|
|
---
|
|||
|
|
format: yaml
|
|||
|
|
output: custom.txt
|
|||
|
|
verbose: true
|
|||
|
|
---
|
|||
|
|
\`\`\`
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Version Compatibility
|
|||
|
|
|
|||
|
|
**Version checking:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Version-aware command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<!--
|
|||
|
|
COMMAND VERSION: 2.1.0
|
|||
|
|
|
|||
|
|
COMPATIBILITY:
|
|||
|
|
- Requires plugin version: >= 2.0.0
|
|||
|
|
- Breaking changes from v1.x documented in MIGRATION.md
|
|||
|
|
|
|||
|
|
VERSION HISTORY:
|
|||
|
|
- v2.1.0: Added --new-feature flag
|
|||
|
|
- v2.0.0: BREAKING: Changed argument order
|
|||
|
|
- v1.0.0: Initial release
|
|||
|
|
-->
|
|||
|
|
|
|||
|
|
# Version Check
|
|||
|
|
|
|||
|
|
Command version: 2.1.0
|
|||
|
|
Plugin version: [detect from plugin.json]
|
|||
|
|
|
|||
|
|
if [ "$PLUGIN_VERSION" < "2.0.0" ]; then
|
|||
|
|
❌ ERROR: Incompatible plugin version
|
|||
|
|
|
|||
|
|
This command requires plugin version >= 2.0.0
|
|||
|
|
Current version: $PLUGIN_VERSION
|
|||
|
|
|
|||
|
|
Update plugin:
|
|||
|
|
/plugin update plugin-name
|
|||
|
|
|
|||
|
|
Exit.
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
✓ Version compatible
|
|||
|
|
|
|||
|
|
[Command continues...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Deprecation warnings:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Command with deprecation warnings
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Deprecation Check
|
|||
|
|
|
|||
|
|
if [ "$1" = "--old-flag" ]; then
|
|||
|
|
⚠️ DEPRECATION WARNING
|
|||
|
|
|
|||
|
|
The --old-flag option is deprecated as of v2.0.0
|
|||
|
|
It will be removed in v3.0.0 (est. June 2025)
|
|||
|
|
|
|||
|
|
Use instead: --new-flag
|
|||
|
|
|
|||
|
|
Example:
|
|||
|
|
Old: /command --old-flag value
|
|||
|
|
New: /command --new-flag value
|
|||
|
|
|
|||
|
|
See migration guide: /command migrate
|
|||
|
|
|
|||
|
|
Continuing with deprecated behavior for now...
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Handle both old and new flags during deprecation period...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Marketplace Presentation
|
|||
|
|
|
|||
|
|
### Command Discovery
|
|||
|
|
|
|||
|
|
**Descriptive naming:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Review pull request with security and quality checks
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<!-- GOOD: Descriptive name and description -->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Do the thing
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
<!-- BAD: Vague description -->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Searchable keywords:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!--
|
|||
|
|
KEYWORDS: security, code-review, quality, validation, audit
|
|||
|
|
|
|||
|
|
These keywords help users discover this command when searching
|
|||
|
|
for related functionality in the marketplace.
|
|||
|
|
-->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Showcase Examples
|
|||
|
|
|
|||
|
|
**Compelling demonstrations:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Advanced code analysis command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Code Analysis Command
|
|||
|
|
|
|||
|
|
This command performs deep code analysis with actionable insights.
|
|||
|
|
|
|||
|
|
## Demo: Quick Security Audit
|
|||
|
|
|
|||
|
|
Try it now:
|
|||
|
|
\`\`\`
|
|||
|
|
/analyze-code src/ --security
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
**What you'll get:**
|
|||
|
|
- Security vulnerability detection
|
|||
|
|
- Code quality metrics
|
|||
|
|
- Performance bottleneck identification
|
|||
|
|
- Actionable recommendations
|
|||
|
|
|
|||
|
|
**Sample output:**
|
|||
|
|
\`\`\`
|
|||
|
|
Security Analysis Results
|
|||
|
|
=========================
|
|||
|
|
|
|||
|
|
🔴 Critical (2):
|
|||
|
|
- SQL injection risk in users.js:45
|
|||
|
|
- XSS vulnerability in display.js:23
|
|||
|
|
|
|||
|
|
🟡 Warnings (5):
|
|||
|
|
- Unvalidated input in api.js:67
|
|||
|
|
...
|
|||
|
|
|
|||
|
|
Recommendations:
|
|||
|
|
1. Fix critical issues immediately
|
|||
|
|
2. Review warnings before next release
|
|||
|
|
3. Run /analyze-code --fix for auto-fixes
|
|||
|
|
\`\`\`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Ready to analyze your code...
|
|||
|
|
|
|||
|
|
[Command implementation...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### User Reviews and Feedback
|
|||
|
|
|
|||
|
|
**Feedback mechanism:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Command with feedback
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Command Complete
|
|||
|
|
|
|||
|
|
[Command results...]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**How was your experience?**
|
|||
|
|
|
|||
|
|
This helps improve the command for everyone.
|
|||
|
|
|
|||
|
|
Rate this command:
|
|||
|
|
- 👍 Helpful
|
|||
|
|
- 👎 Not helpful
|
|||
|
|
- 🐛 Found a bug
|
|||
|
|
- 💡 Have a suggestion
|
|||
|
|
|
|||
|
|
Reply with an emoji or:
|
|||
|
|
- /command feedback
|
|||
|
|
|
|||
|
|
Your feedback matters!
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Usage analytics preparation:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!--
|
|||
|
|
ANALYTICS NOTES:
|
|||
|
|
|
|||
|
|
Track for improvement:
|
|||
|
|
- Most common arguments
|
|||
|
|
- Failure rates
|
|||
|
|
- Average execution time
|
|||
|
|
- User satisfaction scores
|
|||
|
|
|
|||
|
|
Privacy-preserving:
|
|||
|
|
- No personally identifiable information
|
|||
|
|
- Aggregate statistics only
|
|||
|
|
- User opt-out respected
|
|||
|
|
-->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Quality Standards
|
|||
|
|
|
|||
|
|
### Professional Polish
|
|||
|
|
|
|||
|
|
**Consistent branding:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Branded command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# ✨ Command Name
|
|||
|
|
|
|||
|
|
Part of the [Plugin Name] suite
|
|||
|
|
|
|||
|
|
[Command functionality...]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Need Help?**
|
|||
|
|
- Documentation: https://docs.example.com
|
|||
|
|
- Support: support@example.com
|
|||
|
|
- Community: https://community.example.com
|
|||
|
|
|
|||
|
|
Powered by Plugin Name v2.1.0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Attention to detail:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!-- Details that matter -->
|
|||
|
|
|
|||
|
|
✓ Use proper emoji/symbols consistently
|
|||
|
|
✓ Align output columns neatly
|
|||
|
|
✓ Format numbers with thousands separators
|
|||
|
|
✓ Use color/formatting appropriately
|
|||
|
|
✓ Provide progress indicators
|
|||
|
|
✓ Show estimated time remaining
|
|||
|
|
✓ Confirm successful operations
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Reliability
|
|||
|
|
|
|||
|
|
**Idempotency:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Idempotent command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Safe Repeated Execution
|
|||
|
|
|
|||
|
|
Checking if operation already completed...
|
|||
|
|
|
|||
|
|
if [ -f ".claude/operation-completed.flag" ]; then
|
|||
|
|
ℹ️ Operation already completed
|
|||
|
|
|
|||
|
|
Completed at: $(cat .claude/operation-completed.flag)
|
|||
|
|
|
|||
|
|
To re-run:
|
|||
|
|
1. Remove flag: rm .claude/operation-completed.flag
|
|||
|
|
2. Run command again
|
|||
|
|
|
|||
|
|
Otherwise, no action needed.
|
|||
|
|
|
|||
|
|
Exit.
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
Performing operation...
|
|||
|
|
|
|||
|
|
[Safe, repeatable operation...]
|
|||
|
|
|
|||
|
|
Marking complete...
|
|||
|
|
echo "$(date)" > .claude/operation-completed.flag
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Atomic operations:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Atomic command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Atomic Operation
|
|||
|
|
|
|||
|
|
This operation is atomic - either fully succeeds or fully fails.
|
|||
|
|
|
|||
|
|
Creating temporary workspace...
|
|||
|
|
TEMP_DIR=$(mktemp -d)
|
|||
|
|
|
|||
|
|
Performing changes in isolated environment...
|
|||
|
|
[Make changes in $TEMP_DIR]
|
|||
|
|
|
|||
|
|
if [ $? -eq 0 ]; then
|
|||
|
|
✓ Changes validated
|
|||
|
|
|
|||
|
|
Applying changes atomically...
|
|||
|
|
mv $TEMP_DIR/* ./target/
|
|||
|
|
|
|||
|
|
✓ Operation complete
|
|||
|
|
else
|
|||
|
|
❌ Changes failed validation
|
|||
|
|
|
|||
|
|
Rolling back...
|
|||
|
|
rm -rf $TEMP_DIR
|
|||
|
|
|
|||
|
|
No changes applied. Safe to retry.
|
|||
|
|
fi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Testing for Distribution
|
|||
|
|
|
|||
|
|
### Pre-Release Checklist
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!--
|
|||
|
|
PRE-RELEASE CHECKLIST:
|
|||
|
|
|
|||
|
|
Functionality:
|
|||
|
|
- [ ] Works on macOS
|
|||
|
|
- [ ] Works on Linux
|
|||
|
|
- [ ] Works on Windows (WSL)
|
|||
|
|
- [ ] All arguments tested
|
|||
|
|
- [ ] Error cases handled
|
|||
|
|
- [ ] Edge cases covered
|
|||
|
|
|
|||
|
|
User Experience:
|
|||
|
|
- [ ] Clear description
|
|||
|
|
- [ ] Helpful error messages
|
|||
|
|
- [ ] Examples provided
|
|||
|
|
- [ ] First-run experience good
|
|||
|
|
- [ ] Documentation complete
|
|||
|
|
|
|||
|
|
Distribution:
|
|||
|
|
- [ ] No hardcoded paths
|
|||
|
|
- [ ] Dependencies documented
|
|||
|
|
- [ ] Configuration options clear
|
|||
|
|
- [ ] Version number set
|
|||
|
|
- [ ] Changelog updated
|
|||
|
|
|
|||
|
|
Quality:
|
|||
|
|
- [ ] No TODO comments
|
|||
|
|
- [ ] No debug code
|
|||
|
|
- [ ] Performance acceptable
|
|||
|
|
- [ ] Security reviewed
|
|||
|
|
- [ ] Privacy considered
|
|||
|
|
|
|||
|
|
Support:
|
|||
|
|
- [ ] README complete
|
|||
|
|
- [ ] Troubleshooting guide
|
|||
|
|
- [ ] Support contact provided
|
|||
|
|
- [ ] Feedback mechanism
|
|||
|
|
- [ ] License specified
|
|||
|
|
-->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Beta Testing
|
|||
|
|
|
|||
|
|
**Beta release approach:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Beta command (v0.9.0)
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 🧪 Beta Command
|
|||
|
|
|
|||
|
|
**This is a beta release**
|
|||
|
|
|
|||
|
|
Features may change based on feedback.
|
|||
|
|
|
|||
|
|
BETA STATUS:
|
|||
|
|
- Version: 0.9.0
|
|||
|
|
- Stability: Experimental
|
|||
|
|
- Support: Limited
|
|||
|
|
- Feedback: Encouraged
|
|||
|
|
|
|||
|
|
Known limitations:
|
|||
|
|
- Performance not optimized
|
|||
|
|
- Some edge cases not handled
|
|||
|
|
- Documentation incomplete
|
|||
|
|
|
|||
|
|
Help improve this command:
|
|||
|
|
- Report issues: /command report-issue
|
|||
|
|
- Suggest features: /command suggest
|
|||
|
|
- Join beta testers: /command join-beta
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
[Command implementation...]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Thank you for beta testing!**
|
|||
|
|
|
|||
|
|
Your feedback helps make this command better.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Maintenance and Updates
|
|||
|
|
|
|||
|
|
### Update Strategy
|
|||
|
|
|
|||
|
|
**Versioned commands:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
<!--
|
|||
|
|
VERSION STRATEGY:
|
|||
|
|
|
|||
|
|
Major (X.0.0): Breaking changes
|
|||
|
|
- Document all breaking changes
|
|||
|
|
- Provide migration guide
|
|||
|
|
- Support old version briefly
|
|||
|
|
|
|||
|
|
Minor (x.Y.0): New features
|
|||
|
|
- Backward compatible
|
|||
|
|
- Announce new features
|
|||
|
|
- Update examples
|
|||
|
|
|
|||
|
|
Patch (x.y.Z): Bug fixes
|
|||
|
|
- No user-facing changes
|
|||
|
|
- Update changelog
|
|||
|
|
- Security fixes prioritized
|
|||
|
|
|
|||
|
|
Release schedule:
|
|||
|
|
- Patches: As needed
|
|||
|
|
- Minors: Monthly
|
|||
|
|
- Majors: Annually or as needed
|
|||
|
|
-->
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Update notifications:**
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
---
|
|||
|
|
description: Update-aware command
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Check for Updates
|
|||
|
|
|
|||
|
|
Current version: 2.1.0
|
|||
|
|
Latest version: [check if available]
|
|||
|
|
|
|||
|
|
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
|
|||
|
|
📢 UPDATE AVAILABLE
|
|||
|
|
|
|||
|
|
New version: $LATEST_VERSION
|
|||
|
|
Current: $CURRENT_VERSION
|
|||
|
|
|
|||
|
|
What's new:
|
|||
|
|
- Feature improvements
|
|||
|
|
- Bug fixes
|
|||
|
|
- Performance enhancements
|
|||
|
|
|
|||
|
|
Update with:
|
|||
|
|
/plugin update plugin-name
|
|||
|
|
|
|||
|
|
Release notes: https://releases.example.com/v$LATEST_VERSION
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
[Command continues...]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Best Practices Summary
|
|||
|
|
|
|||
|
|
### Distribution Design
|
|||
|
|
|
|||
|
|
1. **Universal**: Works across platforms and environments
|
|||
|
|
2. **Self-contained**: Minimal dependencies, clear requirements
|
|||
|
|
3. **Graceful**: Degrades gracefully when features unavailable
|
|||
|
|
4. **Forgiving**: Anticipates and handles user mistakes
|
|||
|
|
5. **Helpful**: Clear errors, good defaults, excellent docs
|
|||
|
|
|
|||
|
|
### Marketplace Success
|
|||
|
|
|
|||
|
|
1. **Discoverable**: Clear name, good description, searchable keywords
|
|||
|
|
2. **Professional**: Polished presentation, consistent branding
|
|||
|
|
3. **Reliable**: Tested thoroughly, handles edge cases
|
|||
|
|
4. **Maintainable**: Versioned, updated regularly, supported
|
|||
|
|
5. **User-focused**: Great UX, responsive to feedback
|
|||
|
|
|
|||
|
|
### Quality Standards
|
|||
|
|
|
|||
|
|
1. **Complete**: Fully documented, all features working
|
|||
|
|
2. **Tested**: Works in real environments, edge cases handled
|
|||
|
|
3. **Secure**: No vulnerabilities, safe operations
|
|||
|
|
4. **Performant**: Reasonable speed, resource-efficient
|
|||
|
|
5. **Ethical**: Privacy-respecting, user consent
|
|||
|
|
|
|||
|
|
With these considerations, commands become marketplace-ready and delight users across diverse environments and use cases.
|