@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.
- package/claude/references/sd-simplysm14/angular/usage.md +43 -0
- package/claude/references/sd-simplysm14.md +1 -1
- package/claude/rules/sd-claude-rules.md +3 -1
- package/claude/skills/sd-commit/SKILL.md +1 -2
- package/claude/skills/sd-doc-extract/SKILL.md +1 -2
- package/claude/skills/sd-issue/SKILL.md +1 -2
- package/claude/skills/sd-outlook/SKILL.md +1 -2
- package/claude/skills/sd-use/SKILL.md +1 -2
- package/package.json +1 -1
|
@@ -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()`할 때 변수명은 다음 규칙을 따른다:
|
|
@@ -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-doc-extract
|
|
3
3
|
description: 문서 파일(docx, xlsx, xlsb, pptx, pdf, eml, msg)에서 텍스트, 이미지, 임베디드 파일을 추출하는 스킬. "문서 추출", "문서 분해", "docx 분석", "PDF 내용 뽑아줘", "eml 파일 추출" 등을 요청할 때 사용한다.
|
|
4
|
-
model:
|
|
5
|
-
effort: low
|
|
4
|
+
model: haiku
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
# sd-doc-extract: 문서 분해/추출
|