triforce-sync-check
スキル変更後やコミット前などに、スキル定義ファイルが複数の場所に矛盾なく保存されているかを自動で確認し、CI環境での検証にも役立つ、スキル定義の整合性を保つためのチェックを行うSkill。
📜 元の英語説明(参考)
Verify 3-Mirror skill sync consistency across .public/skills, .codex/skills, and .claude/skills. Use after skill changes, before commits, or for CI validation.
🇯🇵 日本人クリエイター向け解説
スキル変更後やコミット前などに、スキル定義ファイルが複数の場所に矛盾なく保存されているかを自動で確認し、CI環境での検証にも役立つ、スキル定義の整合性を保つためのチェックを行うSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o triforce-sync-check.zip https://jpskill.com/download/18894.zip && unzip -o triforce-sync-check.zip && rm triforce-sync-check.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18894.zip -OutFile "$d\triforce-sync-check.zip"; Expand-Archive "$d\triforce-sync-check.zip" -DestinationPath $d -Force; ri "$d\triforce-sync-check.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
triforce-sync-check.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
triforce-sync-checkフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[スキル名] triforce-sync-check
Triforce Sync Check
3つのミラーのスキル同期の一貫性を検証するスキルです。
アーキテクチャ
.public/skills/ (SSOT - Single Source of Truth)
│
├──► .codex/skills/ (Mirror - Antigravity/Codex)
│
└──► .claude/skills/ (Mirror - Claude Code)
使用する場面
- スキルの追加/修正/削除後
- コミット前の検証
- CI/CD パイプライン
- デプロイ前の確認
クイックチェック
# 1. スキル数の確認
ls -1d .public/skills/*/ | wc -l
ls -1d .codex/skills/*/ | wc -l
ls -1d .claude/skills/*/ | wc -l
# 2. コンテンツハッシュの比較
find .public/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5
find .codex/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5
find .claude/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5
完全な検証チェックリスト
1. 数の一致検証
public_count=$(ls -1d .public/skills/*/ | wc -l)
codex_count=$(ls -1d .codex/skills/*/ | wc -l)
claude_count=$(ls -1d .claude/skills/*/ | wc -l)
echo "SSOT: $public_count"
echo "Codex: $codex_count"
echo "Claude: $claude_count"
合格基準: 3つの値がすべて同じであること
2. 構造の検証
# ディレクトリリストの比較
diff <(ls -1 .public/skills | sort) <(ls -1 .codex/skills | sort)
diff <(ls -1 .public/skills | sort) <(ls -1 .claude/skills | sort)
合格基準: diff の出力がないこと (空の結果)
3. コンテンツの検証
# SKILL.md ファイルのハッシュ比較
public_hash=$(find .public/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
codex_hash=$(find .codex/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
claude_hash=$(find .claude/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
[ "$public_hash" = "$codex_hash" ] && [ "$public_hash" = "$claude_hash" ]
合格基準: 3つのハッシュがすべて同じであること
4. YAML の検証
# 各 SKILL.md の frontmatter の有効性
for skill in .public/skills/*/SKILL.md; do
name=$(grep "^name:" "$skill" | head -1)
desc=$(grep "^description:" "$skill" | head -1)
if [ -z "$name" ] || [ -z "$desc" ]; then
echo "INVALID: $skill"
fi
done
合格基準: INVALID の出力がないこと
5. 重複チェック
# name フィールドの重複確認
grep -h "^name:" .public/skills/*/SKILL.md | sort | uniq -c | grep -v "^ *1 "
合格基準: 出力がないこと (重複がないこと)
同期コマンド
不一致が発見された場合の再同期:
node scripts/sync-skills.js
CI 連携
# .github/workflows/skills-check.yml
- name: Triforce Sync Check
run: |
public=$(ls -1d .public/skills/*/ | wc -l)
codex=$(ls -1d .codex/skills/*/ | wc -l)
claude=$(ls -1d .claude/skills/*/ | wc -l)
if [ "$public" != "$codex" ] || [ "$public" != "$claude" ]; then
echo "❌ Mirror count mismatch"
exit 1
fi
pub=$(find .public/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
cx=$(find .codex/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
cl=$(find .claude/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
if [ "$pub" != "$cx" ] || [ "$pub" != "$cl" ]; then
echo "❌ Content hash mismatch"
exit 1
fi
echo "✅ Triforce sync verified"
トラブルシューティング
| 症状 | 原因 | 解決策 |
|---|---|---|
| 数が不一致 | sync が未実行 | node scripts/sync-skills.js |
| ハッシュが不一致 | ミラーを直接修正 | SSOT を修正後 sync を実行 |
| YAML エラー | frontmatter の形式 | name/description を確認 |
| name が重複 | コピー&ペーストのミス | 固有の name に修正 |
合格/不合格の概要
✅ 合格条件:
- 数: github = codex = claude
- 構造: 同じディレクトリリスト
- コンテンツ: 同じハッシュ値
- YAML: すべてのスキルに name + description
- ユニーク: name の重複がない
❌ 不合格の場合:
1. エラーの種類を特定
2. SSOT (.public/skills) を修正
3. sync-skills.js を実行
4. 再検証 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Triforce Sync Check
3-Mirror 스킬 동기화 일관성을 검증하는 스킬입니다.
Architecture
.public/skills/ (SSOT - Single Source of Truth)
│
├──► .codex/skills/ (Mirror - Antigravity/Codex)
│
└──► .claude/skills/ (Mirror - Claude Code)
When to Use
- 스킬 추가/수정/삭제 후
- 커밋 전 검증
- CI/CD 파이프라인
- 배포 전 확인
Quick Check
# 1. 스킬 수 확인
ls -1d .public/skills/*/ | wc -l
ls -1d .codex/skills/*/ | wc -l
ls -1d .claude/skills/*/ | wc -l
# 2. 콘텐츠 해시 비교
find .public/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5
find .codex/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5
find .claude/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5
Full Verification Checklist
1. Count Verification
public_count=$(ls -1d .public/skills/*/ | wc -l)
codex_count=$(ls -1d .codex/skills/*/ | wc -l)
claude_count=$(ls -1d .claude/skills/*/ | wc -l)
echo "SSOT: $public_count"
echo "Codex: $codex_count"
echo "Claude: $claude_count"
Pass Criteria: 3개 값이 모두 동일
2. Structure Verification
# 디렉토리 목록 비교
diff <(ls -1 .public/skills | sort) <(ls -1 .codex/skills | sort)
diff <(ls -1 .public/skills | sort) <(ls -1 .claude/skills | sort)
Pass Criteria: diff 출력 없음 (빈 결과)
3. Content Verification
# SKILL.md 파일 해시 비교
public_hash=$(find .public/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
codex_hash=$(find .codex/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
claude_hash=$(find .claude/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
[ "$public_hash" = "$codex_hash" ] && [ "$public_hash" = "$claude_hash" ]
Pass Criteria: 3개 해시가 모두 동일
4. YAML Validation
# 각 SKILL.md의 frontmatter 유효성
for skill in .public/skills/*/SKILL.md; do
name=$(grep "^name:" "$skill" | head -1)
desc=$(grep "^description:" "$skill" | head -1)
if [ -z "$name" ] || [ -z "$desc" ]; then
echo "INVALID: $skill"
fi
done
Pass Criteria: INVALID 출력 없음
5. Duplicate Check
# name 필드 중복 확인
grep -h "^name:" .public/skills/*/SKILL.md | sort | uniq -c | grep -v "^ *1 "
Pass Criteria: 출력 없음 (중복 없음)
Sync Command
불일치 발견 시 재동기화:
node scripts/sync-skills.js
CI Integration
# .github/workflows/skills-check.yml
- name: Triforce Sync Check
run: |
public=$(ls -1d .public/skills/*/ | wc -l)
codex=$(ls -1d .codex/skills/*/ | wc -l)
claude=$(ls -1d .claude/skills/*/ | wc -l)
if [ "$public" != "$codex" ] || [ "$public" != "$claude" ]; then
echo "❌ Mirror count mismatch"
exit 1
fi
pub=$(find .public/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
cx=$(find .codex/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
cl=$(find .claude/skills -name "SKILL.md" -exec md5 -q {} \; | sort | md5)
if [ "$pub" != "$cx" ] || [ "$pub" != "$cl" ]; then
echo "❌ Content hash mismatch"
exit 1
fi
echo "✅ Triforce sync verified"
Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| 수 불일치 | sync 미실행 | node scripts/sync-skills.js |
| 해시 불일치 | 직접 미러 수정 | SSOT 수정 후 sync |
| YAML 오류 | frontmatter 형식 | name/description 확인 |
| 중복 name | 복사 붙여넣기 실수 | 고유한 name으로 수정 |
Pass/Fail Summary
✅ PASS 조건:
- Count: github = codex = claude
- Structure: 동일한 디렉토리 목록
- Content: 동일한 해시값
- YAML: 모든 스킬에 name + description
- Unique: 중복 name 없음
❌ FAIL 시:
1. 오류 유형 식별
2. SSOT (.public/skills) 수정
3. sync-skills.js 실행
4. 재검증