git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/03-ssot" ~/.claude/skills/majiayu000-claude-skill-registry-03-ssot && rm -rf "$T"
skills/data/03-ssot/SKILL.md03-ssot — Data
Status: ACTIVE AppliesTo: v10 ParentSSOT: skills/devian-core/03-ssot/SKILL.md
Scope
이 문서는 DATA 도메인(테이블, Contract, 스토리지) 관련 SSOT를 정의한다.
중복 금지: 공통 용어/플레이스홀더/입력 분리/머지 규칙은 Root SSOT가 정본이며, 이 문서는 재정의하지 않는다.
tableConfig 설정
DATA 도메인의 데이터 출력 타겟은 전역
tableConfig로 설정한다.
"tableConfig": { "tableDirs": ["../framework-cs/apps/UnityExample/Assets/Bundles/Tables"], "stringDirs": ["../framework-cs/apps/UnityExample/Assets/Bundles/Strings"], "soundDirs": ["../framework-cs/apps/UnityExample/Assets/Bundles/Sounds"] }
| 필드 | 역할 | 예시 |
|---|---|---|
| 테이블 출력 디렉토리 목록 | |
| String 테이블 출력 디렉토리 목록 | |
| Sound 데이터 출력 디렉토리 목록 | |
필수 규칙:
의 각 Dir 배열은 필수 (빈 배열 허용)tableConfig- 빌더가 각 Dir에 대해
및ndjson/
하위 디렉토리를 생성pb64/
는 금지 (deprecated, 존재 시 빌드 FAIL)dataConfig
는 금지 (존재 시 빌드 실패)domains[*].dataTargetDirs
DomainType = DATA
DATA 입력은
{buildInputJson}의 domains 섹션이 정의한다.
Common 필수 (Hard Rule)
Devian v10 프로젝트는 DATA DomainKey로
을 반드시 포함한다.Common
에서{buildInputJson}
은 필수 항목이다.domains.Common- 결과로 Common 모듈(C#/TS)은 항상 생성/유지된다:
- C#:
(프로젝트명)Devian.Domain.Common - TS:
(폴더명:@devian/module-common
)devian-domain-common
- C#:
Common 모듈의 상세 정책은 skills/devian-common/02-module-policy를 참조한다.
필수 개념
- Contracts: JSON 기반 타입/enum 정의
- Tables: XLSX 기반 테이블 정의 + 데이터
입력 경로는
{buildInputJson}이 정본이다:
domains[Common].contractDir = Domains/Common/contractsdomains[Common].tableDir = Domains/Common/tables
키 변경 (레거시 호환):
(새 키),contractDir
(레거시/금지)contractsDir
(새 키),tableDir
(레거시/금지)tablesDir
Tables (XLSX) 헤더/데이터 규약
- 최소 4행 헤더를 가진다.
- Row 1: 컬럼명
- Row 2: 타입
- Row 3: 옵션
- Row 4: 코멘트(해석하지 않음)
- Row 5부터 데이터
- Header Stop Rule: Row1에서 빈 셀을 만나면 그 뒤 컬럼은 무시
- Data Stop Rule: PrimaryKey 컬럼이 비면 즉시 중단
옵션 해석 정책
- PrimaryKey:
옵션만 PrimaryKey로 해석한다.pk - gen:<EnumName>:
옵션이 선언된 컬럼은 반드시gen:
여야 한다.pk - group:true (Hard): 테이블당 최대 1개 컬럼만 허용.
는 "nullable/optional column" 힌트로만 사용optional:true- 그 외
등은 Reserved (있어도 무시 / 의미 부여 금지)parser:*
상세 규칙: skills/devian-data/30-table-authoring-rules
DATA 산출물 경로 (정책)
staging:
{tempDir}/{DomainKey}/cs/Generated/{DomainKey}.g.cs
,{tempDir}/{DomainKey}/ts/Generated/{DomainKey}.g.tsindex.ts
(내용은 NDJSON){tempDir}/{DomainKey}/data/ndjson/{TableName}.json
(pk 옵션 있는 테이블만){tempDir}/{DomainKey}/data/pb64/{TableName}.asset
final (csConfig/tsConfig/tableConfig 기반):
{csConfig.generateDir}/Devian.Domain.{DomainKey}/Generated/{DomainKey}.g.cs
,{tsConfig.generateDir}/devian-domain-{domainkey}/Generated/{DomainKey}.g.tsindex.ts
(내용은 NDJSON){tableDir}/ndjson/{TableName}.json
(pk 옵션 있는 테이블만){tableDir}/pb64/{TableName}.asset
도메인 폴더 미사용 (Hard Rule):
- 최종 경로에
폴더를 생성하지 않는다.{DomainKey} - 모든 도메인의 테이블 파일이 동일 디렉토리에 병합된다.
- 동일 파일명 충돌 시 빌드 FAIL (조용한 덮어쓰기 금지).
금지 필드 (Hard Fail):
— 금지,domains[*].csTargetDir
사용csConfig.generateDir
— 금지,domains[*].tsTargetDir
사용tsConfig.generateDir
— 금지,domains[*].dataTargetDirs
사용tableConfig.*Dirs
C# Namespace (Hard Rule)
DATA Domain 생성물의 C# 네임스페이스:
namespace Devian.Domain.{DomainKey}
예: DomainKey
Common → namespace Devian.Domain.Common
TS index.ts Marker 관리 (Hard Rule)
TS
는 빌더가 관리하되, 통째 덮어쓰기를 금지한다.devian-domain-*/index.ts
- marker 구간:
~// <devian:domain-exports>
— Domain 생성물 export// </devian:domain-exports>
~// <devian:feature-exports>
— features 폴더 export// </devian:feature-exports>
NDJSON 스토리지 규약
파일 확장자는
이지만, .json
폴더의 파일 내용은 NDJSON(라인 단위 JSON)이다.ndjson/
상세 규칙: skills/devian-data/34-ndjson-storage
pb64 export 규약 (Hard Rule)
pk 옵션이 있는 테이블만 Unity TextAsset
파일로 export한다..asset
- 파일명:
(테이블 단위 1개 파일){TableName}.asset - 저장 형식: Unity TextAsset YAML
- pk 옵션이 없는 테이블은 export 안함
상세 규칙: skills/devian-data/35-pb64-storage
DATA export PK 규칙 (Hard Rule)
DATA export는 PK 유효 row만 포함하며, 유효 row가 없으면 산출물을 생성하지 않는다.
(pk 옵션)가 정의되지 않은 테이블은 ndjson/pb64 파일을 생성하지 않는다.primaryKey
값이 비어있는 row는 export 대상에서 제외된다.primaryKey- 결과적으로 유효 row가 0개인 경우 파일을 생성하지 않고
로그를 남긴다.[Skip]
See Also
- Root SSOT — 공통 용어/플레이스홀더/머지 규칙
- Data Policy
- Table Authoring Rules
- NDJSON Storage
- PB64 Storage