openpress-init(调用名 /create-press)是 OpenPress 框架的初始化设置技能,属于低自由度的工作流。它只负责搭建或扩展项目结构,不负责撰写文档正文——正文写作与设计由下游技能完成。整个过程分为六个阶段。
一、环境预检。依次运行 node -v、npm -v、npx -v,要求 Node 版本 ≥20。若缺少 node、npm 或 npx,则停止并提示用户安装 Node.js LTS 后重新打开终端再运行预检;若 Node 低于 20,同样停止并提示升级后重跑。
二、分支检测。通过检测 press/index.tsx 是否存在并包含 <Workspace 来判断:文件不存在则为分支 A(引导全新工作区),已包含 <Workspace> 则为分支 B(向已有工作区添加新的 Press)。若 press/index.tsx 存在但其子元素未被 <Workspace> 包裹(旧版 v0.x 结构),则提示用户先运行 npx open-press upgrade,然后重新调用 /create-press。
分支 A:引导全新工作区。A.1 目标检查:使用用户提供的目标路径,仅当用户明确要求当前目录时才使用 .(点号)。CLI 会自动拒绝非空目标目录;仅有 .git/、.gitignore、.gitkeep 或 .DS_Store 是可以的。若目标目录含有实质内容,需用户先清理,因为没有 --force 参数。
A.2 一次性信息采集。必需项包括:文档类型(提案 / 白皮书 / 论文 / 教学笔记 / 书籍 / 幻灯片 / 社交活动等)、受众、主要语言、标题(写入 <Press title="...">)、页面几何。多数文档类型对应明显预设:报告 / 论文 / 书籍默认 a4(可改为 us-letter、a5),幻灯片默认 slide-16-9(可改为 slide-4-3),社交帖默认 social-square(可改为 1080×1350 的故事卡片)。混合型(如 A4 报告 + 16:9 主视觉)使用多 Press 工作区,每种几何一个 Press。自定义几何需提供带单位(mm / cm / in / pt / pc / px)的宽高,构建 { id, label, width, height } 对象。此阶段不询问副标题 / 组织 / 作者 / 版本 / 页脚——这些属于 Cover JSX 的渲染文本,不是 Press 属性。
A.3 下游技能交接。OpenPress 不拥有起始模板或模板选择,按顺序解析下一个负责方:若用户指定外部技能仓库,则在 init 后运行 npx -y skills@latest add <owner/repo> 并读取其 SKILL.md;若用户想要一个已安装的已知流程,则 init 后路由到该技能;若无适用技能,则在确认用户想要空白工作区后仅创建最小化的 press/index.tsx。
A.4 初始化命令:npx @open-press/cli init <target> --title "<title>"。仅当用户未提供标题时才省略 --title。init 流程还会自动安装框架的 agent 技能。A.5 验证:在新工作区内运行 npm run build 和 npm run dev -- --dry-run,交接前暴露任何失败。A.6 交接报告包含:目标路径、工作区名称(若在 <Workspace name="..."> 中设置)、已接线的 Press 标题与页面、选定的下一负责技能、下一步可编辑路径(press/index.tsx、press/chapters/、press/theme/、press/components/)、下一负责技能(写作 → openpress-writing,设计 → openpress-design,部署 → openpress-deploy)。
分支 B:向已有工作区添加 Press。B.1 读取工作区:打开 press/index.tsx,解析 <Workspace> 块以识别现有 Press 子节点及其 slug、页面几何和源码根。若只有一个 Press 且没有 slug 属性,则该工作区处于隐式单 Press 模式;添加第二个 Press 会将项目升级为多 Press,现有 Press 也需要一个 slug(用文档类型作为 slug,如 proposal)。B.2 一次性采集:slug(URL 段与每个 Press 的目录名,形状为 a-z、0-9、连字符,需用户明确提供、不自动生成)、title、页面几何(同分支 A)、源码布局(该 Press 使用自己的 MDX 根 press/<slug>/chapters/ 还是共享已注册的现有源码,默认使用自己的根)。仅当用户提及时才询问可选跟进项:驱动该 Press 起始内容的领域技能。
B.3 修改 press/index.tsx:在 <Workspace> 块中新增 <Press slug="..." title="..." page="..." sources={[ mdxSource({ id: "<slug>", preset: "section-folders", root: "<slug>/chapters" }) ]}> 子节点。保留现有子节点,添加时绝不重排或重写同级节点。若工作区第一个 Press 没有 slug(隐式单 Press 模式),在同一次编辑中为其补上合适的 slug,使路由模型一致。B.4 创建每个 Press 的目录结构:mkdir -p press/<slug>/chapters/01-intro/content 与 mkdir -p press/<slug>/components。除非用户明确要求每个 Press 单独覆盖主题,否则主题共享于 press/theme/;若需覆盖,则在 <Press> 属性中添加 theme="./<slug>/theme" 并执行 mkdir press/<slug>/theme。B.5 下游技能交接同分支 A。B.6 验证:运行 npm run build,确认两个 Press 文档都能渲染(构建输出的数量应与 press/index.tsx 中 <Press> 子节点数量一致)。B.7 交接报告包含:新 slug、新 Press 标题与页面、创建的目录结构、先前 Press 是否被补加 slug(true / false)、下一步可编辑路径、下一负责技能。
该技能明确禁止:不在此技能中撰写初稿;除非预检失败否则不解释 Node/npm;默认路径中不使用 nvm、Homebrew、pnpm 或全局安装;在分支 A 的预检、目标与信息采集确定之前不运行 init;在分支 B 添加新 Press 时不修改 press/index.tsx 的同级节点;不手动编辑生成产物(public/openpress/、dist-react/);不询问副标题 / 组织 / 作者(这些属于 Cover JSX)。
本页资料未提供该技能的具体收费信息、许可条款、支持平台或版本兼容性细节。