@kaydash9999/banker-plugins 0.13.0 → 0.15.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 +82 -0
- package/README.md +50 -17
- package/codex/manifest.json +11 -8
- package/codex/transform-matrix.md +16 -4
- package/commands/front-qa.md +8 -5
- package/commands/setup.md +13 -4
- package/hooks/graceful-pause.mjs +222 -0
- package/hooks/hooks.json +2 -1
- package/hooks/register.mjs +12 -0
- package/package.json +4 -1
- package/skills/3d-intro-build/SKILL.md +1 -1
- package/skills/3d-intro-setup/SKILL.md +1 -1
- package/skills/all-in-one/SKILL.md +160 -55
- package/skills/append_wiki/SKILL.md +1 -1
- package/skills/arch-diagram/SKILL.md +1 -1
- package/skills/audit-mock/SKILL.md +1 -1
- package/skills/audit-security/SKILL.md +1 -1
- package/skills/audit-web-page/SKILL.md +1 -1
- package/skills/cleansing-memory/SKILL.md +1 -1
- package/skills/compact-copy/SKILL.md +14 -13
- package/skills/compact-wiki/SKILL.md +1 -1
- package/skills/curation/SKILL.md +36 -3
- package/skills/deep-init/SKILL.md +1 -1
- package/skills/deep-research/SKILL.md +1 -1
- package/skills/docs-setup/SKILL.md +1 -1
- package/skills/humanizer/SKILL.md +1 -1
- package/skills/interval-report/SKILL.md +1 -1
- package/skills/lineage/SKILL.md +146 -16
- package/skills/lineage/lineage.py +1091 -107
- package/skills/make-notion-guide/SKILL.md +1 -1
- package/skills/motion-graphic-make/SKILL.md +1 -1
- package/skills/motion-graphic-setup/SKILL.md +1 -1
- package/skills/nothing-design/SKILL.md +1 -1
- package/skills/obsidizer/SKILL.md +1 -1
- package/skills/omc-reference/SKILL.md +68 -33
- 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/pdf-vision-extract/SKILL.md +1 -1
- package/skills/play-qa/SKILL.md +1 -1
- package/skills/ralph-qa/SKILL.md +263 -112
- package/skills/ralph-qa/references/gemini-read-only.toml +9 -0
- package/skills/ralph-qa/references/gemini-seat.mjs +175 -0
- package/skills/ralph-qa/references/payload-scan.mjs +130 -0
- package/skills/ralph-qa/references/verifier-probe.mjs +872 -780
- package/skills/ready-compact/SKILL.md +114 -67
- package/skills/refresh-git-ignore/SKILL.md +1 -1
- package/skills/refresh-readme/SKILL.md +3 -3
- package/skills/rfp-author/SKILL.md +3 -3
- package/skills/setup-bypass-permissions/SKILL.md +123 -0
- package/skills/setup-bypass-permissions/agents/openai.yaml +4 -0
- package/skills/setup-bypass-permissions/scripts/bypass-permissions.mjs +381 -0
- package/skills/setup-bypass-permissions/scripts/fallback/bypass-permissions.ps1 +247 -0
- package/skills/setup-bypass-permissions/scripts/fallback/bypass-permissions.py +241 -0
- package/skills/{harness-factory → setup-harness-factory}/SKILL.md +3 -3
- package/skills/setup-insane-search/SKILL.md +1 -1
- package/skills/setup-java/SKILL.md +1 -1
- package/skills/setup-lsp/SKILL.md +1 -1
- package/skills/setup-mcp/SKILL.md +1 -1
- package/skills/setup-node/SKILL.md +1 -1
- package/skills/setup-omc/SKILL.md +11 -4
- package/skills/setup-omc-hud/SKILL.md +26 -1
- package/skills/setup-omc-hud/scripts/claude-update-last.mjs +247 -0
- package/skills/setup-playwright/SKILL.md +1 -1
- package/skills/setup-pwsh/SKILL.md +1 -1
- package/skills/setup-python/SKILL.md +1 -1
- package/skills/setup-sandbox/SKILL.md +1 -1
- package/skills/setup-stitch/SKILL.md +1 -1
- package/skills/setup-tmux/SKILL.md +1 -1
- package/skills/smart-compact/SKILL.md +10 -9
- package/skills/summary-wiki/SKILL.md +1 -1
- 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
- package/skills/ultra-interview/SKILL.md +1 -1
- package/skills/ultra-ui-qa/SKILL.md +1 -1
- package/skills/update-banker/SKILL.md +1 -1
- package/skills/vertical-pptx/SKILL.md +1 -1
- package/skills/vertical-pptx-setup/SKILL.md +1 -1
- package/skills/visual-ralph/SKILL.md +1 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* /graceful-pause [memo]: ask the running work to finish only its current step, stop,
|
|
3
|
+
* report and wait for instructions, without cutting it off the way Esc does.
|
|
4
|
+
*
|
|
5
|
+
* A skill or plugin command typed while a turn runs waits until the turn ends. This one
|
|
6
|
+
* is registered `immediate`, so it runs at once, mid-turn. It appends one user-role row
|
|
7
|
+
* the person does not see (`$.session.append`); the running turn reads it from its next
|
|
8
|
+
* model request on, that is once the tool call in flight returns.
|
|
9
|
+
*
|
|
10
|
+
* Two ways the note could land wrong are closed here:
|
|
11
|
+
* - typed during the turn's last answer, no later request reads it, and the next
|
|
12
|
+
* prompt's turn would read a stale pause first: when the turn ends unread and no
|
|
13
|
+
* background work is left, a second row voids it;
|
|
14
|
+
* - typed while idle with background work or a scheduled wake-up still pending, the
|
|
15
|
+
* next notification or scheduled prompt would start the next step: the note goes out
|
|
16
|
+
* as a prompt of its own instead, read as the person's (`asUser`), from a timer,
|
|
17
|
+
* since the engine refuses a submission made inside the command's own hook (the
|
|
18
|
+
* submission would wait on the dispatch that hook holds).
|
|
19
|
+
*
|
|
20
|
+
* The background count (tasks in flight plus scheduled wake-ups) is what the last Stop
|
|
21
|
+
* or SubagentStop reported. A turn cut off
|
|
22
|
+
* by Esc reports none, so the count can stay high until the next one: the note's last
|
|
23
|
+
* line covers that, as it tells the model to follow a newer prompt. The module's
|
|
24
|
+
* variables start over when the plugin reloads; a turn already running then reads as
|
|
25
|
+
* idle until the next one starts.
|
|
26
|
+
*
|
|
27
|
+
* Function hooks run inside the engine with no Node and no DOM: everything goes
|
|
28
|
+
* through `$`. `immediate` is checked on Claude Code 2.1.289; an older engine gets no
|
|
29
|
+
* command (it would wait for the turn to end, then answer "nothing to stop"). Codex
|
|
30
|
+
* has no function hooks.
|
|
31
|
+
*/
|
|
32
|
+
export const COMMAND = 'graceful-pause';
|
|
33
|
+
export const MIN_ENGINE = [2, 1, 289];
|
|
34
|
+
|
|
35
|
+
const SPEC = {
|
|
36
|
+
name: COMMAND,
|
|
37
|
+
description: '지금 단계만 끝내고 멈춘 뒤 보고하고 지시를 기다림. 작업 중에 입력해도 바로 전달',
|
|
38
|
+
argumentHint: '[멈춘 뒤 다룰 지시나 메모]',
|
|
39
|
+
immediate: true,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const IDLE = '진행 중인 작업이 없어 멈출 것이 없습니다. 지시를 바로 입력하면 됩니다.';
|
|
43
|
+
const SENT = '정지 요청을 진행 중인 작업에 전달했습니다. 지금 실행 중인 도구 호출이 끝나면 그 단계까지만 마무리하고 멈춥니다.';
|
|
44
|
+
const AGAIN = '이번 작업에는 정지 요청을 이미 전달했습니다.';
|
|
45
|
+
const QUEUED = '백그라운드 작업이나 예약 실행이 남아 있어, 정지 보고를 받도록 요청을 보냈습니다.';
|
|
46
|
+
const QUEUED_AGAIN = '정지 보고 요청을 이미 보냈습니다.';
|
|
47
|
+
const TOAST = '정지 요청 전달: 지금 단계가 끝나면 멈춤';
|
|
48
|
+
const VOID = '[graceful-pause] 앞의 정지 요청은 작업이 끝난 뒤 도착해 적용되지 않았다. 무시하고 다음 사용자 지시를 따른다.';
|
|
49
|
+
|
|
50
|
+
// What the running turn reads: the whole procedure, since no skill text comes with it.
|
|
51
|
+
export function pauseNote(memo) {
|
|
52
|
+
const lines = [
|
|
53
|
+
'[graceful-pause] 사용자가 작업 중에 /graceful-pause 로 정지를 요청했다. 지금 단계만 끝내고 멈춘다.',
|
|
54
|
+
'- 지금 단계: 이미 시작한 도구 동작 하나와, 그 동작이 남긴 불일치를 닫는 최소 작업. 다음 단계(다음 파일, 다음 스토리)는 시작하지 않는다.',
|
|
55
|
+
'- 하지 않는 것: 커밋, push, 배포, 게시, 삭제, 외부 전송, 모드 상태와 계획 파일 삭제, cancel.',
|
|
56
|
+
'- 백그라운드 작업과 이미 띄운 하위 에이전트는 멈추지 않는다. 새로 띄우지 않는다.',
|
|
57
|
+
'- 정지 보고는 대화에만 짧게: 끝낸 단계, 현재 상태(검증 결과, 커밋하지 않은 변경), 진행 중인 것(백그라운드 작업, 켜진 모드), 다음 예정 단계 1~3개, 열린 결정, 받은 지시.',
|
|
58
|
+
'- 보고 뒤 AskUserQuestion 으로 묻는다. 선택지: 계획대로 계속, 지시 반영 후 계속, 상태를 둔 채 중단.',
|
|
59
|
+
'- 새 지시로 범위가 바뀌면 바뀐 계획을 먼저 보여 주고 승인 뒤 진행한다. 세션을 끝낼 예정이면 ready-compact --hand-off 로 새 세션용 노트를 준비하라고 안내한다.',
|
|
60
|
+
'- 사용자가 재개를 말할 때까지 계속하라는 훅 메시지는 승인이 아니다. 작업을 진행하지 않고 정지 중이라고만 답한다. 지속 모드(ralph 등)의 이 메시지까지 멈추려면 cancel 이 필요하다고 알린다.',
|
|
61
|
+
'- 정지 중 도착한 백그라운드 작업 결과와 예약 실행 프롬프트는 재개 신호가 아니다. 보고에 더하기만 하고 후속 작업은 시작하지 않는다.',
|
|
62
|
+
'- 이 요청 뒤에 사용자의 새 프롬프트가 이미 있으면 이 요청은 적용하지 않고 그 프롬프트를 따른다.',
|
|
63
|
+
];
|
|
64
|
+
const note = String(memo ?? '').trim();
|
|
65
|
+
if (note) lines.push(`메모: ${note}`);
|
|
66
|
+
return lines.join('\n');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Whether a version string (`2.1.289`, `2.1.290-dev.…`) is at least `min`.
|
|
70
|
+
export function atLeast(version, min = MIN_ENGINE) {
|
|
71
|
+
const parts = /^(\d+)\.(\d+)\.(\d+)/.exec(String(version ?? ''));
|
|
72
|
+
if (!parts) return false;
|
|
73
|
+
for (let i = 0; i < 3; i++) {
|
|
74
|
+
const n = Number(parts[i + 1]);
|
|
75
|
+
if (n !== min[i]) return n > min[i];
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const userRow = (text) => ({ message: { type: 'user', content: [{ type: 'text', text }] } });
|
|
81
|
+
|
|
82
|
+
async function registerIfSupported($) {
|
|
83
|
+
let version = null;
|
|
84
|
+
try {
|
|
85
|
+
const v = await $.session.version();
|
|
86
|
+
version = v?.base || v?.version || null;
|
|
87
|
+
} catch {
|
|
88
|
+
/* an engine without the call is older than the command needs */
|
|
89
|
+
}
|
|
90
|
+
if (!atLeast(version)) {
|
|
91
|
+
$.ui.log(`banker: /${COMMAND} 는 Claude Code ${MIN_ENGINE.join('.')} 이상에서만 켭니다 (이 엔진: ${version || '버전 미상'})`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
await $.command.register(SPEC);
|
|
96
|
+
} catch (err) {
|
|
97
|
+
$.ui.log(`banker: /${COMMAND} 를 등록하지 못했습니다 (${String(err?.message ?? err)})`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Appends the note to the running turn; the answer the command shows. The note counts
|
|
102
|
+
// as sent before the call returns: a model request starting meanwhile reads the stored
|
|
103
|
+
// row, and a second /graceful-pause meanwhile must not append another.
|
|
104
|
+
async function deliver($, state, memo) {
|
|
105
|
+
if (state.pending?.turnId === state.main) return { text: AGAIN };
|
|
106
|
+
const pending = { turnId: state.main, afterStep: state.step, read: false };
|
|
107
|
+
state.pending = pending;
|
|
108
|
+
let res;
|
|
109
|
+
try {
|
|
110
|
+
res = await $.session.append(userRow(pauseNote(memo)));
|
|
111
|
+
} catch (err) {
|
|
112
|
+
res = { deny: String(err?.message ?? err) };
|
|
113
|
+
}
|
|
114
|
+
if (res?.deny) {
|
|
115
|
+
if (state.pending === pending) state.pending = null;
|
|
116
|
+
return { text: `정지 요청을 전달하지 못했습니다: ${res.deny}` };
|
|
117
|
+
}
|
|
118
|
+
$.ui.toast(TOAST);
|
|
119
|
+
return { text: SENT };
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Idle with background work or a scheduled wake-up pending: the note as a prompt of its
|
|
123
|
+
// own, sent from a timer once the command has answered. A hook that drops the prompt
|
|
124
|
+
// resolves `{ drop }` rather than rejecting.
|
|
125
|
+
function queueReport($, state, memo) {
|
|
126
|
+
if (state.queued) return { text: QUEUED_AGAIN };
|
|
127
|
+
state.queued = true;
|
|
128
|
+
const failed = (why) => {
|
|
129
|
+
state.queued = false;
|
|
130
|
+
$.ui.log(`banker: /${COMMAND} 정지 보고 요청을 보내지 못했습니다 (${why})`);
|
|
131
|
+
};
|
|
132
|
+
$.clock.after(1, () => {
|
|
133
|
+
$.prompt.submit({ text: pauseNote(memo), asUser: true }).then(
|
|
134
|
+
(res) => res?.drop && failed(String(res.drop)),
|
|
135
|
+
(err) => failed(String(err?.message ?? err)),
|
|
136
|
+
);
|
|
137
|
+
});
|
|
138
|
+
return { text: QUEUED };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// At the main turn's end: a note no later request read is voided unless background
|
|
142
|
+
// work will wake the session (the turn it starts reads the note then).
|
|
143
|
+
async function settlePending($, state) {
|
|
144
|
+
const { pending } = state;
|
|
145
|
+
state.pending = null;
|
|
146
|
+
if (!pending || pending.read || state.background > 0) return;
|
|
147
|
+
try {
|
|
148
|
+
await $.session.append(userRow(VOID));
|
|
149
|
+
} catch {
|
|
150
|
+
/* nothing more to do: the log line below still tells the person */
|
|
151
|
+
}
|
|
152
|
+
$.ui.log('banker: /graceful-pause 요청이 작업 끝에 도착해 적용되지 않았습니다.');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Nothing in flight: the state a fresh session, or one after /clear, starts from.
|
|
156
|
+
const fresh = () => ({ main: null, step: -1, pending: null, background: 0, queued: false });
|
|
157
|
+
const listed = (v) => (Array.isArray(v) ? v.length : 0);
|
|
158
|
+
const backgroundCount = (e) => listed(e.background_tasks) + listed(e.session_crons);
|
|
159
|
+
|
|
160
|
+
export function registerGracefulPause(on) {
|
|
161
|
+
// The main turn in flight and its latest model request; subagent loops raise no
|
|
162
|
+
// turn.start and end with an agentId. `queued`: a report prompt not started yet.
|
|
163
|
+
const state = fresh();
|
|
164
|
+
watchSession(on, state);
|
|
165
|
+
watchTurns(on, state);
|
|
166
|
+
|
|
167
|
+
on('command.run', { command: COMMAND }, async ($, e) => {
|
|
168
|
+
if (state.main) return deliver($, state, e.args);
|
|
169
|
+
if (state.background > 0) return queueReport($, state, e.args);
|
|
170
|
+
return { text: IDLE };
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// The command's registration, a fresh state after /clear, and the background count the
|
|
175
|
+
// stop events report.
|
|
176
|
+
function watchSession(on, state) {
|
|
177
|
+
on('session.start', async ($, e, next) => {
|
|
178
|
+
await registerIfSupported($);
|
|
179
|
+
return next(e);
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// `/clear` ends the conversation and raises no session.start for the next one.
|
|
183
|
+
on('session.end', async ($, e, next) => {
|
|
184
|
+
Object.assign(state, fresh());
|
|
185
|
+
return next(e);
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
on('classic.Stop', async ($, e, next) => {
|
|
189
|
+
state.background = backgroundCount(e);
|
|
190
|
+
return next(e);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
on('classic.SubagentStop', async ($, e, next) => {
|
|
194
|
+
state.background = backgroundCount(e);
|
|
195
|
+
return next(e);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// The main turn in flight and the model requests it makes. turn.step wraps every
|
|
200
|
+
// request's stream, subagents' too: in the engine's kit that cost 25 to 45 µs a chunk,
|
|
201
|
+
// well under 1% of a request.
|
|
202
|
+
function watchTurns(on, state) {
|
|
203
|
+
on('turn.start', async ($, e, next) => {
|
|
204
|
+
Object.assign(state, { main: e.turnId, step: -1, queued: false });
|
|
205
|
+
return next(e);
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
on('turn.step', async function* ($, e, next) {
|
|
209
|
+
if (e.turnId === state.main) {
|
|
210
|
+
state.step = e.index;
|
|
211
|
+
if (state.pending?.turnId === e.turnId && e.index > state.pending.afterStep) state.pending.read = true;
|
|
212
|
+
}
|
|
213
|
+
return yield* next(e);
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
on('turn.complete', async ($, e, next) => {
|
|
217
|
+
if (e.agentId || e.turnId !== state.main) return next(e);
|
|
218
|
+
state.main = null;
|
|
219
|
+
await settlePending($, state);
|
|
220
|
+
return next(e);
|
|
221
|
+
});
|
|
222
|
+
}
|
package/hooks/hooks.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "banker hooks: obsidizer wiki canonicalization (PostToolUse, inert until `obsidizer --enable`) + anonymous usage counting (PostToolUse Skill / UserPromptExpansion, count-default-on, opt-out BANKER_NO_TELEMETRY, no-op without endpoint) + update-check notification (SessionStart, opt-out BANKER_NO_UPDATE_CHECK).",
|
|
2
|
+
"description": "banker hooks: obsidizer wiki canonicalization (PostToolUse, inert until `obsidizer --enable`) + anonymous usage counting (PostToolUse Skill / UserPromptExpansion, count-default-on, opt-out BANKER_NO_TELEMETRY, no-op without endpoint) + update-check notification (SessionStart, opt-out BANKER_NO_UPDATE_CHECK). modules: function hooks (Claude Code 2.1.289+) serving /graceful-pause, which runs at once even mid-turn.",
|
|
3
|
+
"modules": ["./register.mjs"],
|
|
3
4
|
"hooks": {
|
|
4
5
|
"PostToolUse": [
|
|
5
6
|
{
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* banker's function-hooks module: the one file hooks/hooks.json names under
|
|
3
|
+
* `modules`. Claude Code loads it beside the classic hooks in the same file;
|
|
4
|
+
* builds without function hooks, and Codex, leave it alone.
|
|
5
|
+
*
|
|
6
|
+
* Each feature registers its own hooks; this file only gathers them.
|
|
7
|
+
*/
|
|
8
|
+
import { registerGracefulPause } from './graceful-pause.mjs';
|
|
9
|
+
|
|
10
|
+
export const register = (on) => {
|
|
11
|
+
registerGracefulPause(on);
|
|
12
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaydash9999/banker-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "banker — Claude Code + Codex CLI plugin (QA, audit, docs, architecture, wiki skills). Install via Claude Code marketplace, or `npm i -g @kaydash9999/banker-plugins` then `banker setup`.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"banker": "bin/banker.js"
|
|
@@ -15,10 +15,13 @@
|
|
|
15
15
|
"!skills/ultra-init-workspace/**",
|
|
16
16
|
"commands",
|
|
17
17
|
".claude-plugin",
|
|
18
|
+
"!.claude-plugin/types",
|
|
19
|
+
"!.claude-plugin/types/**",
|
|
18
20
|
"codex",
|
|
19
21
|
"hooks",
|
|
20
22
|
"bin",
|
|
21
23
|
"!**/*.test.mjs",
|
|
24
|
+
"!**/*.test.ts",
|
|
22
25
|
"!**/test_*.py",
|
|
23
26
|
"!**/__pycache__",
|
|
24
27
|
"!**/__pycache__/**",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 3d-intro-build
|
|
3
|
-
description: "
|
|
3
|
+
description: "스크롤 위치에 맞춰 3D 플라이스루 영상이 움직이는 브랜드 인트로 사이트를 만듦. Azure 의 gpt-image-2 로 스틸을, Sora-2 로 영상을 생성. 인터뷰 뒤에 비용 승인 게이트에서 사용자가 승인해야만 유료 생성을 시작하고, 스틸, 영상, 로컬 프리뷰 순서로 진행. '3d-intro-build'/'3D 인트로'/'스크롤 fly-through'/'인트로 영상 사이트' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 3d-intro-build — 스크롤-스크럽 3D 인트로 제작 (Azure 파이프라인)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 3d-intro-setup
|
|
3
|
-
description: "
|
|
3
|
+
description: "`3d-intro-build` 에 필요한 Node 18 이상과 ffmpeg 를 갖추고 Azure 크레덴셜을 저장함. 크레덴셜은 직접 입력하거나 Azure 콘솔의 샘플 코드를 붙여 넣어 받고, 무과금 프리플라이트로 확인. 'setup-3d-intro'/'3d-intro-setup'/'3D 인트로 설정'/'Azure Sora 크레덴셜' 또는 `/banker:setup` 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 3d-intro-setup — Azure Sora-2 / gpt-image-2 3D 인트로 제작 전제조건 설치
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: all-in-one
|
|
3
|
-
description: "
|
|
3
|
+
description: "코딩 작업을 한 명령으로 계획부터 QA 통과까지 엄격하게 진행. `ralplan` 으로 합의 계획, `ralph` 로 검증 구현을 하고 독립 QA 게이트(Claude Code 는 `verify` 순환, Codex 는 `ultraqa`)로 마무리. '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,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: append_wiki
|
|
3
|
-
description: "
|
|
3
|
+
description: "새로 알게 된 비자명한 지식을 `.omc/wiki` 에 구조화해 넣고 기존 페이지와 병합. 'append_wiki'/'위키 기록'/'wiki에 정리'/'알게 된 내용 기록' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# append_wiki — 작업 지식을 wiki에 적재
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: arch-diagram
|
|
3
|
-
description: "
|
|
3
|
+
description: "시스템 아키텍처 구성도를 PlantUML과 편집 가능 PPTX로 산출. '아키텍처 다이어그램'/'plantuml'/'pptx 다이어그램'/'구성도' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# arch-diagram — PlantUML + PPTX 아키텍처 다이어그램 산출
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit-mock
|
|
3
|
-
description: "
|
|
3
|
+
description: "하드코딩된 값, mock, stub, 열거형을 정적 감사로 검출. 코드는 읽기만 함. 'audit-mock'/'하드코딩 검출'/'mock 감사'/'stub 감사'/'SQL 없이 하드코딩 반환' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# audit-mock — 하드코딩 / mock·stub / 열거형 read-only 정적 감사
|