@simplysm/sd-claude 14.0.65 → 14.0.68

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.
Files changed (241) hide show
  1. package/claude/references/sd-requirement-source-handling.md +64 -0
  2. package/claude/references/sd-simplysm14/README.md +44 -40
  3. package/claude/references/sd-simplysm14/apis/angular/README.md +95 -0
  4. package/claude/references/sd-simplysm14/apis/angular/app-structure.md +49 -0
  5. package/claude/references/sd-simplysm14/apis/angular/buttons.md +42 -0
  6. package/claude/references/sd-simplysm14/apis/angular/crud.md +35 -0
  7. package/claude/references/sd-simplysm14/apis/angular/forms.md +63 -0
  8. package/claude/references/sd-simplysm14/apis/angular/infrastructure.md +80 -0
  9. package/claude/references/sd-simplysm14/apis/angular/kanban.md +33 -0
  10. package/claude/references/sd-simplysm14/apis/angular/layout.md +41 -0
  11. package/claude/references/sd-simplysm14/apis/angular/modal.md +63 -0
  12. package/claude/references/sd-simplysm14/apis/angular/routing.md +45 -0
  13. package/claude/references/sd-simplysm14/apis/angular/select-dropdown.md +35 -0
  14. package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +50 -0
  15. package/claude/references/sd-simplysm14/apis/angular/shared-data.md +42 -0
  16. package/claude/references/sd-simplysm14/apis/angular/sheet.md +52 -0
  17. package/claude/references/sd-simplysm14/apis/angular/toast.md +46 -0
  18. package/claude/references/sd-simplysm14/apis/angular/visual.md +41 -0
  19. package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +76 -0
  20. package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +83 -0
  21. package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +80 -0
  22. package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +39 -0
  23. package/claude/references/sd-simplysm14/apis/core-browser/README.md +112 -0
  24. package/claude/references/sd-simplysm14/apis/core-common/README.md +53 -0
  25. package/claude/references/sd-simplysm14/apis/core-common/extensions.md +123 -0
  26. package/claude/references/sd-simplysm14/apis/core-common/features.md +46 -0
  27. package/claude/references/sd-simplysm14/apis/core-common/types.md +114 -0
  28. package/claude/references/sd-simplysm14/apis/core-common/utils.md +158 -0
  29. package/claude/references/sd-simplysm14/apis/core-node/README.md +12 -0
  30. package/claude/references/sd-simplysm14/apis/core-node/consola.md +64 -0
  31. package/claude/references/sd-simplysm14/apis/core-node/cpx.md +52 -0
  32. package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +53 -0
  33. package/claude/references/sd-simplysm14/apis/core-node/fsx.md +81 -0
  34. package/claude/references/sd-simplysm14/apis/core-node/pathx.md +55 -0
  35. package/claude/references/sd-simplysm14/apis/core-node/worker.md +111 -0
  36. package/claude/references/sd-simplysm14/apis/excel/README.md +81 -0
  37. package/claude/references/sd-simplysm14/apis/lint/README.md +80 -0
  38. package/claude/references/sd-simplysm14/apis/orm-common/README.md +33 -0
  39. package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +77 -0
  40. package/claude/references/sd-simplysm14/apis/orm-common/executable.md +20 -0
  41. package/claude/references/sd-simplysm14/apis/orm-common/expr.md +92 -0
  42. package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +98 -0
  43. package/claude/references/sd-simplysm14/apis/orm-common/schema-builders.md +128 -0
  44. package/claude/references/sd-simplysm14/apis/orm-node/README.md +59 -0
  45. package/claude/references/sd-simplysm14/apis/sd-claude/README.md +9 -0
  46. package/claude/references/sd-simplysm14/apis/sd-cli/README.md +50 -0
  47. package/claude/references/sd-simplysm14/apis/sd-cli/sd-config.md +155 -0
  48. package/claude/references/sd-simplysm14/apis/service-client/README.md +92 -0
  49. package/claude/references/sd-simplysm14/apis/service-common/README.md +29 -0
  50. package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +63 -0
  51. package/claude/references/sd-simplysm14/apis/service-common/messages.md +56 -0
  52. package/claude/references/sd-simplysm14/apis/service-common/protocol.md +64 -0
  53. package/claude/references/sd-simplysm14/apis/service-common/service-types.md +43 -0
  54. package/claude/references/sd-simplysm14/apis/service-server/README.md +20 -0
  55. package/claude/references/sd-simplysm14/apis/service-server/auth.md +31 -0
  56. package/claude/references/sd-simplysm14/apis/service-server/builtin-services.md +47 -0
  57. package/claude/references/sd-simplysm14/apis/service-server/define-service.md +71 -0
  58. package/claude/references/sd-simplysm14/apis/service-server/internals.md +41 -0
  59. package/claude/references/sd-simplysm14/apis/service-server/server.md +66 -0
  60. package/claude/references/sd-simplysm14/apis/storage/README.md +69 -0
  61. package/claude/references/sd-simplysm14/{client-component.md → manuals/client-component.md} +134 -128
  62. package/claude/references/sd-simplysm14/manuals/client-crud.md +102 -0
  63. package/claude/references/sd-simplysm14/manuals/client-demo.md +128 -0
  64. package/claude/references/sd-simplysm14/manuals/client-rules.md +7 -0
  65. package/claude/references/sd-simplysm14/{client-setup.md → manuals/client-setup.md} +2 -2
  66. package/claude/references/sd-simplysm14/{client-tab.md → manuals/client-tab.md} +13 -11
  67. package/claude/references/sd-simplysm14/{orm-union.md → manuals/orm-union.md} +1 -1
  68. package/claude/references/sd-simplysm14/manuals/orm.md +75 -0
  69. package/claude/rules/sd-base-rules.md +191 -79
  70. package/claude/scripts/sd_paths.py +22 -0
  71. package/claude/sd-check-bash.py +19 -0
  72. package/claude/sd-statusline.py +7 -12
  73. package/claude/skills/sd-commit/SKILL.md +8 -3
  74. package/claude/skills/sd-demo/SKILL.md +103 -62
  75. package/claude/skills/sd-demo/evals/fixtures/empty/.specs/260513120000_warehouse/spec.md +45 -0
  76. package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/.specs/260513120000_warehouse/spec.md +42 -0
  77. package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
  78. package/claude/skills/sd-demo/evals/fixtures/with-master-screen/.specs/260513120000_warehouse/spec.md +45 -0
  79. package/claude/skills/sd-demo/evals/fixtures/with-master-screen/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
  80. package/claude/skills/sd-demo/evals/fixtures/with-modal/.specs/260513120000_warehouse/spec.md +75 -0
  81. package/claude/skills/sd-demo/evals/fixtures/with-modal/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
  82. package/claude/skills/sd-demo/evals/fixtures/with-screens/.specs/260513120000_warehouse/spec.md +45 -0
  83. package/claude/skills/sd-demo/evals/fixtures/with-screens/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
  84. package/claude/skills/sd-demo/evals/golden.jsonl +5 -3
  85. package/claude/skills/sd-dev/SKILL.md +33 -63
  86. package/claude/skills/sd-dev/evals/fixtures/case-add/package.json +13 -0
  87. package/claude/skills/sd-dev/evals/fixtures/case-add/src/index.ts +10 -0
  88. package/claude/skills/sd-dev/evals/fixtures/case-add/tests/index.test.ts +11 -0
  89. package/claude/skills/sd-dev/evals/fixtures/case-add/tsconfig.json +12 -0
  90. package/claude/skills/sd-dev/evals/fixtures/case-bug/package.json +13 -0
  91. package/claude/skills/sd-dev/evals/fixtures/case-bug/src/index.ts +10 -0
  92. package/claude/skills/sd-dev/evals/fixtures/case-bug/tests/index.test.ts +11 -0
  93. package/claude/skills/sd-dev/evals/fixtures/case-bug/tsconfig.json +12 -0
  94. package/claude/skills/sd-dev/evals/fixtures/case-modify/package.json +13 -0
  95. package/claude/skills/sd-dev/evals/fixtures/case-modify/src/index.ts +10 -0
  96. package/claude/skills/sd-dev/evals/fixtures/case-modify/tests/index.test.ts +11 -0
  97. package/claude/skills/sd-dev/evals/fixtures/case-modify/tsconfig.json +12 -0
  98. package/claude/skills/sd-dev/evals/golden.jsonl +3 -3
  99. package/claude/skills/sd-docs/SKILL.md +53 -0
  100. package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +7 -0
  101. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +5 -0
  102. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +3 -0
  103. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +6 -0
  104. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +1 -0
  105. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +5 -0
  106. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +8 -0
  107. package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +7 -0
  108. package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +3 -0
  109. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +5 -0
  110. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +3 -0
  111. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +6 -0
  112. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +1 -0
  113. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +5 -0
  114. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +8 -0
  115. package/claude/skills/sd-docs/evals/golden.jsonl +2 -0
  116. package/claude/skills/sd-docs/references/subagent-prompt.md +100 -0
  117. package/claude/skills/sd-impl/SKILL.md +149 -46
  118. package/claude/skills/sd-impl/evals/fixtures/case-001-new-screen/spec.md +55 -0
  119. package/claude/skills/sd-impl/evals/fixtures/case-002-auto-process/spec.md +55 -0
  120. package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/packages/client/src/pages/book-list.ts +22 -0
  121. package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/spec.md +57 -0
  122. package/claude/skills/sd-impl/evals/fixtures/case-004-ambiguous-spec/spec.md +58 -0
  123. package/claude/skills/sd-impl/evals/fixtures/case-005-id-mismatch/spec.md +52 -0
  124. 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 +10 -0
  125. 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 +11 -0
  126. 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 +12 -0
  127. 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 +8 -0
  128. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/spec.md +77 -0
  129. package/claude/skills/sd-impl/evals/fixtures/case-new/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +101 -0
  130. package/claude/skills/sd-impl/evals/fixtures/case-update/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +101 -0
  131. 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
  132. 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
  133. package/claude/skills/sd-impl/evals/golden.jsonl +6 -3
  134. package/claude/skills/sd-impl/references/spec-cross-check.md +82 -0
  135. package/claude/skills/sd-skill/SKILL.md +4 -4
  136. package/claude/skills/sd-skill/evals/golden.jsonl +1 -2
  137. package/claude/skills/sd-skill/references/eval-authoring.md +31 -0
  138. package/claude/skills/sd-skill/references/eval-run.md +1 -1
  139. package/claude/skills/sd-skill/references/skill-authoring.md +8 -5
  140. package/claude/skills/sd-skill/scripts/run_eval.py +39 -60
  141. package/claude/skills/sd-spec/SKILL.md +163 -105
  142. package/claude/skills/sd-spec/references/example-spec.md +585 -0
  143. package/claude/skills/sd-spec/references/spec-authoring.md +287 -0
  144. package/claude/skills/sd-spec/references/spec-md-template.md +15 -93
  145. package/claude/skills/sd-unpack/SKILL.md +7 -1
  146. package/claude/skills/sd-unpack/scripts/handlers/_common.py +10 -0
  147. package/claude/skills/sd-unpack/scripts/handlers/eml_handler.py +5 -13
  148. package/claude/skills/sd-unpack/scripts/handlers/msg_handler.py +3 -12
  149. package/claude/skills/sd-unpack/scripts/handlers/office_com.py +23 -37
  150. package/claude/skills/sd-unpack/scripts/handlers/office_worker.py +1 -4
  151. package/claude/skills/sd-unpack/scripts/handlers/pdf_handler.py +4 -13
  152. package/claude/skills/sd-unpack/scripts/unpack.py +4 -4
  153. package/claude/skills/sd-use/SKILL.md +1 -0
  154. package/claude/skills/sd-wip/SKILL.md +38 -0
  155. package/claude/skills/sd-wip/evals/fixtures/with-artifact/projects/acct/_wip.md +3 -0
  156. package/claude/skills/sd-wip/evals/fixtures/with-artifact/projects/acct/spec.md +15 -0
  157. package/claude/skills/sd-wip/evals/fixtures/with-existing-wip/.wips/260101120000_acct.md +6 -0
  158. package/claude/skills/sd-wip/evals/fixtures/with-existing-wip-for-compact/.wips/260101120000_acct.md +14 -0
  159. package/claude/skills/sd-wip/evals/golden.jsonl +4 -0
  160. package/claude/skills/sd-wip/references/compact.md +79 -0
  161. package/package.json +1 -1
  162. package/scripts/sd-entries.mjs +2 -2
  163. package/claude/references/sd-simplysm14/orm.md +0 -11
  164. 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
  165. package/claude/skills/sd-demo/evals/fixtures/basic-single-req/.specs/260503143025/overview.md +0 -12
  166. package/claude/skills/sd-demo/evals/fixtures/basic-single-req/src/components/Button.tsx +0 -12
  167. package/claude/skills/sd-demo/evals/fixtures/basic-single-req/src/components/Input.tsx +0 -27
  168. 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
  169. package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/.specs/260503143025/overview.md +0 -12
  170. package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/src/components/Input.tsx +0 -25
  171. package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/src/pages/.gitkeep +0 -0
  172. 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
  173. 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
  174. package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/overview.md +0 -16
  175. package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/components/Button.tsx +0 -6
  176. package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/components/Input.tsx +0 -15
  177. package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/pages/.gitkeep +0 -0
  178. package/claude/skills/sd-demo/references/demo-md-template.md +0 -92
  179. 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
  180. 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
  181. 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
  182. package/claude/skills/sd-dev/evals/fixtures/single-req-auto-chain/src/lib/.gitkeep +0 -0
  183. 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
  184. package/claude/skills/sd-dev/evals/fixtures/start-from-plan/src/lib/.gitkeep +0 -0
  185. 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
  186. 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
  187. package/claude/skills/sd-impl/evals/fixtures/basic-single-r/src/components/Input.tsx +0 -6
  188. package/claude/skills/sd-impl/evals/fixtures/basic-single-r/src/pages/.gitkeep +0 -0
  189. 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
  190. 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
  191. package/claude/skills/sd-impl/evals/fixtures/multi-r/src/components/Input.tsx +0 -25
  192. package/claude/skills/sd-impl/evals/fixtures/multi-r/src/pages/.gitkeep +0 -0
  193. 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
  194. 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
  195. package/claude/skills/sd-impl/evals/fixtures/with-test-file/src/lib/.gitkeep +0 -0
  196. package/claude/skills/sd-impl/references/impl-md-template.md +0 -87
  197. package/claude/skills/sd-impl/references/modes-and-failure.md +0 -65
  198. package/claude/skills/sd-plan/SKILL.md +0 -130
  199. 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
  200. package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/api/user.ts +0 -13
  201. package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/components/Input.tsx +0 -15
  202. package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/pages/UserList.tsx +0 -29
  203. 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
  204. package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/src/components/Input.tsx +0 -6
  205. package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/src/pages/.gitkeep +0 -0
  206. 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
  207. 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
  208. package/claude/skills/sd-plan/evals/fixtures/demo-built/src/components/Input.tsx +0 -25
  209. package/claude/skills/sd-plan/evals/fixtures/demo-built/src/data/mock-customer.ts +0 -16
  210. package/claude/skills/sd-plan/evals/fixtures/demo-built/src/pages/CustomerList.tsx +0 -25
  211. package/claude/skills/sd-plan/evals/golden.jsonl +0 -3
  212. package/claude/skills/sd-plan/references/plan-md-template.md +0 -138
  213. 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
  214. 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
  215. 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
  216. 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
  217. 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
  218. package/claude/skills/sd-spec/evals/fixtures/direct-simple/.gitkeep +0 -0
  219. package/claude/skills/sd-spec/evals/fixtures/spec-md-input/.specs/260101120000/REQ-001-test/spec.md +0 -19
  220. package/claude/skills/sd-spec/evals/fixtures/spec-md-input/.specs/260101120000/overview.md +0 -18
  221. package/claude/skills/sd-spec/evals/golden.jsonl +0 -4
  222. package/claude/skills/sd-spec/references/overview-md-template.md +0 -89
  223. package/claude/skills/sd-spec/references/raw-input-handling.md +0 -96
  224. package/claude/skills/sd-verify/SKILL.md +0 -96
  225. 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
  226. 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
  227. 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
  228. package/claude/skills/sd-verify/evals/fixtures/all-satisfied/src/lib/discount.test.ts +0 -11
  229. package/claude/skills/sd-verify/evals/fixtures/all-satisfied/src/lib/discount.ts +0 -7
  230. 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
  231. 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
  232. 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
  233. package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/src/pages/UserList.tsx +0 -19
  234. 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
  235. 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
  236. 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
  237. package/claude/skills/sd-verify/evals/fixtures/tdd-only/src/lib/validate-amount.test.ts +0 -10
  238. package/claude/skills/sd-verify/evals/fixtures/tdd-only/src/lib/validate-amount.ts +0 -7
  239. package/claude/skills/sd-verify/evals/golden.jsonl +0 -3
  240. package/claude/skills/sd-verify/references/verify-md-template.md +0 -99
  241. /package/claude/skills/{sd-demo/evals/fixtures/basic-single-req/src/pages → sd-wip/evals/fixtures/empty}/.gitkeep +0 -0
