Triforce sync check
Skill aiskillstore/marketplace/skills/doyajin174/triforce-sync-check
Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified.
npx -y skills add aiskillstore/marketplace --skill triforce-sync-checkAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Verify 3-Mirror skill sync consistency across .public/skills, .codex/skills, and .claude/skills. Use after skill changes, before commits, or for CI validation.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.2 KB, as published. Nobody here has run it
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. 재검증