sdd-tool 1.2.2 → 1.2.4

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/dist/cli/index.js CHANGED
@@ -1613,12 +1613,10 @@ sdd validate --strict # \uACBD\uACE0\uB3C4 \uC5D0\uB7EC\uB85C \uCC98\uB9AC
1613
1613
  `;
1614
1614
  }
1615
1615
 
1616
- // src/generators/claude-commands.ts
1617
- function generateClaudeCommands() {
1618
- return [
1619
- {
1620
- name: "sdd.start",
1621
- content: `SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4 (\uD1B5\uD569 \uC9C4\uC785\uC810).
1616
+ // src/generators/claude-commands/core/start.ts
1617
+ var startCommand = {
1618
+ name: "sdd.start",
1619
+ content: `SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4 (\uD1B5\uD569 \uC9C4\uC785\uC810).
1622
1620
 
1623
1621
  ## \uAC1C\uC694
1624
1622
 
@@ -1717,10 +1715,12 @@ sdd start --workflow validate
1717
1715
  | sdd-validate.yml | PR/\uD478\uC2DC \uC2DC \uC2A4\uD399 \uC790\uB3D9 \uAC80\uC99D |
1718
1716
  | sdd-labeler.yml | PR\uC5D0 \uB3C4\uBA54\uC778\uBCC4 \uB77C\uBCA8 \uC790\uB3D9 \uCD94\uAC00 |
1719
1717
  `
1720
- },
1721
- {
1722
- name: "sdd.new",
1723
- content: `\uC0C8\uB85C\uC6B4 \uAE30\uB2A5 \uBA85\uC138\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
1718
+ };
1719
+
1720
+ // src/generators/claude-commands/core/new.ts
1721
+ var newCommand = {
1722
+ name: "sdd.new",
1723
+ content: `\uC0C8\uB85C\uC6B4 \uAE30\uB2A5 \uBA85\uC138\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
1724
1724
 
1725
1725
  ## \uC9C0\uC2DC\uC0AC\uD56D
1726
1726
 
@@ -1750,10 +1750,12 @@ sdd start --workflow validate
1750
1750
 
1751
1751
  \uC644\uB8CC \uD6C4 \`sdd validate\`\uB85C \uBA85\uC138\uB97C \uAC80\uC99D\uD558\uC138\uC694.
1752
1752
  `
1753
- },
1754
- {
1755
- name: "sdd.plan",
1756
- content: `\uAE30\uB2A5 \uBA85\uC138\uC5D0 \uB300\uD55C \uAD6C\uD604 \uACC4\uD68D\uC744 \uC791\uC131\uD569\uB2C8\uB2E4.
1753
+ };
1754
+
1755
+ // src/generators/claude-commands/core/plan.ts
1756
+ var planCommand = {
1757
+ name: "sdd.plan",
1758
+ content: `\uAE30\uB2A5 \uBA85\uC138\uC5D0 \uB300\uD55C \uAD6C\uD604 \uACC4\uD68D\uC744 \uC791\uC131\uD569\uB2C8\uB2E4.
1757
1759
 
1758
1760
  ## \uC9C0\uC2DC\uC0AC\uD56D
1759
1761
 
@@ -1789,10 +1791,12 @@ sdd start --workflow validate
1789
1791
 
1790
1792
  \uC644\uB8CC \uD6C4 \`/sdd.tasks\`\uB85C \uC791\uC5C5\uC744 \uBD84\uD574\uD558\uC138\uC694.
1791
1793
  `
1792
- },
1793
- {
1794
- name: "sdd.tasks",
1795
- content: `\uAD6C\uD604 \uACC4\uD68D\uC744 \uC2E4\uD589 \uAC00\uB2A5\uD55C \uC791\uC5C5\uC73C\uB85C \uBD84\uD574\uD569\uB2C8\uB2E4.
1794
+ };
1795
+
1796
+ // src/generators/claude-commands/core/tasks.ts
1797
+ var tasksCommand = {
1798
+ name: "sdd.tasks",
1799
+ content: `\uAD6C\uD604 \uACC4\uD68D\uC744 \uC2E4\uD589 \uAC00\uB2A5\uD55C \uC791\uC5C5\uC73C\uB85C \uBD84\uD574\uD569\uB2C8\uB2E4.
1796
1800
 
1797
1801
  ## \uC9C0\uC2DC\uC0AC\uD56D
1798
1802
 
@@ -1826,10 +1830,12 @@ sdd start --workflow validate
1826
1830
 
1827
1831
  \uC644\uB8CC \uD6C4 \`/sdd.implement\`\uB85C \uAD6C\uD604\uC744 \uC2DC\uC791\uD558\uC138\uC694.
1828
1832
  `
1829
- },
1830
- {
1831
- name: "sdd.implement",
1832
- content: `\uC791\uC5C5 \uBAA9\uB85D\uC744 \uAE30\uBC18\uC73C\uB85C \uC21C\uCC28\uC801\uC73C\uB85C \uAD6C\uD604\uD569\uB2C8\uB2E4.
1833
+ };
1834
+
1835
+ // src/generators/claude-commands/core/implement.ts
1836
+ var implementCommand = {
1837
+ name: "sdd.implement",
1838
+ content: `\uC791\uC5C5 \uBAA9\uB85D\uC744 \uAE30\uBC18\uC73C\uB85C \uC21C\uCC28\uC801\uC73C\uB85C \uAD6C\uD604\uD569\uB2C8\uB2E4.
1833
1839
 
1834
1840
  ## \uC9C0\uC2DC\uC0AC\uD56D
1835
1841
 
@@ -1856,13 +1862,15 @@ sdd start --workflow validate
1856
1862
 
1857
1863
  \uBAA8\uB4E0 \uC791\uC5C5\uC774 \uC644\uB8CC\uB418\uBA74:
1858
1864
  1. \`sdd validate\`\uB85C \uCD5C\uC885 \uAC80\uC99D
1859
- 2. PR \uC0DD\uC131 \uB610\uB294 \uBA38\uC9C0
1860
- 3. \uD544\uC694\uC2DC \`/sdd.archive\`\uB85C \uC544\uCE74\uC774\uBE0C
1865
+ 2. \uCEE4\uBC0B \uD6C4 PR \uC0DD\uC131 \uB610\uB294 \uBA38\uC9C0
1866
+ 3. \`/sdd.status\`\uB85C \uC804\uCCB4 \uC9C4\uD589 \uC0C1\uD669 \uD655\uC778
1861
1867
  `
1862
- },
1863
- {
1864
- name: "sdd.validate",
1865
- content: `\uC2A4\uD399 \uD30C\uC77C\uC758 \uD615\uC2DD\uACFC \uADDC\uCE59\uC744 \uAC80\uC99D\uD569\uB2C8\uB2E4.
1868
+ };
1869
+
1870
+ // src/generators/claude-commands/core/validate.ts
1871
+ var validateCommand = {
1872
+ name: "sdd.validate",
1873
+ content: `\uC2A4\uD399 \uD30C\uC77C\uC758 \uD615\uC2DD\uACFC \uADDC\uCE59\uC744 \uAC80\uC99D\uD569\uB2C8\uB2E4.
1866
1874
 
1867
1875
  ## \uC9C0\uC2DC\uC0AC\uD56D
1868
1876
 
@@ -1892,92 +1900,26 @@ sdd validate --strict
1892
1900
 
1893
1901
  \uAC80\uC99D \uC2E4\uD328 \uC2DC \uD574\uB2F9 \uD30C\uC77C\uC744 \uC5F4\uC5B4 \uC624\uB958\uB97C \uC218\uC815\uD558\uC138\uC694.
1894
1902
  \uAC01 \uC624\uB958 \uBA54\uC2DC\uC9C0\uC5D0\uB294 \uD574\uACB0 \uBC29\uBC95\uC774 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
1895
- `
1896
- },
1897
- {
1898
- name: "sdd.status",
1899
- content: `\uD604\uC7AC SDD \uD504\uB85C\uC81D\uD2B8 \uC0C1\uD0DC\uB97C \uD655\uC778\uD569\uB2C8\uB2E4.
1900
-
1901
- ## \uC9C0\uC2DC\uC0AC\uD56D
1902
-
1903
- \`sdd status\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC5EC \uD504\uB85C\uC81D\uD2B8 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC138\uC694.
1904
-
1905
- ## \uD655\uC778 \uD56D\uBAA9
1906
1903
 
1907
- - \uD504\uB85C\uC81D\uD2B8 \uAD6C\uC870 (constitution.md, AGENTS.md \uC874\uC7AC \uC5EC\uBD80)
1908
- - \uAE30\uB2A5 \uBAA9\uB85D \uBC0F \uC0C1\uD0DC
1909
- - \uD604\uC7AC Git \uBE0C\uB79C\uCE58
1910
- - \uB2E4\uC74C \uB2E8\uACC4 \uC81C\uC548
1911
-
1912
- ## \uCD94\uAC00 \uBA85\uB839\uC5B4
1913
-
1914
- \`\`\`bash
1915
- # \uD504\uB85C\uC81D\uD2B8 \uC694\uC57D
1916
- sdd list
1904
+ ## \uB2E4\uC74C \uB2E8\uACC4
1917
1905
 
1918
- # \uAE30\uB2A5 \uBAA9\uB85D
1919
- sdd list features
1906
+ \uAC80\uC99D \uACB0\uACFC\uC5D0 \uB530\uB77C:
1920
1907
 
1921
- # \uC2A4\uD399 \uD30C\uC77C \uBAA9\uB85D
1922
- sdd list specs
1908
+ - **\uBAA8\uB450 \uD1B5\uACFC**: \uCEE4\uBC0B \uD6C4 PR \uC0DD\uC131 \uB610\uB294 \uBA38\uC9C0
1909
+ - **\uC624\uB958 \uBC1C\uC0DD**: \uC624\uB958 \uC218\uC815 \uD6C4 \`sdd validate\` \uC7AC\uC2E4\uD589
1910
+ - **\uACBD\uACE0\uB9CC \uBC1C\uC0DD**: \uACBD\uACE0 \uAC80\uD1A0 \uD6C4 \uC9C4\uD589 \uC5EC\uBD80 \uACB0\uC815
1923
1911
 
1924
- # JSON \uD615\uC2DD \uCD9C\uB825
1925
- sdd status --json
1926
- \`\`\`
1912
+ \uAC80\uC99D \uD1B5\uACFC \uD6C4 \uAD8C\uC7A5 \uC6CC\uD06C\uD50C\uB85C\uC6B0:
1913
+ 1. \`git add .sdd/\` - \uC2A4\uD399 \uBCC0\uACBD \uC2A4\uD14C\uC774\uC9D5
1914
+ 2. \`git commit -m "spec: <\uC124\uBA85>"\` - \uCEE4\uBC0B
1915
+ 3. PR \uC0DD\uC131 \uBC0F \uB9AC\uBDF0 \uC694\uCCAD
1927
1916
  `
1928
- },
1929
- {
1930
- name: "sdd.change",
1931
- content: `\uAE30\uC874 \uC2A4\uD399\uC5D0 \uB300\uD55C \uBCC0\uACBD\uC744 \uC81C\uC548\uD569\uB2C8\uB2E4.
1932
-
1933
- ## \uC9C0\uC2DC\uC0AC\uD56D
1934
-
1935
- 1. \uBCC0\uACBD\uC774 \uD544\uC694\uD55C \uC2A4\uD399\uC744 \uD655\uC778\uD558\uC138\uC694
1936
- 2. \`.sdd/changes/\` \uB514\uB809\uD1A0\uB9AC\uC5D0 \uBCC0\uACBD \uC81C\uC548\uC11C\uB97C \uC791\uC131\uD558\uC138\uC694
1937
- 3. \uBCC0\uACBD \uC720\uD615(ADDED, MODIFIED, REMOVED)\uC744 \uBA85\uC2DC\uD558\uC138\uC694
1938
-
1939
- ## \uBCC0\uACBD \uC81C\uC548\uC11C \uAD6C\uC870
1940
-
1941
- \`\`\`markdown
1942
- ---
1943
- id: CHG-001
1944
- status: draft
1945
- created: YYYY-MM-DD
1946
- ---
1947
-
1948
- # \uBCC0\uACBD \uC81C\uC548: [\uC81C\uBAA9]
1949
-
1950
- ## \uBC30\uACBD
1951
- \uC65C \uC774 \uBCC0\uACBD\uC774 \uD544\uC694\uD55C\uAC00?
1952
-
1953
- ## \uC601\uD5A5 \uBC94\uC704
1954
- ### \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399
1955
- - \`specs/user-auth/spec.md\`
1956
-
1957
- ### \uBCC0\uACBD \uC720\uD615
1958
- - [x] \uC218\uC815 (MODIFIED)
1959
-
1960
- ## \uBCC0\uACBD \uB0B4\uC6A9
1961
-
1962
- ### MODIFIED
1963
-
1964
- #### Before
1965
- \`\`\`markdown
1966
- \uAE30\uC874 \uB0B4\uC6A9
1967
- \`\`\`
1968
-
1969
- #### After
1970
- \`\`\`markdown
1971
- \uBCC0\uACBD\uB41C \uB0B4\uC6A9
1972
- \`\`\`
1973
- \`\`\`
1917
+ };
1974
1918
 
1975
- \uAC80\uD1A0 \uD6C4 \uC2B9\uC778\uB418\uBA74 \uC2A4\uD399\uC5D0 \uBC18\uC601\uD558\uC138\uC694.
1976
- `
1977
- },
1978
- {
1979
- name: "sdd.constitution",
1980
- content: `\uD504\uB85C\uC81D\uD2B8 Constitution(\uD5CC\uBC95)\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4.
1919
+ // src/generators/claude-commands/management/constitution.ts
1920
+ var constitutionCommand = {
1921
+ name: "sdd.constitution",
1922
+ content: `\uD504\uB85C\uC81D\uD2B8 Constitution(\uD5CC\uBC95)\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4.
1981
1923
 
1982
1924
  ## \uAC1C\uC694
1983
1925
 
@@ -2044,374 +1986,825 @@ sdd constitution history # \uBCC0\uACBD \uC774\uB825 \uC870\uD68C
2044
1986
  sdd constitution bump # \uBC84\uC804 \uC5C5\uB370\uC774\uD2B8
2045
1987
  \`\`\`
2046
1988
  `
2047
- },
2048
- {
2049
- name: "sdd.research",
2050
- content: `\uAE30\uC220 \uB9AC\uC11C\uCE58 \uBB38\uC11C\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
2051
-
2052
- ## \uAC1C\uC694
1989
+ };
2053
1990
 
2054
- \uAE30\uC220\uC801 \uACB0\uC815\uC774\uB098 \uC544\uD0A4\uD14D\uCC98 \uC120\uD0DD \uC804\uC5D0 \uD544\uC694\uD55C \uB9AC\uC11C\uCE58\uB97C \uBB38\uC11C\uD654\uD569\uB2C8\uB2E4.
2055
- \uB9AC\uC11C\uCE58 \uACB0\uACFC\uB294 plan.md\uB098 \uC2A4\uD399\uC758 \uADFC\uAC70\uB85C \uD65C\uC6A9\uB429\uB2C8\uB2E4.
1991
+ // src/generators/claude-commands/management/change.ts
1992
+ var changeCommand = {
1993
+ name: "sdd.change",
1994
+ content: `\uAE30\uC874 \uC2A4\uD399\uC5D0 \uB300\uD55C \uBCC0\uACBD\uC744 \uC81C\uC548\uD569\uB2C8\uB2E4.
2056
1995
 
2057
1996
  ## \uC9C0\uC2DC\uC0AC\uD56D
2058
1997
 
2059
- 1. \uB9AC\uC11C\uCE58 \uC8FC\uC81C\uC640 \uBAA9\uC801\uC744 \uBA85\uD655\uD788 \uC815\uC758\uD558\uC138\uC694
2060
- 2. \uBE44\uAD50\uD560 \uC635\uC158\uB4E4\uC744 \uB098\uC5F4\uD558\uC138\uC694
2061
- 3. \uAC01 \uC635\uC158\uC758 \uC7A5\uB2E8\uC810\uC744 \uBD84\uC11D\uD558\uC138\uC694
2062
- 4. \uAD8C\uC7A5\uC0AC\uD56D\uC744 \uB3C4\uCD9C\uD558\uC138\uC694
1998
+ 1. \uBCC0\uACBD\uC774 \uD544\uC694\uD55C \uC2A4\uD399\uC744 \uD655\uC778\uD558\uC138\uC694
1999
+ 2. \`.sdd/changes/\` \uB514\uB809\uD1A0\uB9AC\uC5D0 \uBCC0\uACBD \uC81C\uC548\uC11C\uB97C \uC791\uC131\uD558\uC138\uC694
2000
+ 3. \uBCC0\uACBD \uC720\uD615(ADDED, MODIFIED, REMOVED)\uC744 \uBA85\uC2DC\uD558\uC138\uC694
2063
2001
 
2064
- ## \uB9AC\uC11C\uCE58 \uD15C\uD50C\uB9BF
2002
+ ## \uBCC0\uACBD \uC81C\uC548\uC11C \uAD6C\uC870
2065
2003
 
2066
2004
  \`\`\`markdown
2067
- # \uB9AC\uC11C\uCE58: [\uC8FC\uC81C]
2005
+ ---
2006
+ id: CHG-001
2007
+ status: draft
2008
+ created: YYYY-MM-DD
2009
+ ---
2068
2010
 
2069
- > \uC791\uC131\uC77C: YYYY-MM-DD
2070
- > \uC0C1\uD0DC: \uC9C4\uD589\uC911/\uC644\uB8CC
2011
+ # \uBCC0\uACBD \uC81C\uC548: [\uC81C\uBAA9]
2071
2012
 
2072
2013
  ## \uBC30\uACBD
2014
+ \uC65C \uC774 \uBCC0\uACBD\uC774 \uD544\uC694\uD55C\uAC00?
2073
2015
 
2074
- \uC65C \uC774 \uB9AC\uC11C\uCE58\uAC00 \uD544\uC694\uD55C\uAC00?
2016
+ ## \uC601\uD5A5 \uBC94\uC704
2017
+ ### \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399
2018
+ - \`specs/user-auth/spec.md\`
2075
2019
 
2076
- ## \uBE44\uAD50 \uB300\uC0C1
2020
+ ### \uBCC0\uACBD \uC720\uD615
2021
+ - [x] \uC218\uC815 (MODIFIED)
2077
2022
 
2078
- ### \uC635\uC158 A: [\uC774\uB984]
2023
+ ## \uBCC0\uACBD \uB0B4\uC6A9
2079
2024
 
2080
- **\uC7A5\uC810:**
2081
- - ...
2025
+ ### MODIFIED
2082
2026
 
2083
- **\uB2E8\uC810:**
2084
- - ...
2027
+ #### Before
2028
+ \`\`\`markdown
2029
+ \uAE30\uC874 \uB0B4\uC6A9
2030
+ \`\`\`
2085
2031
 
2086
- **\uC801\uC6A9 \uC0AC\uB840:**
2087
- - ...
2032
+ #### After
2033
+ \`\`\`markdown
2034
+ \uBCC0\uACBD\uB41C \uB0B4\uC6A9
2035
+ \`\`\`
2036
+ \`\`\`
2088
2037
 
2089
- ### \uC635\uC158 B: [\uC774\uB984]
2038
+ \uAC80\uD1A0 \uD6C4 \uC2B9\uC778\uB418\uBA74 \uC2A4\uD399\uC5D0 \uBC18\uC601\uD558\uC138\uC694.
2039
+ `
2040
+ };
2090
2041
 
