- 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)
76 lines
2.9 KiB
JavaScript
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();
|