diff options
Diffstat (limited to '')
| -rw-r--r-- | .agents/skills/command-development/references/marketplace-considerations.md | 904 |
1 files changed, 904 insertions, 0 deletions
diff --git a/.agents/skills/command-development/references/marketplace-considerations.md b/.agents/skills/command-development/references/marketplace-considerations.md new file mode 100644 index 0000000..03e706c --- /dev/null +++ b/.agents/skills/command-development/references/marketplace-considerations.md @@ -0,0 +1,904 @@ +# 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. |