2091
- ...
2042
+ // src/generators/claude-commands/management/status.ts
2043
+ var statusCommand = {
2044
+ name: "sdd.status",
2045
+ content: `\uD604\uC7AC SDD \uD504\uB85C\uC81D\uD2B8 \uC0C1\uD0DC\uB97C \uD655\uC778\uD569\uB2C8\uB2E4.
2092
2046
 
2093
- ## \uBE44\uAD50\uD45C
2047
+ ## \uC9C0\uC2DC\uC0AC\uD56D
2094
2048
 
2095
- | \uAE30\uC900 | \uC635\uC158 A | \uC635\uC158 B |
2096
- |------|--------|--------|
2097
- | \uC131\uB2A5 | ... | ... |
2098
- | \uD559\uC2B5 \uACE1\uC120 | ... | ... |
2099
- | \uCEE4\uBBA4\uB2C8\uD2F0 | ... | ... |
2049
+ \`sdd status\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC5EC \uD504\uB85C\uC81D\uD2B8 \uC0C1\uD0DC\uB97C \uD655\uC778\uD558\uC138\uC694.
2100
2050
 
2101
- ## \uACB0\uB860
2051
+ ## \uD655\uC778 \uD56D\uBAA9
2102
2052
 
2103
- **\uAD8C\uC7A5\uC0AC\uD56D:** \uC635\uC158 X
2053
+ - \uD504\uB85C\uC81D\uD2B8 \uAD6C\uC870 (constitution.md, AGENTS.md \uC874\uC7AC \uC5EC\uBD80)
2054
+ - \uAE30\uB2A5 \uBAA9\uB85D \uBC0F \uC0C1\uD0DC
2055
+ - \uD604\uC7AC Git \uBE0C\uB79C\uCE58
2056
+ - \uB2E4\uC74C \uB2E8\uACC4 \uC81C\uC548
2104
2057
 
2105
- **\uADFC\uAC70:**
2106
- 1. ...
2107
- 2. ...
2058
+ ## \uCD94\uAC00 \uBA85\uB839\uC5B4
2108
2059
 
2109
- ## \uCC38\uACE0 \uC790\uB8CC
2060
+ \`\`\`bash
2061
+ # \uD504\uB85C\uC81D\uD2B8 \uC694\uC57D
2062
+ sdd list
2110
2063
 
2111
- - [\uB9C1\uD06C1]
2112
- - [\uB9C1\uD06C2]
2113
- \`\`\`
2064
+ # \uAE30\uB2A5 \uBAA9\uB85D
2065
+ sdd list features
2114
2066
 
2115
- ## \uC800\uC7A5 \uC704\uCE58
2067
+ # \uC2A4\uD399 \uD30C\uC77C \uBAA9\uB85D
2068
+ sdd list specs
2116
2069
 
2117
- \uB9AC\uC11C\uCE58 \uBB38\uC11C\uB294 \`.sdd/research/\` \uB610\uB294 \uD574\uB2F9 \uAE30\uB2A5 \uB514\uB809\uD1A0\uB9AC\uC5D0 \uC800\uC7A5\uD558\uC138\uC694.
2070
+ # JSON \uD615\uC2DD \uCD9C\uB825
2071
+ sdd status --json
2072
+ \`\`\`
2118
2073
  `
2119
- },
2120
- {
2121
- name: "sdd.data-model",
2122
- content: `\uB370\uC774\uD130 \uBAA8\uB378 \uBB38\uC11C\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
2074
+ };
2075
+
2076
+ // src/generators/claude-commands/analysis/analyze.ts
2077
+ var analyzeCommand = {
2078
+ name: "sdd.analyze",
2079
+ content: `\uC0AC\uC6A9\uC790 \uC694\uCCAD\uC744 \uBD84\uC11D\uD558\uC5EC \uC801\uC808\uD55C \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
2123
2080
 
2124
2081
  ## \uAC1C\uC694
2125
2082
 
2126
- \uC2DC\uC2A4\uD15C\uC758 \uB370\uC774\uD130 \uAD6C\uC870\uC640 \uAD00\uACC4\uB97C \uC815\uC758\uD569\uB2C8\uB2E4.
2127
- \uC774 \uBB38\uC11C\uB294 \uAD6C\uD604\uC758 \uAE30\uBC18\uC774 \uB418\uBA70, \uBCC0\uACBD \uC2DC \uC601\uD5A5\uB3C4 \uBD84\uC11D\uC5D0 \uD65C\uC6A9\uB429\uB2C8\uB2E4.
2083
+ \uC790\uC5F0\uC5B4 \uC694\uCCAD\uC744 \uBD84\uC11D\uD558\uC5EC \uC791\uC5C5 \uADDC\uBAA8\uB97C \uD310\uB2E8\uD558\uACE0, \uC801\uC808\uD55C SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
2128
2084
 
2129
- ## \uC9C0\uC2DC\uC0AC\uD56D
2085
+ ## \uBD84\uC11D \uAE30\uC900
2130
2086
 
2131
- 1. \uD575\uC2EC \uC5D4\uD2F0\uD2F0\uB97C \uC815\uC758\uD558\uC138\uC694
2132
- 2. \uAC01 \uC5D4\uD2F0\uD2F0\uC758 \uC18D\uC131\uC744 \uB098\uC5F4\uD558\uC138\uC694
2133
- 3. \uC5D4\uD2F0\uD2F0 \uAC04 \uAD00\uACC4\uB97C \uC815\uC758\uD558\uC138\uC694
2134
- 4. ERD\uB97C Mermaid\uB85C \uC791\uC131\uD558\uC138\uC694
2087
+ ### \uC791\uC5C5 \uADDC\uBAA8 \uD310\uB2E8
2135
2088
 
2136
- ## \uB370\uC774\uD130 \uBAA8\uB378 \uD15C\uD50C\uB9BF
2089
+ **\uC18C\uADDC\uBAA8 (Small)**
2090
+ - \uD0A4\uC6CC\uB4DC: \uC218\uC815, \uBCC0\uACBD, \uBC84\uADF8, \uC624\uD0C0, \uCD94\uAC00(\uB2E8\uC21C)
2091
+ - \uC6CC\uD06C\uD50C\uB85C\uC6B0: change \uB610\uB294 \uC9C1\uC811 \uC218\uC815
2137
2092
 
2138
- \`\`\`markdown
2139
- # \uB370\uC774\uD130 \uBAA8\uB378: [\uC2DC\uC2A4\uD15C\uBA85]
2093
+ **\uC911\uADDC\uBAA8 (Medium)**
2094
+ - \uD0A4\uC6CC\uB4DC: \uAE30\uB2A5 \uCD94\uAC00, \uAC1C\uC120, \uD655\uC7A5, \uB9AC\uD329\uD130\uB9C1
2095
+ - \uC6CC\uD06C\uD50C\uB85C\uC6B0: new \u2192 plan \u2192 tasks
2140
2096
 
2141
- > \uC791\uC131\uC77C: YYYY-MM-DD
2142
- > \uBC84\uC804: 1.0.0
2097
+ **\uB300\uADDC\uBAA8 (Large)**
2098
+ - \uD0A4\uC6CC\uB4DC: \uC2DC\uC2A4\uD15C, \uC544\uD0A4\uD14D\uCC98, \uB9C8\uC774\uADF8\uB808\uC774\uC158, \uC804\uBA74 \uAC1C\uD3B8
2099
+ - \uC6CC\uD06C\uD50C\uB85C\uC6B0: research \u2192 new \u2192 plan \u2192 tasks \u2192 prepare
2143
2100
 
2144
- ## \uC5D4\uD2F0\uD2F0 \uC815\uC758
2101
+ ### \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uC120\uD0DD
2145
2102
 
2146
- ### User (\uC0AC\uC6A9\uC790)
2103
+ | \uADDC\uBAA8 | \uCD94\uCC9C \uC6CC\uD06C\uD50C\uB85C\uC6B0 | \uD544\uC218 \uC0B0\uCD9C\uBB3C |
2104
+ |------|----------------|-------------|
2105
+ | Small | /sdd.change | proposal.md |
2106
+ | Medium | /sdd.new \u2192 /sdd.plan | spec.md, plan.md |
2107
+ | Large | /sdd.research \u2192 /sdd.new | research.md, spec.md, plan.md |
2147
2108
 
2148
- | \uD544\uB4DC | \uD0C0\uC785 | \uD544\uC218 | \uC124\uBA85 |
2149
- |------|------|------|------|
2150
- | id | UUID | O | \uACE0\uC720 \uC2DD\uBCC4\uC790 |
2151
- | email | string | O | \uC774\uBA54\uC77C (unique) |
2152
- | name | string | O | \uC0AC\uC6A9\uC790\uBA85 |
2153
- | created_at | datetime | O | \uC0DD\uC131\uC77C\uC2DC |
2109
+ ## \uC0AC\uC6A9 \uBC29\uBC95
2154
2110
 
2155
- ### Post (\uAC8C\uC2DC\uAE00)
2111
+ 1. \uC0AC\uC6A9\uC790\uC758 \uC694\uCCAD\uC744 \uC785\uB825\uBC1B\uC2B5\uB2C8\uB2E4
2112
+ 2. \uD0A4\uC6CC\uB4DC\uC640 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBD84\uC11D\uD569\uB2C8\uB2E4
2113
+ 3. \uC791\uC5C5 \uADDC\uBAA8\uB97C \uD310\uB2E8\uD569\uB2C8\uB2E4
2114
+ 4. \uC801\uC808\uD55C \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4
2156
2115
 
2157
- ...
2116
+ ## \uC608\uC2DC
2158
2117
 
2159
- ## \uAD00\uACC4\uB3C4 (ERD)
2118
+ **\uC785\uB825:** "\uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\uD574\uC918"
2119
+ **\uBD84\uC11D:**
2120
+ - \uD0A4\uC6CC\uB4DC: "\uAE30\uB2A5 \uCD94\uAC00" \u2192 \uC911\uADDC\uBAA8
2121
+ - \uCD94\uCC9C: /sdd.new \u2192 /sdd.plan \u2192 /sdd.tasks \u2192 /sdd.implement
2160
2122
 
2161
- \`\`\`mermaid
2162
- erDiagram
2163
- User ||--o{ Post : writes
2164
- User {
2165
- uuid id PK
2166
- string email
2167
- string name
2168
- }
2169
- Post {
2170
- uuid id PK
2171
- uuid user_id FK
2172
- string title
2173
- text content
2123
+ **\uC785\uB825:** "\uB85C\uADF8\uC778 \uBC84\uD2BC \uC0C9\uC0C1 \uBCC0\uACBD"
2124
+ **\uBD84\uC11D:**
2125
+ - \uD0A4\uC6CC\uB4DC: "\uBCC0\uACBD" \u2192 \uC18C\uADDC\uBAA8
2126
+ - \uCD94\uCC9C: \uC9C1\uC811 \uC218\uC815 \uB610\uB294 /sdd.change
2127
+
2128
+ **\uC785\uB825:** "\uB9C8\uC774\uD06C\uB85C\uC11C\uBE44\uC2A4 \uC544\uD0A4\uD14D\uCC98\uB85C \uC804\uD658"
2129
+ **\uBD84\uC11D:**
2130
+ - \uD0A4\uC6CC\uB4DC: "\uC544\uD0A4\uD14D\uCC98", "\uC804\uD658" \u2192 \uB300\uADDC\uBAA8
2131
+ - \uCD94\uCC9C: /sdd.research \u2192 /sdd.new \u2192 /sdd.plan
2132
+ `
2133
+ };
2134
+
2135
+ // src/generators/claude-commands/analysis/impact.ts
2136
+ var impactCommand = {
2137
+ name: "sdd.impact",
2138
+ content: `---
2139
+ description: SDD \uC2A4\uD399 \uBCC0\uACBD\uC758 \uC601\uD5A5\uB3C4\uB97C \uBD84\uC11D\uD569\uB2C8\uB2E4
2140
+ allowed-tools: Bash, Read
2141
+ argument-hint: <specId> [--graph] [--code] [--json]
2142
+ ---
2143
+
2144
+ sdd impact \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2145
+
2146
+ \`\`\`bash
2147
+ sdd impact $ARGUMENTS
2148
+ \`\`\`
2149
+
2150
+ ## \uC635\uC158
2151
+
2152
+ - \`--graph\`: Mermaid \uC758\uC874\uC131 \uADF8\uB798\uD504 \uCD9C\uB825
2153
+ - \`--code\`: \uCF54\uB4DC \uC601\uD5A5\uB3C4 \uBD84\uC11D
2154
+ - \`--json\`: JSON \uD615\uC2DD \uCD9C\uB825
2155
+
2156
+ ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
2157
+
2158
+ - \`report\`: \uC804\uCCB4 \uD504\uB85C\uC81D\uD2B8 \uC601\uD5A5\uB3C4 \uB9AC\uD3EC\uD2B8
2159
+ - \`change <id>\`: \uBCC0\uACBD \uC81C\uC548\uC758 \uC601\uD5A5\uB3C4
2160
+ - \`simulate --remove <spec>\`: What-if \uC2DC\uBBAC\uB808\uC774\uC158
2161
+
2162
+ \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399\uACFC \uCF54\uB4DC\uB97C \uBD84\uC11D\uD558\uACE0 \uBCC0\uACBD \uC804\uB7B5\uC744 \uC81C\uC548\uD574\uC8FC\uC138\uC694.
2163
+ `
2164
+ };
2165
+
2166
+ // src/generators/claude-commands/analysis/quality.ts
2167
+ var qualityCommand = {
2168
+ name: "sdd.quality",
2169
+ content: `---
2170
+ description: SDD \uC2A4\uD399 \uD488\uC9C8\uC744 \uBD84\uC11D\uD569\uB2C8\uB2E4
2171
+ allowed-tools: Bash, Read
2172
+ argument-hint: [specId] [--all] [--json]
2173
+ ---
2174
+
2175
+ sdd quality \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2176
+
2177
+ \`\`\`bash
2178
+ sdd quality $ARGUMENTS
2179
+ \`\`\`
2180
+
2181
+ ## \uC635\uC158
2182
+
2183
+ - \`--all\`: \uBAA8\uB4E0 \uC2A4\uD399 \uBD84\uC11D
2184
+ - \`--json\`: JSON \uD615\uC2DD \uCD9C\uB825
2185
+ - \`--min-score <n>\`: \uCD5C\uC18C \uC810\uC218 \uAE30\uC900
2186
+
2187
+ ## \uB4F1\uAE09 \uAE30\uC900
2188
+
2189
+ | \uB4F1\uAE09 | \uC810\uC218 | \uC124\uBA85 |
2190
+ |------|------|------|
2191
+ | A | 90-100 | \uC6B0\uC218 |
2192
+ | B | 80-89 | \uC591\uD638 |
2193
+ | C | 70-79 | \uBCF4\uD1B5 |
2194
+ | D | 60-69 | \uBBF8\uD761 |
2195
+ | F | 0-59 | \uBD80\uC871 |
2196
+
2197
+ \uBD84\uC11D \uACB0\uACFC\uB97C \uBC14\uD0D5\uC73C\uB85C \uD488\uC9C8 \uAC1C\uC120 \uBC29\uC548\uC744 \uC81C\uC548\uD574\uC8FC\uC138\uC694.
2198
+ `
2199
+ };
2200
+
2201
+ // src/generators/claude-commands/analysis/sync.ts
2202
+ var syncCommand = {
2203
+ name: "sdd.sync",
2204
+ content: `---
2205
+ description: \uC2A4\uD399-\uCF54\uB4DC \uB3D9\uAE30\uD654 \uC0C1\uD0DC\uB97C \uAC80\uC99D\uD569\uB2C8\uB2E4
2206
+ allowed-tools: Bash, Read
2207
+ argument-hint: [specId] [--json] [--ci]
2208
+ ---
2209
+
2210
+ \uC2A4\uD399 \uC694\uAD6C\uC0AC\uD56D\uACFC \uCF54\uB4DC \uAD6C\uD604\uC758 \uB3D9\uAE30\uD654 \uC0C1\uD0DC\uB97C \uAC80\uC99D\uD569\uB2C8\uB2E4.
2211
+
2212
+ ## \uAC1C\uC694
2213
+
2214
+ \uC2A4\uD399\uC758 REQ-xxx \uC694\uAD6C\uC0AC\uD56D\uC774 \uCF54\uB4DC\uC5D0 \uAD6C\uD604\uB418\uC5B4 \uC788\uB294\uC9C0 \uD655\uC778\uD569\uB2C8\uB2E4.
2215
+ \uCF54\uB4DC\uC5D0\uC11C \`@spec REQ-xxx\` \uC8FC\uC11D\uC774\uB098 \uD14C\uC2A4\uD2B8\uC5D0\uC11C \`it('REQ-xxx: ...')\` \uD615\uC2DD\uC744 \uC778\uC2DD\uD569\uB2C8\uB2E4.
2216
+
2217
+ ## \uBA85\uB839\uC5B4
2218
+
2219
+ \`\`\`bash
2220
+ # \uC804\uCCB4 \uC2A4\uD399 \uB3D9\uAE30\uD654 \uAC80\uC99D
2221
+ sdd sync
2222
+
2223
+ # \uD2B9\uC815 \uC2A4\uD399\uB9CC \uAC80\uC99D
2224
+ sdd sync user-auth
2225
+
2226
+ # JSON \uCD9C\uB825
2227
+ sdd sync --json
2228
+
2229
+ # CI \uBAA8\uB4DC (\uB3D9\uAE30\uD654\uC728 \uC784\uACC4\uAC12 \uAC80\uC0AC)
2230
+ sdd sync --ci --threshold 80
2231
+
2232
+ # \uB9C8\uD06C\uB2E4\uC6B4 \uB9AC\uD3EC\uD2B8
2233
+ sdd sync --markdown
2234
+ \`\`\`
2235
+
2236
+ ## \uCF54\uB4DC \uC8FC\uC11D \uADDC\uCE59
2237
+
2238
+ \`\`\`typescript
2239
+ /**
2240
+ * \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778
2241
+ * @spec REQ-001
2242
+ * @spec REQ-002
2243
+ */
2244
+ export async function login() { ... }
2245
+ \`\`\`
2246
+
2247
+ ## \uD14C\uC2A4\uD2B8 \uB9E4\uD551
2248
+
2249
+ \`\`\`typescript
2250
+ it('REQ-001: \uC62C\uBC14\uB978 \uC790\uACA9 \uC99D\uBA85\uC73C\uB85C \uB85C\uADF8\uC778\uD55C\uB2E4', () => { ... });
2251
+ \`\`\`
2252
+
2253
+ ## \uCD9C\uB825 \uC608\uC2DC
2254
+
2255
+ \`\`\`
2256
+ === SDD Sync: \uC2A4\uD399-\uCF54\uB4DC \uB3D9\uAE30\uD654 \uAC80\uC99D ===
2257
+
2258
+ \uC2A4\uD399: 3\uAC1C, \uC694\uAD6C\uC0AC\uD56D: 15\uAC1C
2259
+
2260
+ \u2713 \uAD6C\uD604\uB428 (12/15)
2261
+ - REQ-001: \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778 (src/auth/login.ts:45)
2262
+ ...
2263
+
2264
+ \u2717 \uBBF8\uAD6C\uD604 (3/15)
2265
+ - REQ-010: \uBE44\uBC00\uBC88\uD638 \uC7AC\uC124\uC815
2266
+ ...
2267
+
2268
+ \uB3D9\uAE30\uD654\uC728: 80% (12/15)
2269
+ \`\`\`
2270
+
2271
+ \uB3D9\uAE30\uD654 \uACB0\uACFC\uB97C \uBD84\uC11D\uD558\uACE0 \uBBF8\uAD6C\uD604 \uC694\uAD6C\uC0AC\uD56D\uC5D0 \uB300\uD55C \uC870\uCE58\uB97C \uC81C\uC548\uD574\uC8FC\uC138\uC694.
2272
+ `
2273
+ };
2274
+
2275
+ // src/generators/claude-commands/analysis/diff.ts
2276
+ var diffCommand = {
2277
+ name: "sdd.diff",
2278
+ content: `---
2279
+ description: \uC2A4\uD399 \uBCC0\uACBD\uC0AC\uD56D\uC744 \uC2DC\uAC01\uD654\uD569\uB2C8\uB2E4
2280
+ allowed-tools: Bash, Read
2281
+ argument-hint: [commit1] [commit2] [--staged] [--stat]
2282
+ ---
2283
+
2284
+ \uC2A4\uD399 \uD30C\uC77C\uC758 \uBCC0\uACBD\uC0AC\uD56D\uC744 \uAD6C\uC870\uC801\uC73C\uB85C \uBE44\uAD50\uD558\uC5EC \uC2DC\uAC01\uD654\uD569\uB2C8\uB2E4.
2285
+
2286
+ ## \uAC1C\uC694
2287
+
2288
+ Git diff\uC640 \uC720\uC0AC\uD558\uAC8C \uC2A4\uD399 \uBCC0\uACBD\uC744 \uBCF4\uC5EC\uC8FC\uB418, \uC694\uAD6C\uC0AC\uD56D/\uC2DC\uB098\uB9AC\uC624/\uD0A4\uC6CC\uB4DC \uBCC0\uACBD\uC744 \uAD6C\uC870\uC801\uC73C\uB85C \uC778\uC2DD\uD569\uB2C8\uB2E4.
2289
+
2290
+ ## \uBA85\uB839\uC5B4
2291
+
2292
+ \`\`\`bash
2293
+ # \uC791\uC5C5 \uB514\uB809\uD1A0\uB9AC \uBCC0\uACBD
2294
+ sdd diff
2295
+
2296
+ # \uC2A4\uD14C\uC774\uC9D5\uB41C \uBCC0\uACBD
2297
+ sdd diff --staged
2298
+
2299
+ # \uCEE4\uBC0B \uAC04 \uBE44\uAD50
2300
+ sdd diff abc123 def456
2301
+
2302
+ # \uBE0C\uB79C\uCE58 \uBE44\uAD50
2303
+ sdd diff main..feature/auth
2304
+
2305
+ # \uD2B9\uC815 \uC2A4\uD399\uB9CC
2306
+ sdd diff --spec user-auth
2307
+
2308
+ # \uC635\uC158
2309
+ sdd diff --stat # \uD1B5\uACC4 \uC694\uC57D
2310
+ sdd diff --name-only # \uD30C\uC77C\uBA85\uB9CC
2311
+ sdd diff --json # JSON \uCD9C\uB825
2312
+ sdd diff --no-color # \uCEEC\uB7EC \uC5C6\uC74C
2313
+ \`\`\`
2314
+
2315
+ ## \uAC10\uC9C0 \uD56D\uBAA9
2316
+
2317
+ - **\uC694\uAD6C\uC0AC\uD56D**: REQ-xxx \uCD94\uAC00/\uC218\uC815/\uC0AD\uC81C
2318
+ - **\uC2DC\uB098\uB9AC\uC624**: GIVEN-WHEN-THEN \uBCC0\uACBD
2319
+ - **\uD0A4\uC6CC\uB4DC**: RFC 2119 \uD0A4\uC6CC\uB4DC \uBCC0\uACBD (SHOULD \u2192 SHALL \uB4F1)
2320
+ - **\uBA54\uD0C0\uB370\uC774\uD130**: YAML frontmatter \uBCC0\uACBD
2321
+
2322
+ ## \uCD9C\uB825 \uC608\uC2DC
2323
+
2324
+ \`\`\`
2325
+ === SDD Diff ===
2326
+
2327
+ .sdd/specs/user-auth/spec.md
2328
+
2329
+ \uC694\uAD6C\uC0AC\uD56D \uBCC0\uACBD:
2330
+ ~ REQ-001: \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778
2331
+ - \uC2DC\uC2A4\uD15C\uC740 \uC774\uBA54\uC77C/\uBE44\uBC00\uBC88\uD638 \uB85C\uADF8\uC778\uC744 \uC9C0\uC6D0\uD574\uC57C \uD55C\uB2E4(SHOULD)
2332
+ + \uC2DC\uC2A4\uD15C\uC740 \uC774\uBA54\uC77C/\uBE44\uBC00\uBC88\uD638 \uB85C\uADF8\uC778\uC744 \uC9C0\uC6D0\uD574\uC57C \uD55C\uB2E4(SHALL)
2333
+ \u26A0\uFE0F REQ-001: SHOULD \u2192 SHALL (\uAC15\uD654)
2334
+
2335
+ + REQ-005: \uC18C\uC15C \uB85C\uADF8\uC778
2336
+ + \uC2DC\uC2A4\uD15C\uC740 Google OAuth\uB97C \uC9C0\uC6D0\uD574\uC57C \uD55C\uB2E4(MAY)
2337
+
2338
+ \uC2DC\uB098\uB9AC\uC624 \uBCC0\uACBD:
2339
+ + Scenario: Google \uB85C\uADF8\uC778
2340
+ \`\`\`
2341
+
2342
+ ## \uD1B5\uACC4 \uC694\uC57D (--stat)
2343
+
2344
+ \`\`\`
2345
+ === SDD Diff --stat ===
2346
+
2347
+ .sdd/specs/user-auth/spec.md
2348
+ \uC694\uAD6C\uC0AC\uD56D: +1, ~1, -0
2349
+ \uC2DC\uB098\uB9AC\uC624: +1, ~0, -0
2350
+ \uD0A4\uC6CC\uB4DC \uBCC0\uACBD: 1\uAC1C (\uAC15\uD654: 1, \uC57D\uD654: 0)
2351
+
2352
+ \uCD1D \uBCC0\uACBD: 1\uAC1C \uD30C\uC77C, \uC694\uAD6C\uC0AC\uD56D +1 ~1 -0
2353
+ \`\`\`
2354
+
2355
+ \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uBD84\uC11D\uD558\uACE0 \uC601\uD5A5\uB3C4\uB97C \uD3C9\uAC00\uD574\uC8FC\uC138\uC694.
2356
+ `
2357
+ };
2358
+
2359
+ // src/generators/claude-commands/analysis/search.ts
2360
+ var searchCommand = {
2361
+ name: "sdd.search",
2362
+ content: `---
2363
+ description: SDD \uC2A4\uD399\uC744 \uAC80\uC0C9\uD569\uB2C8\uB2E4
2364
+ allowed-tools: Bash, Read
2365
+ argument-hint: [query] [--status draft] [--phase phase1]
2366
+ ---
2367
+
2368
+ sdd search \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2369
+
2370
+ \`\`\`bash
2371
+ sdd search $ARGUMENTS
2372
+ \`\`\`
2373
+
2374
+ ## \uC635\uC158
2375
+
2376
+ - \`--status <status>\`: \uC0C1\uD0DC \uD544\uD130 (draft, review, approved)
2377
+ - \`--phase <phase>\`: Phase \uD544\uD130
2378
+ - \`--author <name>\`: \uC791\uC131\uC790 \uD544\uD130
2379
+ - \`--tags <tags>\`: \uD0DC\uADF8 \uD544\uD130 (\uCF64\uB9C8 \uAD6C\uBD84)
2380
+ - \`--depends-on <spec>\`: \uC758\uC874\uC131 \uD544\uD130
2381
+ - \`--limit <n>\`: \uACB0\uACFC \uC81C\uD55C
2382
+ - \`--sort-by <field>\`: \uC815\uB82C \uAE30\uC900 (relevance, created, updated, title, status)
2383
+ - \`-r, --regex\`: \uC815\uADDC\uC2DD \uAC80\uC0C9
2384
+ - \`-c, --case-sensitive\`: \uB300\uC18C\uBB38\uC790 \uAD6C\uBD84
2385
+ - \`--json\`: JSON \uCD9C\uB825
2386
+
2387
+ \uAC80\uC0C9 \uACB0\uACFC\uB97C \uBD84\uC11D\uD558\uACE0 \uAD00\uB828 \uC2A4\uD399 \uC815\uBCF4\uB97C \uC694\uC57D\uD574\uC8FC\uC138\uC694.
2388
+ `
2389
+ };
2390
+
2391
+ // src/generators/claude-commands/analysis/list.ts
2392
+ var listCommand = {
2393
+ name: "sdd.list",
2394
+ content: `---
2395
+ description: SDD \uD56D\uBAA9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4
2396
+ allowed-tools: Bash, Read
2397
+ argument-hint: [features|changes|specs|templates] [--status draft]
2398
+ ---
2399
+
2400
+ sdd list \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2401
+
2402
+ \`\`\`bash
2403
+ sdd list $ARGUMENTS
2404
+ \`\`\`
2405
+
2406
+ ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
2407
+
2408
+ - (\uC5C6\uC74C): \uD504\uB85C\uC81D\uD2B8 \uC694\uC57D
2409
+ - \`features\` (f): \uAE30\uB2A5 \uBAA9\uB85D
2410
+ - \`changes\` (c): \uBCC0\uACBD \uBAA9\uB85D
2411
+ - \`specs\` (s): \uC2A4\uD399 \uD30C\uC77C \uBAA9\uB85D
2412
+ - \`templates\` (t): \uD15C\uD50C\uB9BF \uBAA9\uB85D
2413
+
2414
+ ## \uC635\uC158
2415
+
2416
+ - \`--status <status>\`: \uC0C1\uD0DC\uBCC4 \uD544\uD130 (features)
2417
+ - \`--pending\`: \uB300\uAE30 \uC911\uB9CC (changes)
2418
+ - \`--archived\`: \uC544\uCE74\uC774\uBE0C\uB9CC (changes)
2419
+
2420
+ \uBAA9\uB85D\uC744 \uBD84\uC11D\uD558\uACE0 \uC694\uC57D\uD574\uC8FC\uC138\uC694.
2421
+ `
2422
+ };
2423
+
2424
+ // src/generators/claude-commands/analysis/export.ts
2425
+ var exportCommand = {
2426
+ name: "sdd.export",
2427
+ content: `---
2428
+ description: \uC2A4\uD399\uC744 HTML, JSON \uB4F1\uC73C\uB85C \uB0B4\uBCF4\uB0B4\uAE30
2429
+ allowed-tools: Bash, Read, Write
2430
+ argument-hint: [specId] [--format html] [-o output.html]
2431
+ ---
2432
+
2433
+ \uC2A4\uD399 \uBB38\uC11C\uB97C \uB2E4\uC591\uD55C \uD615\uC2DD\uC73C\uB85C \uB0B4\uBCF4\uB0C5\uB2C8\uB2E4.
2434
+
2435
+ ## \uAC1C\uC694
2436
+
2437
+ \uC2A4\uD399\uC744 HTML, JSON, \uB9C8\uD06C\uB2E4\uC6B4 \uD615\uC2DD\uC73C\uB85C \uBCC0\uD658\uD558\uC5EC \uD300\uC6D0, \uC774\uD574\uAD00\uACC4\uC790\uC640 \uACF5\uC720\uD569\uB2C8\uB2E4.
2438
+
2439
+ ## \uBA85\uB839\uC5B4
2440
+
2441
+ \`\`\`bash
2442
+ # \uB2E8\uC77C \uC2A4\uD399 HTML \uB0B4\uBCF4\uB0B4\uAE30
2443
+ sdd export user-auth --format html
2444
+
2445
+ # \uC804\uCCB4 \uC2A4\uD399 \uB0B4\uBCF4\uB0B4\uAE30
2446
+ sdd export --all --format html
2447
+
2448
+ # JSON \uD615\uC2DD
2449
+ sdd export user-auth --format json
2450
+
2451
+ # \uB9C8\uD06C\uB2E4\uC6B4 \uBCD1\uD569
2452
+ sdd export --all --format markdown
2453
+
2454
+ # \uCD9C\uB825 \uACBD\uB85C \uC9C0\uC815
2455
+ sdd export user-auth -o ./docs/user-auth.html
2456
+
2457
+ # \uB2E4\uD06C \uD14C\uB9C8
2458
+ sdd export --all --theme dark
2459
+
2460
+ # \uBAA9\uCC28 \uC81C\uC678
2461
+ sdd export user-auth --no-toc
2462
+ \`\`\`
2463
+
2464
+ ## \uC9C0\uC6D0 \uD615\uC2DD
2465
+
2466
+ | \uD615\uC2DD | \uC124\uBA85 |
2467
+ |------|------|
2468
+ | html | \uC2A4\uD0C0\uC77C \uD3EC\uD568 HTML (\uAE30\uBCF8\uAC12) |
2469
+ | json | \uAD6C\uC870\uD654\uB41C JSON |
2470
+ | markdown | \uB9C8\uD06C\uB2E4\uC6B4 \uBCD1\uD569 |
2471
+ | pdf | HTML \uC0DD\uC131 \uD6C4 \uBE0C\uB77C\uC6B0\uC800 \uC778\uC1C4 \uC548\uB0B4 |
2472
+
2473
+ ## HTML \uAE30\uB2A5
2474
+
2475
+ - \uBC18\uC751\uD615 \uB514\uC790\uC778
2476
+ - \uC790\uB3D9 \uBAA9\uCC28 \uC0DD\uC131
2477
+ - RFC 2119 \uD0A4\uC6CC\uB4DC \uAC15\uC870
2478
+ - GIVEN/WHEN/THEN \uC2DC\uAC01\uD654
2479
+ - \uB77C\uC774\uD2B8/\uB2E4\uD06C \uD14C\uB9C8
2480
+ - \uC778\uC1C4 \uCD5C\uC801\uD654
2481
+
2482
+ ## JSON \uAD6C\uC870
2483
+
2484
+ \`\`\`json
2485
+ {
2486
+ "id": "user-auth",
2487
+ "title": "\uC0AC\uC6A9\uC790 \uC778\uC99D",
2488
+ "requirements": [
2489
+ {
2490
+ "id": "REQ-001",
2491
+ "title": "\uB85C\uADF8\uC778",
2492
+ "keyword": "SHALL",
2493
+ "priority": "high"
2174
2494
  }
2495
+ ],
2496
+ "scenarios": [...]
2497
+ }
2175
2498
  \`\`\`
2176
2499
 
2177
- ## \uC778\uB371\uC2A4
2500
+ ## \uCD9C\uB825 \uC608\uC2DC
2178
2501
 
2179
- | \uD14C\uC774\uBE14 | \uC778\uB371\uC2A4 | \uCEEC\uB7FC | \uC720\uD615 |
2180
- |--------|--------|------|------|
2181
- | User | idx_user_email | email | UNIQUE |
2502
+ \`\`\`
2503
+ === SDD Export ===
2182
2504
 
2183
- ## \uC81C\uC57D\uC870\uAC74
2505
+ \uD615\uC2DD: HTML
2506
+ \uC2A4\uD399: 3\uAC1C
2507
+ \uCD9C\uB825: ./specs.html
2508
+ \uD06C\uAE30: 45.32 KB
2509
+ \`\`\`
2184
2510
 
2185
- - User.email\uC740 \uC720\uC77C\uD574\uC57C \uD55C\uB2E4(SHALL)
2186
- - Post.user_id\uB294 User.id\uB97C \uCC38\uC870\uD574\uC57C \uD55C\uB2E4(SHALL)
2511
+ \uB0B4\uBCF4\uB0B8 \uD30C\uC77C\uC758 \uB0B4\uC6A9\uC744 \uD655\uC778\uD558\uACE0 \uD544\uC694\uC2DC \uCD94\uAC00 \uD615\uC2DD\uC73C\uB85C \uB0B4\uBCF4\uB0B4\uC138\uC694.
2512
+ `
2513
+ };
2514
+
2515
+ // src/generators/claude-commands/analysis/report.ts
2516
+ var reportCommand = {
2517
+ name: "sdd.report",
2518
+ content: `---
2519
+ description: SDD \uD504\uB85C\uC81D\uD2B8 \uB9AC\uD3EC\uD2B8\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4
2520
+ allowed-tools: Bash, Read, Write
2521
+ argument-hint: [--format html] [-o report.html]
2522
+ ---
2523
+
2524
+ sdd report \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2525
+
2526
+ \`\`\`bash
2527
+ sdd report $ARGUMENTS
2187
2528
  \`\`\`
2188
2529
 
2189
- ## \uC800\uC7A5 \uC704\uCE58
2530
+ ## \uC635\uC158
2190
2531
 
2191
- \uB370\uC774\uD130 \uBAA8\uB378\uC740 \`.sdd/data-model.md\` \uB610\uB294 \uD574\uB2F9 \uAE30\uB2A5 \uB514\uB809\uD1A0\uB9AC\uC5D0 \uC800\uC7A5\uD558\uC138\uC694.
2532
+ - \`--format <type>\`: \uCD9C\uB825 \uD615\uC2DD (html, markdown, json)
2533
+ - \`-o, --output <path>\`: \uD30C\uC77C\uB85C \uC800\uC7A5
2534
+ - \`--title <title>\`: \uB9AC\uD3EC\uD2B8 \uC81C\uBAA9
2535
+ - \`--no-quality\`: \uD488\uC9C8 \uBD84\uC11D \uC81C\uC678
2536
+ - \`--no-validation\`: \uAC80\uC99D \uACB0\uACFC \uC81C\uC678
2537
+
2538
+ \uB9AC\uD3EC\uD2B8 \uB0B4\uC6A9\uC744 \uC694\uC57D\uD558\uACE0 \uC8FC\uC694 \uC9C0\uD45C\uB97C \uC124\uBA85\uD574\uC8FC\uC138\uC694.
2192
2539
  `
2193
- },
2194
- {
2195
- name: "sdd.prepare",
2196
- content: `\uAE30\uB2A5 \uAD6C\uD604 \uC804 \uD544\uC694\uD55C \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC640 \uC2A4\uD0AC\uC744 \uC810\uAC80\uD569\uB2C8\uB2E4.
2540
+ };
2541
+
2542
+ // src/generators/claude-commands/domain/reverse.ts
2543
+ var reverseCommand = {
2544
+ name: "sdd.reverse",
2545
+ content: `\uB808\uAC70\uC2DC \uCF54\uB4DC\uBCA0\uC774\uC2A4\uC5D0\uC11C SDD \uC2A4\uD399\uC744 \uC5ED\uCD94\uCD9C\uD569\uB2C8\uB2E4.
2197
2546
 
2198
2547
  ## \uAC1C\uC694
2199
2548
 
2200
- \uC2A4\uD399/\uACC4\uD68D/\uC791\uC5C5 \uBB38\uC11C\uB97C \uBD84\uC11D\uD558\uC5EC \uAD6C\uD604\uC5D0 \uD544\uC694\uD55C Claude Code \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC640 \uC2A4\uD0AC\uC744 \uAC10\uC9C0\uD558\uACE0,
2201
- \uB204\uB77D\uB41C \uB3C4\uAD6C\uAC00 \uC788\uC73C\uBA74 \uC790\uB3D9\uC73C\uB85C \uC0DD\uC131\uD569\uB2C8\uB2E4.
2549
+ \uAE30\uC874 \uCF54\uB4DC\uB97C \uBD84\uC11D\uD558\uC5EC SDD \uC2A4\uD399 \uCD08\uC548\uC744 \uC790\uB3D9 \uC0DD\uC131\uD569\uB2C8\uB2E4.
2550
+ \uB9AC\uBDF0\uC640 \uC2B9\uC778 \uACFC\uC815\uC744 \uD1B5\uD574 \uC815\uC2DD \uC2A4\uD399\uC73C\uB85C \uD655\uC815\uD569\uB2C8\uB2E4.
2202
2551
 
2203
- ## \uC9C0\uC2DC\uC0AC\uD56D
2552
+ ## \uD558\uC704 \uBA85\uB839\uC5B4
2204
2553
 
2205
- 1. \`sdd prepare <feature-id>\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC138\uC694
2206
- 2. \uAC10\uC9C0\uB41C \uB3C4\uAD6C \uBAA9\uB85D\uACFC \uC874\uC7AC \uC5EC\uBD80\uB97C \uD655\uC778\uD558\uC138\uC694
2207
- 3. \uB204\uB77D\uB41C \uB3C4\uAD6C \uC0DD\uC131 \uC5EC\uBD80\uB97C \uACB0\uC815\uD558\uC138\uC694
2554
+ \`\`\`
2555
+ /sdd.reverse scan [path] # \uD504\uB85C\uC81D\uD2B8 \uAD6C\uC870 \uC2A4\uCE94
2556
+ /sdd.reverse extract [path] # \uCF54\uB4DC\uC5D0\uC11C \uC2A4\uD399 \uCD94\uCD9C
2557
+ /sdd.reverse review [spec-id] # \uCD94\uCD9C\uB41C \uC2A4\uD399 \uB9AC\uBDF0
2558
+ /sdd.reverse finalize [spec-id] # \uC2B9\uC778\uB41C \uC2A4\uD399 \uD655\uC815
2559
+ \`\`\`
2208
2560
 
2209
2561
  ## \uC6CC\uD06C\uD50C\uB85C\uC6B0
2210
2562
 
2211
2563
  \`\`\`
2212
- /sdd.new \u2192 /sdd.plan \u2192 /sdd.tasks \u2192 sdd prepare \u2192 /sdd.implement
2564
+ scan \u2192 extract \u2192 review \u2192 finalize
2213
2565
  \`\`\`
2214
2566
 
2215
- ## \uBA85\uB839\uC5B4
2567
+ ### 1. Scan (\uC2A4\uCE94)
2568
+
2569
+ \uD504\uB85C\uC81D\uD2B8\uB97C \uBD84\uC11D\uD558\uC5EC \uB514\uB809\uD1A0\uB9AC \uAD6C\uC870, \uC5B8\uC5B4 \uBD84\uD3EC, \uB3C4\uBA54\uC778\uC744 \uCD94\uC815\uD569\uB2C8\uB2E4.
2216
2570
 
2217
2571
  \`\`\`bash
2218
- # \uAE30\uBCF8 \uC0AC\uC6A9 (\uB300\uD654\uD615)
2219
- sdd prepare user-auth
2572
+ sdd reverse scan
2573
+ sdd reverse scan src/
2574
+ \`\`\`
2220
2575
 
2221
- # \uBBF8\uB9AC\uBCF4\uAE30 (\uD30C\uC77C \uC0DD\uC131 \uC5C6\uC74C)
2222
- sdd prepare user-auth --dry-run
2576
+ ### 2. Extract (\uCD94\uCD9C)
2223
2577
 
2224
- # \uC790\uB3D9 \uC2B9\uC778 (\uB204\uB77D \uB3C4\uAD6C \uC790\uB3D9 \uC0DD\uC131)
2225
- sdd prepare user-auth --auto-approve
2578
+ \uC2A4\uCE94 \uACB0\uACFC\uB97C \uAE30\uBC18\uC73C\uB85C \uCF54\uB4DC\uC5D0\uC11C \uC2A4\uD399 \uCD08\uC548\uC744 \uCD94\uCD9C\uD569\uB2C8\uB2E4.
2226
2579
 
2227
- # JSON \uCD9C\uB825
2228
- sdd prepare user-auth --json
2580
+ \`\`\`bash
2581
+ sdd reverse extract
2582
+ sdd reverse extract --domain auth
2583
+ sdd reverse extract --depth deep
2229
2584
  \`\`\`
2230
2585
 
2231
- ## \uAC10\uC9C0 \uB300\uC0C1
2586
+ **\uC635\uC158:**
2587
+ - \`--domain <name>\`: \uD2B9\uC815 \uB3C4\uBA54\uC778\uB9CC \uCD94\uCD9C
2588
+ - \`--depth <level>\`: \uBD84\uC11D \uAE4A\uC774 (shallow, medium, deep)
2589
+ - \`--min-confidence <n>\`: \uCD5C\uC18C \uC2E0\uB8B0\uB3C4 \uD544\uD130
2232
2590
 
2233
- ### \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 (\`.claude/agents/*.md\`)
2591
+ ### 3. Review (\uB9AC\uBDF0)
2234
2592
 
2235
- | \uC5D0\uC774\uC804\uD2B8 | \uAC10\uC9C0 \uD0A4\uC6CC\uB4DC | \uC124\uBA85 |
2236
- |----------|-------------|------|
2237
- | test-runner | \uD14C\uC2A4\uD2B8, test, jest, vitest | \uD14C\uC2A4\uD2B8 \uC2E4\uD589 |
2238
- | api-scaffold | api, rest, endpoint | API \uC2A4\uCE90\uD3F4\uB529 |
2239
- | component-gen | component, \uCEF4\uD3EC\uB10C\uD2B8, react | \uCEF4\uD3EC\uB10C\uD2B8 \uC0DD\uC131 |
2240
- | code-reviewer | review, \uB9AC\uBDF0 | \uCF54\uB4DC \uB9AC\uBDF0 |
2593
+ \uCD94\uCD9C\uB41C \uC2A4\uD399 \uCD08\uC548\uC744 \uB9AC\uBDF0\uD558\uACE0 \uC2B9\uC778/\uAC70\uBD80\uD569\uB2C8\uB2E4.
2241
2594
 
2242
- ### \uC2A4\uD0AC (\`.claude/skills/<name>/SKILL.md\`)
2595
+ \`\`\`bash
2596
+ sdd reverse review # \uB9AC\uBDF0 \uB300\uAE30 \uBAA9\uB85D
2597
+ sdd reverse review auth/login # \uD2B9\uC815 \uC2A4\uD399 \uC0C1\uC138
2598
+ \`\`\`
2243
2599
 
2244
- | \uC2A4\uD0AC | \uAC10\uC9C0 \uD0A4\uC6CC\uB4DC | \uC124\uBA85 |
2245
- |------|-------------|------|
2246
- | test | \uD14C\uC2A4\uD2B8, test | \uD14C\uC2A4\uD2B8 \uC791\uC131 |
2247
- | gen-api | api, rest | API \uC0DD\uC131 |
2248
- | gen-component | component | \uCEF4\uD3EC\uB10C\uD2B8 \uC0DD\uC131 |
2249
- | db-migrate | database, \uB9C8\uC774\uADF8\uB808\uC774\uC158 | DB \uB9C8\uC774\uADF8\uB808\uC774\uC158 |
2250
- | gen-doc | \uBB38\uC11C, doc | \uBB38\uC11C \uC0DD\uC131 |
2600
+ ### 4. Finalize (\uD655\uC815)
2251
2601
 
2252
- ## \uCD9C\uB825 \uC608\uC2DC
2602
+ \uC2B9\uC778\uB41C \uC2A4\uD399\uC744 \uC815\uC2DD SDD \uC2A4\uD399\uC73C\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.
2253
2603
 
2604
+ \`\`\`bash
2605
+ sdd reverse finalize --all # \uBAA8\uB4E0 \uC2B9\uC778 \uC2A4\uD399 \uD655\uC815
2606
+ sdd reverse finalize auth/login # \uD2B9\uC815 \uC2A4\uD399 \uD655\uC815
2254
2607
  \`\`\`
2255
- === SDD Prepare: user-auth ===
2256
2608
 
2257
- \uBD84\uC11D \uB300\uC0C1: 3\uAC1C \uBB38\uC11C, 5\uAC1C \uD0DC\uC2A4\uD06C
2609
+ ## \uCD9C\uB825 \uD30C\uC77C
2258
2610
 
2259
- --- \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 ---
2260
- [x] test-runner (\uC874\uC7AC)
2261
- [ ] api-scaffold (\uC5C6\uC74C) \u2192 \uC0DD\uC131 \uD544\uC694
2611
+ | \uD30C\uC77C | \uC124\uBA85 |
2612
+ |------|------|
2613
+ | \`.sdd/.reverse-meta.json\` | \uC2A4\uCE94 \uACB0\uACFC \uBA54\uD0C0\uB370\uC774\uD130 |
2614
+ | \`.sdd/.reverse-drafts/\` | \uC2A4\uD399 \uCD08\uC548 \uB514\uB809\uD1A0\uB9AC |
2615
+ | \`.sdd/specs/\` | \uD655\uC815\uB41C \uC2A4\uD399 \uB514\uB809\uD1A0\uB9AC |
2262
2616
 
2263
- --- \uC2A4\uD0AC ---
2264
- [x] test (\uC874\uC7AC)
2265
- [ ] gen-api (\uC5C6\uC74C) \u2192 \uC0DD\uC131 \uD544\uC694
2617
+ ## \uB2E4\uC74C \uB2E8\uACC4
2618
+
2619
+ - \uD655\uC815 \uD6C4: \`/sdd.validate\`\uB85C \uC2A4\uD399 \uAC80\uC99D
2620
+ - \uB3C4\uBA54\uC778 \uC815\uB9AC: \`/sdd.domain\`\uC73C\uB85C \uB3C4\uBA54\uC778 \uAD6C\uC870\uD654
2621
+ `
2622
+ };
2623
+
2624
+ // src/generators/claude-commands/domain/domain.ts
2625
+ var domainCommand = {
2626
+ name: "sdd.domain",
2627
+ content: `\uB3C4\uBA54\uC778\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4.
2628
+
2629
+ ## \uAC1C\uC694
2630
+
2631
+ SDD \uD504\uB85C\uC81D\uD2B8\uC758 \uB3C4\uBA54\uC778\uC744 \uC0DD\uC131, \uC870\uD68C, \uC218\uC815, \uC0AD\uC81C\uD569\uB2C8\uB2E4.
2632
+ \uB300\uADDC\uBAA8 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C \uC2A4\uD399\uC744 \uB17C\uB9AC\uC801\uC73C\uB85C \uADF8\uB8F9\uD654\uD560 \uB54C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.
2633
+
2634
+ ## \uD558\uC704 \uBA85\uB839\uC5B4
2266
2635
 
2267
- \uB204\uB77D\uB41C \uB3C4\uAD6C\uB97C \uC0DD\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? (y/n)
2636
+ \`\`\`
2637
+ /sdd.domain create <name> # \uB3C4\uBA54\uC778 \uC0DD\uC131
2638
+ /sdd.domain list # \uB3C4\uBA54\uC778 \uBAA9\uB85D
2639
+ /sdd.domain show <name> # \uC0C1\uC138 \uC815\uBCF4
2640
+ /sdd.domain link <domain> <spec> # \uC2A4\uD399 \uC5F0\uACB0
2641
+ /sdd.domain graph # \uC758\uC874\uC131 \uADF8\uB798\uD504
2268
2642
  \`\`\`
2269
2643
 
2270
- ## \uC0DD\uC131 \uD30C\uC77C \uAD6C\uC870
2644
+ ### create
2271
2645
 
2646
+ \uC0C8 \uB3C4\uBA54\uC778\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.
2647
+
2648
+ \`\`\`bash
2649
+ sdd domain create auth
2650
+ sdd domain create payment --description "\uACB0\uC81C \uCC98\uB9AC"
2272
2651
  \`\`\`
2273
- .claude/
2274
- \u251C\u2500\u2500 agents/
2275
- \u2502 \u2514\u2500\u2500 api-scaffold.md # \uC5D0\uC774\uC804\uD2B8 \uC815\uC758
2276
- \u2514\u2500\u2500 skills/
2277
- \u2514\u2500\u2500 gen-api/
2278
- \u2514\u2500\u2500 SKILL.md # \uC2A4\uD0AC \uC815\uC758
2652
+
2653
+ ### list
2654
+
2655
+ \uBAA8\uB4E0 \uB3C4\uBA54\uC778\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4.
2656
+
2657
+ \`\`\`bash
2658
+ sdd domain list
2659
+ sdd domain list --tree # \uD2B8\uB9AC \uD615\uD0DC
2279
2660
  \`\`\`
2280
2661
 
2281
- \uC644\uB8CC \uD6C4 \`/sdd.implement\`\uB85C \uAD6C\uD604\uC744 \uC2DC\uC791\uD558\uC138\uC694.
2282
- `
2283
- },
2284
- {
2285
- name: "sdd.analyze",
2286
- content: `\uC0AC\uC6A9\uC790 \uC694\uCCAD\uC744 \uBD84\uC11D\uD558\uC5EC \uC801\uC808\uD55C \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
2662
+ ### show
2287
2663
 
2288
- ## \uAC1C\uC694
2664
+ \uD2B9\uC815 \uB3C4\uBA54\uC778\uC758 \uC0C1\uC138 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.
2289
2665
 
2290
- \uC790\uC5F0\uC5B4 \uC694\uCCAD\uC744 \uBD84\uC11D\uD558\uC5EC \uC791\uC5C5 \uADDC\uBAA8\uB97C \uD310\uB2E8\uD558\uACE0, \uC801\uC808\uD55C SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
2666
+ \`\`\`bash
2667
+ sdd domain show auth
2668
+ \`\`\`
2291
2669
 
2292
- ## \uBD84\uC11D \uAE30\uC900
2670
+ ### link / unlink
2293
2671
 
2294
- ### \uC791\uC5C5 \uADDC\uBAA8 \uD310\uB2E8
2672
+ \uC2A4\uD399\uC744 \uB3C4\uBA54\uC778\uC5D0 \uC5F0\uACB0\uD558\uAC70\uB098 \uD574\uC81C\uD569\uB2C8\uB2E4.
2295
2673
 
2296
- **\uC18C\uADDC\uBAA8 (Small)**
2297
- - \uD0A4\uC6CC\uB4DC: \uC218\uC815, \uBCC0\uACBD, \uBC84\uADF8, \uC624\uD0C0, \uCD94\uAC00(\uB2E8\uC21C)
2298
- - \uC6CC\uD06C\uD50C\uB85C\uC6B0: change \uB610\uB294 \uC9C1\uC811 \uC218\uC815
2674
+ \`\`\`bash
2675
+ sdd domain link auth user-login
2676
+ sdd domain unlink auth user-login
2677
+ \`\`\`
2299
2678
 
2300
- **\uC911\uADDC\uBAA8 (Medium)**
2301
- - \uD0A4\uC6CC\uB4DC: \uAE30\uB2A5 \uCD94\uAC00, \uAC1C\uC120, \uD655\uC7A5, \uB9AC\uD329\uD130\uB9C1
2302
- - \uC6CC\uD06C\uD50C\uB85C\uC6B0: new \u2192 plan \u2192 tasks
2679
+ ### depends
2303
2680
 
2304
- **\uB300\uADDC\uBAA8 (Large)**
2305
- - \uD0A4\uC6CC\uB4DC: \uC2DC\uC2A4\uD15C, \uC544\uD0A4\uD14D\uCC98, \uB9C8\uC774\uADF8\uB808\uC774\uC158, \uC804\uBA74 \uAC1C\uD3B8
2306
- - \uC6CC\uD06C\uD50C\uB85C\uC6B0: research \u2192 new \u2192 plan \u2192 tasks \u2192 prepare
2681
+ \uB3C4\uBA54\uC778 \uAC04 \uC758\uC874\uC131\uC744 \uC124\uC815\uD569\uB2C8\uB2E4.
2307
2682
 
2308
- ### \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uC120\uD0DD
2683
+ \`\`\`bash
2684
+ sdd domain depends payment --on auth
2685
+ \`\`\`
2309
2686
 
2310
- | \uADDC\uBAA8 | \uCD94\uCC9C \uC6CC\uD06C\uD50C\uB85C\uC6B0 | \uD544\uC218 \uC0B0\uCD9C\uBB3C |
2311
- |------|----------------|-------------|
2312
- | Small | /sdd.change | proposal.md |
2313
- | Medium | /sdd.new \u2192 /sdd.plan | spec.md, plan.md |
2314
- | Large | /sdd.research \u2192 /sdd.new | research.md, spec.md, plan.md |
2687
+ ### graph
2315
2688
 
2316
- ## \uC0AC\uC6A9 \uBC29\uBC95
2689
+ \uB3C4\uBA54\uC778 \uC758\uC874\uC131 \uADF8\uB798\uD504\uB97C \uC2DC\uAC01\uD654\uD569\uB2C8\uB2E4.
2317
2690
 
2318
- 1. \uC0AC\uC6A9\uC790\uC758 \uC694\uCCAD\uC744 \uC785\uB825\uBC1B\uC2B5\uB2C8\uB2E4
2319
- 2. \uD0A4\uC6CC\uB4DC\uC640 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBD84\uC11D\uD569\uB2C8\uB2E4
2320
- 3. \uC791\uC5C5 \uADDC\uBAA8\uB97C \uD310\uB2E8\uD569\uB2C8\uB2E4
2321
- 4. \uC801\uC808\uD55C \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4
2691
+ \`\`\`bash
2692
+ sdd domain graph # Mermaid \uD615\uC2DD
2693
+ sdd domain graph --format dot # DOT \uD615\uC2DD
2694
+ \`\`\`
2322
2695
 
2323
- ## \uC608\uC2DC
2696
+ ### validate
2324
2697
 
2325
- **\uC785\uB825:** "\uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\uD574\uC918"
2326
- **\uBD84\uC11D:**
2327
- - \uD0A4\uC6CC\uB4DC: "\uAE30\uB2A5 \uCD94\uAC00" \u2192 \uC911\uADDC\uBAA8
2328
- - \uCD94\uCC9C: /sdd.new \u2192 /sdd.plan \u2192 /sdd.tasks \u2192 /sdd.implement
2698
+ \uB3C4\uBA54\uC778 \uAD6C\uC870\uB97C \uAC80\uC99D\uD569\uB2C8\uB2E4.
2329
2699
 
2330
- **\uC785\uB825:** "\uB85C\uADF8\uC778 \uBC84\uD2BC \uC0C9\uC0C1 \uBCC0\uACBD"
2331
- **\uBD84\uC11D:**
2332
- - \uD0A4\uC6CC\uB4DC: "\uBCC0\uACBD" \u2192 \uC18C\uADDC\uBAA8
2333
- - \uCD94\uCC9C: \uC9C1\uC811 \uC218\uC815 \uB610\uB294 /sdd.change
2700
+ \`\`\`bash
2701
+ sdd domain validate
2702
+ \`\`\`
2334
2703
 
2335
- **\uC785\uB825:** "\uB9C8\uC774\uD06C\uB85C\uC11C\uBE44\uC2A4 \uC544\uD0A4\uD14D\uCC98\uB85C \uC804\uD658"
2336
- **\uBD84\uC11D:**
2337
- - \uD0A4\uC6CC\uB4DC: "\uC544\uD0A4\uD14D\uCC98", "\uC804\uD658" \u2192 \uB300\uADDC\uBAA8
2338
- - \uCD94\uCC9C: /sdd.research \u2192 /sdd.new \u2192 /sdd.plan
2704
+ \uAC80\uC99D \uD56D\uBAA9:
2705
+ - \uC21C\uD658 \uC758\uC874\uC131 \uAC10\uC9C0
2706
+ - \uACE0\uC544 \uC2A4\uD399 \uD655\uC778
2707
+ - \uC2A4\uD0A4\uB9C8 \uC720\uD6A8\uC131
2708
+
2709
+ ## \uB2E4\uC74C \uB2E8\uACC4
2710
+
2711
+ - \uB3C4\uBA54\uC778 \uC0DD\uC131 \uD6C4: \`/sdd.context set <domain>\`\uC73C\uB85C \uC791\uC5C5 \uCEE8\uD14D\uC2A4\uD2B8 \uC124\uC815
2712
+ - \uC2A4\uD399 \uC5F0\uACB0 \uD6C4: \`/sdd.domain graph\`\uB85C \uAD6C\uC870 \uD655\uC778
2339
2713
  `
2340
- },
2341
- {
2342
- name: "sdd.chat",
2343
- content: `\uB300\uD654\uD615 SDD \uC5B4\uC2DC\uC2A4\uD134\uD2B8\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4.
2714
+ };
2715
+
2716
+ // src/generators/claude-commands/domain/context.ts
2717
+ var contextCommand = {
2718
+ name: "sdd.context",
2719
+ content: `\uC791\uC5C5 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uAD00\uB9AC\uD569\uB2C8\uB2E4.
2344
2720
 
2345
2721
  ## \uAC1C\uC694
2346
2722
 
2347
- \uC790\uC5F0\uC5B4\uB85C SDD \uC791\uC5C5\uC744 \uC218\uD589\uD560 \uC218 \uC788\uB294 \uB300\uD654\uD615 \uC778\uD130\uD398\uC774\uC2A4\uC785\uB2C8\uB2E4.
2348
- \uC9C8\uBB38, \uBA85\uC138 \uC791\uC131, \uAC80\uD1A0, \uAD6C\uD604 \uB4F1 \uBAA8\uB4E0 SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uB300\uD654\uB85C \uC9C4\uD589\uD569\uB2C8\uB2E4.
2723
+ \uD604\uC7AC \uC791\uC5C5 \uC911\uC778 \uB3C4\uBA54\uC778 \uBC94\uC704\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.
2724
+ \uB300\uADDC\uBAA8 \uD504\uB85C\uC81D\uD2B8\uC5D0\uC11C \uAD00\uB828 \uC2A4\uD399\uB9CC \uC9D1\uC911\uD558\uC5EC \uC791\uC5C5\uD560 \uB54C \uC0AC\uC6A9\uD569\uB2C8\uB2E4.
2349
2725
 
2350
- ## \uB300\uD654 \uBAA8\uB4DC
2726
+ ## \uD558\uC704 \uBA85\uB839\uC5B4
2351
2727
 
2352
- ### 1. \uC9C8\uBB38 \uBAA8\uB4DC (Ask)
2728
+ \`\`\`
2729
+ /sdd.context set <domain...> # \uCEE8\uD14D\uC2A4\uD2B8 \uC124\uC815
2730
+ /sdd.context show # \uD604\uC7AC \uCEE8\uD14D\uC2A4\uD2B8
2731
+ /sdd.context clear # \uCEE8\uD14D\uC2A4\uD2B8 \uD574\uC81C
2732
+ /sdd.context specs # \uCEE8\uD14D\uC2A4\uD2B8 \uB0B4 \uC2A4\uD399 \uBAA9\uB85D
2733
+ /sdd.context export # \uD504\uB86C\uD504\uD2B8 \uB0B4\uBCF4\uB0B4\uAE30
2734
+ \`\`\`
2353
2735
 
2354
- SDD\uB098 \uD604\uC7AC \uD504\uB85C\uC81D\uD2B8\uC5D0 \uB300\uD574 \uC9C8\uBB38\uD569\uB2C8\uB2E4:
2355
- - "\uC774 \uC2A4\uD399\uC758 \uC758\uC874\uC131\uC740 \uBB50\uC57C?"
2356
- - "RFC 2119 \uD0A4\uC6CC\uB4DC\uB294 \uC5B4\uB5BB\uAC8C \uC0AC\uC6A9\uD574?"
2357
- - "\uB2E4\uC74C\uC5D0 \uBB58 \uD574\uC57C \uD574?"
2736
+ ### set
2358
2737
 
2359
- ### 2. \uC791\uC131 \uBAA8\uB4DC (Write)
2738
+ \uC791\uC5C5 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uC124\uC815\uD569\uB2C8\uB2E4.
2739
+
2740
+ \`\`\`bash
2741
+ sdd context set auth
2742
+ sdd context set auth payment order
2743
+ sdd context set auth --include-deps # \uC758\uC874 \uB3C4\uBA54\uC778 \uD3EC\uD568
2744
+ \`\`\`
2745
+
2746
+ ### show
2747
+
2748
+ \uD604\uC7AC \uC124\uC815\uB41C \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.
2749
+
2750
+ \`\`\`bash
2751
+ sdd context show
2752
+ \`\`\`
2753
+
2754
+ ### add / remove
2755
+
2756
+ \uCEE8\uD14D\uC2A4\uD2B8\uC5D0 \uB3C4\uBA54\uC778\uC744 \uCD94\uAC00\uD558\uAC70\uB098 \uC81C\uAC70\uD569\uB2C8\uB2E4.
2757
+
2758
+ \`\`\`bash
2759
+ sdd context add order
2760
+ sdd context remove payment
2761
+ \`\`\`
2360
2762
 
2361
- \uBA85\uC138\uB098 \uBB38\uC11C\uB97C \uB300\uD654\uD615\uC73C\uB85C \uC791\uC131\uD569\uB2C8\uB2E4:
2362
- - "\uC0C8 \uAE30\uB2A5 \uBA85\uC138 \uC791\uC131\uD574\uC918"
2363
- - "\uC774 \uC694\uAD6C\uC0AC\uD56D\uC744 \uC2DC\uB098\uB9AC\uC624\uB85C \uBC14\uAFD4\uC918"
2364
- - "plan.md \uC791\uC131 \uB3C4\uC640\uC918"
2763
+ ### clear
2365
2764
 
2366
- ### 3. \uAC80\uD1A0 \uBAA8\uB4DC (Review)
2765
+ \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uD574\uC81C\uD569\uB2C8\uB2E4.
2367
2766
 
2368
- \uAE30\uC874 \uBA85\uC138\uB97C \uAC80\uD1A0\uD558\uACE0 \uD53C\uB4DC\uBC31\uD569\uB2C8\uB2E4:
2369
- - "spec.md \uAC80\uD1A0\uD574\uC918"
2370
- - "\uC774 \uC2DC\uB098\uB9AC\uC624 \uAD1C\uCC2E\uC544?"
2371
- - "RFC 2119 \uD0A4\uC6CC\uB4DC \uC0AC\uC6A9\uC774 \uB9DE\uC544?"
2767
+ \`\`\`bash
2768
+ sdd context clear
2769
+ \`\`\`
2372
2770
 
2373
- ### 4. \uC2E4\uD589 \uBAA8\uB4DC (Execute)
2771
+ ### specs
2374
2772
 
2375
- SDD \uBA85\uB839\uC5B4\uB97C \uB300\uC2E0 \uC2E4\uD589\uD569\uB2C8\uB2E4:
2376
- - "\uC2A4\uD399 \uAC80\uC99D\uD574\uC918"
2377
- - "\uC601\uD5A5\uB3C4 \uBD84\uC11D\uD574\uC918"
2378
- - "\uBCC0\uACBD \uC81C\uC548 \uBAA9\uB85D \uBCF4\uC5EC\uC918"
2773
+ \uCEE8\uD14D\uC2A4\uD2B8 \uB0B4 \uC2A4\uD399 \uBAA9\uB85D\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4.
2379
2774
 
2380
- ## \uCEE8\uD14D\uC2A4\uD2B8 \uC720\uC9C0
2775
+ \`\`\`bash
2776
+ sdd context specs
2777
+ \`\`\`
2381
2778
 
2382
- \uB300\uD654 \uC911 \uB2E4\uC74C \uC815\uBCF4\uB97C \uC790\uB3D9\uC73C\uB85C \uCD94\uC801\uD569\uB2C8\uB2E4:
2383
- - \uD604\uC7AC \uC791\uC5C5 \uC911\uC778 \uC2A4\uD399
2384
- - \uCD5C\uADFC \uC2E4\uD589\uD55C \uBA85\uB839\uC5B4
2385
- - \uBC1C\uACAC\uB41C \uBB38\uC81C\uC810
2386
- - \uB2E4\uC74C \uB2E8\uACC4 \uC81C\uC548
2779
+ ### export
2387
2780
 
2388
- ## \uC0AC\uC6A9 \uC608\uC2DC
2781
+ \uCEE8\uD14D\uC2A4\uD2B8 \uAE30\uBC18 \uD504\uB86C\uD504\uD2B8\uB97C \uB0B4\uBCF4\uB0C5\uB2C8\uB2E4.
2389
2782
 
2390
- **\uB300\uD654 \uC2DC\uC791:**
2391
- > \uC0C8\uB85C\uC6B4 \uC778\uC99D \uAE30\uB2A5\uC744 \uB9CC\uB4E4\uACE0 \uC2F6\uC5B4
2783
+ \`\`\`bash
2784
+ sdd context export
2785
+ sdd context export --format markdown
2786
+ \`\`\`
2392
2787
 
2393
- **\uC751\uB2F5:**
2394
- 1. \uAE30\uB2A5 \uC774\uB984\uACFC \uC124\uBA85\uC744 \uC54C\uB824\uC8FC\uC138\uC694
2395
- 2. \uC8FC\uC694 \uC694\uAD6C\uC0AC\uD56D\uC740 \uBB34\uC5C7\uC778\uAC00\uC694?
2396
- 3. \uC5B4\uB5A4 \uC778\uC99D \uBC29\uC2DD\uC744 \uC0AC\uC6A9\uD558\uB098\uC694?
2788
+ ## \uCEE8\uD14D\uC2A4\uD2B8 \uD6A8\uACFC
2397
2789
 
2398
- **\uB300\uD654 \uC9C4\uD589:**
2399
- > \uC774\uBA54\uC77C/\uBE44\uBC00\uBC88\uD638 \uC778\uC99D\uC774\uC57C. \uC18C\uC15C \uB85C\uADF8\uC778\uC740 \uB098\uC911\uC5D0
2790
+ \uCEE8\uD14D\uC2A4\uD2B8\uAC00 \uC124\uC815\uB418\uBA74:
2400
2791
 
2401
- **\uC751\uB2F5:**
2402
- \uAE30\uBCF8 \uC778\uC99D \uC2A4\uD399\uC744 \uC791\uC131\uD569\uB2C8\uB2E4...
2403
- [spec.md \uC791\uC131 \uC2DC\uC791]
2792
+ 1. **\uC2A4\uD399 \uC0DD\uC131**: \`/sdd.new\`\uC5D0\uC11C \uB3C4\uBA54\uC778 \uC790\uB3D9 \uAC10\uC9C0
2793
+ 2. **\uAC80\uC99D**: \`/sdd.validate\`\uC5D0\uC11C \uD574\uB2F9 \uB3C4\uBA54\uC778\uB9CC \uAC80\uC99D
2794
+ 3. **\uBAA9\uB85D**: \`/sdd.list\`\uC5D0\uC11C \uCEE8\uD14D\uC2A4\uD2B8 \uC2A4\uD399\uB9CC \uD45C\uC2DC
2795
+ 4. **\uAD6C\uD604**: \uAD6C\uD604 \uC2DC \uAD00\uB828 \uC2A4\uD399 \uCC38\uC870
2404
2796
 
2405
- ## \uC885\uB8CC
2797
+ ## \uB2E4\uC74C \uB2E8\uACC4
2406
2798
 
2407
- \uB300\uD654\uB97C \uC885\uB8CC\uD558\uB824\uBA74:
2408
- - "\uB05D" \uB610\uB294 "\uC885\uB8CC"
2409
- - \uB2E4\uB978 \uC2AC\uB798\uC2DC \uCEE4\uB9E8\uB4DC \uC0AC\uC6A9
2799
+ - \uCEE8\uD14D\uC2A4\uD2B8 \uC124\uC815 \uD6C4: \`/sdd.new\`\uB85C \uC2A4\uD399 \uC791\uC131
2800
+ - \uC791\uC5C5 \uC644\uB8CC \uD6C4: \`/sdd.context clear\`\uB85C \uD574\uC81C
2410
2801
  `
2411
- },
2412
- {
2413
- name: "sdd.guide",
2414
- content: `SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uAC00\uC774\uB4DC\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.
2802
+ };
2803
+
2804
+ // src/generators/claude-commands/utils/guide.ts
2805
+ var guideCommand = {
2806
+ name: "sdd.guide",
2807
+ content: `SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uAC00\uC774\uB4DC\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.
2415
2808
 
2416
2809
  ## \uAC1C\uC694
2417
2810
 
@@ -2512,576 +2905,549 @@ sdd transition guide # \uC804\uD658 \uAC00\uC774\uB4DC
2512
2905
  - \`sdd --help\` - CLI \uB3C4\uC6C0\uB9D0
2513
2906
  - \`sdd <command> --help\` - \uBA85\uB839\uC5B4\uBCC4 \uB3C4\uC6C0\uB9D0
2514
2907
  `
2515
- },
2516
- {
2517
- name: "sdd.transition",
2518
- content: `\uC6CC\uD06C\uD50C\uB85C\uC6B0 \uAC04 \uC804\uD658\uC744 \uC218\uD589\uD569\uB2C8\uB2E4.
2519
-
2520
- ## \uAC1C\uC694
2521
-
2522
- \uC791\uC5C5 \uC911 \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uBCC0\uACBD\uD574\uC57C \uD560 \uB54C \uC0AC\uC6A9\uD569\uB2C8\uB2E4:
2523
- - **new \u2192 change**: \uC0C8 \uAE30\uB2A5\uC774 \uAE30\uC874 \uC2A4\uD399 \uC218\uC815\uC73C\uB85C \uBCC0\uACBD
2524
- - **change \u2192 new**: \uBCC0\uACBD \uBC94\uC704\uAC00 \uCEE4\uC11C \uC0C8 \uAE30\uB2A5\uC73C\uB85C \uBD84\uB9AC
2525
-
2526
- ## new \u2192 change \uC804\uD658
2527
-
2528
- ### \uC0AC\uC6A9 \uC2DC\uC810
2529
- - \uC0C8 \uAE30\uB2A5 \uC791\uC131 \uC911 \uAE30\uC874 \uC2A4\uD399\uACFC \uC911\uBCF5 \uBC1C\uACAC
2530
- - \uAE30\uC874 \uAE30\uB2A5 \uD655\uC7A5\uC774 \uB354 \uC801\uC808\uD55C \uACBD\uC6B0
2531
- - \uC758\uC874\uC131 \uBD84\uC11D \uACB0\uACFC \uAE30\uC874 \uC2A4\uD399 \uC218\uC815 \uD544\uC694
2532
-
2533
- ### \uBA85\uB839\uC5B4
2534
-
2535
- \`\`\`bash
2536
- sdd transition new-to-change <spec-id>
2537
- -t, --title <title> # \uBCC0\uACBD \uC81C\uC548 \uC81C\uBAA9
2538
- -r, --reason <reason> # \uC804\uD658 \uC0AC\uC720
2539
- \`\`\`
2540
-
2541
- ### \uACB0\uACFC
2542
- - \uC0C8 \uBCC0\uACBD \uC81C\uC548 \uC0DD\uC131 (.sdd/changes/<id>/)
2543
- - proposal.md, delta.md, tasks.md \uC0DD\uC131
2544
- - \uAE30\uC874 \uC2A4\uD399 \uCC38\uC870 \uC790\uB3D9 \uC124\uC815
2545
-
2546
- ## change \u2192 new \uC804\uD658
2908
+ };
2547
2909
 
2548
- ### \uC0AC\uC6A9 \uC2DC\uC810
2549
- - \uBCC0\uACBD \uBC94\uC704\uAC00 \uB108\uBB34 \uCEE4\uC11C \uBCC4\uB3C4 \uAE30\uB2A5\uC73C\uB85C \uBD84\uB9AC \uD544\uC694
2550
- - \uAE30\uC874 \uC2A4\uD399\uACFC \uB3C5\uB9BD\uC801\uC778 \uC0C8 \uAE30\uB2A5\uC73C\uB85C \uBC1C\uC804
2551
- - \uC601\uD5A5\uB3C4 \uBD84\uC11D \uACB0\uACFC \uBD84\uB9AC\uAC00 \uC548\uC804
2910
+ // src/generators/claude-commands/utils/chat.ts
2911
+ var chatCommand = {
2912
+ name: "sdd.chat",
2913
+ content: `\uB300\uD654\uD615 SDD \uC5B4\uC2DC\uC2A4\uD134\uD2B8\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4.
2552
2914
 
2553
- ### \uBA85\uB839\uC5B4
2915
+ ## \uAC1C\uC694
2554
2916
 
2555
- \`\`\`bash
2556
- sdd transition change-to-new <change-id>
2557
- -n, --name <name> # \uC0C8 \uAE30\uB2A5 \uC774\uB984
2558
- -r, --reason <reason> # \uC804\uD658 \uC0AC\uC720
2559
- \`\`\`
2917
+ \uC790\uC5F0\uC5B4\uB85C SDD \uC791\uC5C5\uC744 \uC218\uD589\uD560 \uC218 \uC788\uB294 \uB300\uD654\uD615 \uC778\uD130\uD398\uC774\uC2A4\uC785\uB2C8\uB2E4.
2918
+ \uC9C8\uBB38, \uBA85\uC138 \uC791\uC131, \uAC80\uD1A0, \uAD6C\uD604 \uB4F1 \uBAA8\uB4E0 SDD \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uB300\uD654\uB85C \uC9C4\uD589\uD569\uB2C8\uB2E4.
2560
2919
 
2561
- ### \uACB0\uACFC
2562
- - \uC0C8 \uC2A4\uD399 \uC0DD\uC131 (.sdd/specs/<name>/)
2563
- - spec.md, plan.md, tasks.md \uC0DD\uC131
2564
- - \uC6D0\uBCF8 \uBCC0\uACBD \uC81C\uC548\uC740 'transitioned' \uC0C1\uD0DC\uB85C \uBCC0\uACBD
2920
+ ## \uB300\uD654 \uBAA8\uB4DC
2565
2921
 
2566
- ## \uC804\uD658 \uD310\uB2E8 \uAE30\uC900
2922
+ ### 1. \uC9C8\uBB38 \uBAA8\uB4DC (Ask)
2567
2923
 
2568
- ### new \u2192 change \uAD8C\uC7A5
2569
- - \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399 \uC218 \u2264 3\uAC1C
2570
- - \uBCC0\uACBD\uC774 \uAE30\uC874 \uAE30\uB2A5\uC758 \uC790\uC5F0\uC2A4\uB7EC\uC6B4 \uD655\uC7A5
2571
- - \uC0C8 \uC2DC\uB098\uB9AC\uC624 \uCD94\uAC00\uBCF4\uB2E4 \uAE30\uC874 \uC2DC\uB098\uB9AC\uC624 \uC218\uC815 \uC911\uC2EC
2924
+ SDD\uB098 \uD604\uC7AC \uD504\uB85C\uC81D\uD2B8\uC5D0 \uB300\uD574 \uC9C8\uBB38\uD569\uB2C8\uB2E4:
2925
+ - "\uC774 \uC2A4\uD399\uC758 \uC758\uC874\uC131\uC740 \uBB50\uC57C?"
2926
+ - "RFC 2119 \uD0A4\uC6CC\uB4DC\uB294 \uC5B4\uB5BB\uAC8C \uC0AC\uC6A9\uD574?"
2927
+ - "\uB2E4\uC74C\uC5D0 \uBB58 \uD574\uC57C \uD574?"
2572
2928
 
2573
- ### change \u2192 new \uAD8C\uC7A5
2574
- - \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399 \uC218 > 3\uAC1C
2575
- - \uC0C8\uB85C\uC6B4 \uAC1C\uB150/\uB3C4\uBA54\uC778 \uB3C4\uC785
2576
- - \uAE30\uC874 \uC2A4\uD399\uACFC \uB3C5\uB9BD\uC801\uC73C\uB85C \uD14C\uC2A4\uD2B8 \uAC00\uB2A5
2929
+ ### 2. \uC791\uC131 \uBAA8\uB4DC (Write)
2577
2930
 
2578
- ## \uAC00\uC774\uB4DC \uBCF4\uAE30
2931
+ \uBA85\uC138\uB098 \uBB38\uC11C\uB97C \uB300\uD654\uD615\uC73C\uB85C \uC791\uC131\uD569\uB2C8\uB2E4:
2932
+ - "\uC0C8 \uAE30\uB2A5 \uBA85\uC138 \uC791\uC131\uD574\uC918"
2933
+ - "\uC774 \uC694\uAD6C\uC0AC\uD56D\uC744 \uC2DC\uB098\uB9AC\uC624\uB85C \uBC14\uAFD4\uC918"
2934
+ - "plan.md \uC791\uC131 \uB3C4\uC640\uC918"
2579
2935
 
2580
- \`\`\`bash
2581
- sdd transition guide
2582
- \`\`\`
2583
- `
2584
- },
2585
- // CLI 래퍼 커맨드들
2586
- {
2587
- name: "sdd.search",
2588
- content: `---
2589
- description: SDD \uC2A4\uD399\uC744 \uAC80\uC0C9\uD569\uB2C8\uB2E4
2590
- allowed-tools: Bash, Read
2591
- argument-hint: [query] [--status draft] [--phase phase1]
2592
- ---
2936
+ ### 3. \uAC80\uD1A0 \uBAA8\uB4DC (Review)
2593
2937
 
2594
- sdd search \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2938
+ \uAE30\uC874 \uBA85\uC138\uB97C \uAC80\uD1A0\uD558\uACE0 \uD53C\uB4DC\uBC31\uD569\uB2C8\uB2E4:
2939
+ - "spec.md \uAC80\uD1A0\uD574\uC918"
2940
+ - "\uC774 \uC2DC\uB098\uB9AC\uC624 \uAD1C\uCC2E\uC544?"
2941
+ - "RFC 2119 \uD0A4\uC6CC\uB4DC \uC0AC\uC6A9\uC774 \uB9DE\uC544?"
2595
2942
 
2596
- \`\`\`bash
2597
- sdd search $ARGUMENTS
2598
- \`\`\`
2943
+ ### 4. \uC2E4\uD589 \uBAA8\uB4DC (Execute)
2599
2944
 
2600
- ## \uC635\uC158
2945
+ SDD \uBA85\uB839\uC5B4\uB97C \uB300\uC2E0 \uC2E4\uD589\uD569\uB2C8\uB2E4:
2946
+ - "\uC2A4\uD399 \uAC80\uC99D\uD574\uC918"
2947
+ - "\uC601\uD5A5\uB3C4 \uBD84\uC11D\uD574\uC918"
2948
+ - "\uBCC0\uACBD \uC81C\uC548 \uBAA9\uB85D \uBCF4\uC5EC\uC918"
2601
2949
 
2602
- - \`--status <status>\`: \uC0C1\uD0DC \uD544\uD130 (draft, review, approved)
2603
- - \`--phase <phase>\`: Phase \uD544\uD130
2604
- - \`--author <name>\`: \uC791\uC131\uC790 \uD544\uD130
2605
- - \`--tags <tags>\`: \uD0DC\uADF8 \uD544\uD130 (\uCF64\uB9C8 \uAD6C\uBD84)
2606
- - \`--depends-on <spec>\`: \uC758\uC874\uC131 \uD544\uD130
2607
- - \`--limit <n>\`: \uACB0\uACFC \uC81C\uD55C
2608
- - \`--sort-by <field>\`: \uC815\uB82C \uAE30\uC900 (relevance, created, updated, title, status)
2609
- - \`-r, --regex\`: \uC815\uADDC\uC2DD \uAC80\uC0C9
2610
- - \`-c, --case-sensitive\`: \uB300\uC18C\uBB38\uC790 \uAD6C\uBD84
2611
- - \`--json\`: JSON \uCD9C\uB825
2950
+ ## \uCEE8\uD14D\uC2A4\uD2B8 \uC720\uC9C0
2612
2951
 
2613
- \uAC80\uC0C9 \uACB0\uACFC\uB97C \uBD84\uC11D\uD558\uACE0 \uAD00\uB828 \uC2A4\uD399 \uC815\uBCF4\uB97C \uC694\uC57D\uD574\uC8FC\uC138\uC694.
2614
- `
2615
- },
2616
- {
2617
- name: "sdd.quality",
2618
- content: `---
2619
- description: SDD \uC2A4\uD399 \uD488\uC9C8\uC744 \uBD84\uC11D\uD569\uB2C8\uB2E4
2620
- allowed-tools: Bash, Read
2621
- argument-hint: [specId] [--all] [--json]
2622
- ---
2952
+ \uB300\uD654 \uC911 \uB2E4\uC74C \uC815\uBCF4\uB97C \uC790\uB3D9\uC73C\uB85C \uCD94\uC801\uD569\uB2C8\uB2E4:
2953
+ - \uD604\uC7AC \uC791\uC5C5 \uC911\uC778 \uC2A4\uD399
2954
+ - \uCD5C\uADFC \uC2E4\uD589\uD55C \uBA85\uB839\uC5B4
2955
+ - \uBC1C\uACAC\uB41C \uBB38\uC81C\uC810
2956
+ - \uB2E4\uC74C \uB2E8\uACC4 \uC81C\uC548
2623
2957
 
2624
- sdd quality \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2958
+ ## \uC0AC\uC6A9 \uC608\uC2DC
2625
2959
 
2626
- \`\`\`bash
2627
- sdd quality $ARGUMENTS
2628
- \`\`\`
2960
+ **\uB300\uD654 \uC2DC\uC791:**
2961
+ > \uC0C8\uB85C\uC6B4 \uC778\uC99D \uAE30\uB2A5\uC744 \uB9CC\uB4E4\uACE0 \uC2F6\uC5B4
2629
2962
 
2630
- ## \uC635\uC158
2963
+ **\uC751\uB2F5:**
2964
+ 1. \uAE30\uB2A5 \uC774\uB984\uACFC \uC124\uBA85\uC744 \uC54C\uB824\uC8FC\uC138\uC694
2965
+ 2. \uC8FC\uC694 \uC694\uAD6C\uC0AC\uD56D\uC740 \uBB34\uC5C7\uC778\uAC00\uC694?
2966
+ 3. \uC5B4\uB5A4 \uC778\uC99D \uBC29\uC2DD\uC744 \uC0AC\uC6A9\uD558\uB098\uC694?
2631
2967
 
2632
- - \`--all\`: \uBAA8\uB4E0 \uC2A4\uD399 \uBD84\uC11D
2633
- - \`--json\`: JSON \uD615\uC2DD \uCD9C\uB825
2634
- - \`--min-score <n>\`: \uCD5C\uC18C \uC810\uC218 \uAE30\uC900
2968
+ **\uB300\uD654 \uC9C4\uD589:**
2969
+ > \uC774\uBA54\uC77C/\uBE44\uBC00\uBC88\uD638 \uC778\uC99D\uC774\uC57C. \uC18C\uC15C \uB85C\uADF8\uC778\uC740 \uB098\uC911\uC5D0
2635
2970
 
2636
- ## \uB4F1\uAE09 \uAE30\uC900
2971
+ **\uC751\uB2F5:**
2972
+ \uAE30\uBCF8 \uC778\uC99D \uC2A4\uD399\uC744 \uC791\uC131\uD569\uB2C8\uB2E4...
2973
+ [spec.md \uC791\uC131 \uC2DC\uC791]
2637
2974
 
2638
- | \uB4F1\uAE09 | \uC810\uC218 | \uC124\uBA85 |
2639
- |------|------|------|
2640
- | A | 90-100 | \uC6B0\uC218 |
2641
- | B | 80-89 | \uC591\uD638 |
2642
- | C | 70-79 | \uBCF4\uD1B5 |
2643
- | D | 60-69 | \uBBF8\uD761 |
2644
- | F | 0-59 | \uBD80\uC871 |
2975
+ ## \uC885\uB8CC
2645
2976
 
2646
- \uBD84\uC11D \uACB0\uACFC\uB97C \uBC14\uD0D5\uC73C\uB85C \uD488\uC9C8 \uAC1C\uC120 \uBC29\uC548\uC744 \uC81C\uC548\uD574\uC8FC\uC138\uC694.
2977
+ \uB300\uD654\uB97C \uC885\uB8CC\uD558\uB824\uBA74:
2978
+ - "\uB05D" \uB610\uB294 "\uC885\uB8CC"
2979
+ - \uB2E4\uB978 \uC2AC\uB798\uC2DC \uCEE4\uB9E8\uB4DC \uC0AC\uC6A9
2647
2980
  `
2648
- },
2649
- {
2650
- name: "sdd.report",
2651
- content: `---
2652
- description: SDD \uD504\uB85C\uC81D\uD2B8 \uB9AC\uD3EC\uD2B8\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4
2653
- allowed-tools: Bash, Read, Write
2654
- argument-hint: [--format html] [-o report.html]
2655
- ---
2981
+ };
2656
2982
 
2657
- sdd report \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
2983
+ // src/generators/claude-commands/utils/transition.ts
2984
+ var transitionCommand = {
2985
+ name: "sdd.transition",
2986
+ content: `\uC6CC\uD06C\uD50C\uB85C\uC6B0 \uAC04 \uC804\uD658\uC744 \uC218\uD589\uD569\uB2C8\uB2E4.
2658
2987
 
2659
- \`\`\`bash
2660
- sdd report $ARGUMENTS
2661
- \`\`\`
2988
+ ## \uAC1C\uC694
2662
2989
 
2663
- ## \uC635\uC158
2990
+ \uC791\uC5C5 \uC911 \uC6CC\uD06C\uD50C\uB85C\uC6B0\uB97C \uBCC0\uACBD\uD574\uC57C \uD560 \uB54C \uC0AC\uC6A9\uD569\uB2C8\uB2E4:
2991
+ - **new \u2192 change**: \uC0C8 \uAE30\uB2A5\uC774 \uAE30\uC874 \uC2A4\uD399 \uC218\uC815\uC73C\uB85C \uBCC0\uACBD
2992
+ - **change \u2192 new**: \uBCC0\uACBD \uBC94\uC704\uAC00 \uCEE4\uC11C \uC0C8 \uAE30\uB2A5\uC73C\uB85C \uBD84\uB9AC
2664
2993
 
2665
- - \`--format <type>\`: \uCD9C\uB825 \uD615\uC2DD (html, markdown, json)
2666
- - \`-o, --output <path>\`: \uD30C\uC77C\uB85C \uC800\uC7A5
2667
- - \`--title <title>\`: \uB9AC\uD3EC\uD2B8 \uC81C\uBAA9
2668
- - \`--no-quality\`: \uD488\uC9C8 \uBD84\uC11D \uC81C\uC678
2669
- - \`--no-validation\`: \uAC80\uC99D \uACB0\uACFC \uC81C\uC678
2994
+ ## new \u2192 change \uC804\uD658
2670
2995
 
2671
- \uB9AC\uD3EC\uD2B8 \uB0B4\uC6A9\uC744 \uC694\uC57D\uD558\uACE0 \uC8FC\uC694 \uC9C0\uD45C\uB97C \uC124\uBA85\uD574\uC8FC\uC138\uC694.
2672
- `
2673
- },
2674
- {
2675
- name: "sdd.impact",
2676
- content: `---
2677
- description: SDD \uC2A4\uD399 \uBCC0\uACBD\uC758 \uC601\uD5A5\uB3C4\uB97C \uBD84\uC11D\uD569\uB2C8\uB2E4
2678
- allowed-tools: Bash, Read
2679
- argument-hint: <specId> [--graph] [--code] [--json]
2680
- ---
2996
+ ### \uC0AC\uC6A9 \uC2DC\uC810
2997
+ - \uC0C8 \uAE30\uB2A5 \uC791\uC131 \uC911 \uAE30\uC874 \uC2A4\uD399\uACFC \uC911\uBCF5 \uBC1C\uACAC
2998
+ - \uAE30\uC874 \uAE30\uB2A5 \uD655\uC7A5\uC774 \uB354 \uC801\uC808\uD55C \uACBD\uC6B0
2999
+ - \uC758\uC874\uC131 \uBD84\uC11D \uACB0\uACFC \uAE30\uC874 \uC2A4\uD399 \uC218\uC815 \uD544\uC694
2681
3000
 
2682
- sdd impact \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3001
+ ### \uBA85\uB839\uC5B4
2683
3002
 
2684
3003
  \`\`\`bash
2685
- sdd impact $ARGUMENTS
3004
+ sdd transition new-to-change <spec-id>
3005
+ -t, --title <title> # \uBCC0\uACBD \uC81C\uC548 \uC81C\uBAA9
3006
+ -r, --reason <reason> # \uC804\uD658 \uC0AC\uC720
2686
3007
  \`\`\`
2687
3008
 
2688
- ## \uC635\uC158
2689
-
2690
- - \`--graph\`: Mermaid \uC758\uC874\uC131 \uADF8\uB798\uD504 \uCD9C\uB825
2691
- - \`--code\`: \uCF54\uB4DC \uC601\uD5A5\uB3C4 \uBD84\uC11D
2692
- - \`--json\`: JSON \uD615\uC2DD \uCD9C\uB825
2693
-
2694
- ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
3009
+ ### \uACB0\uACFC
3010
+ - \uC0C8 \uBCC0\uACBD \uC81C\uC548 \uC0DD\uC131 (.sdd/changes/<id>/)
3011
+ - proposal.md, delta.md, tasks.md \uC0DD\uC131
3012
+ - \uAE30\uC874 \uC2A4\uD399 \uCC38\uC870 \uC790\uB3D9 \uC124\uC815
2695
3013
 
2696
- - \`report\`: \uC804\uCCB4 \uD504\uB85C\uC81D\uD2B8 \uC601\uD5A5\uB3C4 \uB9AC\uD3EC\uD2B8
2697
- - \`change <id>\`: \uBCC0\uACBD \uC81C\uC548\uC758 \uC601\uD5A5\uB3C4
2698
- - \`simulate --remove <spec>\`: What-if \uC2DC\uBBAC\uB808\uC774\uC158
3014
+ ## change \u2192 new \uC804\uD658
2699
3015
 
2700
- \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399\uACFC \uCF54\uB4DC\uB97C \uBD84\uC11D\uD558\uACE0 \uBCC0\uACBD \uC804\uB7B5\uC744 \uC81C\uC548\uD574\uC8FC\uC138\uC694.
2701
- `
2702
- },
2703
- {
2704
- name: "sdd.list",
2705
- content: `---
2706
- description: SDD \uD56D\uBAA9 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4
2707
- allowed-tools: Bash, Read
2708
- argument-hint: [features|changes|specs|templates] [--status draft]
2709
- ---
3016
+ ### \uC0AC\uC6A9 \uC2DC\uC810
3017
+ - \uBCC0\uACBD \uBC94\uC704\uAC00 \uB108\uBB34 \uCEE4\uC11C \uBCC4\uB3C4 \uAE30\uB2A5\uC73C\uB85C \uBD84\uB9AC \uD544\uC694
3018
+ - \uAE30\uC874 \uC2A4\uD399\uACFC \uB3C5\uB9BD\uC801\uC778 \uC0C8 \uAE30\uB2A5\uC73C\uB85C \uBC1C\uC804
3019
+ - \uC601\uD5A5\uB3C4 \uBD84\uC11D \uACB0\uACFC \uBD84\uB9AC\uAC00 \uC548\uC804
2710
3020
 
2711
- sdd list \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3021
+ ### \uBA85\uB839\uC5B4
2712
3022
 
2713
3023
  \`\`\`bash
2714
- sdd list $ARGUMENTS
3024
+ sdd transition change-to-new <change-id>
3025
+ -n, --name <name> # \uC0C8 \uAE30\uB2A5 \uC774\uB984
3026
+ -r, --reason <reason> # \uC804\uD658 \uC0AC\uC720
2715
3027
  \`\`\`
2716
3028
 
2717
- ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
2718
-
2719
- - (\uC5C6\uC74C): \uD504\uB85C\uC81D\uD2B8 \uC694\uC57D
2720
- - \`features\` (f): \uAE30\uB2A5 \uBAA9\uB85D
2721
- - \`changes\` (c): \uBCC0\uACBD \uBAA9\uB85D
2722
- - \`specs\` (s): \uC2A4\uD399 \uD30C\uC77C \uBAA9\uB85D
2723
- - \`templates\` (t): \uD15C\uD50C\uB9BF \uBAA9\uB85D
3029
+ ### \uACB0\uACFC
3030
+ - \uC0C8 \uC2A4\uD399 \uC0DD\uC131 (.sdd/specs/<name>/)
3031
+ - spec.md, plan.md, tasks.md \uC0DD\uC131
3032
+ - \uC6D0\uBCF8 \uBCC0\uACBD \uC81C\uC548\uC740 'transitioned' \uC0C1\uD0DC\uB85C \uBCC0\uACBD
2724
3033
 
2725
- ## \uC635\uC158
3034
+ ## \uC804\uD658 \uD310\uB2E8 \uAE30\uC900
2726
3035
 
2727
- - \`--status <status>\`: \uC0C1\uD0DC\uBCC4 \uD544\uD130 (features)
2728
- - \`--pending\`: \uB300\uAE30 \uC911\uB9CC (changes)
2729
- - \`--archived\`: \uC544\uCE74\uC774\uBE0C\uB9CC (changes)
3036
+ ### new \u2192 change \uAD8C\uC7A5
3037
+ - \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399 \uC218 \u2264 3\uAC1C
3038
+ - \uBCC0\uACBD\uC774 \uAE30\uC874 \uAE30\uB2A5\uC758 \uC790\uC5F0\uC2A4\uB7EC\uC6B4 \uD655\uC7A5
3039
+ - \uC0C8 \uC2DC\uB098\uB9AC\uC624 \uCD94\uAC00\uBCF4\uB2E4 \uAE30\uC874 \uC2DC\uB098\uB9AC\uC624 \uC218\uC815 \uC911\uC2EC
2730
3040
 
2731
- \uBAA9\uB85D\uC744 \uBD84\uC11D\uD558\uACE0 \uC694\uC57D\uD574\uC8FC\uC138\uC694.
2732
- `
2733
- },
2734
- {
2735
- name: "sdd.migrate",
2736
- content: `---
2737
- description: \uAE30\uC874 \uD504\uB85C\uC81D\uD2B8\uB97C SDD\uB85C \uB9C8\uC774\uADF8\uB808\uC774\uC158\uD569\uB2C8\uB2E4
2738
- allowed-tools: Bash, Read
2739
- argument-hint: [detect|openspec|speckit|docs] [--dry-run]
2740
- ---
3041
+ ### change \u2192 new \uAD8C\uC7A5
3042
+ - \uC601\uD5A5\uBC1B\uB294 \uC2A4\uD399 \uC218 > 3\uAC1C
3043
+ - \uC0C8\uB85C\uC6B4 \uAC1C\uB150/\uB3C4\uBA54\uC778 \uB3C4\uC785
3044
+ - \uAE30\uC874 \uC2A4\uD399\uACFC \uB3C5\uB9BD\uC801\uC73C\uB85C \uD14C\uC2A4\uD2B8 \uAC00\uB2A5
2741
3045
 
2742
- sdd migrate \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3046
+ ## \uAC00\uC774\uB4DC \uBCF4\uAE30
2743
3047
 
2744
3048
  \`\`\`bash
2745
- sdd migrate $ARGUMENTS
3049
+ sdd transition guide
2746
3050
  \`\`\`
3051
+ `
3052
+ };
2747
3053
 
