Temper-Skills (라이브러리 모드)은(는) 무엇을 하나요?
에이전트 스킬이나 프롬프트의 의사 결정 로직을 결정론적 Python 코드로 변환합니다 — 추론 시 LLM 호출이 전혀 없으며, 설치된 temper-skills CLI를 구동합니다. CLI를 조정하고 그 출력을 중계합니다. 라이브러리가 템퍼링 작업을 수행하며, 사용자가 직접 의사 결정 트리를 작성할 필요가 없습니다.
이 스킬은 루프를 직접 실행할 네이티브 서브에이전트/태스크 프리미티브가 없는 경우에 사용하세요. Claude Code 내에서는 서브에이전트 모드 스킬을 선호합니다(키 없이 실행되며 라이브 패널이 제공됨). 이 모드는 대신 CLI를 셸 아웃하여 실행합니다.
사용 시기
.md스킬, 시스템 프롬프트 또는 플레이북이 구조화된 입력에 대한 조건부 라우팅/의사 결정 로직(if-this-then-that)을 보유하고 있으며, 이 로직이 테스트 가능하고 PR에서 diff 가능하며 모델 업데이트에 탄력적이어야 할 때- 적합한 예: 티켓 라우팅, 분류 규칙, 자격 확인 — 사전 계산 가능한 특성에 대한 범주형 결정
- 부적합한 예: 연속 점수 매기기, 텍스트 생성, 또는 모델이 접근할 수 있는 문서가 없는 로직
필수 규칙
- 항상 CLI를 통해 라이브러리를 호출하세요. 결정 로직을 자연어로 다시 구현하여 실행을 대체하지 마십시오.
- 스키마 비준을 절대 건너뛰지 마십시오. 승인하는 스키마는 루프가 함께 공진화하는 초기 시드입니다(
schema_critic이 확장하고, '가지 획득' 가드가 가지치기함). 따라서 시드의 무음 추출 오류는 모든 것을 오염시킵니다. 터미널이 연결되지 않은 경우에도 아래 파일 기반 게이트(--propose-schema)를 사용하세요. 공진화된 스키마와 CLI가 마지막에 출력하는schema gaps/schema grew노트를 검토하세요. - 절대 무음 설치하지 마십시오. 게이트(0단계)에서 라이브러리나 백엔드가 누락되었다고 보고하면, 사용자에게
pip install실행 또는 환경 변경에 대해 먼저 물어보세요. - 트리가 "올바르다"고 주장하지 마십시오. — 결정론적이고 감사 가능하다고만 말하세요. 정확성은 사용자의 책임이며, 비준된 예제(
validate, 4단계)를 통해 확립됩니다. - CLI의 게이트와 평결을 그대로 중계하세요 — 감사 평결, 페르소나 패널, 그레이 존, 비준 대기 중인 사례. 요약하여 생략하지 마십시오.
0단계 — 설치 및 백엔드 확인
python scripts/check_install.py를 실행하고 종료 코드에 따라 분기합니다:
0— 준비 완료, 진행.10— 설치됨 but 모델 백엔드 없음. 사용자에게 알림: temper-skills에는 백엔드(로그인된claude또는opencodeCLI, 또는 환경에 설정된ANTHROPIC_API_KEY)가 필요합니다. 어떻게 제공할지 물어보십시오. 백엔드가 준비될 때까지 진행하지 마십시오.11— 설치되지 않음. 질문: "temper-skills가 설치되지 않았습니다. 지금 설치하시겠습니까? (pip install temper-skills)" 명시적 확인이 있을 때만 설치합니다.
1단계 — guide를 사용한 분류 (여기서 시작)
의사 결정 로직을 포함하는 .md 파일 또는 프롬프트를 찾은 후(모호한 경우 사용자와 경로 확인), 한 줄 둘러보기 명령을 실행합니다:
temper-skills guide <path/to/skill.md> --json
사용자가 디렉토리(스킬 라이브러리)를 가리키는 경우, 하나의 파일을 안내하는 대신 해당 디렉토리를 스캔합니다 — 감사는 그 자체로 보고할 가치가 있는 보고서입니다:
temper-skills audit <dir> --json --report audit.md
순위가 매겨진 결과를 중계합니다(JSON은 스킬별 보고서 목록이며, 가장 실행 가능한 것부터 표시됨) 상위 선택 항목을 guide할 것을 제안합니다. audit.md는 PR에 공유 가능한 Markdown 버전입니다.
항상 --json을 전달하십시오. guide와 ingest는 기계 판독 가능한 매니페스트를 stdout으로 내보내고 사람이 읽을 수 있는 Rich 패널을 stderr로 보냅니다 — 매니페스트를 읽고 패널을 스크래핑하지 마십시오. guide의 매니페스트는 다음과 같습니다:
{ "audit": { "verdict": "...", "recommended_action": "...", ... },
"action_taken": "temper|decompose|...",
"status": "compiled|stopped_for_ratification|action_not_auto_run",
"final_skill_path": "...", "artifacts": ["..."] }
guide는 스킬을 감사한 후 recommended_action을 따릅니다. 감사 평결과 조치를 사용자에게 중계합니다:
temper— 하나의 트리 형태 결정.guide가 템퍼링(빠름);status: compiled.decompose— 플로우(2개 이상의 결정).guide가 결정별 스키마를 내보내고 중지됨;status: stopped_for_ratification.externalize_data/build_normalizer/delegate_prose— 템퍼링 작업이 아님.status: action_not_auto_run; 조치 힌트를 중계하고 중지합니다.
guide는 둘러보기입니다: quick 프로필을 실행하고 추론된 스키마를 자동 수락합니다. 이것은 "이것이 무엇을 하는지 보여줘"에는 적합하지만, 사용자가 신뢰할 트리의 경우 2단계로 이동하여 스키마가 비준되도록 하십시오.
2단계 — 관리자 트리 생성 (비준된 흐름)
2a. 스키마 초안 작성 및 비준을 위해 중지
temper-skills ingest <path/to/skill.md> --propose-schema --json
이 명령은 schema.proposed.py를 작성하고 중지됩니다 — 루프는 비준되지 않은 스키마에서 절대 실행되지 않습니다. stdout의 JSON은 {proposed_schema_path, fn_name, features:[{name,type,description}], constraints}를 제공합니다. 제안된 특성을 사용자에게 보여주고 한 가지만 물어보십시오: 이 특성을 수락하시겠습니까, 아니면 목록을 수정하시겠습니까? 사용자의 편집 사항을 schema.proposed.py에 적용합니다.
여기서 사용자에게 다른 것은 묻지 마십시오 — 특성 범위나 유지할 가지에 대해 묻지 마십시오. 가지치기는 루프(오버엔지니어링 비평가)의 작업이며 사용자의 작업이 아닙니다.
2b. 비준된 스키마로 컴파일
temper-skills ingest <path/to/skill.md> \
--schema schema.proposed.py \
--profile standard \
--json
사용자와 함께 프로필을 선택하십시오 — quick | standard | audit-grade, 기본값 standard; 추천하기 전에 references/profiles.md를 참조하십시오. --json은 비대화형을 의미합니다: 루프는 수렴될 때까지 실행되고(이렇게 구동될 때는 라운드별 게이트를 위해 일시 중지할 수 없습니다 — 그 게이트는 휴먼 터미널 기능입니다) 결과 매니페스트를 stdout으로 내보냅니다. 그것을 읽고 패널을 스크래핑하지 마십시오. (--require-fit는 감사 평결이 skip인 경우 종료 코드 3과 함께 조기 종료합니다; 추가하여 부적합한 경우 루프를 낭비하지 않도록 하십시오.)
2c. 조치가 decompose인 경우
플로우는 먼저 분할되어야 합니다; 각 결정을 개별적으로 템퍼링하십시오:
temper-skills decompose <path/to/skill.md> --temper-each --out-dir out/
이 명령은 결정당 하나의 스키마를 내보내고 비준을 위해 중지됩니다. 스키마를 표면화하고 사용자가 편집할 수 있도록 한 다음, 동일한 명령을 다시 실행하여 각각을 트리와 오케스트레이터 스킬로 컴파일합니다(--yes-unratified는 중지를 건너뜁니다 — 사용자가 요청하지 않는 한 피하십시오).
3단계 — 아티팩트 보고 (매니페스트에서)
ingest --json 매니페스트는 진실 공급원입니다 — 다음 필드를 읽고 스크래핑하지 마십시오:
{ "tree_path": "...", "tempered_skill_path": "...",
"validation_dataset_path": "..." , "validation_case_count": 0,
"gray_zones": [{"node": 1, "condition": "...", "note": "..."}],
"features": ["..."], "node_count": 0, "profile": "...", "cost_usd": 0.0 }
세 가지 아티팩트를 모두 사용자에게 표면화합니다:
tree_path— 의사 결정 트리: 아무것도 임포트하지 않으며, 추론 시 LLM 호출이 전혀 없고,generated_at+ 모델 헤더와 노드별 출처 주석이 포함됨;tempered_skill_path— 템퍼링된skill.md: 원래 스킬이 재결정하는 대신 고정된 트리를 호출하도록 다시 작성됨. 전달물의 절반; 버리지 마십시오;validation_dataset_path— 루프가 그레이 존을 위해 구축한 커밋된.validation.jsonl, 비준 대기 중(validation_case_count)."agrees": false인 행은 사용자가 판결해야 할 가장 가치 있는 불일치입니다. 그 옆에 있는 동작 잠금 테스트(test_<stem>.py)는 항상 통과합니다; 비준된 레이블만이 테스트를 실패하게 만들 수 있습니다.
사용자에게 경로, 프로필, cost_usd 및 gray_zones를 알려줍니다. 규칙 4를 재진술합니다: 결정론적이고 감사 가능하며 "올바른" 것이 아닙니다.
4단계 (선택 사항) — CI에 고정
사용자가 레이블이 지정된 집합을 비준하면, 이를 기준으로 트리의 유효성을 검사합니다:
temper-skills validate decision_tree.generated.py ratified.json --min-agreement 1.0
불일치 시 0이 아닌 종료 코드 — 이것이 CI에서 트리를 고정하는 방법입니다. 각 불일치는 트리 버그 또는 레이블이 잘못된 예제입니다; 승인을 위해 중계합니다.
참조
프로필을 추천하기 전에 라운드/수렴/페르소나 패널/프로필당 비용에 대한 references/profiles.md를 참조하십시오.
금지 사항
- 라이브러리를 실행하는 대신 트리의 로직을 자연어로 작성하지 마십시오.
quick데모에서도 스키마 비준을 건너뛰지 마십시오(quick은 출처 주석을 생략할 뿐 게이트는 생략하지 않습니다).- 명시적 확인 없이 환경을 설치하거나 수정하지 마십시오.
- 생성된 트리가 "올바르다"고 주장하지 마십시오.