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.
|