@simplysm/sd-claude 14.0.65 → 14.0.66
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 +64 -0
- package/claude/references/sd-simplysm14/README.md +44 -40
- package/claude/references/sd-simplysm14/apis/angular/README.md +95 -0
- package/claude/references/sd-simplysm14/apis/angular/app-structure.md +49 -0
- package/claude/references/sd-simplysm14/apis/angular/buttons.md +42 -0
- package/claude/references/sd-simplysm14/apis/angular/crud.md +35 -0
- package/claude/references/sd-simplysm14/apis/angular/forms.md +63 -0
- package/claude/references/sd-simplysm14/apis/angular/infrastructure.md +80 -0
- package/claude/references/sd-simplysm14/apis/angular/kanban.md +33 -0
- package/claude/references/sd-simplysm14/apis/angular/layout.md +41 -0
- package/claude/references/sd-simplysm14/apis/angular/modal.md +63 -0
- package/claude/references/sd-simplysm14/apis/angular/routing.md +45 -0
- package/claude/references/sd-simplysm14/apis/angular/select-dropdown.md +35 -0
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +50 -0
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +42 -0
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +52 -0
- package/claude/references/sd-simplysm14/apis/angular/toast.md +46 -0
- package/claude/references/sd-simplysm14/apis/angular/visual.md +41 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +76 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +83 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +80 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +39 -0
- package/claude/references/sd-simplysm14/apis/core-browser/README.md +112 -0
- package/claude/references/sd-simplysm14/apis/core-common/README.md +53 -0
- package/claude/references/sd-simplysm14/apis/core-common/extensions.md +123 -0
- package/claude/references/sd-simplysm14/apis/core-common/features.md +46 -0
- package/claude/references/sd-simplysm14/apis/core-common/types.md +114 -0
- package/claude/references/sd-simplysm14/apis/core-common/utils.md +158 -0
- package/claude/references/sd-simplysm14/apis/core-node/README.md +12 -0
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +64 -0
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +52 -0
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +53 -0
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +81 -0
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +55 -0
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +111 -0
- package/claude/references/sd-simplysm14/apis/excel/README.md +81 -0
- package/claude/references/sd-simplysm14/apis/lint/README.md +80 -0
- package/claude/references/sd-simplysm14/apis/orm-common/README.md +33 -0
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +77 -0
- package/claude/references/sd-simplysm14/apis/orm-common/executable.md +20 -0
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +92 -0
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +98 -0
- package/claude/references/sd-simplysm14/apis/orm-common/schema-builders.md +128 -0
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +59 -0
- package/claude/references/sd-simplysm14/apis/sd-claude/README.md +9 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +50 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/sd-config.md +155 -0
- package/claude/references/sd-simplysm14/apis/service-client/README.md +92 -0
- package/claude/references/sd-simplysm14/apis/service-common/README.md +29 -0
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +63 -0
- package/claude/references/sd-simplysm14/apis/service-common/messages.md +56 -0
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +64 -0
- package/claude/references/sd-simplysm14/apis/service-common/service-types.md +43 -0
- package/claude/references/sd-simplysm14/apis/service-server/README.md +20 -0
- package/claude/references/sd-simplysm14/apis/service-server/auth.md +31 -0
- package/claude/references/sd-simplysm14/apis/service-server/builtin-services.md +47 -0
- package/claude/references/sd-simplysm14/apis/service-server/define-service.md +71 -0
- package/claude/references/sd-simplysm14/apis/service-server/internals.md +41 -0
- package/claude/references/sd-simplysm14/apis/service-server/server.md +66 -0
- package/claude/references/sd-simplysm14/apis/storage/README.md +69 -0
- package/claude/references/sd-simplysm14/{client-component.md → manuals/client-component.md} +133 -128
- package/claude/references/sd-simplysm14/manuals/client-crud.md +102 -0
- package/claude/references/sd-simplysm14/manuals/client-demo.md +128 -0
- package/claude/references/sd-simplysm14/manuals/client-rules.md +7 -0
- package/claude/references/sd-simplysm14/{client-setup.md → manuals/client-setup.md} +2 -2
- package/claude/references/sd-simplysm14/{client-tab.md → manuals/client-tab.md} +13 -11
- package/claude/references/sd-simplysm14/{orm-union.md → manuals/orm-union.md} +1 -1
- package/claude/references/sd-simplysm14/manuals/orm.md +75 -0
- package/claude/rules/sd-base-rules.md +172 -79
- package/claude/sd-check-bash.py +5 -0
- package/claude/sd-statusline.py +7 -12
- package/claude/skills/sd-commit/SKILL.md +7 -3
- package/claude/skills/sd-demo/SKILL.md +81 -62
- package/claude/skills/sd-demo/evals/fixtures/empty/.specs/260513120000_warehouse/spec.md +45 -0
- package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/.specs/260513120000_warehouse/spec.md +42 -0
- package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/fixtures/with-master-screen/.specs/260513120000_warehouse/spec.md +45 -0
- package/claude/skills/sd-demo/evals/fixtures/with-master-screen/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/fixtures/with-modal/.specs/260513120000_warehouse/spec.md +75 -0
- package/claude/skills/sd-demo/evals/fixtures/with-modal/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/fixtures/with-screens/.specs/260513120000_warehouse/spec.md +45 -0
- package/claude/skills/sd-demo/evals/fixtures/with-screens/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/golden.jsonl +5 -3
- package/claude/skills/sd-dev/SKILL.md +33 -63
- package/claude/skills/sd-dev/evals/fixtures/case-add/package.json +13 -0
- package/claude/skills/sd-dev/evals/fixtures/case-add/src/index.ts +10 -0
- package/claude/skills/sd-dev/evals/fixtures/case-add/tests/index.test.ts +11 -0
- package/claude/skills/sd-dev/evals/fixtures/case-add/tsconfig.json +12 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/package.json +13 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/src/index.ts +10 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/tests/index.test.ts +11 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/tsconfig.json +12 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/package.json +13 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/src/index.ts +10 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/tests/index.test.ts +11 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/tsconfig.json +12 -0
- package/claude/skills/sd-dev/evals/golden.jsonl +3 -3
- package/claude/skills/sd-docs/SKILL.md +53 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +7 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +3 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +6 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +1 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +8 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +7 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +3 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +3 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +6 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +1 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +8 -0
- package/claude/skills/sd-docs/evals/golden.jsonl +2 -0
- package/claude/skills/sd-docs/references/subagent-prompt.md +100 -0
- package/claude/skills/sd-impl/SKILL.md +125 -46
- package/claude/skills/sd-impl/evals/fixtures/case-new/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +101 -0
- package/claude/skills/sd-impl/evals/fixtures/case-update/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +101 -0
- 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 +1 -0
- 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 +1 -0
- package/claude/skills/sd-impl/evals/golden.jsonl +2 -3
- package/claude/skills/sd-skill/SKILL.md +3 -3
- package/claude/skills/sd-skill/evals/golden.jsonl +0 -1
- package/claude/skills/sd-skill/references/eval-authoring.md +15 -0
- package/claude/skills/sd-skill/references/eval-run.md +1 -1
- package/claude/skills/sd-skill/references/skill-authoring.md +8 -5
- package/claude/skills/sd-skill/scripts/run_eval.py +39 -60
- package/claude/skills/sd-spec/SKILL.md +163 -105
- package/claude/skills/sd-spec/references/example-spec.md +585 -0
- package/claude/skills/sd-spec/references/spec-authoring.md +287 -0
- package/claude/skills/sd-spec/references/spec-md-template.md +15 -93
- package/claude/skills/sd-unpack/SKILL.md +7 -1
- package/claude/skills/sd-unpack/scripts/handlers/_common.py +10 -0
- package/claude/skills/sd-unpack/scripts/handlers/eml_handler.py +5 -13
- package/claude/skills/sd-unpack/scripts/handlers/msg_handler.py +3 -12
- package/claude/skills/sd-unpack/scripts/handlers/office_com.py +23 -37
- package/claude/skills/sd-unpack/scripts/handlers/office_worker.py +1 -4
- package/claude/skills/sd-unpack/scripts/handlers/pdf_handler.py +4 -13
- package/claude/skills/sd-unpack/scripts/unpack.py +4 -4
- package/claude/skills/sd-use/SKILL.md +1 -0
- package/claude/skills/sd-wip/SKILL.md +38 -0
- package/claude/skills/sd-wip/evals/fixtures/with-artifact/projects/acct/_wip.md +3 -0
- package/claude/skills/sd-wip/evals/fixtures/with-artifact/projects/acct/spec.md +15 -0
- package/claude/skills/sd-wip/evals/fixtures/with-existing-wip/.wips/260101120000_acct.md +6 -0
- package/claude/skills/sd-wip/evals/fixtures/with-existing-wip-for-compact/.wips/260101120000_acct.md +14 -0
- package/claude/skills/sd-wip/evals/golden.jsonl +4 -0
- package/claude/skills/sd-wip/references/compact.md +79 -0
- package/package.json +1 -1
- package/claude/references/sd-simplysm14/orm.md +0 -11
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/spec.md +0 -27
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/.specs/260503143025/overview.md +0 -12
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/src/components/Button.tsx +0 -12
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/src/components/Input.tsx +0 -27
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/355/231/224/353/251/264/spec.md +0 -25
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/.specs/260503143025/overview.md +0 -12
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/src/components/Input.tsx +0 -25
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/REQ-001-RTP/354/236/205/353/240/245/355/231/224/353/251/264/spec.md +0 -19
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/REQ-002-RTP/354/266/234/353/240/245/355/231/224/353/251/264/spec.md +0 -20
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/overview.md +0 -16
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/components/Button.tsx +0 -6
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/components/Input.tsx +0 -15
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-demo/references/demo-md-template.md +0 -92
- package/claude/skills/sd-dev/evals/fixtures/multi-req-stop-after-spec/.docs/20260301_/352/263/240/352/260/235/354/202/254_/354/236/205/352/263/240/354/232/224/354/262/255.eml +0 -5
- package/claude/skills/sd-dev/evals/fixtures/multi-req-stop-after-spec/.docs/20260305_/352/263/240/352/260/235/354/202/254_/354/266/234/352/263/240/354/232/224/354/262/255.eml +0 -6
- package/claude/skills/sd-dev/evals/fixtures/multi-req-stop-after-spec/.docs/20260310_/352/263/240/352/260/235/354/202/254_/352/266/214/355/225/234.eml +0 -6
- package/claude/skills/sd-dev/evals/fixtures/single-req-auto-chain/src/lib/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/start-from-plan/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/spec.md +0 -12
- package/claude/skills/sd-dev/evals/fixtures/start-from-plan/src/lib/.gitkeep +0 -0
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/plan.md +0 -28
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/spec.md +0 -14
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/src/components/Input.tsx +0 -6
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-impl/evals/fixtures/multi-r/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/plan.md +0 -40
- package/claude/skills/sd-impl/evals/fixtures/multi-r/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/spec.md +0 -13
- package/claude/skills/sd-impl/evals/fixtures/multi-r/src/components/Input.tsx +0 -25
- package/claude/skills/sd-impl/evals/fixtures/multi-r/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-impl/evals/fixtures/with-test-file/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/plan.md +0 -26
- package/claude/skills/sd-impl/evals/fixtures/with-test-file/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/spec.md +0 -12
- package/claude/skills/sd-impl/evals/fixtures/with-test-file/src/lib/.gitkeep +0 -0
- package/claude/skills/sd-impl/references/impl-md-template.md +0 -87
- package/claude/skills/sd-impl/references/modes-and-failure.md +0 -65
- package/claude/skills/sd-plan/SKILL.md +0 -130
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/spec.md +0 -14
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/api/user.ts +0 -13
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/components/Input.tsx +0 -15
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/pages/UserList.tsx +0 -29
- package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/spec.md +0 -17
- package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/src/components/Input.tsx +0 -6
- package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-plan/evals/fixtures/demo-built/.specs/260503143025/DEMO-001-/352/261/260/353/236/230/354/262/230/demo.md +0 -26
- package/claude/skills/sd-plan/evals/fixtures/demo-built/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/355/231/224/353/251/264/spec.md +0 -15
- package/claude/skills/sd-plan/evals/fixtures/demo-built/src/components/Input.tsx +0 -25
- package/claude/skills/sd-plan/evals/fixtures/demo-built/src/data/mock-customer.ts +0 -16
- package/claude/skills/sd-plan/evals/fixtures/demo-built/src/pages/CustomerList.tsx +0 -25
- package/claude/skills/sd-plan/evals/golden.jsonl +0 -3
- package/claude/skills/sd-plan/references/plan-md-template.md +0 -138
- package/claude/skills/sd-spec/evals/fixtures/bulk-multi-source/.docs/20260122_/352/263/240/352/260/235/354/202/254_/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/260/234/354/204/240/354/232/224/354/262/255.eml +0 -20
- package/claude/skills/sd-spec/evals/fixtures/bulk-multi-source/.docs/20260205_/352/263/240/352/260/235/354/202/254_/354/266/234/352/263/240/355/231/224/353/251/264/352/264/200/353/240/250.eml +0 -17
- package/claude/skills/sd-spec/evals/fixtures/bulk-multi-source/.docs/20260301_/352/263/240/352/260/235/354/202/254_/352/266/214/355/225/234/354/262/264/352/263/204.eml +0 -18
- package/claude/skills/sd-spec/evals/fixtures/conflict-detection/.docs/20260317_/352/263/240/352/260/235/354/202/254_/352/270/264/352/270/211/354/262/230/353/246/254/353/260/251/354/271/250.eml +0 -17
- package/claude/skills/sd-spec/evals/fixtures/conflict-detection/.docs//355/232/214/354/235/230/353/214/200/353/263/270_20260320.txt +0 -13
- package/claude/skills/sd-spec/evals/fixtures/direct-simple/.gitkeep +0 -0
- package/claude/skills/sd-spec/evals/fixtures/spec-md-input/.specs/260101120000/REQ-001-test/spec.md +0 -19
- package/claude/skills/sd-spec/evals/fixtures/spec-md-input/.specs/260101120000/overview.md +0 -18
- package/claude/skills/sd-spec/evals/golden.jsonl +0 -4
- package/claude/skills/sd-spec/references/overview-md-template.md +0 -89
- package/claude/skills/sd-spec/references/raw-input-handling.md +0 -96
- package/claude/skills/sd-verify/SKILL.md +0 -96
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/impl.md +0 -20
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/plan.md +0 -14
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/spec.md +0 -12
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/src/lib/discount.test.ts +0 -11
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/src/lib/discount.ts +0 -7
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/impl.md +0 -21
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/plan.md +0 -21
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/spec.md +0 -12
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/src/pages/UserList.tsx +0 -19
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/.specs/260503143025/REQ-001-/352/270/210/354/225/241/352/262/200/354/246/235/impl.md +0 -19
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/.specs/260503143025/REQ-001-/352/270/210/354/225/241/352/262/200/354/246/235/plan.md +0 -14
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/.specs/260503143025/REQ-001-/352/270/210/354/225/241/352/262/200/354/246/235/spec.md +0 -12
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/src/lib/validate-amount.test.ts +0 -10
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/src/lib/validate-amount.ts +0 -7
- package/claude/skills/sd-verify/evals/golden.jsonl +0 -3
- package/claude/skills/sd-verify/references/verify-md-template.md +0 -99
- /package/claude/skills/{sd-demo/evals/fixtures/basic-single-req/src/pages → sd-wip/evals/fixtures/empty}/.gitkeep +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sd-docs
|
|
3
|
+
description: `@simplysm/*` 라이브러리 패키지의 API 문서를 `.claude/references/sd-simplysm14/apis/<패키지명>/` 자리에 사용 트리거 기준으로 산출·갱신한다. Use when 라이브러리 API 문서를 새로 작성하거나 코드 변경을 반영해 갱신할 때.
|
|
4
|
+
effort: "low"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# sd-docs
|
|
8
|
+
|
|
9
|
+
`@simplysm/*` 라이브러리 패키지의 API 문서를 코드 진실에 맞춰 산출·갱신한다. 메인 에이전트가 패키지 목록 추출과 상위 README 인덱스 갱신을 담당하고, 패키지별 산출은 subagent 1개씩 병렬 위임한다.
|
|
10
|
+
|
|
11
|
+
## 산출 자리
|
|
12
|
+
|
|
13
|
+
- `.claude/references/sd-simplysm14/apis/<패키지명>/README.md` — 패키지당 1개, 필수.
|
|
14
|
+
- `.claude/references/sd-simplysm14/apis/<패키지명>/<군명>.md` — 사용 트리거 군이 본질적으로 커서 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
|
+
### 3. 상위 README 의 "패키지 인덱스" 섹션 갱신
|
|
37
|
+
|
|
38
|
+
모든 subagent 완료 후 `.claude/references/sd-simplysm14/README.md` 의 "패키지 인덱스" 섹션을 통째로 재구성한다.
|
|
39
|
+
|
|
40
|
+
- **항목 형식**: `- **<패키지명>** — <한 줄 트리거 요약>. 자세히: [apis/<패키지명>/README.md](./apis/<패키지명>/README.md)`
|
|
41
|
+
- **순서**: 패키지명 알파벳순.
|
|
42
|
+
- **포함**: `public 리스트` 만.
|
|
43
|
+
- **제외**: `private 리스트` 의 패키지, 코드베이스에 더 이상 존재하지 않는 패키지.
|
|
44
|
+
- 섹션 머리(`## 패키지 인덱스`)와 다른 섹션은 건드리지 않는다.
|
|
45
|
+
|
|
46
|
+
### 4. 사용자 보고
|
|
47
|
+
|
|
48
|
+
다음 항목을 짧게 정리해 출력한다.
|
|
49
|
+
|
|
50
|
+
- 신규 작성된 패키지 목록.
|
|
51
|
+
- 갱신된 패키지 목록.
|
|
52
|
+
- 분할 발생(추가 `.md` 가 생긴) 패키지 목록.
|
|
53
|
+
- 인덱스에서 제거된 항목 (있다면).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const BAZ_SECRET = "internal-only";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const BAZ_SECRET = "internal-only";
|
|
@@ -0,0 +1,2 @@
|
|
|
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` 문자열인가?"]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# subagent 호출 프롬프트 (sd-docs)
|
|
2
|
+
|
|
3
|
+
메인 에이전트가 패키지 1개당 1번씩 `general-purpose` subagent 를 호출할 때 쓰는 프롬프트 양식이다. `<PACKAGE_NAME>` 과 `<PACKAGE_DIR>` 만 치환한다.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 프롬프트 (이 마커 아래 전부를 그대로 subagent 에 전달)
|
|
8
|
+
|
|
9
|
+
너는 `<PACKAGE_NAME>` 패키지(소스 위치: `<PACKAGE_DIR>/src/`)의 API 문서를 작성·갱신하는 subagent 다. 산출 자리는 `.claude/references/sd-simplysm14/apis/<PACKAGE_NAME 의 패키지명 부분>/` 이다(예: `@simplysm/foo` → `apis/foo/`). 아래 규칙을 따라 끝까지 진행한다.
|
|
10
|
+
|
|
11
|
+
### 1. 입력 분석
|
|
12
|
+
|
|
13
|
+
다음만 진실 근거로 사용한다 — 외부 자료·과거 git 기록·다른 패키지 사용처는 보지 않는다.
|
|
14
|
+
|
|
15
|
+
- `<PACKAGE_DIR>/src/index.ts` 의 export — **entry 시작점**. 여기서 노출된 심볼만 문서 대상.
|
|
16
|
+
- 위 entry 가 재노출하는 각 심볼의 정의 파일(타입 시그니처 + 본문).
|
|
17
|
+
- 위 정의 파일 또는 동일 패키지 안 파일의 JSDoc 주석.
|
|
18
|
+
- `tests/` 디렉토리 중 해당 패키지를 import 해 검증하는 테스트 코드(있을 경우만).
|
|
19
|
+
|
|
20
|
+
타입 시그니처에서 직접 드러나지 않는 사용 패턴이 필요하면 위 4개 소스 안에서만 추론한다.
|
|
21
|
+
|
|
22
|
+
### 2. 사용 트리거 군 분류
|
|
23
|
+
|
|
24
|
+
entry 의 export 심볼들을 "한 작업 컨텍스트에서 함께 참조될 군"으로 묶는다. 예: 에러 처리 군, 값 타입 군, 큐/이벤트 군. 분류 기준은 폴더 구조나 심볼 종류가 아니라 **사용 시점**(언제 같이 읽힐 것인가)이다.
|
|
25
|
+
|
|
26
|
+
군이 모호하거나 작아 트리거가 1~2개뿐인 심볼은 별도 군 만들지 말고 README 의 공통 인라인 항목에 둔다.
|
|
27
|
+
|
|
28
|
+
### 3. 산출 단위 판정
|
|
29
|
+
|
|
30
|
+
기본은 `README.md` 1장. 다음 조건을 **모두** 만족하는 군만 별도 `<군명>.md` 로 분할한다.
|
|
31
|
+
|
|
32
|
+
- 그 군의 사용법·주의사항을 README 에 풀어쓰면, 다른 컨텍스트 정보까지 같이 끌려나와 다른 작업 시점에서 읽는 부담이 커진다.
|
|
33
|
+
- 그 군 단독으로 사용 예·시그니처·주의 8줄 이상 필요하다.
|
|
34
|
+
|
|
35
|
+
위를 만족하지 않으면 README 안에 머무른다.
|
|
36
|
+
|
|
37
|
+
### 4. 기존 문서 확인 (신규/갱신 자동 판단)
|
|
38
|
+
|
|
39
|
+
- `apis/<패키지명>/README.md` 가 이미 존재하면: 기존 내용 읽고 코드 현재 상태와 차이만 메운다. 기존 손편집 표현 가능한 한 보존, 단 코드와 모순되면 코드 진실 우선.
|
|
40
|
+
- 존재하지 않으면: 처음부터 작성.
|
|
41
|
+
- 기존 `<군명>.md` 들도 동일 원칙. 코드에서 사라진 군의 파일은 삭제한다.
|
|
42
|
+
|
|
43
|
+
### 5. README.md 형식
|
|
44
|
+
|
|
45
|
+
각 패키지의 `apis/<패키지명>/README.md` 는 다음 구조를 따른다.
|
|
46
|
+
|
|
47
|
+
H1 은 `# @simplysm/<short-name>` 형식으로 고정한다 (예: `# @simplysm/foo`).
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# @simplysm/<short-name>
|
|
51
|
+
|
|
52
|
+
<패키지 한 줄 개요>
|
|
53
|
+
|
|
54
|
+
## 사용 트리거 인덱스
|
|
55
|
+
|
|
56
|
+
- **<심볼 또는 군 이름>** — <언제·어떤 작업에서 쓰는지 1줄>. (분할된 군이면 `자세히: [<군명>.md](./<군명>.md)`)
|
|
57
|
+
- ...
|
|
58
|
+
|
|
59
|
+
## <인라인 군 이름 1>
|
|
60
|
+
|
|
61
|
+
각 심볼별 짧은 시그니처 + 즉시 사용 가능한 사용법 (3~6줄). 본질적으로 큰 군이라 분할된 경우 이 섹션은 없고, 위 인덱스에서 `자세히:` 링크로 안내한다.
|
|
62
|
+
|
|
63
|
+
## <인라인 군 이름 2>
|
|
64
|
+
...
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 6. 분할 .md 형식
|
|
68
|
+
|
|
69
|
+
`<군명>.md` 는 다음 구조.
|
|
70
|
+
|
|
71
|
+
분할 `.md` 의 H1 도 동일 형식 + 군명을 붙인다: `# @simplysm/<short-name> — <군명>`.
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
# @simplysm/<short-name> — <군명>
|
|
75
|
+
|
|
76
|
+
<군 개요 1~2줄: 언제 같이 읽히는 묶음인지>
|
|
77
|
+
|
|
78
|
+
## <심볼>
|
|
79
|
+
|
|
80
|
+
시그니처, 사용 예, 주의사항.
|
|
81
|
+
|
|
82
|
+
## <심볼>
|
|
83
|
+
...
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 7. 작성 원칙
|
|
87
|
+
|
|
88
|
+
- 산출물 소비자는 Claude 에이전트다. 사람 가독성보다 에이전트가 즉시 따를 수 있는 간결·명확성이 우선.
|
|
89
|
+
- 코드에서 드러나지 않는 동작은 적지 않는다.
|
|
90
|
+
- 사용 예는 실제 호출 코드 형태로 1~3줄, 군마다 1개 정도.
|
|
91
|
+
- 분량을 늘리기 위한 부연·중복·꾸밈 금지.
|
|
92
|
+
|
|
93
|
+
### 8. 산출 보고
|
|
94
|
+
|
|
95
|
+
작성/갱신을 마치면 호출자(메인)에게 다음을 1단락으로 보고한다.
|
|
96
|
+
|
|
97
|
+
- 신규 작성인지 갱신인지.
|
|
98
|
+
- 산출/갱신한 파일 목록(README 외 분할 .md 포함).
|
|
99
|
+
- 패키지 한 줄 트리거 요약(메인이 상위 README 인덱스에 쓸 문장).
|
|
100
|
+
- 삭제한 파일(있다면).
|
|
@@ -1,67 +1,146 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sd-impl
|
|
3
|
-
description:
|
|
3
|
+
description: spec.md 화면 1개를 현재 코드베이스 상태와 비교해 차이만큼 풀 구현(테스트·시연 포함)한다. Use when "화면 풀 구현", "데모를 실 구현으로", "화면 실가동" 을 요청할 때.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# sd-impl
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
**커밋 안 함** (사용자 정책 — 병렬 작업 충돌 방지).
|
|
8
|
+
spec.md 화면 1개를 현재 코드베이스 상태와 비교해 빠지거나 어긋난 부분만큼 풀 구현한다. 데모 골격이 있으면 보존, 도메인 모델·서버 함수·화면 로직·테스트는 차이가 있을 때만 신규/갱신. 끝에 사용자 시연으로 회귀를 잡는다.
|
|
10
9
|
|
|
11
|
-
##
|
|
10
|
+
## 본질
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
impl.md ← 본 단계 산출물
|
|
17
|
-
+ 코드 변경 (uncommitted)
|
|
18
|
-
```
|
|
12
|
+
- **차이만 작업**: 현재 상태와 spec 목표를 (없음 / 불일치 / 일치) 3분류로 판정. 일치 항목은 손대지 않는다.
|
|
13
|
+
- **YAGNI 구현**: spec 에 없는 기능·옵션·추상화 추가 금지.
|
|
14
|
+
- **환경 무관**: framework 처방을 본문에 박지 않는다. 코드베이스의 매뉴얼·답습 화면·테스트 환경은 발견되면 따르고, 없으면 표준 패턴으로 진행.
|
|
19
15
|
|
|
20
16
|
## 워크플로
|
|
21
17
|
|
|
22
|
-
1
|
|
18
|
+
### 1단계: 입력 확보
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
호출에 다음 필요:
|
|
25
21
|
|
|
26
|
-
|
|
22
|
+
- 대상 spec.md 경로
|
|
23
|
+
- 구현할 화면 식별자 — `[화면.X]` 또는 §4.x
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
- 모드별 표준 흐름 적용 (TDD/사후/생략) — [references/modes-and-failure.md](references/modes-and-failure.md)
|
|
30
|
-
- **R 끝마다 검증**: 타입체크 + 린트(+fix) + 테스트 (해당 R + 전체 회귀). 빌드는 별도 X (타입체크 + 린트로 갈음).
|
|
31
|
-
- 모두 통과 → impl.md 갱신 (템플릿: [references/impl-md-template.md](references/impl-md-template.md)) → 다음 R
|
|
32
|
-
- 하나라도 실패 → 막힘 처리 ([references/modes-and-failure.md](references/modes-and-failure.md))
|
|
25
|
+
없으면 묻기. spec.md 에 식별자 매칭이 안 되면 §4 화면 목록 표에서 후보 제시 후 확정.
|
|
33
26
|
|
|
34
|
-
|
|
35
|
-
- 보고: 안내 텍스트라 별도 사용자 승인 게이트 X.
|
|
27
|
+
### 2단계: spec §4.x 분석
|
|
36
28
|
|
|
37
|
-
|
|
29
|
+
§4.x 에서 추출:
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
| 완료 | 검증 통과, impl.md 갱신됨 |
|
|
43
|
-
| 막힘 | 자동 시도 후 미해결, 사용자 Q |
|
|
44
|
-
| 보류 | plan 모순으로 plan 재진입 필요 |
|
|
31
|
+
- 헤더 인덱스(Actor · 관련 섹션 · 장치)
|
|
32
|
+
- 기능 개요 · 와이어프레임 · 항목표 · 동작 · 도메인 규칙(해당 시)
|
|
33
|
+
- §4.x 가 참조하는 도메인 모델(§7.x), 자동 처리(§5.x), 외부 인터페이스(§8.x), 공통 정의(§6.x)
|
|
45
34
|
|
|
46
|
-
|
|
35
|
+
### 3단계: 외부 입력 점검 (BLOCKING)
|
|
47
36
|
|
|
48
|
-
|
|
37
|
+
작업 대상 §4.x 와 그가 참조하는 §5/§6/§7/§8 항목에서 점검 (이 화면이 쓰지 않는 다른 섹션은 무관):
|
|
49
38
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
39
|
+
- **헤더 `[OPEN: 날짜]` 섹션**: 본문이 재분석용 포인터일 뿐 임의안 부재 → sd-impl 해소 불가. 사용자에게 보고 후 **종료**. 사용자가 sd-spec 으로 확정 받은 뒤 sd-impl 재호출.
|
|
40
|
+
- **본문 인라인 `[OPEN]`**: `sd-base-rules` "결정 근거" 적용 — 근거 없으면 1건씩 질문. 답변 후 즉시 spec.md 반영(아래 "spec.md 동기화") → 다음 건. 단, 결정이 다른 섹션의 구조 변경(필드 추가, 새 규칙 항목 등)까지 요구하면 헤더 OPEN 과 동일 처리: 종료 후 사용자 보고 + sd-spec 재호출. 종료 전에 다음을 식별·보고:
|
|
41
|
+
- sd-spec 에 넘길 변경 항목 (§ 위치 + 변경 내용)
|
|
42
|
+
- 그 변경이 영향 미치는 **다른 §4.x 화면 목록** — 구조 변경된 §5/§6/§7/§8 항목을 spec 에서 역인용해 참조 §4.x 수집. sd-spec 확정 후 sd-impl 재호출 대상.
|
|
43
|
+
- 영향 §4.x 중 이미 구현된 것 / 미구현인 것 구분 (이미 구현분은 재구현 필요, 미구현분은 향후 sd-impl 첫 호출 시점에 자연 반영).
|
|
44
|
+
- **사용자 제공 예정 자료**: spec 본문에 "사용자 제공 예정" 류로 적힌 파일·값(디자인 시안, 샘플 데이터, 외부 API 명세, 자격증명 등). 사용자에게 요청 후 회신분으로 다음 건.
|
|
55
45
|
|
|
56
|
-
|
|
46
|
+
### 4단계: 보조 자료 수집 (있다면 활용)
|
|
57
47
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
|
|
48
|
+
다음 셋은 발견되면 그 패턴을 따르고, 없으면 LLM 의 일반 지식으로 표준 패턴 채택해 그냥 진행한다. **부재로 워크플로를 멈추지 않는다.**
|
|
49
|
+
|
|
50
|
+
**A. 라이브러리/개발 매뉴얼**
|
|
51
|
+
|
|
52
|
+
코드베이스에 권위 규약/매뉴얼 문서가 있으면 1순위로 따른다.
|
|
53
|
+
|
|
54
|
+
- `@simplysm/*` 14.x 사용 시 — [.claude/references/sd-simplysm14/README.md](../../references/sd-simplysm14/README.md) Read 후 "개발 매뉴얼" 항목 진입.
|
|
55
|
+
- 그 외 framework 는 코드베이스 안의 동등 위치 문서를 찾아 Read.
|
|
56
|
+
- 없으면 흔한 표준(예: TypeScript + 흔한 테스트 러너) 으로 채택.
|
|
57
|
+
|
|
58
|
+
**B. 답습 풀구현 후보**
|
|
59
|
+
|
|
60
|
+
도메인/구성이 유사한 이미 풀 구현된 화면이 코드베이스에 있으면 그 패턴(파일 위치·이름 규약·모델 정의·데이터 접근/저장·테스트 작성) 을 답습.
|
|
61
|
+
|
|
62
|
+
1. 후보 2~3개 추리기. 도메인 영역이 같으면 우선.
|
|
63
|
+
2. 사용자에게 후보 목록 제시 후 1회 질문 — "이 중 답습할 화면 선택 부탁".
|
|
64
|
+
3. 사용자 확정분 1개 Read.
|
|
65
|
+
|
|
66
|
+
후보 0건이면 답습 없이 진행.
|
|
67
|
+
|
|
68
|
+
**C. 테스트 환경**
|
|
69
|
+
|
|
70
|
+
코드베이스의 단위 테스트 프로젝트 구분·실행 명령·mocking 패턴·dev 서버 실행 명령을 파악. 없으면 흔한 조합으로 진행.
|
|
71
|
+
|
|
72
|
+
### 5단계: 차이 식별
|
|
73
|
+
|
|
74
|
+
분석 자료 기준으로 spec §4.x 가 요구하는 산출물 목록을 만들고, 현재 코드베이스의 각 항목을 (없음 / 불일치 / 일치) 3분류로 판정.
|
|
75
|
+
|
|
76
|
+
전형 산출물: 도메인 모델, 데이터 접근 코드, 서버 함수(보안·네이티브 사유 시), 화면 컴포넌트, 라우팅·메뉴 등록, 단위 테스트.
|
|
77
|
+
|
|
78
|
+
**일치 항목은 손대지 않는다.** 차이는 갱신·덮어쓰기·신규 추가로 처리. 이 단계에서는 삭제하지 않는다 — 미참조 잔재 정리는 9단계에서 일괄.
|
|
79
|
+
|
|
80
|
+
### 6단계: 계획
|
|
81
|
+
|
|
82
|
+
(없음 / 불일치) 항목을 작업 단위 목록으로 정리. 의존 관계 표시 (예: 모델 → 데이터 접근 → 화면). 작업 추적 도구가 있으면 활용한다(필수 아님).
|
|
83
|
+
|
|
84
|
+
### 7단계: 각 작업 사이클
|
|
85
|
+
|
|
86
|
+
각 작업 시작 시 **테스트 작성 가능 여부** 판정. 4-C 의 테스트 환경 이용.
|
|
87
|
+
|
|
88
|
+
판정 기준: "테스트 환경이 이미 존재 + 작성 비용 대비 회귀 방지 가치".
|
|
89
|
+
|
|
90
|
+
- **테스트 가능** — 입출력 명확 + 외부 의존 통제 가능 (도메인 로직·계산·변환·서버 함수·데이터 접근 헬퍼).
|
|
91
|
+
사이클: **RED → GREEN → REFACTOR**
|
|
92
|
+
- **RED**: 테스트만 작성 → 테스트 러너 실행 → 실패(또는 대상 미존재) 확인. **이 단계에서 구현 파일 절대 손대지 말 것.** 실패를 눈으로 본 뒤에만 GREEN 진입.
|
|
93
|
+
- **GREEN**: 테스트가 통과하는 **최소** 구현만 (YAGNI) → 러너 재실행 → 통과 확인.
|
|
94
|
+
- **REFACTOR**: 중복·가독성·기존 패턴 정합 정리 → 러너 재실행 → 통과 유지 확인. 정리할 게 없으면 스킵.
|
|
95
|
+
- **테스트 불가/비효율** — UI 시각·인터랙션, 외부 서비스 실호출, 환경 의존 코드.
|
|
96
|
+
사이클: **구현 → REFACTOR**
|
|
97
|
+
- **구현**: YAGNI 로 작성. 동작 검증은 10단계 시연으로 미룬다.
|
|
98
|
+
- **REFACTOR**: 위와 동일. 정리할 게 없으면 스킵.
|
|
99
|
+
|
|
100
|
+
### 8단계: spec 대조
|
|
101
|
+
|
|
102
|
+
시연 진입 전, spec §4.x 요구가 실제 구현·테스트에 다 들어갔는지 self-check.
|
|
103
|
+
|
|
104
|
+
대조 대상:
|
|
105
|
+
|
|
106
|
+
- 5단계에서 뽑은 산출물 목록 — 전부 작업 완료 상태인지
|
|
107
|
+
- §4.x 본문의 와이어프레임·항목표·동작·도메인 규칙 — 항목 단위로 누락 여부 (와이어프레임은 컴포넌트 구조 대 레이아웃 매핑 수준에서 대조)
|
|
108
|
+
- §4.x 가 참조하는 §5(자동 처리)·§6(공통)·§7(도메인 모델)·§8(외부 인터페이스) 항목 — 구현 반영 여부
|
|
109
|
+
|
|
110
|
+
누락·불일치 발견 시 해당 작업으로 돌아가 7단계 사이클 재수행. 전부 일치 확인된 뒤에만 다음 단계.
|
|
111
|
+
|
|
112
|
+
### 9단계: 코드 정리
|
|
113
|
+
|
|
114
|
+
전체 변경분을 한번 훑어 정돈. 7단계 REFACTOR 가 잡지 못한 횡단 이슈와 작업 잔재가 대상.
|
|
115
|
+
|
|
116
|
+
- **횡단 중복**: 작업 사이클 사이에 동일 로직이 흩어져 있으면 합치기.
|
|
117
|
+
- **답습 패턴 재확인**: 4-B 에서 채택한 화면 vs 실제 작성 — 파일 위치·네이밍·구조 정합.
|
|
118
|
+
- **불필요한 코드**: 미사용 import·변수·주석, 요구 없는 옵션·추상화 제거. 7단계 갱신·덮어쓰기 결과로 어디서도 참조되지 않는 파일도 포함 (검사 범위는 화면 스코프 넘어 전체 워크스페이스). **단 파일 단위 삭제는 후보 목록을 사용자에게 보고 → 확정분만 삭제** (dynamic import·마이그레이션·문서 자산 등 보존분 사용자 제외).
|
|
119
|
+
- **매뉴얼 권위 규약**: 4-A 에서 Read 한 매뉴얼(@simplysm/* 면 sd-simplysm14) 위반 항목 수정.
|
|
120
|
+
|
|
121
|
+
정리 후 단위 테스트 재실행 — 회귀 없음 확인.
|
|
122
|
+
|
|
123
|
+
### 10단계: 시연 검증
|
|
124
|
+
|
|
125
|
+
사용자에게 요청: "**dev 서버**를 실행하고 접속 주소를 알려달라."
|
|
126
|
+
|
|
127
|
+
주소 회신 후 `playwright-cli` 로 spec §4.x 의 동작 시나리오를 직접 시연:
|
|
128
|
+
|
|
129
|
+
- 기능 개요·동작에 적힌 사용자 흐름 1회씩 수행.
|
|
130
|
+
- 화면 항목·와이어프레임 위치와 실제 렌더 결과 비교.
|
|
131
|
+
|
|
132
|
+
회귀 발견 시 해당 작업으로 돌아가 수정 → 재시연.
|
|
133
|
+
|
|
134
|
+
### 11단계: 완료 보고
|
|
135
|
+
|
|
136
|
+
- 대상 spec.md 의 해당 §4.x / §5.x 헤더 `[확정: 날짜]` 를 `[확정: 날짜, 구현: 오늘날짜]` 로 확장 (오늘날짜는 Bash `date +%Y-%m-%d`). 이미 `구현: …` 가 들어있으면 그 날짜만 갱신.
|
|
137
|
+
- 만들거나 갱신한 파일 목록 보고 (마커 부착한 spec.md 도 포함).
|
|
138
|
+
- 본 세션에서 §5/§6/§7/§8 공통 자원을 신규/변경했다면, 그 자원을 참조하는 **다른 §4.x 화면 중 이미 구현된 것**을 spec 역인용으로 수집해 영향 화면 목록으로 보고 (재구현 필요 여부 사용자 판단용). 변경 없었으면 생략.
|
|
139
|
+
- 시연에서 사용자 확인이 끝나면 종료.
|
|
140
|
+
|
|
141
|
+
## 운용
|
|
142
|
+
|
|
143
|
+
- 결정 근거: `sd-base-rules.md` "결정 근거" 적용.
|
|
144
|
+
- **spec.md 동기화**: sd-impl 이 직접 손대는 spec 변경은 다음 2건뿐. 헤더 OPEN·구조 변경은 3단계 규칙대로 종료 후 sd-spec.
|
|
145
|
+
- 본문 인라인 `[OPEN]` 해소 시 해당 위치의 마커를 결정 내용으로 교체 (3단계).
|
|
146
|
+
- 11단계 완료 시 §4.x / §5.x 헤더 `[확정: …]` 마커를 `[확정: …, 구현: 날짜]` 로 확장.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# 거래처 관리 요구 분석서
|
|
2
|
+
|
|
3
|
+
## 1. 개요
|
|
4
|
+
|
|
5
|
+
### 1.1 핵심 목적 [확정: 2026-05-14]
|
|
6
|
+
|
|
7
|
+
거래처 정보 조회·검색.
|
|
8
|
+
|
|
9
|
+
### 1.2 주요 목표 [확정: 2026-05-14]
|
|
10
|
+
|
|
11
|
+
- 거래처 목록 조회·검색
|
|
12
|
+
|
|
13
|
+
### 1.3 최종 사용자/이해관계자 [확정: 2026-05-14]
|
|
14
|
+
|
|
15
|
+
- 영업 담당자: 거래처 정보를 조회하는 사람
|
|
16
|
+
|
|
17
|
+
### 1.4 환경/장치 [확정: 2026-05-14]
|
|
18
|
+
|
|
19
|
+
PC — Windows 11, Chrome 최신, 1920 x 1080
|
|
20
|
+
|
|
21
|
+
## 2. 업무 프로세스
|
|
22
|
+
|
|
23
|
+
### 2.1 거래처 조회 [확정: 2026-05-14]
|
|
24
|
+
|
|
25
|
+
영업 담당자가 거래처 목록을 검색·조회한다.
|
|
26
|
+
|
|
27
|
+
관련 섹션: [화면.거래처 목록]
|
|
28
|
+
|
|
29
|
+
## 3. 기타 요구사항
|
|
30
|
+
|
|
31
|
+
없음.
|
|
32
|
+
|
|
33
|
+
## 4. 화면
|
|
34
|
+
|
|
35
|
+
| § | 분류 | 화면 | 유형 | 장치 |
|
|
36
|
+
| --- | -------- | ----------- | ------ | ---- |
|
|
37
|
+
| 4.1 | 기준정보 | 거래처 목록 | 마스터 | PC |
|
|
38
|
+
|
|
39
|
+
### 4.1 거래처 목록 (PC) [확정: 2026-05-14]
|
|
40
|
+
|
|
41
|
+
Actor: 영업 담당자
|
|
42
|
+
관련 섹션: [프로세스.거래처 조회]
|
|
43
|
+
|
|
44
|
+
기능 개요:
|
|
45
|
+
|
|
46
|
+
- 거래처 목록 표시
|
|
47
|
+
- 거래처명·사업자번호로 검색
|
|
48
|
+
|
|
49
|
+
와이어프레임:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
┌──────────────────────────────────────────────────┐
|
|
53
|
+
│ 검색어: [_______________] [조회] │
|
|
54
|
+
├────┬───────────┬──────────────┬──────────────────┤
|
|
55
|
+
│ # │ 거래처명 │ 사업자번호 │ 연락처 │
|
|
56
|
+
├────┼───────────┼──────────────┼──────────────────┤
|
|
57
|
+
│ 1 │ ABC상사 │ 123-45-67890 │ 02-1234-5678 │
|
|
58
|
+
│ 2 │ XYZ유통 │ 234-56-78901 │ 02-2345-6789 │
|
|
59
|
+
└────┴───────────┴──────────────┴──────────────────┘
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
항목:
|
|
63
|
+
|
|
64
|
+
| 항목 | 타입 | 비고 |
|
|
65
|
+
| ---------- | ------ | ------------------ |
|
|
66
|
+
| 거래처명 | 문자열 | 필수 |
|
|
67
|
+
| 사업자번호 | 문자열 | 10자리 하이픈 포함 |
|
|
68
|
+
| 연락처 | 문자열 | 선택 |
|
|
69
|
+
|
|
70
|
+
동작:
|
|
71
|
+
|
|
72
|
+
- [조회] 클릭 → 검색어로 필터된 목록 갱신.
|
|
73
|
+
|
|
74
|
+
## 5. 자동 처리
|
|
75
|
+
|
|
76
|
+
없음.
|
|
77
|
+
|
|
78
|
+
## 6. 공통 정의
|
|
79
|
+
|
|
80
|
+
없음.
|
|
81
|
+
|
|
82
|
+
## 7. 도메인 모델
|
|
83
|
+
|
|
84
|
+
### 7.1 거래처 [확정: 2026-05-14]
|
|
85
|
+
|
|
86
|
+
- id: 식별자
|
|
87
|
+
- 거래처명: 문자열, 필수
|
|
88
|
+
- 사업자번호: 문자열, 10자리 하이픈 포함
|
|
89
|
+
- 연락처: 문자열, 선택
|
|
90
|
+
|
|
91
|
+
## 8. 외부 인터페이스
|
|
92
|
+
|
|
93
|
+
없음.
|
|
94
|
+
|
|
95
|
+
## 9. 본문 외 결정사항
|
|
96
|
+
|
|
97
|
+
없음.
|
|
98
|
+
|
|
99
|
+
## 10. 변경 이력
|
|
100
|
+
|
|
101
|
+
- 2026-05-14: 초안 작성
|