Claude Code Plugins

Community-maintained marketplace

Feedback

.claude/skills/command-best-practices/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-best-practices/SKILL.md
description コマンド設計のベストプラクティスを専門とするスキル。 単一責任原則、組み合わせ可能性、冪等性の原則、 DRYの適用、保守性の高い設計を提供します。 📚 リソース参照: このスキルには以下のリソースが含まれています。 必要に応じて該当するリソースを参照してください: - `.claude/skills/command-best-practices/resources/single-responsibility-principle.md`: 1コマンド=1責任の原則、複数責任検出基準(「〜と〜」「異なるタイミング実行」)とリファクタリング手法 - `.claude/skills/command-best-practices/resources/composability-principle.md`: 合成可能性原則の適用 - `.claude/skills/command-best-practices/templates/best-practice-checklist.md`: ベストプラクティスチェックリスト - `.claude/skills/command-best-practices/scripts/check-best-practices.mjs`: ベストプラクティス検証スクリプト 使用タイミング: - コマンド設計の原則を確認したい時 - 既存コマンドをリファクタリングする時 - 保守性の高いコマンドを設計する時 Use proactively when designing commands, refactoring existing commands, or ensuring maintainable command architecture.
version 1.0.0

Command Best Practices

概要

このスキルは、Claude Codeコマンド設計のベストプラクティスを提供します。 単一責任原則、組み合わせ可能性、冪等性の3つの核心原則により、 保守性が高く、再利用可能で、信頼できるコマンドを作成できます。

主要な価値:

  • 3つの核心原則の完全理解
  • DRY原則の適用
  • 保守性の高い設計
  • 再利用可能なコマンド

対象ユーザー:

  • コマンドを作成するエージェント(.claude/agents/command-arch.md)
  • 設計原則を学びたい開発者
  • 高品質なコマンドを作成したいチーム

リソース構造

command-best-practices/
├── SKILL.md                                    # 本ファイル
├── resources/
│   ├── single-responsibility-principle.md     # 単一責任原則詳細
│   ├── composability-principle.md             # 組み合わせ可能性詳細
│   ├── idempotency-principle.md               # 冪等性原則詳細
│   └── maintainability-guide.md               # 保守性ガイド
└── templates/
    └── best-practice-checklist.md             # ベストプラクティスチェックリスト

