script-best-practices

Script Best Practices

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "script-best-practices" with this command: npx skills add mgd34msu/goodvibes-plugin/mgd34msu-goodvibes-plugin-script-best-practices

Script Best Practices

Guidelines for bundling executable scripts in skills.

When to Bundle Scripts

Bundle scripts when:

  • Same code would be rewritten repeatedly

  • Deterministic reliability needed

  • Complex validation required

  • Token cost of generation exceeds execution cost

Error Handling

Always handle errors explicitly rather than punting to Claude:

Good: Handle errors explicitly

def process(path): try: with open(path) as f: return f.read() except FileNotFoundError: print(f"Creating {path}") with open(path, 'w') as f: f.write('') return '' except PermissionError: print(f"ERROR: Cannot access {path} - check permissions") return None

Bad: Let errors propagate unexpectedly

def process(path): with open(path) as f: return f.read() # Will crash on missing file

Document Constants

Every magic number needs rationale:

Good: Document constants

TIMEOUT = 30 # HTTP requests typically complete in 30s MAX_RETRIES = 3 # Most failures resolve by second retry BATCH_SIZE = 100 # Balance between memory and API calls

Bad: Magic numbers

TIMEOUT = 47 # Why 47? MAX_RETRIES = 3 # Why 3?

Clarify Intent in SKILL.md

Be explicit about how scripts should be used:

Execute the script:

Run scripts/analyze.py to extract form fields from the PDF.

Read as reference:

See scripts/analyze.py for the extraction algorithm (do not run directly).

Script Organization

skill-name/ SKILL.md scripts/ analyze.py # Main entry point validate.py # Validation utilities helpers/ # Shared utilities formatting.py parsing.py

Dependencies

Always list dependencies explicitly:

Requirements

Before running scripts:

pip install pdfplumber python-docx

Or with the provided requirements file:

pip install -r scripts/requirements.txt

## Exit Codes

Use consistent exit codes:

```python
import sys

EXIT_SUCCESS = 0
EXIT_INVALID_INPUT = 1
EXIT_FILE_NOT_FOUND = 2
EXIT_PERMISSION_ERROR = 3

def main():
    if not validate_input():
        sys.exit(EXIT_INVALID_INPUT)
    # ... process ...
    sys.exit(EXIT_SUCCESS)

Output Formatting

Make output parseable:

# Good: Structured output
import json

result = {
    "status": "success",
    "files_processed": 5,
    "errors": []
}
print(json.dumps(result))

# Bad: Unstructured output
print("Done! Processed 5 files with no errors.")

Idempotency

Scripts should be safe to run multiple times:

def ensure_directory(path):
    """Create directory if it doesn't exist (idempotent)."""
    os.makedirs(path, exist_ok=True)

def write_if_changed(path, content):
    """Only write if content differs (idempotent)."""
    if os.path.exists(path):
        with open(path) as f:
            if f.read() == content:
                return False  # No change needed
    with open(path, 'w') as f:
        f.write(content)
    return True

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

error-recovery

No summary provided by upstream source.

Repository SourceNeeds Review
General

task-orchestration

No summary provided by upstream source.

Repository SourceNeeds Review
General

project-onboarding

No summary provided by upstream source.

Repository SourceNeeds Review
General

goodvibes-memory

No summary provided by upstream source.

Repository SourceNeeds Review