@simplysm/sd-claude 14.0.79 → 14.0.81
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-requirement-source-handling.md +17 -17
- package/claude/references/sd-simplysm14/README.md +58 -58
- package/claude/references/sd-simplysm14/manuals/client-component.md +739 -739
- package/claude/references/sd-simplysm14/manuals/client-crud.md +1 -1
- package/claude/references/sd-simplysm14/manuals/client-demo.md +1 -1
- package/claude/references/sd-simplysm14/manuals/client-setup.md +2 -2
- package/claude/references/sd-simplysm14/manuals/client-tab.md +2 -2
- package/claude/references/sd-simplysm14/manuals/logging.md +3 -3
- package/claude/references/sd-simplysm14/manuals/orm-union.md +7 -7
- package/claude/references/sd-simplysm14/manuals/orm.md +75 -75
- package/claude/references/sd-simplysm14/manuals/test.md +8 -8
- package/claude/rules/sd-base-rules.md +261 -354
- package/claude/rules/sd-design-rules.md +44 -0
- package/claude/{sd-check-forbidden-files.py → sd-check-edit.py} +2 -1
- package/claude/{sd-check-bash.py → sd-check-shell.py} +2 -2
- package/claude/settings.json +3 -4
- package/claude/skills/sd-commit/SKILL.md +17 -17
- package/claude/skills/sd-config/SKILL.md +4 -4
- package/claude/skills/sd-demo/SKILL.md +41 -43
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +99 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +12 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +3 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +150 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +143 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +150 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +2 -0
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +12 -0
- package/claude/skills/sd-demo/evals/golden.jsonl +1 -5
- package/claude/skills/sd-dev/SKILL.md +49 -22
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +8 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/{case-modify → minimal-ts-pkg}/tsconfig.json +1 -3
- package/claude/skills/sd-dev/evals/golden.jsonl +1 -3
- package/claude/skills/sd-docs/SKILL.md +8 -8
- package/claude/skills/sd-impl/SKILL.md +172 -82
- package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +101 -0
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +101 -0
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +46 -0
- package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +89 -0
- package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +101 -0
- package/claude/skills/sd-impl/evals/golden.jsonl +4 -6
- package/claude/skills/sd-review/SKILL.md +33 -0
- package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +7 -0
- package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +4 -0
- package/claude/skills/sd-review/evals/golden.jsonl +2 -0
- package/claude/skills/sd-skill/SKILL.md +217 -29
- package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +14 -0
- package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
- package/claude/skills/sd-skill/evals/golden.jsonl +2 -5
- package/claude/skills/sd-spec/SKILL.md +384 -305
- package/claude/skills/sd-spec/references/example-spec.md +41 -64
- package/claude/skills/sd-unpack/SKILL.md +83 -83
- package/claude/skills/sd-use/SKILL.md +4 -4
- package/package.json +1 -1
- package/claude/output-styles/sd-tone.md +0 -152
- package/claude/skills/sd-demo/evals/fixtures/empty/.specs/260513120000_warehouse/spec.md +0 -45
- package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/.specs/260513120000_warehouse/spec.md +0 -42
- package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
- package/claude/skills/sd-demo/evals/fixtures/with-master-screen/.specs/260513120000_warehouse/spec.md +0 -45
- package/claude/skills/sd-demo/evals/fixtures/with-master-screen/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
- package/claude/skills/sd-demo/evals/fixtures/with-modal/.specs/260513120000_warehouse/spec.md +0 -75
- package/claude/skills/sd-demo/evals/fixtures/with-modal/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
- package/claude/skills/sd-demo/evals/fixtures/with-screens/.specs/260513120000_warehouse/spec.md +0 -45
- package/claude/skills/sd-demo/evals/fixtures/with-screens/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
- package/claude/skills/sd-dev/evals/fixtures/case-add/package.json +0 -13
- package/claude/skills/sd-dev/evals/fixtures/case-add/src/index.ts +0 -10
- package/claude/skills/sd-dev/evals/fixtures/case-add/tests/index.test.ts +0 -11
- package/claude/skills/sd-dev/evals/fixtures/case-add/tsconfig.json +0 -12
- package/claude/skills/sd-dev/evals/fixtures/case-bug/package.json +0 -13
- package/claude/skills/sd-dev/evals/fixtures/case-bug/src/index.ts +0 -10
- package/claude/skills/sd-dev/evals/fixtures/case-bug/tests/index.test.ts +0 -11
- package/claude/skills/sd-dev/evals/fixtures/case-bug/tsconfig.json +0 -12
- package/claude/skills/sd-dev/evals/fixtures/case-modify/package.json +0 -13
- package/claude/skills/sd-dev/evals/fixtures/case-modify/src/index.ts +0 -10
- package/claude/skills/sd-dev/evals/fixtures/case-modify/tests/index.test.ts +0 -11
- package/claude/skills/sd-impl/evals/fixtures/case-001-new-screen/spec.md +0 -55
- package/claude/skills/sd-impl/evals/fixtures/case-002-auto-process/spec.md +0 -55
- package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/packages/client/src/pages/book-list.ts +0 -22
- package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/spec.md +0 -57
- package/claude/skills/sd-impl/evals/fixtures/case-004-ambiguous-spec/spec.md +0 -58
- package/claude/skills/sd-impl/evals/fixtures/case-005-id-mismatch/spec.md +0 -52
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.test.ts +0 -10
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.ts +0 -11
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/data-access//352/261/260/353/236/230/354/262/230-/354/240/221/352/267/274.ts +0 -12
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/models//352/261/260/353/236/230/354/262/230.ts +0 -8
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/spec.md +0 -77
- package/claude/skills/sd-impl/evals/fixtures/case-new/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-update/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/250/353/215/270.txt +0 -1
- package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.txt +0 -1
- package/claude/skills/sd-impl/references/spec-cross-check.md +0 -82
- package/claude/skills/sd-skill/evals/fixtures/with-existing-review/.claude/skills/review/SKILL.md +0 -14
- package/claude/skills/sd-skill/references/eval-authoring.md +0 -81
- package/claude/skills/sd-skill/references/eval-run.md +0 -32
- package/claude/skills/sd-skill/references/skill-authoring.md +0 -70
- /package/claude/skills/{sd-skill/evals/fixtures/empty → sd-dev/evals/fixtures/minimal-ts-pkg/src}/.gitkeep +0 -0
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
판정:
|
|
14
|
-
- ✅ 명백 (오타 1~2글자, 의미 자명):
|
|
15
|
-
- ❌ 모호 (의미가 여러 갈래로 해석 가능): **사용자에게 즉시 확인**, 원문 그대로
|
|
14
|
+
- ✅ 명백 (오타 1~2글자, 의미 자명): 보정.
|
|
15
|
+
- ❌ 모호 (의미가 여러 갈래로 해석 가능): **사용자에게 즉시 확인**, 원문 그대로 발췌.
|
|
16
16
|
|
|
17
17
|
## 화자 추정
|
|
18
18
|
|
|
@@ -24,41 +24,41 @@
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
판정:
|
|
27
|
-
- ✅ 컨텍스트로 명확:
|
|
28
|
-
- ❌ 모호: **사용자에게 즉시 확인**, 화자 미상으로
|
|
27
|
+
- ✅ 컨텍스트로 명확: 추정.
|
|
28
|
+
- ❌ 모호: **사용자에게 즉시 확인**, 화자 미상으로 발췌.
|
|
29
29
|
|
|
30
30
|
## 모호 발화 처리
|
|
31
31
|
|
|
32
32
|
지시대명사·생략 표현·비격식 발언:
|
|
33
|
-
- "그거 그렇게" / "이렇게 가는 걸로" / "지난번처럼" / "알아서"
|
|
33
|
+
- "그거 그렇게" / "이렇게 가는 걸로" / "지난번처럼" / "알아서".
|
|
34
34
|
|
|
35
35
|
처리:
|
|
36
|
-
- **자동 해석 금지** (이전 발언/맥락 추측해서 채워 넣지 말 것)
|
|
37
|
-
- **사용자에게 즉시 확인** — "그거"가 무엇인지, "그렇게"가 어떤
|
|
36
|
+
- **자동 해석 금지** (이전 발언/맥락 추측해서 채워 넣지 말 것).
|
|
37
|
+
- **사용자에게 즉시 확인** — "그거"가 무엇인지, "그렇게"가 어떤 방식인지.
|
|
38
38
|
|
|
39
39
|
## 다중 화자 발언 섞임 (회의록)
|
|
40
40
|
|
|
41
41
|
여러 사람이 같은 주제를 다른 입장에서 말한 경우:
|
|
42
|
-
- 양쪽(또는 모든) 발언 모두 발췌
|
|
43
|
-
- 사용자에게 어느 의견 채택할지 즉시
|
|
42
|
+
- 양쪽(또는 모든) 발언 모두 발췌 보존.
|
|
43
|
+
- 사용자에게 어느 의견 채택할지 즉시 확인.
|
|
44
44
|
|
|
45
45
|
## 비격식 메일 / paste
|
|
46
46
|
|
|
47
47
|
주어 생략, 맥락 누락:
|
|
48
|
-
- 보충 가능한 부분(자명한 주어 등): 발췌 시 `[추정 보충: ...]` 표기로 원문에 덧붙이지 않고
|
|
49
|
-
- 모호한 부분: 사용자에게 즉시
|
|
48
|
+
- 보충 가능한 부분(자명한 주어 등): 발췌 시 `[추정 보충: ...]` 표기로 원문에 덧붙이지 않고 명시.
|
|
49
|
+
- 모호한 부분: 사용자에게 즉시 확인.
|
|
50
50
|
|
|
51
51
|
## 도메인 용어 다의성
|
|
52
52
|
|
|
53
53
|
Requirement Source 는 시스템 용어가 아니라 **현장 은어**. 같은 단어가 시스템상 여러 동작에 매핑될 수 있음.
|
|
54
54
|
|
|
55
|
-
- 예: "출고" → 창고간 재고이동 / 고객사 납품 / 차량 적재 / 그
|
|
56
|
-
- 예: "마감" → 일마감 / 월마감 / 정산마감 /
|
|
57
|
-
- 예: "주문" → 고객 발주 / 내부 작업지시 / 견적
|
|
55
|
+
- 예: "출고" → 창고간 재고이동 / 고객사 납품 / 차량 적재 / 그 외.
|
|
56
|
+
- 예: "마감" → 일마감 / 월마감 / 정산마감 / 작업종료.
|
|
57
|
+
- 예: "주문" → 고객 발주 / 내부 작업지시 / 견적 단계.
|
|
58
58
|
|
|
59
59
|
**위험도 역설**: 일반적으로 들리는 업무 용어(출고/입고/재고/주문/마감/등록 등)일수록 더 의심. 낯선 용어는 자연스럽게 의문이 생기지만, 익숙한 용어는 모두가 안다고 착각함.
|
|
60
60
|
|
|
61
61
|
처리:
|
|
62
|
-
- **자동 매핑
|
|
63
|
-
- **사용자에게 즉시 확인** — "이 단어가 시스템상 어떤 동작을 가리키는지"
|
|
64
|
-
- **후보 나열 금지** — Claude 가 추측한 후보를 제시하면 사용자가 그 안에서만 고르게 가둠. 후보는 사용자가 답하게 둘
|
|
62
|
+
- **자동 매핑 금지**.
|
|
63
|
+
- **사용자에게 즉시 확인** — "이 단어가 시스템상 어떤 동작을 가리키는지".
|
|
64
|
+
- **후보 나열 금지** — Claude 가 추측한 후보를 제시하면 사용자가 그 안에서만 고르게 가둠. 후보는 사용자가 답하게 둘 것.
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
# @simplysm/* v14 행동 지침
|
|
2
|
-
|
|
3
|
-
Claude 에이전트가 반드시 지켜야 할 행동
|
|
4
|
-
|
|
5
|
-
## 코드 위치 원칙
|
|
6
|
-
|
|
7
|
-
기본 위치는 **클라이언트**. 서버(`service-server`)는 다음 두 경우에만
|
|
8
|
-
|
|
9
|
-
- **보안**: 클라이언트에 노출 불가한 자격증명/키, 권한 우회 위험, 외부에 직접 노출하면 안 되는 연산.
|
|
10
|
-
- **클라이언트 미지원**: 브라우저/모바일 런타임에서 실행 불가한 기능(특정 네이티브 API, 서버 측 자원 접근 등).
|
|
11
|
-
|
|
12
|
-
ORM 호출, 파일 변환, 비즈니스 로직 등은 위 두 사유에 해당하지 않는 한 클라이언트 코드에 직접
|
|
13
|
-
|
|
14
|
-
## CLAUDE.md 명령어 표기
|
|
15
|
-
|
|
16
|
-
`CLAUDE.md` 작성 시, 검증 명령은 다음 역할로
|
|
17
|
-
|
|
18
|
-
- **기본 검증 (평소 사용)**: `pnpm check --fix` — typecheck + lint 일괄, 자동 수정 포함.
|
|
19
|
-
- **보조**: `pnpm typecheck`, `pnpm lint` — `pnpm check` 에서 문제 났을 때 각각 따로 보기 위함. 단독 사용은 회피.
|
|
20
|
-
- **`-t` 타겟 표기**: `sd.config.ts` 의 `packages` 키(`@simplysm/` 접두사 **제외** 한 짧은 이름. 예: `excel`, `core-node`, `sd-cli`) 임을 본문에 명시. 풀네임 사용을 막기 위해 예시도 짧은 이름으로 통일.
|
|
21
|
-
|
|
22
|
-
## 개발 매뉴얼
|
|
23
|
-
|
|
24
|
-
트리거 조건이 처음 충족될 때 해당 자료를 Read.
|
|
25
|
-
|
|
26
|
-
| 트리거 | 매뉴얼 |
|
|
27
|
-
| ------------------------------------------------------- | ------------------------------------------------------ |
|
|
28
|
-
| 클라이언트 코드(앱·`@simplysm/angular`) 작성 — 항상 | [client-rules.md](./manuals/client-rules.md) |
|
|
29
|
-
| 화면 컴포넌트(`<domain>.<역할>.ts`) 작성/수정 | [client-component.md](./manuals/client-component.md) |
|
|
30
|
-
| `sd-crud-list` / `sd-crud-detail` 채택한 목록·단건 화면 | [client-crud.md](./manuals/client-crud.md) |
|
|
31
|
-
| 클라이언트 데모 컴포넌트 작성 | [client-demo.md](./manuals/client-demo.md) |
|
|
32
|
-
| `<sd-tab>` 사용 | [client-tab.md](./manuals/client-tab.md) |
|
|
33
|
-
| 새 앱 부트스트랩 또는 새 서비스·마스터 데이터 추가 | [client-setup.md](./manuals/client-setup.md) |
|
|
34
|
-
| DB 스키마 정의 또는 ORM 쿼리 작성 | [orm.md](./manuals/orm.md) |
|
|
35
|
-
| 이종 엔티티를 한 목록으로 합쳐 표시 (UNION) | [orm-union.md](./manuals/orm-union.md) |
|
|
36
|
-
| 콘솔 로깅 코드 작성/수정 (모든 패키지) | [logging.md](./manuals/logging.md) |
|
|
37
|
-
| 패키지 테스트·통합 테스트 작성/추가 | [test.md](./manuals/test.md) |
|
|
38
|
-
|
|
39
|
-
## 패키지 인덱스
|
|
40
|
-
|
|
41
|
-
- **angular** — Angular 21 standalone/signal/zoneless 기반 업무 클라이언트 UI 라이브러리. `provideSdAngular` 부트스트랩, 폼/시트/CRUD/모달/토스트/사이드바·탑바·드롭다운/공유데이터·칸반 등 화면 컴포넌트와 인프라 프로바이더 제공. 자세히: [apis/angular/README.md](./apis/angular/README.md)
|
|
42
|
-
- **capacitor-plugin-auto-update** — Android Capacitor 앱에서 APK 자동 업데이트와 APK 설치 권한·버전 조회. 자세히: [apis/capacitor-plugin-auto-update/README.md](./apis/capacitor-plugin-auto-update/README.md)
|
|
43
|
-
- **capacitor-plugin-file-system** — Capacitor 모바일/웹 파일 시스템 접근(권한·경로·디렉토리·파일 IO). 자세히: [apis/capacitor-plugin-file-system/README.md](./apis/capacitor-plugin-file-system/README.md)
|
|
44
|
-
- **capacitor-plugin-intent** — Android 인텐트 브로드캐스트 송수신 및 `startActivityForResult` 연동(산업용 스캐너·PDA·외부 결제 등). 자세히: [apis/capacitor-plugin-intent/README.md](./apis/capacitor-plugin-intent/README.md)
|
|
45
|
-
- **capacitor-plugin-usb-storage** — Android/Browser 에서 USB Mass Storage 장치 목록·권한·디렉토리/파일 읽기. 자세히: [apis/capacitor-plugin-usb-storage/README.md](./apis/capacitor-plugin-usb-storage/README.md)
|
|
46
|
-
- **core-browser** — 브라우저 전용. `Element`/`HTMLElement` 프로토타입 확장, DOM 탐색·포커스·레이아웃 보정, 클립보드/측정, 파일 다이얼로그·다운로드, 진행률 fetch, IndexedDB 키/값 저장소와 가상 파일시스템. 자세히: [apis/core-browser/README.md](./apis/core-browser/README.md)
|
|
47
|
-
- **core-common** — 공통 유틸리티(타입·에러·큐·이벤트·변환·확장 메서드·환경변수). simplysm 모든 패키지의 공용 기반. 자세히: [apis/core-common/README.md](./apis/core-common/README.md)
|
|
48
|
-
- **core-node** — Node 전용 IO/경로/프로세스/감시/consola/worker_threads 래퍼(`fsx`, `pathx`, `cpx`, `FsWatcher`, `setupConsola`, `Worker`/`createWorker`). 자세히: [apis/core-node/README.md](./apis/core-node/README.md)
|
|
49
|
-
- **excel** — xlsx 워크북을 열어 셀·시트·스타일·조건부서식·이미지를 읽고 쓰거나, Zod 스키마 기반 레코드 입출력. 자세히: [apis/excel/README.md](./apis/excel/README.md)
|
|
50
|
-
- **lint** — ESLint flat config 작성 시 `@simplysm/lint/eslint-recommended` 프리셋 또는 `@simplysm/lint/eslint-plugin` 개별 규칙 import. 자세히: [apis/lint/README.md](./apis/lint/README.md)
|
|
51
|
-
- **orm-common** — Dialect 독립 ORM 코어. `DbContext` 서브클래싱 + Table/View/Procedure 빌더 + `expr` AST + `Queryable` 체이닝으로 SQL 을 만들고 dialect QueryBuilder 로 렌더. 자세히: [apis/orm-common/README.md](./apis/orm-common/README.md)
|
|
52
|
-
- **orm-node** — Node 환경에서 `DbContext` 를 MSSQL/MySQL/PostgreSQL 실 연결에 붙이는 어댑터(`createOrm`), raw SQL/bulk insert (`createDbConn`). 자세히: [apis/orm-node/README.md](./apis/orm-node/README.md)
|
|
53
|
-
- **sd-claude** — simplysm 표준 Claude 자산(스킬·룰·훅) 동기화 및 Claude 계정 저장/전환 CLI(`sd-claude auth save`/`switch`). 라이브러리 코드 API 없음. 자세히: [apis/sd-claude/README.md](./apis/sd-claude/README.md)
|
|
54
|
-
- **sd-cli** — simplysm 빌드/배포 오케스트레이션 CLI. 서브커맨드(`check`/`watch`/`dev`/`device`/`build`/`publish`/`replace-deps`/`init`), `sd.config.ts` 작성 타입, Vitest 의 Angular AOT plugin(`sdAngularPlugin`), TS 패키지 증분 컴파일 엔진(`SdTsCompiler`). 자세히: [apis/sd-cli/README.md](./apis/sd-cli/README.md)
|
|
55
|
-
- **service-client** — `@simplysm/service-server` 와 WebSocket 으로 통신하는 클라이언트. RPC·이벤트 구독·파일 업/다운로드·원격 ORM 실행을 단일 `ServiceClient` 에서 제공(Node/브라우저 공용). 자세히: [apis/service-client/README.md](./apis/service-client/README.md)
|
|
56
|
-
- **service-common** — 서버/클라이언트가 공유하는 서비스 프로토콜·메시지·서비스 인터페이스·앱 구조·이벤트 정의. 자세히: [apis/service-common/README.md](./apis/service-common/README.md)
|
|
57
|
-
- **service-server** — Fastify + WebSocket 위에 서비스(`defineService`)·JWT 인증(`auth`)·빌트인 ORM/AutoUpdate/AppStructure·V1 레거시 호환을 부트스트랩(`createServiceServer().listen()`). 자세히: [apis/service-server/README.md](./apis/service-server/README.md)
|
|
58
|
-
- **storage** — FTP/FTPS/SFTP 원격 스토리지에 동일 인터페이스(`StorageClient`)로 파일 읽기/쓰기/관리. 자세히: [apis/storage/README.md](./apis/storage/README.md)
|
|
1
|
+
# @simplysm/* v14 행동 지침
|
|
2
|
+
|
|
3
|
+
Claude 에이전트가 반드시 지켜야 할 행동 지침. (@simplysm/\* v14 포함시)
|
|
4
|
+
|
|
5
|
+
## 코드 위치 원칙
|
|
6
|
+
|
|
7
|
+
기본 위치는 **클라이언트**. 서버(`service-server`)는 다음 두 경우에만 둠:
|
|
8
|
+
|
|
9
|
+
- **보안**: 클라이언트에 노출 불가한 자격증명/키, 권한 우회 위험, 외부에 직접 노출하면 안 되는 연산.
|
|
10
|
+
- **클라이언트 미지원**: 브라우저/모바일 런타임에서 실행 불가한 기능(특정 네이티브 API, 서버 측 자원 접근 등).
|
|
11
|
+
|
|
12
|
+
ORM 호출, 파일 변환, 비즈니스 로직 등은 위 두 사유에 해당하지 않는 한 클라이언트 코드에 직접 둠. "서버에 두는 게 관행"이라는 이유로 service 로 이관하지 않음.
|
|
13
|
+
|
|
14
|
+
## CLAUDE.md 명령어 표기
|
|
15
|
+
|
|
16
|
+
`CLAUDE.md` 작성 시, 검증 명령은 다음 역할로 표기함.
|
|
17
|
+
|
|
18
|
+
- **기본 검증 (평소 사용)**: `pnpm check --fix` — typecheck + lint 일괄, 자동 수정 포함.
|
|
19
|
+
- **보조**: `pnpm typecheck`, `pnpm lint` — `pnpm check` 에서 문제 났을 때 각각 따로 보기 위함. 단독 사용은 회피.
|
|
20
|
+
- **`-t` 타겟 표기**: `sd.config.ts` 의 `packages` 키(`@simplysm/` 접두사 **제외** 한 짧은 이름. 예: `excel`, `core-node`, `sd-cli`) 임을 본문에 명시. 풀네임 사용을 막기 위해 예시도 짧은 이름으로 통일.
|
|
21
|
+
|
|
22
|
+
## 개발 매뉴얼
|
|
23
|
+
|
|
24
|
+
트리거 조건이 처음 충족될 때 해당 자료를 Read.
|
|
25
|
+
|
|
26
|
+
| 트리거 | 매뉴얼 |
|
|
27
|
+
| ------------------------------------------------------- | ------------------------------------------------------ |
|
|
28
|
+
| 클라이언트 코드(앱·`@simplysm/angular`) 작성 — 항상 | [client-rules.md](./manuals/client-rules.md) |
|
|
29
|
+
| 화면 컴포넌트(`<domain>.<역할>.ts`) 작성/수정 | [client-component.md](./manuals/client-component.md) |
|
|
30
|
+
| `sd-crud-list` / `sd-crud-detail` 채택한 목록·단건 화면 | [client-crud.md](./manuals/client-crud.md) |
|
|
31
|
+
| 클라이언트 데모 컴포넌트 작성 | [client-demo.md](./manuals/client-demo.md) |
|
|
32
|
+
| `<sd-tab>` 사용 | [client-tab.md](./manuals/client-tab.md) |
|
|
33
|
+
| 새 앱 부트스트랩 또는 새 서비스·마스터 데이터 추가 | [client-setup.md](./manuals/client-setup.md) |
|
|
34
|
+
| DB 스키마 정의 또는 ORM 쿼리 작성 | [orm.md](./manuals/orm.md) |
|
|
35
|
+
| 이종 엔티티를 한 목록으로 합쳐 표시 (UNION) | [orm-union.md](./manuals/orm-union.md) |
|
|
36
|
+
| 콘솔 로깅 코드 작성/수정 (모든 패키지) | [logging.md](./manuals/logging.md) |
|
|
37
|
+
| 패키지 테스트·통합 테스트 작성/추가 | [test.md](./manuals/test.md) |
|
|
38
|
+
|
|
39
|
+
## 패키지 인덱스
|
|
40
|
+
|
|
41
|
+
- **angular** — Angular 21 standalone/signal/zoneless 기반 업무 클라이언트 UI 라이브러리. `provideSdAngular` 부트스트랩, 폼/시트/CRUD/모달/토스트/사이드바·탑바·드롭다운/공유데이터·칸반 등 화면 컴포넌트와 인프라 프로바이더 제공. 자세히: [apis/angular/README.md](./apis/angular/README.md)
|
|
42
|
+
- **capacitor-plugin-auto-update** — Android Capacitor 앱에서 APK 자동 업데이트와 APK 설치 권한·버전 조회. 자세히: [apis/capacitor-plugin-auto-update/README.md](./apis/capacitor-plugin-auto-update/README.md)
|
|
43
|
+
- **capacitor-plugin-file-system** — Capacitor 모바일/웹 파일 시스템 접근(권한·경로·디렉토리·파일 IO). 자세히: [apis/capacitor-plugin-file-system/README.md](./apis/capacitor-plugin-file-system/README.md)
|
|
44
|
+
- **capacitor-plugin-intent** — Android 인텐트 브로드캐스트 송수신 및 `startActivityForResult` 연동(산업용 스캐너·PDA·외부 결제 등). 자세히: [apis/capacitor-plugin-intent/README.md](./apis/capacitor-plugin-intent/README.md)
|
|
45
|
+
- **capacitor-plugin-usb-storage** — Android/Browser 에서 USB Mass Storage 장치 목록·권한·디렉토리/파일 읽기. 자세히: [apis/capacitor-plugin-usb-storage/README.md](./apis/capacitor-plugin-usb-storage/README.md)
|
|
46
|
+
- **core-browser** — 브라우저 전용. `Element`/`HTMLElement` 프로토타입 확장, DOM 탐색·포커스·레이아웃 보정, 클립보드/측정, 파일 다이얼로그·다운로드, 진행률 fetch, IndexedDB 키/값 저장소와 가상 파일시스템. 자세히: [apis/core-browser/README.md](./apis/core-browser/README.md)
|
|
47
|
+
- **core-common** — 공통 유틸리티(타입·에러·큐·이벤트·변환·확장 메서드·환경변수). simplysm 모든 패키지의 공용 기반. 자세히: [apis/core-common/README.md](./apis/core-common/README.md)
|
|
48
|
+
- **core-node** — Node 전용 IO/경로/프로세스/감시/consola/worker_threads 래퍼(`fsx`, `pathx`, `cpx`, `FsWatcher`, `setupConsola`, `Worker`/`createWorker`). 자세히: [apis/core-node/README.md](./apis/core-node/README.md)
|
|
49
|
+
- **excel** — xlsx 워크북을 열어 셀·시트·스타일·조건부서식·이미지를 읽고 쓰거나, Zod 스키마 기반 레코드 입출력. 자세히: [apis/excel/README.md](./apis/excel/README.md)
|
|
50
|
+
- **lint** — ESLint flat config 작성 시 `@simplysm/lint/eslint-recommended` 프리셋 또는 `@simplysm/lint/eslint-plugin` 개별 규칙 import. 자세히: [apis/lint/README.md](./apis/lint/README.md)
|
|
51
|
+
- **orm-common** — Dialect 독립 ORM 코어. `DbContext` 서브클래싱 + Table/View/Procedure 빌더 + `expr` AST + `Queryable` 체이닝으로 SQL 을 만들고 dialect QueryBuilder 로 렌더. 자세히: [apis/orm-common/README.md](./apis/orm-common/README.md)
|
|
52
|
+
- **orm-node** — Node 환경에서 `DbContext` 를 MSSQL/MySQL/PostgreSQL 실 연결에 붙이는 어댑터(`createOrm`), raw SQL/bulk insert (`createDbConn`). 자세히: [apis/orm-node/README.md](./apis/orm-node/README.md)
|
|
53
|
+
- **sd-claude** — simplysm 표준 Claude 자산(스킬·룰·훅) 동기화 및 Claude 계정 저장/전환 CLI(`sd-claude auth save`/`switch`). 라이브러리 코드 API 없음. 자세히: [apis/sd-claude/README.md](./apis/sd-claude/README.md)
|
|
54
|
+
- **sd-cli** — simplysm 빌드/배포 오케스트레이션 CLI. 서브커맨드(`check`/`watch`/`dev`/`device`/`build`/`publish`/`replace-deps`/`init`), `sd.config.ts` 작성 타입, Vitest 의 Angular AOT plugin(`sdAngularPlugin`), TS 패키지 증분 컴파일 엔진(`SdTsCompiler`). 자세히: [apis/sd-cli/README.md](./apis/sd-cli/README.md)
|
|
55
|
+
- **service-client** — `@simplysm/service-server` 와 WebSocket 으로 통신하는 클라이언트. RPC·이벤트 구독·파일 업/다운로드·원격 ORM 실행을 단일 `ServiceClient` 에서 제공(Node/브라우저 공용). 자세히: [apis/service-client/README.md](./apis/service-client/README.md)
|
|
56
|
+
- **service-common** — 서버/클라이언트가 공유하는 서비스 프로토콜·메시지·서비스 인터페이스·앱 구조·이벤트 정의. 자세히: [apis/service-common/README.md](./apis/service-common/README.md)
|
|
57
|
+
- **service-server** — Fastify + WebSocket 위에 서비스(`defineService`)·JWT 인증(`auth`)·빌트인 ORM/AutoUpdate/AppStructure·V1 레거시 호환을 부트스트랩(`createServiceServer().listen()`). 자세히: [apis/service-server/README.md](./apis/service-server/README.md)
|
|
58
|
+
- **storage** — FTP/FTPS/SFTP 원격 스토리지에 동일 인터페이스(`StorageClient`)로 파일 읽기/쓰기/관리. 자세히: [apis/storage/README.md](./apis/storage/README.md)
|