# Workflow: Add a Script to a Skill
**Read these reference files NOW:**
1. references/using-scripts.md
## Step 1: Identify the Skill
Ask (if not already provided):
- Which skill needs a script?
- What operation should the script perform?
## Step 2: Analyze Script Need
Confirm this is a good script candidate:
- [ ] Same code runs across multiple invocations
- [ ] Operation is error-prone when rewritten
- [ ] Consistency matters more than flexibility
If not a good fit, suggest alternatives (inline code in workflow, reference examples).
## Step 3: Create Scripts Directory
```bash
mkdir -p ~/.claude/skills/{skill-name}/scripts
```
## Step 4: Design Script
Gather requirements:
- What inputs does the script need?
- What should it output or accomplish?
- What errors might occur?
- Should it be idempotent?
Choose language:
- **bash** - Shell operations, file manipulation, CLI tools
- **python** - Data processing, API calls, complex logic
- **node/ts** - JavaScript ecosystem, async operations
## Step 5: Write Script File
Create `scripts/{script-name}.{ext}` with:
- Purpose comment at top
- Usage instructions
- Input validation
- Error handling
- Clear output/feedback
For bash scripts:
```bash
#!/bin/bash
set -euo pipefail
```
## Step 6: Make Executable (if bash)
```bash
chmod +x ~/.claude/skills/{skill-name}/scripts/{script-name}.sh
```
## Step 7: Update Workflow to Use Script
Find the workflow that needs this operation. Add:
```xml
...
N. Run `scripts/{script-name}.sh [arguments]`
N+1. Verify operation succeeded
...
```
## Step 8: Test
Invoke the skill workflow and verify:
- Script runs at the right step
- Inputs are passed correctly
- Errors are handled gracefully
- Output matches expectations
Script is complete when:
- [ ] scripts/ directory exists
- [ ] Script file has proper structure (comments, validation, error handling)
- [ ] Script is executable (if bash)
- [ ] At least one workflow references the script
- [ ] No hardcoded secrets or credentials
- [ ] Tested with real invocation