SKILL.md 파일로 바꾸게 합니다:
- 메모리는 사실, 선호도, 엔터티, 과거 컨텍스트를 저장합니다.
- Skills는 에이전트가 향후 작업에서 따라야 할 재사용 가능한 절차를 저장합니다.
- Skill Workshop은 유용한 턴을 안전 점검과 선택적 승인 과정을 거쳐 영속적인 작업공간 Skill로 바꾸는 다리입니다.
- 외부에서 가져온 애니메이션 GIF 자산을 검증하는 방법
- 스크린샷 자산을 교체하고 크기를 확인하는 방법
- 저장소 전용 QA 시나리오를 실행하는 방법
- 반복되는 provider 실패를 디버깅하는 방법
- 오래된 로컬 워크플로 노트를 복구하는 방법
- “사용자는 파란색을 좋아한다” 같은 사실
- 광범위한 자서전적 메모리
- 원시 전사 보관
- 비밀, 자격 증명 또는 숨겨진 프롬프트 텍스트
- 반복되지 않을 일회성 지시
기본 상태
번들된 Plugin은 실험적이며plugins.entries.skill-workshop에서
명시적으로 활성화하지 않으면 기본적으로 비활성화됩니다.
Plugin 매니페스트는 enabledByDefault: true를 설정하지 않습니다. Plugin config 스키마 내부의 enabled: true
기본값은 Plugin entry가 이미 선택되고 로드된 후에만 적용됩니다.
실험적이라는 의미:
- Plugin은 opt-in 테스트와 dogfooding에는 충분히 지원됨
- 제안 저장소, 리뷰어 임계값, 캡처 휴리스틱은 발전할 수 있음
- pending approval이 권장 시작 모드
- auto apply는 신뢰된 개인/작업공간 설정용이며, 공유되거나 적대적인 입력이 많은 환경용이 아님
활성화
최소 안전 구성:skill_workshop도구를 사용할 수 있음- 명시적인 재사용 가능 수정 사항이 pending proposal로 대기열에 들어감
- 임계값 기반 리뷰어 패스가 Skill 업데이트를 제안할 수 있음
- pending proposal이 적용되기 전까지는 Skill 파일이 기록되지 않음
approvalPolicy: "auto"도 동일한 스캐너와 격리 경로를 사용합니다. critical 결과가 있는 proposal은 적용하지 않습니다.
구성
| 키 | 기본값 | 범위 / 값 | 의미 |
|---|---|---|---|
enabled | true | boolean | Plugin entry가 로드된 후 Plugin을 활성화합니다. |
autoCapture | true | boolean | 성공적인 에이전트 턴 후 캡처/리뷰를 활성화합니다. |
approvalPolicy | "pending" | "pending", "auto" | 제안을 대기열에 넣거나 안전한 제안을 자동으로 기록합니다. |
reviewMode | "hybrid" | "off", "heuristic", "llm", "hybrid" | 명시적 수정 캡처, LLM 리뷰어, 둘 다, 또는 둘 다 아님을 선택합니다. |
reviewInterval | 15 | 1..200 | 이만큼의 성공적인 턴 후 리뷰어를 실행합니다. |
reviewMinToolCalls | 8 | 1..500 | 관찰된 도구 호출이 이 수에 도달하면 리뷰어를 실행합니다. |
reviewTimeoutMs | 45000 | 5000..180000 | 내장 리뷰어 실행 시간 제한입니다. |
maxPending | 50 | 1..200 | 작업공간당 유지할 최대 pending/격리 proposal 수입니다. |
maxSkillBytes | 40000 | 1024..200000 | 생성된 skill/보조 파일의 최대 크기입니다. |
캡처 경로
Skill Workshop에는 세 가지 캡처 경로가 있습니다.도구 제안
모델은 재사용 가능한 절차를 보거나, 사용자가 skill 저장/업데이트를 요청할 때 직접skill_workshop을 호출할 수 있습니다.
이것이 가장 명시적인 경로이며 autoCapture: false에서도 동작합니다.
휴리스틱 캡처
autoCapture가 활성화되어 있고 reviewMode가 heuristic 또는 hybrid일 때,
Plugin은 성공적인 턴에서 명시적인 사용자 수정 문구를 스캔합니다:
next timefrom now onremember tomake sure toalways ... use/check/verify/record/save/preferprefer ... when/for/instead/usewhen asked
- 애니메이션 GIF 작업 ->
animated-gif-workflow - 스크린샷 또는 자산 작업 ->
screenshot-asset-workflow - QA 또는 시나리오 작업 ->
qa-scenario-workflow - GitHub PR 작업 ->
github-pr-workflow - 폴백 ->
learned-workflows
LLM 리뷰어
autoCapture가 활성화되어 있고 reviewMode가 llm 또는 hybrid일 때, Plugin은
임계값에 도달하면 간결한 내장 리뷰어를 실행합니다.
리뷰어는 다음을 받습니다:
- 최근 전사 텍스트(최근 12,000자까지 제한)
- 기존 작업공간 Skills 최대 12개
- 각 기존 Skill에서 최대 2,000자
- JSON 전용 지시
disableTools: truetoolsAllow: []disableMessageTool: true
{ "action": "none" } 또는 하나의 proposal을 반환합니다. action 필드는 create, append, replace이며, 관련 Skill이 이미 있으면 append/replace를 우선하고, 맞는 기존 Skill이 없을 때만 create를 사용합니다.
예시 create:
append는 section + body를 추가합니다. replace는 지정된 Skill에서 oldText를 newText로 바꿉니다.
proposal 수명 주기
생성된 모든 업데이트는 다음을 가진 proposal이 됩니다:idcreatedAtupdatedAtworkspaceDir- 선택적
agentId - 선택적
sessionId skillNametitlereasonsource:tool,agent_end, 또는reviewerstatuschange- 선택적
scanFindings - 선택적
quarantineReason
pending- 승인 대기 중applied-<workspace>/skills에 기록됨rejected- 운영자/모델에 의해 거부됨quarantined- critical scanner 결과로 차단됨
maxPending까지 가장 최신의 pending/quarantined proposal을 유지합니다.
도구 참조
Plugin은 하나의 에이전트 도구를 등록합니다:status
활성 작업공간의 상태별 proposal 수를 셉니다.
list_pending
pending proposal을 나열합니다.
status 값:
pendingappliedrejectedquarantined
list_quarantine
quarantined proposal을 나열합니다.
skill-workshop: quarantined <skill>이 언급될 때 사용하세요.
inspect
ID로 proposal을 가져옵니다.
suggest
proposal을 생성합니다. approvalPolicy: "pending"(기본값)일 때는 기록하지 않고 대기열에 넣습니다.
안전한 강제 기록 (apply: true)
안전한 강제 기록 (apply: true)
auto 정책에서도 pending 강제 (apply: false)
auto 정책에서도 pending 강제 (apply: false)
이름이 지정된 섹션에 추가
이름이 지정된 섹션에 추가
정확한 텍스트 교체
정확한 텍스트 교체
apply
pending proposal을 적용합니다.
apply는 quarantined proposal을 거부합니다:
reject
proposal을 거부 상태로 표시합니다.
write_support_file
기존 또는 제안된 skill 디렉터리 안에 보조 파일을 기록합니다.
허용되는 최상위 support 디렉터리:
references/templates/scripts/assets/
maxSkillBytes에 의해 바이트 크기가 제한되고,
스캔된 뒤 원자적으로 기록됩니다.
Skill 기록
Skill Workshop는 다음 경로 아래에만 기록합니다:- 소문자로 변환
[a-z0-9_-]가 아닌 연속 구간은-로 변환- 앞뒤의 영숫자가 아닌 문자는 제거
- 최대 길이는 80자
- 최종 이름은
[a-z0-9][a-z0-9_-]{1,79}와 일치해야 함
create의 경우:
- Skill이 존재하지 않으면 Skill Workshop가 새
SKILL.md를 기록함 - 이미 존재하면
## Workflow에 본문을 추가함
append의 경우:
- Skill이 존재하면 요청된 섹션에 추가함
- 존재하지 않으면 최소 Skill을 만든 뒤 추가함
replace의 경우:
- Skill이 이미 존재해야 함
oldText가 정확히 존재해야 함- 첫 번째 정확한 일치 항목만 교체됨
안전 모델
Skill Workshop는 생성된SKILL.md 내용과 보조 파일에 대해 안전 스캐너를 가집니다.
Critical 결과는 proposal을 격리합니다:
| 규칙 ID | 차단하는 내용 |
|---|---|
prompt-injection-ignore-instructions | 에이전트에게 이전/상위 지시를 무시하라고 지시함 |
prompt-injection-system | 시스템 프롬프트, 개발자 메시지, 숨겨진 지시를 참조함 |
prompt-injection-tool | 도구 권한/승인 우회를 장려함 |
shell-pipe-to-shell | curl/wget를 sh, bash, zsh로 파이프하는 내용을 포함함 |
secret-exfiltration | env/프로세스 env 데이터를 네트워크로 보내는 것처럼 보임 |
| 규칙 ID | 경고 대상 |
|---|---|
destructive-delete | 광범위한 rm -rf 스타일 명령 |
unsafe-permissions | chmod 777 스타일 권한 사용 |
scanFindings유지quarantineReason유지list_quarantine에 나타남apply를 통해 적용할 수 없음
프롬프트 가이드
활성화되면 Skill Workshop는 에이전트에게 영속적인 절차형 메모리를 위해skill_workshop을 사용하라고 알려주는 짧은 프롬프트 섹션을 주입합니다.
가이드는 다음을 강조합니다:
- 사실/선호가 아닌 절차
- 사용자 수정 사항
- 자명하지 않은 성공 절차
- 반복되는 함정
- append/replace를 통한 오래되거나 빈약하거나 잘못된 Skill 복구
- 긴 도구 루프 또는 힘든 수정 후 재사용 가능한 절차 저장
- 짧고 명령형인 Skill 텍스트
- 전사 덤프 금지
approvalPolicy에 따라 바뀝니다:
- pending 모드: 제안을 대기열에 넣고, 명시적 승인 후에만 적용
- auto 모드: 명확히 재사용 가능할 때 안전한 작업공간 Skill 업데이트 적용
비용과 런타임 동작
휴리스틱 캡처는 모델을 호출하지 않습니다. LLM 리뷰는 활성/기본 에이전트 모델에서 내장 run을 사용합니다. 기본적으로 모든 턴에서 실행되지 않도록 임계값 기반입니다. 리뷰어는 다음 특성을 가집니다:- 가능하면 동일한 구성 provider/모델 컨텍스트 사용
- 없으면 런타임 에이전트 기본값으로 폴백
reviewTimeoutMs사용- 경량 bootstrap 컨텍스트 사용
- 도구 없음
- 직접 기록하지 않음
- 일반 스캐너 및 승인/격리 경로를 통과하는 proposal만 내보낼 수 있음
운영 패턴
사용자가 다음과 같이 말할 때 Skill Workshop를 사용하세요:- “next time, do X”
- “from now on, prefer Y”
- “make sure to verify Z”
- “save this as a workflow”
- “this took a while; remember the process”
- “update the local skill for this”
- 전사 형태임
- 명령형이 아님
- 시끄러운 일회성 세부 사항을 포함함
- 다음 에이전트에게 무엇을 해야 하는지 알려주지 않음
디버깅
Plugin이 로드되었는지 확인:| 증상 | 가능한 원인 | 확인 항목 |
|---|---|---|
| 도구를 사용할 수 없음 | Plugin entry가 활성화되지 않음 | plugins.entries.skill-workshop.enabled 및 openclaw plugins list |
| 자동 proposal이 나타나지 않음 | autoCapture: false, reviewMode: "off", 또는 임계값 미충족 | 구성, proposal 상태, Gateway 로그 |
| 휴리스틱이 캡처하지 않음 | 사용자 문구가 수정 패턴과 일치하지 않음 | 명시적 skill_workshop.suggest 사용 또는 LLM 리뷰어 활성화 |
| 리뷰어가 proposal을 만들지 않음 | 리뷰어가 none, 잘못된 JSON, 또는 시간 초과를 반환함 | Gateway 로그, reviewTimeoutMs, 임계값 |
| proposal이 적용되지 않음 | approvalPolicy: "pending" | list_pending, 그다음 apply |
| proposal이 pending에서 사라짐 | 중복 proposal 재사용, 최대 pending 정리, 또는 applied/rejected/quarantined 됨 | status, 상태 필터를 사용한 list_pending, list_quarantine |
| Skill 파일은 있는데 모델이 못 봄 | Skill 스냅샷이 새로고침되지 않았거나 Skill 게이팅에서 제외됨 | openclaw skills 상태와 작업공간 Skill 적격성 |
skill-workshop: queued <skill>skill-workshop: applied <skill>skill-workshop: quarantined <skill>skill-workshop: heuristic capture skipped: ...skill-workshop: reviewer skipped: ...skill-workshop: reviewer found no update
QA 시나리오
저장소 기반 QA 시나리오:qa/scenarios/plugins/skill-workshop-animated-gif-autocreate.mdqa/scenarios/plugins/skill-workshop-pending-approval.mdqa/scenarios/plugins/skill-workshop-reviewer-autonomous.md
reviewMode: "llm"을 활성화하고 내장 리뷰어 패스를 실행하기 때문입니다.
auto apply를 활성화하지 말아야 하는 경우
다음과 같은 경우approvalPolicy: "auto"를 피하세요:
- 작업공간에 민감한 절차가 포함됨
- 에이전트가 신뢰할 수 없는 입력을 다룸
- Skills가 넓은 팀 전체에 공유됨
- 아직 프롬프트 또는 스캐너 규칙을 조정 중임
- 모델이 적대적인 웹/이메일 콘텐츠를 자주 처리함