Claude Code Plugins

Community-maintained marketplace

Feedback

.claude/skills/command-error-handling/SKILL.md

@mattnigh/skills_collection
0
0

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name .claude/skills/command-error-handling/SKILL.md
description コマンドのエラーハンドリングを専門とするスキル。 引数検証、事前チェック、ロールバック機能、ユーザー確認、 親切なエラーメッセージの設計を提供します。 📚 リソース参照: このスキルには以下のリソースが含まれています。 必要に応じて該当するリソースを参照してください: - `.claude/skills/command-error-handling/resources/error-patterns.md`: エラーハンドリングパターン集 - `.claude/skills/command-error-handling/templates/command-with-error-handling.md`: エラーハンドリング付きコマンドテンプレート - `.claude/skills/command-error-handling/scripts/validate-error-handling.mjs`: エラーハンドリング検証スクリプト 使用タイミング: - 堅牢なエラー処理を実装する時 - ロールバック機能が必要な時 - ユーザー確認を統合する時 Use proactively when implementing robust error handling, rollback mechanisms, or user confirmation workflows.
version 1.0.0

Command Error Handling

概要

このスキルは、Claude Codeコマンドのエラーハンドリングを提供します。 引数検証、事前チェック、ロールバック機能、親切なエラーメッセージにより、 堅牢で信頼できるコマンドを作成できます。

主要な価値:

  • 包括的なエラー検証
  • 安全なロールバック機能
  • わかりやすいエラーメッセージ
  • ユーザー確認の統合

対象ユーザー:

  • コマンドを作成するエージェント(.claude/agents/command-arch.md)
  • 本番環境で使用するコマンドを作成する開発者
  • 堅牢性を重視するチーム

リソース構造

command-error-handling/
├── SKILL.md                                    # 本ファイル
├── resources/
│   ├── validation-strategies.md               # 検証戦略詳細
│   ├── rollback-patterns.md                   # ロールバックパターン
│   ├── error-message-design.md                # エラーメッセージ設計
│   └── user-confirmation-patterns.md          # ユーザー確認パターン
└── templates/
    ├── validation-template.md                 # 検証テンプレート
    ├── rollback-template.md                   # ロールバックテンプレート
    └── confirmation-template.md               # 確認テンプレート

