Files
claude-engineering-plugin/plugins/compounding-engineering/skills/create-agent-skills/references/using-scripts.md
Kieran Klaassen 8cc99ab483 feat(plugin): reorganize compounding-engineering v2.0.0
Major restructure of the compounding-engineering plugin:

## Agents (24 total, now categorized)
- review/ (10): architecture-strategist, code-simplicity-reviewer,
  data-integrity-guardian, dhh-rails-reviewer, kieran-rails-reviewer,
  kieran-python-reviewer, kieran-typescript-reviewer,
  pattern-recognition-specialist, performance-oracle, security-sentinel
- research/ (4): best-practices-researcher, framework-docs-researcher,
  git-history-analyzer, repo-research-analyst
- design/ (3): design-implementation-reviewer, design-iterator,
  figma-design-sync
- workflow/ (6): bug-reproduction-validator, every-style-editor,
  feedback-codifier, lint, pr-comment-resolver, spec-flow-analyzer
- docs/ (1): ankane-readme-writer

## Commands (15 total)
- Moved workflow commands to commands/workflows/ subdirectory
- Added: changelog, create-agent-skill, heal-skill, plan_review,
  prime, reproduce-bug, resolve_parallel, resolve_pr_parallel

## Skills (11 total)
- Added: andrew-kane-gem-writer, codify-docs, create-agent-skills,
  dhh-ruby-style, dspy-ruby, every-style-editor, file-todos,
  frontend-design, git-worktree, skill-creator
- Kept: gemini-imagegen

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 11:42:18 -08:00

3.0 KiB

Using Scripts in Skills

Scripts are executable code that Claude runs as-is rather than regenerating each time. They ensure reliable, error-free execution of repeated operations.

<when_to_use> Use scripts when:

  • The same code runs across multiple skill invocations
  • Operations are error-prone when rewritten from scratch
  • Complex shell commands or API interactions are involved
  • Consistency matters more than flexibility

Common script types:

  • Deployment - Deploy to Vercel, publish packages, push releases
  • Setup - Initialize projects, install dependencies, configure environments
  • API calls - Authenticated requests, webhook handlers, data fetches
  • Data processing - Transform files, batch operations, migrations
  • Build processes - Compile, bundle, test runners </when_to_use>

<script_structure> Scripts live in scripts/ within the skill directory:

skill-name/
├── SKILL.md
├── workflows/
├── references/
├── templates/
└── scripts/
    ├── deploy.sh
    ├── setup.py
    └── fetch-data.ts

A well-structured script includes:

  1. Clear purpose comment at top
  2. Input validation
  3. Error handling
  4. Idempotent operations where possible
  5. Clear output/feedback </script_structure>

<script_example>

#!/bin/bash
# deploy.sh - Deploy project to Vercel
# Usage: ./deploy.sh [environment]
# Environments: preview (default), production

set -euo pipefail

ENVIRONMENT="${1:-preview}"

# Validate environment
if [[ "$ENVIRONMENT" != "preview" && "$ENVIRONMENT" != "production" ]]; then
    echo "Error: Environment must be 'preview' or 'production'"
    exit 1
fi

echo "Deploying to $ENVIRONMENT..."

if [[ "$ENVIRONMENT" == "production" ]]; then
    vercel --prod
else
    vercel
fi

echo "Deployment complete."

</script_example>

<workflow_integration> Workflows reference scripts like this:

<process>
## Step 5: Deploy

1. Ensure all tests pass
2. Run `scripts/deploy.sh production`
3. Verify deployment succeeded
4. Update user with deployment URL
</process>

The workflow tells Claude WHEN to run the script. The script handles HOW the operation executes. </workflow_integration>

<best_practices> Do:

  • Make scripts idempotent (safe to run multiple times)
  • Include clear usage comments
  • Validate inputs before executing
  • Provide meaningful error messages
  • Use set -euo pipefail in bash scripts

Don't:

  • Hardcode secrets or credentials (use environment variables)
  • Create scripts for one-off operations
  • Skip error handling
  • Make scripts do too many unrelated things
  • Forget to make scripts executable (chmod +x) </best_practices>

<security_considerations>

  • Never embed API keys, tokens, or secrets in scripts
  • Use environment variables for sensitive configuration
  • Validate and sanitize any user-provided inputs
  • Be cautious with scripts that delete or modify data
  • Consider adding --dry-run options for destructive operations </security_considerations>