@kaydash9999/banker-plugins 0.13.0 → 0.14.0
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +35 -0
- package/README.md +30 -9
- package/codex/manifest.json +7 -4
- package/codex/transform-matrix.md +14 -2
- package/commands/front-qa.md +6 -3
- package/package.json +1 -1
- package/skills/all-in-one/SKILL.md +160 -55
- package/skills/compact-copy/SKILL.md +14 -13
- package/skills/curation/SKILL.md +36 -3
- package/skills/graceful_pause/SKILL.md +95 -0
- package/skills/omc-reference/SKILL.md +67 -32
- package/skills/payload-mon/SKILL.md +66 -0
- package/skills/payload-mon/scripts/payload-mon.mjs +377 -0
- package/skills/payload-mon/scripts/payload-size.mjs +238 -0
- package/skills/ready-compact/SKILL.md +114 -67
- package/skills/refresh-readme/SKILL.md +2 -2
- package/skills/rfp-author/SKILL.md +2 -2
- package/skills/setup-omc/SKILL.md +10 -3
- package/skills/setup-omc-hud/SKILL.md +11 -0
- package/skills/smart-compact/SKILL.md +10 -9
- package/skills/tone-compact/SKILL.md +203 -0
- package/skills/tone-compact/scripts/tone-compact.mjs +499 -0
- package/skills/ultra-init/SKILL.md +53 -42
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: all-in-one
|
|
3
|
-
description: "(banker) 한 명령으로 합의 계획→검증 구현→독립
|
|
3
|
+
description: "(banker) 한 명령으로 합의 계획→검증 구현→독립 QA 게이트를 연쇄(ralplan→ralph→QA 게이트: Claude Code는 verify 순환, Codex는 ultraqa). 코딩 작업을 계획부터 통과까지 최대 rigor로 한 번에. 'all-in-one'/'all in one' 시 사용(한 줄 수정은 ralph, 아이디어 확장은 autopilot)."
|
|
4
4
|
argument-hint: "[--short] [--checkpoint] [--critic=critic|architect|codex] [--qa=tests|build|lint|typecheck] [--no-deslop] <task description>"
|
|
5
5
|
level: 4
|
|
6
6
|
---
|
|
@@ -9,18 +9,40 @@ level: 4
|
|
|
9
9
|
|
|
10
10
|
[ALL-IN-ONE ACTIVATED — SEQUENTIAL 3-STAGE PIPELINE]
|
|
11
11
|
|
|
12
|
-
## 0. Prerequisite: OMC (
|
|
13
|
-
|
|
14
|
-
This skill orchestrates OMC's `ralplan` → `ralph
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
## 0. Prerequisite: OMC 5 with a matching `omc` CLI (check first)
|
|
13
|
+
|
|
14
|
+
This skill orchestrates OMC's `ralplan` → `ralph`, then a QA gate built on OMC's
|
|
15
|
+
`verify` workflow. **Check the dependency before Stage 1**; if it is missing or
|
|
16
|
+
stale, **guide installation first** rather than failing mid-pipeline. The `omc`
|
|
17
|
+
check below is for Claude Code; on Codex check OMX instead (`omx --version`), whose
|
|
18
|
+
`ralph` does not use the `omc` CLI.
|
|
19
|
+
|
|
20
|
+
- **The `omc` CLI must have `ralph verify` (Claude Code).** OMC 5's `ralph` runs
|
|
21
|
+
`omc ralph verify` on its first iteration and stops when the command is
|
|
22
|
+
missing, and a global `omc` CLI older than the plugin (4.x) does not have it.
|
|
23
|
+
Judge by the output, not the exit code: given `--help`, a 4.x CLI prints its
|
|
24
|
+
general help and still exits 0. Keep the `--help`: without it, an unknown
|
|
25
|
+
command makes the CLI launch Claude Code.
|
|
26
|
+
```bash
|
|
27
|
+
omc ralph verify --help 2>&1 | grep -q 'Usage: omc ralph verify' && echo "omc ok" || echo "omc CLI missing or too old"
|
|
28
|
+
```
|
|
29
|
+
```powershell
|
|
30
|
+
if ((omc ralph verify --help 2>&1 | Out-String) -match 'Usage: omc ralph verify') { 'omc ok' } else { 'omc CLI missing or too old' }
|
|
31
|
+
```
|
|
32
|
+
- **If the check fails:** stop before Stage 1 and guide the fix (`/banker:setup`
|
|
33
|
+
→ oh-my-claudecode, the `setup-omc` skill, or
|
|
34
|
+
`npm install -g oh-my-claude-sisyphus@latest`), then resume. Do not start a
|
|
35
|
+
pipeline whose Stage 2 will stop.
|
|
36
|
+
- **`ultraqa` does not exist in OMC 5** (removed in 5.0.0, no alias), so a call
|
|
37
|
+
to `oh-my-claudecode:ultraqa` fails. Stage 3 below runs in its place.
|
|
38
|
+
- On Codex the equivalent framework is OMX (`omx setup`).
|
|
39
|
+
|
|
40
|
+
**런타임 매핑 (Claude Code ↔ Codex).** Stage 1·2 의 `ralplan`·`ralph` 는 Claude Code에선 OMC 스킬이고 **Codex에선 oh-my-codex(OMX)가 제공하는 동명 스킬**이다. Stage 3 은 런타임마다 다르다: Claude Code(OMC 5)는 `ultraqa` 가 없어 아래 verify 순환을 직접 돌리고, **Codex는 OMX 가 아직 제공하는 `ultraqa`** 를 쓴다. 아래 `Skill("oh-my-claudecode:<name>")`·`Task(subagent_type="oh-my-claudecode:<name>")` 표기는 Claude Code 기준이다.
|
|
19
41
|
|
|
20
42
|
## Purpose
|
|
21
43
|
|
|
22
44
|
Run one substantial coding task through three independent quality gates in a
|
|
23
|
-
fixed order
|
|
45
|
+
fixed order:
|
|
24
46
|
|
|
25
47
|
```
|
|
26
48
|
Stage 1 /ralplan --deliberate consensus plan (Planner → Architect → Critic)
|
|
@@ -29,15 +51,18 @@ Stage 1 /ralplan --deliberate consensus plan (Planner → Architect → Cri
|
|
|
29
51
|
Stage 2 /ralph --critic=critic PRD-driven persistent build, critic-verified
|
|
30
52
|
│ → implementation + deslop + regression, then ralph self-cancels
|
|
31
53
|
▼
|
|
32
|
-
Stage 3
|
|
33
|
-
→ PASS, or honest STOPPED-with-diagnosis
|
|
54
|
+
Stage 3 QA gate (--qa=tests) fresh verifier → diagnose → fix, bounded cycle
|
|
55
|
+
→ PASS, or honest STOPPED-with-diagnosis (Codex: OMX /ultraqa)
|
|
34
56
|
```
|
|
35
57
|
|
|
36
58
|
This skill is a **thin sequential orchestrator**. It does not implement, plan,
|
|
37
|
-
or test directly, and it does **not** create its own
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
59
|
+
or test directly, and it does **not** create its own state file. Stages 1 and 2
|
|
60
|
+
hand every loop, retry, and verification to the sub-skill they invoke. The one
|
|
61
|
+
loop all-in-one owns is Stage 3's bounded verify → fix cycle: OMC 5 removed
|
|
62
|
+
`ultraqa`, which used to own it, and its replacement `verify` gathers evidence
|
|
63
|
+
but does not fix. Beyond that, its only job is to run the stages in order,
|
|
64
|
+
bridge their handoffs, gate each stage on the previous one's success, and
|
|
65
|
+
report honestly.
|
|
41
66
|
|
|
42
67
|
## Why three stages (and not just ralph)
|
|
43
68
|
|
|
@@ -50,23 +75,24 @@ modes, and each stage's reviewer is independent of the previous stage's author
|
|
|
50
75
|
2. **A partial or unverified build declared "done"** → Stage 2's PRD
|
|
51
76
|
story-by-story persistence + critic verification catch this.
|
|
52
77
|
3. **Integration / regression breakage slipping past the builder's own checks**
|
|
53
|
-
→ Stage 3's fresh, test-focused, fix-cycling
|
|
78
|
+
→ Stage 3's fresh, test-focused, fix-cycling gate catches this.
|
|
54
79
|
|
|
55
80
|
**On the apparent redundancy of Stage 3:** ralph (Stage 2) already runs its own
|
|
56
|
-
Step-7
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
in a cycle. If ralph's
|
|
60
|
-
|
|
61
|
-
when
|
|
62
|
-
|
|
81
|
+
Step-7 reviewer verification and Step-7.6 regression re-run (`omc ralph verify`
|
|
82
|
+
against the baseline it recorded). Stage 3 is still worth running because it is
|
|
83
|
+
*independent* (a fresh verifier agent, not the context that built the change),
|
|
84
|
+
*test-suite-focused*, and *actively fixes* in a bounded cycle. If ralph's
|
|
85
|
+
regression already ran the suite green, the gate usually passes in cycle 1
|
|
86
|
+
(cheap); its value rises when the suite is broad, when changes touched many
|
|
87
|
+
files, or when integration/flaky issues hide behind unit-level checks. Keeping
|
|
88
|
+
it explicit gives a clean, separate PASS signal.
|
|
63
89
|
|
|
64
90
|
## When to use
|
|
65
91
|
|
|
66
92
|
- A substantial, mostly-specified coding task you want carried from plan →
|
|
67
93
|
verified implementation → green test gate in one step, with the most
|
|
68
94
|
front-loaded rigor OMC offers.
|
|
69
|
-
- You have been running `ralplan → ralph
|
|
95
|
+
- You have been running `ralplan → ralph →` a QA pass by hand and want it as one
|
|
70
96
|
command.
|
|
71
97
|
- The task is moderately under-specified — that's fine: Stage 1's consensus
|
|
72
98
|
planning absorbs scoping, so all-in-one tolerates vaguer input than raw ralph.
|
|
@@ -75,8 +101,9 @@ unit-level checks. Keeping it explicit gives a clean, separate PASS signal.
|
|
|
75
101
|
|
|
76
102
|
- **One-line fix or tiny change** → use `/ralph` or delegate to an executor;
|
|
77
103
|
three heavy multi-agent loops is overkill.
|
|
78
|
-
- **Pure exploration / brainstorming** → use `/oh-my-claudecode:
|
|
79
|
-
|
|
104
|
+
- **Pure exploration / brainstorming** → use `/oh-my-claudecode:ralplan` on its
|
|
105
|
+
own (it stops at a `pending approval` plan) or the brainstorming skill;
|
|
106
|
+
nothing should be implemented yet.
|
|
80
107
|
- **A 2-3 line product idea needing requirements expansion** → use
|
|
81
108
|
`/autopilot` (it expands the idea first) or `/deep-interview`.
|
|
82
109
|
- **Frontend spec / reference-parity work** → use the specialized `/front-qa`.
|
|
@@ -88,7 +115,7 @@ unit-level checks. Keeping it explicit gives a clean, separate PASS signal.
|
|
|
88
115
|
| `--short` | Stage 1 runs ralplan **without** `--deliberate` (skips pre-mortem + expanded test plan) for lower-risk work | off → deliberate |
|
|
89
116
|
| `--checkpoint` | Insert an `AskUserQuestion` approval gate between Stage 1 (plan) and Stage 2 (implement) | off → auto-proceed |
|
|
90
117
|
| `--critic=critic\|architect\|codex` | Reviewer passed to ralph's verification | `critic` |
|
|
91
|
-
| `--qa=tests\|build\|lint\|typecheck` |
|
|
118
|
+
| `--qa=tests\|build\|lint\|typecheck` | What the Stage 3 gate checks (Codex: the goal passed to ultraqa) | `tests` |
|
|
92
119
|
| `--no-deslop` | Passed through to ralph (skip the post-review deslop pass) | off |
|
|
93
120
|
|
|
94
121
|
Everything before the flags / after them that isn't a recognized flag is the
|
|
@@ -118,6 +145,21 @@ then **stops**.
|
|
|
118
145
|
`APPROVE`): do not auto-proceed. Surface the best plan and ask the user how to
|
|
119
146
|
proceed. Never build on an unapproved plan.
|
|
120
147
|
|
|
148
|
+
### Before Stage 2 — record what already fails
|
|
149
|
+
|
|
150
|
+
Run the command(s) of the `--qa` goal once on the unchanged tree and keep the
|
|
151
|
+
failing items (test names, error lines) in this conversation. This
|
|
152
|
+
**pre-change record** is the gate's baseline: it covers checks that are not
|
|
153
|
+
among ralph's feedback commands, and on Codex it is the only baseline there is
|
|
154
|
+
(OMX `ralph` keeps none). Never use `git stash` or `git reset` to get a
|
|
155
|
+
pre-change state for it; if the tree already has changes, take the record from
|
|
156
|
+
a clean copy of HEAD (`git worktree add --detach <tmp> HEAD`, run there, then
|
|
157
|
+
`git worktree remove <tmp>`). A fresh worktree has no installed dependencies
|
|
158
|
+
(`node_modules`, a venv): link or install them there first, and confirm the
|
|
159
|
+
commands really ran — a record made only of "command not found" errors is no
|
|
160
|
+
baseline. The record lives only in this conversation; if the session may
|
|
161
|
+
compact or end before Stage 3, put it in the `ready-compact` note.
|
|
162
|
+
|
|
121
163
|
### Stage 2 — Implement: `/ralph`
|
|
122
164
|
|
|
123
165
|
Precondition: a consensus plan exists and is approved (auto via the invocation,
|
|
@@ -131,33 +173,93 @@ its job is to turn the plan's stages into PRD stories and implement + verify
|
|
|
131
173
|
them, not to re-plan. (This mirrors how autopilot consumes a ralplan plan and
|
|
132
174
|
skips its own planning phase.)
|
|
133
175
|
|
|
134
|
-
ralph runs its full loop on its own:
|
|
135
|
-
|
|
136
|
-
Step-7.
|
|
176
|
+
ralph runs its full loop on its own: feedback baseline (`omc ralph verify
|
|
177
|
+
--write-baseline`) → PRD refinement → implement per story → verify acceptance
|
|
178
|
+
criteria → Step-7 reviewer verification → Step-7.5 deslop → Step-7.6 regression
|
|
179
|
+
→ Step-8 closeout and `/oh-my-claudecode:cancel`.
|
|
137
180
|
|
|
138
|
-
> ralph's Step-8 cancel clears **ralph
|
|
181
|
+
> ralph's Step-8 cancel clears **ralph's own** session state — it ends the
|
|
139
182
|
> IMPLEMENTATION stage, not all-in-one. all-in-one is not a registered OMC mode,
|
|
140
183
|
> so the cancel does not affect it. Let ralph fully finish (reviewer APPROVE +
|
|
141
|
-
> deslop + regression + cancel) **before** Stage 3
|
|
142
|
-
>
|
|
143
|
-
|
|
184
|
+
> deslop + regression + cancel) **before** Stage 3, so the gate checks the final
|
|
185
|
+
> tree and no ralph continuation is still steering the session.
|
|
186
|
+
|
|
187
|
+
- **Settle ralph's questions up front.** ralph 5.6.1 asks the user once for the
|
|
188
|
+
PRD's `repoQualityClass` (`prototype`, `production` or `library`) when the task
|
|
189
|
+
does not say. Infer it from repo signals (CI config, test depth, published
|
|
190
|
+
package metadata) and put it in the handoff; let ralph ask only when the
|
|
191
|
+
signals conflict.
|
|
192
|
+
- **Give ralph feedback commands that print only failures.** OMC 5.6.1's
|
|
193
|
+
`omc ralph verify` fingerprints *every* output line of each feedback command,
|
|
194
|
+
and normalizes only durations written as `<number><unit>`, timestamps, `/tmp`
|
|
195
|
+
paths and hex ids. A line that changes between runs or when a story adds
|
|
196
|
+
tests therefore reads as a NEW failure: node:test's default reporter prints
|
|
197
|
+
`ℹ duration_ms 151.4` and `ℹ tests 8`, so its gate fails on every run with no
|
|
198
|
+
change at all. In the handoff, tell ralph to set the PRD's `feedbackCommands`
|
|
199
|
+
**before it records the baseline** to forms whose output is constant on
|
|
200
|
+
success and names each failure — for node:test,
|
|
201
|
+
`FORCE_COLOR=0 NODE_NO_WARNINGS=1 node --test --test-reporter=dot 2>&1 | grep -Ev '^[.X]+$'`
|
|
202
|
+
(the two variables keep color codes from slipping past the filter and
|
|
203
|
+
warnings with a process id out of the output; adapt the form on Windows);
|
|
204
|
+
keep build/lint commands that are silent on success. If the gate still flags
|
|
205
|
+
only such lines, fix the commands and re-record ralph's baseline on the
|
|
206
|
+
current tree (`omc ralph verify --write-baseline`) — the pre-change record
|
|
207
|
+
still tells old failures from new ones. Never edit the baseline file by
|
|
208
|
+
hand; never stash or reset.
|
|
209
|
+
- **Carry the baseline forward.** ralph's own baseline (first iteration) also
|
|
210
|
+
lists failures that existed before the change; ralph treats them as noise
|
|
211
|
+
and reports them at Step 8. Note its session id (the `<id>` in its PRD path
|
|
212
|
+
`.omc/state/sessions/<id>/`) for Stage 3.
|
|
144
213
|
- **If ralph reports a fundamental blocker** (same issue across 3+ iterations,
|
|
145
|
-
missing credentials, unclear requirement, external dependency down
|
|
146
|
-
report. Do **not** run
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
214
|
+
missing credentials, unclear requirement, external dependency down, or the
|
|
215
|
+
`omc ralph verify` command unavailable): stop and report. Do **not** run
|
|
216
|
+
Stage 3 on a broken or partial build and call it done.
|
|
217
|
+
|
|
218
|
+
### Stage 3 — QA gate
|
|
219
|
+
|
|
220
|
+
Precondition: Stage 2's ralph has completed and self-cancelled.
|
|
221
|
+
|
|
222
|
+
**Claude Code (OMC 5):** run the bounded cycle that `ultraqa` used to own —
|
|
223
|
+
the same shape as OMC 5's autopilot QA phase. No state file: the cycle count
|
|
224
|
+
lives in this conversation.
|
|
225
|
+
|
|
226
|
+
1. **Verify, independently.** `Task(subagent_type="oh-my-claudecode:verifier", ...)`
|
|
227
|
+
— a fresh context that did not build the change. Brief it to follow the
|
|
228
|
+
`oh-my-claudecode:verify` workflow for the `--qa` goal (`tests` by default;
|
|
229
|
+
`build`, `lint` or `typecheck` select that check), run the project's real
|
|
230
|
+
commands, and return **PASS** or **FAIL** with the commands, their output and
|
|
231
|
+
each failing item.
|
|
232
|
+
Whether a failure predates the change is not judged by eye. A failure is
|
|
233
|
+
**pre-existing only** when the pre-change record lists it, or — Claude
|
|
234
|
+
Code — when `omc ralph verify --session <ralph's session id> --json` leaves
|
|
235
|
+
it out of `newFailures` (cancel leaves the baseline in place; check that the
|
|
236
|
+
JSON reports `baselinePresent: true` — without a baseline it reports every
|
|
237
|
+
current failure as new). **Everything else is new**, and so is a
|
|
238
|
+
pre-existing failure that points at a file the change touched (as in ralph).
|
|
239
|
+
If ralph was run again in this session (a resumed run), its first iteration
|
|
240
|
+
rewrote that baseline on the half-changed tree; then judge by the
|
|
241
|
+
pre-change record alone.
|
|
242
|
+
2. **PASS** → the gate is met; go to the final report.
|
|
243
|
+
3. **FAIL** → `Task(subagent_type="oh-my-claudecode:architect", ...)` diagnoses
|
|
244
|
+
the root cause (read-only), then `Task(subagent_type="oh-my-claudecode:executor", ...)`
|
|
245
|
+
makes the smallest fix inside the change's scope. The next cycle verifies
|
|
246
|
+
again with a **fresh** verifier, never the one that saw the failure.
|
|
247
|
+
|
|
248
|
+
Limits: at most 5 verifications. When the 5th still fails, stop without
|
|
249
|
+
another fix (a fix nobody verified is not a result). Stop early when the same
|
|
250
|
+
failure (same test, same error signature) comes back 3 times — that is a
|
|
251
|
+
fundamental problem for the user, not for another cycle. Never fix a baseline
|
|
252
|
+
failure inside this gate; report it.
|
|
253
|
+
|
|
254
|
+
**Codex (OMX):** run OMX `$ultraqa` with the goal (OMX still ships it). OMX
|
|
255
|
+
keeps no feedback baseline, so hand it the pre-change record, tell it not to
|
|
256
|
+
fix those failures, and report them apart; treat its outcome the same way.
|
|
156
257
|
|
|
157
258
|
Report the real outcome:
|
|
158
259
|
- **Goal met** → "ALL-IN-ONE COMPLETE" with the cycle count.
|
|
159
|
-
- **
|
|
160
|
-
**not** claim success if the gate did not reach
|
|
260
|
+
- **5 failed verifications / same failure 3×** → "STOPPED" with the verifier's
|
|
261
|
+
evidence and the architect's diagnosis. Do **not** claim success if the gate did not reach
|
|
262
|
+
goal-met.
|
|
161
263
|
|
|
162
264
|
## Orchestrator rules
|
|
163
265
|
|
|
@@ -165,8 +267,8 @@ Report the real outcome:
|
|
|
165
267
|
next begins. No skipping, no reordering, no running two stages' loops at once.
|
|
166
268
|
- Emit one clear progress line at each stage boundary so the user always knows
|
|
167
269
|
where the pipeline is (`[all-in-one] Stage 1/3 — planning…`, etc.).
|
|
168
|
-
- Do not add
|
|
169
|
-
|
|
270
|
+
- Do not add an all-in-one state file or a second persistence loop. Stages 1–2
|
|
271
|
+
own their loops and state; Stage 3's bounded cycle is the only loop here.
|
|
170
272
|
- Treat a sub-skill's internal "stop"/"cancel" as the end of *that stage*, never
|
|
171
273
|
as the end of the pipeline (see the Stage 1 and Stage 2 notes above).
|
|
172
274
|
|
|
@@ -178,7 +280,8 @@ When the pipeline ends (complete or stopped), give a concise honest summary:
|
|
|
178
280
|
(1 line).
|
|
179
281
|
- **Implementation**: stories/stages completed, files changed, the ralph critic
|
|
180
282
|
verdict.
|
|
181
|
-
- **QA**:
|
|
283
|
+
- **QA**: the gate's goal, PASS after N cycles or STOPPED-with-diagnosis, and
|
|
284
|
+
the baseline failures that predate the change, listed apart.
|
|
182
285
|
- **Unmet / scope-limited / deferred**: state plainly — never paper over a gate
|
|
183
286
|
that did not pass.
|
|
184
287
|
|
|
@@ -205,21 +308,23 @@ first to expand it into a spec.
|
|
|
205
308
|
|
|
206
309
|
## Stop conditions
|
|
207
310
|
|
|
311
|
+
- The `omc` CLI check in §0 fails → guide the install/update; do not start.
|
|
208
312
|
- Stage 1 cannot reach consensus → surface best plan, ask the user (don't build).
|
|
209
313
|
- Stage 2 ralph hits a fundamental blocker → stop and report (don't run QA).
|
|
210
|
-
- Stage 3
|
|
211
|
-
honestly (don't claim success).
|
|
314
|
+
- Stage 3 fails its 5th verification / sees the same failure 3× → report the
|
|
315
|
+
diagnosis honestly (don't claim success).
|
|
212
316
|
- User says "stop" / "cancel" / "abort" at any point → run
|
|
213
317
|
`/oh-my-claudecode:cancel` and stop.
|
|
214
318
|
|
|
215
319
|
## Final checklist
|
|
216
320
|
|
|
321
|
+
- [ ] §0: on Claude Code the `omc` CLI answered `omc ralph verify --help` with its usage (Codex: `omx --version`)
|
|
217
322
|
- [ ] Stage 1 produced a consensus plan in `.omc/plans/` (or stopped honestly on
|
|
218
323
|
no-consensus / checkpoint rejection)
|
|
219
324
|
- [ ] Stage 2 received the plan path, completed all PRD stories, passed critic
|
|
220
325
|
verification, and self-cancelled before Stage 3
|
|
221
|
-
- [ ] Stages did not overlap (ralph fully ended before
|
|
222
|
-
- [ ] Stage 3
|
|
223
|
-
|
|
326
|
+
- [ ] Stages did not overlap (ralph fully ended before the gate began)
|
|
327
|
+
- [ ] Stage 3: a fresh verifier reported the chosen goal met (or STOPPED with
|
|
328
|
+
diagnosis); baseline failures reported apart, not fixed
|
|
224
329
|
- [ ] Final report states plan/implementation/QA outcomes and any unmet items
|
|
225
330
|
plainly
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: compact-copy
|
|
3
|
-
description: "(banker)
|
|
3
|
+
description: "(banker) 코드펜스로 감싼 resume 프롬프트(이전 형식 ready-compact 출력 등)에서 본문만 뽑아 최종 메시지를 '프롬프트-only'로 출력(response.md 기록 → /copy로 클립보드에 담김). 지금의 ready-compact 는 처음부터 프롬프트만 출력하므로 보통은 필요 없음. 'compact-copy'/'프롬프트만 복사'/'resume 프롬프트만' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# compact-copy — resume 프롬프트만 추출 복사
|
|
7
7
|
|
|
8
|
-
`/ready-compact`
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
`/ready-compact` 는 0.14.0 부터 **프롬프트 본문만** 출력하므로(`[RESUME]`/`[HANDOFF]`), 바로 `/copy` 하면 된다.
|
|
9
|
+
이 스킬은 그 밖의 경우, 곧 「설명 + 코드펜스(resume 프롬프트) + 설명」 형태의 출력(0.13.0 이전 ready-compact,
|
|
10
|
+
다른 도구가 낸 resume 프롬프트)에서 프롬프트만 뽑을 때 쓴다. `/copy` 는 **직전 어시스턴트 메시지 전체**를
|
|
11
|
+
클립보드와 `/tmp/claude-<uid>/response.md` 에 복사하므로 설명까지 함께 담긴다. 이 스킬은 **코드펜스 안
|
|
12
|
+
프롬프트 본문만** 남겨, 파일과(이어지는 `/copy` 로) 클립보드에 프롬프트-only 가 담기게 한다.
|
|
12
13
|
|
|
13
14
|
## 언제 쓰나
|
|
14
|
-
-
|
|
15
|
+
- 설명과 코드펜스가 섞인 resume 프롬프트 출력에서 그 **프롬프트만** 복사하고 싶을 때(지금의 `/ready-compact` 출력은 이미 프롬프트만이라 해당 없음).
|
|
15
16
|
- `/copy` 로 전체를 저장한 뒤(response.md), 프롬프트만 남기고 싶을 때.
|
|
16
17
|
|
|
17
18
|
## 쓰지 않을 때
|
|
@@ -29,10 +30,10 @@ description: "(banker) /ready-compact resume 프롬프트에서 코드펜스 본
|
|
|
29
30
|
## 워크플로우
|
|
30
31
|
|
|
31
32
|
### 1) 프롬프트 본문 확보 (우선순위)
|
|
32
|
-
1. **1순위 — 직전 컨텍스트**: 방금 이 대화에서
|
|
33
|
-
|
|
33
|
+
1. **1순위 — 직전 컨텍스트**: 방금 이 대화에서 resume 프롬프트(`[RESUME]…` 또는 `[HANDOFF]…`, 코드펜스
|
|
34
|
+
유무 무관)를 만들었다면 **그 본문을 그대로** 쓴다(가장 신선·정확).
|
|
34
35
|
2. **폴백 — response.md(신선할 때만)**: 1순위가 없으면 `/tmp/claude-$(id -u)/response.md`
|
|
35
|
-
를 읽어 **첫 코드펜스 블록의 본문**을 추출한다. 블록이 여럿이면 `[RESUME]` 로 시작하는 블록
|
|
36
|
+
를 읽어 **첫 코드펜스 블록의 본문**을 추출한다. 블록이 여럿이면 `[RESUME]`·`[HANDOFF]` 로 시작하는 블록
|
|
36
37
|
우선, 없으면 가장 큰 블록. ⚠️ `/ready-compact` 와 이 스킬 사이에 `/copy` 가 없었다면
|
|
37
38
|
response.md 는 **stale**(과거 내용)일 수 있다 → 본문이 resume 프롬프트가 맞는지 확인하고,
|
|
38
39
|
아니면 사용자에게 알리고 멈춘다.
|
|
@@ -43,18 +44,18 @@ description: "(banker) /ready-compact resume 프롬프트에서 코드펜스 본
|
|
|
43
44
|
|
|
44
45
|
### 3) 클립보드 — 메시지 셰이핑 (★ 핵심 불변식)
|
|
45
46
|
- 이 스킬의 **최종 어시스턴트 메시지는 프롬프트 본문 그 자체만** 출력한다.
|
|
46
|
-
- **외곽 코드펜스로 감싸지 말 것** — ready-compact
|
|
47
|
-
|
|
47
|
+
- **외곽 코드펜스로 감싸지 말 것** — 펜스째 복사되면 붙여넣기가 오염된다(지금의 ready-compact 도
|
|
48
|
+
같은 이유로 펜스 없이 출력한다).
|
|
48
49
|
- **앞뒤 설명·보고를 같은 메시지에 넣지 말 것** — `/copy` 가 그 설명까지 통째로 복사한다.
|
|
49
50
|
파일 기록·상태 확인은 **프롬프트를 내보내기 전**(도구 호출 단계)에 끝내고, 메시지에 마지막으로
|
|
50
51
|
남는 것은 프롬프트뿐이게 한다.
|
|
51
52
|
- 이후 사용자는 **`/copy` 한 번**으로 클립보드에 프롬프트-only 를 담는다(response.md 는 이미
|
|
52
|
-
프롬프트-only). 흐름: `/
|
|
53
|
+
프롬프트-only). 흐름: 설명이 섞인 출력이면 `/compact-copy` → `/copy`. 지금의 `/ready-compact` 출력이면 `/copy` 만으로 충분하다.
|
|
53
54
|
|
|
54
55
|
## 검증 (셀프체크)
|
|
55
56
|
- response.md 가 **프롬프트 본문만** 담는가(설명·표·외곽 펜스 없음)?
|
|
56
57
|
- 최종 메시지가 프롬프트와 동일하고 **외곽 펜스/전후 설명이 없는가**?
|
|
57
|
-
- 프롬프트가 `[RESUME]` 로 시작하며
|
|
58
|
+
- 프롬프트가 `[RESUME]` 또는 `[HANDOFF]` 로 시작하며 원문과 **내용 동일**한가(추출 변형 없음)?
|
|
58
59
|
- 경로를 `id -u` 로 계산했는가(**uid 숫자 하드코딩 금지**)?
|
|
59
60
|
|
|
60
61
|
## 함정
|
package/skills/curation/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: curation
|
|
3
|
-
description: "(banker) 의사결정을 {선택지·권고안·근거·확신수준(0.00~1.00)·확신근거}로 구조화해 제시. --perf는 결과물 품질·완성도를 효율보다 우선. 'curation'/'큐레이션'/'결정 정리'/'선택지 정리' 시 사용."
|
|
3
|
+
description: "(banker) 의사결정을 {선택지·권고안·근거·확신수준(0.00~1.00)·확신근거}로 구조화해 제시. --perf는 결과물 품질·완성도를 효율보다 우선. --deep은 --perf에 더해 확신 0.80 이하 결정을 추가 조사·검토해 0.80 초과로 끌어올린 뒤 제시(끝내 못 넘으면 확신 미달로 표시하고 사용자 질문으로 전환). 'curation'/'큐레이션'/'결정 정리'/'선택지 정리' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# curation — 결정 큐레이션 (선택지·권고·확신)
|
|
@@ -9,7 +9,8 @@ description: "(banker) 의사결정을 {선택지·권고안·근거·확신수
|
|
|
9
9
|
"그냥 골라주기"가 아니라 **선택지 → 권고 → 근거 → 확신수준 → 확신 근거**를 명시해,
|
|
10
10
|
사용자가 권고를 검증·재정(裁定)할 수 있게 한다.
|
|
11
11
|
|
|
12
|
-
**런타임:** 이 스킬은 외부 도구·프레임워크 의존이 **전혀 없다**(순수 출력 규약).
|
|
12
|
+
**런타임:** 이 스킬은 외부 도구·프레임워크 의존이 **전혀 없다**(기본·`--perf` 는 순수 출력 규약).
|
|
13
|
+
`--deep` 은 그 런타임에 이미 있는 조사 수단(파일 읽기, 셸, 웹 검색, 하위 에이전트)을 쓰지만 별도 설치는 필요 없다.
|
|
13
14
|
Claude Code(OMC)·Codex CLI(OMX) 양쪽에서 **동일하게** 동작한다.
|
|
14
15
|
|
|
15
16
|
## 언제 쓰나
|
|
@@ -54,6 +55,29 @@ Claude Code(OMC)·Codex CLI(OMX) 양쪽에서 **동일하게** 동작한다.
|
|
|
54
55
|
`--perf`는 **후자(품질)로 기운다**. 권고 근거·확신근거에 이 기준이 어떻게 작용했는지 드러낸다.
|
|
55
56
|
(기본 curation은 노력·품질·시간을 **균형** 있게 저울질한다.)
|
|
56
57
|
|
|
58
|
+
## --deep (품질 우선 + 확신 하한)
|
|
59
|
+
`curation --deep` 은 `--perf` 처럼 동작하되(위 채택 기준 포함), **확신수준이 0.80 이하인 결정을 그대로 내놓지 않는다.**
|
|
60
|
+
조사와 검토를 충분히 더 해서 확신을 **0.80 초과**로 올린 뒤 제시한다.
|
|
61
|
+
|
|
62
|
+
- **경계**: 0.80 이하 = 추가 조사 대상, 통과 = 0.80 초과. 0.80 정각도 조사 대상이다
|
|
63
|
+
("0.80 이하이면 더 조사"와 "0.80 이상이 되도록"을 함께 만족하는 해석).
|
|
64
|
+
- `--deep --perf` 는 `--deep` 과 같다.
|
|
65
|
+
|
|
66
|
+
### 절차
|
|
67
|
+
1. 모든 결정을 `--perf` 기준으로 1차 큐레이션하고 확신수준을 매긴다.
|
|
68
|
+
2. 0.80 이하인 결정마다 **확신을 막는 변수**를 적는다. 무엇을 확인하면 확신이 오르거나 내리는가.
|
|
69
|
+
3. 그 변수를 직접 겨냥해 **조사**와 **검토**를 한다.
|
|
70
|
+
- 조사: 저장소의 코드·설정·이력, 공식 문서와 1차 자료, 웹 검색(런타임에 있을 때), 안전한 재현·측정(읽기 전용 명령, 임시 디렉터리 실험).
|
|
71
|
+
- 검토: 권고에 가장 강하게 맞서는 선택지를 최선의 형태로 세워 반박해 본다. 가능하면 독립 검토자(읽기 전용 하위 에이전트 등)에게 권고와 근거를 넘겨 반론을 받는다.
|
|
72
|
+
4. 새 증거로 권고안·근거·확신수준을 **다시 산정**한다. 증거가 권고를 뒤집으면 권고를 바꾼다. 확신 숫자만 올리지 않는다.
|
|
73
|
+
5. 0.80 초과가 될 때까지 3~4를 반복한다. **결정마다 최대 3회차**이고, 새 증거가 나오지 않은 회차가 생기면 그 결정의 조사를 멈춘다.
|
|
74
|
+
6. 그래도 0.80 이하로 남은 결정은 **확신을 부풀리지 않는다.** "확신 미달"로 표시하고, 남은 변수를 사용자가 답할 수 있는 질문(가능하면 선택형)으로 바꿔 함께 제시한다. 답을 받으면 그 결정만 다시 산정한다.
|
|
75
|
+
|
|
76
|
+
### 출력 추가
|
|
77
|
+
- 결정마다 **조사 이력**을 붙인다: 회차별로 확인한 것(출처·명령·파일), 그 결과, 확신 변화(예: `0.65 → 0.84`).
|
|
78
|
+
- 처음부터 0.80 을 넘은 결정은 "추가 조사 불필요"로 한 줄만 남긴다.
|
|
79
|
+
- 표 형식이면 `조사 이력` 열을 추가하고, 길면 표 아래에 결정 번호별로 적는다.
|
|
80
|
+
|
|
57
81
|
## 적용 범위
|
|
58
82
|
- 호출 시점의 **현재 작업/요청에 걸린 결정들**에 이 형식을 적용한다.
|
|
59
83
|
- 이후에도 같은 작업 맥락에서 결정이 나오면 형식을 유지한다(사용자가 바꾸라기 전까지).
|
|
@@ -71,10 +95,19 @@ Claude Code(OMC)·Codex CLI(OMX) 양쪽에서 **동일하게** 동작한다.
|
|
|
71
95
|
- **확신수준**: 0.75
|
|
72
96
|
- **확신수준 근거**: 질의·집계 요구가 확실하면 SQLite 우위가 뚜렷(↑). 단 로그량·배포 환경(임베디드 등)이 미확인이면 파일이 나을 여지(↓). `--perf`라 "싸고 대충"인 파일보다 완성도 높은 SQLite로 기울였다.
|
|
73
97
|
|
|
98
|
+
**같은 질문을 `curation --deep` 으로 부르면**, 0.75 는 0.80 이하이므로 멈추지 않고 조사를 더 한다:
|
|
99
|
+
- **확신을 막는 변수**: 로그량, 배포 환경, 질의 요구.
|
|
100
|
+
- **조사 이력**:
|
|
101
|
+
- 1회차: 배포 설정과 기존 로그 코드 확인 → 서버 배포(임베디드 아님), 하루 약 2만 건, 대시보드가 기간별 집계를 요구 → `0.75 → 0.83`.
|
|
102
|
+
- 검토: 가장 강한 반대안(파일 + 회전, 집계는 배치)을 세워 봤으나 동시쓰기 내구성과 질의 요구를 못 넘음 → 권고 유지.
|
|
103
|
+
- **확신수준**: 0.83 (0.80 초과라 제시)
|
|
104
|
+
|
|
74
105
|
## 함정
|
|
75
106
|
- **선택지 억지 금지** — 결정이 없는데 형식을 씌우지 말 것.
|
|
76
107
|
- **권고는 선택지 안에서** — 제3의 절충안을 슬쩍 끼우면 감사 가능성이 깨진다(정 필요하면 그것도 선택지로 명시).
|
|
77
108
|
- **확신수준은 정직하게** — 높게 부풀리지 말 것. 미해결 변수가 있으면 낮추고 그 이유를 확신근거에 적는다.
|
|
78
109
|
- **--perf ≠ 무조건 비싼 옵션** — 품질이 동등하면 효율적 옵션을 택한다. --perf는 품질이 갈릴 때의 **타이브레이커**다.
|
|
110
|
+
- **--deep 은 확신을 사는 게 아니라 증거를 사는 것** — 근거 없이 숫자만 올리거나, 결정을 쪼개거나 조건부 권고로 바꿔 0.80 을 맞추지 않는다(필요하면 그것도 선택지로 명시).
|
|
111
|
+
- **조사 명목의 위험 행위 금지** — 배포·삭제·외부 전송·되돌리기 어려운 실험은 하지 않는다. 필요하면 확신 미달 질문으로 돌린다.
|
|
79
112
|
|
|
80
|
-
ARGUMENTS: [--perf] [결정 맥락/질문] (없으면 현재 작업의 결정 분기에
|
|
113
|
+
ARGUMENTS: [--perf] [--deep] [결정 맥락/질문] (없으면 현재 작업의 결정 분기에 적용. --deep 은 --perf 를 포함)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: graceful_pause
|
|
3
|
+
description: "(banker) 진행 중인 작업을 지금 단계까지만 마무리하고 멈춘 뒤, 상태를 보고하고 사용자 중간 지시를 받을 준비를 함. cancel 과 달리 모드 상태와 계획을 지우지 않음. 작업 중 대기 입력으로 넣어 두면 읽히는 시점에 동작. 'graceful_pause'/'잠깐 멈춰'/'지금 단계만 끝내고 멈춰'/'중간 지시' 시 사용."
|
|
4
|
+
argument-hint: "[멈춘 뒤 다룰 지시나 메모]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# graceful_pause: 지금 단계만 끝내고 멈춤
|
|
8
|
+
|
|
9
|
+
인자: `$ARGUMENTS`
|
|
10
|
+
- 선택. 멈춘 뒤 다룰 지시나 메모
|
|
11
|
+
- Codex: 사용자 메시지에서 읽음
|
|
12
|
+
|
|
13
|
+
## 동작 시점
|
|
14
|
+
|
|
15
|
+
- 작업 도중 사용자가 대기 입력으로 넣어 두면, 큐에서 넘어와 이 스킬을 읽는 시점에 동작
|
|
16
|
+
- 즉시 끊는 장치 없음. 읽기 전에 끝난 동작은 되돌리지 않음
|
|
17
|
+
- 바로 끊어야 하면 Esc. 이 스킬의 몫이 아님
|
|
18
|
+
- 함께 들어온 다른 대기 입력: 이 스킬 먼저 처리. 나머지는 정지 보고의 "받은 지시"에 넣음
|
|
19
|
+
- 이미 작업이 끝난 뒤에 읽혔으면 1단계와 2단계는 건너뛰고 정지 보고부터 시작
|
|
20
|
+
|
|
21
|
+
## cancel 과 차이
|
|
22
|
+
|
|
23
|
+
| 항목 | graceful_pause | cancel |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| 진행 중인 단계 | 끝까지 마무리 | 그 자리에서 중단 |
|
|
26
|
+
| 켜져 있는 모드 | 그대로 둠 | 실행을 끝냄 |
|
|
27
|
+
| 모드가 남기는 기록 | 손대지 않음 | 모드마다 다름. ralph 상태는 지우고, autopilot 진행 상황과 ultragoal 원장은 남김 |
|
|
28
|
+
| 이후 | 지시를 받아 같은 흐름 재개 | 모드를 다시 시작해 남은 기록부터 이어 감 |
|
|
29
|
+
|
|
30
|
+
## 절차
|
|
31
|
+
|
|
32
|
+
1. 지금 단계 확인
|
|
33
|
+
- 지금 단계: 이미 시작한 도구 동작 하나와, 그 동작이 남긴 불일치를 닫는 최소 작업
|
|
34
|
+
- 예: 함수 이름을 바꾸던 중이면 그 이름을 쓰는 곳까지 바꿈
|
|
35
|
+
- 포함하지 않음: 스토리나 할 일 목록의 다음 항목
|
|
36
|
+
2. 지금 단계 마무리
|
|
37
|
+
|
|
38
|
+
| 진행 중인 동작 | 처리 |
|
|
39
|
+
|---|---|
|
|
40
|
+
| 파일 수정 | 그 파일을 일관된 상태까지 수정. 반쯤 고친 파일을 남기지 않음 |
|
|
41
|
+
| 실행 중인 명령이나 테스트 | 결과 받기 |
|
|
42
|
+
| 백그라운드 작업 | 멈추지 않음. 이름과 출력 위치만 기록 |
|
|
43
|
+
| 이미 띄운 하위 에이전트 | 결과를 기다리거나 백그라운드로 둠. 새로 띄우지 않음 |
|
|
44
|
+
|
|
45
|
+
3. 하지 않는 것
|
|
46
|
+
- 다음 단계 시작 (예: 다음 파일, 다음 스토리)
|
|
47
|
+
- 되돌리기 어려운 동작
|
|
48
|
+
- 커밋과 push
|
|
49
|
+
- 배포와 게시
|
|
50
|
+
- 삭제와 외부 전송
|
|
51
|
+
- 모드 상태와 계획 파일 삭제. `cancel` 실행
|
|
52
|
+
4. 정지 보고. 대화에만 짧게
|
|
53
|
+
|
|
54
|
+
| 항목 | 내용 |
|
|
55
|
+
|---|---|
|
|
56
|
+
| 끝낸 단계 | 방금 마무리한 것 |
|
|
57
|
+
| 현재 상태 | 검증 결과와 커밋하지 않은 변경 |
|
|
58
|
+
| 진행 중인 것 | 실행 중인 백그라운드 작업과 켜져 있는 모드 |
|
|
59
|
+
| 다음 예정 단계 | 1개에서 3개 |
|
|
60
|
+
| 열린 결정 | 사용자 판단이 필요한 것 |
|
|
61
|
+
| 받은 지시 | 인자 메모와 함께 들어온 대기 입력. 그 지시가 계획에 주는 영향 |
|
|
62
|
+
|
|
63
|
+
5. 지시 대기
|
|
64
|
+
|
|
65
|
+
| 런타임 | 방법 |
|
|
66
|
+
|---|---|
|
|
67
|
+
| Claude Code | `AskUserQuestion` 으로 질문. 선택지는 계획대로 계속, 지시 반영 후 계속(자유 입력), 상태를 둔 채 중단. 질문이 열려 있는 동안은 응답이 끝나지 않으므로 ralph 같은 지속 모드도 끼어들지 않음 |
|
|
68
|
+
| Codex | 구조화 질문 도구(`request_user_input` 등)가 있으면 사용. tmux 안이면 `omx question` 도 가능. 둘 다 없을 때는 아래 표 |
|
|
69
|
+
|
|
70
|
+
- Codex 에서 질문 도구가 없을 때
|
|
71
|
+
|
|
72
|
+
| 지속 모드 (ralph, ultraqa, team 등) | 처리 |
|
|
73
|
+
|---|---|
|
|
74
|
+
| 꺼짐 | 짧은 질문 하나로 응답 종료 |
|
|
75
|
+
| 켜짐 | 응답을 끝내도 그 모드의 Stop 훅이 작업을 다시 이어 가게 하므로 멈출 수 없음. 이 사실을 정지 보고에 적고, 계속할지 `cancel` 할지 묻기 |
|
|
76
|
+
|
|
77
|
+
6. 재개
|
|
78
|
+
|
|
79
|
+
| 사용자 답 | 처리 |
|
|
80
|
+
|---|---|
|
|
81
|
+
| 계속 | 다음 예정 단계부터 진행 |
|
|
82
|
+
| 새 지시 | 영향받는 단계를 다시 계획. 범위가 바뀌면 바뀐 계획을 먼저 보여 주고 승인 뒤 진행 |
|
|
83
|
+
| 중단 | 상태를 둔 채 멈춤. 세션을 끝낼 예정이면 `ready-compact --hand-off` 로 새 세션용 노트와 프롬프트 준비를 안내 |
|
|
84
|
+
| 취소 | 사용자가 명시할 때만 `cancel` 실행 |
|
|
85
|
+
|
|
86
|
+
- 중단 중인 지속 모드
|
|
87
|
+
- Claude Code: 응답이 끝날 때마다 OMC Stop 훅이 한 번씩 계속하라는 메시지를 넣음. 사용자가 재개를 말할 때까지 작업을 진행하지 않고 정지 중이라는 한 줄만 답함
|
|
88
|
+
- 예외: 직전 출력이 `ready-compact` 의 resume 프롬프트였다면 그 한 줄 대신 같은 프롬프트를 그대로 다시 출력. 마지막 메시지가 프롬프트여야 `/copy` 가 맞는 것을 복사함
|
|
89
|
+
- 이 메시지까지 멈추려면 `cancel` 이 필요함을 알림. 그 모드가 남기는 기록은 위 표의 cancel 열
|
|
90
|
+
|
|
91
|
+
## 함정
|
|
92
|
+
|
|
93
|
+
- 정지 보고를 핑계로 다음 단계를 미리 하지 않음
|
|
94
|
+
- 정지 중 받은 계속 신호(훅 메시지)는 사용자 승인이 아님. 사용자가 재개를 말할 때까지 모든 응답에 해당
|
|
95
|
+
- 정지 중 도착한 백그라운드 작업 결과: 보고에 추가만 함. 후속 작업은 시작하지 않음
|