@simplysm/sd-claude 14.0.87 → 14.0.89
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/README.md +17 -18
- package/claude/references/sd-simplysm14/apis/angular/README.md +35 -0
- package/claude/references/sd-simplysm14/apis/angular/controls.md +51 -0
- package/claude/references/sd-simplysm14/apis/angular/crud.md +53 -0
- package/claude/references/sd-simplysm14/apis/angular/directives.md +34 -0
- package/claude/references/sd-simplysm14/apis/angular/features.md +40 -0
- package/claude/references/sd-simplysm14/apis/angular/infra.md +74 -0
- package/claude/references/sd-simplysm14/apis/angular/layout.md +27 -0
- package/claude/references/sd-simplysm14/apis/angular/overlay.md +103 -0
- package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +69 -0
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +28 -0
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +57 -0
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +73 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +78 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +66 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +71 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +62 -0
- package/claude/references/sd-simplysm14/apis/core-browser/README.md +70 -0
- package/claude/references/sd-simplysm14/apis/core-browser/dom-element.md +62 -0
- package/claude/references/sd-simplysm14/apis/core-browser/indexed-db.md +80 -0
- package/claude/references/sd-simplysm14/apis/core-common/README.md +262 -0
- package/claude/references/sd-simplysm14/apis/core-common/array-ext.md +121 -0
- package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +128 -0
- package/claude/references/sd-simplysm14/apis/core-common/datetime.md +129 -0
- package/claude/references/sd-simplysm14/apis/core-common/errors.md +91 -0
- package/claude/references/sd-simplysm14/apis/core-common/json-transfer.md +53 -0
- package/claude/references/sd-simplysm14/apis/core-common/obj.md +117 -0
- package/claude/references/sd-simplysm14/apis/core-node/README.md +17 -0
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +43 -0
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +50 -0
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +41 -0
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +72 -0
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +39 -0
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +52 -0
- package/claude/references/sd-simplysm14/apis/excel/README.md +43 -0
- package/claude/references/sd-simplysm14/apis/excel/cell.md +54 -0
- package/claude/references/sd-simplysm14/apis/excel/conditional-format.md +51 -0
- package/claude/references/sd-simplysm14/apis/excel/style.md +67 -0
- package/claude/references/sd-simplysm14/apis/excel/utils.md +35 -0
- package/claude/references/sd-simplysm14/apis/excel/workbook-worksheet.md +97 -0
- package/claude/references/sd-simplysm14/apis/excel/wrapper.md +83 -0
- package/claude/references/sd-simplysm14/apis/lint/README.md +49 -0
- package/claude/references/sd-simplysm14/apis/lint/rules.md +130 -0
- package/claude/references/sd-simplysm14/apis/orm-common/README.md +13 -0
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +111 -0
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +128 -0
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +145 -0
- package/claude/references/sd-simplysm14/apis/orm-common/schema.md +147 -0
- package/claude/references/sd-simplysm14/apis/orm-common/types.md +62 -0
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +90 -0
- package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +94 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +26 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/SdTsCompiler.md +117 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/sd-config-types.md +291 -0
- package/claude/references/sd-simplysm14/apis/service-client/README.md +150 -0
- package/claude/references/sd-simplysm14/apis/service-client/orm.md +48 -0
- package/claude/references/sd-simplysm14/apis/service-client/transport.md +59 -0
- package/claude/references/sd-simplysm14/apis/service-common/README.md +84 -0
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +48 -0
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +72 -0
- package/claude/references/sd-simplysm14/apis/service-server/README.md +118 -0
- package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +71 -0
- package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +62 -0
- package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +39 -0
- package/claude/references/sd-simplysm14/apis/storage/README.md +120 -0
- package/claude/skills/sd-demo/SKILL.md +6 -0
- package/claude/skills/sd-impl/SKILL.md +4 -7
- package/claude/skills/sd-spec/SKILL.md +31 -858
- package/claude/skills/sd-spec/references/spec-authoring.md +519 -0
- package/claude/workflows/sd-docs.js +84 -0
- package/claude/{skills/sd-docs/references/subagent-prompt.md → workflows/sd-docs.rules.md} +25 -40
- package/package.json +1 -1
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +0 -99
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +0 -12
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +0 -3
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +0 -150
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +0 -143
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +0 -150
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +0 -2
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +0 -12
- package/claude/skills/sd-demo/evals/golden.jsonl +0 -1
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +0 -8
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/src/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tsconfig.json +0 -10
- package/claude/skills/sd-dev/evals/golden.jsonl +0 -1
- package/claude/skills/sd-docs/SKILL.md +0 -58
- package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +0 -7
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +0 -3
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +0 -6
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +0 -1
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +0 -8
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +0 -7
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +0 -3
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +0 -3
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +0 -6
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +0 -1
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +0 -8
- package/claude/skills/sd-docs/evals/golden.jsonl +0 -2
- package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +0 -46
- package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +0 -89
- package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/golden.jsonl +0 -4
- package/claude/skills/sd-manual/evals/fixtures/new-manual/src/notification.ts +0 -25
- package/claude/skills/sd-manual/evals/fixtures/update-manual/.claude/references/sd-simplysm14/manuals/notification.md +0 -14
- package/claude/skills/sd-manual/evals/fixtures/update-manual/src/notification.ts +0 -37
- package/claude/skills/sd-manual/evals/golden.jsonl +0 -2
- package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +0 -7
- package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +0 -4
- package/claude/skills/sd-review/evals/golden.jsonl +0 -2
- package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +0 -14
- package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
- package/claude/skills/sd-skill/evals/golden.jsonl +0 -2
- package/claude/skills/sd-spec/evals/fixtures/case-a-split//355/232/214/354/235/230/353/241/235.md +0 -20
- package/claude/skills/sd-spec/evals/fixtures/case-b-detail/.specs/260513120000_warehouse/spec.md +0 -95
- package/claude/skills/sd-spec/evals/golden.jsonl +0 -2
- package/claude/skills/sd-unpack/evals/fixtures/eml-with-text-attachment/meeting.eml +0 -21
- package/claude/skills/sd-unpack/evals/fixtures/simple-eml/meeting.eml +0 -10
- package/claude/skills/sd-unpack/evals/golden.jsonl +0 -2
- package/claude/skills/sd-use/evals/fixtures/empty/.gitkeep +0 -0
- package/claude/skills/sd-use/evals/golden.jsonl +0 -6
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ChangeDetectionStrategy,
|
|
3
|
-
Component,
|
|
4
|
-
ViewEncapsulation,
|
|
5
|
-
effect,
|
|
6
|
-
inject,
|
|
7
|
-
signal,
|
|
8
|
-
untracked,
|
|
9
|
-
} from "@angular/core";
|
|
10
|
-
import {
|
|
11
|
-
injectPermsSignal,
|
|
12
|
-
mark,
|
|
13
|
-
SdCrudListComponent,
|
|
14
|
-
SdSheetColumnDirective,
|
|
15
|
-
SdTextfieldComponent,
|
|
16
|
-
SdToastProvider,
|
|
17
|
-
} from "@simplysm/angular";
|
|
18
|
-
|
|
19
|
-
interface IOutboundItem {
|
|
20
|
-
id: number;
|
|
21
|
-
orderNo: string;
|
|
22
|
-
customerName: string;
|
|
23
|
-
itemName: string;
|
|
24
|
-
quantity: number;
|
|
25
|
-
shippedAt: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface IFilter {
|
|
29
|
-
searchText: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@Component({
|
|
33
|
-
selector: "app-outbound-list",
|
|
34
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
|
-
encapsulation: ViewEncapsulation.None,
|
|
36
|
-
standalone: true,
|
|
37
|
-
imports: [SdCrudListComponent, SdSheetColumnDirective, SdTextfieldComponent],
|
|
38
|
-
template: `
|
|
39
|
-
<div class="flex-column fill">
|
|
40
|
-
<sd-crud-list
|
|
41
|
-
title="출고 내역 조회"
|
|
42
|
-
[(ready)]="ready"
|
|
43
|
-
[initialized]="initialized()"
|
|
44
|
-
[(busyCount)]="busyCount"
|
|
45
|
-
[items]="items()"
|
|
46
|
-
[(selectedKeys)]="selectedKeys"
|
|
47
|
-
[(page)]="page"
|
|
48
|
-
[totalPageCount]="pageLength()"
|
|
49
|
-
[(sorts)]="sortingDefs"
|
|
50
|
-
[trackByFn]="trackByFn"
|
|
51
|
-
[restricted]="!perms().includes('use')"
|
|
52
|
-
(filterSubmit)="onFilterSubmit()"
|
|
53
|
-
>
|
|
54
|
-
<ng-template #filterTpl>
|
|
55
|
-
<div class="form-box-inline">
|
|
56
|
-
<div>
|
|
57
|
-
<label>검색</label>
|
|
58
|
-
<sd-textfield [(value)]="filter().searchText" (valueChange)="mark(filter)" />
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</ng-template>
|
|
62
|
-
|
|
63
|
-
<sd-sheet-column [key]="'orderNo'" [header]="'출고 번호'">
|
|
64
|
-
<ng-template [cell]="items()" let-item="item">
|
|
65
|
-
<div class="p-xs-sm">{{ item.orderNo }}</div>
|
|
66
|
-
</ng-template>
|
|
67
|
-
</sd-sheet-column>
|
|
68
|
-
|
|
69
|
-
<sd-sheet-column [key]="'customerName'" [header]="'거래처'">
|
|
70
|
-
<ng-template [cell]="items()" let-item="item">
|
|
71
|
-
<div class="p-xs-sm">{{ item.customerName }}</div>
|
|
72
|
-
</ng-template>
|
|
73
|
-
</sd-sheet-column>
|
|
74
|
-
|
|
75
|
-
<sd-sheet-column [key]="'itemName'" [header]="'품목'">
|
|
76
|
-
<ng-template [cell]="items()" let-item="item">
|
|
77
|
-
<div class="p-xs-sm">{{ item.itemName }}</div>
|
|
78
|
-
</ng-template>
|
|
79
|
-
</sd-sheet-column>
|
|
80
|
-
|
|
81
|
-
<sd-sheet-column [key]="'quantity'" [header]="'수량'">
|
|
82
|
-
<ng-template [cell]="items()" let-item="item">
|
|
83
|
-
<div class="p-xs-sm tx-right">{{ item.quantity }}</div>
|
|
84
|
-
</ng-template>
|
|
85
|
-
</sd-sheet-column>
|
|
86
|
-
</sd-crud-list>
|
|
87
|
-
|
|
88
|
-
@if (initialized() && items().length === 0) {
|
|
89
|
-
<div class="p-default tx-center tx-theme-gray-default">조회된 출고 내역이 없습니다.</div>
|
|
90
|
-
}
|
|
91
|
-
</div>
|
|
92
|
-
`,
|
|
93
|
-
})
|
|
94
|
-
export class OutboundListComponent {
|
|
95
|
-
private readonly _sdToast = inject(SdToastProvider);
|
|
96
|
-
|
|
97
|
-
perms = injectPermsSignal(["outbound"], ["use"]);
|
|
98
|
-
|
|
99
|
-
ready = signal(false);
|
|
100
|
-
initialized = signal(false);
|
|
101
|
-
busyCount = signal(0);
|
|
102
|
-
|
|
103
|
-
items = signal<IOutboundItem[]>([]);
|
|
104
|
-
selectedKeys = signal<number[]>([]);
|
|
105
|
-
page = signal(0);
|
|
106
|
-
pageLength = signal(0);
|
|
107
|
-
sortingDefs = signal<{ key: string; desc: boolean }[]>([]);
|
|
108
|
-
|
|
109
|
-
filter = signal<IFilter>({ searchText: "" });
|
|
110
|
-
lastFilter = signal<IFilter>({ searchText: "" });
|
|
111
|
-
|
|
112
|
-
trackByFn = (item: IOutboundItem) => item.id;
|
|
113
|
-
|
|
114
|
-
protected readonly mark = mark;
|
|
115
|
-
|
|
116
|
-
constructor() {
|
|
117
|
-
effect(() => {
|
|
118
|
-
if (!this.perms().includes("use") || !this.ready()) {
|
|
119
|
-
this.initialized.set(true);
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
this.lastFilter();
|
|
124
|
-
this.page();
|
|
125
|
-
this.sortingDefs();
|
|
126
|
-
|
|
127
|
-
void untracked(async () => {
|
|
128
|
-
this.busyCount.update((v) => v + 1);
|
|
129
|
-
await this._sdToast.try(async () => {
|
|
130
|
-
await this._refresh();
|
|
131
|
-
});
|
|
132
|
-
this.busyCount.update((v) => v - 1);
|
|
133
|
-
this.initialized.set(true);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
onFilterSubmit(): void {
|
|
139
|
-
this.page.set(0);
|
|
140
|
-
this.lastFilter.set({ ...this.filter() });
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
doRefresh(): void {
|
|
144
|
-
if (!this.perms().includes("use")) return;
|
|
145
|
-
mark(this.lastFilter);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
private async _refresh(): Promise<void> {
|
|
149
|
-
}
|
|
150
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id": "case-001", "input": "/sd-demo .specs/inventory/spec.md §4.1 데모 만들어줘", "rubric": ["fixture 의 `packages/demo-client/src/screens/inventory/` 폴더 안에 화면 컴포넌트 파일이 새로 생성되었는가", "생성된 컴포넌트 파일이 Angular @Component 데코레이터 + selector 를 가지는가", "생성된 컴포넌트의 template 에 필터 영역·시트 영역·빈 상태 영역 마크업이 모두 등장하는가", "생성된 컴포넌트의 template 가 답습 화면(출고·입고 조회) 의 부위 마크업 구조(같은 컴포넌트·같은 클래스 패턴 사용)와 일치하는가", "생성된 파일 본문에 `// sd-demo:` 마커가 1회 이상 등장하는가", "events 에 `.claude/references/sd-simplysm14/` 폴더 안 파일 Read 또는 동등 명령 1회 이상 있는가"], "fixture": "inventory-list"}
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id": "sum-add", "input": "/sd-dev sum 함수 추가해줘. a + b 반환.", "rubric": ["tree.json 에 sum 함수 구현 파일이 src/ 하위 (위치 자유) 에 존재하는가", "tree.json 에 sum 함수 테스트 파일 (위치 자유) 이 존재하는가", "events 에 테스트 러너 실행 흔적 (Bash 의 node --test 또는 동등 명령) 이 1회 이상 있는가", "구현 파일 내용에 sum 함수 정의 및 export 가 포함되는가", "테스트 파일 내용에 sum 호출 + 결과 검증 assertion 이 1개 이상 있는가"], "fixture": "minimal-ts-pkg"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sd-docs
|
|
3
|
-
description: `@simplysm/*` 라이브러리 패키지의 API 문서를 `.claude/references/sd-simplysm14/apis/<패키지명>/` 위치에 사용 트리거 기준으로 작성·갱신. Use when 라이브러리 API 문서를 새로 작성하거나 코드 변경을 반영해 갱신할 때.
|
|
4
|
-
model: haiku
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# sd-docs
|
|
8
|
-
|
|
9
|
-
`@simplysm/*` 라이브러리 패키지의 API 문서를 코드를 근거로 작성·갱신. 메인 에이전트가 패키지 목록 추출과 상위 README 인덱스 갱신을 담당하고, 패키지별 문서 작성은 패키지 1개당 subagent 1개를 호출해 병렬 위임.
|
|
10
|
-
|
|
11
|
-
## 산출물 위치
|
|
12
|
-
|
|
13
|
-
- `.claude/references/sd-simplysm14/apis/<패키지명>/README.md` — 패키지당 1개, 필수.
|
|
14
|
-
- `.claude/references/sd-simplysm14/apis/<패키지명>/<군명>.md` — 사용 트리거 군이 커서 README 한 장에 풀어쓰면 같은 README 의 다른 군 정보까지 함께 읽혀 부담이 커지는 경우에만 분할 산출.
|
|
15
|
-
- `.claude/references/sd-simplysm14/README.md` 의 "패키지 인덱스" 섹션 — 메인 에이전트가 갱신.
|
|
16
|
-
|
|
17
|
-
## 워크플로
|
|
18
|
-
|
|
19
|
-
### 1. 패키지 목록 추출
|
|
20
|
-
|
|
21
|
-
워크스페이스 루트의 `packages/*/package.json` 을 모두 읽어 다음 두 리스트를 만듦.
|
|
22
|
-
|
|
23
|
-
- **public 리스트**: `private: true` 가 아닌 패키지. 각 항목 = `{ name, dir }`.
|
|
24
|
-
- **private 리스트**: `private: true` 인 패키지. 인덱스에서 제외하기 위해 보관.
|
|
25
|
-
|
|
26
|
-
### 2. 패키지별 subagent 병렬 호출
|
|
27
|
-
|
|
28
|
-
`public 리스트` 의 패키지 수만큼 `general-purpose` subagent 호출을 **단일 메시지 안에서 병렬**로 보냄. 각 호출 프롬프트는 [references/subagent-prompt.md](references/subagent-prompt.md) 양식의 "프롬프트" 마커 아래 본문을 그대로 사용하고, `<PACKAGE_NAME>` 과 `<PACKAGE_DIR>` 만 치환.
|
|
29
|
-
|
|
30
|
-
각 subagent 의 산출 (풀 재작성 모드 — 기존 파일 참고 없이 처음부터 작성):
|
|
31
|
-
|
|
32
|
-
- `apis/<패키지명>/README.md` 재작성.
|
|
33
|
-
- 필요 시 `apis/<패키지명>/<군명>.md` 재작성. 코드에서 사라진 군의 파일은 삭제.
|
|
34
|
-
- 결과 보고 1단락 (산출 파일 목록, 분할 발생 여부, 한 줄 트리거 요약).
|
|
35
|
-
|
|
36
|
-
**범위 한정**: subagent 는 `apis/<패키지명>/` 위치만 다룸. 상위 `.claude/references/sd-simplysm14/README.md` 는 건드리지 않음 (다음 단계의 "패키지 인덱스 섹션 갱신" 에서 메인 에이전트가 처리).
|
|
37
|
-
|
|
38
|
-
### 3. 상위 README 의 "패키지 인덱스" 섹션 갱신 (파일 보존 + 섹션 내 항목만 갱신)
|
|
39
|
-
|
|
40
|
-
`.claude/references/sd-simplysm14/README.md` 는 **풀 재작성 대상 아님**. 파일 본문·다른 섹션은 그대로 보존, "패키지 인덱스" 섹션의 항목 리스트만 재구성함.
|
|
41
|
-
|
|
42
|
-
모든 subagent 완료 후:
|
|
43
|
-
|
|
44
|
-
- **갱신 대상**: "패키지 인덱스" 섹션 본문(항목 리스트)만.
|
|
45
|
-
- **건드리지 않음**: 섹션 머리(`## 패키지 인덱스`), 다른 모든 섹션, 파일 상단/하단 텍스트.
|
|
46
|
-
- **항목 형식**: `- **<패키지명>** — <한 줄 트리거 요약>. 자세히: [apis/<패키지명>/README.md](./apis/<패키지명>/README.md)`.
|
|
47
|
-
- **순서**: 패키지명 알파벳순.
|
|
48
|
-
- **포함**: `public 리스트` 만.
|
|
49
|
-
- **제외**: `private 리스트` 의 패키지, 코드베이스에 더 이상 존재하지 않는 패키지.
|
|
50
|
-
|
|
51
|
-
### 4. 사용자 보고
|
|
52
|
-
|
|
53
|
-
다음 항목을 짧게 정리해 출력함.
|
|
54
|
-
|
|
55
|
-
- 재작성된 패키지 목록 (= `public 리스트` 전체. 풀 재작성 모드 — 매번 모든 패키지 산출).
|
|
56
|
-
- 분할 발생(`<군명>.md` 가 생긴) 패키지 목록.
|
|
57
|
-
- 삭제된 분할 파일 (코드에서 사라진 군, 있다면).
|
|
58
|
-
- 인덱스에서 제거된 항목 (있다면).
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const BAZ_SECRET = "internal-only";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const BAZ_SECRET = "internal-only";
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
{"id":"new-write","input":"/sd-docs","fixture":"new-write","rubric":["샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/foo/README.md` 파일이 존재하는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/bar/README.md` 파일이 존재하는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/baz/` 경로(`baz` 패키지 산출물)가 전혀 존재하지 않는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `apis/foo` 를 가리키는 링크와 `apis/bar` 를 가리키는 링크가 모두 포함되었는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `baz` 패키지가 패키지 인덱스 항목으로 노출되지 않는가?","`.claude/references/sd-simplysm14/apis/foo/README.md` 의 첫 줄(H1)이 정확히 `# @simplysm/foo` 문자열인가?"]}
|
|
2
|
-
{"id":"update-mixed","input":"/sd-docs","fixture":"update-mixed","rubric":["`.claude/references/sd-simplysm14/apis/foo/README.md` 파일 내용에 `OLD_FOO_DOC_PLACEHOLDER_MUST_BE_REWRITTEN` 문자열이 포함되지 않는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/bar/README.md` 파일이 존재하는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/baz/` 경로가 전혀 존재하지 않는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `OLD_INDEX_PLACEHOLDER_MUST_BE_REWRITTEN` 문자열이 포함되지 않는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `apis/bar` 를 가리키는 링크가 포함되었는가?","`.claude/references/sd-simplysm14/apis/bar/README.md` 의 첫 줄(H1)이 정확히 `# @simplysm/bar` 문자열인가?"]}
|
package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# 재고관리 요구 분석서
|
|
2
|
-
|
|
3
|
-
## 1. 개요
|
|
4
|
-
|
|
5
|
-
### 1.1 핵심 목적
|
|
6
|
-
|
|
7
|
-
- 박스 단위 입고·재고 관리
|
|
8
|
-
|
|
9
|
-
### 1.2 주요 목표
|
|
10
|
-
|
|
11
|
-
- 박스 1건 등록
|
|
12
|
-
|
|
13
|
-
### 1.3 최종 사용자/이해관계자
|
|
14
|
-
|
|
15
|
-
- 창고 작업자
|
|
16
|
-
|
|
17
|
-
### 1.4 환경/장치
|
|
18
|
-
|
|
19
|
-
#### 구성도
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌──────────────┐ ┌──────────────┐
|
|
23
|
-
│ PC 클라이언트 │───→│ 서버 │
|
|
24
|
-
└──────────────┘ └──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
#### 장치 목록
|
|
28
|
-
|
|
29
|
-
- PC: 창고 작업자용. Chrome 최신. 1920x1080
|
|
30
|
-
- 서버: Node 20
|
|
31
|
-
|
|
32
|
-
## 2. 업무 프로세스
|
|
33
|
-
|
|
34
|
-
## 3. 기타 요구사항
|
|
35
|
-
|
|
36
|
-
## 4. 화면
|
|
37
|
-
|
|
38
|
-
| § | 분류 | 화면 | 유형 | 장치 |
|
|
39
|
-
| --- | -------- | --------- | -------- | ---- |
|
|
40
|
-
| 4.1 | 기준정보 | 박스 등록 | 트랜잭션 | PC |
|
|
41
|
-
|
|
42
|
-
### 4.1 박스 등록 (PC) [확정: 2026-05-20]
|
|
43
|
-
|
|
44
|
-
Actor: 창고 작업자
|
|
45
|
-
관련 섹션: [모델.박스]
|
|
46
|
-
|
|
47
|
-
기능 개요:
|
|
48
|
-
|
|
49
|
-
- 박스 1건 신규 등록
|
|
50
|
-
|
|
51
|
-
#### 와이어프레임 (텍스트)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
┌─────────────────────────┐
|
|
55
|
-
│ 박스 등록 │
|
|
56
|
-
├─────────────────────────┤
|
|
57
|
-
│ <등록 폼> │
|
|
58
|
-
│ │
|
|
59
|
-
│ [저장] │
|
|
60
|
-
└─────────────────────────┘
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### 항목
|
|
64
|
-
|
|
65
|
-
**등록 폼**
|
|
66
|
-
|
|
67
|
-
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
68
|
-
| --------- | ------ | ---- | ---------------- | ------------------- |
|
|
69
|
-
| 박스 코드 | 문자열 | Y | [모델.박스.코드] | 코드 길이 규칙 따름 |
|
|
70
|
-
| 품목 코드 | 문자열 | Y | [모델.박스.품목] | - |
|
|
71
|
-
|
|
72
|
-
#### 동작
|
|
73
|
-
|
|
74
|
-
- `[저장]` 클릭: 입력값으로 박스 1건 등록
|
|
75
|
-
|
|
76
|
-
## 5. 자동 처리
|
|
77
|
-
|
|
78
|
-
## 6. 공통·기반 기능
|
|
79
|
-
|
|
80
|
-
## 7. 공통 정의
|
|
81
|
-
|
|
82
|
-
## 8. 도메인 모델
|
|
83
|
-
|
|
84
|
-
### 8.1 박스 [확정: 2026-05-20]
|
|
85
|
-
|
|
86
|
-
필드:
|
|
87
|
-
|
|
88
|
-
| 필드 | 타입 | 필수 | 비고 |
|
|
89
|
-
| ---- | ------ | ---- | ---------------------- |
|
|
90
|
-
| ID | 숫자 | Y | 자동 부여 |
|
|
91
|
-
| 코드 | 문자열 | Y | 12자, 영문 대문자·숫자 |
|
|
92
|
-
| 품목 | 문자열 | Y | 품목 코드 |
|
|
93
|
-
|
|
94
|
-
키/제약:
|
|
95
|
-
|
|
96
|
-
- 식별 키: ID
|
|
97
|
-
- 비즈니스 키: 코드 (수정 가능)
|
|
98
|
-
|
|
99
|
-
## 9. 외부 인터페이스
|
|
100
|
-
|
|
101
|
-
## 10. 본문 외 결정사항
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# 재고관리 요구 분석서
|
|
2
|
-
|
|
3
|
-
## 1. 개요
|
|
4
|
-
|
|
5
|
-
### 1.1 핵심 목적
|
|
6
|
-
|
|
7
|
-
- 박스 단위 입고·재고 관리
|
|
8
|
-
|
|
9
|
-
### 1.2 주요 목표
|
|
10
|
-
|
|
11
|
-
- 박스 1건 등록
|
|
12
|
-
|
|
13
|
-
### 1.3 최종 사용자/이해관계자
|
|
14
|
-
|
|
15
|
-
- 창고 작업자
|
|
16
|
-
|
|
17
|
-
### 1.4 환경/장치
|
|
18
|
-
|
|
19
|
-
#### 구성도
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌──────────────┐ ┌──────────────┐
|
|
23
|
-
│ PC 클라이언트 │───→│ 서버 │
|
|
24
|
-
└──────────────┘ └──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
#### 장치 목록
|
|
28
|
-
|
|
29
|
-
- PC: 창고 작업자용. Chrome 최신. 1920x1080
|
|
30
|
-
- 서버: Node 20
|
|
31
|
-
|
|
32
|
-
## 2. 업무 프로세스
|
|
33
|
-
|
|
34
|
-
## 3. 기타 요구사항
|
|
35
|
-
|
|
36
|
-
## 4. 화면
|
|
37
|
-
|
|
38
|
-
| § | 분류 | 화면 | 유형 | 장치 |
|
|
39
|
-
| --- | -------- | --------- | -------- | ---- |
|
|
40
|
-
| 4.1 | 기준정보 | 박스 등록 | 트랜잭션 | PC |
|
|
41
|
-
|
|
42
|
-
### 4.1 박스 등록 (PC) [확정: 2026-05-20]
|
|
43
|
-
|
|
44
|
-
Actor: 창고 작업자
|
|
45
|
-
관련 섹션: [모델.박스]
|
|
46
|
-
|
|
47
|
-
기능 개요:
|
|
48
|
-
|
|
49
|
-
- 박스 1건 신규 등록
|
|
50
|
-
|
|
51
|
-
#### 와이어프레임 (텍스트)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
┌─────────────────────────┐
|
|
55
|
-
│ 박스 등록 │
|
|
56
|
-
├─────────────────────────┤
|
|
57
|
-
│ <등록 폼> │
|
|
58
|
-
│ │
|
|
59
|
-
│ [저장] │
|
|
60
|
-
└─────────────────────────┘
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### 항목
|
|
64
|
-
|
|
65
|
-
**등록 폼**
|
|
66
|
-
|
|
67
|
-
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
68
|
-
| --------- | ------ | ---- | ---------------- | ------------------- |
|
|
69
|
-
| 박스 코드 | 문자열 | Y | [모델.박스.코드] | 코드 길이 규칙 따름 |
|
|
70
|
-
| 품목 코드 | 문자열 | Y | [모델.박스.품목] | - |
|
|
71
|
-
|
|
72
|
-
#### 동작
|
|
73
|
-
|
|
74
|
-
- `[저장]` 클릭: 입력값으로 박스 1건 등록
|
|
75
|
-
|
|
76
|
-
## 5. 자동 처리
|
|
77
|
-
|
|
78
|
-
## 6. 공통·기반 기능
|
|
79
|
-
|
|
80
|
-
## 7. 공통 정의
|
|
81
|
-
|
|
82
|
-
## 8. 도메인 모델
|
|
83
|
-
|
|
84
|
-
### 8.1 박스 [확정: 2026-05-20]
|
|
85
|
-
|
|
86
|
-
필드:
|
|
87
|
-
|
|
88
|
-
| 필드 | 타입 | 필수 | 비고 |
|
|
89
|
-
| ---- | ------ | ---- | ---------------------- |
|
|
90
|
-
| ID | 숫자 | Y | 자동 부여 |
|
|
91
|
-
| 코드 | 문자열 | Y | 12자, 영문 대문자·숫자 |
|
|
92
|
-
| 품목 | 문자열 | Y | 품목 코드 |
|
|
93
|
-
|
|
94
|
-
키/제약:
|
|
95
|
-
|
|
96
|
-
- 식별 키: ID
|
|
97
|
-
- 비즈니스 키: 코드 (수정 가능)
|
|
98
|
-
|
|
99
|
-
## 9. 외부 인터페이스
|
|
100
|
-
|
|
101
|
-
## 10. 본문 외 결정사항
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Component, signal } from "@angular/core";
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: "app-box-register",
|
|
5
|
-
template: `
|
|
6
|
-
<div class="box-register">
|
|
7
|
-
<h2>박스 등록</h2>
|
|
8
|
-
<div class="form">
|
|
9
|
-
<label>
|
|
10
|
-
박스 코드
|
|
11
|
-
<input
|
|
12
|
-
type="text"
|
|
13
|
-
[value]="boxCode()"
|
|
14
|
-
(input)="onBoxCodeInput($event)"
|
|
15
|
-
/>
|
|
16
|
-
</label>
|
|
17
|
-
<label>
|
|
18
|
-
품목 코드
|
|
19
|
-
<input
|
|
20
|
-
type="text"
|
|
21
|
-
[value]="itemCode()"
|
|
22
|
-
(input)="onItemCodeInput($event)"
|
|
23
|
-
/>
|
|
24
|
-
</label>
|
|
25
|
-
</div>
|
|
26
|
-
<button (click)="onSave()">저장</button>
|
|
27
|
-
</div>
|
|
28
|
-
`,
|
|
29
|
-
})
|
|
30
|
-
export class BoxRegisterView {
|
|
31
|
-
boxCode = signal("");
|
|
32
|
-
itemCode = signal("");
|
|
33
|
-
|
|
34
|
-
onBoxCodeInput(e: Event) {
|
|
35
|
-
this.boxCode.set((e.target as HTMLInputElement).value);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
onItemCodeInput(e: Event) {
|
|
39
|
-
this.itemCode.set((e.target as HTMLInputElement).value);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
onSave() {
|
|
43
|
-
// 데모 골격: 실제 저장 동작 없음 (sd-impl 풀 구현 대기)
|
|
44
|
-
console.log("박스 등록 데모", { box: this.boxCode(), item: this.itemCode() });
|
|
45
|
-
}
|
|
46
|
-
}
|