stacks-shell

$npx mdskill add stacksjs/stacks/stacks-shell

Execute shell commands in Stacks applications using Bun's $ operator

  • Runs system commands, process management, or shell scripts in Stacks apps
  • Depends on Bun's native $ operator and @stacksjs/shell package
  • Re-exports Bun's $ operator for executing shell commands as template literals
  • Returns command output as text or streams for further processing

SKILL.md

.github/skills/stacks-shellView on GitHub ↗
---
name: stacks-shell
description: Use when executing shell commands in a Stacks application — running system commands, process management, or using the shell operator. Covers @stacksjs/shell which wraps Bun's native $ operator.
license: MIT
compatibility: Bun >= 1.3.0, TypeScript
allowed-tools: Read Edit Write Bash Grep Glob
---

# Stacks Shell

## Key Paths
- Core package: `storage/framework/core/shell/src/`
- Source: `storage/framework/core/shell/src/index.ts`
- Package: `@stacksjs/shell`

## API

The entire package is a single re-export of Bun's `$` shell operator:

```typescript
export { $ } from 'bun'
```

## Usage

```typescript
import { $ } from '@stacksjs/shell'

// Run shell commands
await $`ls -la`

// Capture output
const result = await $`git status`
console.log(result.text())

// Set working directory
$.cwd('/path/to/dir')
await $`bun install`

// Pipe commands
await $`cat file.txt | grep "pattern"`

// Environment variables
await $`echo $HOME`
```

## Bun $ Operator Features

- **Template literals** — commands written as tagged template strings
- **Auto-escaping** — interpolated values are safely escaped
- **Streaming** — stdout/stderr can be streamed
- **CWD** — `$.cwd(path)` sets working directory
- **Env** — `$.env(vars)` sets environment variables
- **Quiet mode** — `$.quiet()` suppresses output
- **Throws on error** — non-zero exit codes throw by default

## Gotchas
- **Thin wrapper** — this package literally just re-exports `$` from Bun
- **Server-side only** — shell commands run in the server environment, not in the browser
- **For CLI output formatting, use `@stacksjs/cli`** — this package is for raw command execution
- **Bun-specific** — the `$` operator is a Bun feature, not available in Node.js
- **Used throughout the framework** — build actions, CLI commands, and dev server all use `$` for process execution

More from stacksjs/stacks

SkillDescription
stacks-actionsUse when working with Stacks server actions — creating actions in app/Actions/, auto-generated API actions from the useApi model trait, the 80+ default framework actions (auth, dashboard, commerce, content, deployment, jobs), action request/response handling, or action registration. Covers @stacksjs/actions and storage/framework/defaults/actions/.
stacks-aiUse when integrating AI capabilities into a Stacks application — using Anthropic/OpenAI/Ollama/AWS Bedrock drivers, image generation (DALL-E), vision analysis, RAG/vector search, embeddings, MCP (Model Context Protocol) clients, text summarization, sentiment analysis, content classification, personalization, or the buddy AI assistant. Covers @stacksjs/ai and config/ai.ts.
stacks-aliasUse when working with path aliases in a Stacks project — import resolution, module aliasing, or debugging import paths. Covers @stacksjs/alias which defines 260+ path mappings for the entire framework.
stacks-analyticsUse when adding analytics to a Stacks application — configuring Fathom or self-hosted analytics, generating tracking scripts, privacy-friendly analytics setup, or the analytics configuration. Covers @stacksjs/analytics and config/analytics.ts.
stacks-apiUse when building, modifying, or debugging API endpoints in a Stacks application — defining routes, handling requests, API middleware, working with the API server, HTTP client (fetcher), API resources, or OpenAPI generation. Covers both @stacksjs/api utilities and the stacks-api server implementation.
stacks-arraysUse when working with array utilities in Stacks — statistical operations (average, median, mode, standard deviation, z-score, percentile, covariance), array manipulation (unique, flatten, partition, shuffle, sample, move), containment checks, or the Arr facade. Covers @stacksjs/arrays.
stacks-authUse when implementing authentication, authorization, passkeys, TOTP/2FA, RBAC, gates, policies, session auth, token management, email verification, password resets, or rate limiting in a Stacks application. Covers the @stacksjs/auth package, config/auth.ts, app/Gates.ts, and app/Middleware/.
stacks-auto-importsUse when working with the Stacks auto-import system — understanding how browser and server auto-imports work, configuring auto-imported functions/models/composables, the auto-import manifests, type generation, or how globals are injected. Covers the auto-import pipeline at storage/framework/auto-imports/.
stacks-brandkitUse when defining or exploring a brand identity for a Stacks project and you want premium brand-kit REFERENCE IMAGES first - logo directions, palettes, typography specimens, identity boards, and application/mockup decks. Generates IMAGES ONLY, never code. Trained for minimalist, cinematic, editorial, dark-tech, luxury, cultural, security, gaming, developer-tool, and consumer-app brand systems with intentional logo concepting, sparse type, strong symbolic meaning, and disciplined palettes a coding step can build against.
stacks-browseUse for headless browser QA on Stacks applications — navigation, screenshots, responsive testing, console/network monitoring, and accessibility snapshots. Dependency-free: drives a system browser over the Chrome DevTools Protocol using only Bun (no Playwright/Puppeteer). Invoke with /stacks-browse.