{"owner":"graphif","repo":"project-graph","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"## Project Background\n\nGithub Repository: `graphif/project-graph`\n\nProject Graph 是一款桌面级节点图绘制工具，用于头脑风暴、知识图谱、项目规划等场景的可视化思考。\n\n## Tech-stack\n\n- React (TypeScript) + Tauri (Rust)\n- Vite + pnpm (monorepo) + Nx\n- Canvas 2D\n- shadcn/ui + Tailwind CSS + 自研子窗口系统\n- Jotai\n\nRust 主要负责本地文件等系统能力；绝大部分业务逻辑在前端。\n\n## Structure\n\n### Application\n\n- Frontend Vite project: `/app`\n- Rust / Tauri: `/app/src-tauri`\n- UI components: `/app/src/components`\n- i18n locales: `/app/src/locales`\n- React state (Jotai 等): `/app/src/state.tsx` 及附近\n\n### `app/src/core`（核心业务）\n\n| 路径                              | 职责                                                                            |\n| --------------------------------- | ------------------------------------------------------------------------------- |\n| `Project.tsx`                     | 单个工程/项目实例的入口与生命周期                                               |\n| `Tab*.ts(x)` / `TabWorkspace.tsx` | 标签页与工作区                                                                  |\n| `loadAllServices.tsx`             | 注册/加载全部服务                                                               |\n| `algorithm/`                      | 通用算法与几何工具                                                              |\n| `stage/`                          | 舞台：`Camera`、`Canvas`、舞台对象（`stageObject`）、舞台管理（`stageManager`） |\n| `render/`                         | 渲染：`canvas2d`、`svg`、`3d`、`domElement`                                     |\n| `service/`                        | 业务服务（见下）                                                                |\n| `extension/`                      | 扩展系统运行时与 API                                                            |\n| `fileSystemProvider/`             | 文件系统抽象（草稿/本地文件等）                                                 |\n| `interfaces/`                     | 核心接口（如 `Service`）                                                        |\n| `subWindowOpen*.ts`               | 子窗口打开方式                                                                  |\n\n`service/` 主要子目录：\n\n- `controlService/` — 输入控制、快捷键、框选、自动布局等\n- `dataFileService/` — 工程文件读写\n- `dataGenerateService/` — 数据生成\n- `dataManageService/` — 内容搜索、复制、AI、节点工具等\n- `feedbackService/` — 特效、音效、舞台样式、颜色\n- `Settings.tsx` 等 — 设置、主题、菜单、教程等全局服务\n\n### Packages（`/packages`）\n\n前端复用的开源/内部库，例如：\n\n- `@graphif/serializer` — 实例序列化\n- `@graphif/shapes` — 可序列化图形\n- `@graphif/data-structures` — 可序列化数据结构\n- `extprg` / `extprg-types` / `create-extprg` — 扩展工具链与类型\n\n### Agent skills\n\n具体工作流见 `.agents/skills/`：\n\n- `type-check` — TypeScript 类型检查（**改代码后用这个，不要 build**）\n- `create-keybind` — 新增/修改快捷键\n- `create-setting-item` — 新增/修改设置项\n- `shadcn` / `ui` — UI 组件\n- `suggest-lucide-icons` — 图标建议\n\n## Locales (`app/src/locales`)\n\n| 文件         | 说明                                                               |\n| ------------ | ------------------------------------------------------------------ |\n| `en.yml`     | 英文（手写维护）                                                   |\n| `zh_CN.yml`  | 简体中文（手写维护）                                               |\n| `zh_TW.yml`  | 普通繁体中文 — **由 `zh_CN.yml` 自动生成（OpenCC）**，**不要手改** |\n| `zh_TWC.yml` | 接地气繁体中文 — **手写维护，不是自动生成**                        |\n| `id.yml`     | 印尼语（手写维护）                                                 |\n\n新增文案时：改 `en.yml` / `zh_CN.yml`（及需要时的 `zh_TWC.yml`、`id.yml`），**不要编辑 `zh_TW.yml`**。\n\n## Coding guidelines\n\n- 正确性与清晰度优先；性能除非明确要求，否则次之。\n- 不要写组织性/总结性注释；仅在「为什么这样写」不直观时解释 why。\n- 优先在已有文件中实现功能；仅在新的逻辑组件时新建文件，避免拆成大量小文件。\n- 目录内使用 `something.tsx`，不要用单独的 `index.tsx`。\n- 错误处理（**前端**）：\n  - 不要静默吞掉错误：禁止 `catch {}` 或仅 `console.error` 后忽略\n  - 能不 catch 就不 catch，让调用方处理\n  - 需要忽略时用对话框提示用户（用户看不到控制台）\n  - 错误应向上传到 DOM（如 `window`），由 `ErrorHandler` 展示友好对话框\n  - 反例：`try { something() } catch (e) { console.error(e) }` → 直接 `something()`\n- 错误处理（**Rust / Tauri 命令**）：命令在运行中不能让进程因未捕获错误闪退，须在函数内妥善处理错误并返回给前端。\n- UI：优先复用 shadcn 与 `.agents/skills/ui` 中的约定（`Dialog`、`toast` 等）。\n- 快捷键 / 设置：分别遵循 `create-keybind`、`create-setting-item` skill。\n\n## Commands\n\n包管理：`pnpm`。常用：\n\n- 开发：`pnpm dev`\n- Lint：`pnpm lint` / `pnpm lint:fix`\n- 测试：`pnpm test`（vitest）\n- 类型检查：**使用 `type-check` skill**（`pnpm --filter @graphif/project-graph type-check`）\n\n**禁止** Agent 运行 `build` / `build:ci` / `build:no-tauri` / `tauri build` 等构建命令。验证改动用 type-check（及必要的 lint/test），不要 build。\n\n## Agent constraints\n\n- **依赖 API / 用法**：禁止用 shell 在 `node_modules` 里搜索、翻源码或类型定义。需要了解第三方库时，读取该项目的官方文档（优先 `llms.txt`，例如 `https://<pkg-docs>/llms.txt`），或使用已有 skill；不要 `grep` / `find` / `cat` `node_modules/**`。\n- **实现方式**：禁止用 `python`、`python3`、`node -e`、`node --eval`、内联 shell 脚本等做文本处理或批量改文件。应直接用读/写/编辑文件的工具（Read / Write / Edit 等）完成；需要多文件改动时逐个编辑，不要写临时脚本。\n- **构建**：禁止 build（见上）；验证用 type-check skill。\n\n## Commit Message\n\n使用 [Conventional Commits](https://www.conventionalcommits.org/)，例如：`feat: ...`、`fix: ...`、`refactor: ...`。\n"},"files":{"AGENTS.md":"## Project Background\n\nGithub Repository: `graphif/project-graph`\n\nProject Graph 是一款桌面级节点图绘制工具，用于头脑风暴、知识图谱、项目规划等场景的可视化思考。\n\n## Tech-stack\n\n- React (TypeScript) + Tauri (Rust)\n- Vite + pnpm (monorepo) + Nx\n- Canvas 2D\n- shadcn/ui + Tailwind CSS + 自研子窗口系统\n- Jotai\n\nRust 主要负责本地文件等系统能力；绝大部分业务逻辑在前端。\n\n## Structure\n\n### Application\n\n- Frontend Vite project: `/app`\n- Rust / Tauri: `/app/src-tauri`\n- UI components: `/app/src/components`\n- i18n locales: `/app/src/locales`\n- React state (Jotai 等): `/app/src/state.tsx` 及附近\n\n### `app/src/core`（核心业务）\n\n| 路径                              | 职责                                                                            |\n| --------------------------------- | ------------------------------------------------------------------------------- |\n| `Project.tsx`                     | 单个工程/项目实例的入口与生命周期                                               |\n| `Tab*.ts(x)` / `TabWorkspace.tsx` | 标签页与工作区                                                                  |\n| `loadAllServices.tsx`             | 注册/加载全部服务                                                               |\n| `algorithm/`                      | 通用算法与几何工具                                                              |\n| `stage/`                          | 舞台：`Camera`、`Canvas`、舞台对象（`stageObject`）、舞台管理（`stageManager`） |\n| `render/`                         | 渲染：`canvas2d`、`svg`、`3d`、`domElement`                                     |\n| `service/`                        | 业务服务（见下）                                                                |\n| `extension/`                      | 扩展系统运行时与 API                                                            |\n| `fileSystemProvider/`             | 文件系统抽象（草稿/本地文件等）                                                 |\n| `interfaces/`                     | 核心接口（如 `Service`）                                                        |\n| `subWindowOpen*.ts`               | 子窗口打开方式                                                                  |\n\n`service/` 主要子目录：\n\n- `controlService/` — 输入控制、快捷键、框选、自动布局等\n- `dataFileService/` — 工程文件读写\n- `dataGenerateService/` — 数据生成\n- `dataManageService/` — 内容搜索、复制、AI、节点工具等\n- `feedbackService/` — 特效、音效、舞台样式、颜色\n- `Settings.tsx` 等 — 设置、主题、菜单、教程等全局服务\n\n### Packages（`/packages`）\n\n前端复用的开源/内部库，例如：\n\n- `@graphif/serializer` — 实例序列化\n- `@graphif/shapes` — 可序列化图形\n- `@graphif/data-structures` — 可序列化数据结构\n- `extprg` / `extprg-types` / `create-extprg` — 扩展工具链与类型\n\n### Agent skills\n\n具体工作流见 `.agents/skills/`：\n\n- `type-check` — TypeScript 类型检查（**改代码后用这个，不要 build**）\n- `create-keybind` — 新增/修改快捷键\n- `create-setting-item` — 新增/修改设置项\n- `shadcn` / `ui` — UI 组件\n- `suggest-lucide-icons` — 图标建议\n\n## Locales (`app/src/locales`)\n\n| 文件         | 说明                                                               |\n| ------------ | ------------------------------------------------------------------ |\n| `en.yml`     | 英文（手写维护）                                                   |\n| `zh_CN.yml`  | 简体中文（手写维护）                                               |\n| `zh_TW.yml`  | 普通繁体中文 — **由 `zh_CN.yml` 自动生成（OpenCC）**，**不要手改** |\n| `zh_TWC.yml` | 接地气繁体中文 — **手写维护，不是自动生成**                        |\n| `id.yml`     | 印尼语（手写维护）                                                 |\n\n新增文案时：改 `en.yml` / `zh_CN.yml`（及需要时的 `zh_TWC.yml`、`id.yml`），**不要编辑 `zh_TW.yml`**。\n\n## Coding guidelines\n\n- 正确性与清晰度优先；性能除非明确要求，否则次之。\n- 不要写组织性/总结性注释；仅在「为什么这样写」不直观时解释 why。\n- 优先在已有文件中实现功能；仅在新的逻辑组件时新建文件，避免拆成大量小文件。\n- 目录内使用 `something.tsx`，不要用单独的 `index.tsx`。\n- 错误处理（**前端**）：\n  - 不要静默吞掉错误：禁止 `catch {}` 或仅 `console.error` 后忽略\n  - 能不 catch 就不 catch，让调用方处理\n  - 需要忽略时用对话框提示用户（用户看不到控制台）\n  - 错误应向上传到 DOM（如 `window`），由 `ErrorHandler` 展示友好对话框\n  - 反例：`try { something() } catch (e) { console.error(e) }` → 直接 `something()`\n- 错误处理（**Rust / Tauri 命令**）：命令在运行中不能让进程因未捕获错误闪退，须在函数内妥善处理错误并返回给前端。\n- UI：优先复用 shadcn 与 `.agents/skills/ui` 中的约定（`Dialog`、`toast` 等）。\n- 快捷键 / 设置：分别遵循 `create-keybind`、`create-setting-item` skill。\n\n## Commands\n\n包管理：`pnpm`。常用：\n\n- 开发：`pnpm dev`\n- Lint：`pnpm lint` / `pnpm lint:fix`\n- 测试：`pnpm test`（vitest）\n- 类型检查：**使用 `type-check` skill**（`pnpm --filter @graphif/project-graph type-check`）\n\n**禁止** Agent 运行 `build` / `build:ci` / `build:no-tauri` / `tauri build` 等构建命令。验证改动用 type-check（及必要的 lint/test），不要 build。\n\n## Agent constraints\n\n- **依赖 API / 用法**：禁止用 shell 在 `node_modules` 里搜索、翻源码或类型定义。需要了解第三方库时，读取该项目的官方文档（优先 `llms.txt`，例如 `https://<pkg-docs>/llms.txt`），或使用已有 skill；不要 `grep` / `find` / `cat` `node_modules/**`。\n- **实现方式**：禁止用 `python`、`python3`、`node -e`、`node --eval`、内联 shell 脚本等做文本处理或批量改文件。应直接用读/写/编辑文件的工具（Read / Write / Edit 等）完成；需要多文件改动时逐个编辑，不要写临时脚本。\n- **构建**：禁止 build（见上）；验证用 type-check skill。\n\n## Commit Message\n\n使用 [Conventional Commits](https://www.conventionalcommits.org/)，例如：`feat: ...`、`fix: ...`、`refactor: ...`。\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"## Project Background\n\nGithub Repository: `graphif/project-graph`\n\nProject Graph 是一款桌面级节点图绘制工具，用于头脑风暴、知识图谱、项目规划等场景的可视化思考。\n\n## Tech-stack\n\n- React (TypeScript) + Tauri (Rust)\n- Vite + pnpm (monorepo) + Nx\n- Canvas 2D\n- shadcn/ui + Tailwind CSS + 自研子窗口系统\n- Jotai\n\nRust 主要负责本地文件等系统能力；绝大部分业务逻辑在前端。\n\n## Structure\n\n### Application\n\n- Frontend Vite project: `/app`\n- Rust / Tauri: `/app/src-tauri`\n- UI components: `/app/src/components`\n- i18n locales: `/app/src/locales`\n- React state (Jotai 等): `/app/src/state.tsx` 及附近\n\n### `app/src/core`（核心业务）\n\n| 路径                              | 职责                                                                            |\n| --------------------------------- | ------------------------------------------------------------------------------- |\n| `Project.tsx`                     | 单个工程/项目实例的入口与生命周期                                               |\n| `Tab*.ts(x)` / `TabWorkspace.tsx` | 标签页与工作区                                                                  |\n| `loadAllServices.tsx`             | 注册/加载全部服务                                                               |\n| `algorithm/`                      | 通用算法与几何工具                                                              |\n| `stage/`                          | 舞台：`Camera`、`Canvas`、舞台对象（`stageObject`）、舞台管理（`stageManager`） |\n| `render/`                         | 渲染：`canvas2d`、`svg`、`3d`、`domElement`                                     |\n| `service/`                        | 业务服务（见下）                                                                |\n| `extension/`                      | 扩展系统运行时与 API                                                            |\n| `fileSystemProvider/`             | 文件系统抽象（草稿/本地文件等）                                                 |\n| `interfaces/`                     | 核心接口（如 `Service`）                                                        |\n| `subWindowOpen*.ts`               | 子窗口打开方式                                                                  |\n\n`service/` 主要子目录：\n\n- `controlService/` — 输入控制、快捷键、框选、自动布局等\n- `dataFileService/` — 工程文件读写\n- `dataGenerateService/` — 数据生成\n- `dataManageService/` — 内容搜索、复制、AI、节点工具等\n- `feedbackService/` — 特效、音效、舞台样式、颜色\n- `Settings.tsx` 等 — 设置、主题、菜单、教程等全局服务\n\n### Packages（`/packages`）\n\n前端复用的开源/内部库，例如：\n\n- `@graphif/serializer` — 实例序列化\n- `@graphif/shapes` — 可序列化图形\n- `@graphif/data-structures` — 可序列化数据结构\n- `extprg` / `extprg-types` / `create-extprg` — 扩展工具链与类型\n\n### Agent skills\n\n具体工作流见 `.agents/skills/`：\n\n- `type-check` — TypeScript 类型检查（**改代码后用这个，不要 build**）\n- `create-keybind` — 新增/修改快捷键\n- `create-setting-item` — 新增/修改设置项\n- `shadcn` / `ui` — UI 组件\n- `suggest-lucide-icons` — 图标建议\n\n## Locales (`app/src/locales`)\n\n| 文件         | 说明                                                               |\n| ------------ | ------------------------------------------------------------------ |\n| `en.yml`     | 英文（手写维护）                                                   |\n| `zh_CN.yml`  | 简体中文（手写维护）                                               |\n| `zh_TW.yml`  | 普通繁体中文 — **由 `zh_CN.yml` 自动生成（OpenCC）**，**不要手改** |\n| `zh_TWC.yml` | 接地气繁体中文 — **手写维护，不是自动生成**                        |\n| `id.yml`     | 印尼语（手写维护）                                                 |\n\n新增文案时：改 `en.yml` / `zh_CN.yml`（及需要时的 `zh_TWC.yml`、`id.yml`），**不要编辑 `zh_TW.yml`**。\n\n## Coding guidelines\n\n- 正确性与清晰度优先；性能除非明确要求，否则次之。\n- 不要写组织性/总结性注释；仅在「为什么这样写」不直观时解释 why。\n- 优先在已有文件中实现功能；仅在新的逻辑组件时新建文件，避免拆成大量小文件。\n- 目录内使用 `something.tsx`，不要用单独的 `index.tsx`。\n- 错误处理（**前端**）：\n  - 不要静默吞掉错误：禁止 `catch {}` 或仅 `console.error` 后忽略\n  - 能不 catch 就不 catch，让调用方处理\n  - 需要忽略时用对话框提示用户（用户看不到控制台）\n  - 错误应向上传到 DOM（如 `window`），由 `ErrorHandler` 展示友好对话框\n  - 反例：`try { something() } catch (e) { console.error(e) }` → 直接 `something()`\n- 错误处理（**Rust / Tauri 命令**）：命令在运行中不能让进程因未捕获错误闪退，须在函数内妥善处理错误并返回给前端。\n- UI：优先复用 shadcn 与 `.agents/skills/ui` 中的约定（`Dialog`、`toast` 等）。\n- 快捷键 / 设置：分别遵循 `create-keybind`、`create-setting-item` skill。\n\n## Commands\n\n包管理：`pnpm`。常用：\n\n- 开发：`pnpm dev`\n- Lint：`pnpm lint` / `pnpm lint:fix`\n- 测试：`pnpm test`（vitest）\n- 类型检查：**使用 `type-check` skill**（`pnpm --filter @graphif/project-graph type-check`）\n\n**禁止** Agent 运行 `build` / `build:ci` / `build:no-tauri` / `tauri build` 等构建命令。验证改动用 type-check（及必要的 lint/test），不要 build。\n\n## Agent constraints\n\n- **依赖 API / 用法**：禁止用 shell 在 `node_modules` 里搜索、翻源码或类型定义。需要了解第三方库时，读取该项目的官方文档（优先 `llms.txt`，例如 `https://<pkg-docs>/llms.txt`），或使用已有 skill；不要 `grep` / `find` / `cat` `node_modules/**`。\n- **实现方式**：禁止用 `python`、`python3`、`node -e`、`node --eval`、内联 shell 脚本等做文本处理或批量改文件。应直接用读/写/编辑文件的工具（Read / Write / Edit 等）完成；需要多文件改动时逐个编辑，不要写临时脚本。\n- **构建**：禁止 build（见上）；验证用 type-check skill。\n\n## Commit Message\n\n使用 [Conventional Commits](https://www.conventionalcommits.org/)，例如：`feat: ...`、`fix: ...`、`refactor: ...`。\n","category":"root","tokens":1191}]}