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
  • 원격 스크립트 실행