CtrlK
BlogDocsLog inGet started
Tessl Logo

project-ops-skill

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

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

项目操作指南

工具清单

工具职责只读
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 是随机生成的,靠猜测传入会操作错误的项目。

Repository
itsablabla/openloaf-web
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.