2748
- ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
3054
+ // src/generators/claude-commands/utils/research.ts
3055
+ var researchCommand = {
3056
+ name: "sdd.research",
3057
+ content: `\uAE30\uC220 \uB9AC\uC11C\uCE58 \uBB38\uC11C\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
2749
3058
 
2750
- - \`detect\`: \uAE30\uC874 \uB3C4\uAD6C \uAC10\uC9C0
2751
- - \`openspec\`: OpenSpec\uC5D0\uC11C \uB9C8\uC774\uADF8\uB808\uC774\uC158
2752
- - \`speckit\`: SpecKit\uC5D0\uC11C \uB9C8\uC774\uADF8\uB808\uC774\uC158
2753
- - \`docs\`: \uB9C8\uD06C\uB2E4\uC6B4 \uBB38\uC11C \uBCC0\uD658
3059
+ ## \uAC1C\uC694
2754
3060
 
2755
- ## \uC635\uC158
3061
+ \uAE30\uC220\uC801 \uACB0\uC815\uC774\uB098 \uC544\uD0A4\uD14D\uCC98 \uC120\uD0DD \uC804\uC5D0 \uD544\uC694\uD55C \uB9AC\uC11C\uCE58\uB97C \uBB38\uC11C\uD654\uD569\uB2C8\uB2E4.
3062
+ \uB9AC\uC11C\uCE58 \uACB0\uACFC\uB294 plan.md\uB098 \uC2A4\uD399\uC758 \uADFC\uAC70\uB85C \uD65C\uC6A9\uB429\uB2C8\uB2E4.
2756
3063
 
2757
- - \`--dry-run\`: \uBBF8\uB9AC\uBCF4\uAE30
2758
- - \`--overwrite\`: \uAE30\uC874 \uC2A4\uD399 \uB36E\uC5B4\uC4F0\uAE30
2759
- - \`--source <path>\`: \uC18C\uC2A4 \uB514\uB809\uD1A0\uB9AC
3064
+ ## \uC9C0\uC2DC\uC0AC\uD56D
2760
3065
 
2761
- \uB9C8\uC774\uADF8\uB808\uC774\uC158 \uACB0\uACFC\uB97C \uD655\uC778\uD558\uACE0 \uD544\uC694\uD55C \uD6C4\uC18D \uC791\uC5C5\uC744 \uC548\uB0B4\uD574\uC8FC\uC138\uC694.
2762
- `
2763
- },
2764
- {
2765
- name: "sdd.cicd",
2766
- content: `---
2767
- description: CI/CD \uD30C\uC774\uD504\uB77C\uC778\uC744 \uC124\uC815\uD569\uB2C8\uB2E4
2768
- allowed-tools: Bash, Read, Write
2769
- argument-hint: [setup|hooks|check] [--platform github]
2770
- ---
3066
+ 1. \uB9AC\uC11C\uCE58 \uC8FC\uC81C\uC640 \uBAA9\uC801\uC744 \uBA85\uD655\uD788 \uC815\uC758\uD558\uC138\uC694
3067
+ 2. \uBE44\uAD50\uD560 \uC635\uC158\uB4E4\uC744 \uB098\uC5F4\uD558\uC138\uC694
3068
+ 3. \uAC01 \uC635\uC158\uC758 \uC7A5\uB2E8\uC810\uC744 \uBD84\uC11D\uD558\uC138\uC694
3069
+ 4. \uAD8C\uC7A5\uC0AC\uD56D\uC744 \uB3C4\uCD9C\uD558\uC138\uC694
2771
3070
 
2772
- sdd cicd \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3071
+ ## \uB9AC\uC11C\uCE58 \uD15C\uD50C\uB9BF
2773
3072
 
2774
- \`\`\`bash
2775
- sdd cicd $ARGUMENTS
2776
- \`\`\`
3073
+ \`\`\`markdown
3074
+ # \uB9AC\uC11C\uCE58: [\uC8FC\uC81C]
2777
3075
 
2778
- ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
3076
+ > \uC791\uC131\uC77C: YYYY-MM-DD
3077
+ > \uC0C1\uD0DC: \uC9C4\uD589\uC911/\uC644\uB8CC
2779
3078
 
2780
- - \`setup\`: CI/CD \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uC0DD\uC131
2781
- - \`hooks\`: Git hooks \uC124\uC815
2782
- - \`check\`: CI \uAC80\uC99D \uC2E4\uD589
3079
+ ## \uBC30\uACBD
2783
3080
 
2784
- ## \uC635\uC158
3081
+ \uC65C \uC774 \uB9AC\uC11C\uCE58\uAC00 \uD544\uC694\uD55C\uAC00?
2785
3082
 
2786
- - \`--platform <type>\`: github, gitlab, all
3083
+ ## \uBE44\uAD50 \uB300\uC0C1
2787
3084
 
2788
- \uC0DD\uC131\uB41C CI/CD \uC124\uC815\uC744 \uD655\uC778\uD558\uACE0 \uCD94\uAC00 \uC124\uC815\uC774 \uD544\uC694\uD558\uBA74 \uC548\uB0B4\uD574\uC8FC\uC138\uC694.
2789
- `
2790
- },
2791
- {
2792
- name: "sdd.watch",
2793
- content: `---
2794
- description: \uC2A4\uD399 \uD30C\uC77C \uBCC0\uACBD\uC744 \uAC10\uC2DC\uD569\uB2C8\uB2E4
2795
- allowed-tools: Bash
2796
- argument-hint: [--validate] [--path .sdd/specs]
2797
- ---
3085
+ ### \uC635\uC158 A: [\uC774\uB984]
2798
3086
 
2799
- sdd watch \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3087
+ **\uC7A5\uC810:**
3088
+ - ...
2800
3089
 
2801
- \`\`\`bash
2802
- sdd watch $ARGUMENTS
2803
- \`\`\`
3090
+ **\uB2E8\uC810:**
3091
+ - ...
2804
3092
 
2805
- ## \uC635\uC158
3093
+ **\uC801\uC6A9 \uC0AC\uB840:**
3094
+ - ...
2806
3095
 
2807
- - \`--path <dir>\`: \uAC10\uC2DC\uD560 \uB514\uB809\uD1A0\uB9AC
2808
- - \`--validate\`: \uBCC0\uACBD \uC2DC \uC790\uB3D9 \uAC80\uC99D
2809
- - \`--quality\`: \uBCC0\uACBD \uC2DC \uD488\uC9C8 \uAC80\uC0AC
3096
+ ### \uC635\uC158 B: [\uC774\uB984]
2810
3097
 
2811
- Ctrl+C\uB85C \uC885\uB8CC\uD569\uB2C8\uB2E4.
2812
- `
2813
- },
2814
- {
2815
- name: "sdd.prompt",
2816
- content: `---
2817
- description: SDD \uC791\uC5C5\uC6A9 AI \uD504\uB86C\uD504\uD2B8\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4
2818
- allowed-tools: Bash, Read
2819
- argument-hint: [change|apply|archive|validate] [--list]
2820
- ---
3098
+ ...
2821
3099
 
2822
- sdd prompt \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3100
+ ## \uBE44\uAD50\uD45C
2823
3101
 
2824
- \`\`\`bash
2825
- sdd prompt $ARGUMENTS
2826
- \`\`\`
3102
+ | \uAE30\uC900 | \uC635\uC158 A | \uC635\uC158 B |
3103
+ |------|--------|--------|
3104
+ | \uC131\uB2A5 | ... | ... |
3105
+ | \uD559\uC2B5 \uACE1\uC120 | ... | ... |
3106
+ | \uCEE4\uBBA4\uB2C8\uD2F0 | ... | ... |
2827
3107
 
2828
- ## \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD504\uB86C\uD504\uD2B8
3108
+ ## \uACB0\uB860
2829
3109
 
2830
- - \`change\`: \uBCC0\uACBD \uC81C\uC548 \uC791\uC131
2831
- - \`apply\`: \uBCC0\uACBD \uC801\uC6A9
2832
- - \`archive\`: \uBCC0\uACBD \uC544\uCE74\uC774\uBE0C
2833
- - \`validate\`: \uC2A4\uD399 \uAC80\uC99D
3110
+ **\uAD8C\uC7A5\uC0AC\uD56D:** \uC635\uC158 X
2834
3111
 
2835
- ## \uC635\uC158
3112
+ **\uADFC\uAC70:**
3113
+ 1. ...
3114
+ 2. ...
2836
3115
 
2837
- - \`--list\`: \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD504\uB86C\uD504\uD2B8 \uBAA9\uB85D
3116
+ ## \uCC38\uACE0 \uC790\uB8CC
2838
3117
 
2839
- \uD504\uB86C\uD504\uD2B8 \uB0B4\uC6A9\uC744 \uCD9C\uB825\uD558\uACE0 \uC0AC\uC6A9 \uBC29\uBC95\uC744 \uC548\uB0B4\uD574\uC8FC\uC138\uC694.
3118
+ - [\uB9C1\uD06C1]
3119
+ - [\uB9C1\uD06C2]
3120
+ \`\`\`
3121
+
3122
+ ## \uC800\uC7A5 \uC704\uCE58
3123
+
3124
+ \uB9AC\uC11C\uCE58 \uBB38\uC11C\uB294 \`.sdd/research/\` \uB610\uB294 \uD574\uB2F9 \uAE30\uB2A5 \uB514\uB809\uD1A0\uB9AC\uC5D0 \uC800\uC7A5\uD558\uC138\uC694.
2840
3125
  `
2841
- },
2842
- {
2843
- name: "sdd.sync",
2844
- content: `---
2845
- description: \uC2A4\uD399-\uCF54\uB4DC \uB3D9\uAE30\uD654 \uC0C1\uD0DC\uB97C \uAC80\uC99D\uD569\uB2C8\uB2E4
2846
- allowed-tools: Bash, Read
2847
- argument-hint: [specId] [--json] [--ci]
2848
- ---
3126
+ };
2849
3127
 
2850
- \uC2A4\uD399 \uC694\uAD6C\uC0AC\uD56D\uACFC \uCF54\uB4DC \uAD6C\uD604\uC758 \uB3D9\uAE30\uD654 \uC0C1\uD0DC\uB97C \uAC80\uC99D\uD569\uB2C8\uB2E4.
3128
+ // src/generators/claude-commands/utils/data-model.ts
3129
+ var dataModelCommand = {
3130
+ name: "sdd.data-model",
3131
+ content: `\uB370\uC774\uD130 \uBAA8\uB378 \uBB38\uC11C\uB97C \uC791\uC131\uD569\uB2C8\uB2E4.
2851
3132
 
2852
3133
  ## \uAC1C\uC694
2853
3134
 
2854
- \uC2A4\uD399\uC758 REQ-xxx \uC694\uAD6C\uC0AC\uD56D\uC774 \uCF54\uB4DC\uC5D0 \uAD6C\uD604\uB418\uC5B4 \uC788\uB294\uC9C0 \uD655\uC778\uD569\uB2C8\uB2E4.
2855
- \uCF54\uB4DC\uC5D0\uC11C \`@spec REQ-xxx\` \uC8FC\uC11D\uC774\uB098 \uD14C\uC2A4\uD2B8\uC5D0\uC11C \`it('REQ-xxx: ...')\` \uD615\uC2DD\uC744 \uC778\uC2DD\uD569\uB2C8\uB2E4.
3135
+ \uC2DC\uC2A4\uD15C\uC758 \uB370\uC774\uD130 \uAD6C\uC870\uC640 \uAD00\uACC4\uB97C \uC815\uC758\uD569\uB2C8\uB2E4.
3136
+ \uC774 \uBB38\uC11C\uB294 \uAD6C\uD604\uC758 \uAE30\uBC18\uC774 \uB418\uBA70, \uBCC0\uACBD \uC2DC \uC601\uD5A5\uB3C4 \uBD84\uC11D\uC5D0 \uD65C\uC6A9\uB429\uB2C8\uB2E4.
2856
3137
 
2857
- ## \uBA85\uB839\uC5B4
3138
+ ## \uC9C0\uC2DC\uC0AC\uD56D
2858
3139
 
2859
- \`\`\`bash
2860
- # \uC804\uCCB4 \uC2A4\uD399 \uB3D9\uAE30\uD654 \uAC80\uC99D
2861
- sdd sync
3140
+ 1. \uD575\uC2EC \uC5D4\uD2F0\uD2F0\uB97C \uC815\uC758\uD558\uC138\uC694
3141
+ 2. \uAC01 \uC5D4\uD2F0\uD2F0\uC758 \uC18D\uC131\uC744 \uB098\uC5F4\uD558\uC138\uC694
3142
+ 3. \uC5D4\uD2F0\uD2F0 \uAC04 \uAD00\uACC4\uB97C \uC815\uC758\uD558\uC138\uC694
3143
+ 4. ERD\uB97C Mermaid\uB85C \uC791\uC131\uD558\uC138\uC694
2862
3144
 
2863
- # \uD2B9\uC815 \uC2A4\uD399\uB9CC \uAC80\uC99D
2864
- sdd sync user-auth
3145
+ ## \uB370\uC774\uD130 \uBAA8\uB378 \uD15C\uD50C\uB9BF
2865
3146
 
2866
- # JSON \uCD9C\uB825
2867
- sdd sync --json
3147
+ \`\`\`markdown
3148
+ # \uB370\uC774\uD130 \uBAA8\uB378: [\uC2DC\uC2A4\uD15C\uBA85]
2868
3149
 
2869
- # CI \uBAA8\uB4DC (\uB3D9\uAE30\uD654\uC728 \uC784\uACC4\uAC12 \uAC80\uC0AC)
2870
- sdd sync --ci --threshold 80
3150
+ > \uC791\uC131\uC77C: YYYY-MM-DD
3151
+ > \uBC84\uC804: 1.0.0
2871
3152
 
2872
- # \uB9C8\uD06C\uB2E4\uC6B4 \uB9AC\uD3EC\uD2B8
2873
- sdd sync --markdown
2874
- \`\`\`
3153
+ ## \uC5D4\uD2F0\uD2F0 \uC815\uC758
2875
3154
 
2876
- ## \uCF54\uB4DC \uC8FC\uC11D \uADDC\uCE59
3155
+ ### User (\uC0AC\uC6A9\uC790)
2877
3156
 
2878
- \`\`\`typescript
2879
- /**
2880
- * \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778
2881
- * @spec REQ-001
2882
- * @spec REQ-002
2883
- */
2884
- export async function login() { ... }
2885
- \`\`\`
3157
+ | \uD544\uB4DC | \uD0C0\uC785 | \uD544\uC218 | \uC124\uBA85 |
3158
+ |------|------|------|------|
3159
+ | id | UUID | O | \uACE0\uC720 \uC2DD\uBCC4\uC790 |
3160
+ | email | string | O | \uC774\uBA54\uC77C (unique) |
3161
+ | name | string | O | \uC0AC\uC6A9\uC790\uBA85 |
3162
+ | created_at | datetime | O | \uC0DD\uC131\uC77C\uC2DC |
2886
3163
 
2887
- ## \uD14C\uC2A4\uD2B8 \uB9E4\uD551
3164
+ ### Post (\uAC8C\uC2DC\uAE00)
2888
3165
 
2889
- \`\`\`typescript
2890
- it('REQ-001: \uC62C\uBC14\uB978 \uC790\uACA9 \uC99D\uBA85\uC73C\uB85C \uB85C\uADF8\uC778\uD55C\uB2E4', () => { ... });
2891
- \`\`\`
3166
+ ...
2892
3167
 
2893
- ## \uCD9C\uB825 \uC608\uC2DC
3168
+ ## \uAD00\uACC4\uB3C4 (ERD)
2894
3169
 
3170
+ \`\`\`mermaid
3171
+ erDiagram
3172
+ User ||--o{ Post : writes
3173
+ User {
3174
+ uuid id PK
3175
+ string email
3176
+ string name
3177
+ }
3178
+ Post {
3179
+ uuid id PK
3180
+ uuid user_id FK
3181
+ string title
3182
+ text content
3183
+ }
2895
3184
  \`\`\`
2896
- === SDD Sync: \uC2A4\uD399-\uCF54\uB4DC \uB3D9\uAE30\uD654 \uAC80\uC99D ===
2897
3185
 
2898
- \uC2A4\uD399: 3\uAC1C, \uC694\uAD6C\uC0AC\uD56D: 15\uAC1C
3186
+ ## \uC778\uB371\uC2A4
2899
3187
 
2900
- \u2713 \uAD6C\uD604\uB428 (12/15)
2901
- - REQ-001: \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778 (src/auth/login.ts:45)
2902
- ...
3188
+ | \uD14C\uC774\uBE14 | \uC778\uB371\uC2A4 | \uCEEC\uB7FC | \uC720\uD615 |
3189
+ |--------|--------|------|------|
3190
+ | User | idx_user_email | email | UNIQUE |
2903
3191
 
2904
- \u2717 \uBBF8\uAD6C\uD604 (3/15)
2905
- - REQ-010: \uBE44\uBC00\uBC88\uD638 \uC7AC\uC124\uC815
2906
- ...
3192
+ ## \uC81C\uC57D\uC870\uAC74
2907
3193
 
2908
- \uB3D9\uAE30\uD654\uC728: 80% (12/15)
3194
+ - User.email\uC740 \uC720\uC77C\uD574\uC57C \uD55C\uB2E4(SHALL)
3195
+ - Post.user_id\uB294 User.id\uB97C \uCC38\uC870\uD574\uC57C \uD55C\uB2E4(SHALL)
2909
3196
  \`\`\`
2910
3197
 
2911
- \uB3D9\uAE30\uD654 \uACB0\uACFC\uB97C \uBD84\uC11D\uD558\uACE0 \uBBF8\uAD6C\uD604 \uC694\uAD6C\uC0AC\uD56D\uC5D0 \uB300\uD55C \uC870\uCE58\uB97C \uC81C\uC548\uD574\uC8FC\uC138\uC694.
3198
+ ## \uC800\uC7A5 \uC704\uCE58
3199
+
3200
+ \uB370\uC774\uD130 \uBAA8\uB378\uC740 \`.sdd/data-model.md\` \uB610\uB294 \uD574\uB2F9 \uAE30\uB2A5 \uB514\uB809\uD1A0\uB9AC\uC5D0 \uC800\uC7A5\uD558\uC138\uC694.
2912
3201
  `
2913
- },
2914
- {
2915
- name: "sdd.diff",
2916
- content: `---
2917
- description: \uC2A4\uD399 \uBCC0\uACBD\uC0AC\uD56D\uC744 \uC2DC\uAC01\uD654\uD569\uB2C8\uB2E4
2918
- allowed-tools: Bash, Read
2919
- argument-hint: [commit1] [commit2] [--staged] [--stat]
2920
- ---
3202
+ };
2921
3203
 
2922
- \uC2A4\uD399 \uD30C\uC77C\uC758 \uBCC0\uACBD\uC0AC\uD56D\uC744 \uAD6C\uC870\uC801\uC73C\uB85C \uBE44\uAD50\uD558\uC5EC \uC2DC\uAC01\uD654\uD569\uB2C8\uB2E4.
3204
+ // src/generators/claude-commands/utils/prepare.ts
3205
+ var prepareCommand = {
3206
+ name: "sdd.prepare",
3207
+ content: `\uAE30\uB2A5 \uAD6C\uD604 \uC804 \uD544\uC694\uD55C \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC640 \uC2A4\uD0AC\uC744 \uC810\uAC80\uD569\uB2C8\uB2E4.
2923
3208
 
2924
3209
  ## \uAC1C\uC694
2925
3210
 
2926
- Git diff\uC640 \uC720\uC0AC\uD558\uAC8C \uC2A4\uD399 \uBCC0\uACBD\uC744 \uBCF4\uC5EC\uC8FC\uB418, \uC694\uAD6C\uC0AC\uD56D/\uC2DC\uB098\uB9AC\uC624/\uD0A4\uC6CC\uB4DC \uBCC0\uACBD\uC744 \uAD6C\uC870\uC801\uC73C\uB85C \uC778\uC2DD\uD569\uB2C8\uB2E4.
3211
+ \uC2A4\uD399/\uACC4\uD68D/\uC791\uC5C5 \uBB38\uC11C\uB97C \uBD84\uC11D\uD558\uC5EC \uAD6C\uD604\uC5D0 \uD544\uC694\uD55C Claude Code \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8\uC640 \uC2A4\uD0AC\uC744 \uAC10\uC9C0\uD558\uACE0,
3212
+ \uB204\uB77D\uB41C \uB3C4\uAD6C\uAC00 \uC788\uC73C\uBA74 \uC790\uB3D9\uC73C\uB85C \uC0DD\uC131\uD569\uB2C8\uB2E4.
3213
+
3214
+ ## \uC9C0\uC2DC\uC0AC\uD56D
3215
+
3216
+ 1. \`sdd prepare <feature-id>\` \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD558\uC138\uC694
3217
+ 2. \uAC10\uC9C0\uB41C \uB3C4\uAD6C \uBAA9\uB85D\uACFC \uC874\uC7AC \uC5EC\uBD80\uB97C \uD655\uC778\uD558\uC138\uC694
3218
+ 3. \uB204\uB77D\uB41C \uB3C4\uAD6C \uC0DD\uC131 \uC5EC\uBD80\uB97C \uACB0\uC815\uD558\uC138\uC694
3219
+
3220
+ ## \uC6CC\uD06C\uD50C\uB85C\uC6B0
3221
+
3222
+ \`\`\`
3223
+ /sdd.new \u2192 /sdd.plan \u2192 /sdd.tasks \u2192 sdd prepare \u2192 /sdd.implement
3224
+ \`\`\`
2927
3225
 
2928
3226
  ## \uBA85\uB839\uC5B4
2929
3227
 
2930
3228
  \`\`\`bash
2931
- # \uC791\uC5C5 \uB514\uB809\uD1A0\uB9AC \uBCC0\uACBD
2932
- sdd diff
3229
+ # \uAE30\uBCF8 \uC0AC\uC6A9 (\uB300\uD654\uD615)
3230
+ sdd prepare user-auth
2933
3231
 
2934
- # \uC2A4\uD14C\uC774\uC9D5\uB41C \uBCC0\uACBD
2935
- sdd diff --staged
3232
+ # \uBBF8\uB9AC\uBCF4\uAE30 (\uD30C\uC77C \uC0DD\uC131 \uC5C6\uC74C)
3233
+ sdd prepare user-auth --dry-run
2936
3234
 
2937
- # \uCEE4\uBC0B \uAC04 \uBE44\uAD50
2938
- sdd diff abc123 def456
3235
+ # \uC790\uB3D9 \uC2B9\uC778 (\uB204\uB77D \uB3C4\uAD6C \uC790\uB3D9 \uC0DD\uC131)
3236
+ sdd prepare user-auth --auto-approve
2939
3237
 
2940
- # \uBE0C\uB79C\uCE58 \uBE44\uAD50
2941
- sdd diff main..feature/auth
3238
+ # JSON \uCD9C\uB825
3239
+ sdd prepare user-auth --json
3240
+ \`\`\`
2942
3241
 
2943
- # \uD2B9\uC815 \uC2A4\uD399\uB9CC
2944
- sdd diff --spec user-auth
3242
+ ## \uAC10\uC9C0 \uB300\uC0C1
2945
3243
 
2946
- # \uC635\uC158
2947
- sdd diff --stat # \uD1B5\uACC4 \uC694\uC57D
2948
- sdd diff --name-only # \uD30C\uC77C\uBA85\uB9CC
2949
- sdd diff --json # JSON \uCD9C\uB825
2950
- sdd diff --no-color # \uCEEC\uB7EC \uC5C6\uC74C
2951
- \`\`\`
3244
+ ### \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 (\`.claude/agents/*.md\`)
2952
3245
 
2953
- ## \uAC10\uC9C0 \uD56D\uBAA9
3246
+ | \uC5D0\uC774\uC804\uD2B8 | \uAC10\uC9C0 \uD0A4\uC6CC\uB4DC | \uC124\uBA85 |
3247
+ |----------|-------------|------|
3248
+ | test-runner | \uD14C\uC2A4\uD2B8, test, jest, vitest | \uD14C\uC2A4\uD2B8 \uC2E4\uD589 |
3249
+ | api-scaffold | api, rest, endpoint | API \uC2A4\uCE90\uD3F4\uB529 |
3250
+ | component-gen | component, \uCEF4\uD3EC\uB10C\uD2B8, react | \uCEF4\uD3EC\uB10C\uD2B8 \uC0DD\uC131 |
3251
+ | code-reviewer | review, \uB9AC\uBDF0 | \uCF54\uB4DC \uB9AC\uBDF0 |
2954
3252
 
2955
- - **\uC694\uAD6C\uC0AC\uD56D**: REQ-xxx \uCD94\uAC00/\uC218\uC815/\uC0AD\uC81C
2956
- - **\uC2DC\uB098\uB9AC\uC624**: GIVEN-WHEN-THEN \uBCC0\uACBD
2957
- - **\uD0A4\uC6CC\uB4DC**: RFC 2119 \uD0A4\uC6CC\uB4DC \uBCC0\uACBD (SHOULD \u2192 SHALL \uB4F1)
2958
- - **\uBA54\uD0C0\uB370\uC774\uD130**: YAML frontmatter \uBCC0\uACBD
3253
+ ### \uC2A4\uD0AC (\`.claude/skills/<name>/SKILL.md\`)
3254
+
3255
+ | \uC2A4\uD0AC | \uAC10\uC9C0 \uD0A4\uC6CC\uB4DC | \uC124\uBA85 |
3256
+ |------|-------------|------|
3257
+ | test | \uD14C\uC2A4\uD2B8, test | \uD14C\uC2A4\uD2B8 \uC791\uC131 |
3258
+ | gen-api | api, rest | API \uC0DD\uC131 |
3259
+ | gen-component | component | \uCEF4\uD3EC\uB10C\uD2B8 \uC0DD\uC131 |
3260
+ | db-migrate | database, \uB9C8\uC774\uADF8\uB808\uC774\uC158 | DB \uB9C8\uC774\uADF8\uB808\uC774\uC158 |
3261
+ | gen-doc | \uBB38\uC11C, doc | \uBB38\uC11C \uC0DD\uC131 |
2959
3262
 
2960
3263
  ## \uCD9C\uB825 \uC608\uC2DC
2961
3264
 
2962
3265
  \`\`\`
2963
- === SDD Diff ===
3266
+ === SDD Prepare: user-auth ===
2964
3267
 
2965
- .sdd/specs/user-auth/spec.md
3268
+ \uBD84\uC11D \uB300\uC0C1: 3\uAC1C \uBB38\uC11C, 5\uAC1C \uD0DC\uC2A4\uD06C
2966
3269
 
2967
- \uC694\uAD6C\uC0AC\uD56D \uBCC0\uACBD:
2968
- ~ REQ-001: \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778
2969
- - \uC2DC\uC2A4\uD15C\uC740 \uC774\uBA54\uC77C/\uBE44\uBC00\uBC88\uD638 \uB85C\uADF8\uC778\uC744 \uC9C0\uC6D0\uD574\uC57C \uD55C\uB2E4(SHOULD)
2970
- + \uC2DC\uC2A4\uD15C\uC740 \uC774\uBA54\uC77C/\uBE44\uBC00\uBC88\uD638 \uB85C\uADF8\uC778\uC744 \uC9C0\uC6D0\uD574\uC57C \uD55C\uB2E4(SHALL)
2971
- \u26A0\uFE0F REQ-001: SHOULD \u2192 SHALL (\uAC15\uD654)
3270
+ --- \uC11C\uBE0C\uC5D0\uC774\uC804\uD2B8 ---
3271
+ [x] test-runner (\uC874\uC7AC)
3272
+ [ ] api-scaffold (\uC5C6\uC74C) \u2192 \uC0DD\uC131 \uD544\uC694
2972
3273
 
2973
- + REQ-005: \uC18C\uC15C \uB85C\uADF8\uC778
2974
- + \uC2DC\uC2A4\uD15C\uC740 Google OAuth\uB97C \uC9C0\uC6D0\uD574\uC57C \uD55C\uB2E4(MAY)
3274
+ --- \uC2A4\uD0AC ---
3275
+ [x] test (\uC874\uC7AC)
3276
+ [ ] gen-api (\uC5C6\uC74C) \u2192 \uC0DD\uC131 \uD544\uC694
2975
3277
 
2976
- \uC2DC\uB098\uB9AC\uC624 \uBCC0\uACBD:
2977
- + Scenario: Google \uB85C\uADF8\uC778
3278
+ \uB204\uB77D\uB41C \uB3C4\uAD6C\uB97C \uC0DD\uC131\uD558\uC2DC\uACA0\uC2B5\uB2C8\uAE4C? (y/n)
2978
3279
  \`\`\`
2979
3280
 
2980
- ## \uD1B5\uACC4 \uC694\uC57D (--stat)
3281
+ ## \uC0DD\uC131 \uD30C\uC77C \uAD6C\uC870
2981
3282
 
2982
3283
  \`\`\`
2983
- === SDD Diff --stat ===
2984
-
2985
- .sdd/specs/user-auth/spec.md
2986
- \uC694\uAD6C\uC0AC\uD56D: +1, ~1, -0
2987
- \uC2DC\uB098\uB9AC\uC624: +1, ~0, -0
2988
- \uD0A4\uC6CC\uB4DC \uBCC0\uACBD: 1\uAC1C (\uAC15\uD654: 1, \uC57D\uD654: 0)
2989
-
2990
- \uCD1D \uBCC0\uACBD: 1\uAC1C \uD30C\uC77C, \uC694\uAD6C\uC0AC\uD56D +1 ~1 -0
3284
+ .claude/
3285
+ \u251C\u2500\u2500 agents/
3286
+ \u2502 \u2514\u2500\u2500 api-scaffold.md # \uC5D0\uC774\uC804\uD2B8 \uC815\uC758
3287
+ \u2514\u2500\u2500 skills/
3288
+ \u2514\u2500\u2500 gen-api/
3289
+ \u2514\u2500\u2500 SKILL.md # \uC2A4\uD0AC \uC815\uC758
2991
3290
  \`\`\`
2992
3291
 
2993
- \uBCC0\uACBD \uB0B4\uC6A9\uC744 \uBD84\uC11D\uD558\uACE0 \uC601\uD5A5\uB3C4\uB97C \uD3C9\uAC00\uD574\uC8FC\uC138\uC694.
3292
+ \uC644\uB8CC \uD6C4 \`/sdd.implement\`\uB85C \uAD6C\uD604\uC744 \uC2DC\uC791\uD558\uC138\uC694.
2994
3293
  `
2995
- },
2996
- {
2997
- name: "sdd.export",
2998
- content: `---
2999
- description: \uC2A4\uD399\uC744 HTML, JSON \uB4F1\uC73C\uB85C \uB0B4\uBCF4\uB0B4\uAE30
3294
+ };
3295
+
3296
+ // src/generators/claude-commands/utils/cicd.ts
3297
+ var cicdCommand = {
3298
+ name: "sdd.cicd",
3299
+ content: `---
3300
+ description: CI/CD \uD30C\uC774\uD504\uB77C\uC778\uC744 \uC124\uC815\uD569\uB2C8\uB2E4
3000
3301
  allowed-tools: Bash, Read, Write
3001
- argument-hint: [specId] [--format html] [-o output.html]
3302
+ argument-hint: [setup|hooks|check] [--platform github]
3002
3303
  ---
3003
3304
 
3004
- \uC2A4\uD399 \uBB38\uC11C\uB97C \uB2E4\uC591\uD55C \uD615\uC2DD\uC73C\uB85C \uB0B4\uBCF4\uB0C5\uB2C8\uB2E4.
3305
+ sdd cicd \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3005
3306
 
3006
- ## \uAC1C\uC694
3307
+ \`\`\`bash
3308
+ sdd cicd $ARGUMENTS
3309
+ \`\`\`
3007
3310
 
3008
- \uC2A4\uD399\uC744 HTML, JSON, \uB9C8\uD06C\uB2E4\uC6B4 \uD615\uC2DD\uC73C\uB85C \uBCC0\uD658\uD558\uC5EC \uD300\uC6D0, \uC774\uD574\uAD00\uACC4\uC790\uC640 \uACF5\uC720\uD569\uB2C8\uB2E4.
3311
+ ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
3009
3312
 
3010
- ## \uBA85\uB839\uC5B4
3313
+ - \`setup\`: CI/CD \uC6CC\uD06C\uD50C\uB85C\uC6B0 \uC0DD\uC131
3314
+ - \`hooks\`: Git hooks \uC124\uC815
3315
+ - \`check\`: CI \uAC80\uC99D \uC2E4\uD589
3316
+
3317
+ ## \uC635\uC158
3318
+
3319
+ - \`--platform <type>\`: github, gitlab, all
3320
+
3321
+ \uC0DD\uC131\uB41C CI/CD \uC124\uC815\uC744 \uD655\uC778\uD558\uACE0 \uCD94\uAC00 \uC124\uC815\uC774 \uD544\uC694\uD558\uBA74 \uC548\uB0B4\uD574\uC8FC\uC138\uC694.
3322
+ `
3323
+ };
3324
+
3325
+ // src/generators/claude-commands/utils/watch.ts
3326
+ var watchCommand = {
3327
+ name: "sdd.watch",
3328
+ content: `---
3329
+ description: \uC2A4\uD399 \uD30C\uC77C \uBCC0\uACBD\uC744 \uAC10\uC2DC\uD569\uB2C8\uB2E4
3330
+ allowed-tools: Bash
3331
+ argument-hint: [--validate] [--path .sdd/specs]
3332
+ ---
3333
+
3334
+ sdd watch \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3011
3335
 
3012
3336
  \`\`\`bash
3013
- # \uB2E8\uC77C \uC2A4\uD399 HTML \uB0B4\uBCF4\uB0B4\uAE30
3014
- sdd export user-auth --format html
3337
+ sdd watch $ARGUMENTS
3338
+ \`\`\`
3015
3339
 
3016
- # \uC804\uCCB4 \uC2A4\uD399 \uB0B4\uBCF4\uB0B4\uAE30
3017
- sdd export --all --format html
3340
+ ## \uC635\uC158
3018
3341
 
3019
- # JSON \uD615\uC2DD
3020
- sdd export user-auth --format json
3342
+ - \`--path <dir>\`: \uAC10\uC2DC\uD560 \uB514\uB809\uD1A0\uB9AC
3343
+ - \`--validate\`: \uBCC0\uACBD \uC2DC \uC790\uB3D9 \uAC80\uC99D
3344
+ - \`--quality\`: \uBCC0\uACBD \uC2DC \uD488\uC9C8 \uAC80\uC0AC
3021
3345
 
3022
- # \uB9C8\uD06C\uB2E4\uC6B4 \uBCD1\uD569
3023
- sdd export --all --format markdown
3346
+ Ctrl+C\uB85C \uC885\uB8CC\uD569\uB2C8\uB2E4.
3347
+ `
3348
+ };
3024
3349
 
