대시보드
Morit Plugin4. 기능, 데이터, 사용자 제어

AI Skill과 파일 산출물

Morit Plugin의 kind: "skill"과 Codex·Claude 같은 AI 에이전트의 Skill 파일은 이름이 같지만 역할이 다릅니다.

  • Morit Plugin Skill: Host가 설치·권한·timeout 경계에서 실행하는 capability
  • AI 에이전트 Skill: 에이전트가 작업 순서와 도구 사용법을 따르는 지침

에이전트 Skill을 사용해 플러그인을 만들더라도 결과 .mplg는 일반 SDK 계약과 동일하게 검증·서명됩니다.

파일 작업 완료 순서

문서, 표, 이미지, archive 등 파일을 만드는 capability나 AI 작업은 다음 순서를 지킵니다.

text
요청과 입력 조사
  → 파일 생성·편집
  → 구조 검증
  → 가능하면 시각 검증
  → 원래 parser로 다시 열고 내용 확인
  → 최종 artifact 저장
  → 사용자에게 실제 링크와 요약 반환

“작업을 마쳤어요”만 답하거나 sandbox 내부 경로만 남기면 완료가 아닙니다. 존재하지 않는 .docx 경로나 아직 생성하지 않은 artifact를 최종 링크처럼 반환하지 않습니다.

DOCX 예

DOCX는 Microsoft Open XML ZIP 구조입니다. 단순히 .docx 확장자를 붙이지 않습니다.

  1. 요청한 목차, 표, 이미지, 스타일을 실제로 작성합니다.
  2. ZIP entry와 [Content_Types].xml, document relationship을 확인합니다.
  3. DOCX parser로 다시 열어 문단·표·이미지 수를 확인합니다.
  4. 모든 페이지를 렌더링해 잘림, 빈 페이지, 겹침, 깨진 한글을 확인합니다.
  5. 수정 후 parser와 렌더링을 다시 실행합니다.
  6. 존재하고 0바이트가 아닌 최종 .docx만 artifact로 반환합니다.

다른 형식도 동일합니다. PDF는 모든 페이지, spreadsheet는 수식과 셀 type, image는 실제 크기와 디코딩, ZIP은 entry 경로와 traversal 안전성을 확인합니다.

Plugin이 파일을 만드는 경우

Plugin은 file_write 권한을 요청하고 Host가 제공하는 artifact 경계로 결과를 전달합니다. sandbox_python 응답의 summary, data, evidence에 존재하지 않는 sandbox:/... 링크를 만들지 않습니다. Host로 복사된 artifact ID나 내부 파일 링크 문법을 사용하고, AI 최종 답변에는 다음을 포함합니다.

  • 파일 이름과 형식
  • 사용자가 요청한 결과 요약
  • 다운로드 또는 앱 내부 미리보기 링크
  • 검증한 항목과 남은 제한

.mplg 산출물

플러그인 개발도 파일 작업입니다.

text
source 작성
  → validate
  → UI가 있으면 preview
  → signed build
  → package reopen·signature verify
  → 앱 설치·실행
  → 요청한 경로에 artifact 반환

source ZIP과 .mplg는 목적이 다릅니다. source ZIP은 편집용이고 .mplg는 설치용입니다. 둘을 같은 다운로드 이름이나 MIME으로 반환하지 않습니다.

플러그인의 기본 품질 게이트는 validate → preview → build → verify입니다. UI가 없는 package는 preview를 생략할 수 있지만 생략 이유를 결과에 기록합니다.

완료 체크

  • 요청한 모든 파일이 실제로 존재하는가
  • 파일 크기가 0보다 큰가
  • 확장자와 내부 형식이 일치하는가
  • 원래 parser로 다시 열리는가
  • 모든 페이지/시트/entry를 확인했는가
  • 미리보기와 다운로드가 같은 최종 artifact를 가리키는가
  • sandbox 경로나 secret이 사용자 응답에 남지 않았는가
  • 실패한 Tool이 있다면 복구·대체 결과와 제한을 설명했는가