Pack manifest 스펙
Pack은 manifest JSON으로 정의됩니다. 발행 시 안전 게이트가 이 manifest를 검증합니다.
최상위 필드
json
{
"schemaVersion": 4,
"authorUserId": "u_abc123",
"title": "엑셀 합계 추가",
"slug": "excel-sum",
"description": "엑셀에 합계 행을 추가",
"requiredCapabilities": ["file"],
"requiredCliProvider": null,
"inputSchema": { ... },
"steps": [ ... ]
}
필수 capabilities
- file — 로컬 파일 read/list/write
- browser — Playwright 자동화
- image — Codex 이미지 생성
- memory — 메모리 그래프 read/write
- mail — bom-mail 송수신
주의
선언하지 않은 capability를 사용하려 하면 발행 시 거부됩니다. file-transfer를 선언하면 자동으로 shell/native 파일 도구가 활성화됩니다.
단계 정의 예시
json
{
"id": "summarize",
"executor": "Llm",
"requiredCliProvider": null,
"promptTemplate": "다음 텍스트를 3줄로 요약: {{step.input}}",
"outputContract": { "type": "object", "properties": { "summary": { "type": "string" } } }
}
placeholders
PackPromptRenderer가 {{step}}, {{product}}, {{perProduct}}, {{skill}}, {{common}}, {{runId}}, {{productIndex}}, {{extraContext}} 패밀리만 인식하며, 알려지지 않은 placeholder는 hard-fail합니다.
안전 게이트
발행 시 다음이 자동으로 거부됩니다.
- Unknown capability
- allowedTools 불일치
- 하드코딩된 credential 또는 secret 경로
- 하드코딩된 token 또는 데이터 전송 URL
- 원격 스크립트 실행