AgentSkillsCN

file-save-protocol

分析结果文件存储协议。明确 Write 工具的使用规范、存储路径的命名惯例,以及在发生失败时的响应格式。

SKILL.md
--- frontmatter
name: file-save-protocol
description: "분석 결과 파일 저장 프로토콜. Write 도구 사용 규칙, 저장 경로 컨벤션, 실패 시 응답 형식을 정의합니다."
tools: Write

파일 저장 프로토콜

Overview

이 스킬은 분석 에이전트가 결과를 파일로 저장할 때 따라야 하는 규칙을 정의합니다.

핵심 목표: 분석 결과의 영속성 보장 및 환각 방지


1. 파일 저장 필수 규칙 (CRITICAL)

환각 방지의 핵심: 분석 결과를 반드시 파일로 저장해야 합니다. 프롬프트로만 반환하면 데이터 손실 및 환각 발생 위험이 있습니다.

왜 파일 저장이 필수인가?

문제설명
컨텍스트 손실긴 대화에서 이전 분석 결과가 잘릴 수 있음
재현 불가파일 없이는 분석 결과를 재검증할 수 없음
환각 위험저장 없이 "저장됨"이라고 응답하면 환각
워크플로우 중단다음 에이전트가 입력 파일을 찾지 못함

필수 사항 (MUST)

  • 모든 분석 결과는 Write 도구로 파일 저장
  • 저장 경로는 coordinator가 제공하는 output_path 사용
  • 저장 성공 여부 확인 후 응답
  • 저장 실패 시 명시적 FAIL 응답

금지 사항 (NEVER)

  • 파일 저장 없이 분석 결과 "완료" 응답
  • 저장 실패를 무시하고 진행
  • output_path 무시하고 임의 경로 사용

1.5 Markdown 저장 규칙 (MANDATORY)

JSON 저장은 항상 필수이며, 사람이 읽기 위한 Markdown 요약도 반드시 저장합니다.

필수 규칙

  • JSON과 MD 모두 저장 (둘 중 하나라도 누락 시 FAIL)
  • MD는 JSON 내용을 요약/정리만 수행 (새 수치/새 출처 추가 금지)
  • 파일명은 번호 접두어 고정:
    • {output_path}/{NN}-{base}.md (base = JSON 파일명에서 .json 제거)
    • 예: 00-index-data.md

2. 저장 프로세스

Step-by-Step

code
Step 1: 분석 완료 후 JSON 객체 생성

Step 2: Write 도구로 파일 저장
        Write(
          file_path="{output_path}/{filename}.json",
          content=JSON.stringify(analysis_result, null, 2)
        )

Step 3: 저장 성공 확인
        └─ 성공: 정상 응답 반환
        └─ 실패: FAIL 응답 반환 (환각 데이터 생성 금지)

저장 경로 컨벤션

coordinator가 제공하는 output_path를 사용합니다:

code
portfolios/{session_folder}/{filename}

예시:
portfolios/2026-01-14-aggressive-abc123/
├── index-data.json             # index-fetcher 출력
├── rate-analysis.json          # rate-analyst 출력
├── sector-analysis.json        # sector-analyst 출력
├── risk-analysis.json          # risk-analyst 출력
├── leadership-analysis.json    # leadership-analyst 출력
├── material-summary.md         # material-organizer 출력 (옵셔널)
├── macro-outlook.json          # macro-synthesizer 출력
├── 00-macro-outlook.md         # macro-synthesizer 출력
├── 01-fund-analysis.md         # fund-portfolio 출력
├── 02-compliance-report.md     # compliance-checker 출력
├── 03-output-verification.md   # output-critic 출력
└── 04-portfolio-summary.md     # portfolio-orchestrator 출력

에이전트별 출력 파일

에이전트출력 파일필수
index-fetcherindex-data.jsonO
rate-analystrate-analysis.jsonO
sector-analystsector-analysis.jsonO
risk-analystrisk-analysis.jsonO
leadership-analystleadership-analysis.jsonO
material-organizermaterial-summary.mdX (옵셔널)
macro-synthesizermacro-outlook.json, 00-macro-outlook.mdO
fund-portfolio01-fund-analysis.mdO
compliance-checker02-compliance-report.mdO
output-critic03-output-verification.mdO
portfolio-orchestrator04-portfolio-summary.mdO

3. 저장 실패 시 응답

저장이 실패하면 절대 "저장됨"으로 응답하지 않습니다:

json
{
  "status": "FAIL",
  "error": "FILE_SAVE_FAILED",
  "detail": "{filename} 저장 실패",
  "attempted_path": "{output_path}/{filename}",
  "action": "재시도 필요"
}

실패 유형별 대응

실패 유형코드대응
경로 없음PATH_NOT_FOUNDcoordinator에 경로 확인 요청
권한 오류PERMISSION_DENIED경로 권한 확인
디스크 공간DISK_FULL공간 확보 후 재시도
알 수 없음UNKNOWN_ERROR에러 메시지 포함하여 보고

4. Write 도구 사용법

기본 사용법

code
Write(
  file_path="portfolios/{session_folder}/rate-analysis.json",
  content="{\"fed_outlook\": {...}, \"bok_outlook\": {...}}"
)

JSON 포맷팅

python
# 들여쓰기 2칸으로 포맷팅
JSON.stringify(analysis_result, null, 2)

파일 확장자 규칙

데이터 유형확장자
구조화된 데이터.json
마크다운 보고서.md
원시 텍스트.txt

5. 저장 확인 체크리스트 (MANDATORY)

저장 전 확인

  • output_path가 coordinator로부터 전달되었는가?
  • 저장할 데이터가 완전한가 (모든 필수 필드 포함)?
  • JSON 형식이 올바른가?

저장 후 확인

  • Write 도구가 에러 없이 완료되었는가?
  • 저장 경로를 응답에 포함했는가?
  • 저장 실패 시 FAIL 응답을 반환했는가?

절대 금지

  • 파일 저장 실패 시 "저장된 것처럼" 응답하지 않았는가?
  • 저장 없이 분석 "완료"로 응답하지 않았는가?

6. 응답 템플릿

성공 시 응답

json
{
  "status": "SUCCESS",
  "output_file": "{output_path}/{filename}.json",
  "summary": {
    // 분석 결과 요약
  }
}

실패 시 응답

json
{
  "status": "FAIL",
  "error": "FILE_SAVE_FAILED",
  "detail": "rate-analysis.json 저장 실패",
  "attempted_path": "portfolios/2026-01-14-aggressive-abc123/rate-analysis.json",
  "action": "재시도 필요"
}


7. 세션 재개 시 파일 검증 (v1.1 신규)

목적: 세션 재개 시 필수 JSON 파일 존재 여부 확인 참조: portfolio-orchestrator 스킬의 세션 재개 검증 섹션

세션 재개 시 coordinator가 수행하는 검증

code
[Step -0.5: 세션 재개 검증]
     │
     ▼
Glob("portfolios/{session_folder}/*.json")
     │
     ├── 필수 파일 목록:
     │   ├── index-data.json
     │   ├── rate-analysis.json
     │   ├── sector-analysis.json
     │   ├── risk-analysis.json
     │   └── leadership-analysis.json
     │
     ├─ 모든 파일 존재 → 다음 Step 진행
     │
     └─ 파일 누락 → 해당 에이전트 재호출

에이전트 책임

각 에이전트는 반드시 파일 저장을 완료해야 합니다:

조건에이전트 행동
Write 성공정상 응답 반환 (output_file 경로 포함)
Write 실패FAIL 반환 (환각 데이터 생성 금지)
output_path 미전달FAIL 반환 (경로 확인 요청)

금지 사항 (coordinator 포함)

code
❌ 파일 저장 없이 "완료" 응답
❌ 이전 세션 결과 "텍스트 요약"으로 대체
❌ JSON 파일 없이 markdown만 작성
❌ 파일 검증 없이 다음 Step 진행

메타 정보

yaml
version: "1.1"
created: "2026-01-14"
updated: "2026-02-01"
purpose: "파일 저장 프로토콜 통합 - 코드 중복 제거"
changes:
  - "v1.1: 세션 재개 시 파일 검증 섹션 추가 (Step -0.5 연동)"
  - "v1.0: 초기 버전 - 파일 저장 필수 규칙 정의"
consumers:
  - index-fetcher
  - rate-analyst
  - sector-analyst
  - risk-analyst
  - leadership-analyst
  - macro-synthesizer
  - compliance-checker
  - fund-portfolio
  - output-critic
  - material-organizer
extracted_from:
  - "파일 저장 필수 섹션 (rate-analyst v4.2)"
  - "저장 프로세스 섹션"
  - "저장 실패 시 응답 형식"
dependencies:
  - Write
  - Glob (coordinator 검증용)