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