リソース種別

  • 原則詳細 (resources/*-principle.md): 各原則の詳細仕様と実例
  • 保守性ガイド (resources/maintainability-guide.md): 保守性向上の方法
  • チェックリスト (templates/best-practice-checklist.md): 設計時の確認事項

いつ使うか

シナリオ1: 新規コマンド設計

状況: 設計原則に従って新しいコマンドを作成したい

適用条件:

  • 設計原則が不明
  • どの原則を優先すべきか不明
  • ベストプラクティスを適用したい

期待される成果: 原則に基づく堅牢な設計

シナリオ2: 既存コマンドのリファクタリング

状況: 既存コマンドを改善したい

適用条件:

  • コマンドが複雑すぎる
  • 保守が困難
  • 再利用できない

期待される成果: 改善されたコマンド設計

シナリオ3: コードレビュー

状況: コマンドの品質を評価したい

適用条件:

  • レビュー基準が不明
  • 品質チェックポイントを知りたい
  • 改善提案が必要

期待される成果: 具体的な改善提案

核心原則

原則1: 単一責任の原則(SRP)

定義: 各コマンドは1つのことだけを行うべき

良い設計

✓ 良い例:

/commit - Git commit のみ
/test - テスト実行のみ
/deploy - デプロイのみ

各コマンドは明確な単一の責任を持つ

悪い設計

✗ 悪い例:

/do-everything - commit + test + deploy + notification + logging

問題点:

- 柔軟性がない(一部だけ実行できない)
- デバッグ困難(どこで失敗したかわかりにくい)
- 再利用不可(全てが必要な場合のみ使用可能)
- 保守困難(変更の影響範囲が広い)

リファクタリング例

Before(悪い例):

---
description: Complete CI/CD pipeline
---

# All-in-One Pipeline

1. Run linter
2. Run tests
3. Build application
4. Deploy to staging
5. Run smoke tests
6. Deploy to production
7. Send notifications

After(良い例):

# 個別コマンドに分割

## commands/lint.md

---

## description: Run linter

# Lint Code

Run ESLint on codebase

## commands/test.md

---

## description: Run tests

# Run Tests

Execute test suite

## commands/build.md

---

## description: Build application

# Build App

Build for production

## commands/deploy.md

---

## description: Deploy to environment

# Deploy

Deploy to specified environment

# 組み合わせコマンド(オプション)

## commands/ci-pipeline.md

---

## description: Run CI pipeline

# CI Pipeline

Execute: /lint → /test → /build

原則2: 組み合わせ可能性の原則

定義: 小さなコマンドを組み合わせて大きなワークフローを構築できるべき

設計パターン

Small Building Blocks:
┌────────┐ ┌────────┐ ┌────────┐
│ /lint │ │ /test │ │ /build │
└────────┘ └────────┘ └────────┘
│ │ │
└───────────┼───────────┘
▼
┌─────────────────┐
│ /pre-commit │ (組み合わせ)
└─────────────────┘

Flexible Composition:
┌────────┐ ┌────────┐
│ /test │ │ /lint │
└────────┘ └────────┘
│ │
└───────────┘
▼
┌─────────┐ or ┌────────┐
│ /lint │ │ /test │
│ /test │ │ /lint │
└─────────┘ └────────┘

順序を変更可能

実装例

小さなコマンド:

.claude/commands/
├── lint.md        # /lint - Lint実行
├── test.md        # /test - テスト実行
└── build.md       # /build - ビルド実行

組み合わせコマンド:

.claude/commands/
├── pre-commit.md  # /pre-commit → /lint + /test
├── ci-check.md    # /ci-check → /lint + /test + /build
└── quick-check.md # /quick-check → /lint

柔軟な使用:

# 個別実行
/lint
/test
/build

# 組み合わせ実行
/pre-commit   # lint + test
/ci-check     # lint + test + build

# カスタム組み合わせ
/lint && /build  # testスキップ

原則3: 冪等性の原則

定義: コマンドは何度実行しても安全で、同じ結果を生成すべき

冪等なコマンド

✓ 良い例:

/format-code

- 既にフォーマット済み → 何もしない
- フォーマット必要 → フォーマット実行
- 複数回実行 → 常に同じ結果

/deploy-staging

- 既にデプロイ済み → 同じバージョン確認、変更なし
- 新しいバージョン → デプロイ実行
- 複数回実行 → 冪等性保証

非冪等なコマンド(避けるべき)

✗ 悪い例:

/increment-version

- 実行1回目: 1.0.0 → 1.0.1
- 実行2回目: 1.0.1 → 1.0.2 ❌
- 意図しない重複実行のリスク

/append-log

- 実行1回目: ログに1行追加
- 実行2回目: 重複行追加 ❌

冪等性の実装

パターン1: 状態確認

## Step 1: Check Current State

Check if operation already completed:

```bash
if [ -f ".deployed" ]; then
  DEPLOYED_VERSION=$(cat .deployed)
  if [ "$DEPLOYED_VERSION" = "$VERSION" ]; then
    echo "✅ Already deployed: $VERSION"
    echo "No action needed"
    exit 0
  fi
fi
```

Step 2: Execute

Only execute if not already in target state


**パターン2: 差分ベース**

```markdown
## Step 1: Calculate Diff
```bash
git diff --quiet
if [ $? -eq 0 ]; then
  echo "✅ No changes to commit"
  exit 0
fi

Step 2: Execute

Only execute if there are actual changes


## DRY原則の適用

### 重複の排除

**Before(重複あり)**:

```markdown
# deploy-staging.md
1. Run tests: `pnpm test`
2. Run lint: `pnpm run lint`
3. Build: `pnpm run build`
4. Deploy to staging

# deploy-production.md
1. Run tests: `pnpm test`
2. Run lint: `pnpm run lint`
3. Build: `pnpm run build`
4. Deploy to production

After(DRY適用):

# pre-deploy.md(共通部分)

---

## description: Pre-deployment checks

1. Run tests: `pnpm test`
2. Run lint: `pnpm run lint`
3. Build: `pnpm run build`

# deploy-staging.md

Execute `/pre-deploy`
Then deploy to staging

# deploy-production.md

Execute `/pre-deploy`
Then deploy to production

テンプレートの活用

共通パターンをテンプレート化:

# .claude/templates/deployment-template.md

---

## description: Deploy to ${ENVIRONMENT}

# Deploy to ${ENVIRONMENT}

## Pre-deployment

Execute `/pre-deploy`

## Deployment

```bash
export ENV=${ENVIRONMENT}
./deploy.sh
```

Verification

Verify deployment health:

curl -f https://${ENVIRONMENT}.example.com/health

## 保守性の向上

### 1. 明確なドキュメンテーション

```markdown
✓ 良い:
## Purpose
Clear explanation of what and why

## Prerequisites
List all requirements

## Examples
Multiple usage examples

## Troubleshooting
Common issues and solutions

✗ 悪い:
# Command
Does something
Run it

2. 適切なエラーハンドリング

✓ 良い:

- 明示的なエラーチェック
- わかりやすいエラーメッセージ
- 解決方法の提示
- ロールバック機能

✗ 悪い:

- エラー無視
- 不明瞭なエラーメッセージ
- 解決方法なし

3. バージョニング

✓ 良い:

- YAML frontmatterにversionフィールド
- CHANGELOGの維持
- 破壊的変更の明示

✗ 悪い:

- バージョン管理なし
- 変更履歴なし

4. テスタビリティ

✓ 良い:

- dry-runモード
- 検証コマンド
- テスト可能な構造

✗ 悪い:

- 実行のみ
- 検証不可

ベストプラクティスチェックリスト

設計時

  • 単一責任を持っているか?
  • 他のコマンドと組み合わせ可能か?
  • 冪等性が保証されているか?
  • 重複コードを排除しているか?
  • 命名規則に従っているか?

実装時

  • エラーハンドリングが適切か?
  • ドキュメントが充実しているか?
  • 使用例があるか?
  • トラブルシューティングがあるか?
  • セキュリティが考慮されているか?

レビュー時

  • 3つの核心原則を満たしているか?
  • 保守性が高いか?
  • テストしやすいか?
  • チーム規約に準拠しているか?
  • パフォーマンスが適切か?

アンチパターン

1. God Command(神コマンド)

✗ 避けるべき:
/do-everything

- あらゆる機能を1つのコマンドに詰め込む
- 柔軟性なし
- デバッグ困難
- 保守不可能

✓ 代わりに:

- 機能別に分割
- 組み合わせ可能に設計

2. Hardcoded Values(ハードコード)

✗ 避けるべき:

- 環境変数ではなく直接記述
- プロジェクト固有のパスをハードコード
- 個人的な設定を埋め込み

✓ 代わりに:

- 引数や環境変数で設定可能に
- 設定ファイルの参照
- デフォルト値の提供

3. Silent Failures(サイレント失敗)

✗ 避けるべき:

- エラーを無視
- 失敗しても続行
- エラーメッセージなし

✓ 代わりに:

- 明示的なエラーハンドリング
- わかりやすいエラーメッセージ
- 適切な終了コード

詳細リソースの参照

単一責任原則

詳細は resources/single-responsibility-principle.md を参照

組み合わせ可能性

詳細は resources/composability-principle.md を参照

冪等性原則

詳細は resources/idempotency-principle.md を参照

保守性ガイド

詳細は resources/maintainability-guide.md を参照

チェックリスト

完全版は templates/best-practice-checklist.md を参照

コマンドリファレンス

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

リソース読み取り

# 単一責任原則詳細
cat .claude/skills/command-best-practices/resources/single-responsibility-principle.md

# 組み合わせ可能性詳細
cat .claude/skills/command-best-practices/resources/composability-principle.md

テンプレート参照

# ベストプラクティスチェックリスト
cat .claude/skills/command-best-practices/templates/best-practice-checklist.md

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

# 知識ドキュメントの品質検証
node .claude/skills/knowledge-management/scripts/validate-knowledge.mjs .claude/skills/command-best-practices/resources/single-responsibility-principle.md

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

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

関連スキル

  • .claude/skills/command-structure-fundamentals/SKILL.md - 基本構造
  • .claude/skills/command-security-design/SKILL.md - セキュリティ原則
  • .claude/skills/command-error-handling/SKILL.md - エラーハンドリング原則

更新履歴

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