/**
 * scripts/import-all-skills.cjs
 * 批量插入 46 个 skill 到 aipro.db
 * 用法：node scripts/import-all-skills.cjs
 */
const { DatabaseSync } = require('node:sqlite')
const path = require('path')

const DB_PATH = process.env.DB_PATH || path.join(__dirname, '../data/aipro.db')
console.log('[import-all-skills] DB:', DB_PATH)

const db = new DatabaseSync(DB_PATH)
db.exec('PRAGMA journal_mode = WAL')
db.exec('PRAGMA foreign_keys = ON')

// 与 src/utils/id.js 保持一致的 ID 生成器
function genId(prefix) {
  const t = Date.now().toString(36)
  const r = Math.random().toString(36).slice(2, 7)
  return `${prefix}_${t}${r}`.slice(0, prefix.length + 1 + 12)
}

const NODE_ID   = 'cat_28c6uuz92pe'
const NODE_PATH = '12.0 基础支撑 / 全集团 / 12.2 流程管理'
const SOURCE    = 'create'
const STATUS    = 'published'
const CREATOR_NAME  = '冯周充'
const CREATOR_EMAIL = '494161546@qq.com'

const skills = [
  { name: 'agent-browser',                description: 'Browser automation for AI agents. 用于打开网站、填写表单、点击按钮、截图、爬取数据、测试Web应用、自动化浏览器任务。' },
  { name: 'ai-integration-best-practices', description: '前端项目集成大模型API的最佳实践与避坑指南。包含API Key管理、CORS处理、响应解析、降级策略等核心经验。' },
  { name: 'brainstorming',                 description: '创建任何新功能前必须使用。通过澄清问题、提出方案、呈现设计来探索用户意图和需求，确保先设计再编码。' },
  { name: 'cainiaozyWork-performance',     description: '菜鸟KA绩效OKR制定与自评生成助手。支持draft/review/condense/diagnose四种模式。' },
  { name: 'canvas-design',                 description: '创建精美的视觉设计作品（PNG/PDF），适用于海报、艺术创作等静态设计。' },
  { name: 'create-agent',                  description: '创建专门的子代理用于特定AI任务。用于创建新的子代理、设置任务专用代理或配置专业AI工作流。' },
  { name: 'create-skill',                  description: '引导创建有效的Agent Skills。Skills是教代理如何执行特定任务的Markdown文件。' },
  { name: 'deploy-flowinsight',            description: 'FlowInsight项目一键构建部署到Cloudflare Pages。自动检测并安装所有环境，零配置完成部署。' },
  { name: 'docx',                          description: '高级Word文档工具包：内容提取、文档生成、页面操作和交互式表单处理。' },
  { name: 'drawio-swimlane',               description: '绘制流程图、泳道图、跨部门流程图。输出标准draw.io XML文件，通过嵌入式iframe在浏览器中直接渲染和编辑。' },
  { name: 'find-skills',                   description: '帮助用户发现和安装agent skills。当用户寻找可能存在的可安装skill时使用。' },
  { name: 'flow-diagnostic-report',        description: '用华为流程管理方法论（IPD/LTC/ITR + L1-L6流程分级 + AS-IS/TO-BE）+ APQC PCF + 5Why/鱼骨图根因分析，生成标准化诊断报告。' },
  { name: 'flowchart-designer',            description: '帮助员工将流程描述转化为可视化流程图。适用于泳道图、跨职能图、角色分工、业务梳理场景。' },
  { name: 'frontend-design',               description: '创建有设计感的、生产级前端界面。生成创意、精美的代码，避免通用AI美学。' },
  { name: 'frontend-slides',               description: '创建动画丰富的HTML演示文稿，或将PowerPoint文件转换为Web格式。' },
  { name: 'james-skill',                   description: '詹老师（冯周充/James/阿充）的思维框架与产品方法论。包含5个核心心智模型、7条决策启发式。' },
  { name: 'notion-infographic',            description: '批量生成Notion风格的手绘信息图系列。适合将文章和笔记转换为社交媒体分发的视觉内容。' },
  { name: 'nuwa-skill',                    description: '女娲造人：输入人名/主题，自动深度调研→思维框架提炼→生成可运行的人物Skill。' },
  { name: 'okr-writer',                    description: '专业OKR撰写助手。根据用户口述内容和补充材料，生成结构严谨、用词精准、指标量化的OKR。' },
  { name: 'pdf',                           description: '高级PDF文档工具包：内容提取、文档生成、页面操作和交互式表单处理。' },
  { name: 'pptx',                          description: 'PowerPoint文档工具包：幻灯片生成、内容修改和演示分析。' },
  { name: 'prd-writer',                    description: '专业PRD（产品需求文档）编写助手。按标准化结构输出可直接落地的PRD文档。' },
  { name: 'remotion',                      description: 'Remotion最佳实践 - 用React创建视频内容。' },
  { name: 'skill-creator',                 description: '创建新skills、修改和改进现有skills、测量skill性能。支持从零创建、优化和评估。' },
  { name: 'skill-evaluator',               description: '从规格、触发、内容、可维护性四个维度评测Agent Skills，输出打分报告和优先修复建议。' },
  { name: 'skills',                        description: 'Word文档（.docx）操作技能：创建、读取、编辑和处理Word文档，支持格式化、目录、页码等。' },
  { name: 'strategic-doc-writer',          description: '撰写战略级方案文档：平台升级方案、能力演进规划、项目战略建议。区分谈方向vs定方案阶段。' },
  { name: 'superpowers-bi-scraper',        description: '从BI看板批量提取分页表格数据。通过Chrome DevTools Protocol连接浏览器，自动化导出CSV/Excel。' },
  { name: 'superpowers-brainstorming',     description: '创建任何新功能前必须使用。通过逐个澄清问题、提出方案来探索用户意图和需求。' },
  { name: 'superpowers-browser',           description: '浏览网页、截图、提取内容、填写表单、点击按钮。通过chrome-devtools MCP操作已登录Chrome浏览器。' },
  { name: 'superpowers-debugging',         description: '遇到bug/测试失败/异常行为时使用。按系统化四阶段流程调试：观察→假设→验证→修复。' },
  { name: 'superpowers-doc-digest',        description: '将文档（PDF/DOCX/TXT/图片）总结为专业SVG信息图。适用于文档总结、会议纪要可视化。' },
  { name: 'superpowers-docx',              description: 'Word文档操作：创建、读取、编辑.docx文件，支持格式化、目录、页码、信头等专业排版。' },
  { name: 'superpowers-executing-plans',   description: '在独立会话中执行已有实现计划，带有审查检查点。' },
  { name: 'superpowers-finish-branch',     description: '实现完成后决定如何集成：merge、PR或清理。引导开发工作的完成流程。' },
  { name: 'superpowers-parallel-agents',   description: '面对2+个独立任务时，并行分配给多个agent处理，无共享状态或顺序依赖。' },
  { name: 'superpowers-receive-review',    description: '接收代码审查反馈时使用。需要技术严谨和验证，而非盲目实现。' },
  { name: 'superpowers-request-review',    description: '完成任务、实现主要功能或合并前使用，验证工作是否满足需求。' },
  { name: 'superpowers-subagent-dev',      description: '在当前会话中执行具有独立任务的实现计划。' },
  { name: 'superpowers-tdd',               description: '实现任何功能或修复bug前使用。测试驱动开发：先写测试再写实现代码。' },
  { name: 'superpowers-verification',      description: '在声称工作完成之前使用。运行验证命令并确认输出，证据先于断言。' },
  { name: 'superpowers-worktrees',         description: '开始需要隔离的功能开发时使用。创建隔离的git worktrees，智能选择目录。' },
  { name: 'superpowers-writing-plans',     description: '有规格或需求时使用。在编码之前编写多步骤任务的实现计划。' },
  { name: 'superpowers-writing-skills',    description: '创建新skills、编辑现有skills或验证skills是否可部署时使用。' },
  { name: 'wechat-article-writer',         description: '根据核心观点或素材创作公众号文章，输出可一键复制的HTML格式。无机器味，联网验证论点。' },
  { name: 'xlsx',                          description: '高级电子表格工具包：内容提取、文档生成、数据操作和公式处理。' },
]

const stmt = db.prepare(`
  INSERT OR IGNORE INTO skills
    (id, name, description, node_id, node_path, source, status, creator_name, creator_email)
  VALUES
    (?, ?, ?, ?, ?, ?, ?, ?, ?)
`)

let inserted = 0
let skipped  = 0

for (const s of skills) {
  const id = genId('skl')
  const changes = stmt.run(id, s.name, s.description, NODE_ID, NODE_PATH, SOURCE, STATUS, CREATOR_NAME, CREATOR_EMAIL)
  if (changes.changes > 0) {
    inserted++
    console.log(`  ✓ [${inserted.toString().padStart(2, '0')}] ${s.name}`)
  } else {
    skipped++
    console.log(`  - skip (already exists): ${s.name}`)
  }
}

// 验证
const total = db.prepare(`SELECT COUNT(*) as cnt FROM skills WHERE node_id = ?`).get(NODE_ID)
console.log('\n========================================')
console.log(`插入成功：${inserted} 条`)
console.log(`已存在跳过：${skipped} 条`)
console.log(`node_id=${NODE_ID} 的 skills 总计：${total.cnt} 条`)
console.log('========================================')

db.close()
console.log('✅ 完成')
