From unity-assets
Confidence-gated Orchestrator — search-result.json 기반으로 sub-intent별 auto / confirm / reject 분기. 신선한 search-result.json 없으면 R3 안내 한 줄 출력 후 /unity-assets:search 자동 호출. scene/prefab/ScriptableObject/script 생성까지 허용, AssetDatabase 삭제·이동·Build 설정 금지 (이중 prompt + audit enforcement). unity-mcp-orchestrator 스킬에 위임. 모든 MCP 호출은 orchestrator-audit.jsonl에 append.
How this skill is triggered — by the user, by Claude, or both
Slash command
/unity-assets:unity-assets-buildThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search가 작성한 `search-result.json`을 읽고, sub-intent별 confidence에 따라 자동 적용 / 사용자 확인 / 거부 분기를 수행한다. 자동 분기는 `unity-mcp-orchestrator` 스킬을 경유하여 scene·prefab·ScriptableObject·script를 생성한다. 파괴적 작업은 prompt + audit 이중 layer로 차단한다.
Search가 작성한 search-result.json을 읽고, sub-intent별 confidence에 따라 자동 적용 / 사용자 확인 / 거부 분기를 수행한다. 자동 분기는 unity-mcp-orchestrator 스킬을 경유하여 scene·prefab·ScriptableObject·script를 생성한다. 파괴적 작업은 prompt + audit 이중 layer로 차단한다.
CONVENTION.md §6.1 (manifest_version 핸드셰이크), §9 (R3 preflight), §10 (이중 scope enforcement)를 진실원으로 참조한다.
/unity-assets:build "<자연어 요청>" — 단일-입력 흐름. 내부에서 필요 시 /unity-assets:search를 자동 호출./unity-assets:doctor 4/4 ✓ (사용자가 직접 사전 확인 권장).unity-mcp-orchestrator 스킬이 가용.<unity-project>/.claude/unity-asset-index/search-result.json을 확인.
다음 중 하나라도 해당하면 신선하지 않음:
search-result.json::manifest_version 누락.search-result.json::manifest_version != manifest.json::version.search-result.json.mtime < state.json::last_run (인덱스가 그 사이 갱신됨).신선하지 않으면 subagent fan-out 전에 stdout에 정확히 다음 한 줄 출력:
[unity-assets:build] No fresh search-result.json — running :search first (Ctrl+C to abort).
이 한 글자도 변경 금지 (tests/e2e/test-ee1-zombie-survival.ps1가 string match로 단언). 출력 후 사용자 원본 자연어 입력으로 /unity-assets:search를 자동 호출.
재-Search 후에도 소비 시점 manifest_version 불일치가 감지되면 사유 코드 stale_search로 거부하고 /unity-assets:reindex 권고 출력 후 중단.
.claude/unity-assets.yml 또는 기본값:
confidence_threshold.auto (기본 0.70)confidence_threshold.confirm (기본 0.40)search-result.json::groups를 순회. 각 그룹에 대해:
max_confidence = max(group.candidates[].confidence).max_confidence >= auto → auto 분기 (Step 4).max_confidence >= confirm → confirm 분기 (Step 5).Task(
subagent_type="general-purpose",
model="sonnet",
prompt="<Orchestrator 계획 instructions + 금지 튜플 + sub-intent + 에셋 정보>"
)
unity-mcp-orchestrator 스킬을 호출하여 MCP for Unity 도구 (manage_scene, manage_gameobject, manage_prefabs, create_script 등)로 실제 작업 수행.<unity-project>/.claude/unity-asset-index/orchestrator-audit.jsonl에 append (CONVENTION.md §10.2):
{"ts":"2026-05-23T10:11:12Z","sub_intent":"...","tool":"manage_scene","action":"set_active","args_digest":"sha256:..."}
scope_violation을 emit하면 즉시 중단하고 사용자에게 사유 보고./unity-assets:search 재실행, 또는 /unity-assets:reindex.모든 sub-intent 처리 완료 후 stdout에 한 줄 요약:
auto applied / user confirmed and applied / user rejected / no fit).Orchestrator subagent prompt에 다음 금지 튜플 목록을 명시:
(AssetDatabase, Delete)(AssetDatabase, MoveAsset)(Editor, EnvSettings)(Build, *)MCP for Unity 도구 면에서의 매핑:
manage_assets(action="delete"|"move"|"rename")manage_editor 환경설정 변경manage_build 전체execute_menu_item 중 File/Build*manage_packages(action="remove_package")subagent는 이들 중 하나를 만드는 계획 단계를 거부하고 scope_violation emit.
모든 unity-mcp 호출은 orchestrator-audit.jsonl에 append. 실행 종료 후 (또는 tests/unit/test-scope-guard.ps1 실행 시) audit 로그를 스캔하여 금지 튜플 0건 단언. 두 layer는 보완 관계.
search-result.json::manifest_version == manifest.json::version 확인.stale_search로 거부 + 사용자에게 /unity-assets:reindex 권고 + 종료.mcp_unavailable)unity-mcp-orchestrator 스킬 미존재 또는 MCP for Unity 도구 호출 실패 → 즉시 중단, 사유 코드 mcp_unavailable + 사용자에게 사전 조건 설치 안내 (README + CoplayDev/unity-mcp 링크).<unity-project>/.claude/unity-asset-index/orchestrator-audit.jsonl (append-only)confidence + reasoning (풀-피델리티) + manifest_version 모두 검증.npx claudepluginhub v0o0v/unity-asset-skillsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.