reborn-prompt 1.0.4 → 1.0.6
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/install.mjs +303 -269
- package/package.json +34 -34
- package/skill/SKILL.th.md +93 -0
package/install.mjs
CHANGED
|
@@ -1,269 +1,303 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* 프롬프트 정리기 설치기 — **깔고, 진짜 잡히는지 확인까지 한다.**
|
|
4
|
-
*
|
|
5
|
-
* npx --yes reborn-prompt 설치 + 확인
|
|
6
|
-
* npx --yes reborn-prompt --check 설치하지 않고 지금 상태만 본다
|
|
7
|
-
* npx --yes reborn-prompt --lang=en 화면 말을 영어로 강제한다(안 주면 이 컴퓨터 로케일)
|
|
8
|
-
*
|
|
9
|
-
* ★★[[kit-update-selfcheck]] · [[kit-skill-registry-installer]] 와 같은 원칙이다.
|
|
10
|
-
* **복사는 조용히 실패한다.** 그래서 종료코드로 판정하지 않고,
|
|
11
|
-
* 끝나고 나서 **파일이 실제로 있는지·머리말이 온전한지**를 다시 본다.
|
|
12
|
-
*
|
|
13
|
-
* ★이 스킬은 남의 것이 아니라 **우리가 만든 것**이다(MIT). 그래서 `skills add` 로 남의
|
|
14
|
-
* 저장소를 부르는 게 아니라, 패키지에 동봉한 파일을 홈으로 **복사**한다.
|
|
15
|
-
*/
|
|
16
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
17
|
-
import { homedir } from "node:os";
|
|
18
|
-
import { dirname, join, relative } from "node:path";
|
|
19
|
-
import { fileURLToPath } from "node:url";
|
|
20
|
-
|
|
21
|
-
const HOME = homedir();
|
|
22
|
-
const 여기 = dirname(fileURLToPath(import.meta.url));
|
|
23
|
-
const 인자 = process.argv.slice(2);
|
|
24
|
-
const 확인만 = 인자.includes("--check");
|
|
25
|
-
/** `--lang=en` · `--lang=ko`. 안 주면 이 컴퓨터의 로케일로 정한다(→ `말정하기`). */
|
|
26
|
-
const 말강제 = (인자.find((a) => a.startsWith("--lang=")) || "").slice(7).toLowerCase();
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* 어느 말로 말할 것인가. (2026-09-23 · 영어권 2차 ①)
|
|
30
|
-
* ★기준 패턴은 `npm_video_skills/install.mjs` 다. 같은 인자 규약(`--lang=`)을 쓴다.
|
|
31
|
-
* ★이 컴퓨터의 로케일이 곧 그 사람이 읽는 말이다. 서버에 묻지 않는다.
|
|
32
|
-
* ★못 읽으면 한국어로 떨어진다 — 지금 받는 사람의 절대다수가 한국 고객이다.
|
|
33
|
-
*/
|
|
34
|
-
// ==국가런칭:말정하기 시작==
|
|
35
|
-
/**
|
|
36
|
-
* 어느 말로 말할 것인가. (2026-09-26 국가런칭 · 공용본)
|
|
37
|
-
*
|
|
38
|
-
* ★강제 인자(`--lang=xx`)가 지원 언어 안에 있으면 그것을 그대로 쓴다.
|
|
39
|
-
* ★없으면 이 컴퓨터의 로케일로 정한다 — `ko`→한국어, `ja`→일본어, 그 밖은 전부 영어.
|
|
40
|
-
* ★예외가 나면(로케일을 못 읽는 드문 환경) 한국어로 떨어진다 — 기존 동작 그대로다.
|
|
41
|
-
* 지금 사는 사람의 절대다수가 한국 고객이라, 판정이 실패했을 때 덜 틀리는 쪽이 그쪽이다.
|
|
42
|
-
*/
|
|
43
|
-
const 지원언어 = ["ko", "en", "ja"];
|
|
44
|
-
|
|
45
|
-
export function 말정하기(강제) {
|
|
46
|
-
if (지원언어.includes(강제)) return 강제;
|
|
47
|
-
try {
|
|
48
|
-
const 로케일 = Intl.DateTimeFormat().resolvedOptions().locale || "";
|
|
49
|
-
if (/^ko\b/i.test(로케일)) return "ko";
|
|
50
|
-
if (/^ja\b/i.test(로케일)) return "ja";
|
|
51
|
-
return "
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
짐없음1
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
검사
|
|
71
|
-
검사_
|
|
72
|
-
검사_
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
쓰는법1
|
|
85
|
-
쓰는법
|
|
86
|
-
쓰는법
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
짐없음1
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
검사
|
|
103
|
-
검사_
|
|
104
|
-
검사_
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
쓰는법1
|
|
117
|
-
쓰는법
|
|
118
|
-
쓰는법
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
짐없음1
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
검사
|
|
135
|
-
검사_
|
|
136
|
-
검사_
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
쓰는법1
|
|
149
|
-
쓰는법
|
|
150
|
-
쓰는법
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
if (
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
/*
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
if (
|
|
246
|
-
console.
|
|
247
|
-
console.
|
|
248
|
-
process.exit(1);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 프롬프트 정리기 설치기 — **깔고, 진짜 잡히는지 확인까지 한다.**
|
|
4
|
+
*
|
|
5
|
+
* npx --yes reborn-prompt 설치 + 확인
|
|
6
|
+
* npx --yes reborn-prompt --check 설치하지 않고 지금 상태만 본다
|
|
7
|
+
* npx --yes reborn-prompt --lang=en 화면 말을 영어로 강제한다(안 주면 이 컴퓨터 로케일)
|
|
8
|
+
*
|
|
9
|
+
* ★★[[kit-update-selfcheck]] · [[kit-skill-registry-installer]] 와 같은 원칙이다.
|
|
10
|
+
* **복사는 조용히 실패한다.** 그래서 종료코드로 판정하지 않고,
|
|
11
|
+
* 끝나고 나서 **파일이 실제로 있는지·머리말이 온전한지**를 다시 본다.
|
|
12
|
+
*
|
|
13
|
+
* ★이 스킬은 남의 것이 아니라 **우리가 만든 것**이다(MIT). 그래서 `skills add` 로 남의
|
|
14
|
+
* 저장소를 부르는 게 아니라, 패키지에 동봉한 파일을 홈으로 **복사**한다.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
17
|
+
import { homedir } from "node:os";
|
|
18
|
+
import { dirname, join, relative } from "node:path";
|
|
19
|
+
import { fileURLToPath } from "node:url";
|
|
20
|
+
|
|
21
|
+
const HOME = homedir();
|
|
22
|
+
const 여기 = dirname(fileURLToPath(import.meta.url));
|
|
23
|
+
const 인자 = process.argv.slice(2);
|
|
24
|
+
const 확인만 = 인자.includes("--check");
|
|
25
|
+
/** `--lang=en` · `--lang=ko`. 안 주면 이 컴퓨터의 로케일로 정한다(→ `말정하기`). */
|
|
26
|
+
const 말강제 = (인자.find((a) => a.startsWith("--lang=")) || "").slice(7).toLowerCase();
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 어느 말로 말할 것인가. (2026-09-23 · 영어권 2차 ①)
|
|
30
|
+
* ★기준 패턴은 `npm_video_skills/install.mjs` 다. 같은 인자 규약(`--lang=`)을 쓴다.
|
|
31
|
+
* ★이 컴퓨터의 로케일이 곧 그 사람이 읽는 말이다. 서버에 묻지 않는다.
|
|
32
|
+
* ★못 읽으면 한국어로 떨어진다 — 지금 받는 사람의 절대다수가 한국 고객이다.
|
|
33
|
+
*/
|
|
34
|
+
// ==국가런칭:말정하기 시작==
|
|
35
|
+
/**
|
|
36
|
+
* 어느 말로 말할 것인가. (2026-09-26 국가런칭 · 공용본)
|
|
37
|
+
*
|
|
38
|
+
* ★강제 인자(`--lang=xx`)가 지원 언어 안에 있으면 그것을 그대로 쓴다.
|
|
39
|
+
* ★없으면 이 컴퓨터의 로케일로 정한다 — `ko`→한국어, `ja`→일본어, `th`→태국어, 그 밖은 전부 영어.
|
|
40
|
+
* ★예외가 나면(로케일을 못 읽는 드문 환경) 한국어로 떨어진다 — 기존 동작 그대로다.
|
|
41
|
+
* 지금 사는 사람의 절대다수가 한국 고객이라, 판정이 실패했을 때 덜 틀리는 쪽이 그쪽이다.
|
|
42
|
+
*/
|
|
43
|
+
const 지원언어 = ["ko", "en", "ja", "th"];
|
|
44
|
+
|
|
45
|
+
export function 말정하기(강제) {
|
|
46
|
+
if (지원언어.includes(강제)) return 강제;
|
|
47
|
+
try {
|
|
48
|
+
const 로케일 = Intl.DateTimeFormat().resolvedOptions().locale || "";
|
|
49
|
+
if (/^ko\b/i.test(로케일)) return "ko";
|
|
50
|
+
if (/^ja\b/i.test(로케일)) return "ja";
|
|
51
|
+
if (/^th\b/i.test(로케일)) return "th";
|
|
52
|
+
return "en";
|
|
53
|
+
} catch { return "ko"; }
|
|
54
|
+
}
|
|
55
|
+
// ==국가런칭:말정하기 끝==
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 화면에 찍는 말. **색은 여기 넣지 않는다** — 부르는 쪽이 입힌다.
|
|
59
|
+
* ★한국어 문구는 **한 글자도 바꾸지 않았다.** 옮겨 담기만 했다.
|
|
60
|
+
* ★자기시험은 이 패키지에 없다.
|
|
61
|
+
*/
|
|
62
|
+
const 글표 = {
|
|
63
|
+
ko: {
|
|
64
|
+
머리: "프롬프트 정리기",
|
|
65
|
+
머리부제: "· REBORN LABS · MIT",
|
|
66
|
+
머리설명: "한 문장을 그대로 쓸 수 있는 프롬프트로 정리합니다.",
|
|
67
|
+
짐없음1: "✗ 패키지 안에 skill/ 폴더가 없다",
|
|
68
|
+
짐없음1뒤: " — 배포가 잘못된 것이다.",
|
|
69
|
+
받은곳: (경로) => `받은 곳: ${경로}`,
|
|
70
|
+
검사_SKILL없음: "SKILL.md 가 없다",
|
|
71
|
+
검사_머리말깨짐: "SKILL.md 의 머리말이 깨졌다(name 을 못 읽는다)",
|
|
72
|
+
검사_참고없음: "references/낭비35.md 가 없다",
|
|
73
|
+
검사_개수틀림: (n) => `35가지여야 하는데 ${n}개다 — 목록이 잘렸다`,
|
|
74
|
+
설치됨: "✓ 설치되어 있습니다",
|
|
75
|
+
설치됨상세: (경로) => `(${경로} · 35가지 확인)`,
|
|
76
|
+
아직없음: "· 아직 없습니다",
|
|
77
|
+
설치요약: (n, 경로) => `${n}개 파일 → ${경로}`,
|
|
78
|
+
확인걸림: "✗ 깔았는데 확인에서 걸렸습니다",
|
|
79
|
+
확인걸림설명: "권한이나 경로 문제일 수 있습니다. 위 경로를 직접 열어 확인해 주세요.",
|
|
80
|
+
설치완료: "✓ 설치 완료",
|
|
81
|
+
설치완료설명: "— 파일 확인까지 끝났습니다(35가지 목록 온전).",
|
|
82
|
+
재시작: "★ 클로드 코드를 껐다 켜야 적용됩니다.",
|
|
83
|
+
쓰는법머리: "쓰는 법",
|
|
84
|
+
쓰는법1앞: "그냥 대충 말하세요 — ",
|
|
85
|
+
쓰는법1말: '"그냥 결제 되게 좀 고쳐줘"',
|
|
86
|
+
쓰는법2: "그럼 할 일·산출물·손댈 범위·끝나는 조건까지 채운 프롬프트로 바꿔 줍니다.",
|
|
87
|
+
쓰는법3: "챗GPT·커서에 그대로 붙여넣어도 됩니다.",
|
|
88
|
+
설명링크: "설명 · https://rebornlabs.kr/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
89
|
+
꼬리1: "이건 한 번의 대화를 좋게 만듭니다. 클로드가 하는 일 자체를 손보는 건 따로 있습니다.",
|
|
90
|
+
제품이름: "리본랩스 스킬팩",
|
|
91
|
+
제품설명: "— 골라 담은 스킬 48종, 한 줄로. 8,900원",
|
|
92
|
+
제품링크: "https://rebornlabs.kr/skillpack?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
93
|
+
제품꼬리: "목록과 직접 까는 명령까지 그 페이지에 그대로 적어 두었습니다. 안 사셔도 됩니다.",
|
|
94
|
+
},
|
|
95
|
+
en: {
|
|
96
|
+
머리: "Prompt Fixer",
|
|
97
|
+
머리부제: "· REBORN LABS · MIT",
|
|
98
|
+
머리설명: "Turns one sentence into a prompt you can paste and use as-is.",
|
|
99
|
+
짐없음1: "✗ This package has no skill/ folder inside it",
|
|
100
|
+
짐없음1뒤: " — the package was built wrong.",
|
|
101
|
+
받은곳: (경로) => `Received at: ${경로}`,
|
|
102
|
+
검사_SKILL없음: "SKILL.md is missing",
|
|
103
|
+
검사_머리말깨짐: "SKILL.md's frontmatter is broken (can't read name)",
|
|
104
|
+
검사_참고없음: "references/낭비35.md is missing",
|
|
105
|
+
검사_개수틀림: (n) => `should be 35 items, found ${n} — the list was cut short`,
|
|
106
|
+
설치됨: "✓ Installed",
|
|
107
|
+
설치됨상세: (경로) => `(${경로} · 35 items confirmed)`,
|
|
108
|
+
아직없음: "· Not installed yet",
|
|
109
|
+
설치요약: (n, 경로) => `${n} files → ${경로}`,
|
|
110
|
+
확인걸림: "✗ Installed, but it did not pass the check",
|
|
111
|
+
확인걸림설명: "This may be a permissions or path issue. Please open the path above and check it yourself.",
|
|
112
|
+
설치완료: "✓ Install complete",
|
|
113
|
+
설치완료설명: "— the file check passed too (all 35 items intact).",
|
|
114
|
+
재시작: "★ Restart Claude Code for this to take effect.",
|
|
115
|
+
쓰는법머리: "How to use it",
|
|
116
|
+
쓰는법1앞: "Just say it roughly — ",
|
|
117
|
+
쓰는법1말: '"just fix checkout so it actually works"',
|
|
118
|
+
쓰는법2: "It turns that into a prompt with the task, deliverable, scope, and done-condition filled in.",
|
|
119
|
+
쓰는법3: "You can paste it straight into ChatGPT or Cursor too.",
|
|
120
|
+
설명링크: "Learn more · https://rebornlabs.kr/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
121
|
+
꼬리1: "This makes one conversation better. Fixing how Claude works overall is a separate thing.",
|
|
122
|
+
제품이름: "REBORN LABS Skill Pack",
|
|
123
|
+
제품설명: "— 48 handpicked skills, in one line. US$8",
|
|
124
|
+
제품링크: "https://skillpack.rebornlabs.kr/?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
125
|
+
제품꼬리: "The list and the exact install command are right there on that page. You don't have to buy it.",
|
|
126
|
+
},
|
|
127
|
+
ja: {
|
|
128
|
+
머리: "プロンプト整理ツール",
|
|
129
|
+
머리부제: "· REBORN LABS · MIT",
|
|
130
|
+
머리설명: "一文をそのまま使えるプロンプトに整えます。",
|
|
131
|
+
짐없음1: "✗ パッケージ内に skill/ フォルダがありません",
|
|
132
|
+
짐없음1뒤: " — パッケージのビルドが誤っています。",
|
|
133
|
+
받은곳: (경로) => `受け取った場所: ${경로}`,
|
|
134
|
+
검사_SKILL없음: "SKILL.md がありません",
|
|
135
|
+
검사_머리말깨짐: "SKILL.md のフロントマターが壊れています(name を読み取れません)",
|
|
136
|
+
검사_참고없음: "references/낭비35.md がありません",
|
|
137
|
+
검사_개수틀림: (n) => `35項目のはずが${n}個です — 一覧が途中で切れています`,
|
|
138
|
+
설치됨: "✓ インストール済みです",
|
|
139
|
+
설치됨상세: (경로) => `(${경로} · 35項目確認済み)`,
|
|
140
|
+
아직없음: "· まだありません",
|
|
141
|
+
설치요약: (n, 경로) => `${n}個のファイル → ${경로}`,
|
|
142
|
+
확인걸림: "✗ インストールしましたが、確認に失敗しました",
|
|
143
|
+
확인걸림설명: "権限またはパスの問題である可能性があります。上記のパスを直接開いてご確認ください。",
|
|
144
|
+
설치완료: "✓ インストール完了",
|
|
145
|
+
설치완료설명: "— ファイルの確認まで完了しました(35項目すべて確認済み)。",
|
|
146
|
+
재시작: "★ Claude Code を再起動すると反映されます。",
|
|
147
|
+
쓰는법머리: "使い方",
|
|
148
|
+
쓰는법1앞: "大まかに伝えるだけです — ",
|
|
149
|
+
쓰는법1말: '"とにかく決済がちゃんと動くように直して"',
|
|
150
|
+
쓰는법2: "タスク・成果物・作業範囲・完了条件まで埋めたプロンプトに変換します。",
|
|
151
|
+
쓰는법3: "ChatGPT や Cursor にそのまま貼り付けてもお使いいただけます。",
|
|
152
|
+
설명링크: "詳細 · https://rebornlabs.kr/ja/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
153
|
+
꼬리1: "これは1回の会話を良くするものです。Claude が行う作業自体を整えるのは別のものです。",
|
|
154
|
+
제품이름: "REBORN LABS スキルパック",
|
|
155
|
+
제품설명: "— 私たちが実際にインストールして選んだ48種を1行で。$8",
|
|
156
|
+
제품링크: "https://rebornlabs.kr/ja/skillpack?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
157
|
+
제품꼬리: "一覧と実際にインストールするコマンドはそのページにそのまま載せています。購入は必須ではありません。",
|
|
158
|
+
},
|
|
159
|
+
th: {
|
|
160
|
+
머리: "เครื่องมือจัดพรอมต์",
|
|
161
|
+
머리부제: "· REBORN LABS · MIT",
|
|
162
|
+
머리설명: "เปลี่ยนประโยคเดียวให้เป็นพรอมต์ที่ก๊อปไปใช้ได้ทันที",
|
|
163
|
+
짐없음1: "✗ ในแพ็กเกจนี้ไม่มีโฟลเดอร์ skill/",
|
|
164
|
+
짐없음1뒤: " — แพ็กเกจนี้ถูกเผยแพร่มาผิดพลาด",
|
|
165
|
+
받은곳: (경로) => `รับมาจาก: ${경로}`,
|
|
166
|
+
검사_SKILL없음: "ไม่พบ SKILL.md",
|
|
167
|
+
검사_머리말깨짐: "frontmatter ของ SKILL.md เสีย (อ่าน name ไม่ได้)",
|
|
168
|
+
검사_참고없음: "ไม่พบ references/낭비35.md",
|
|
169
|
+
검사_개수틀림: (n) => `ควรมี 35 ข้อ แต่พบ ${n} ข้อ — รายการขาดหายไปบางส่วน`,
|
|
170
|
+
설치됨: "✓ ติดตั้งแล้ว",
|
|
171
|
+
설치됨상세: (경로) => `(${경로} · ยืนยันครบ 35 ข้อ)`,
|
|
172
|
+
아직없음: "· ยังไม่ได้ติดตั้ง",
|
|
173
|
+
설치요약: (n, 경로) => `${n} ไฟล์ → ${경로}`,
|
|
174
|
+
확인걸림: "✗ ติดตั้งแล้ว แต่การตรวจสอบไม่ผ่าน",
|
|
175
|
+
확인걸림설명: "อาจเป็นปัญหาเรื่องสิทธิ์หรือพาธ กรุณาเปิดพาธด้านบนเพื่อตรวจสอบด้วยตัวเอง",
|
|
176
|
+
설치완료: "✓ ติดตั้งเสร็จแล้ว",
|
|
177
|
+
설치완료설명: "— ตรวจสอบไฟล์เรียบร้อยแล้วด้วย (ครบทั้ง 35 ข้อ)",
|
|
178
|
+
재시작: "★ ต้องปิดแล้วเปิด Claude Code ใหม่ การตั้งค่าจึงจะมีผล",
|
|
179
|
+
쓰는법머리: "วิธีใช้",
|
|
180
|
+
쓰는법1앞: "พูดคร่าว ๆ ได้เลย — ",
|
|
181
|
+
쓰는법1말: '"ช่วยแก้ระบบชำระเงินให้ใช้งานได้จริงหน่อย"',
|
|
182
|
+
쓰는법2: "แล้วมันจะแปลงเป็นพรอมต์ที่ระบุสิ่งที่ต้องทำ ผลงานที่ต้องการ ขอบเขตที่แก้ได้ และเงื่อนไขที่ถือว่าเสร็จ ครบทุกข้อ",
|
|
183
|
+
쓰는법3: "จะก๊อปไปวางใน ChatGPT หรือ Cursor ตรง ๆ ก็ได้",
|
|
184
|
+
설명링크: "รายละเอียด · https://rebornlabs.kr/th-th/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
185
|
+
꼬리1: "อันนี้ช่วยให้บทสนทนาหนึ่งครั้งดีขึ้น ส่วนการปรับวิธีทำงานของ Claude โดยรวมเป็นอีกเรื่องหนึ่ง",
|
|
186
|
+
제품이름: "REBORN LABS Skill Pack",
|
|
187
|
+
제품설명: "— สกิลคัดสรร 48 ตัว ในคำสั่งเดียว US$8",
|
|
188
|
+
제품링크: "https://rebornlabs.kr/th-th/skillpack?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
189
|
+
제품꼬리: "รายการและคำสั่งติดตั้งจริงอยู่ในหน้านั้นครบแล้ว ไม่ซื้อก็ไม่เป็นไร",
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
/** 이번 실행이 쓰는 말. */
|
|
194
|
+
const 말 = 말정하기(말강제);
|
|
195
|
+
/** 화면 문구. 부르는 쪽은 `G.무엇` 으로 쓴다. */
|
|
196
|
+
const G = 글표[말];
|
|
197
|
+
|
|
198
|
+
const c = { g: "\x1b[32m", r: "\x1b[31m", y: "\x1b[33m", d: "\x1b[90m", cy: "\x1b[36m", b: "\x1b[1m", 0: "\x1b[0m" };
|
|
199
|
+
const 스킬이름 = "prompt-fix";
|
|
200
|
+
const 원본 = join(여기, "skill");
|
|
201
|
+
const 대상 = join(HOME, ".claude", "skills", 스킬이름);
|
|
202
|
+
|
|
203
|
+
console.log(`\n${c.b}${G.머리}${c[0]} ${c.d}${G.머리부제}${c[0]}`);
|
|
204
|
+
console.log(`${c.d}${G.머리설명}${c[0]}\n`);
|
|
205
|
+
|
|
206
|
+
/* ── 무엇을 넣을 것인가 ─────────────────────────────────────────────── */
|
|
207
|
+
function 파일목록(뿌리) {
|
|
208
|
+
const 나온다 = [];
|
|
209
|
+
const 걷기 = (d) => {
|
|
210
|
+
for (const 이름 of readdirSync(d)) {
|
|
211
|
+
const p = join(d, 이름);
|
|
212
|
+
if (statSync(p).isDirectory()) 걷기(p);
|
|
213
|
+
else 나온다.push(p);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
걷기(뿌리);
|
|
217
|
+
return 나온다;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (!existsSync(원본)) {
|
|
221
|
+
console.error(`${c.r}${G.짐없음1}${c[0]}${G.짐없음1뒤}`);
|
|
222
|
+
console.error(` ${c.d}${G.받은곳(여기)}${c[0]}`);
|
|
223
|
+
process.exit(2);
|
|
224
|
+
}
|
|
225
|
+
const 넣을것 = 파일목록(원본);
|
|
226
|
+
|
|
227
|
+
/* ── 지금 상태 ──────────────────────────────────────────────────────── */
|
|
228
|
+
function 검사() {
|
|
229
|
+
const md = join(대상, "SKILL.md");
|
|
230
|
+
if (!existsSync(md)) return { 있음: false, 이유: G.검사_SKILL없음 };
|
|
231
|
+
const 본문 = readFileSync(md, "utf8");
|
|
232
|
+
if (!/^---[\s\S]*?\bname:\s*prompt-fix\b/m.test(본문)) {
|
|
233
|
+
return { 있음: false, 이유: G.검사_머리말깨짐 };
|
|
234
|
+
}
|
|
235
|
+
const 참고 = join(대상, "references", "낭비35.md");
|
|
236
|
+
if (!existsSync(참고)) return { 있음: false, 이유: G.검사_참고없음 };
|
|
237
|
+
/* ★★영상·랜딩·README 가 전부 "35가지"를 인용한다. 목록이 줄어들면 광고가 거짓이 된다.
|
|
238
|
+
그래서 **개수를 여기서 센다.** 파일이 있다는 것만으로 통과시키지 않는다. */
|
|
239
|
+
const 수 = (readFileSync(참고, "utf8").match(/^\d+\.\s\*\*/gm) || []).length;
|
|
240
|
+
if (수 !== 35) return { 있음: false, 이유: G.검사_개수틀림(수) };
|
|
241
|
+
return { 있음: true, 수 };
|
|
242
|
+
}
|
|
243
|
+
const 지금 = 검사();
|
|
244
|
+
|
|
245
|
+
if (확인만) {
|
|
246
|
+
if (지금.있음) console.log(`${c.g}${G.설치됨}${c[0]} ${c.d}${G.설치됨상세(대상)}${c[0]}\n`);
|
|
247
|
+
else console.log(`${c.y}${G.아직없음}${c[0]} ${c.d}— ${지금.이유}${c[0]}\n`);
|
|
248
|
+
process.exit(지금.있음 ? 0 : 1);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* ── 설치 ───────────────────────────────────────────────────────────── */
|
|
252
|
+
/* ★영문이면 skill/SKILL.en.md, 일본어면 skill/SKILL.ja.md, 태국어면 skill/SKILL.th.md 를 SKILL.md 자리에 심는다
|
|
253
|
+
(2026-09-23 영어권 2차 ① · 2026-09-28 국가런칭 검수로 ja 분기 추가 — 여태 en 만
|
|
254
|
+
있어서 --lang=ja 로 설치해도 SKILL.md 는 한국어 원본이 그대로 심겼다).
|
|
255
|
+
고객 쪽 파일명은 늘 SKILL.md 여야 클로드가 읽는다. SKILL.en.md·SKILL.ja.md 자체는
|
|
256
|
+
따로 심지 않는다. */
|
|
257
|
+
const 영문본 = join(원본, "SKILL.en.md");
|
|
258
|
+
const 일본어본 = join(원본, "SKILL.ja.md");
|
|
259
|
+
const 태국어본 = join(원본, "SKILL.th.md");
|
|
260
|
+
const 번역본 = 말 === "en" ? 영문본 : 말 === "ja" ? 일본어본 : 말 === "th" ? 태국어본 : null;
|
|
261
|
+
const 번역적용 = !!번역본 && existsSync(번역본);
|
|
262
|
+
let 쓴수 = 0;
|
|
263
|
+
for (const src of 넣을것) {
|
|
264
|
+
const 상대 = relative(원본, src);
|
|
265
|
+
if (상대 === "SKILL.en.md" || 상대 === "SKILL.ja.md" || 상대 === "SKILL.th.md") continue;
|
|
266
|
+
const 실제소스 = (상대 === "SKILL.md" && 번역적용) ? 번역본 : src;
|
|
267
|
+
const dst = join(대상, 상대);
|
|
268
|
+
mkdirSync(dirname(dst), { recursive: true });
|
|
269
|
+
writeFileSync(dst, readFileSync(실제소스));
|
|
270
|
+
쓴수++;
|
|
271
|
+
/* ★영문·일본어 실행은 한글이 0자여야 한다. 참고 문서 파일명(낭비35.md)은 아직 한글이라
|
|
272
|
+
en/ja 화면에서는 줄 자체를 건너뛴다 — 개수·도착 경로는 아래 요약 줄로 이미 준다. */
|
|
273
|
+
if (말 === "ko" || !/[가-힣]/.test(상대)) console.log(` ${c.d}·${c[0]} ${상대}`);
|
|
274
|
+
}
|
|
275
|
+
console.log(`\n${c.d}${G.설치요약(쓴수, 대상)}${c[0]}`);
|
|
276
|
+
|
|
277
|
+
/* ── ★설치가 아니라 **설치 뒤 확인**이 이 설치기의 값이다 ─────────────── */
|
|
278
|
+
const 뒤 = 검사();
|
|
279
|
+
if (!뒤.있음) {
|
|
280
|
+
console.error(`\n${c.r}${G.확인걸림}${c[0]} — ${뒤.이유}`);
|
|
281
|
+
console.error(` ${c.d}${G.확인걸림설명}${c[0]}\n`);
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
console.log(`\n${c.g}${c.b}${G.설치완료}${c[0]} ${c.d}${G.설치완료설명}${c[0]}`);
|
|
286
|
+
console.log(`\n${c.y}${G.재시작}${c[0]}`);
|
|
287
|
+
console.log(`\n${c.b}${G.쓰는법머리}${c[0]}`);
|
|
288
|
+
console.log(` ${G.쓰는법1앞}${c.cy}${G.쓰는법1말}${c[0]}`);
|
|
289
|
+
console.log(` ${c.d}${G.쓰는법2}${c[0]}`);
|
|
290
|
+
console.log(` ${c.d}${G.쓰는법3}${c[0]}\n`);
|
|
291
|
+
console.log(`${c.d}${G.설명링크}${c[0]}`);
|
|
292
|
+
/* ★[[funnel-free-to-paid-join]] — 무료 배포물 안에 유료 제품 안내를 둔다. 숨기지 않는다.
|
|
293
|
+
* ★가리키는 곳을 158,000원 클로드킷 → 8,900원 스킬팩으로 내렸다 (2026-08-24).
|
|
294
|
+
무료 다음 칸이 곧바로 158,000원이라 아무도 못 건넜다(판매 페이지까지 간 10명 중 0명).
|
|
295
|
+
자비스는 스킬팩을 산 사람에게 민다 — 그래야 계단이 생긴다.
|
|
296
|
+
★문안 정본은 skillpack/tail_copy.mjs.
|
|
297
|
+
* ★영문은 클로드킷(한국어 제품)이 아니라 스킬팩(영문 착지·US$8)으로 보낸다 — §D-2 와 같은 이유다. */
|
|
298
|
+
console.log(`${c.d}${G.꼬리1}${c[0]}`);
|
|
299
|
+
console.log(`
|
|
300
|
+
${c.b}${G.제품이름}${c[0]}${c.d} ${G.제품설명}${c[0]}`);
|
|
301
|
+
console.log(`${c.cy}${G.제품링크}${c[0]}`);
|
|
302
|
+
console.log(`${c.d}${G.제품꼬리}${c[0]}
|
|
303
|
+
`);
|
package/package.json
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "reborn-prompt",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "한 문장을 그대로 쓸 수 있는 프롬프트로 정리합니다 — 할 일·산출물·손댈 범위·끝나는 조건 네 칸 + 크레딧을 낭비하는 35가지 체크 + 이미 내린 결정 기억. 클로드·챗GPT·커서 어디에나.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"claude",
|
|
7
|
-
"claude-code",
|
|
8
|
-
"prompt",
|
|
9
|
-
"prompt-engineering",
|
|
10
|
-
"agent-skills",
|
|
11
|
-
"skill",
|
|
12
|
-
"chatgpt",
|
|
13
|
-
"cursor"
|
|
14
|
-
],
|
|
15
|
-
"homepage": "https://rebornlabs.kr/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
16
|
-
"bugs": {
|
|
17
|
-
"url": "https://mobility.rebornlabs.kr/cs"
|
|
18
|
-
},
|
|
19
|
-
"license": "MIT",
|
|
20
|
-
"author": "REBORN LABS",
|
|
21
|
-
"type": "module",
|
|
22
|
-
"bin": {
|
|
23
|
-
"reborn-prompt": "install.mjs"
|
|
24
|
-
},
|
|
25
|
-
"files": [
|
|
26
|
-
"install.mjs",
|
|
27
|
-
"skill/",
|
|
28
|
-
"skill/SKILL.en.md",
|
|
29
|
-
"README.md"
|
|
30
|
-
],
|
|
31
|
-
"engines": {
|
|
32
|
-
"node": ">=18"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "reborn-prompt",
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"description": "한 문장을 그대로 쓸 수 있는 프롬프트로 정리합니다 — 할 일·산출물·손댈 범위·끝나는 조건 네 칸 + 크레딧을 낭비하는 35가지 체크 + 이미 내린 결정 기억. 클로드·챗GPT·커서 어디에나.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"claude",
|
|
7
|
+
"claude-code",
|
|
8
|
+
"prompt",
|
|
9
|
+
"prompt-engineering",
|
|
10
|
+
"agent-skills",
|
|
11
|
+
"skill",
|
|
12
|
+
"chatgpt",
|
|
13
|
+
"cursor"
|
|
14
|
+
],
|
|
15
|
+
"homepage": "https://rebornlabs.kr/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://mobility.rebornlabs.kr/cs"
|
|
18
|
+
},
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"author": "REBORN LABS",
|
|
21
|
+
"type": "module",
|
|
22
|
+
"bin": {
|
|
23
|
+
"reborn-prompt": "install.mjs"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"install.mjs",
|
|
27
|
+
"skill/",
|
|
28
|
+
"skill/SKILL.en.md",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prompt-fix
|
|
3
|
+
description: เปลี่ยนคำสั่งสั้น ๆ ห้วน ๆ ประโยคเดียวให้เป็นพรอมต์ที่ก๊อปไปวางใช้ได้ทันที — เติม 4 หัวข้อ (สิ่งที่ต้องทำ · ผลงานที่ต้องการ · ขอบเขตที่แตะได้ · เงื่อนไขจบงาน) ค้นหาว่าใน 35 รูปแบบที่ทำให้เครดิตสูญเปล่า ข้อไหนตรงกับกรณีนี้จริง ๆ และจำการตัดสินใจที่ตกลงกันไปแล้ว ไม่ต้องยกขึ้นมาถกใหม่ในบทสนทนาใหม่ วางใช้ได้ทั้ง Claude, ChatGPT และ Cursor ใช้เมื่อผู้ใช้สั่งงานแบบสั้น ๆ ห้วน ๆ เมื่อผู้ใช้พูดว่า "ช่วยทำพรอมต์ให้หน่อย" หรือเมื่อต้องอธิบายเรื่องเดิมซ้ำแล้วซ้ำอีก
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# เครื่องมือจัดพรอมต์ (prompt-fix)
|
|
8
|
+
|
|
9
|
+
รับ **ประโยคสั้น ๆ** ที่ผู้ใช้ส่งมา แล้วเปลี่ยนเป็นพรอมต์ที่ก๊อปไปวางใช้ได้ทันที
|
|
10
|
+
|
|
11
|
+
## ใช้เมื่อไหร่
|
|
12
|
+
|
|
13
|
+
- เมื่อผู้ใช้สั่งแบบห้วน ๆ — "ช่วยทำให้ระบบชำระเงินใช้ได้หน่อย" "ช่วยจัดอันนี้ให้เรียบร้อยที"
|
|
14
|
+
- เมื่อผู้ใช้พูดว่า "ช่วยทำพรอมต์ให้หน่อย" "ทำอันนี้เป็นพรอมต์ให้หน่อย"
|
|
15
|
+
- **เมื่อต้องอธิบายเรื่องเดิมเป็นครั้งที่ 2** — นั่นคือสัญญาณว่าพรอมต์ยังว่างเปล่า
|
|
16
|
+
|
|
17
|
+
## ทำอะไรบ้าง
|
|
18
|
+
|
|
19
|
+
### ขั้นตอนที่ 1 — เติมให้ครบ 4 หัวข้อ
|
|
20
|
+
|
|
21
|
+
หัวข้อที่ขาด **ไม่ต้องถามกลับ ให้เติมด้วยค่าเริ่มต้นที่สมเหตุสมผล แล้วระบุให้ชัดว่าเติมอะไรไป**
|
|
22
|
+
(ถ้าเริ่มถามกลับ จำนวนข้อความก็จะเพิ่มขึ้นอีก — ซึ่งเป็นสิ่งที่สกิลนี้ตั้งใจป้องกัน)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
สิ่งที่ต้องทำ ทำอะไรได้แล้วถึงถือว่าเสร็จ (กริยาหนึ่งบรรทัด)
|
|
26
|
+
ผลงานที่ต้องการ รับผลงานในรูปแบบไหน (เฉพาะโค้ด / เฉพาะ diff / ไฟล์ / ไม่ต้องอธิบาย)
|
|
27
|
+
ขอบเขตที่แตะได้ แตะได้ถึงไหน (ระบุไฟล์ · โฟลเดอร์ + สิ่งที่ห้ามแตะ)
|
|
28
|
+
เงื่อนไขจบงาน เมื่อไหร่ที่ถือว่าเสร็จและหยุด (เทสต์ผ่าน / หน้าจอแสดง X)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### ขั้นตอนที่ 2 — ค้นหา 35 รูปแบบ
|
|
32
|
+
|
|
33
|
+
อ่าน `references/낭비35.md` แล้วเลือกข้อที่ตรงกับกรณีนี้
|
|
34
|
+
**ไม่ต้องไล่ให้ครบทุกข้อ** เอาเฉพาะข้อที่ตรงจริง ๆ ไม่เกิน 3 ข้อ แก้ทีละบรรทัดแล้วใส่เข้าไป
|
|
35
|
+
|
|
36
|
+
(รายการนี้เขียนเป็นภาษาเกาหลี แต่ไม่เป็นปัญหา — อ่านได้ ส่วนคำตอบถึงผู้ใช้ให้เขียนเป็นภาษาไทย)
|
|
37
|
+
|
|
38
|
+
### ขั้นตอนที่ 3 — โหลดการตัดสินใจที่ตกลงกันไปแล้ว
|
|
39
|
+
|
|
40
|
+
อ่าน `.claude/decisions.md` ที่รากของโปรเจกต์ (ถ้าไม่มีก็ไม่ต้องสร้าง ทำต่อไปได้เลย)
|
|
41
|
+
นำการตัดสินใจที่เขียนไว้ที่นั่น (เช่น `Postgres, not Mongo` · `pnpm, not npm`) มาใส่ในหัวข้อ **ข้อตั้งต้น** ของพรอมต์
|
|
42
|
+
|
|
43
|
+
ถ้ามีการตัดสินใจใหม่ที่ได้ข้อสรุปแน่นอนในระหว่างบทสนทนา **ให้เพิ่มลงในไฟล์นั้นหนึ่งบรรทัด**
|
|
44
|
+
นั่นคือกลไกที่ทำให้บทสนทนาครั้งหน้าไม่ต้องตัดสินใจเรื่องเดิมซ้ำ
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
<!-- .claude/decisions.md -->
|
|
48
|
+
- Postgres, not Mongo
|
|
49
|
+
- pnpm, not npm
|
|
50
|
+
- Tailwind, no CSS modules
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### ขั้นตอนที่ 4 — ส่งออกในรูปแบบที่วางที่ไหนก็ได้
|
|
54
|
+
|
|
55
|
+
ผลลัพธ์คือ **พรอมต์ข้อความธรรมดาหนึ่งชุด** ห้ามใส่ไวยากรณ์เฉพาะของ Claude Code
|
|
56
|
+
ต้องวางใน ChatGPT · Cursor · Gemini ที่ไหนก็ใช้ได้เลย
|
|
57
|
+
|
|
58
|
+
## รูปแบบผลลัพธ์
|
|
59
|
+
|
|
60
|
+
````
|
|
61
|
+
```
|
|
62
|
+
[ข้อตั้งต้น]
|
|
63
|
+
- (บรรทัดที่มาจาก decisions.md — ถ้าไม่มีให้ตัดหัวข้อนี้ทิ้งทั้งหัวข้อ)
|
|
64
|
+
|
|
65
|
+
[สิ่งที่ต้องทำ]
|
|
66
|
+
...
|
|
67
|
+
|
|
68
|
+
[ผลงานที่ต้องการ]
|
|
69
|
+
...
|
|
70
|
+
|
|
71
|
+
[ขอบเขตที่แตะได้]
|
|
72
|
+
... / สิ่งที่ห้ามแตะ: ...
|
|
73
|
+
|
|
74
|
+
[เงื่อนไขจบงาน]
|
|
75
|
+
...
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
จุดที่แก้ — เฉพาะข้อที่ตรงจริงใน 35 ข้อ
|
|
79
|
+
· #12 ยังไม่ได้ตัดสินใจว่าจะบันทึกลงไฟล์หรือแสดงบนหน้าจอ → ตั้งเป็น "เฉพาะ diff ไม่ต้องอธิบาย"
|
|
80
|
+
· #15 ไม่มีเงื่อนไขจบงาน → ตั้งเป็น "จบเมื่อชำระด้วยบัตรผ่านได้จริง"
|
|
81
|
+
````
|
|
82
|
+
|
|
83
|
+
## สิ่งที่ไม่ทำ
|
|
84
|
+
|
|
85
|
+
- **ไม่ถามกลับ** เติมด้วยค่าเริ่มต้น แล้วแสดงเฉพาะสิ่งที่เติมไป
|
|
86
|
+
- **ไม่ไล่ครบทั้ง 35 ข้อ** เอาเฉพาะข้อที่ตรง ไม่เกิน 3 ข้อ
|
|
87
|
+
- **ไม่รันพรอมต์แทน** จะรันก็ต่อเมื่อผู้ใช้บอกว่า "รันเลย" เท่านั้น
|
|
88
|
+
- **ไม่แต่งไฟล์ที่ไม่มีอยู่จริงขึ้นมา** พาธที่เขียนในหัวข้อขอบเขตต้องเป็นของที่มีอยู่จริงเท่านั้น
|
|
89
|
+
|
|
90
|
+
## อ้างอิง
|
|
91
|
+
|
|
92
|
+
- รายการ 35 รูปแบบ: `references/낭비35.md`
|
|
93
|
+
- จัดทำโดย: REBORN LABS · MIT · https://rebornlabs.kr/th-th/prompt?utm_source=installer&utm_medium=cli&utm_campaign=prompt
|