docs: update $ARGUMENTS syntax for v2.1.19 breaking change + evaluation
Updated all documentation and examples to reflect Claude Code v2.1.19
breaking change: $ARGUMENTS.0 → $ARGUMENTS[0] (bracket syntax).
Changes:
- guide/ultimate-guide.md: 7 occurrences updated to bracket/shorthand syntax
- guide/cheatsheet.md: Command template updated
- Added migration note in § 6.2 Variable Interpolation
- Created migration scripts: migrate-arguments-syntax.{sh,ps1}
• Automated detection + conversion with backups
• Dry-run mode, cross-platform (macOS/Linux/Windows)
- Added formal evaluation: eval-claude-code-releases-jan2026.md
• Score: 5/5 (Critical - Integrate Immediately)
• Covers releases 2.1.0 to 2.1.19 (January 2026)
• Technical accuracy verified against GitHub CHANGELOG
Files:
- guide/ultimate-guide.md (+23 lines, 7 occurrences fixed)
- guide/cheatsheet.md (+1 line)
- examples/scripts/migrate-arguments-syntax.sh (+152 lines)
- examples/scripts/migrate-arguments-syntax.ps1 (+143 lines)
- docs/resource-evaluations/eval-claude-code-releases-jan2026.md (+273 lines)
- CHANGELOG.md (+12 lines, Unreleased section)
Total: +605 lines
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
08a2a4261f
commit
3a7671ac5e
6 changed files with 605 additions and 9 deletions
143
examples/scripts/migrate-arguments-syntax.ps1
Normal file
143
examples/scripts/migrate-arguments-syntax.ps1
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
# Migration Script: $ARGUMENTS syntax (v2.1.19 breaking change)
|
||||
#
|
||||
# Purpose: Update custom commands from old dot notation to new bracket syntax
|
||||
# Breaking Change: $ARGUMENTS.0 → $ARGUMENTS[0] (introduced in Claude Code v2.1.19)
|
||||
#
|
||||
# Usage:
|
||||
# .\migrate-arguments-syntax.ps1 # Preview changes
|
||||
# .\migrate-arguments-syntax.ps1 -Apply # Apply changes
|
||||
#
|
||||
# Safety: Creates backups before modifying files
|
||||
|
||||
param(
|
||||
[switch]$Apply
|
||||
)
|
||||
|
||||
# Configuration
|
||||
$BackupDir = Join-Path $env:USERPROFILE ".claude\backups\arguments-migration-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
|
||||
|
||||
# Directories to scan
|
||||
$ScanDirs = @(
|
||||
(Join-Path $env:USERPROFILE ".claude\commands"),
|
||||
(Join-Path $env:USERPROFILE ".claude\skills"),
|
||||
".claude\commands",
|
||||
".claude\skills"
|
||||
)
|
||||
|
||||
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Blue
|
||||
Write-Host "║ Claude Code v2.1.19 - `$ARGUMENTS Syntax Migration ║" -ForegroundColor Blue
|
||||
Write-Host "╚═══════════════════════════════════════════════════════════╝" -ForegroundColor Blue
|
||||
Write-Host ""
|
||||
Write-Host "Breaking Change: " -NoNewline -ForegroundColor Yellow
|
||||
Write-Host "`$ARGUMENTS.N → `$ARGUMENTS[N]"
|
||||
Write-Host ""
|
||||
|
||||
# Check if any scan directories exist
|
||||
$foundDirs = $false
|
||||
foreach ($dir in $ScanDirs) {
|
||||
if (Test-Path $dir) {
|
||||
$foundDirs = $true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $foundDirs) {
|
||||
Write-Host "✓ No custom commands/skills directories found" -ForegroundColor Green
|
||||
Write-Host " Nothing to migrate."
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Find files with old syntax
|
||||
Write-Host "Scanning for files with old `$ARGUMENTS.N syntax..."
|
||||
Write-Host ""
|
||||
|
||||
$affectedFiles = @()
|
||||
foreach ($dir in $ScanDirs) {
|
||||
if (-not (Test-Path $dir)) {
|
||||
continue
|
||||
}
|
||||
|
||||
# Find .md files with $ARGUMENTS.N pattern
|
||||
Get-ChildItem -Path $dir -Filter "*.md" -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
|
||||
$content = Get-Content $_.FullName -Raw
|
||||
if ($content -match '\$ARGUMENTS\.[0-9]') {
|
||||
$affectedFiles += $_.FullName
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Report findings
|
||||
if ($affectedFiles.Count -eq 0) {
|
||||
Write-Host "✓ No files need migration" -ForegroundColor Green
|
||||
Write-Host " All custom commands already use the new syntax."
|
||||
exit 0
|
||||
}
|
||||
|
||||
Write-Host "Found $($affectedFiles.Count) file(s) with old syntax:" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
|
||||
# Preview changes
|
||||
foreach ($file in $affectedFiles) {
|
||||
Write-Host "📄 $file" -ForegroundColor Blue
|
||||
|
||||
# Show occurrences
|
||||
$lineNum = 0
|
||||
Get-Content $file | ForEach-Object {
|
||||
$lineNum++
|
||||
if ($_ -match '\$ARGUMENTS\.[0-9]') {
|
||||
Write-Host " Line ${lineNum}: $_" -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
Write-Host ""
|
||||
}
|
||||
|
||||
# Apply changes if requested
|
||||
if ($Apply) {
|
||||
Write-Host "Creating backups in: $BackupDir" -ForegroundColor Yellow
|
||||
New-Item -ItemType Directory -Path $BackupDir -Force | Out-Null
|
||||
|
||||
foreach ($file in $affectedFiles) {
|
||||
# Create backup
|
||||
$fileName = Split-Path $file -Leaf
|
||||
$backupPath = Join-Path $BackupDir $fileName
|
||||
Copy-Item $file $backupPath
|
||||
Write-Host "✓ Backed up: $fileName" -ForegroundColor Green
|
||||
|
||||
# Apply migration
|
||||
$content = Get-Content $file -Raw
|
||||
$newContent = $content -replace '\$ARGUMENTS\.([0-9])', '$ARGUMENTS[$1]'
|
||||
Set-Content -Path $file -Value $newContent -NoNewline
|
||||
|
||||
Write-Host "✓ Migrated: $file" -ForegroundColor Green
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "╔═══════════════════════════════════════════════════════════╗" -ForegroundColor Green
|
||||
Write-Host "║ ✓ Migration Complete ║" -ForegroundColor Green
|
||||
Write-Host "╚═══════════════════════════════════════════════════════════╝" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "Backups saved to: $BackupDir"
|
||||
Write-Host ""
|
||||
Write-Host "Changes applied:"
|
||||
Write-Host " • `$ARGUMENTS.0 → `$ARGUMENTS[0]"
|
||||
Write-Host " • `$ARGUMENTS.1 → `$ARGUMENTS[1]"
|
||||
Write-Host " • etc."
|
||||
Write-Host ""
|
||||
Write-Host "You can also use shorthand: `$0, `$1, `$2, ..."
|
||||
|
||||
} else {
|
||||
Write-Host "═══════════════════════════════════════════════════════════" -ForegroundColor Yellow
|
||||
Write-Host "DRY RUN MODE - No changes applied" -ForegroundColor Yellow
|
||||
Write-Host "═══════════════════════════════════════════════════════════" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
Write-Host "To apply these changes, run:"
|
||||
Write-Host " .\migrate-arguments-syntax.ps1 -Apply" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "This will:"
|
||||
Write-Host " 1. Create backups in %USERPROFILE%\.claude\backups\"
|
||||
Write-Host " 2. Update all files to new bracket syntax"
|
||||
Write-Host " 3. Preserve original files in backup directory"
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Documentation: https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2119"
|
||||
Loading…
Add table
Add a link
Reference in a new issue