Install plugin runner scripts into project .claude/scripts/ for persistent use without plugin loaded
Scanned 9/4/2026
Install to Claude Code
npx -y skills add sd0xdev/sd0x-harness --skill install-scripts --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Install Scripts?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sd0xdev-install-scripts-sd0x-harness)More formats (shields.io, HTML) on the badges page.
---
name: install-scripts
description: "Install plugin runner scripts into project .claude/scripts/ for persistent use without plugin loaded"
allowed-tools: Read, Glob, Write, AskUserQuestion, Bash(mkdir:*), Bash(diff:*), Bash(git:*), Bash(ls:*), Bash(chmod:*), Bash(cp:*), Bash(node:*)
---
# Install Scripts
## Trigger
- Keywords: install scripts, setup scripts, copy scripts, install-scripts
## When NOT to Use
- Installing rules (use `/install-rules`)
- Installing hooks (use `/install-hooks`)
- Full project setup (use `/project-setup`)
## Workflow
```
Phase 0: Resolve mode; obsolete-set migration (first for non-list invocations; --dry-run forwarded)
Phase 1: Locate plugin scripts dir
Phase 2: Enumerate scripts (core + skill scripts)
Phase 3: Determine install set (--all, --skill, specific names)
Phase 4: Copy scripts + dependencies to .claude/scripts/
Phase 4.5: Update manifest
Phase 5: Output report
```
### Phase 0: Obsolete-Set Migration
Same shared migration `/install-hooks` runs, invoked here too so **neither entry point can
reproduce the unsafe order by hand** (hook-lightweighting § 3.6). **Resolve the invocation mode
first**: a listing invocation skips this phase (read-only), and `--dry-run` is forwarded so the
migration also only reports:
```bash
# --dry-run → append --dry-run to the command below; list-only invocations skip Phase 0
node "${CLAUDE_PLUGIN_ROOT}/scripts/migrate-hook-lightweighting.js" --repo "$(git rev-parse --show-toplevel)"
```
It deregisters obsolete settings entries first and deletes the retired enforcement-layer files
only after the settings writes succeed. On exit 1, stop the install and surface the report.
Include the migration's report lines in Phase 5's output.
### Arguments
```
$ARGUMENTS
```
| Argument | Description |
|----------|-------------|
| `--all` | Install all available core scripts |
| `--list` | List available core scripts without installing |
| `--dry-run` | Show what would be installed, no changes |
| `--force` | Overwrite existing scripts with different content |
| `--skill <name>` | Install all scripts from the specified skill |
| `--skill-all` | Install scripts from all skills |
| `--skill-list` | List all available skill scripts |
| `script-names...` | Specific scripts to install |
### Script Types
| Type | Source | Target |
|------|--------|--------|
| Core scripts | `scripts/*.js`, `scripts/*.sh` | `.claude/scripts/` |
| Core lib | `scripts/lib/*.js` | `.claude/scripts/lib/` |
| Skill scripts | `skills/<name>/scripts/*` | `.claude/scripts/` |
### Conflict Handling
| Scenario | Action |
|----------|--------|
| Target missing | Copy |
| Target identical | Skip (up to date) |
| Target differs | Skip + warn (use --force to overwrite) |
## Output
```markdown
## Install Scripts Report
| Script | Type | Status |
|--------|------|--------|
| precommit-runner.js | core | installed |
| lib/utils.js | core-lib | up to date |
| git-profile.sh | skill | installed |
Installed: N | Skipped: M | Conflicts: K
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!