projectops 3.0.183

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/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Cassiiopeia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
package/README.md ADDED
@@ -0,0 +1,274 @@
1
+ <div align="center">
2
+
3
+ # ๐Ÿš€ SUH-DEVOPS-TEMPLATE
4
+
5
+ **GitHub Actions ์ž๋™ํ™” + Agent AI Skills โ€” ๊ฐœ๋ฐœ ์‚ฌ์ดํด ์ „์ฒด๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” DevOps ํ…œํ”Œ๋ฆฟ**
6
+
7
+ > ์ด์Šˆ ๋“ฑ๋ก๋ถ€ํ„ฐ ์ปค๋ฐ‹, ๋ณด๊ณ ์„œ, ๋ฐฐํฌ๊นŒ์ง€. ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜์„ธ์š”.
8
+
9
+ <!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->
10
+ ## ์ตœ์‹  ๋ฒ„์ „ : v3.0.182 (2026-07-02)
11
+
12
+ [์ „์ฒด ๋ฒ„์ „ ๊ธฐ๋ก ๋ณด๊ธฐ](CHANGELOG.md)
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ ## ์™œ ์ด ํ…œํ”Œ๋ฆฟ์ธ๊ฐ€?
19
+
20
+ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‘ ์ถ•์œผ๋กœ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค.
21
+
22
+ **โ‘  GitHub Actions** โ€” main ํ‘ธ์‹œ ํ•œ ๋ฒˆ์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ, ์ฒด์ธ์ง€๋กœ๊ทธ, CI/CD ๋ฐฐํฌ๊นŒ์ง€ ์ž๋™ ์ฒ˜๋ฆฌ
23
+ **โ‘ก Agent Skills** โ€” `/issue`, `/commit`, `/report` ๋“ฑ AI๊ฐ€ ์ด์Šˆ ์ž‘์„ฑ๋ถ€ํ„ฐ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€, ๊ตฌํ˜„ ๋ณด๊ณ ์„œ๊นŒ์ง€ ๋Œ€์‹  ์ƒ์„ฑ
24
+
25
+ | ๊ธฐ์กด ๋ฐฉ์‹ | SUH-DEVOPS-TEMPLATE |
26
+ |----------|---------------------|
27
+ | ๋ฒ„์ „ ์ˆ˜๋™ ๊ด€๋ฆฌ, ํƒœ๊ทธ ์ง์ ‘ ์ƒ์„ฑ | main ํ‘ธ์‹œ ์‹œ patch ๋ฒ„์ „ ์ž๋™ ์ฆ๊ฐ€ + ํƒœ๊ทธ ์ƒ์„ฑ |
28
+ | ์ฒด์ธ์ง€๋กœ๊ทธ ์ง์ ‘ ์ž‘์„ฑ (30๋ถ„+) | CodeRabbit AI๊ฐ€ PR๋งˆ๋‹ค ์ž๋™ ์ƒ์„ฑ |
29
+ | CI/CD ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค์ • | ํ”„๋กœ์ ํŠธ ํƒ€์ž…๋ณ„ ์›Œํฌํ”Œ๋กœ์šฐ ์ฆ‰์‹œ ๊ตฌ์„ฑ |
30
+ | ์ด์Šˆ ๋งค๋ฒˆ ํ˜•์‹ ๋งž์ถฐ ์ž‘์„ฑ (5๋ถ„+) | `/cassiiopeia:suh-issue` ํ•œ ๋ฒˆ์— ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ |
31
+ | ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ด์Šˆ URL ์ˆ˜๋™ ๋ณต์‚ฌ | `/cassiiopeia:suh-commit` ์ด์Šˆ ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ž๋™ ์™„์„ฑ |
32
+ | PR ์„ค๋ช…/๋ณด๊ณ ์„œ ์ง์ ‘ ์ž‘์„ฑ | `/cassiiopeia:suh-report` git diff ๋ถ„์„ ํ›„ ์ž๋™ ์ƒ์„ฑ |
33
+ | ์ฝ”๋“œ ๋ฆฌ๋ทฐยท๋ถ„์„ ๋งค๋ฒˆ ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ | 25์ข… Skills๋กœ ์ผ๊ด€๋œ ๊ฒฐ๊ณผ, ๋งค๋ฒˆ ์žฌ์ž…๋ ฅ ๋ถˆํ•„์š” |
34
+
35
+ ---
36
+
37
+ ## AI ๊ฐœ๋ฐœ ์‚ฌ์ดํด
38
+
39
+ Agent Skills๊ฐ€ ๊ฐœ๋ฐœ ์‚ฌ์ดํด ์ „์ฒด๋ฅผ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค.
40
+
41
+ ```mermaid
42
+ flowchart TD
43
+ A([์ž‘์—… ์‹œ์ž‘]) --> B["/cassiiopeia:suh-issue\n์ด์Šˆ ๋“ฑ๋ก + GitHub ์ž๋™ ์ƒ์„ฑ"]
44
+ B --> C["/cassiiopeia:suh-init-worktree\nworktree + ๋ฏผ๊ฐํŒŒ์ผ ์ž๋™ ๋ณต์‚ฌ"]
45
+ C --> D{์ž‘์—… ์œ ํ˜•}
46
+
47
+ D -->|์ƒˆ ๊ธฐ๋Šฅ| E1["/cassiiopeia:suh-plan\n์ „๋žต ์ˆ˜๋ฆฝ"]
48
+ D -->|๋ฒ„๊ทธ| E2["/cassiiopeia:suh-troubleshoot\n์›์ธ ๋ถ„์„"]
49
+ D -->|๋ฆฌํŒฉํ† ๋ง| E3["/cassiiopeia:suh-refactor-analyze\nSmell ํƒ์ง€"]
50
+
51
+ E1 --> F["/cassiiopeia:suh-implement\n๊ตฌํ˜„"]
52
+ E2 --> F
53
+ E3 --> F
54
+ F --> G["/cassiiopeia:suh-test\nํ…Œ์ŠคํŠธ"]
55
+ G --> H["/cassiiopeia:suh-review\n์…€ํ”„ ๋ฆฌ๋ทฐ"]
56
+ H --> I["/cassiiopeia:suh-commit\n์ด์Šˆ ์—ฐ๋™ ์ปค๋ฐ‹ ์ž๋™ ์™„์„ฑ"]
57
+ I --> J["/cassiiopeia:suh-report\n๊ตฌํ˜„ ๋ณด๊ณ ์„œ + GitHub ๋Œ“๊ธ€"]
58
+ J --> K([PR ๋“ฑ๋ก])
59
+ K --> L["/cassiiopeia:suh-changelog-deploy\nmain push โ†’ deploy PR + automerge"]
60
+ ```
61
+
62
+ > Skills ์ „์ฒด ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ์‚ฌ์šฉ๋ฒ•: **[docs/SKILLS.md](docs/SKILLS.md)**
63
+
64
+ ---
65
+
66
+ ## GitHub Actions ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ
67
+
68
+ ```mermaid
69
+ flowchart TD
70
+ A([main ํ‘ธ์‹œ]) --> B[๋ฒ„์ „ ์ž๋™ ์ฆ๊ฐ€\npatch +1 + ํƒœ๊ทธ]
71
+ B --> C[deploy PR ์ž๋™ ์ƒ์„ฑ]
72
+ C --> D[AI ์ฒด์ธ์ง€๋กœ๊ทธ\nCodeRabbit ๋ถ„์„]
73
+ D --> E[์ž๋™ ๋จธ์ง€]
74
+ E --> F[CI/CD ๋ฐฐํฌ\nFlutter / Spring / React ๋“ฑ]
75
+ F --> G([์™„๋ฃŒ])
76
+ ```
77
+
78
+ ---
79
+
80
+ ## ๋น ๋ฅธ ์‹œ์ž‘
81
+
82
+ ### ์ƒˆ ํ”„๋กœ์ ํŠธ
83
+
84
+ GitHub์—์„œ **"Use this template"** ํด๋ฆญ โ†’ 1๋ถ„ ๋‚ด ์ž๋™ ์ดˆ๊ธฐํ™” ์™„๋ฃŒ
85
+
86
+ ### ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉ
87
+
88
+ ```bash
89
+ # macOS / Linux
90
+ bash <(curl -fsSL "https://raw.githubusercontent.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/main/template_integrator.sh")
91
+ ```
92
+
93
+ ```powershell
94
+ # Windows PowerShell
95
+ $wc=New-Object Net.WebClient;$wc.Encoding=[Text.Encoding]::UTF8;iex $wc.DownloadString("https://raw.githubusercontent.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/main/template_integrator.ps1")
96
+ ```
97
+
98
+ ### Agent Skills๋งŒ ์„ค์น˜
99
+
100
+ ```bash
101
+ # Claude Code
102
+ claude plugin marketplace add Cassiiopeia/SUH-DEVOPS-TEMPLATE
103
+ claude plugin install cassiiopeia@cassiiopeia-marketplace --scope user
104
+ ```
105
+
106
+ ```bash
107
+ # Gemini CLI
108
+ gemini extensions install https://github.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE
109
+ ```
110
+
111
+ ```bash
112
+ # Codex CLI (macOS / Linux)
113
+ codex plugin marketplace add Cassiiopeia/SUH-DEVOPS-TEMPLATE
114
+ ```
115
+
116
+ `template_integrator --mode skills` ๋งˆ๋ฒ•์‚ฌ๋Š” Codex marketplace๋ฅผ ๋“ฑ๋กํ•œ ๋’ค native skills fallback๋„ ์ž๋™ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. `/plugins`๋Š” ์„ค์น˜ ํ™•์ธ/๊ด€๋ฆฌ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
117
+
118
+ Codex plugin marketplace๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” [Skills ๊ฐ€์ด๋“œ](docs/SKILLS.md)์˜ fallback ์„ค์น˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
119
+
120
+ ```bash
121
+ # Cursor / ์ „์ฒด Agent Skills ์„ค์น˜ ๋ฉ”๋‰ด
122
+ bash <(curl -fsSL "https://raw.githubusercontent.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/main/template_integrator.sh") --mode skills
123
+ ```
124
+
125
+ > Claude Code๋Š” `/cassiiopeia:` ์ž๋™์™„์„ฑ, Gemini๋Š” extension, Codex๋Š” plugin marketplace๋ฅผ ์šฐ์„  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค์น˜ ๋ฐฉ์‹์€ [Skills ๊ฐ€์ด๋“œ](docs/SKILLS.md)๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
126
+
127
+ ---
128
+
129
+ ## ์ฃผ์š” ๊ธฐ๋Šฅ
130
+
131
+ | ๊ธฐ๋Šฅ | ์„ค๋ช… | ๋ฌธ์„œ |
132
+ |------|------|------|
133
+ | **Agent Skills** | Claude Code, Cursor, Gemini CLI, Codex CLI์—์„œ ์“ฐ๋Š” 25์ข… AI DevOps Skills | [์ƒ์„ธ](docs/SKILLS.md) |
134
+ | **๋ฒ„์ „ ์ž๋™ํ™”** | main ํ‘ธ์‹œ ์‹œ patch ๋ฒ„์ „ ์ž๋™ ์ฆ๊ฐ€ + Git ํƒœ๊ทธ | [์ƒ์„ธ](docs/VERSION-CONTROL.md) |
135
+ | **AI ์ฒด์ธ์ง€๋กœ๊ทธ** | CodeRabbit ๋ฆฌ๋ทฐ ๊ธฐ๋ฐ˜ CHANGELOG ์ž๋™ ์ƒ์„ฑ | [์ƒ์„ธ](docs/CHANGELOG-AUTOMATION.md) |
136
+ | **PR Preview** | ๋Œ“๊ธ€ ํ•œ ์ค„๋กœ ์ž„์‹œ ์„œ๋ฒ„ ๋ฐฐํฌ, ๋‹ซ์œผ๋ฉด ์ž๋™ ์‚ญ์ œ | [์ƒ์„ธ](docs/PR-PREVIEW.md) |
137
+ | **์ด์Šˆ ์ž๋™ํ™”** | ๋ธŒ๋žœ์น˜๋ช…/์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž๋™ ์ œ์•ˆ, QA ์ด์Šˆ ์ƒ์„ฑ | [์ƒ์„ธ](docs/ISSUE-AUTOMATION.md) |
138
+ | **Flutter CI/CD** | iOS TestFlight + Android Play Store ์ž๋™ ๋ฐฐํฌ | [์ƒ์„ธ](docs/FLUTTER-CICD-OVERVIEW.md) |
139
+ | **๋ฐฐํฌ ์„ค์ • ๋งˆ๋ฒ•์‚ฌ** | Play Store / TestFlight / Firebase App Distribution 5๋‹จ๊ณ„ HTML ๋งˆ๋ฒ•์‚ฌ | `.github/util/flutter/{playstore,testflight,firebase}-wizard/` |
140
+ | **SSH+Docker ๋ฐฐํฌ** | SSH ์ ‘์† ์„œ๋ฒ„์— Docker ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ (SynologyยทAWS EC2 ๋“ฑ) | [์ƒ์„ธ](docs/SSH-DOCKER-DEPLOYMENT-GUIDE.md) |
141
+
142
+ ---
143
+
144
+ ## Agent Skills (25์ข…)
145
+
146
+ ### ๐Ÿ”„ ๊ฐœ๋ฐœ ์‚ฌ์ดํด ์ž๋™ํ™”
147
+
148
+ | ์Šคํ‚ฌ | ์šฉ๋„ |
149
+ |------|------|
150
+ | `/cassiiopeia:suh-issue` | ์„ค๋ช… ํ•œ ์ค„ โ†’ GitHub ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์ž๋™ ์ž‘์„ฑ + ๋“ฑ๋ก |
151
+ | `/cassiiopeia:suh-init-worktree` | Git worktree ์ƒ์„ฑ + ๋ฏผ๊ฐ ํŒŒ์ผ ์ž๋™ ๋ณต์‚ฌ |
152
+ | `/cassiiopeia:suh-commit` | ์ด์Šˆ ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž๋™ ์™„์„ฑ (superpowers ์ค€์ˆ˜) |
153
+ | `/cassiiopeia:suh-report` | git diff ๋ถ„์„ โ†’ ๊ตฌํ˜„ ๋ณด๊ณ ์„œ ์ƒ์„ฑ + GitHub ๋Œ“๊ธ€ ์ž๋™ ํฌ์ŠคํŒ… |
154
+ | `/cassiiopeia:suh-changelog-deploy` | main push โ†’ deploy PR ์ƒ์„ฑ + ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ์ž‘์„ฑ + automerge |
155
+ | `/cassiiopeia:suh-github` | GitHub ์ด์Šˆ/PR/๋Œ“๊ธ€ ๋…๋ฆฝ ์กฐํšŒ ๋ฐ ๊ด€๋ฆฌ |
156
+
157
+ ### ๐Ÿ“Š ๋ถ„์„ํ˜• (์ฝ”๋“œ ์ˆ˜์ • ์—†์Œ)
158
+
159
+ | ์Šคํ‚ฌ | ์šฉ๋„ |
160
+ |------|------|
161
+ | `/cassiiopeia:suh-analyze` | ๊ตฌํ˜„ ์ „ ํ˜„์žฌ ์ฝ”๋“œ ์ƒํƒœ ๋ถ„์„ ๋ฐ ์˜ํ–ฅ ๋ฒ”์œ„ ํ‰๊ฐ€ |
162
+ | `/cassiiopeia:suh-plan` | ์š”๊ตฌ์‚ฌํ•ญ ๋ช…ํ™•ํ™” + 2๊ฐ€์ง€ ์ด์ƒ ์ ‘๊ทผ ๋ฐฉ์‹ ๋น„๊ต๋กœ ์ „๋žต ์ˆ˜๋ฆฝ |
163
+ | `/cassiiopeia:suh-design-analyze` | ์•„ํ‚คํ…์ฒ˜/API/DB/UI ์„ค๊ณ„ ๋ถ„์„ (๊ตฌํ˜„ X) |
164
+ | `/cassiiopeia:suh-refactor-analyze` | Code Smell ํƒ์ง€ + Before/After ๊ธฐ๋ฐ˜ ๋ฆฌํŒฉํ† ๋ง ๊ณ„ํš |
165
+ | `/cassiiopeia:suh-review` | ๋ณด์•ˆ/์„ฑ๋Šฅ/๋ฒ„๊ทธ/ํ’ˆ์งˆ 6๊ด€์  ๋ฆฌ๋ทฐ, Critical/Major/Minor ๋ถ„๋ฅ˜ |
166
+ | `/cassiiopeia:suh-troubleshoot` | ๊ฐ€์„ค-๊ฒ€์ฆ ๋ฐฉ์‹ ๊ทผ๋ณธ ์›์ธ ๋ถ„์„, Quick Fix/Root Fix ์ œ์‹œ |
167
+
168
+ ### ๐Ÿ”ง ๊ตฌํ˜„ํ˜• (์‹ค์ œ ์ฝ”๋“œ ์ž‘์„ฑ)
169
+
170
+ | ์Šคํ‚ฌ | ์šฉ๋„ |
171
+ |------|------|
172
+ | `/cassiiopeia:suh-implement` | ๊ณ„ํš/๋ถ„์„ ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๊ตฌํ˜„ (๊ธฐ์กด ์Šคํƒ€์ผ 100% ์ค€์ˆ˜) |
173
+ | `/cassiiopeia:suh-design` | ์•„ํ‚คํ…์ฒ˜/API/DB/UI ์„ค๊ณ„ + ๊ตฌํ˜„๊นŒ์ง€ |
174
+ | `/cassiiopeia:suh-refactor` | Extract Method, DRY ๋“ฑ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ• ๋‹จ๊ณ„๋ณ„ ์ ์šฉ |
175
+ | `/cassiiopeia:suh-test` | AAA ํŒจํ„ด ๋‹จ์œ„/ํ†ตํ•ฉ/E2E ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ |
176
+ | `/cassiiopeia:suh-figma` | Figma CSS โ†’ React/RN/Flutter ๋ฐ˜์‘ํ˜• ์ฝ”๋“œ ๋ณ€ํ™˜ |
177
+ | `/cassiiopeia:suh-build` | ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์‹คํ–‰, ์—๋Ÿฌ ๋ถ„์„, ์ตœ์ ํ™” ์ œ์•ˆ |
178
+
179
+ ### ๐Ÿ“ ๋ฌธ์„œ/์‚ฐ์ถœ๋ฌผ ์ƒ์„ฑํ˜•
180
+
181
+ | ์Šคํ‚ฌ | ์šฉ๋„ |
182
+ |------|------|
183
+ | `/cassiiopeia:suh-document` | ์ฝ”๋“œ ์ฃผ์„/README/API ๋ฌธ์„œ ์ž‘์„ฑ |
184
+ | `/cassiiopeia:suh-testcase` | ์ด์Šˆ ๋ถ„์„ โ†’ QA ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ |
185
+ | `/cassiiopeia:suh-ppt` | ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…/๊ตฌํ˜„ ์‚ฌ๋ก€ โ†’ 5์„น์…˜ ๋ฐœํ‘œ์ž๋ฃŒ |
186
+ | `/cassiiopeia:suh-spring-test` | Spring Boot ํ…Œ์ŠคํŠธ ์ƒ˜ํ”Œ ์ฝ”๋“œ ์ƒ์„ฑ |
187
+ | `/cassiiopeia:suh-synology-expose` | Synology NAS ์™ธ๋ถ€ ๋„๋ฉ”์ธ ๋…ธ์ถœ ์„ค์ • ๊ฐ€์ด๋“œ |
188
+ | `/cassiiopeia:suh-ssh` | ์›๊ฒฉ ์„œ๋ฒ„ SSH ์ ‘์†ยท๋ช…๋ น ์‹คํ–‰ (AWS EC2, ์‹œ๋†€๋กœ์ง€ NAS, Linux ๋“ฑ ๋ฒ”์šฉ) |
189
+ | `/cassiiopeia:suh-skill-creator` | Skill ์ƒ์„ฑ/๋ฆฌ๋ทฐ/๊ฐœ์„  (CREATEยทREVIEWยทIMPROVE 3๋ชจ๋“œ) |
190
+
191
+ ---
192
+
193
+ ## ์ง€์› ํ”„๋กœ์ ํŠธ ํƒ€์ž…
194
+
195
+ | ํƒ€์ž… | ๋ฒ„์ „ ํŒŒ์ผ | CI/CD |
196
+ |------|----------|-------|
197
+ | `spring` | build.gradle | SSH+Docker ๋ฐฐํฌ, Nexus |
198
+ | `flutter` | pubspec.yaml | TestFlight, Play Store |
199
+ | `react` | package.json | Docker |
200
+ | `next` | package.json | Docker |
201
+ | `node` | package.json | Docker |
202
+ | `python` | pyproject.toml | SSH+Docker ๋ฐฐํฌ |
203
+ | `react-native` | Info.plist + build.gradle | โ€” |
204
+ | `react-native-expo` | app.json | โ€” |
205
+ | `basic` | version.yml๋งŒ | โ€” |
206
+
207
+ ---
208
+
209
+ ## ๋Œ“๊ธ€ ๋ช…๋ น์–ด
210
+
211
+ Issue๋‚˜ PR์— ๋Œ“๊ธ€๋กœ ์ž๋™ํ™”๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
212
+
213
+ | ๋ช…๋ น์–ด | ๊ธฐ๋Šฅ | ๋Œ€์ƒ |
214
+ |--------|------|------|
215
+ | `@suh-lab server build` | ์ž„์‹œ ์„œ๋ฒ„ ๋ฐฐํฌ | Spring, Python |
216
+ | `@suh-lab server destroy` | ์„œ๋ฒ„ ์‚ญ์ œ | Spring, Python |
217
+ | `@suh-lab server status` | ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ | Spring, Python |
218
+ | `@suh-lab build app` | iOS + Android ๋นŒ๋“œ | Flutter |
219
+ | `@suh-lab apk build` | Android๋งŒ ๋นŒ๋“œ | Flutter |
220
+ | `@suh-lab ios build` | iOS๋งŒ ๋นŒ๋“œ | Flutter |
221
+ | `@suh-lab create qa` | QA ์ด์Šˆ ์ž๋™ ์ƒ์„ฑ | ๋ชจ๋“  ํ”„๋กœ์ ํŠธ |
222
+
223
+ > ์ƒ์„ธ: [PR Preview](docs/PR-PREVIEW.md) | [Flutter ๋นŒ๋“œ](docs/FLUTTER-TEST-BUILD-TRIGGER.md) | [์ด์Šˆ ์ž๋™ํ™”](docs/ISSUE-AUTOMATION.md)
224
+
225
+ ---
226
+
227
+ ## ์„ค์ •
228
+
229
+ ### ํ•„์ˆ˜ Secret
230
+
231
+ ```
232
+ Repository Settings โ†’ Secrets โ†’ Actions โ†’ New repository secret
233
+ Name: _GITHUB_PAT_TOKEN
234
+ Value: [Personal Access Token - repo, workflow ๊ถŒํ•œ]
235
+ ```
236
+
237
+ ### Organization ์„ค์ •
238
+
239
+ ```
240
+ Settings โ†’ Actions โ†’ General
241
+ โ”œโ”€ โœ… Allow GitHub Actions to create and approve pull requests
242
+ โ””โ”€ โœ… Read and write permissions
243
+ ```
244
+
245
+ ---
246
+
247
+ ## ๋ฌธ์„œ
248
+
249
+ | ๋ฌธ์„œ | ์„ค๋ช… |
250
+ |------|------|
251
+ | [Agent Skills ๊ฐ€์ด๋“œ](docs/SKILLS.md) | 25์ข… Skills ์šฉ๋„, ์‚ฌ์šฉ๋ฒ•, ์ „์ฒด ๊ฐœ๋ฐœ ์‚ฌ์ดํด ํ๋ฆ„ |
252
+ | [ํ†ตํ•ฉ ์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ด๋“œ](docs/TEMPLATE-INTEGRATOR.md) | ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ํ…œํ”Œ๋ฆฟ ํ†ตํ•ฉ |
253
+ | [๋ฒ„์ „ ๊ด€๋ฆฌ](docs/VERSION-CONTROL.md) | version.yml, ์ž๋™ ๋ฒ„์ „ ์ฆ๊ฐ€ |
254
+ | [์ฒด์ธ์ง€๋กœ๊ทธ ์ž๋™ํ™”](docs/CHANGELOG-AUTOMATION.md) | CodeRabbit ์—ฐ๋™, AI ๋ฌธ์„œํ™” |
255
+ | [PR Preview](docs/PR-PREVIEW.md) | ์ž„์‹œ ์„œ๋ฒ„ ๋ฐฐํฌ ์‹œ์Šคํ…œ |
256
+ | [Flutter CI/CD](docs/FLUTTER-CICD-OVERVIEW.md) | iOS/Android ์ž๋™ ๋ฐฐํฌ |
257
+ | [SSH+Docker ๋ฐฐํฌ](docs/SSH-DOCKER-DEPLOYMENT-GUIDE.md) | SSH ์ ‘์† ์„œ๋ฒ„์— Docker ๋ฐฐํฌ (SynologyยทAWS EC2 ๋“ฑ) |
258
+ | [์ด์Šˆ ์ž๋™ํ™”](docs/ISSUE-AUTOMATION.md) | Issue Helper, QA ๋ด‡ |
259
+ | [ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…](docs/TROUBLESHOOTING.md) | ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ |
260
+
261
+ ---
262
+
263
+ ## ์ง€์›
264
+
265
+ - [Issues](https://github.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/issues) โ€” ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ, ๊ธฐ๋Šฅ ์š”์ฒญ
266
+ - [CONTRIBUTING.md](CONTRIBUTING.md) โ€” ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ
267
+
268
+ ---
269
+
270
+ <div align="center">
271
+
272
+ **MIT License**
273
+
274
+ </div>
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env node
2
+ // projectops ์Šคํ… CLI โ€” ์ด๋ฆ„ ์„ ์  ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ฒ€์ฆ์šฉ (SP1)
3
+ // ๋งˆ๋ฒ•์‚ฌ ๋ณธ์ฒด(SP2)๊ฐ€ ์ด์‹๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ธฐ์กด template_integrator ์•ˆ๋‚ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
4
+ import { readFileSync } from "node:fs";
5
+ import { fileURLToPath } from "node:url";
6
+ import { dirname, join } from "node:path";
7
+
8
+ const nodeMajor = Number(process.versions.node.split(".")[0]);
9
+ if (nodeMajor < 18) {
10
+ console.error(`Node.js 18 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (ํ˜„์žฌ: ${process.versions.node})`);
11
+ process.exit(1);
12
+ }
13
+
14
+ const pkg = JSON.parse(
15
+ readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "package.json"), "utf8"),
16
+ );
17
+
18
+ const args = process.argv.slice(2);
19
+ if (args.includes("--version") || args.includes("-v")) {
20
+ console.log(pkg.version);
21
+ process.exit(0);
22
+ }
23
+
24
+ const RESET = "\x1b[0m";
25
+ const CYAN = "\x1b[36m";
26
+ const GREEN = "\x1b[32m";
27
+ const YELLOW = "\x1b[33m";
28
+ const DIM = "\x1b[2m";
29
+
30
+ console.log(`
31
+ ${CYAN}=========================================================
32
+ ProjectOps v${pkg.version}
33
+ ์™„์ „ ์ž๋™ํ™” GitHub ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ…œํ”Œ๋ฆฟ ํ†ตํ•ฉ CLI
34
+ =========================================================${RESET}
35
+
36
+ ${YELLOW}npx ๋งˆ๋ฒ•์‚ฌ๋Š” ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค.${RESET} ์ง€๊ธˆ์€ ์•„๋ž˜ ๊ธฐ์กด ๋ฐฉ์‹์œผ๋กœ ํ†ตํ•ฉํ•˜์„ธ์š”.
37
+
38
+ ${GREEN}macOS / Linux:${RESET}
39
+ bash <(curl -fsSL "https://raw.githubusercontent.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/main/template_integrator.sh")
40
+
41
+ ${GREEN}Windows (PowerShell):${RESET}
42
+ $wc=New-Object Net.WebClient;$wc.Encoding=[Text.Encoding]::UTF8;iex $wc.DownloadString("https://raw.githubusercontent.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/main/template_integrator.ps1")
43
+
44
+ ${DIM}๋ฌธ์„œ: https://github.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE${RESET}
45
+ `);
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "projectops",
3
+ "version": "3.0.183",
4
+ "description": "ProjectOps โ€” ์™„์ „ ์ž๋™ํ™” GitHub ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ…œํ”Œ๋ฆฟ ํ†ตํ•ฉ CLI (๊ตฌ SUH-DEVOPS-TEMPLATE ๋งˆ๋ฒ•์‚ฌ)",
5
+ "keywords": [
6
+ "devops",
7
+ "automation",
8
+ "github-actions",
9
+ "template",
10
+ "cli",
11
+ "pi-package"
12
+ ],
13
+ "license": "MIT",
14
+ "author": {
15
+ "name": "Cassiiopeia",
16
+ "url": "https://github.com/Cassiiopeia"
17
+ },
18
+ "homepage": "https://github.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE.git"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/Cassiiopeia/SUH-DEVOPS-TEMPLATE/issues"
25
+ },
26
+ "type": "module",
27
+ "bin": {
28
+ "projectops": "bin/projectops.js"
29
+ },
30
+ "engines": {
31
+ "node": ">=18"
32
+ },
33
+ "files": [
34
+ "bin/"
35
+ ],
36
+ "pi": {
37
+ "skills": [
38
+ "./skills"
39
+ ]
40
+ }
41
+ }