bookworm-smart-assistant/scripts/bookworm-context-init.js
Bookworm Admin b7a8e29d21 release: v6.7.0 - OTA E2E test release
- VERSION file as authoritative version source
- export.mjs reads VERSION with package.json fallback
- bw-ota.ps1 DryRun mode for safe testing
- auto-setup.ps1 bumped to v3.2.0 (Phase 8 OTA)
2026-04-27 17:59:44 +08:00

76 lines
2.9 KiB
JavaScript

#!/usr/bin/env node
/**
* bookworm-context-init.js · R3 配套 CLI · 2026-04-26
*
* 用法: node ~/.claude/scripts/bookworm-context-init.js [target-dir] [--force]
*
* 在指定目录 (默认 cwd) 生成 .bookworm-context.md 模板.
* 已存在则不覆盖 (除非 --force).
*/
'use strict';
const fs = require('fs');
const path = require('path');
const args = process.argv.slice(2);
const force = args.includes('--force');
const target = args.find(a => !a.startsWith('--')) || process.cwd();
const FILE = path.join(target, '.bookworm-context.md');
const TEMPLATE = '<!-- max-lines: 100 -->\n' +
'# ' + path.basename(target) + ' · 项目稳定上下文\n\n' +
'> 本文件由 R3 项目级上下文自动注入. 每会话首次在该项目根目录提交 prompt 时, 头 100 行注入到 Claude 的 additionalContext.\n' +
'> 内容应是**长期稳定**的项目事实, 而非动态进度 (动态进度走 .bookworm-progress.md, 由 R1 自动生成).\n' +
'> 通过文件首行 \`<!-- max-lines: N -->\` 可调整注入行数 (上限 500).\n\n' +
'## 一、项目身份\n\n' +
'- **类型**: [Web App / CLI / 库 / 服务 / ...]\n' +
'- **技术栈**: [Next.js + FastAPI + PostgreSQL]\n' +
'- **部署目标**: [本地 / Docker / 阿里云 ECS / Vercel]\n' +
'- **生产 URL**: [https://example.com]\n' +
'- **代码仓库**: [GitHub/Gitea URL]\n\n' +
'## 二、关键路径速查\n\n' +
'| 类别 | 路径 | 说明 |\n' +
'|------|------|------|\n' +
'| 入口 | \`src/index.ts\` | 主入口 |\n' +
'| 配置 | \`config/\` | 环境配置 |\n' +
'| API | \`packages/api/\` | 后端 |\n' +
'| 前端 | \`packages/web/\` | UI |\n\n' +
'## 三、架构要点\n\n' +
'- [核心模块 1]: [职责]\n' +
'- [核心模块 2]: [职责]\n' +
'- [边界约定]: [模块间契约/不可跨界的事]\n\n' +
'## 四、已知陷阱 (重要!)\n\n' +
'- ⚠️ [踩过的坑 1, 给后续会话避雷]\n' +
'- ⚠️ [踩过的坑 2]\n' +
'- ⚠️ [反直觉的设计决策, 防止后续会话误改]\n\n' +
'## 五、常用命令\n\n' +
'\`\`\`bash\n' +
'# 开发\n' +
'pnpm dev\n\n' +
'# 构建\n' +
'pnpm build\n\n' +
'# 测试\n' +
'pnpm test\n' +
'\`\`\`\n\n' +
'## 六、当前阶段\n\n' +
'- **里程碑**: [当前在做什么]\n' +
'- **下一步**: [接下来要做什么]\n' +
'- **依赖/阻塞**: [外部依赖]\n\n' +
'---\n' +
'*维护提示: 信息变化时手动更新本文件; 动态进度由 R1 写入 \`.bookworm-progress.md\`; 大型 ad-hoc 调研结论建议存入 \`~/.claude/projects/.../memory/\`.*\n';
function main() {
if (!fs.existsSync(target)) {
console.error('[init] target dir not exist:', target);
process.exit(1);
}
if (fs.existsSync(FILE) && !force) {
console.log('[init] already exists (use --force to overwrite):', FILE);
return;
}
fs.writeFileSync(FILE, TEMPLATE, 'utf8');
console.log('[init] OK:', FILE);
}
main();