@@ -0,0 +1,55 @@
1
+ # 도서관 시스템 spec
2
+
3
+ ## §1 개요
4
+
5
+ 도서관 자동 처리 - 대여 만료 임박 알림 발송.
6
+
7
+ ## §5 자동 처리
8
+
9
+ | ID | 이름 | 트리거 |
10
+ | ----- | -------------- | ------------ |
11
+ | §5.1 | 대여 만료 알림 | 매일 00:00 |
12
+
13
+ ### §5.1 대여 만료 알림 [확정: 2026-05-01]
14
+
15
+ **트리거**: 매일 00:00 (cron)
16
+ **관련 섹션**: §7.1 대여, §7.2 알림 이력
17
+
18
+ **처리 내용**:
19
+
20
+ 1. 반납 예정일이 오늘 이후 3일 이내(오늘 포함)인 미반납 대여 레코드를 모두 조회.
21
+ 2. 각 레코드의 사용자에게 이메일로 알림 발송.
22
+ 3. 알림 발송 결과를 §7.2 알림 이력에 저장.
23
+
24
+ **알림 내용**:
25
+
26
+ - 제목: `도서 반납 예정 알림`
27
+ - 본문: `대여하신 도서 [도서명] 의 반납 예정일은 [반납예정일] 입니다.` (`[도서명]`·`[반납예정일]` 치환)
28
+
29
+ **중복 발송 방지**:
30
+
31
+ - 같은 대여 레코드에 대해 같은 날짜에 알림이 이미 발송됐으면 (§7.2 에서 매칭) 재발송하지 않음.
32
+
33
+ ## §7 도메인 모델
34
+
35
+ ### §7.1 대여 [확정: 2026-05-01]
36
+
37
+ | 필드 | 타입 | 제약 | 기본값 |
38
+ | ----------- | ------------- | ------------------------------------- | ----------------- |
39
+ | id | string (UUID) | PK | 자동 생성 |
40
+ | bookId | string (UUID) | NOT NULL, FK→Book.id | - |
41
+ | userId | string (UUID) | NOT NULL, FK→User.id | - |
42
+ | borrowedAt | datetime | NOT NULL | 현재 시각 |
43
+ | dueAt | datetime | NOT NULL | borrowedAt + 14일 |
44
+ | returnedAt | datetime | nullable | NULL |
45
+
46
+ ### §7.2 알림 이력 [확정: 2026-05-01]
47
+
48
+ | 필드 | 타입 | 제약 | 기본값 |
49
+ | ------ | ------------- | ----------------------------------- | ------------ |
50
+ | id | string (UUID) | PK | 자동 생성 |
51
+ | userId | string (UUID) | NOT NULL, FK→User.id | - |
52
+ | rentalId | string (UUID) | NOT NULL, FK→Rental.id | - |
53
+ | type | enum | `RENTAL_DUE_REMINDER` | - |
54
+ | sentAt | datetime | NOT NULL | 현재 시각 |
55
+ | payload | json | - | `{}` |
@@ -0,0 +1,22 @@
1
+ // 기존 구현 - 카테고리 필드 없음 상태
2
+ export interface Book {
3
+ id: string;
4
+ title: string;
5
+ author: string;
6
+ publishedAt: Date;
7
+ }
8
+
9
+ export async function loadBooks(): Promise<Book[]> {
10
+ // 출판일 내림차순 로드
11
+ throw new Error("stub - 테스트 환경 전용");
12
+ }
13
+
14
+ export function searchBooks(keyword: string, books: Book[]): Book[] {
15
+ // 제목·저자 부분일치 (대소문자 무시)
16
+ const lower = keyword.toLowerCase();
17
+ return books.filter(
18
+ (b) =>
19
+ b.title.toLowerCase().includes(lower) ||
20
+ b.author.toLowerCase().includes(lower)
21
+ );
22
+ }
@@ -0,0 +1,57 @@
1
+ # 도서 관리 시스템 spec
2
+
3
+ ## §1 개요
4
+
5
+ 도서관 내부 시스템. 사서가 도서를 등록·조회.
6
+
7
+ ## §4 화면
8
+
9
+ | ID | 이름 | Actor | 장치 |
10
+ | ----- | -------- | ----- | ---- |
11
+ | §4.1 | 도서 목록 | 사서 | PC |
12
+
13
+ ### §4.1 도서 목록 [확정: 2026-05-15]
14
+
15
+ **Actor**: 사서
16
+ **관련 섹션**: §7.1 도서
17
+ **장치**: PC 웹
18
+
19
+ **기능 개요**:
20
+ - 등록된 도서 전체 목록 표시.
21
+ - 제목·저자·**카테고리**로 부분일치 검색 (대소문자 무시).
22
+
23
+ **와이어프레임**:
24
+ ```
25
+ [검색창: 제목/저자/카테고리] [등록]
26
+ +----------+----------+-----------+-----------+
27
+ | 제목 | 저자 | 카테고리 | 출판일 |
28
+ +----------+----------+-----------+-----------+
29
+ | ... | ... | ... | ... |
30
+ +----------+----------+-----------+-----------+
31
+ ```
32
+
33
+ **항목표**:
34
+
35
+ | 항목 | 타입 | 비고 |
36
+ | -------- | ------ | --------------------------------- |
37
+ | 제목 | text | §7.1.title |
38
+ | 저자 | text | §7.1.author |
39
+ | 카테고리 | text | §7.1.category |
40
+ | 출판일 | date | §7.1.publishedAt, YYYY-MM-DD 형식 |
41
+
42
+ **동작**:
43
+ - 진입 시 도서 전체를 출판일 내림차순으로 로드.
44
+ - 검색창 입력 시 제목·저자·카테고리 부분일치 필터링 (대소문자 무시).
45
+ - "등록" 클릭 시 등록 화면 (본 spec 범위 외).
46
+
47
+ ## §7 도메인 모델
48
+
49
+ ### §7.1 도서 [확정: 2026-05-15]
50
+
51
+ | 필드 | 타입 | 제약 | 기본값 |
52
+ | ----------- | ------------- | --------------------- | --------- |
53
+ | id | string (UUID) | PK | 자동 생성 |
54
+ | title | string | NOT NULL, 최대 200자 | - |
55
+ | author | string | NOT NULL, 최대 100자 | - |
56
+ | category | string | NOT NULL, 최대 50자 | `기타` |
57
+ | publishedAt | date | NOT NULL | - |
@@ -0,0 +1,58 @@
1
+ # 도서 대여 spec
2
+
3
+ ## §1 개요
4
+
5
+ 도서관 시스템 - 도서 대여 처리.
6
+
7
+ ## §4 화면
8
+
9
+ | ID | 이름 | Actor |
10
+ | ----- | -------------- | ----- |
11
+ | §4.1 | 도서 대여 처리 | 사서 |
12
+
13
+ ### §4.1 도서 대여 처리 [확정: 2026-05-15]
14
+
15
+ **Actor**: 사서
16
+ **관련 섹션**: §7.1 도서, §7.2 대여
17
+ **장치**: PC 웹
18
+
19
+ **기능 개요**:
20
+ - 도서 검색 후 사용자 지정해 대여 등록.
21
+
22
+ **와이어프레임**:
23
+ ```
24
+ [도서 검색] [선택]
25
+ [사용자 ID 입력] [대여]
26
+ ```
27
+
28
+ **항목표**:
29
+
30
+ | 항목 | 타입 | 비고 |
31
+ | ------------ | ------ | ---------------- |
32
+ | 도서 검색 | text | 제목·저자 검색 |
33
+ | 사용자 ID | text | - |
34
+
35
+ **동작**:
36
+ - 도서 검색 후 1건 선택.
37
+ - 사용자 ID 입력.
38
+ - "대여" 클릭 시 §7.2 대여 레코드 생성.
39
+ - **재고 부족 시 처리.**
40
+
41
+ ## §7 도메인 모델
42
+
43
+ ### §7.1 도서 [확정: 2026-05-15]
44
+
45
+ | 필드 | 타입 | 제약 |
46
+ | ---------- | ------------- | ------------- |
47
+ | id | string (UUID) | PK |
48
+ | title | string | NOT NULL |
49
+ | stockCount | int | NOT NULL, ≥ 0 |
50
+
51
+ ### §7.2 대여 [확정: 2026-05-15]
52
+
53
+ | 필드 | 타입 | 제약 |
54
+ | ---------- | ------------- | --------------------- |
55
+ | id | string (UUID) | PK |
56
+ | bookId | string (UUID) | NOT NULL, FK→Book.id |
57
+ | userId | string (UUID) | NOT NULL |
58
+ | borrowedAt | datetime | NOT NULL |
@@ -0,0 +1,52 @@
1
+ # 도서 관리 spec
2
+
3
+ ## §1 개요
4
+
5
+ 도서관 시스템 minimal.
6
+
7
+ ## §4 화면
8
+
9
+ | ID | 이름 | Actor |
10
+ | ----- | -------- | ----- |
11
+ | §4.1 | 도서 목록 | 사서 |
12
+ | §4.2 | 도서 등록 | 사서 |
13
+
14
+ ### §4.1 도서 목록 [확정: 2026-05-01]
15
+
16
+ **Actor**: 사서
17
+
18
+ **기능 개요**: 등록된 도서 전체 목록 표시.
19
+
20
+ **항목표**:
21
+
22
+ | 항목 | 타입 | 비고 |
23
+ | ------ | ---- | ----------- |
24
+ | 제목 | text | §7.1.title |
25
+ | 저자 | text | §7.1.author |
26
+
27
+ **동작**: 진입 시 전체 목록 로드.
28
+
29
+ ### §4.2 도서 등록 [확정: 2026-05-01]
30
+
31
+ **Actor**: 사서
32
+
33
+ **기능 개요**: 신규 도서 등록 폼.
34
+
35
+ **항목표**:
36
+
37
+ | 항목 | 타입 | 비고 |
38
+ | ---- | ---- | ----------- |
39
+ | 제목 | text | §7.1.title |
40
+ | 저자 | text | §7.1.author |
41
+
42
+ **동작**: 입력 후 "저장" 클릭 시 §7.1 레코드 생성.
43
+
44
+ ## §7 도메인 모델
45
+
46
+ ### §7.1 도서 [확정: 2026-05-01]
47
+
48
+ | 필드 | 타입 | 제약 |
49
+ | ------ | ------------- | -------- |
50
+ | id | string (UUID) | PK |
51
+ | title | string | NOT NULL |
52
+ | author | string | NOT NULL |
@@ -0,0 +1,10 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { CustomerListPage } from "./거래처-목록";
3
+
4
+ describe("거래처 목록", () => {
5
+ it("진입 시 거래처 전체를 로드", async () => {
6
+ const page = new CustomerListPage();
7
+ await page.onInit();
8
+ expect(page.customers).toBeDefined();
9
+ });
10
+ });
@@ -0,0 +1,11 @@
1
+ // §4.1 거래처 목록 (이미 풀구현)
2
+ import type { Customer } from "../../../../server/src/models/거래처";
3
+ import { loadCustomers } from "../../../../server/src/data-access/거래처-접근";
4
+
5
+ export class CustomerListPage {
6
+ customers: Customer[] = [];
7
+
8
+ async onInit() {
9
+ this.customers = await loadCustomers();
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ import type { Customer } from "../models/거래처";
2
+
3
+ export async function loadCustomers(): Promise<Customer[]> {
4
+ // 등록일 내림차순
5
+ return [];
6
+ }
7
+
8
+ export async function insertCustomer(
9
+ input: Omit<Customer, "id" | "createdAt">,
10
+ ): Promise<Customer> {
11
+ throw new Error("stub");
12
+ }
@@ -0,0 +1,8 @@
1
+ export interface Customer {
2
+ id: string;
3
+ name: string;
4
+ businessNumber: string;
5
+ manager: string;
6
+ contact: string;
7
+ createdAt: Date;
8
+ }
@@ -0,0 +1,77 @@
1
+ # 거래처 관리 시스템 spec
2
+
3
+ ## §1 개요
4
+
5
+ 영업담당이 거래처를 등록·조회한다.
6
+
7
+ ## §4 화면
8
+
9
+ | ID | 이름 | Actor | 장치 |
10
+ | ----- | ----------- | -------- | ---- |
11
+ | §4.1 | 거래처 목록 | 영업담당 | PC |
12
+ | §4.2 | 거래처 등록 | 영업담당 | PC |
13
+
14
+ ### §4.1 거래처 목록 [확정: 2026-05-01, 구현: 2026-05-10]
15
+
16
+ **Actor**: 영업담당
17
+ **관련 섹션**: §7.1 거래처
18
+ **장치**: PC 웹
19
+
20
+ **기능 개요**:
21
+
22
+ - 등록된 거래처 전체 목록 표시.
23
+
24
+ **동작**:
25
+
26
+ - 진입 시 거래처 전체를 등록일 내림차순 로드.
27
+
28
+ ### §4.2 거래처 등록 [확정: 2026-05-15]
29
+
30
+ **Actor**: 영업담당
31
+ **관련 섹션**: §7.1 거래처
32
+ **장치**: PC 웹
33
+
34
+ **기능 개요**:
35
+
36
+ - 신규 거래처 등록 폼.
37
+
38
+ **와이어프레임**:
39
+
40
+ ```
41
+ +----------------------------+
42
+ | 거래처명 (필수) |
43
+ | 사업자번호 |
44
+ | 담당자 |
45
+ | 연락처 |
46
+ | |
47
+ | [등록] [취소] |
48
+ +----------------------------+
49
+ ```
50
+
51
+ **항목표**:
52
+
53
+ | 항목 | 타입 | 비고 |
54
+ | ---------- | ---- | --------------------- |
55
+ | 거래처명 | text | §7.1.name, NOT NULL |
56
+ | 사업자번호 | text | §7.1.businessNumber |
57
+ | 담당자 | text | §7.1.manager |
58
+ | 연락처 | text | §7.1.contact |
59
+
60
+ **동작**:
61
+
62
+ - "등록" 클릭 시 §7.1 거래처 저장 (`createdAt` 자동 = 현재 시각).
63
+ - 거래처명 미입력 시 등록 차단.
64
+ - "취소" 클릭 시 입력 폐기 후 §4.1 거래처 목록으로 이동.
65
+
66
+ ## §7 도메인 모델
67
+
68
+ ### §7.1 거래처 [확정: 2026-05-01]
69
+
70
+ | 필드 | 타입 | 제약 | 기본값 |
71
+ | -------------- | ------------- | --------------------- | --------- |
72
+ | id | string (UUID) | PK | 자동 생성 |
73
+ | name | string | NOT NULL, 최대 100자 | - |
74
+ | businessNumber | string | 10자리 숫자 | - |
75
+ | manager | string | 최대 50자 | - |
76
+ | contact | string | 최대 30자 | - |
77
+ | createdAt | datetime | NOT NULL | 현재 시각 |
@@ -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: 초안 작성
@@ -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: 초안 작성
@@ -1,3 +1,6 @@
1
- {"id": "basic-single-r-001", "input": "/sd-impl REQ-001 구현해줘", "rubric": [".specs/260503143025/REQ-001-입고지시서긴급표시/impl.md 파일이 생성되었는가?", "impl.md 본문에 '## R 단위 구현 결과' 섹션 헤더가 포함되어 있는가?", "impl.md 본문에 '상태: 완료' 표기가 1개 이상 포함되어 있는가? (R1 완료)", "src/pages/ 디렉토리에 .tsx 확장자 파일이 1 이상 새로 생성되었는가? (입고지시서 페이지 신설)", "에이전트의 마지막 텍스트 응답에 'REQ-' 또는 'R1' 형태의 ID 매핑이 1개 이상 포함되어 있고, '구현'/'추가'/'변경' 같은 단어가 함께 등장하는가? (고객 친화적 보고 단계 도달)"], "fixture": "basic-single-r"}
2
- {"id": "multi-r-001", "input": "/sd-impl REQ-001 구현해줘", "rubric": [".specs/260503143025/REQ-001-거래처목록/impl.md 파일이 생성되었는가?", "impl.md 본문에 'R1', 'R2', 'R3' 3R ID가 모두 포함되어 있는가?", "impl.md 본문에 '상태: 완료' 표기가 3회 이상 포함되어 있는가? (모든 R 완료)", "src/pages/ 디렉토리에 .tsx 확장자 파일이 1개 이상 새로 생성되었는가?", "src/lib/ 또는 src/data/ 디렉토리에 파일이 1개 이상 새로 생성되었는가? (필터/페이지네이션/데이터 로직 분리)", "에이전트의 마지막 텍스트 응답에 'REQ-' 또는 'R1' 형태의 ID 매핑이 1 이상 포함되어 있고, '구현'/'추가'/'변경' 같은 단어가 함께 등장하는가?"], "fixture": "multi-r"}
3
- {"id": "with-test-file-001", "input": "/sd-impl REQ-001 구현해줘", "rubric": [".specs/260503143025/REQ-001-할인계산/impl.md 파일이 생성되었는가?", "src/lib/ 디렉토리에 'discount' 키워드가 포함된 파일이 1개 이상 새로 생성되었는가? (구현 파일)", "src/lib/ 또는 하위에 파일명에 'test' 또는 'spec' 키워드가 포함된 파일이 1개 이상 새로 생성되었는가? (TDD 모드 - 테스트 파일 필수)", "impl.md 본문에 '모드: TDD' 또는 'TDD' 키워드가 포함되어 있는가? (TDD 모드 적용 기록)", "에이전트의 마지막 텍스트 응답에 'REQ-' 또는 'R1' 형태의 ID 매핑이 1개 이상 포함되어 있고, '구현'/'추가'/'변경' 같은 단어가 함께 등장하는가?"], "fixture": "with-test-file"}
1
+ {"id": "case-001-new-screen", "input": "/sd-impl spec.md §4.1 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-001-new-screen", "rubric": ["assistant 응답에 spec 항목들을 분해한 표가 마크다운 형식으로 출력되었고 컬럼이 5개 이상이며 데이터 행이 1개 이상 채워졌는가", "assistant 응답에 4계층 어휘 (도메인 모델·데이터 접근·본체·테스트 또는 한국어 동의어 모델·DB접근·UI/화면·테스트 등) 중 최소 3종 이상이 등장하는가", "events 에 코드베이스 탐색 흔적 (Glob·Grep 호출 또는 Bash 의 ls/find/dir 동등 명령) 1 이상 발생했는가", "events 에 Agent 도구 호출이 1회 이상 발생했는가 (sd-impl 6단계 subagent 위탁)", "subagent 호출 이후 assistant 응답에 spec 대조 결과 (차이 항목 분류 또는 '차이 없음' 통과 표기) 등장하는가", "최종 tree spec.md 파일이 손실되지 않고 보존되는가"]}
2
+ {"id": "case-002-auto-process", "input": "/sd-impl spec.md §5.1 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-002-auto-process", "rubric": ["assistant 응답에 spec 항목들을 분해한 표가 마크다운 표 형식으로 출력되었고 컬럼이 5이상이며 데이터 행이 1개 이상 채워졌는가", "분해 표에 §5.1 핵심 요소 (트리거·처리 단계·알림 내용·중복 발송 방지) 최소 2종 이상이 항목으로 분해되어 들어갔는가", "assistant 응답에 4계층 어휘 (도메인 모델·데이터 접근·본체·테스트 또는 한국어 동의어 모델·DB접근·처리 로직·테스트 등) 최소 3종 이상이 등장하는가", "events 코드베이스 탐색 흔적 (Glob·Grep 호출 또는 Bash ls/find/dir 동등 명령) 이 1 이상 발생했는가", "events Agent 도구 호출이 1회 이상 발생했는가 (sd-impl 6단계 subagent 위탁)"]}
3
+ {"id": "case-003-update-screen", "input": "/sd-impl spec.md §4.1 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-003-update-screen", "rubric": ["assistant 응답의 분해 '현재 코드 상태' 또는 동등 컬럼 (코드 상태·기존 코드 등) 비어있지 않고 기존 stub 존재가 인지된 사실 진술로 채워졌는가 (모두 '없음·미구현' 류로만 채워지면 FAIL)", "분해 또는 판정 결과에 카테고리(category) 필드가 현재 코드에 없거나 불일치하는 변경 대상으로 식별되었는가", "최종 tree 에 기존 stub 파일 packages/client/src/pages/book-list.ts 존재하는가 (보존 또는 갱신, 삭제 X)"]}
4
+ {"id": "case-004-ambiguous-spec", "input": "/sd-impl spec.md §4.1 (평가 환경: 8단계 시연 스킵, 9단계 완료 보고로 종료. dev 서버·외부 프로세스 자체 실행 금지. spec 모호/미정의 발견 시 임의 채움 절대 금지 — spec 본문에 [OPEN] 마커만 박고 보고 후 즉시 종료.)", "fixture": "case-004-ambiguous-spec", "rubric": ["최종 tree 의 spec.md 본문에 '재고' 또는 'stock' 관련 모호 항목에 [OPEN] 마커가 박혀있는가 (input 지시 준수)", "spec.md 본문에 '재고 부족 시 차단/에러/대기열/알림' 등의 구체 처리 방식이 자동답변으로 임의 추가되지 않았는가 (input 의 임의 채움 금지 지시 준수)"]}
5
+ {"id": "case-005-id-mismatch", "input": "/sd-impl spec.md §4.99 (평가 환경: 8단계 시연 스킵, 9단계 완료 보고로 종료. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-005-id-mismatch", "rubric": ["assistant 응답에 spec.md 의 §4 화면 목록 후보가 사용자에게 제시되었는가 (표 또는 목록 형태)", "사용자에게 식별자 확정을 요청하는 질문 표현이 응답에 등장하는가"]}
6
+ {"id": "case-006-with-reference-units", "input": "/sd-impl spec.md §4.2 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-006-with-reference-units", "rubric": ["assistant 응답에 spec 항목들을 분해한 표가 마크다운 표 형식으로 출력되었고 컬럼이 5개 이상이며 데이터 행이 1개 이상 채워졌는가", "assistant 응답에 4계층 어휘 (도메인 모델·데이터 접근·본체·테스트 또는 한국어 동의어 모델·DB접근·UI/화면·테스트 등) 중 최소 3종 이상이 등장하는가", "assistant 응답 또는 events 에 §4.1 거래처 목록 또는 packages/client/src/pages/거래처 경로가 기준 단위 후보로 식별·언급되는 흐름이 등장하는가", "events 에 packages/client/src/pages/거래처/ 또는 packages/server/src/ 하위 풀구현 stub 파일 중 1개 이상에 대한 읽기 흔적 (Read 호출 또는 Bash 의 cat 등 동등 명령) 이 발생했는가", "최종 tree 에 spec.md 및 풀구현 stub 4종 (거래처-목록.ts, 거래처-목록.test.ts, 거래처.ts, 거래처-접근.ts) 이 손실 없이 보존되었는가"]}