project-ops-skill

star 66

当用户要对 OpenLoaf 的"项目"这一实体做创建、打开、切换、移动、删除、改名时触发。典型说法"新建项目"、"把 ~/code/foo 加进来"、"列出所有项目"。**不用于**:项目内文件读写(→直接用 Read/Edit/Write)、讨论"项目规划 / 需求文档"(→直接回答)、纯 Git 日常操作(→`Bash`)。

OpenLoaf By OpenLoaf schedule Updated 4/22/2026

name: project-ops-skill description: > 当用户要对 OpenLoaf 的"项目"这一实体做创建、打开、切换、移动、删除、改名时触发。典型说法"新建项目"、"把 ~/code/foo 加进来"、"列出所有项目"。不用于:项目内文件读写(→直接用 Read/Edit/Write)、讨论"项目规划 / 需求文档"(→直接回答)、纯 Git 日常操作(→Bash)。 tools: [ProjectQuery, ProjectMutate]

项目操作指南

工具清单

工具 职责 只读
ProjectQuery 查询项目树 / 单个项目详情(mode: list / get
ProjectMutate 创建 / 更新 / 移动 / 删除项目(action: create / update / move / remove
Read / Glob / Grep 项目内文件读取与搜索(常驻工具)
Edit / Write 项目内文件编辑 / 新建(常驻工具)
Bash 在项目根执行命令(Git 等,常驻工具)

加载Read / Glob / Grep / Edit / Write / Bash 为核心工具,始终可用;ProjectQuery / ProjectMutate 调用前须先 ToolSearch(names: "ProjectQuery,ProjectMutate") 激活 schema。

决策流程

用户想操作文件
├─ 已在项目上下文? → 直接用文件工具
└─ 不在项目上下文?
   ├─ 明确要创建项目 → ProjectMutate { action: "create" }
   └─ 随口说"帮我写个脚本" → 系统自动创建临时项目(见下文)

ProjectQuery

list — 项目树 + 扁平列表:ProjectQuery { mode: "list" }

get — 单个项目详情(省略 projectId 时用当前上下文):ProjectQuery { mode: "get" }

ProjectMutate

create — 核心示例

ProjectMutate { action: "create", title: "Q2 Marketing", folderName: "q2-marketing", icon: "📊", enableVersionControl: true }

指向已有目录 — 用户给出裸路径时,你必须转换为 file:// 协议 URI:

  • 用户说 /Users/user/code/repo → 你传 rootUri: "file:///Users/user/code/repo"
  • 用户说 ~/my-project → 先展开 ~,再拼 file:///Users/user/my-project

folderName 决策

  • 用户指定了文件夹名 → 用用户的
  • 标题是中文或含特殊字符 → 必须指定英文 folderName(磁盘不友好的字符会出问题)
  • 标题是简洁英文 → 可省略,系统自动用 title 生成

enableVersionControl 决策

  • 默认 true,适合代码项目
  • 纯文档、笔记、临时草稿 → 设 false(避免无意义的 Git 初始化)
  • 用户导入已有 Git 仓库(有 rootUri)→ 设 false(仓库已有 .git

update / move / remove

updateProjectMutate { action: "update", projectId: "xxx", title: "新名称", icon: "🚀" } moveProjectMutate { action: "move", projectId: "xxx", targetParentProjectId: "parent-id" }null = 移到顶层) removeProjectMutate { action: "remove", projectId: "xxx" }仅摘除注册记录,不碰磁盘文件。用户的代码和数据不可逆,磁盘由用户主权管理。

临时项目

用户在全局对话(非项目上下文)中要求文件操作时,系统自动创建临时项目于 ~/.openloaf/temp/,用户无需感知。

属性 正式项目 临时项目
创建方式 ProjectMutate { action: "create" } 系统自动创建
磁盘位置 用户指定或默认目录 ~/.openloaf/temp/{sessionId}/
生命周期 用户手动移除 可提升为正式项目,或随会话清理

端到端流程

探索项目ProjectQuery { mode: "get" }Glob { pattern: "**/*" }GrepRead

创建项目ProjectQuery { mode: "list" }ProjectMutate { action: "create", ... }Write 写初始文件 → Bash 初始化依赖

常见错误与防范

rootUri 格式错误 — 必须 file:// 协议如 file:///Users/user/project,不能用裸路径。跨平台 URI 标准要求协议前缀,裸路径会导致解析失败。记住:三个斜杠(file:///)= 协议 file:// + 根路径 /。用户如果想访问项目目录之外的磁盘路径,引导他创建一个新项目指向该目录——沙箱无法越界。

混淆 remove 与删除remove 只摘注册不碰磁盘,防止误删用户代码。如果用户确实要删磁盘文件,需显式用 Bash rm -rf

忘记先查询 — 变更前先 ProjectQuery 确认 projectId 和当前结构。projectId 是随机生成的,靠猜测传入会操作错误的项目。

Install via CLI
npx skills add https://github.com/OpenLoaf/OpenLoaf --skill project-ops-skill
Repository Details
star Stars 66
call_split Forks 7
navigation Branch main
article Path SKILL.md
More from Creator