AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Extract Scripts

skill-codewithjv-agent-skills-extract-scripts · by CodeWithJV

Review a skill and extract deterministic, mechanical steps into shell scripts. Makes skills more reliable by separating precision work (scripts) from judgment work (AI). Use when asked to extract scripts from a skill, make a skill more deterministic, or split a skill into script + prompt.

No reviews yet
0 installs
30 views
0.0% view→install

Install

$ agentstack add skill-codewithjv-agent-skills-extract-scripts

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-codewithjv-agent-skills-extract-scripts)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Extract Scripts? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Extract Scripts from Skills

Review a skill file and extract the mechanical, deterministic steps into standalone shell scripts. The skill keeps only the judgment calls — summarising, interpreting, choosing, writing.

When to Use

Activate when the user:

  • Asks to extract scripts from a skill
  • Wants to make a skill more reliable or deterministic
  • Says a skill is inconsistent or keeps getting CLI commands wrong
  • Asks to split a skill into script + prompt
  • Wants to audit a skill for script extraction candidates

Process

Step 1: Read the skill

Read the target skill file. If the user doesn't specify one, ask which skill to review.

Step 2: Classify each step

Go through every instruction in the skill and classify it:

  • Script (S) — has one right answer, runs the same every time. Examples:
  • CLI commands with specific flags (git log --since="1 week ago" --oneline)
  • File creation with fixed paths or formats (echo "# Title" > report.md)
  • Data collection (npm test 2>&1 | tail -20)
  • Directory setup, file copying, environment checks
  • Any step where you could write it once and it works forever
  • AI (A) — needs thinking, interpretation, or creativity. Examples:
  • Summarising collected data
  • Choosing between options
  • Writing prose, recommendations, analysis
  • Interpreting results or making judgment calls
  • Anything where the "right answer" depends on context

Present the classification to the user as a table:

| Step | Classification | Reason |
|------|---------------|--------|
| Run git log... | S (Script) | Exact command, one right answer |
| Summarise themes | A (AI) | Needs interpretation |

Step 3: Write the script

Create a shell script that handles all the S-classified steps.

All scripts MUST be location-independent. They should work if someone pulls them to a different folder or a different computer. Follow these rules:

  • Start with #!/bin/bash
  • Resolve the script's own directory first:

``bash SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" ` Use $SCRIPTDIR as the base for any relative paths (e.g., "$SCRIPTDIR/../data"`).

  • Never hardcode absolute paths. No /Users/jv/..., no ~/specific-project/.... Use $SCRIPT_DIR, $PWD, or accept paths as arguments.
  • Use command -v to check for required tools before running them:

``bash command -v jq >/dev/null 2>&1 || { echo "Error: jq is required but not installed"; exit 1; } ``

  • Accept inputs as arguments or environment variables, not baked-in values:

``bash INPUT_FILE="${1:?Usage: $0 }" OUTPUT_DIR="${2:-$SCRIPT_DIR/output}" ``

  • Use mktemp for temporary files instead of hardcoded /tmp/my-thing.txt:

``bash TMPFILE=$(mktemp) trap 'rm -f "$TMPFILE"' EXIT ``

  • Add a comment at the top explaining what the script does
  • End with a confirmation message (echo "Done: output written to $OUTFILE")
  • Make it executable: remind the user to run chmod +x script.sh

Use parameters to make scripts resilient:

  • Add set -euo pipefail after the shebang. This makes the script fail fast on errors (-e), undefined variables (-u), and broken pipes (-o pipefail) instead of silently continuing with wrong data.
  • Provide sensible defaults for optional parameters using ${VAR:-default}:

``bash SINCE="${1:-7}" # days to look back, defaults to 7 FORMAT="${2:-oneline}" # output format, defaults to oneline ``

  • Validate required parameters early and print usage if missing:

``bash if [ $# -lt 1 ]; then echo "Usage: $0 [output-dir]" echo " input-file: path to the skill file to process" echo " output-dir: where to write results (default: ./output)" exit 1 fi ``

  • Validate that input files/dirs actually exist before doing work:

``bash [ -f "$INPUT_FILE" ] || { echo "Error: $INPUT_FILE not found"; exit 1; } [ -d "$OUTPUT_DIR" ] || mkdir -p "$OUTPUT_DIR" ``

  • Use named variables instead of positional $1, $2 in the body. Assign arguments to descriptive names at the top, then use those names throughout. $INPUT_FILE is readable, $1 buried on line 40 is not.
  • Make the script idempotent where possible. Running it twice should produce the same result, not duplicate data or fail because output already exists. Use mkdir -p instead of mkdir, overwrite output files instead of appending blindly.

Place the script next to the skill file, or in a scripts/ directory if there are multiple.

Step 4: Rewrite the skill

Rewrite the skill to:

  1. Call the script first (Run ./script-name.sh)
  2. Read the script's output
  3. Do only the judgment work with that output

The rewritten skill should be noticeably shorter. If it isn't, the original probably didn't have many mechanical steps and might not need this treatment — say so.

Step 5: Optionally add AI calls to the script

If the workflow benefits from it, show how the script could call AI CLIs directly:

# Collect data deterministically, then ask AI to analyse
TMPFILE=$(mktemp)
trap 'rm -f "$TMPFILE"' EXIT
git log --since="1 week ago" --oneline > "$TMPFILE"
codex exec "Summarise the themes: $(cat "$TMPFILE")"

This makes the entire workflow runnable as a single script — deterministic orchestration with AI judgment on demand.

Output Format

Produce three artifacts:

  1. Classification table — every step labeled S or A with reasoning
  2. Shell script — handles all S steps
  3. Rewritten skill — calls the script, then does only A steps

Tips

  • Don't force it. If a skill is mostly judgment calls with one or two simple commands, it probably doesn't need a script. Say so.
  • Scripts should be independently testable. The user should be able to run the script alone to verify the data collection works before involving the AI.
  • Keep scripts focused. One script per logical phase. Don't create a mega-script that's as hard to debug as the original skill.
  • Variable names should be descriptive. $OUTFILE and $TODAY are better than $F and $D.
  • Always use "$VARIABLE" with quotes to handle spaces in paths.
  • Portability is non-negotiable. Every script must work when moved to a different directory or cloned to a different machine. No hardcoded paths, no assumptions about home directory layout, no machine-specific values baked in. If the script needs something specific to the environment, it takes it as an argument or reads it from an env var.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.