playbook/outfitter-agents/plugins/outfitter/skills/claude-commands/references/arguments.md

5.2 KiB

Argument Handling Reference

Complete guide to handling arguments in Claude Code slash commands.

Overview

Commands can accept arguments from users and use them in the prompt content.

/fix-issue 123 high
         |   |
         $1  $2

Syntax

Positional Arguments ($1, $2, $3, ...)

Access individual arguments by position:

Process file $1 with config $2 and output to $3

Usage:

/process data.csv config.json output.txt

Result:

Process file data.csv with config config.json and output to output.txt

All Arguments ($ARGUMENTS)

Access all arguments as a single string:

Fix the following issues: $ARGUMENTS

Usage:

/fix memory leak in auth module slow query in search

Result:

Fix the following issues: memory leak in auth module slow query in search

Parsing Rules

Whitespace Separation

Arguments are separated by whitespace:

/cmd foo bar baz
     |   |   |
     $1  $2  $3

Quoted Strings

Preserve spaces with quotes:

/cmd "foo bar" baz
     |         |
     $1        $2
     (foo bar)  (baz)

Missing Arguments

Missing arguments resolve to empty string:

/deploy staging
        |       |
        $1      $2
     (staging) ("")

Patterns

Required Arguments

Use <brackets> in argument-hint:

---
description: Create feature branch
argument-hint: <branch-name>
---

Create branch: feature/$1

Optional Arguments

Use [brackets] in argument-hint:

---
description: Deploy to environment
argument-hint: <environment> [--skip-tests]
---

Deploy to $1
Options: $2

Default Values

Handle defaults in command content:

---
description: Deploy (defaults to staging)
argument-hint: [environment]
---

# Deployment

Target: ${1:-staging}

Deploy to ${1:-staging} environment.
If no environment specified, staging is used.

Note: This is contextual interpretation, not shell expansion.

Multiple Arguments

---
description: Compare two files
argument-hint: <file1> <file2>
---

Compare these files:
- First: $1
- Second: $2

Provide detailed comparison.

Variadic Arguments

Use $ARGUMENTS for any number:

---
description: Review multiple files
argument-hint: <files...>
---

Review these files: $ARGUMENTS

For each file, check:
1. Code quality
2. Security issues
3. Performance

Usage: /review src/a.ts src/b.ts src/c.ts


Combining with Features

Arguments + File References

Include file contents using argument value:

---
description: Explain a file
argument-hint: <file-path>
---

# File Analysis

**File**: @$1

Provide detailed explanation of this file.

Usage: /explain src/auth/login.ts

Arguments + Bash Execution

Use arguments in shell commands:

---
description: Show git history for file
argument-hint: <file-path>
---

## Git History

!`git log --oneline -10 -- $1`

## Recent Changes

!`git diff HEAD~5 -- $1`

Usage: /history src/main.ts

Arguments in Conditional Logic

---
description: Deploy to environment
argument-hint: <environment>
---

# Deployment

Target: $1

## Validation
!`case "$1" in
  production)
    echo "PRODUCTION - requires approval"
    ;;
  staging)
    echo "Staging - auto-approved"
    ;;
  *)
    echo "Unknown environment: $1"
    ;;
esac`

Based on validation, proceed appropriately.

Validation

Check Required Arguments

## Validation

Environment: $1

**First**, verify the environment argument is provided and valid.
If missing or invalid, explain the error and valid options.

**Valid environments**: staging, production

Validate Argument Format

## Issue Validation

Issue number: $1

Verify issue #$1:
- Must be a number
- Must exist in the repository
- Must not be closed

!`gh issue view $1 --json state,title 2>&1 || echo "Issue not found"`

Edge Cases

Empty Arguments

# Handler for missing arguments

Target: $1

If no target specified above, prompt user for required information.

Quoted Arguments with Spaces

/search "error message with spaces"

$1 = error message with spaces (quotes stripped)

Special Characters

Arguments may contain special characters:

/fix "issue: TypeError"

$1 = issue: TypeError

Mixed Positional and ARGUMENTS

Use both when needed:

---
description: Run command on files
argument-hint: <command> <files...>
---

Command: $1
Files: $ARGUMENTS

# Note: $ARGUMENTS includes ALL arguments including $1
# For just remaining args, parse manually:

Run $1 on the following files (everything after first argument).

Best Practices

  1. Document expected arguments in command content
  2. Validate early before proceeding
  3. Provide defaults for optional arguments
  4. Quote in bash when arguments might have spaces
  5. Handle missing arguments gracefully
---
description: Complete workflow
argument-hint: <branch-name> [--skip-tests]
---

# Workflow

Branch: $1
Skip tests: $2

## Validation

1. Verify branch name provided (required)
2. Check if branch exists
3. Validate optional flags

If validation fails, explain what's missing.