versioning-skills について
スキル開発の変更追跡、確認、復旧に Git を使う方法を示すスキルです。初期化からパッケージ化まで、コミットを軸にした手順をまとめています。
主な機能
- 01新しいスキルの Git リポジトリ初期化
- 02論理的な編集ごとのコミット
- 03履歴の確認とバージョン比較
- 04コミットの取り消しや編集の破棄
- 05ブランチでの実験的変更
- 06パッケージ化前の状態確認
活用シーン
- 01スキル作成中の変更を追跡
- 02変更点を尋ねられた際の差分確認
- 03不要な編集やコミットの取り消し
- 04ブランチを使ったリスクのある変更のテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oaustegard/ claude-skills --skill versioning-skillsインストール後、Claude Code で/versioning-skillsを入力して読み込まれたか確認します。
同梱ファイルCHANGELOG.mdREADME.md
詳細
バージョン管理スキル
スキルの開発中は、git を使って変更を追跡します。スキルを作成したらリポジトリを初期化し、論理的な変更を行うたびにコミットします。また、バージョンの比較や誤りの取り消しには git コマンドを使います。
新しいスキルを作成する場合
init_skill.sh を実行したら、すぐに git を初期化します。
cd /home/claude/skill-name
git init
git add .
git commit -m "Initial commit: skill structure"
スキルを編集する場合
論理的な変更(セクションの追加、例の修正、リファクタリングなど)を行うたびにコミットします。
cd /home/claude/skill-name
git add .
git commit -m "Add: validation workflow pattern"
コミットメッセージのパターン:
"Add [feature]: description"- 新機能"Fix [issue]: description"- バグ修正"Update [section]: description"- 内容の変更"Refactor [component]: description"- 構造の変更"Remove [feature]: description"- 削除
ユーザーから「何が変わりましたか?」と聞かれた場合
差分をインラインで表示せず、ファイルに誘導してリンクを提示します(下記を参照)。 差分や変更履歴を作成するのは、ユーザーが明示的に依頼した場合(「何が変わりましたか?」「違いを見せて」など)のみです。
先回りして作成しないもの:
- CHANGELOG.md ファイル
- 変更に関するドキュメント
- 「変更した内容はこちらです」という要約
理由: 更新されたコードやドキュメント自体が記録です。別途変更履歴を作成すると、トークンを浪費し、情報が重複します。
ユーザーから依頼された場合は、コミット履歴を表示します。
cd /home/claude/skill-name
git log --oneline
差分はファイルに保存します(トークンの浪費を防ぎます)。
cd /home/claude/skill-name
git diff <commit-hash-1> <commit-hash-2> > /mnt/user-data/outputs/changes.diff
その後、次のリンクを提示します:[View changes](computer:///mnt/user-data/outputs/changes.diff)
複数の差分の場合:
# Changed files list
git diff --name-only <commit-1> <commit-2> > /mnt/user-data/outputs/changed-files.txt
# Full diff
git diff <commit-1> <commit-2> > /mnt/user-data/outputs/full-diff.diff
# Summary stats
git diff --stat <commit-1> <commit-2> > /mnt/user-data/outputs/diff-stats.txt
誤り: git diff <commit-1> <commit-2>(標準出力に表示され、トークンを浪費します)
正しい方法: git diff <commit-1> <commit-2> > /mnt/user-data/outputs/diff.txt(ファイルに保存してリンクを提示します)
コミットを取り消す、または作業を破棄する場合
直前のコミットを取り消す(未コミットの変更は保持):
cd /home/claude/skill-name
git reset --soft HEAD~1
直前のコミットを取り消す(すべての変更を破棄):
git reset --hard HEAD~1
特定のコミットを取り消す(履歴を保持したまま新しいコミットを作成):
git revert <commit-hash>
未コミットの編集を破棄する(最後のコミットの状態に戻す):
git restore .
履歴を保持するため、git reset --hard よりも git revert を優先してください。
実験的な変更をテストする場合
リスクのある変更を行う前にブランチを作成します。
cd /home/claude/skill-name
# Create and switch to experiment branch
git checkout -b experiment-new-approach
# Make changes, test
# ... edit files ...
git add .
git commit -m "Experiment: alternative validation"
# If successful, merge back
git checkout main
git merge experiment-new-approach
git branch -d experiment-new-approach
# If failed, abandon and return to main
git checkout main
git branch -D experiment-new-approach
2 つのスキルバージョンを比較する場合
ユーザーが 2 つのバージョンをアップロードまたは提供した場合:
cd /home/claude
mkdir -p compare
# Extract both versions
unzip /mnt/user-data/uploads/skill-v1.zip -d compare/v1
unzip /mnt/user-data/uploads/skill-v2.zip -d compare/v2
# Initialize git in each
cd compare/v1 && git init && git add . && git commit -m "Version 1"
cd ../v2 && git init && git add . && git commit -m "Version 2"
# Compare
cd ../v1
git diff --no-index . ../v2
または、git を使わずに diff を直接使います。
diff -ur compare/v1 compare/v2
スキルをパッケージ化する場合
zip 化する前に、作業ツリーがクリーンであることを確認します。
cd /home/claude/skill-name
git status # Should show no uncommitted changes
git log --oneline # Review history
# Package (excludes .git automatically with -x)
cd /home/claude
zip -r /mnt/user-data/outputs/skill-name.zip skill-name/ -x "*.git*"
ワークフローへの統合
スキルの作成中:
- init_skill.sh を実行する
- すぐに:
git init && git add . && git commit -m "Initial structure" - SKILL.md を編集する
- コミットする:
git add . && git commit -m "Add: core documentation" - 編集を続け、主要な変更を行うたびにコミットする
スキルの編集中:
- str_replace または bash で変更する
- 必要に応じてテストする
- コミットする:
git add <file> && git commit -m "Fix: corrected example" - 繰り返す
納品前:
- 履歴を確認する:
git log --oneline - クリーンな状態であることを確認する:
git status - -x を指定して .git を除外してパッケージ化する
設定
プロンプトが表示されないよう、セッションごとに git のユーザー情報を一度設定します。
git config --global user.name "Claude"
git config --global user.email "[email protected]"
よくある問題
「not a git repository」
→ 最初に git init を実行します
「nothing to commit」
→ 変更がないか、git add を忘れています
コミットメッセージのエディターが開く
→ コミット時は必ず -m "message" を使用します
ベストプラクティス
キー入力のたびではなく、論理的な変更を行うたびにコミットします。現在形で、内容が分かるコミットメッセージを使います。実験的な変更にはブランチを作成します。進捗を追跡するため、git log --oneline を頻繁に使います。
制限事項
/home/claude 内の git リポジトリはセッション間でリセットされます。バージョン管理が保持されるのは、単一の開発セッション内のみです。ネットワークの制限により、リモートリポジトリへの push/pull はできません。