Installs into .claude/skills of the current project.
Are you the author of 34 Ndjson Storage?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-34-ndjson-storage-claude-skill-registry-data)
---
name: 34-ndjson-storage
description: 이 문서는 NDJSON 저장 포맷의 정본이다.
---
# 34-ndjson-storage
Status: ACTIVE
AppliesTo: v10
## SSOT
이 문서는 **NDJSON 저장 포맷**의 정본이다.
---
## 목적/범위
**NDJSON(Line-delimited JSON) 파일의 저장 포맷(내용/확장자)을 정의한다.**
이 스킬은 "저장 포맷"만 정의한다. 구체적인 폴더 경로/라우팅은 각 도메인 스킬에서 정한다:
- String Table: `skills/devian-data/33-string-table/SKILL.md` → `.../string/ndjson/...`
- 일반 Table: `skills/devian-data/32-json-row-io/SKILL.md` → `.../ndjson/...`
---
## NDJSON 포맷 규칙 (Hard Rules)
### 파일 인코딩
**UTF-8 텍스트**
### 내용 형식
**NDJSON (Line-delimited JSON)**
- 한 줄 = JSON object 1개
- 빈 줄 금지
- JSON array (`[]`) 금지
```
{"id":"item1","value":100}
{"id":"item2","value":200}
{"id":"item3","value":300}
```
### 확장자 규칙 (중요)
**파일 확장자는 `.json`이다.**
- 내용이 NDJSON이라도 확장자는 `.json` 사용
- 소비 측(Unity/툴링) 요구로 `.json` 고정
- `.ndjson` 확장자 금지
### 결정성 (Deterministic)
**같은 입력이면 항상 같은 출력이 나와야 한다.**
- 라인 순서: 입력 데이터 순서 유지
- JSON stringify: 컴팩트 포맷 (들여쓰기 없음)
- 필드 순서: 각 도메인 스킬에서 정의
---
## 빌더 API
### 소스 경로
```
framework-ts/tools/builder/generators/ndjson-storage.js
```
### Export 함수
```javascript
/**
* Object 배열을 NDJSON 문자열로 변환
* @param {Array<object>} objects - JSON object 배열
* @returns {string} NDJSON 문자열
*/
export function encodeNdjsonFromObjects(objects);
/**
* JSON 문자열 배열을 NDJSON 문자열로 변환
* @param {Array<string>} lines - 이미 JSON.stringify된 라인 배열
* @returns {string} NDJSON 문자열
*/
export function encodeNdjsonFromLines(lines);
```
### 동작 규칙
- `encodeNdjsonFromObjects`: `objects.map(o => JSON.stringify(o)).join('\n')`
- `encodeNdjsonFromLines`: `lines.join('\n')`
- 빈 배열이면 `''` 반환 (기존 동작과 호환)
---
## 금지 행동
- NDJSON 내용을 JSON array(`[]`)로 바꾸기 금지
- 확장자를 `.ndjson`로 바꾸기 금지 (`.json` 유지)
- 라인 끝에 trailing comma 추가 금지
---
## DoD (검증 가능)
### PASS 조건
- [ ] NDJSON 파일 확장자가 `.json`임
- [ ] 파일 내용이 한 줄당 JSON object 1개
- [ ] JSON array가 아님
- [ ] 빈 줄 없음
- [ ] 같은 입력이면 같은 출력 (결정성)
### FAIL 조건
- 파일 확장자가 `.ndjson`
- 내용이 JSON array
- 빈 줄 포함
- 비결정적 출력
---
## Reference
- Consumer: `skills/devian-data/32-json-row-io/SKILL.md` (일반 Table)
- Consumer: `skills/devian-data/33-string-table/SKILL.md` (String Table)