Skip to content
Back to skills

Bun Shell Commands Shanepadgett Agent Extensions

ASecurity

Writing shell commands for OpenCode custom commands using Bun Shell

  • 666 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 2, 2026
ai-agentsshellbashdebuggingdocumentation

Security analysis

A100/100

Scanned June 2, 2026

npx -y skills add majiayu000/claude-skill-registry --skill bun-shell-commands-shanepadgett-agent-extensions --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bun Shell Commands Shanepadgett Agent Extensions?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bun Shell Commands Shanepadgett Agent Extensions
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-bun-shell-commands-shanepadgett-agent-extensions/badge)](https://www.skillsdirectory.com/skills/majiayu000-bun-shell-commands-shanepadgett-agent-extensions)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bun-shell-commands
description: Writing shell commands for OpenCode custom commands using Bun Shell
---

# Bun Shell Commands

This skill covers how to write effective shell commands in OpenCode custom commands using Bun Shell (Bun's bash-like shell implementation).

## Context

OpenCode uses **Bun Shell** for executing shell commands in custom commands via the !`command` syntax. Bun Shell is a bash-like shell written in Zig that provides cross-platform shell scripting, but it has some differences from traditional bash.

## Supported Features

### ✅ Arguments

Positional arguments work correctly:

```markdown
!`echo "Arg1: $1" && echo "Arg2: $2" && echo "Arg3: $3"`
```

Usage: `/mycommand 5 "hello world" "a,b,c"`

### ✅ Command Substitution

Use `$(command)` for command substitution:

```markdown
!`echo "Sum: $(seq $1 | awk '{s+=$1} END {print s}')"`
```

### ✅ Pipes

Pipe commands using `|`:

```markdown
!`echo "$2" | tr '[:lower:]' '[:upper:]' | rev`
```

### ✅ Environment Variables

Set environment variables and use them:

```markdown
!`TEST_VAR="$1" && echo "TEST_VAR=$TEST_VAR"`
```

Store command substitution results in variables:

```markdown
!`REV=$(echo "$2" | rev) && echo "Reversed: $REV"`
```

### ✅ Command Chaining

Use `&&` to chain commands (instead of newlines or `;`):

```markdown
!`echo "First" && echo "Second" && echo "Third"`
```

### ✅ Available Commands

Bun Shell includes these built-in commands:
- `cd`, `ls`, `rm`, `echo`, `pwd`, `cat`, `touch`, `mkdir`, `which`, `mv`
- `seq`, `dirname`, `basename`, `true`, `false`, `yes`

Common external commands also work:
- `awk`, `sed`, `tr`, `wc`, `grep`, `head`, `tail`
- `find`, `xargs`, `sort`, `uniq`

## Unsupported Features

### ❌ Shell Control Structures

Do NOT use `for`, `while`, `do`, `done`:

```markdown
# ❌ DOESN'T WORK
!`for i in $(seq 1 $1); do echo $i; done`
```

### ❌ Arithmetic Expansion

Do NOT use `$(( ))` directly in the template:

```markdown
# ❌ DOESN'T WORK
!`echo "Squared: $(($1 * $1))"`
```

Use `$(awk '{...}')` instead:

```markdown
# ✅ WORKS
!`echo "$1" | awk '{print $1 * $1}'`
```

### ❌ Native Brace Expansion

Native brace expansion is not supported:

```markdown
# ❌ DOESN'T WORK
!`echo {1,2,3}`
```

Use pipes to simulate expansion:

```markdown
# ✅ WORKS
!`echo "$3" | tr ',' '\n' | awk '{print "Expanded:", $1}'`
```

## Patterns and Best Practices

### Loops via Pipes

Instead of `for` loops, use `seq` with `awk`:

```markdown
# Generate numbers 1 to N with squares
!`seq $1 | awk '{print $1, "-> squared:", $1*$1}'`
```

### Multi-step Operations

Use environment variables to store intermediate results:

```markdown
# Reverse text, count chars, and show both
!`REV=$(echo "$2" | rev) && COUNT=$(echo "$2" | wc -c) && echo "Reversed: $REV (${COUNT} chars)"`
```

### Conditional Logic

Use `awk` for conditionals:

```markdown
# Classify numbers as even/odd
!`seq $1 | awk '{if ($1 % 2 == 0) print $1 ": even"; else print $1 ": odd"}'`
```

### Text Processing

Combine `tr`, `sed`, `awk` for text manipulation:

```markdown
# Uppercase, reverse, and format
!`echo "$2" | tr '[:lower:]' '[:upper:]' | rev | sed 's/^/> /'`
```

### Working with Multiple Arguments

Use separate shell blocks for independent tests:

```markdown
## Test 1: Arithmetic with $1
!`seq $1 | awk '{s+=$1} END {print "Sum:", s}'`

## Test 2: Text processing with $2
!`echo "$2" | tr '[:lower:]' '[:upper:]' | rev`

## Test 3: Pattern with $3
!`echo "$3" | tr ',' '\n' | wc -l`
```

## Example: Complete Command

```markdown
---
description: Test Bun Shell capabilities
---

Test Bun Shell with multiple features:

## Argument passing
!`echo "Arg1: [$1]" && echo "Arg2: [$2]" && echo "Arg3: [$3]"`

## Command substitution
!`echo "Sum of 1 to $1: $(seq $1 | awk '{s+=$1} END {print s}')"`

## Text processing
!`echo "$2" | tr '[:lower:]' '[:upper:]' | rev | wc -c`

## Environment variables
!`REV=$(echo "$2" | rev) && echo "Reversed via var: $REV"`
```

Usage: `/mycommand 5 "hello world" "a,b,c"`

## Debugging

If a shell command fails silently:

1. Simplify to just `echo "$1"` to verify argument passing
2. Test each pipe segment separately
3. Replace complex `awk` with simpler `tr` or `sed`
4. Use `echo` at each step to verify intermediate values

## References

- [Bun Shell Documentation](https://bun.com/docs/runtime/shell.md)
- [OpenCode Commands Documentation](https://opencode.ai/docs/commands/)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.