chiwaa 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/bin/chiwaa.js +56 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ npx chiwaa deploy
|
|
|
19
19
|
| `chiwaa versions` | 남아 있는 버전 |
|
|
20
20
|
| `chiwaa rollback [버전]` | 한 단계 전 또는 지정 버전으로 되돌리기 |
|
|
21
21
|
| `chiwaa db` · `db on` · `db create <표>` · `db rows <표>` | 사이트 DB(문의·방명록 등 글 저장) — 켜기·표 만들기·글 보기 |
|
|
22
|
+
| `chiwaa agent` | AI 도구용 안내(AGENTS.md·CLAUDE.md) 만들기 — 처음 deploy 때 자동 |
|
|
22
23
|
| `chiwaa whoami` / `logout` | 계정 확인 / 로그아웃 |
|
|
23
24
|
|
|
24
25
|
## AI 도구(Claude Code·Codex·Cursor)에서
|
package/bin/chiwaa.js
CHANGED
|
@@ -27,7 +27,7 @@ const OUTPUTS = [
|
|
|
27
27
|
["parcel", "dist"],
|
|
28
28
|
];
|
|
29
29
|
// 그대로 올리는 사이트에서 빼는 것
|
|
30
|
-
const SKIP = new Set([".git", "node_modules", ".chiwaa.json", ".DS_Store", "Thumbs.db", ".vercel", ".netlify"]);
|
|
30
|
+
const SKIP = new Set([".git", "node_modules", ".chiwaa.json", ".DS_Store", "Thumbs.db", ".vercel", ".netlify", "AGENTS.md", "CLAUDE.md"]);
|
|
31
31
|
|
|
32
32
|
const c = {
|
|
33
33
|
dim: (s) => (TTY ? `\x1b[2m${s}\x1b[0m` : s),
|
|
@@ -307,9 +307,61 @@ function linkSite(dir, site) {
|
|
|
307
307
|
if (site.source === "github")
|
|
308
308
|
fail(`${site.domain} 은 깃허브(${site.repo})로 배포하는 사이트입니다. CLI 로는 다른 이름을 쓰세요: --name <새 이름>`);
|
|
309
309
|
fs.writeFileSync(path.join(dir, LINK_FILE), JSON.stringify({ site: site.name }, null, 2) + "\n");
|
|
310
|
+
writeAgentDoc(dir, site.name, false);
|
|
310
311
|
return site;
|
|
311
312
|
}
|
|
312
313
|
|
|
314
|
+
// ---------- AGENTS.md (AI 코딩 도구가 스스로 읽는 안내) ----------
|
|
315
|
+
// Codex·Cursor 등은 AGENTS.md, Claude Code 는 CLAUDE.md 를 읽는다. 사용자가 쓴 내용은 두고 chiwaa 구간만 넣거나 바꾼다.
|
|
316
|
+
const AGENT_START = "<!-- chiwaa:start -->";
|
|
317
|
+
const AGENT_END = "<!-- chiwaa:end -->";
|
|
318
|
+
|
|
319
|
+
function agentSection(name) {
|
|
320
|
+
return `${AGENT_START}
|
|
321
|
+
## chiwaa 배포 (이 폴더는 ${name}.chiwaa.com 사이트)
|
|
322
|
+
|
|
323
|
+
- 배포: \`npx chiwaa deploy -y\` — 끝나면 주소가 나온다. 잘못 올렸으면 \`npx chiwaa rollback\`.
|
|
324
|
+
- 이 폴더는 \`.chiwaa.json\` 으로 사이트가 정해져 있다. 다른 이름(--name)으로 올리지 않는다.
|
|
325
|
+
- 정적 사이트만 된다(HTML·CSS·JS, Vite·React·Vue·Astro·Next export 빌드). PHP·Express 같은 서버 코드는 안 된다.
|
|
326
|
+
- 글 저장(문의·방명록·게시판)은 사이트 DB: \`npx chiwaa db on\` → \`npx chiwaa db create <표> --read public|owner --write public|owner\`.
|
|
327
|
+
- 문의·신청서처럼 개인정보가 든 표는 반드시 \`--read owner\`. 사이트에서 안 읽힌다고 public 으로 바꾸지 않는다.
|
|
328
|
+
- 방문자 글은 화면에 \`textContent\` 로만 넣는다. 비밀번호는 \`<input type="password">\` 로 받는다.
|
|
329
|
+
- 로그인 토큰(~/.chiwaa/config.json, CHIWAA_TOKEN)은 출력하거나 파일·저장소에 적지 않는다.
|
|
330
|
+
- 자세한 규칙·예시: https://chiwaa.kr/llms.txt — 처음 작업하거나 헷갈리면 먼저 읽는다.
|
|
331
|
+
${AGENT_END}`;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// 바뀐 파일 이름 목록을 돌려준다
|
|
335
|
+
function writeAgentDoc(dir, name, loud) {
|
|
336
|
+
const changed = [];
|
|
337
|
+
const agents = path.join(dir, "AGENTS.md");
|
|
338
|
+
const block = agentSection(name);
|
|
339
|
+
let text = fs.existsSync(agents) ? fs.readFileSync(agents, "utf8") : "";
|
|
340
|
+
const re = new RegExp(`${AGENT_START}[\\s\\S]*?${AGENT_END}`);
|
|
341
|
+
const next = re.test(text) ? text.replace(re, block) : (text ? `${text.replace(/\s*$/, "")}\n\n${block}\n` : `${block}\n`);
|
|
342
|
+
if (next !== text) {
|
|
343
|
+
fs.writeFileSync(agents, next);
|
|
344
|
+
changed.push("AGENTS.md");
|
|
345
|
+
}
|
|
346
|
+
// Claude Code 는 CLAUDE.md 를 읽는다 — 없을 때만 AGENTS.md 를 불러오는 한 줄짜리를 만든다
|
|
347
|
+
const claude = path.join(dir, "CLAUDE.md");
|
|
348
|
+
if (!fs.existsSync(claude)) {
|
|
349
|
+
fs.writeFileSync(claude, "@AGENTS.md\n");
|
|
350
|
+
changed.push("CLAUDE.md");
|
|
351
|
+
} else if (!/@AGENTS\.md|chiwaa:start/.test(fs.readFileSync(claude, "utf8"))) {
|
|
352
|
+
fs.appendFileSync(claude, "\n@AGENTS.md\n");
|
|
353
|
+
changed.push("CLAUDE.md");
|
|
354
|
+
}
|
|
355
|
+
if (changed.length) console.log(c.dim(`AI 도구용 안내를 ${changed.join("·")} 에 적었습니다(사이트에는 올라가지 않음).`));
|
|
356
|
+
else if (loud) console.log("AI 도구용 안내가 이미 최신입니다(AGENTS.md).");
|
|
357
|
+
return changed;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
async function agent(args) {
|
|
361
|
+
const name = await siteName(args);
|
|
362
|
+
writeAgentDoc(process.cwd(), name, true);
|
|
363
|
+
}
|
|
364
|
+
|
|
313
365
|
// ---------- deploy ----------
|
|
314
366
|
async function deploy(args) {
|
|
315
367
|
const dir = path.resolve(args._[1] || ".");
|
|
@@ -509,6 +561,8 @@ const HELP = `chiwaa ${VERSION} — chiwaa.kr 에 사이트를 바로 올립니
|
|
|
509
561
|
chiwaa db rules <표> 읽기·쓰기 권한 바꾸기
|
|
510
562
|
chiwaa db rows <표> 저장된 글 보기 (--page 2)
|
|
511
563
|
chiwaa db code <표> 사이트에 붙일 코드 다시 보기
|
|
564
|
+
chiwaa agent AI 도구용 안내(AGENTS.md·CLAUDE.md)를 만들거나 새로 고침
|
|
565
|
+
(처음 deploy 할 때 자동으로 만든다)
|
|
512
566
|
chiwaa whoami 로그인한 계정
|
|
513
567
|
chiwaa logout 로그아웃
|
|
514
568
|
|
|
@@ -520,7 +574,7 @@ async function main() {
|
|
|
520
574
|
const cmd = args._[0];
|
|
521
575
|
if (args.version) return console.log(VERSION);
|
|
522
576
|
if (args.help || !cmd || cmd === "help") return console.log(HELP);
|
|
523
|
-
const cmds = { deploy, login, list, ls: list, versions, rollback, db, whoami, logout };
|
|
577
|
+
const cmds = { deploy, login, list, ls: list, versions, rollback, db, agent, whoami, logout };
|
|
524
578
|
if (!cmds[cmd]) fail(`모르는 명령입니다: ${cmd}\n\n${HELP}`);
|
|
525
579
|
await cmds[cmd](args);
|
|
526
580
|
}
|