リソース種別

  • 戦略詳細 (resources/*-strategies.md, *-patterns.md): 各戦略の詳細仕様
  • エラーメッセージ設計 (resources/error-message-design.md): 親切なメッセージの作成方法
  • テンプレート (templates/): エラーハンドリングパターン別のテンプレート

いつ使うか

シナリオ1: 引数検証の実装

状況: 不正な引数をエラーにしたい

適用条件:

  • 引数が必須
  • 特定の値のみ許可
  • 複雑な検証ロジックが必要

期待される成果: 堅牢な引数検証

シナリオ2: ロールバック機能の実装

状況: 失敗時に元に戻したい

適用条件:

  • 破壊的な操作を行う
  • 複数ステップがある
  • 失敗時の復旧が必要

期待される成果: 安全なロールバック機能

シナリオ3: エラーメッセージの改善

状況: わかりにくいエラーメッセージを改善したい

適用条件:

  • ユーザーが問題を理解できない
  • 解決方法が不明確
  • エラーメッセージが技術的すぎる

期待される成果: ユーザーフレンドリーなエラーメッセージ

エラーハンドリング戦略

3層防御

┌────────────────────────────────────────┐
│ Layer 1: 引数検証(Validation)        │
│ - 引数の存在確認                       │
│ - 値の範囲チェック                     │
│ - 形式の検証                           │
└────────────────┬───────────────────────┘
                │ Pass
                ▼
┌────────────────────────────────────────┐
│ Layer 2: 事前チェック(Pre-flight)    │
│ - 環境の確認                           │
│ - ファイルの存在確認                   │
│ - 権限のチェック                       │
└────────────────┬───────────────────────┘
                │ Pass
                ▼
┌────────────────────────────────────────┐
│ Layer 3: 実行時チェック(Runtime)     │
│ - 操作の成功確認                       │
│ - 結果の検証                           │
│ - 副作用の確認                         │
└────────────────────────────────────────┘

Layer 1: 引数検証

必須引数のチェック

## Validation Phase

Check required arguments:

```bash
if [ -z "$ARGUMENTS" ]; then
  echo "❌ Error: Environment not specified"
  echo ""
  echo "Usage: /deploy [staging|production]"
  echo ""
  echo "Example:"
  echo "  /deploy staging"
  exit 1
fi
```

### 値の範囲チェック

```markdown
## Validation Phase

Check valid values:
```bash
VALID_ENVS=("staging" "production" "development")

if [[ ! " ${VALID_ENVS[@]} " =~ " ${ARGUMENTS} " ]]; then
  echo "❌ Error: Invalid environment '$ARGUMENTS'"
  echo ""
  echo "Valid environments:"
  for env in "${VALID_ENVS[@]}"; do
    echo "  - $env"
  done
  echo ""
  echo "Usage: /deploy [environment]"
  exit 1
fi

### 形式の検証

```markdown
## Validation Phase

Check format:
```bash
# Check semver format (e.g., 1.2.3)
if ! [[ "$ARGUMENTS" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
  echo "❌ Error: Invalid version format '$ARGUMENTS'"
  echo ""
  echo "Expected format: MAJOR.MINOR.PATCH"
  echo "Example: 1.2.3"
  echo ""
  echo "Current: $ARGUMENTS"
  exit 1
fi

## Layer 2: 事前チェック

### ファイル存在確認

```markdown
## Pre-flight Checks

Verify required files exist:
```bash
REQUIRED_FILES=(
  ".env"
  "package.json"
  "tsconfig.json"
)

MISSING_FILES=()

for file in "${REQUIRED_FILES[@]}"; do
  if [ ! -f "$file" ]; then
    MISSING_FILES+=("$file")
  fi
done

if [ ${#MISSING_FILES[@]} -gt 0 ]; then
  echo "❌ Error: Required files not found"
  echo ""
  echo "Missing files:"
  for file in "${MISSING_FILES[@]}"; do
    echo "  - $file"
  done
  echo ""
  echo "Please ensure all required files exist"
  exit 1
fi

### 環境確認

```markdown
## Pre-flight Checks

Verify environment is ready:
```bash
# Check Node.js version
REQUIRED_NODE="18"
CURRENT_NODE=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)

if [ "$CURRENT_NODE" -lt "$REQUIRED_NODE" ]; then
  echo "❌ Error: Node.js version too old"
  echo ""
  echo "Required: Node.js >= $REQUIRED_NODE"
  echo "Current:  Node.js $CURRENT_NODE"
  echo ""
  echo "Please upgrade Node.js"
  exit 1
fi

# Check dependencies installed
if [ ! -d "node_modules" ]; then
  echo "❌ Error: Dependencies not installed"
  echo ""
  echo "Please run: pnpm install"
  exit 1
fi

### テストと品質チェック

```markdown
## Pre-flight Checks

Run tests and quality checks:
```bash
echo "🧪 Running tests..."
if ! pnpm test; then
  echo ""
  echo "❌ Error: Tests failed"
  echo ""
  echo "Please fix failing tests before deployment"
  echo ""
  echo "To see detailed test output:"
  echo "  pnpm test -- --verbose"
  exit 1
fi

echo "📝 Running linter..."
if ! pnpm run lint; then
  echo ""
  echo "❌ Error: Lint checks failed"
  echo ""
  echo "To auto-fix some issues:"
  echo "  pnpm run lint -- --fix"
  exit 1
fi

## Layer 3: 実行時チェック

### 操作の成功確認

```markdown
## Execution with Verification

Execute and verify each step:
```bash
# Build
echo "🏗️  Building..."
if ! pnpm run build; then
  echo "❌ Build failed"
  exit 1
fi
echo "✅ Build successful"

# Deploy
echo "🚀 Deploying..."
if ! aws s3 sync dist/ s3://$BUCKET/; then
  echo "❌ Deployment failed"
  echo ""
  echo "Rollback required"
  exit 1
fi
echo "✅ Deployment successful"

### ヘルスチェック

```markdown
## Post-deployment Verification

Verify deployment health:
```bash
HEALTH_URL="https://$ARGUMENTS.example.com/health"
MAX_RETRIES=5
RETRY_DELAY=10

for i in $(seq 1 $MAX_RETRIES); do
  echo "🔍 Health check attempt $i/$MAX_RETRIES..."

  RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" $HEALTH_URL)

  if [ "$RESPONSE" = "200" ]; then
    echo "✅ Health check passed"
    break
  fi

  if [ $i -eq $MAX_RETRIES ]; then
    echo "❌ Health check failed after $MAX_RETRIES attempts"
    echo ""
    echo "HTTP Status: $RESPONSE"
    echo "URL: $HEALTH_URL"
    echo ""
    echo "🔄 Initiating rollback..."
    # Rollback logic here
    exit 1
  fi

  echo "⏳ Waiting $RETRY_DELAY seconds before retry..."
  sleep $RETRY_DELAY
done

## ロールバック機能

### バックアップと復元

```markdown
## Step 1: Create Backup
```bash
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BACKUP_TAG="backup-$TIMESTAMP"

echo "💾 Creating backup: $BACKUP_TAG"

# Git tag backup
git tag $BACKUP_TAG

# S3 backup
aws s3 sync s3://$BUCKET/ s3://$BUCKET-backup-$TIMESTAMP/

echo "✅ Backup created: $BACKUP_TAG"

Step 2: Deploy with Error Handling

set -e  # Exit on error

if ! pnpm run build; then
  echo "❌ Build failed, no rollback needed"
  exit 1
fi

if ! aws s3 sync dist/ s3://$BUCKET/; then
  echo "❌ Deployment failed"
  echo "🔄 Rolling back to: $BACKUP_TAG"

  # Restore from backup
  aws s3 sync s3://$BUCKET-backup-$TIMESTAMP/ s3://$BUCKET/

  echo "✅ Rollback complete"
  exit 1
fi

Step 3: Health Check

if ! curl -f $HEALTH_URL; then
  echo "❌ Health check failed"
  echo "🔄 Rolling back to: $BACKUP_TAG"

  # Restore from backup
  aws s3 sync s3://$BUCKET-backup-$TIMESTAMP/ s3://$BUCKET/

  # Rollback database if needed
  git checkout $BACKUP_TAG db/migrations/

  echo "✅ Rollback complete"
  exit 1
fi

### トランザクション的実行

```markdown
## Atomic Operation Pattern

Execute all-or-nothing:
```bash
# Start transaction
BEGIN_STATE=$(git rev-parse HEAD)

# Function to rollback
rollback() {
  echo "🔄 Rolling back changes..."
  git reset --hard $BEGIN_STATE
  git clean -fd
  echo "✅ Rollback complete"
}

# Set trap for errors
trap rollback ERR

# Execute operations
echo "📝 Applying changes..."
# ... operations here ...

# Commit if all succeeded
git add -A
git commit -m "Applied changes"
echo "✅ All changes applied successfully"

# Remove trap
trap - ERR

## ユーザー確認

### 破壊的操作の確認

```markdown
## Step 3: User Confirmation

⚠️ **This will DELETE the production database.**

Show what will be deleted:
- Database: production_db
- Tables: 42 tables
- Estimated rows: 1,234,567 rows

This action CANNOT be undone.

Ask user: "Type 'DELETE PRODUCTION' to confirm:"

Wait for user input.

If input equals "DELETE PRODUCTION" exactly:
  → Proceed to deletion
Else:
  → Cancel operation
  → Show: "❌ Operation cancelled (input did not match)"

段階的確認

## Multi-stage Confirmation

### Stage 1: Impact Assessment

Show deployment impact:

- Environment: PRODUCTION
- Services affected: 3 services
- Estimated downtime: 2-5 minutes
- Rollback available: Yes

Ask: "Proceed with deployment? (yes/no)"

### Stage 2: Final Confirmation

If "yes":
Show final warning:

🚨 FINAL CONFIRMATION

You are about to deploy to PRODUCTION.

Type the current date (YYYY-MM-DD) to confirm:


Wait for date input.

If date matches today:
  → Proceed with deployment
Else:
  → Cancel: "Date mismatch, operation cancelled"

親切なエラーメッセージ

テンプレート

❌ Error: [What went wrong]

[Why it happened]

✓ Valid options:
  - Option 1
  - Option 2

💡 How to fix:
  1. Step 1
  2. Step 2

📝 Example:
  [Working example command]

🔗 More info:
  [Documentation link if available]

実装例

echo "❌ Error: Invalid deployment environment '$ARGUMENTS'"
echo ""
echo "The environment '$ARGUMENTS' is not recognized."
echo ""
echo "✓ Valid environments:"
echo "  - staging   (for testing)"
echo "  - production (requires approval)"
echo ""
echo "💡 How to fix:"
echo "  1. Check your spelling"
echo "  2. Use one of the valid environments"
echo ""
echo "📝 Example:"
echo "  /deploy staging"
echo ""
echo "🔗 More info:"
echo "  See .claude/docs/deployment-guide.md"

詳細リソースの参照

検証戦略

詳細は resources/validation-strategies.md を参照

ロールバックパターン

詳細は resources/rollback-patterns.md を参照

エラーメッセージ設計

詳細は resources/error-message-design.md を参照

ユーザー確認パターン

詳細は resources/user-confirmation-patterns.md を参照

テンプレート

  • 検証: templates/validation-template.md
  • ロールバック: templates/rollback-template.md
  • 確認: templates/confirmation-template.md

コマンドリファレンス

このスキルで使用可能なリソース、テンプレートへのアクセスコマンド:

リソース読み取り

# エラーパターン集
cat .claude/skills/command-error-handling/resources/error-patterns.md

他のスキルのスクリプトを活用

# 知識ドキュメントの品質検証
node .claude/skills/knowledge-management/scripts/validate-knowledge.mjs .claude/skills/command-error-handling/resources/error-patterns.md

# トークン見積もり
node .claude/skills/context-optimization/scripts/estimate-tokens.mjs .claude/skills/command-error-handling/SKILL.md

# ドキュメント構造分析
node .claude/skills/documentation-architecture/scripts/analyze-structure.mjs .claude/skills/command-error-handling

関連スキル

  • .claude/skills/command-arguments-system/SKILL.md - 引数検証の基礎
  • .claude/skills/command-security-design/SKILL.md - セキュリティとエラーハンドリング
  • .claude/skills/command-advanced-patterns/SKILL.md - インタラクティブパターン

更新履歴

  • v1.0.0 (2025-11-24): 初版作成