@simplysm/sd-claude 14.0.43 → 14.0.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -339,6 +339,49 @@ export class SomePage implements OnInit {
339
339
  - constructor 내 `void this._init()` 같은 수동 호출 패턴 **금지** — ngOnInit이 이미 같은 역할
340
340
  - `resource()` / `httpResource()`는 데이터 로딩 → signal 매핑 용도. 사이드이펙트(라우팅, toast 등) 포함 초기화에는 사용하지 않는다
341
341
 
342
+ ## 소비 프로젝트 네이밍 규칙
343
+
344
+ `@simplysm/angular`를 소비하는 앱 프로젝트에서의 파일명·클래스명 규칙이다.
345
+ 파일명은 **kebab-case + dot-suffix**, 클래스명은 **PascalCase**를 따른다.
346
+
347
+ | 접미어 | 조건 | 파일명 예시 | 클래스명 예시 |
348
+ |--------|------|-------------|---------------|
349
+ | `.sheet.ts` / `*Sheet` | `SdDataSheetBase` 상속 | `outbound-instruction.sheet.ts` | `OutboundInstructionSheet` |
350
+ | `.detail.ts` / `*Detail` | `SdDataDetailBase` 상속 | `outbound-instruction.detail.ts` | `OutboundInstructionDetail` |
351
+ | `.view.ts` / `*View` | sheet/detail 아닌 병합 컴포넌트 + route 연결 | `dashboard.view.ts` | `DashboardView` |
352
+ | `.modal.ts` / `*Modal` | 모달 전용 컴포넌트 | `item-select.modal.ts` | `ItemSelectModal` |
353
+ | `.provider.ts` / `*Provider` | `@Injectable` 클래스 (**`*Service` 금지**) | `app-service.provider.ts` | `AppServiceProvider` |
354
+ | 접미어 없음 | route 미연결 일반 컨트롤 컴포넌트 | `instruction-item.ts` | `InstructionItem` |
355
+
356
+ - `pipe`, `directive` 등 기타 Angular 구성요소는 `@simplysm/angular` 패키지 자체의 네이밍 패턴(`.pipe.ts`, `.directive.ts`)을 따른다
357
+
358
+ ## 소비 프로젝트 디렉토리 구조
359
+
360
+ ```
361
+ src/
362
+ ├── app/ # 라우팅 페이지 (사이드바 메뉴 트리 구조와 대응)
363
+ │ ├── login/
364
+ │ └── home/
365
+ │ ├── {메뉴-그룹}/ # 사이드바 메뉴 그룹
366
+ │ │ └── {도메인}/ # 개별 도메인 (트리 깊이 제한 없음)
367
+ │ │ ├── {도메인}.view.ts # route 연결 병합 컴포넌트
368
+ │ │ ├── {도메인}.sheet.ts # SdDataSheetBase 상속
369
+ │ │ ├── {도메인}.detail.ts # SdDataDetailBase 상속
370
+ │ │ ├── {이름}.modal.ts # 도메인 전용 모달
371
+ │ │ └── {이름}.ts # 일반 컨트롤 (route 미연결)
372
+ │ └── main/
373
+ ├── controls/ # 앱 공유 컨트롤 컴포넌트
374
+ ├── directives/ # 앱 공유 디렉티브
375
+ ├── modals/ # 앱 전역 공통 모달
376
+ ├── providers/ # 앱 전역 프로바이더
377
+ ├── types/ # 타입 정의
378
+ └── utils/ # 유틸리티
379
+ ```
380
+
381
+ - `app/` 하위 트리는 사이드바 메뉴 구조와 거의 대응된다
382
+ - **배치 기준은 "어느 도메인에 소속되는가"**이다. provider, modal, directive, print-template, util 등 모든 종류의 파일이 소속 도메인 폴더 안에 배치된다 (다른 도메인에서 import하여 사용하는 것은 자유)
383
+ - 특정 도메인에 소속되지 않는 공통 파일만 `src/` 직하의 `controls/`, `modals/`, `providers/` 등에 배치한다
384
+
342
385
  ## inject 네이밍 컨벤션
343
386
 
344
387
  `Sd*Provider`를 `inject()`할 때 변수명은 다음 규칙을 따른다:
@@ -1,6 +1,6 @@
1
1
  # sd-simplysm14: @simplysm v14 소비앱 가이드
2
2
 
3
- 소비앱이 `@simplysm/*` v14를 사용할 때 적용되는 규칙.
3
+ 소비앱이 `@simplysm/*` v14를 사용할 때 적용되는 지침 및 사용법.
4
4
 
5
5
  ## 중간 패키지(common) 불필요
6
6
 
@@ -62,6 +62,7 @@
62
62
  - **barrel export 금지**: `src/` 루트의 `index.ts`를 제외하고, 하위 폴더에 re-export 전용 `index.ts`를 만들지 않는다. 패키지 루트 `index.ts`에서 개별 파일 경로를 직접 export한다.
63
63
  - 다른 패키지의 타입등 re-export 금지.
64
64
  - **dynamic import (`import()`) 사용 금지**: 조건부 peer dependency 로딩, 외부 ts 파일 읽기 등 정적 import가 불가능한 경우를 제외하고 `import()` 사용 금지. 정적 `import` 문을 사용한다.
65
+ - **CRITICAL: 구조화된 문법 처리 시 파서 사용 필수**: TypeScript/JavaScript, HTML, CSS, JSON, YAML 등 **문법 구조가 정의된 텍스트**를 분석·변환할 때는 반드시 해당 언어의 **공식 파서/AST**(예: TypeScript Compiler API, `@angular/compiler`, `postcss`, `parse5`, `JSON.parse` 등)를 사용한다. 정규식·문자열 치환으로 **우회 금지(NEVER)**. 정규식은 주석·문자열·중첩 구조·이스케이프 등 엣지 케이스에서 반드시 깨지며, "일단 되면 넘어가자" 식 접근의 전형적 사례이다. 파서 사용이 어렵거나 오버헤드가 크다고 판단되면 **사용자에게 먼저 질문**한다.
65
66
  - **null/undefined 비교 규칙**: `===`/`!==` 사용이 기본이지만 **null/undefined 비교만 예외**이다. 일반 값 비교는 `===`/`!==`, null/undefined 검사는 `== null`/`!= null`을 사용한다. `=== null`, `!== null`, `=== undefined`, `!== undefined`는 lint 에러이다.
66
67
  - `value === "hello"` ○ (일반 값 비교 → `===`)
67
68
  - `value == null` ○ (null/undefined 검사 → `==`)
@@ -82,8 +83,9 @@
82
83
  # @simplysm 패키지 참조
83
84
 
84
85
  - `@simplysm/*` 패키지 사용 시, `.claude/references/sd-simplysm{메이저버전}.md`를 읽고 해당 패키지의 문서 경로를 찾아 읽는다.
86
+ - 해당 문서에는 지침 및 사용법이 기록되어 있다.
85
87
  - 주의사항: 해당 패키지의 `CLAUDE.md`를 읽는것이 아니다.
86
- - simplysm 패키지의 경우 context7은 구버전일 수 있으니 사용을 지양한다
88
+ - simplysm 패키지의 경우 context7은 구버전일 수 있으니 사용을 지양한다.
87
89
 
88
90
  # 프로젝트 경계
89
91
 
@@ -1,8 +1,7 @@
1
1
  ---
2
2
  name: sd-commit
3
3
  description: 전체 변경사항에 대한 단일 커밋을 생성하는 스킬. "커밋", "commit", "변경사항 커밋" 등을 요청할 때 사용한다.
4
- model: sonnet
5
- effort: low
4
+ model: haiku
6
5
  ---
7
6
 
8
7
  # sd-commit: 그룹별 커밋
@@ -1,8 +1,7 @@
1
1
  ---
2
2
  name: sd-doc-extract
3
3
  description: 문서 파일(docx, xlsx, xlsb, pptx, pdf, eml, msg)에서 텍스트, 이미지, 임베디드 파일을 추출하는 스킬. "문서 추출", "문서 분해", "docx 분석", "PDF 내용 뽑아줘", "eml 파일 추출" 등을 요청할 때 사용한다.
4
- model: sonnet
5
- effort: low
4
+ model: haiku
6
5
  ---
7
6
 
8
7
  # sd-doc-extract: 문서 분해/추출
@@ -1,8 +1,7 @@
1
1
  ---
2
2
  name: sd-issue
3
3
  description: simplysm 라이브러리에 대한 GitHub 이슈를 생성하는 스킬. "이슈 생성", "이슈 등록", "버그 리포트" 등을 요청할 때 사용한다.
4
- model: sonnet
5
- effort: low
4
+ model: haiku
6
5
  ---
7
6
 
8
7
  # sd-issue: simplysm 이슈 생성
@@ -1,8 +1,7 @@
1
1
  ---
2
2
  name: sd-outlook
3
3
  description: Microsoft Graph API를 통해 Outlook 메일을 검색·다운로드하는 스킬. "메일 조회", "메일 검색", "특정 업체 메일 수집", "outlook" 등을 요청할 때 사용한다.
4
- model: sonnet
5
- effort: low
4
+ model: haiku
6
5
  ---
7
6
 
8
7
  # sd-outlook: Outlook 메일 검색/다운로드
@@ -1,8 +1,7 @@
1
1
  ---
2
2
  name: sd-use
3
3
  description: 자연어 요청을 적절한 sd-* 스킬로 라우팅하는 스킬. "sd-use 커밋해줘", "sd-use --help" 등을 요청할 때 사용한다.
4
- model: sonnet
5
- effort: low
4
+ model: haiku
6
5
  ---
7
6
 
8
7
  # sd-use: SD 스킬 라우터
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-claude",
3
- "version": "14.0.43",
3
+ "version": "14.0.45",
4
4
  "description": "심플리즘 패키지 - Claude Code 셋업",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",