3025
- # \uCD9C\uB825 \uACBD\uB85C \uC9C0\uC815
3026
- sdd export user-auth -o ./docs/user-auth.html
3350
+ // src/generators/claude-commands/utils/migrate.ts
3351
+ var migrateCommand = {
3352
+ name: "sdd.migrate",
3353
+ content: `---
3354
+ description: \uAE30\uC874 \uD504\uB85C\uC81D\uD2B8\uB97C SDD\uB85C \uB9C8\uC774\uADF8\uB808\uC774\uC158\uD569\uB2C8\uB2E4
3355
+ allowed-tools: Bash, Read
3356
+ argument-hint: [detect|openspec|speckit|docs] [--dry-run]
3357
+ ---
3027
3358
 
3028
- # \uB2E4\uD06C \uD14C\uB9C8
3029
- sdd export --all --theme dark
3359
+ sdd migrate \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3030
3360
 
3031
- # \uBAA9\uCC28 \uC81C\uC678
3032
- sdd export user-auth --no-toc
3361
+ \`\`\`bash
3362
+ sdd migrate $ARGUMENTS
3033
3363
  \`\`\`
3034
3364
 
3035
- ## \uC9C0\uC6D0 \uD615\uC2DD
3365
+ ## \uC11C\uBE0C\uCEE4\uB9E8\uB4DC
3036
3366
 
3037
- | \uD615\uC2DD | \uC124\uBA85 |
3038
- |------|------|
3039
- | html | \uC2A4\uD0C0\uC77C \uD3EC\uD568 HTML (\uAE30\uBCF8\uAC12) |
3040
- | json | \uAD6C\uC870\uD654\uB41C JSON |
3041
- | markdown | \uB9C8\uD06C\uB2E4\uC6B4 \uBCD1\uD569 |
3042
- | pdf | HTML \uC0DD\uC131 \uD6C4 \uBE0C\uB77C\uC6B0\uC800 \uC778\uC1C4 \uC548\uB0B4 |
3367
+ - \`detect\`: \uAE30\uC874 \uB3C4\uAD6C \uAC10\uC9C0
3368
+ - \`openspec\`: OpenSpec\uC5D0\uC11C \uB9C8\uC774\uADF8\uB808\uC774\uC158
3369
+ - \`speckit\`: SpecKit\uC5D0\uC11C \uB9C8\uC774\uADF8\uB808\uC774\uC158
3370
+ - \`docs\`: \uB9C8\uD06C\uB2E4\uC6B4 \uBB38\uC11C \uBCC0\uD658
3043
3371
 
3044
- ## HTML \uAE30\uB2A5
3372
+ ## \uC635\uC158
3045
3373
 
3046
- - \uBC18\uC751\uD615 \uB514\uC790\uC778
3047
- - \uC790\uB3D9 \uBAA9\uCC28 \uC0DD\uC131
3048
- - RFC 2119 \uD0A4\uC6CC\uB4DC \uAC15\uC870
3049
- - GIVEN/WHEN/THEN \uC2DC\uAC01\uD654
3050
- - \uB77C\uC774\uD2B8/\uB2E4\uD06C \uD14C\uB9C8
3051
- - \uC778\uC1C4 \uCD5C\uC801\uD654
3374
+ - \`--dry-run\`: \uBBF8\uB9AC\uBCF4\uAE30
3375
+ - \`--overwrite\`: \uAE30\uC874 \uC2A4\uD399 \uB36E\uC5B4\uC4F0\uAE30
3376
+ - \`--source <path>\`: \uC18C\uC2A4 \uB514\uB809\uD1A0\uB9AC
3052
3377
 
3053
- ## JSON \uAD6C\uC870
3378
+ \uB9C8\uC774\uADF8\uB808\uC774\uC158 \uACB0\uACFC\uB97C \uD655\uC778\uD558\uACE0 \uD544\uC694\uD55C \uD6C4\uC18D \uC791\uC5C5\uC744 \uC548\uB0B4\uD574\uC8FC\uC138\uC694.
3379
+ `
3380
+ };
3054
3381
 
