commitgate 0.1.1 โ 0.1.2
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/README.en.md +120 -244
- package/README.md +121 -245
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -1,341 +1,217 @@
|
|
|
1
|
-
# CommitGate
|
|
1
|
+
# CommitGate
|
|
2
2
|
|
|
3
3
|
๐ [ํ๊ตญ์ด](./README.md) ยท **English**
|
|
4
4
|
|
|
5
|
-
**A
|
|
5
|
+
**A commit gate that blocks AI-generated code from being committed until Codex has reviewed and approved it.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
AI coding agents can move quickly, but unreviewed changes should not go straight into your history. CommitGate wraps each change in a REQ ticket and only allows the staged tree approved by Codex to be committed. If the code changes after approval, or if evidence is missing, it fails closed.
|
|
8
8
|
|
|
9
9
|
[](./LICENSE)
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Quick Start
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Run this from your project root. The project must be a **git repository with a `package.json`**.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
In short, instead of "build alone, commit alone," it enforces **cross-verification between the AI that built it and the AI that checked it.**
|
|
24
|
-
|
|
25
|
-
## ๐ฏ What problem does it solve?
|
|
26
|
-
|
|
27
|
-
AI produces code **fast**, but committing it without verification is risky. CommitGate:
|
|
28
|
-
|
|
29
|
-
- โ
Forces **every change through review.**
|
|
30
|
-
- โ
Binds approval to **"the exact code that was reviewed."** (You can't swap in changes after approval โ it's compared like a fingerprint.)
|
|
31
|
-
- โ
**Blocks by default (fail-closed)** whenever something is ambiguous or missing. "Pass only when certain" is the default, so it's safe.
|
|
32
|
-
- โ
Leaves **evidence on disk** of who approved what and when.
|
|
33
|
-
|
|
34
|
-
## ๐ The flow at a glance
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
โ create ticket โ โก write design โ โข design review(Codex) โ โฃ implement code
|
|
38
|
-
req:new req:review-codex
|
|
39
|
-
|
|
40
|
-
โ โค gate check โ โฅ code review(Codex) โ โฆ commit once approved
|
|
41
|
-
req:doctor req:review-codex req:commit
|
|
17
|
+
```sh
|
|
18
|
+
npx commitgate
|
|
19
|
+
npm install
|
|
20
|
+
codex --version
|
|
21
|
+
codex login status
|
|
42
22
|
```
|
|
43
23
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## ๐ฆ Prerequisites
|
|
24
|
+
Then paste this prompt into your AI coding agent.
|
|
49
25
|
|
|
50
|
-
|
|
26
|
+
```text
|
|
27
|
+
Do not handle this as a normal implementation. Use the CommitGate workflow installed in this project.
|
|
51
28
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
| **Git** (required) | `git --version` | install from [git-scm.com](https://git-scm.com) |
|
|
55
|
-
| **Node.js 18.17+** (required) | `node --version` | install from [nodejs.org](https://nodejs.org) |
|
|
56
|
-
| **Codex CLI** (for review) | `codex --version` | install OpenAI Codex CLI (without it only review is unavailable; the rest works) |
|
|
57
|
-
| **Package manager** | `npm --version` | `npm` ships with Node (or use `pnpm`/`yarn`) |
|
|
58
|
-
|
|
59
|
-
> ๐ก **Reviewer = Codex CLI.** To actually run reviews, the Codex CLI must be installed. Without it, review commands **fail safely (fail-closed)** โ they never silently pass.
|
|
60
|
-
|
|
61
|
-
### ๐ง Install & log in to the Codex CLI (Reviewer setup)
|
|
29
|
+
Create a new REQ ticket and run this flow end to end:
|
|
30
|
+
req:new โ write design docs โ Codex design review โ implement and test โ req:doctor โ Codex phase review โ req:commit
|
|
62
31
|
|
|
63
|
-
|
|
32
|
+
Proceed automatically:
|
|
33
|
+
- If Codex returns NEEDS_FIX, fix the findings and rerun review until approved.
|
|
34
|
+
- The review target is only what has been staged with git add.
|
|
35
|
+
- Do not manually git add state.json or responses/.
|
|
64
36
|
|
|
65
|
-
|
|
37
|
+
Stop for human confirmation only:
|
|
38
|
+
- Right before req:commit --run
|
|
39
|
+
- Before merging to main or pushing
|
|
40
|
+
- Before destructive actions such as reset, clean, or force push
|
|
41
|
+
- When the requested scope must change
|
|
42
|
+
- When Codex review is still not approved after 3 rounds
|
|
66
43
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
brew install codex
|
|
44
|
+
Requirement:
|
|
45
|
+
- What:
|
|
46
|
+
- Why:
|
|
47
|
+
- Constraints:
|
|
48
|
+
- Done when:
|
|
73
49
|
```
|
|
74
50
|
|
|
75
|
-
|
|
51
|
+
The agent's first reply should look roughly like this.
|
|
76
52
|
|
|
77
|
-
```
|
|
78
|
-
|
|
53
|
+
```text
|
|
54
|
+
REQ-2026-002 created
|
|
55
|
+
Branch: feat/req-2026-002-profile-edit-api
|
|
56
|
+
Phases:
|
|
57
|
+
- phase-1: implement PATCH /profile
|
|
58
|
+
- phase-2: tests and regression checks
|
|
59
|
+
Control points: before req:commit --run, before push
|
|
79
60
|
```
|
|
80
61
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- **Option A. With a ChatGPT account (recommended, browser)**
|
|
84
|
-
```sh
|
|
85
|
-
codex login
|
|
86
|
-
```
|
|
87
|
-
A browser opens โ sign in with your ChatGPT account โ return to the terminal when done.
|
|
62
|
+
After that, the agent runs design, implementation, tests, and Codex review. You only confirm at control points such as commit or push.
|
|
88
63
|
|
|
89
|
-
|
|
90
|
-
```sh
|
|
91
|
-
# via environment variable (simplest)
|
|
92
|
-
export OPENAI_API_KEY=sk-... # Windows PowerShell: $env:OPENAI_API_KEY="sk-..."
|
|
64
|
+
---
|
|
93
65
|
|
|
94
|
-
|
|
95
|
-
printenv OPENAI_API_KEY | codex login --with-api-key
|
|
96
|
-
```
|
|
97
|
-
Create an API key at [platform.openai.com](https://platform.openai.com/api-keys).
|
|
66
|
+
## What Does It Enforce?
|
|
98
67
|
|
|
99
|
-
|
|
68
|
+
CommitGate is designed to block **unreviewed changes from being committed**, not just to wrap commands.
|
|
100
69
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
70
|
+
- No Codex approval means no commit.
|
|
71
|
+
- If the approved staged tree differs from the current staged tree, the commit is blocked.
|
|
72
|
+
- Workflow files such as `state.json` and `responses/` cannot be mixed into the source commit.
|
|
73
|
+
- If Codex CLI is missing or fails, the workflow fails instead of silently passing.
|
|
74
|
+
- Approval responses and evidence are kept under `workflow/REQ-.../responses/`.
|
|
105
75
|
|
|
106
|
-
|
|
107
|
-
> โ ๏ธ If Windows can't find the `codex` command, open a **new terminal** so PATH is reloaded (a common issue right after a global install).
|
|
76
|
+
In short: **approved changes pass, ambiguous changes stop.**
|
|
108
77
|
|
|
109
78
|
---
|
|
110
79
|
|
|
111
|
-
##
|
|
112
|
-
|
|
113
|
-
**In your project folder** (= a git repo that has a `package.json`):
|
|
80
|
+
## What Installation Adds
|
|
114
81
|
|
|
115
|
-
|
|
116
|
-
npx commitgate
|
|
117
|
-
```
|
|
82
|
+
`npx commitgate` adds the following to the target project. Existing files are not overwritten by default.
|
|
118
83
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
84
|
+
| Added item | Purpose |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `scripts/req/` | `req:new`, `req:review-codex`, `req:doctor`, `req:commit` scripts |
|
|
87
|
+
| `workflow/*.schema.json` | Schemas for Codex responses and config |
|
|
88
|
+
| `req.config.json` | Project-level configuration |
|
|
89
|
+
| `AGENTS.md` | Template rules for the agent and reviewer |
|
|
90
|
+
| `package.json` scripts | `req:*` commands and required devDependencies |
|
|
125
91
|
|
|
126
|
-
|
|
92
|
+
Preview without writing files:
|
|
127
93
|
|
|
128
94
|
```sh
|
|
129
|
-
|
|
95
|
+
npx commitgate --dry-run
|
|
130
96
|
```
|
|
131
97
|
|
|
132
|
-
> Add `--dry-run` to preview what it would do **without changing anything**: `npx commitgate --dry-run`
|
|
133
|
-
|
|
134
98
|
---
|
|
135
99
|
|
|
136
|
-
##
|
|
137
|
-
|
|
138
|
-
Honestly, **nobody types `req:new โ review โ implement โ review โ commit` by hand, one at a time.** It's tedious.
|
|
139
|
-
|
|
140
|
-
The real way to use CommitGate is this: **give your AI coding agent a prompt with your "requirements" plus "use this workflow," and the agent drives the whole thing.** You only approve at **control points (commit, merge, push, etc.).**
|
|
141
|
-
|
|
142
|
-
### What this mode assumes
|
|
143
|
-
- **An AI coding agent that can run shell commands** โ Claude Code, Cursor (agent), Codex CLI, etc. (it must be able to run terminal commands in your repo)
|
|
144
|
-
- **Codex CLI installed** โ the Reviewer role. Without it, the review step stops (fail-closed).
|
|
145
|
-
- **A filled-in `AGENTS.md`** โ write your project's rules (coding conventions, test commands, etc.) into the template that `npx commitgate` created; it improves review quality.
|
|
146
|
-
|
|
147
|
-
### Three steps and you're done
|
|
148
|
-
1. Copy the **prompt template** below and fill the `[Requirements]` block at the bottom with your request.
|
|
149
|
-
2. Paste the whole thing **into your AI agent's chat.**
|
|
150
|
-
3. The agent's **first reply reports only the REQ number, branch, phase plan, and control points.** After that it asks you **only at control points** โ everything else (implementation, tests, Codex review, applying NEEDS_FIX, re-review) is automatic.
|
|
151
|
-
|
|
152
|
-
### ๐ Copy-paste prompt template
|
|
100
|
+
## Prerequisites
|
|
153
101
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
[Do automatically]
|
|
162
|
-
- Within the approved phase scope, do implementation, tests, keeping codex-request consistent, applying NEEDS_FIX, and re-review (resume) automatically. Do not ask me every time.
|
|
163
|
-
- If Codex returns NEEDS_FIX, apply the feedback and re-run the review until approved (max 3 rounds per phase).
|
|
164
|
-
- Only what is `git add`ed is reviewed. NEVER `git add` state.json or responses/ (the tool manages those).
|
|
165
|
-
|
|
166
|
-
[Control points โ stop and ask me ONLY here]
|
|
167
|
-
- Right before `req:commit --run` (the actual commit / HIGH impact)
|
|
168
|
-
- Right before merging to main or `git push`
|
|
169
|
-
- Destructive operations such as reset, clean, force push
|
|
170
|
-
- When a design-scope change or a feature not in [Requirements] is needed
|
|
171
|
-
- When Codex review exceeds 3 rounds without approval, or the judgment is unclear
|
|
172
|
-
- When a prerequisite is missing (not a git repo, no Codex CLI / Node / package manager) and you must fail-closed
|
|
173
|
-
|
|
174
|
-
[First reply] Report only the REQ number, branch, phase plan, and control points. After that, stop only at control points.
|
|
175
|
-
|
|
176
|
-
[Requirements]
|
|
177
|
-
- What: (e.g.) Add a user-profile edit API
|
|
178
|
-
- Why: (e.g.) Only the name is editable today โ email and bio should be editable too
|
|
179
|
-
- Constraints: (e.g.) Reuse the existing auth middleware, validate email format, no new external libraries
|
|
180
|
-
- Done when: (e.g.) PATCH /profile works + unit tests pass + existing tests unbroken
|
|
181
|
-
````
|
|
182
|
-
|
|
183
|
-
> The `[Requirements]` example above is **just a sample.** Just replace the 4 lines (What / Why / Constraints / Done when) with your own. If the request is large, it's split into multiple phases, each going through its own review and gate.
|
|
102
|
+
| Requirement | Check | Notes |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| Git | `git --version` | Required |
|
|
105
|
+
| Node.js 18.17+ | `node --version` | Required |
|
|
106
|
+
| npm, pnpm, or yarn | `npm --version` | Examples use npm |
|
|
107
|
+
| Codex CLI | `codex --version` | Required for review runs |
|
|
184
108
|
|
|
185
|
-
|
|
109
|
+
If Codex CLI is not installed:
|
|
186
110
|
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
- phase-2: unit tests + regression
|
|
192
|
-
Control points: proceed per phase after design approval / confirm before req:commit --run / push needs separate approval
|
|
193
|
-
โ Starting with the design docs. Once the design review passes, I'll move to implementation.
|
|
111
|
+
```sh
|
|
112
|
+
npm install -g @openai/codex
|
|
113
|
+
codex login
|
|
114
|
+
codex login status
|
|
194
115
|
```
|
|
195
116
|
|
|
196
|
-
|
|
117
|
+
On Windows, if `codex` is not found right after installation, open a new terminal so PATH is reloaded.
|
|
197
118
|
|
|
198
119
|
---
|
|
199
120
|
|
|
200
|
-
##
|
|
121
|
+
## Manual Commands
|
|
201
122
|
|
|
202
|
-
|
|
203
|
-
> These are the actual commands the workflow runs internally. Refer to them only when you need to **understand the behavior, debug, or run steps manually.**
|
|
204
|
-
|
|
205
|
-
Let's walk the whole flow with one small feature as an example. (Commands use `npm`; arguments after `npm run` go after `--`. With `pnpm` you can drop the `--`, e.g. `pnpm req:new my-feature --run`.)
|
|
206
|
-
|
|
207
|
-
### Step 1 โ create a work ticket
|
|
123
|
+
Most users should use the prompt flow above. This section is for understanding what the workflow runs internally or for debugging.
|
|
208
124
|
|
|
209
125
|
```sh
|
|
126
|
+
# 1. Create a ticket and branch
|
|
210
127
|
npm run req:new -- my-feature --run
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
- A new branch (`feat/req-...`) is created, and three design docs appear under `workflow/REQ-2026-001/`.
|
|
214
|
-
- The output shows a **ticket number** (e.g. `REQ-2026-001`). Later commands use just the number โ `2026-001`
|
|
215
|
-
|
|
216
|
-
### Step 2 โ write the design docs
|
|
217
|
-
|
|
218
|
-
Fill in the three files under `workflow/REQ-2026-001/`:
|
|
219
|
-
|
|
220
|
-
- `00-requirement.md` โ **what** to build and why
|
|
221
|
-
- `01-design.md` โ **how** to build it
|
|
222
|
-
- `02-plan.md` โ in what **order/phases** to proceed
|
|
223
|
-
|
|
224
|
-
### Step 3 โ get a design review (Codex)
|
|
225
|
-
|
|
226
|
-
Stage your design (i.e. `git add`):
|
|
227
128
|
|
|
228
|
-
|
|
129
|
+
# 2. Write design docs, then stage them
|
|
229
130
|
git add workflow/REQ-2026-001/00-requirement.md workflow/REQ-2026-001/01-design.md workflow/REQ-2026-001/02-plan.md
|
|
230
|
-
npm run req:review-codex -- 2026-001 --kind design --run
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
- Codex reads the design and returns **approval** or **NEEDS_FIX**.
|
|
234
|
-
- If NEEDS_FIX, apply the feedback, then **`git add` again โ re-run the command.** Repeat until approved.
|
|
235
|
-
|
|
236
|
-
### Step 4 โ implement code + tests
|
|
237
131
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
### Step 5 โ gate check
|
|
132
|
+
# 3. Design review
|
|
133
|
+
npm run req:review-codex -- 2026-001 --kind design --run
|
|
241
134
|
|
|
242
|
-
|
|
135
|
+
# 4. Implement code, then stage source files
|
|
136
|
+
git add <changed-source-files>
|
|
243
137
|
|
|
244
|
-
|
|
245
|
-
git add <files-you-changed>
|
|
138
|
+
# 5. Gate check
|
|
246
139
|
npm run req:doctor -- 2026-001
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
- It checks several things (is the design approval valid, does the staged code match the approved code, is the working tree clean, etc.) and shows **PASS/FAIL.**
|
|
250
140
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
### Step 6 โ get a code review (Codex)
|
|
254
|
-
|
|
255
|
-
```sh
|
|
141
|
+
# 6. Implementation review
|
|
256
142
|
npm run req:review-codex -- 2026-001 --kind phase --run
|
|
143
|
+
|
|
144
|
+
# 7. Commit approved code
|
|
145
|
+
npm run req:commit -- 2026-001 --run -m "feat: my feature"
|
|
257
146
|
```
|
|
258
147
|
|
|
259
|
-
|
|
260
|
-
- Once approved, `commit_allowed=true` and the commit opens.
|
|
148
|
+
Important: only stage code and documents you authored for the source commit. `state.json` and `responses/` are managed by the tool.
|
|
261
149
|
|
|
262
|
-
|
|
150
|
+
For multi-line commit messages, use a file instead of `-m`.
|
|
263
151
|
|
|
264
152
|
```sh
|
|
265
|
-
npm run req:commit -- 2026-001 --run -
|
|
153
|
+
npm run req:commit -- 2026-001 --run --message-file commit-message.txt
|
|
266
154
|
```
|
|
267
155
|
|
|
268
|
-
- After passing the gate (doctor) one final time, it makes a **code commit + an evidence commit.**
|
|
269
|
-
- If it isn't approved, or the code changed after approval, it **stops here.** (That's the heart of CommitGate.)
|
|
270
|
-
|
|
271
|
-
๐ Done! Your code is now committed safely with review, approval, and evidence all recorded.
|
|
272
|
-
|
|
273
156
|
---
|
|
274
157
|
|
|
275
|
-
##
|
|
158
|
+
## Command Cheat Sheet
|
|
276
159
|
|
|
277
|
-
| Command |
|
|
160
|
+
| Command | Purpose |
|
|
278
161
|
|---|---|
|
|
279
|
-
| `npx commitgate` | Install
|
|
280
|
-
| `req:new <
|
|
281
|
-
| `req:review-codex <
|
|
282
|
-
| `req:review-codex <
|
|
283
|
-
| `req:doctor <
|
|
284
|
-
| `req:commit <
|
|
285
|
-
|
|
286
|
-
> Instead of `-m "message"`, multi-line messages can be read from a file with `--message-file message.txt`.
|
|
162
|
+
| `npx commitgate` | Install CommitGate into a project |
|
|
163
|
+
| `req:new <slug> --run` | Create a REQ ticket, branch, and design docs |
|
|
164
|
+
| `req:review-codex <id> --kind design --run` | Review the design |
|
|
165
|
+
| `req:review-codex <id> --kind phase --run` | Review the implementation |
|
|
166
|
+
| `req:doctor <id>` | Check gate status |
|
|
167
|
+
| `req:commit <id> --run -m "message"` | Commit approved changes |
|
|
287
168
|
|
|
288
169
|
---
|
|
289
170
|
|
|
290
|
-
##
|
|
171
|
+
## Configuration
|
|
291
172
|
|
|
292
|
-
|
|
173
|
+
Defaults are enough for most projects. If needed, edit `req.config.json` in the project root.
|
|
293
174
|
|
|
294
175
|
| Key | Default | Meaning |
|
|
295
176
|
|---|---|---|
|
|
296
|
-
| `branchPrefix` | `"feat/req-"` | Prefix for
|
|
297
|
-
| `ticketRoot` | `"workflow"` |
|
|
298
|
-
| `packageManager` | auto-detected | `npm
|
|
299
|
-
| `designDocs` | `00
|
|
177
|
+
| `branchPrefix` | `"feat/req-"` | Prefix for new branches |
|
|
178
|
+
| `ticketRoot` | `"workflow"` | REQ ticket directory |
|
|
179
|
+
| `packageManager` | auto-detected | `npm`, `pnpm`, or `yarn` |
|
|
180
|
+
| `designDocs` | `00/01/02` docs | Design document filenames |
|
|
300
181
|
|
|
301
|
-
|
|
182
|
+
Empty `branchPrefix` values and paths that escape the project root are rejected.
|
|
302
183
|
|
|
303
184
|
---
|
|
304
185
|
|
|
305
|
-
##
|
|
186
|
+
## FAQ
|
|
306
187
|
|
|
307
|
-
**
|
|
308
|
-
|
|
188
|
+
**What happens if Codex CLI is missing?**
|
|
189
|
+
The review command fails. It is not treated as approval.
|
|
309
190
|
|
|
310
|
-
**
|
|
311
|
-
|
|
191
|
+
**Can I edit code after approval and still commit?**
|
|
192
|
+
No. If the staged tree changes after approval, CommitGate treats the approval as stale and requires review again.
|
|
312
193
|
|
|
313
|
-
**
|
|
314
|
-
|
|
194
|
+
**Why should I not stage `state.json` or `responses/`?**
|
|
195
|
+
They are workflow state and evidence files. Mixing them into the source commit weakens the approval binding, so `req:commit` blocks it.
|
|
315
196
|
|
|
316
|
-
**
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
**Q. On Windows my commit message newlines look wrong.**
|
|
320
|
-
A. For multi-line messages, use `--message-file file.txt` instead of `-m`.
|
|
197
|
+
**Does running install twice overwrite files?**
|
|
198
|
+
No. Existing files are skipped. Use `--force` if you intentionally want to refresh them.
|
|
321
199
|
|
|
322
200
|
---
|
|
323
201
|
|
|
324
|
-
##
|
|
202
|
+
## Current Scope
|
|
325
203
|
|
|
326
|
-
|
|
204
|
+
The current release is **Stage A: vendored scaffold model**. `npx commitgate` copies workflow files into the target project.
|
|
327
205
|
|
|
328
|
-
|
|
329
|
-
- Codex not installed / review failed โ not a pass, fails clearly
|
|
330
|
-
- The approved code fingerprint differs from the current code โ commit rejected
|
|
331
|
-
- The working tree is dirty (unreviewed changes mixed in) โ review/commit rejected
|
|
206
|
+
Future scope:
|
|
332
207
|
|
|
333
|
-
|
|
208
|
+
- Running directly from `node_modules` as a library-style model
|
|
209
|
+
- Non-git VCS support
|
|
210
|
+
- More design document templates
|
|
211
|
+
- Broader Linux/macOS CI smoke coverage
|
|
334
212
|
|
|
335
213
|
---
|
|
336
214
|
|
|
337
|
-
##
|
|
215
|
+
## License
|
|
338
216
|
|
|
339
217
|
[MIT](./LICENSE) ยฉ 2026 sol5288
|
|
340
|
-
|
|
341
|
-
> This workflow was extracted as a standalone package from the REQ-2026-017 portability kit of `palm-kiosk-app`, and was validated by **reviewing and approving itself through this very workflow (dogfood).**
|
package/README.md
CHANGED
|
@@ -1,341 +1,217 @@
|
|
|
1
|
-
# CommitGate
|
|
1
|
+
# CommitGate
|
|
2
2
|
|
|
3
3
|
๐ **ํ๊ตญ์ด** ยท [English](./README.en.md)
|
|
4
4
|
|
|
5
|
-
**AI
|
|
5
|
+
**AI ์ฝ๋ฉ ๋ณ๊ฒฝ์ Codex ๋ฆฌ๋ทฐ ์น์ธ ์์ด๋ ์ปค๋ฐํ์ง ๋ชปํ๊ฒ ๋ง๋ ์ปค๋ฐ ๊ฒ์ดํธ์
๋๋ค.**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
AI ์์ด์ ํธ๊ฐ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค๋๋ผ๋, ๋ฆฌ๋ทฐ ์์ด ๋ฐ๋ก ์ปค๋ฐ๋๋ฉด ์ํํฉ๋๋ค. CommitGate๋ ๋ณ๊ฒฝ์ ํฐ์ผ ๋จ์๋ก ๋ฌถ๊ณ , Codex๊ฐ ์น์ธํ staged tree๋ง ์ปค๋ฐ๋๊ฒ ํฉ๋๋ค. ์น์ธ ํ ์ฝ๋๊ฐ ๋ฐ๋๊ฑฐ๋ ์ฆ๊ฑฐ๊ฐ ๋ถ์กฑํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ต๋๋ค.
|
|
8
8
|
|
|
9
9
|
[](./LICENSE)
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Quick Start
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
์๋๋ ๊ฐ์ฅ ์งง์ ์ฌ์ฉ ๊ฒฝ๋ก์
๋๋ค. ํ๋ก์ ํธ ๋ฃจํธ๋ **git ์ ์ฅ์์ด๊ณ `package.json`์ด ์๋ ํด๋**์ฌ์ผ ํฉ๋๋ค.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
์ฆ, "ํผ์ ๋ง๋ค๊ณ ํผ์ ์ปค๋ฐ"์ด ์๋๋ผ **"๋ง๋ AI โ ๊ฒ์ฌํ AI"์ ๊ต์ฐจ ๊ฒ์ฆ**์ ๊ฐ์ ํฉ๋๋ค.
|
|
24
|
-
|
|
25
|
-
## ๐ฏ ์ด๋ค ๋ฌธ์ ๋ฅผ ํธ๋์?
|
|
26
|
-
|
|
27
|
-
AI๋ ์ฝ๋๋ฅผ **๋น ๋ฅด๊ฒ** ๋ง๋ค์ง๋ง, ๊ฒ์ฆ ์์ด ๊ทธ๋๋ก ์ปค๋ฐ๋๋ฉด ์ํํฉ๋๋ค. CommitGate๋:
|
|
28
|
-
|
|
29
|
-
- โ
๋ชจ๋ ๋ณ๊ฒฝ์ด **๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๋์ ๊ฑฐ์น๊ฒ** ํฉ๋๋ค.
|
|
30
|
-
- โ
์น์ธ์ **"๋ฆฌ๋ทฐํ ๋ฐ๋ก ๊ทธ ์ฝ๋"์ ๋ฌถ์
๋๋ค.** (์น์ธ ํ ๋ชฐ๋ ์ฝ๋๋ฅผ ๋ฐ๊ฟ์น๊ธฐ ๋ชป ํจ โ ์ง๋ฌธ์ฒ๋ผ ๋์กฐ)
|
|
31
|
-
- โ
๋ฌด์ธ๊ฐ ์ ๋งคํ๊ฑฐ๋ ๋น ์ง๋ฉด **์ผ๋จ ๋ง์ต๋๋ค(fail-closed).** "ํ์คํ ๋๋ง ํต๊ณผ"๊ฐ ๊ธฐ๋ณธ๊ฐ์ด๋ผ ์์ ํฉ๋๋ค.
|
|
32
|
-
- โ
๋๊ฐ ์ธ์ ๋ฌด์์ ์น์ธํ๋์ง **์ฆ๊ฑฐ๊ฐ ํ์ผ๋ก ๋จ์ต๋๋ค.**
|
|
33
|
-
|
|
34
|
-
## ๐ ๋์ ํ๋ฆ ํ๋์
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
โ ํฐ์ผ ๋ง๋ค๊ธฐ โ โก ์ค๊ณ ์์ฑ โ โข ์ค๊ณ ๋ฆฌ๋ทฐ(Codex) โ โฃ ์ฝ๋ ๊ตฌํ
|
|
38
|
-
req:new req:review-codex
|
|
39
|
-
|
|
40
|
-
โ โค ๊ด๋ฌธ ์ ๊ฒ โ โฅ ๊ตฌํ ๋ฆฌ๋ทฐ(Codex) โ โฆ ์น์ธ๋๋ฉด ์ปค๋ฐ
|
|
41
|
-
req:doctor req:review-codex req:commit
|
|
17
|
+
```sh
|
|
18
|
+
npx commitgate
|
|
19
|
+
npm install
|
|
20
|
+
codex --version
|
|
21
|
+
codex login status
|
|
42
22
|
```
|
|
43
23
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## ๐ฆ ์ค๋น๋ฌผ (Prerequisites)
|
|
24
|
+
๊ทธ๋ค์ AI ์ฝ๋ฉ ์์ด์ ํธ์๊ฒ ์๋ ํ๋กฌํํธ๋ฅผ ๋ถ์ฌ๋ฃ์ต๋๋ค.
|
|
49
25
|
|
|
50
|
-
|
|
26
|
+
```text
|
|
27
|
+
์ด ์์ฒญ์ ์ผ๋ฐ ๊ตฌํ์ผ๋ก ์ฒ๋ฆฌํ์ง ๋ง๊ณ , ์ด ํ๋ก์ ํธ์ ์ค์น๋ CommitGate๋ฅผ ์ฌ์ฉํด๋ผ.
|
|
51
28
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
| **Git** (ํ์) | `git --version` | [git-scm.com](https://git-scm.com) ์์ ์ค์น |
|
|
55
|
-
| **Node.js 18.17+** (ํ์) | `node --version` | [nodejs.org](https://nodejs.org) ์์ ์ค์น |
|
|
56
|
-
| **Codex CLI** (๋ฆฌ๋ทฐ์ฉ) | `codex --version` | OpenAI Codex CLI ์ค์น (์์ผ๋ฉด ๋ฆฌ๋ทฐ๋ง ์ ๋๊ณ ๋๋จธ์ง๋ ๋จ) |
|
|
57
|
-
| **ํจํค์ง ๋งค๋์ ** | `npm --version` | Node ์ค์น ์ `npm`์ ๊ธฐ๋ณธ ํฌํจ (๋๋ `pnpm`/`yarn`) |
|
|
58
|
-
|
|
59
|
-
> ๐ก **Reviewer = Codex CLI** ์
๋๋ค. ๋ฆฌ๋ทฐ๋ฅผ ์ค์ ๋ก ๋๋ฆฌ๋ ค๋ฉด Codex CLI๊ฐ ์ค์น๋์ด ์์ด์ผ ํด์. ์์ผ๋ฉด ๋ฆฌ๋ทฐ ๋ช
๋ น์ด "์์ ํ๊ฒ ์คํจ(fail-closed)"ํฉ๋๋ค โ ์กฐ์ฉํ ํต๊ณผ๋๋ ์ผ์ ์์ต๋๋ค.
|
|
60
|
-
|
|
61
|
-
### ๐ง Codex CLI ์ค์น & ๋ก๊ทธ์ธ (Reviewer ์ค๋น)
|
|
29
|
+
์ REQ ํฐ์ผ์ ๋ง๋ค๊ณ ๋ค์ ํ๋ฆ์ ๋๊น์ง ์งํํด๋ผ:
|
|
30
|
+
req:new โ ์ค๊ณ๋ฌธ์ ์์ฑ โ Codex design ๋ฆฌ๋ทฐ โ ๊ตฌํยทํ
์คํธ โ req:doctor โ Codex phase ๋ฆฌ๋ทฐ โ req:commit
|
|
62
31
|
|
|
63
|
-
|
|
32
|
+
์๋์ผ๋ก ์งํํ ๊ฒ:
|
|
33
|
+
- NEEDS_FIX๊ฐ ๋์ค๋ฉด ์์ ํ๊ณ ์ฌ๋ฆฌ๋ทฐํด ์น์ธ๊น์ง ๋ฐ๋ณตํ๋ค.
|
|
34
|
+
- ๋ฆฌ๋ทฐ ๋์์ git add ํ ํ์ผ๋ง์ด๋ค.
|
|
35
|
+
- `state.json`๊ณผ `responses/`๋ ์ง์ `git add`ํ์ง ์๋๋ค.
|
|
64
36
|
|
|
65
|
-
|
|
37
|
+
๋ฉ์ถฐ์ ํ์ธ๋ฐ์ ๋:
|
|
38
|
+
- req:commit --run ์ง์
|
|
39
|
+
- main ๋ณํฉ ๋๋ push ์ง์
|
|
40
|
+
- reset, clean, force push ๊ฐ์ destructive ์์
์
|
|
41
|
+
- ์๊ตฌ์ฌํญ ๋ฒ์๋ฅผ ๋ฐ๊ฟ์ผ ํ ๋
|
|
42
|
+
- Codex ๋ฆฌ๋ทฐ๊ฐ 3๋ผ์ด๋๋ฅผ ๋์ด๋ ์น์ธ๋์ง ์์ ๋
|
|
66
43
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
brew install codex
|
|
44
|
+
์๊ตฌ์ฌํญ:
|
|
45
|
+
- ๋ฌด์์:
|
|
46
|
+
- ์:
|
|
47
|
+
- ์ ์ฝ:
|
|
48
|
+
- ์๋ฃ ๊ธฐ์ค:
|
|
73
49
|
```
|
|
74
50
|
|
|
75
|
-
|
|
51
|
+
์ฒซ ์๋ต์ ๋ณดํต ์ด๋ ๊ฒ ๋์์ผ ํฉ๋๋ค.
|
|
76
52
|
|
|
77
|
-
```
|
|
78
|
-
|
|
53
|
+
```text
|
|
54
|
+
REQ-2026-002 ๋ฐํ
|
|
55
|
+
๋ธ๋์น: feat/req-2026-002-profile-edit-api
|
|
56
|
+
phase:
|
|
57
|
+
- phase-1: PATCH /profile ๊ตฌํ
|
|
58
|
+
- phase-2: ํ
์คํธ์ ํ๊ท ํ์ธ
|
|
59
|
+
ํต์ ์ : req:commit --run ์ง์ , push ์ง์
|
|
79
60
|
```
|
|
80
61
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
- **๋ฐฉ๋ฒ A. ChatGPT ๊ณ์ ์ผ๋ก (๊ถ์ฅ, ๋ธ๋ผ์ฐ์ )**
|
|
84
|
-
```sh
|
|
85
|
-
codex login
|
|
86
|
-
```
|
|
87
|
-
๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฆฌ๋ฉด ChatGPT ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ โ ํฐ๋ฏธ๋๋ก ๋์์ค๋ฉด ์๋ฃ.
|
|
62
|
+
์ดํ์๋ ์์ด์ ํธ๊ฐ ์ค๊ณ, ๊ตฌํ, ํ
์คํธ, Codex ๋ฆฌ๋ทฐ๋ฅผ ์งํํฉ๋๋ค. ์ฌ์ฉ์๋ ์ปค๋ฐ์ด๋ push ๊ฐ์ ํต์ ์ ์์๋ง ํ์ธํ๋ฉด ๋ฉ๋๋ค.
|
|
88
63
|
|
|
89
|
-
|
|
90
|
-
```sh
|
|
91
|
-
# ํ๊ฒฝ๋ณ์๋ก (๊ฐ์ฅ ๊ฐ๋จ)
|
|
92
|
-
export OPENAI_API_KEY=sk-... # Windows PowerShell: $env:OPENAI_API_KEY="sk-..."
|
|
64
|
+
---
|
|
93
65
|
|
|
94
|
-
|
|
95
|
-
printenv OPENAI_API_KEY | codex login --with-api-key
|
|
96
|
-
```
|
|
97
|
-
API ํค๋ [platform.openai.com](https://platform.openai.com/api-keys) ์์ ๋ฐ๊ธํฉ๋๋ค.
|
|
66
|
+
## ๋ฌด์์ ๋ณด์ฅํ๋์?
|
|
98
67
|
|
|
99
|
-
|
|
68
|
+
CommitGate๊ฐ ๋ง๋ ๊ฒ์ ๋จ์ํ ๋ช
๋ น ์ค์๊ฐ ์๋๋ผ **๋ฆฌ๋ทฐ๋ฐ์ง ์์ ๋ณ๊ฒฝ์ด ์ปค๋ฐ๋๋ ์ํฉ**์
๋๋ค.
|
|
100
69
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
70
|
+
- Codex ๋ฆฌ๋ทฐ๊ฐ ์คํจํ๊ฑฐ๋ ์์ผ๋ฉด ์ปค๋ฐํ ์ ์์ต๋๋ค.
|
|
71
|
+
- ์น์ธ๋ staged tree์ ์ง๊ธ ์ปค๋ฐํ๋ ค๋ staged tree๊ฐ ๋ค๋ฅด๋ฉด ๋ง์ต๋๋ค.
|
|
72
|
+
- `state.json`, `responses/` ๊ฐ์ ์ํฌํ๋ก ๋ด๋ถ ํ์ผ์ source ์ปค๋ฐ์ ์์ผ๋ฉด ๋ง์ต๋๋ค.
|
|
73
|
+
- Codex CLI๊ฐ ์๊ฑฐ๋ ์คํ์ ์คํจํ๋ฉด ์กฐ์ฉํ ํต๊ณผํ์ง ์๊ณ ์คํจํฉ๋๋ค.
|
|
74
|
+
- ์น์ธ ์๋ต๊ณผ ์ฆ๊ฑฐ ํ์ผ์ `workflow/REQ-.../responses/`์ ๋จ์ต๋๋ค.
|
|
105
75
|
|
|
106
|
-
|
|
107
|
-
> โ ๏ธ Windows์์ `codex` ๋ช
๋ น์ ๋ชป ์ฐพ์ผ๋ฉด **์ ํฐ๋ฏธ๋**์ ์ด์ด PATH๋ฅผ ์๋ก ์ฝ๊ฒ ํ์ธ์(์ ์ญ ์ค์น ์งํ ํํ ๋ฌธ์ ).
|
|
76
|
+
ํ ์ค๋ก ๋งํ๋ฉด, **ํ์คํ ์น์ธ๋ ๋ณ๊ฒฝ๋ง ํต๊ณผํ๊ณ ์ ๋งคํ๋ฉด ๋ฉ์ถ๋ ๋ฐฉ์**์
๋๋ค.
|
|
108
77
|
|
|
109
78
|
---
|
|
110
79
|
|
|
111
|
-
##
|
|
112
|
-
|
|
113
|
-
**๋น์ ์ ํ๋ก์ ํธ ํด๋**(= git ์ ์ฅ์, `package.json` ์๋ ๊ณณ)์์:
|
|
80
|
+
## ์ค์น๊ฐ ํ๋ ์ผ
|
|
114
81
|
|
|
115
|
-
|
|
116
|
-
npx commitgate
|
|
117
|
-
```
|
|
82
|
+
`npx commitgate`๋ ๋์ ํ๋ก์ ํธ์ ์๋ ํ์ผ๊ณผ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค. ๊ธฐ์กด ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฎ์ด์ฐ์ง ์์ต๋๋ค.
|
|
118
83
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
84
|
+
| ์ถ๊ฐ ํญ๋ชฉ | ์ค๋ช
|
|
|
85
|
+
|---|---|
|
|
86
|
+
| `scripts/req/` | `req:new`, `req:review-codex`, `req:doctor`, `req:commit` ์คํฌ๋ฆฝํธ |
|
|
87
|
+
| `workflow/*.schema.json` | Codex ์๋ต๊ณผ ์ค์ ๊ฒ์ฆ ์คํค๋ง |
|
|
88
|
+
| `req.config.json` | ํ๋ก์ ํธ๋ณ ์ค์ |
|
|
89
|
+
| `AGENTS.md` | ์์ด์ ํธ์ Reviewer๊ฐ ์ฝ๋ ๊ท์น ํ
ํ๋ฆฟ |
|
|
90
|
+
| `package.json` ์คํฌ๋ฆฝํธ | `req:*` ๋ช
๋ น๊ณผ ํ์ํ devDependencies |
|
|
125
91
|
|
|
126
|
-
|
|
92
|
+
๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ง ํ๋ ค๋ฉด:
|
|
127
93
|
|
|
128
94
|
```sh
|
|
129
|
-
|
|
95
|
+
npx commitgate --dry-run
|
|
130
96
|
```
|
|
131
97
|
|
|
132
|
-
> `--dry-run` ์ ๋ถ์ด๋ฉด **์ค์ ๋ก ๋ฐ๊พธ์ง ์๊ณ ** ๋ฌด์์ ํ ์ง ๋ฏธ๋ฆฌ ๋ณผ ์ ์์ด์: `npx commitgate --dry-run`
|
|
133
|
-
|
|
134
98
|
---
|
|
135
99
|
|
|
136
|
-
##
|
|
137
|
-
|
|
138
|
-
์์งํ, `req:new โ ๋ฆฌ๋ทฐ โ ๊ตฌํ โ ๋ฆฌ๋ทฐ โ ์ปค๋ฐ`์ **์์ผ๋ก ํ๋์ฉ ์น๋ ์ฌ๋์ ์์ต๋๋ค.** ํผ๊ณคํ๋๊น์.
|
|
139
|
-
|
|
140
|
-
CommitGate์ ์ง์ง ์ฌ์ฉ๋ฒ์ ์ด๊ฒ๋๋ค: **๋น์ ์ AI ์ฝ๋ฉ ์์ด์ ํธ์๊ฒ "์๊ตฌ์ฌํญ"๊ณผ "์ด ์ํฌํ๋ก๋ฅผ ์ฐ๋ผ"๋ ํ๋กฌํํธ๋ฅผ ๋์ง๋ฉด, ์์ด์ ํธ๊ฐ ์์์ ์ ๊ณผ์ ์ ๊ตด๋ฆฝ๋๋ค.** ๋น์ ์ **ํต์ ์ (์ปค๋ฐยท๋จธ์งยทํธ์ ๋ฑ)์์๋ง** ์น์ธํ๋ฉด ๋ฉ๋๋ค.
|
|
141
|
-
|
|
142
|
-
### ์ด ๋ฐฉ์์ ์ ์
|
|
143
|
-
- **์
ธ ๋ช
๋ น์ ์คํํ ์ ์๋ AI ์ฝ๋ฉ ์์ด์ ํธ** โ Claude Code, Cursor(agent), Codex CLI ๋ฑ. (๋น์ ์ ์ ์ฅ์์์ ํฐ๋ฏธ๋ ๋ช
๋ น์ ์ง์ ๋๋ฆด ์ ์์ด์ผ ํจ)
|
|
144
|
-
- **Codex CLI ์ค์น** โ ๋ฆฌ๋ทฐ์ด(Reviewer) ์ญํ . ์์ผ๋ฉด ๋ฆฌ๋ทฐ ๋จ๊ณ๊ฐ fail-closed๋ก ๋ฉ์ถฅ๋๋ค.
|
|
145
|
-
- **`AGENTS.md` ์ฑ์ฐ๊ธฐ** โ `npx commitgate`๊ฐ ๋ง๋ ํ
ํ๋ฆฟ์ ๋น์ ํ๋ก์ ํธ์ ๊ท์น(์ฝ๋ฉ ์ปจ๋ฒค์
ยทํ
์คํธ ๋ช
๋ น ๋ฑ)์ ์ ์ด๋๋ฉด ๋ฆฌ๋ทฐ ํ์ง์ด ์ฌ๋ผ๊ฐ๋๋ค.
|
|
146
|
-
|
|
147
|
-
### 3๋จ๊ณ๋ฉด ๋
|
|
148
|
-
1. ์๋ **ํ๋กฌํํธ ํ
ํ๋ฆฟ**์ ๋ณต์ฌํ๊ณ , ๋งจ ์๋ `[์๊ตฌ์ฌํญ]` ์นธ์ ๋น์ ์๊ตฌ๋ก ์ฑ์๋๋ค.
|
|
149
|
-
2. ์ ์ฒด๋ฅผ **AI ์์ด์ ํธ ๋ํ์ฐฝ์ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ์ต๋๋ค.**
|
|
150
|
-
3. ์์ด์ ํธ๊ฐ **์ฒซ ์๋ต์ผ๋ก REQ ๋ฒํธยท๋ธ๋์นยทphase ๊ณํยทํต์ ์ **๋ง ๋ณด๊ณ ํฉ๋๋ค. ์ดํ์ **ํต์ ์ ์์๋ง** ๋น์ ์๊ฒ ํ์ธ์ ๋ฐ์ต๋๋ค โ ๋๋จธ์ง(๊ตฌํยทํ
์คํธยทCodex ๋ฆฌ๋ทฐยทNEEDS_FIX ๋ฐ์ยท์ฌ๋ฆฌ๋ทฐ)๋ ์๋์
๋๋ค.
|
|
151
|
-
|
|
152
|
-
### ๐ ๋ณต์ฌํด์ ์ฐ๋ ํ๋กฌํํธ ํ
ํ๋ฆฟ
|
|
100
|
+
## ์ค๋น๋ฌผ
|
|
153
101
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
[์๋์ผ๋ก ์งํํ ๊ฒ]
|
|
162
|
-
- ์น์ธ๋ phase ๋ฒ์ ์์์ ๊ตฌํยทํ
์คํธยทcodex-request ์ ํฉยทNEEDS_FIX ๋ฐ์ยท์ฌ๋ฆฌ๋ทฐ(resume)๋ ์๋์ผ๋ก ์งํํด๋ผ. ๋งค๋ฒ ํ์ธ๋ฐ์ง ๋ง๋ผ.
|
|
163
|
-
- Codex๊ฐ NEEDS_FIX๋ฅผ ์ฃผ๋ฉด ์ง์ ์ ๋ฐ์ํ๊ณ ์ฌ๋ฆฌ๋ทฐ๋ฅผ ๋๋ ค ์น์ธ๊น์ง ๋ฐ๋ณตํด๋ผ(phase๋น ์ต๋ 3๋ผ์ด๋).
|
|
164
|
-
- ๋ฆฌ๋ทฐ ๋์์ git add ํ ๊ฒ๋ง์ด๋ค. state.jsonยทresponses/ ๋ ์ ๋ git add ํ์ง ๋ง๋ผ(๋๊ตฌ๊ฐ ๊ด๋ฆฌํ๋ค).
|
|
165
|
-
|
|
166
|
-
[๋ฉ์ถฐ์ ์ฌ๋ ํ์ธ์ ๋ฐ์ ํต์ ์ โ ์ฌ๊ธฐ์๋ง ๋ฉ์ถฐ๋ผ]
|
|
167
|
-
- req:commit --run ์ง์ (์ค์ ์ปค๋ฐ / HIGH ์ํฅ)
|
|
168
|
-
- main ๋ณํฉ ๋๋ git push ์ง์
|
|
169
|
-
- resetยทcleanยทforce push ๋ฑ destructive ์์
|
|
170
|
-
- ์ค๊ณ ๋ฒ์ ๋ณ๊ฒฝ ๋๋ [์๊ตฌ์ฌํญ]์ ์๋ ๊ธฐ๋ฅ ์ถ๊ฐ๊ฐ ํ์ํ ๋
|
|
171
|
-
- Codex ๋ฆฌ๋ทฐ๊ฐ 3๋ผ์ด๋๋ฅผ ๋๊ฒจ๋ ์น์ธ ์ ๋๊ฑฐ๋ ํ๋จ์ด ๋ถ๋ช
ํํ ๋
|
|
172
|
-
- git ์ ์ฅ์๊ฐ ์๋๊ฑฐ๋ Codex CLIยทNodeยทํจํค์ง๋งค๋์ ์ ์ ๊ฐ ์์ด fail-closed ํด์ผ ํ ๋
|
|
173
|
-
|
|
174
|
-
[์ฒซ ์๋ต] REQ ๋ฒํธ, ๋ธ๋์น, phase ๊ณํ, ํต์ ์ ๋ง ๊ฐ๋จํ ๋ณด๊ณ ํด๋ผ. ๊ทธ ๋ค๋ถํฐ๋ ํต์ ์ ์์๋ง ๋ฉ์ถฐ๋ผ.
|
|
175
|
-
|
|
176
|
-
[์๊ตฌ์ฌํญ]
|
|
177
|
-
- ๋ฌด์์: (์) ์ฌ์ฉ์ ํ๋กํ ํธ์ง API ์ถ๊ฐ
|
|
178
|
-
- ์: (์) ์ง๊ธ์ ์ด๋ฆ๋ง ์์ ๊ฐ๋ฅ โ ์ด๋ฉ์ผยท์๊ฐ๋ ํธ์ง ํ์
|
|
179
|
-
- ์ ์ฝ: (์) ๊ธฐ์กด ์ธ์ฆ ๋ฏธ๋ค์จ์ด ์ฌ์ฌ์ฉ, ์ด๋ฉ์ผ ํ์ ๊ฒ์ฆ, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ ๊ธ์ง
|
|
180
|
-
- ์๋ฃ ๊ธฐ์ค: (์) PATCH /profile ๋์ + ๋จ์ ํ
์คํธ ํต๊ณผ + ๊ธฐ์กด ํ
์คํธ ๋ฌด์์
|
|
181
|
-
````
|
|
182
|
-
|
|
183
|
-
> ์ `[์๊ตฌ์ฌํญ]` ์์๋ **์ํ์ผ ๋ฟ**์
๋๋ค. 4์ค(๋ฌด์์/์/์ ์ฝ/์๋ฃ ๊ธฐ์ค)์ ๋น์ ์๊ตฌ๋ก ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์๊ตฌ๊ฐ ํฌ๋ฉด phase๊ฐ ์ฌ๋ฌ ๊ฐ๋ก ์ชผ๊ฐ์ง๊ณ , ๊ฐ phase๋ง๋ค ๋ฆฌ๋ทฐยท๊ฒ์ดํธ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
|
|
102
|
+
| ํ์ | ํ์ธ ๋ช
๋ น | ๋น๊ณ |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| Git | `git --version` | ํ์ |
|
|
105
|
+
| Node.js 18.17+ | `node --version` | ํ์ |
|
|
106
|
+
| npm, pnpm, yarn ์ค ํ๋ | `npm --version` | npm ๊ธฐ์ค์ผ๋ก ์๋ด |
|
|
107
|
+
| Codex CLI | `codex --version` | ๋ฆฌ๋ทฐ ์คํ์ ํ์ |
|
|
184
108
|
|
|
185
|
-
|
|
109
|
+
Codex CLI๊ฐ ์๋ค๋ฉด:
|
|
186
110
|
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
- phase-2: ๋จ์ ํ
์คํธ + ํ๊ท
|
|
192
|
-
ํต์ ์ : design ์น์ธ ํ phase๋ณ ์งํ / req:commit --run ์ง์ ํ์ธ / push๋ ๋ณ๋ ์น์ธ
|
|
193
|
-
โ ์ค๊ณ๋ฌธ์ ์์ฑ๋ถํฐ ์งํํฉ๋๋ค. design ๋ฆฌ๋ทฐ ํต๊ณผํ๋ฉด ๊ตฌํ์ผ๋ก ๋์ด๊ฐ๋๋ค.
|
|
111
|
+
```sh
|
|
112
|
+
npm install -g @openai/codex
|
|
113
|
+
codex login
|
|
114
|
+
codex login status
|
|
194
115
|
```
|
|
195
116
|
|
|
196
|
-
|
|
117
|
+
Windows์์ ์ค์น ์งํ `codex` ๋ช
๋ น์ ๋ชป ์ฐพ์ผ๋ฉด ์ ํฐ๋ฏธ๋์ ์ด์ด PATH๋ฅผ ๋ค์ ์ฝ๊ฒ ํ์ธ์.
|
|
197
118
|
|
|
198
119
|
---
|
|
199
120
|
|
|
200
|
-
##
|
|
121
|
+
## ์๋ ๋ช
๋ น
|
|
201
122
|
|
|
202
|
-
|
|
203
|
-
> ์๋๋ ์ํฌํ๋ก๊ฐ ๋ด๋ถ์์ ๋๋ฆฌ๋ ์ค์ ๋ช
๋ น๋ค์
๋๋ค. **๋์ ์ดํดยท๋๋ฒ๊น
ยท์๋ ์คํ**์ด ํ์ํ ๋๋ง ์ฐธ๊ณ ํ์ธ์.
|
|
204
|
-
|
|
205
|
-
์์ ๊ธฐ๋ฅ ํ๋๋ฅผ ์๋ก, ์ ์ฒด ํ๋ฆ์ ๊ทธ๋๋ก ๋ฐ์ ๋ด
๋๋ค. (๋ช
๋ น์ `npm` ๊ธฐ์ค์ด๋ฉฐ, `npm run` ๋ค ์ธ์๋ `--` ๋ค์์ ์๋๋ค. `pnpm`์ ์ฐ๋ฉด `pnpm req:new my-feature --run` ์ฒ๋ผ `--` ์์ด ๋ฉ๋๋ค.)
|
|
206
|
-
|
|
207
|
-
### 1๋จ๊ณ โ ์์
ํฐ์ผ ๋ง๋ค๊ธฐ
|
|
123
|
+
๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ์ ํ๋กฌํํธ ๋ฐฉ์์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์๋๋ ๋ด๋ถ์์ ์ด๋ค ๋ช
๋ น์ด ์คํ๋๋์ง ์ดํดํ๊ฑฐ๋ ์ง์ ๋๋ฒ๊น
ํ ๋๋ง ๋ณด๋ฉด ๋ฉ๋๋ค.
|
|
208
124
|
|
|
209
125
|
```sh
|
|
126
|
+
# 1. ํฐ์ผ๊ณผ ๋ธ๋์น ์์ฑ
|
|
210
127
|
npm run req:new -- my-feature --run
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
- ์ ๋ธ๋์น(`feat/req-...`)๊ฐ ์๊ธฐ๊ณ , `workflow/REQ-2026-001/` ํด๋์ ์ค๊ณ ๋ฌธ์ 3์ข
์ด ๋ง๋ค์ด์ง๋๋ค.
|
|
214
|
-
- ์ถ๋ ฅ์ **ํฐ์ผ ๋ฒํธ**(์: `REQ-2026-001`)๊ฐ ๋์ต๋๋ค. ์ดํ ๋ช
๋ น์์ ๋ฒํธ๋ง ์๋๋ค โ `2026-001`
|
|
215
|
-
|
|
216
|
-
### 2๋จ๊ณ โ ์ค๊ณ ๋ฌธ์ ์์ฑ
|
|
217
|
-
|
|
218
|
-
`workflow/REQ-2026-001/` ์์ ์ธ ํ์ผ์ ์ฑ์๋๋ค:
|
|
219
|
-
|
|
220
|
-
- `00-requirement.md` โ **๋ฌด์์** ์ ๋ง๋๋๊ฐ
|
|
221
|
-
- `01-design.md` โ **์ด๋ป๊ฒ** ๋ง๋ค ๊ฒ์ธ๊ฐ
|
|
222
|
-
- `02-plan.md` โ ์ด๋ค **์์/๋จ๊ณ**๋ก ์งํํ ๊ฒ์ธ๊ฐ
|
|
223
|
-
|
|
224
|
-
### 3๋จ๊ณ โ ์ค๊ณ ๋ฆฌ๋ทฐ ๋ฐ๊ธฐ (Codex)
|
|
225
|
-
|
|
226
|
-
์์ฑํ ์ค๊ณ๋ฅผ ๊ฒ์ฌ๋์ ์ฌ๋ฆฝ๋๋ค(= `git add`):
|
|
227
128
|
|
|
228
|
-
|
|
129
|
+
# 2. ์ค๊ณ ๋ฌธ์ ์์ฑ ํ stage
|
|
229
130
|
git add workflow/REQ-2026-001/00-requirement.md workflow/REQ-2026-001/01-design.md workflow/REQ-2026-001/02-plan.md
|
|
230
|
-
npm run req:review-codex -- 2026-001 --kind design --run
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
- Codex๊ฐ ์ค๊ณ๋ฅผ ์ฝ๊ณ **์น์ธ** ๋๋ **๋ณด์ ์์ฒญ(NEEDS_FIX)** ์ ๋๋ ค์ค๋๋ค.
|
|
234
|
-
- ๋ณด์ ์์ฒญ์ด๋ฉด ์ง์ ์ฌํญ์ ๋ฐ์ํ๊ณ **๋ค์ `git add` โ ์ ๋ช
๋ น์ ์ฌ์คํ**ํ์ธ์. ์น์ธ๋ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
|
|
235
|
-
|
|
236
|
-
### 4๋จ๊ณ โ ์ฝ๋ ๊ตฌํ + ํ
์คํธ
|
|
237
131
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
### 5๋จ๊ณ โ ๊ด๋ฌธ ์ ๊ฒ
|
|
132
|
+
# 3. ์ค๊ณ ๋ฆฌ๋ทฐ
|
|
133
|
+
npm run req:review-codex -- 2026-001 --kind design --run
|
|
241
134
|
|
|
242
|
-
|
|
135
|
+
# 4. ์ฝ๋ ๊ตฌํ ํ stage
|
|
136
|
+
git add <changed-source-files>
|
|
243
137
|
|
|
244
|
-
|
|
245
|
-
git add <๋ด๊ฐ-๋ฐ๊พผ-์ฝ๋-ํ์ผ๋ค>
|
|
138
|
+
# 5. ๊ฒ์ดํธ ์ ๊ฒ
|
|
246
139
|
npm run req:doctor -- 2026-001
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
- ์ฌ๋ฌ ํญ๋ชฉ(์ค๊ณ ์น์ธ ์ ํจํ์ง, ๊ฒ์ฌ๋์ ์ฌ๋ฆฐ ์ฝ๋์ ์น์ธ๋ ์ฝ๋๊ฐ ๊ฐ์์ง, ์ํนํธ๋ฆฌ๊ฐ ๊นจ๋ํ์ง ๋ฑ)์ ์ ๊ฒํด **PASS/FAIL** ์ ๋ณด์ฌ์ค๋๋ค.
|
|
250
140
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
### 6๋จ๊ณ โ ๊ตฌํ ๋ฆฌ๋ทฐ ๋ฐ๊ธฐ (Codex)
|
|
254
|
-
|
|
255
|
-
```sh
|
|
141
|
+
# 6. ๊ตฌํ ๋ฆฌ๋ทฐ
|
|
256
142
|
npm run req:review-codex -- 2026-001 --kind phase --run
|
|
143
|
+
|
|
144
|
+
# 7. ์น์ธ๋ ์ฝ๋ ์ปค๋ฐ
|
|
145
|
+
npm run req:commit -- 2026-001 --run -m "feat: my feature"
|
|
257
146
|
```
|
|
258
147
|
|
|
259
|
-
|
|
260
|
-
- ์น์ธ๋๋ฉด `commit_allowed=true` ๊ฐ ๋์ด ์ปค๋ฐ์ด ์ด๋ฆฝ๋๋ค.
|
|
148
|
+
์ค์: source ์ปค๋ฐ์๋ ๋ด๊ฐ ๋ง๋ ์ฝ๋์ ๋ฌธ์๋ง stageํ์ธ์. `state.json`๊ณผ `responses/`๋ ๋๊ตฌ๊ฐ ๊ด๋ฆฌํฉ๋๋ค.
|
|
261
149
|
|
|
262
|
-
|
|
150
|
+
์ฌ๋ฌ ์ค ์ปค๋ฐ ๋ฉ์์ง๋ `-m` ๋์ ํ์ผ์ ์ฌ์ฉํ์ธ์.
|
|
263
151
|
|
|
264
152
|
```sh
|
|
265
|
-
npm run req:commit -- 2026-001 --run -
|
|
153
|
+
npm run req:commit -- 2026-001 --run --message-file commit-message.txt
|
|
266
154
|
```
|
|
267
155
|
|
|
268
|
-
- ๊ด๋ฌธ(doctor ๊ฒ์ดํธ)์ ๋ง์ง๋ง์ผ๋ก ํต๊ณผํ ๋ค **์ฝ๋ ์ปค๋ฐ + ์ฆ๊ฑฐ ์ปค๋ฐ** ์ ๋จ๊น๋๋ค.
|
|
269
|
-
- ์น์ธ๋์ง ์์๊ฑฐ๋, ์น์ธ ํ ์ฝ๋๊ฐ ๋ฐ๋์์ผ๋ฉด **์ฌ๊ธฐ์ ๋งํ๋๋ค.** (๊ทธ๊ฒ CommitGate์ ํต์ฌ)
|
|
270
|
-
|
|
271
|
-
๐ ๋! ์ด์ ๋ฆฌ๋ทฐยท์น์ธยท์ฆ๊ฑฐ๊ฐ ๋ชจ๋ ๋จ์ ์ํ๋ก ์์ ํ๊ฒ ์ปค๋ฐ๋์์ต๋๋ค.
|
|
272
|
-
|
|
273
156
|
---
|
|
274
157
|
|
|
275
|
-
##
|
|
158
|
+
## ๋ช
๋ น์ด ์์ฝ
|
|
276
159
|
|
|
277
|
-
| ๋ช
๋ น |
|
|
160
|
+
| ๋ช
๋ น | ์ฉ๋ |
|
|
278
161
|
|---|---|
|
|
279
|
-
| `npx commitgate` | ํ๋ก์ ํธ์ CommitGate ์ค์น
|
|
280
|
-
| `req:new
|
|
281
|
-
| `req:review-codex
|
|
282
|
-
| `req:review-codex
|
|
283
|
-
| `req:doctor
|
|
284
|
-
| `req:commit
|
|
285
|
-
|
|
286
|
-
> `-m "๋ฉ์์ง"` ๋์ ์ฌ๋ฌ ์ค ๋ฉ์์ง๋ `--message-file ๋ฉ์์ง.txt` ๋ก ํ์ผ์์ ์ฝ์ ์ ์์ต๋๋ค.
|
|
162
|
+
| `npx commitgate` | ํ๋ก์ ํธ์ CommitGate ์ค์น |
|
|
163
|
+
| `req:new <slug> --run` | REQ ํฐ์ผ, ๋ธ๋์น, ์ค๊ณ๋ฌธ์ ์์ฑ |
|
|
164
|
+
| `req:review-codex <id> --kind design --run` | ์ค๊ณ ๋ฆฌ๋ทฐ |
|
|
165
|
+
| `req:review-codex <id> --kind phase --run` | ๊ตฌํ ๋ฆฌ๋ทฐ |
|
|
166
|
+
| `req:doctor <id>` | ๊ฒ์ดํธ ์ํ ํ์ธ |
|
|
167
|
+
| `req:commit <id> --run -m "message"` | ์น์ธ๋ ๋ณ๊ฒฝ ์ปค๋ฐ |
|
|
287
168
|
|
|
288
169
|
---
|
|
289
170
|
|
|
290
|
-
##
|
|
171
|
+
## ์ค์
|
|
291
172
|
|
|
292
|
-
ํ๋ก์ ํธ ๋ฃจํธ์ `req.config.json
|
|
173
|
+
๋๋ถ๋ถ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ํ์ํ๋ฉด ํ๋ก์ ํธ ๋ฃจํธ์ `req.config.json`์ ์์ ํ์ธ์.
|
|
293
174
|
|
|
294
|
-
| ํญ๋ชฉ | ๊ธฐ๋ณธ๊ฐ |
|
|
175
|
+
| ํญ๋ชฉ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
|
|
295
176
|
|---|---|---|
|
|
296
|
-
| `branchPrefix` | `"feat/req-"` |
|
|
297
|
-
| `ticketRoot` | `"workflow"` | ํฐ์ผ ํด๋
|
|
298
|
-
| `packageManager` | ์๋ ๊ฐ์ง | `npm
|
|
299
|
-
| `designDocs` | `00
|
|
177
|
+
| `branchPrefix` | `"feat/req-"` | ์ ๋ธ๋์น prefix |
|
|
178
|
+
| `ticketRoot` | `"workflow"` | REQ ํฐ์ผ ํด๋ |
|
|
179
|
+
| `packageManager` | ์๋ ๊ฐ์ง | `npm`, `pnpm`, `yarn` |
|
|
180
|
+
| `designDocs` | `00/01/02` ๋ฌธ์ | ์ค๊ณ ๋ฌธ์ ํ์ผ๋ช
|
|
|
300
181
|
|
|
301
|
-
|
|
182
|
+
๋น `branchPrefix`๋ ํ๋ก์ ํธ ๋ฐ์ผ๋ก ๋๊ฐ๋ ๊ฒฝ๋ก๋ ๊ฑฐ๋ถ๋ฉ๋๋ค.
|
|
302
183
|
|
|
303
184
|
---
|
|
304
185
|
|
|
305
|
-
##
|
|
186
|
+
## FAQ
|
|
306
187
|
|
|
307
|
-
**
|
|
308
|
-
|
|
188
|
+
**Codex CLI๊ฐ ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?**
|
|
189
|
+
๋ฆฌ๋ทฐ ๋ช
๋ น์ด ์คํจํฉ๋๋ค. ์กฐ์ฉํ ์น์ธ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค.
|
|
309
190
|
|
|
310
|
-
|
|
311
|
-
|
|
191
|
+
**์น์ธ ํ ์ฝ๋๋ฅผ ์กฐ๊ธ ๊ณ ์น๋ฉด ์ปค๋ฐ๋๋์?**
|
|
192
|
+
์ ๋ฉ๋๋ค. ์น์ธ๋ staged tree์ ๋ฌ๋ผ์ง๋ฉด stale ์น์ธ์ผ๋ก ๋ณด๊ณ ๋ค์ ๋ฆฌ๋ทฐ๋ฅผ ์๊ตฌํฉ๋๋ค.
|
|
312
193
|
|
|
313
|
-
|
|
314
|
-
|
|
194
|
+
**`state.json`์ด๋ `responses/`๋ ์ stageํ๋ฉด ์ ๋๋์?**
|
|
195
|
+
์ํฌํ๋ก ์ฆ๊ฑฐ์ ์ํ ํ์ผ์
๋๋ค. source ์ปค๋ฐ์ ์์ด๋ฉด ์น์ธ ๋ฐ์ธ๋ฉ์ด ํ๋ ค์ง๋ฏ๋ก `req:commit`์ด ๋ง์ต๋๋ค.
|
|
315
196
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
**Q. Windows์ธ๋ฐ ์ปค๋ฐ ๋ฉ์์ง ์ค๋ฐ๊ฟ์ด ์ด์ํด์.**
|
|
320
|
-
A. ์ฌ๋ฌ ์ค ๋ฉ์์ง๋ `-m` ๋์ `--message-file ํ์ผ.txt` ๋ฅผ ์ฐ๋ฉด ๊น๋ํฉ๋๋ค.
|
|
197
|
+
**๋ ๋ฒ ์ค์นํ๋ฉด ๋ฎ์ด์ฐ๋์?**
|
|
198
|
+
์๋์. ๊ธฐ์กด ํ์ผ์ ๊ฑด๋๋๋๋ค. ๊ฐ์ ๋ก ๊ฐฑ์ ํ๋ ค๋ฉด `--force`๋ฅผ ์ฌ์ฉํ์ธ์.
|
|
321
199
|
|
|
322
200
|
---
|
|
323
201
|
|
|
324
|
-
##
|
|
202
|
+
## ํ์ฌ ๋ฒ์
|
|
325
203
|
|
|
326
|
-
|
|
204
|
+
ํ์ฌ ๋ฒ์ ์ **Stage A: vendored scaffold ๋ชจ๋ธ**์
๋๋ค. ์ฆ `npx commitgate`๊ฐ ๋์ ํ๋ก์ ํธ์ ์ํฌํ๋ก ํ์ผ์ ๋ณต์ฌํฉ๋๋ค.
|
|
327
205
|
|
|
328
|
-
|
|
329
|
-
- Codex๊ฐ ์ค์น ์ ๋จ / ๋ฆฌ๋ทฐ ์คํจ โ ํต๊ณผ ์๋, ๋ช
ํํ ์คํจ
|
|
330
|
-
- ์น์ธ๋ ์ฝ๋ ์ง๋ฌธ๊ณผ ์ง๊ธ ์ฝ๋๊ฐ ๋ค๋ฅด๋ฉด โ ์ปค๋ฐ ๊ฑฐ๋ถ
|
|
331
|
-
- ์ํนํธ๋ฆฌ๊ฐ ์ง์ ๋ถํ๋ฉด(๋ฆฌ๋ทฐ ์ ํ ๋ณ๊ฒฝ ์์) โ ๋ฆฌ๋ทฐ/์ปค๋ฐ ๊ฑฐ๋ถ
|
|
206
|
+
์๋๋ ํ์ ๋ฒ์์
๋๋ค.
|
|
332
207
|
|
|
333
|
-
|
|
208
|
+
- `node_modules`์์ ์ง์ ์คํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ธ
|
|
209
|
+
- ๋น-git VCS ์ง์
|
|
210
|
+
- ๋ ๋ค์ํ ์ค๊ณ๋ฌธ์ ํ
ํ๋ฆฟ
|
|
211
|
+
- Linux/macOS CI smoke ํ๋
|
|
334
212
|
|
|
335
213
|
---
|
|
336
214
|
|
|
337
|
-
##
|
|
215
|
+
## License
|
|
338
216
|
|
|
339
217
|
[MIT](./LICENSE) ยฉ 2026 sol5288
|
|
340
|
-
|
|
341
|
-
> ์ด ์ํฌํ๋ก๋ `palm-kiosk-app`์ REQ-2026-017 portability kit์์ ๋
๋ฆฝ ํจํค์ง๋ก ์ถ์ถ๋์๊ณ , **์๊ธฐ ์์ ์ ์ด ์ํฌํ๋ก๋ก ๋ฆฌ๋ทฐยท์น์ธ(dogfood)** ํ์ฌ ๊ฒ์ฆ๋์์ต๋๋ค.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "commitgate",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "CommitGate โ BuilderโReviewer(ClaudeโCodex) fail-closed ์ปค๋ฐ ๊ฒ์ดํธ: ๋ฆฌ๋ทฐยท์น์ธยท์ฆ๊ฑฐ ์์ธ ์ปค๋ฐ์ ํต๊ณผ์ํค์ง ์๋ AI REQ ์ํฌํ๋ก kit (req:new/review-codex/doctor/commit)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|