3055
- \`\`\`json
3056
- {
3057
- "id": "user-auth",
3058
- "title": "\uC0AC\uC6A9\uC790 \uC778\uC99D",
3059
- "requirements": [
3060
- {
3061
- "id": "REQ-001",
3062
- "title": "\uB85C\uADF8\uC778",
3063
- "keyword": "SHALL",
3064
- "priority": "high"
3065
- }
3066
- ],
3067
- "scenarios": [...]
3068
- }
3069
- \`\`\`
3382
+ // src/generators/claude-commands/utils/prompt.ts
3383
+ var promptCommand = {
3384
+ name: "sdd.prompt",
3385
+ content: `---
3386
+ description: SDD \uC791\uC5C5\uC6A9 AI \uD504\uB86C\uD504\uD2B8\uB97C \uCD9C\uB825\uD569\uB2C8\uB2E4
3387
+ allowed-tools: Bash, Read
3388
+ argument-hint: [change|apply|archive|validate] [--list]
3389
+ ---
3070
3390
 
3071
- ## \uCD9C\uB825 \uC608\uC2DC
3391
+ sdd prompt \uBA85\uB839\uC5B4\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4.
3072
3392
 
3393
+ \`\`\`bash
3394
+ sdd prompt $ARGUMENTS
3073
3395
  \`\`\`
3074
- === SDD Export ===
3075
3396
 
3076
- \uD615\uC2DD: HTML
3077
- \uC2A4\uD399: 3\uAC1C
3078
- \uCD9C\uB825: ./specs.html
3079
- \uD06C\uAE30: 45.32 KB
3080
- \`\`\`
3397
+ ## \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD504\uB86C\uD504\uD2B8
3081
3398
 
3082
- \uB0B4\uBCF4\uB0B8 \uD30C\uC77C\uC758 \uB0B4\uC6A9\uC744 \uD655\uC778\uD558\uACE0 \uD544\uC694\uC2DC \uCD94\uAC00 \uD615\uC2DD\uC73C\uB85C \uB0B4\uBCF4\uB0B4\uC138\uC694.
3399
+ - \`change\`: \uBCC0\uACBD \uC81C\uC548 \uC791\uC131
3400
+ - \`apply\`: \uBCC0\uACBD \uC801\uC6A9
3401
+ - \`archive\`: \uBCC0\uACBD \uC544\uCE74\uC774\uBE0C
3402
+ - \`validate\`: \uC2A4\uD399 \uAC80\uC99D
3403
+
3404
+ ## \uC635\uC158
3405
+
3406
+ - \`--list\`: \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uD504\uB86C\uD504\uD2B8 \uBAA9\uB85D
3407
+
3408
+ \uD504\uB86C\uD504\uD2B8 \uB0B4\uC6A9\uC744 \uCD9C\uB825\uD558\uACE0 \uC0AC\uC6A9 \uBC29\uBC95\uC744 \uC548\uB0B4\uD574\uC8FC\uC138\uC694.
3083
3409
  `
3084
- }
3410
+ };
3411
+
3412
+ // src/generators/claude-commands/index.ts
3413
+ function generateClaudeCommands() {
3414
+ return [
3415
+ // 핵심 워크플로우
3416
+ startCommand,
3417
+ newCommand,
3418
+ planCommand,
3419
+ tasksCommand,
3420
+ implementCommand,
3421
+ validateCommand,
3422
+ // 관리
3423
+ constitutionCommand,
3424
+ changeCommand,
3425
+ statusCommand,
3426
+ // 분석
3427
+ analyzeCommand,
3428
+ impactCommand,
3429
+ qualityCommand,
3430
+ syncCommand,
3431
+ diffCommand,
3432
+ searchCommand,
3433
+ listCommand,
3434
+ exportCommand,
3435
+ reportCommand,
3436
+ // 도메인/역추출
3437
+ reverseCommand,
3438
+ domainCommand,
3439
+ contextCommand,
3440
+ // 유틸리티
3441
+ guideCommand,
3442
+ chatCommand,
3443
+ transitionCommand,
3444
+ researchCommand,
3445
+ dataModelCommand,
3446
+ prepareCommand,
3447
+ cicdCommand,
3448
+ watchCommand,
3449
+ migrateCommand,
3450
+ promptCommand
3085
3451
  ];
3086
3452
  }
3087
3453
 
@@ -3871,7 +4237,7 @@ allowed-tools: Read, Glob, Grep, Bash
3871
4237
  - \uC124\uBA85: \uC0AC\uC6A9\uC790 \uB85C\uADF8\uC778
3872
4238
  - \uBE14\uB85C\uCEE4: core/validation \uAD6C\uD604 \uD544\uC694
3873
4239
 
3874
- /sdd.dev-implement core/validation \uC73C\uB85C \uC2DC\uC791\uD558\uC138\uC694.
4240
+ "core/validation \uAD6C\uD604\uD574\uC918" \uB77C\uACE0 \uC694\uCCAD\uD558\uC138\uC694.
3875
4241
  \`\`\`
3876
4242
  `
3877
4243
  },
@@ -17209,17 +17575,17 @@ var GitDiff = class {
17209
17575
  const specPath = options.specPath ? path43.join(specsDir, options.specPath) : specsDir;
17210
17576
  const normalizedPath = specPath.replace(/\\/g, "/");
17211
17577
  try {
17212
- let diffCommand;
17578
+ let diffCommand2;
17213
17579
  if (options.commit1 && options.commit2) {
17214
- diffCommand = `git diff --name-status ${options.commit1} ${options.commit2} -- "${normalizedPath}"`;
17580
+ diffCommand2 = `git diff --name-status ${options.commit1} ${options.commit2} -- "${normalizedPath}"`;
17215
17581
  } else if (options.commit1) {
17216
- diffCommand = `git diff --name-status ${options.commit1} -- "${normalizedPath}"`;
17582
+ diffCommand2 = `git diff --name-status ${options.commit1} -- "${normalizedPath}"`;
17217
17583
  } else if (options.staged) {
17218
- diffCommand = `git diff --name-status --cached -- "${normalizedPath}"`;
17584
+ diffCommand2 = `git diff --name-status --cached -- "${normalizedPath}"`;
17219
17585
  } else {
17220
- diffCommand = `git diff --name-status -- "${normalizedPath}"`;
17586
+ diffCommand2 = `git diff --name-status -- "${normalizedPath}"`;
17221
17587
  }
17222
- const { stdout } = await execAsync2(diffCommand, { cwd: this.projectRoot });
17588
+ const { stdout } = await execAsync2(diffCommand2, { cwd: this.projectRoot });
17223
17589
  if (!stdout.trim()) {
17224
17590
  return [];
17225
17591
  }