Project Graphに新しいショートカットを登録し、キー割り当てや設定画面の分類、各言語の説明文まで追加する手順を案内するスキルです。
- 新しいショートカットを追加したいとき
- 既定のキー割り当てを変更したいとき
- 設定画面にショートカットを分類表示したいとき
Project Graphに設定項目を追加し、値の型や初期値、アイコン、翻訳、設定画面での分類まで反映する手順を案内するスキルです。
指导如何在 Project Graph 项目中创建新的设置项。当用户需要添加新的设置项、配置选项或需要了解设置系统的实现方式时使用此技能。
実行スコア 未検証
インストール方法を見るProject Graphに設定項目を追加する流れを案内します。Settings.tsxのスキーマで型と初期値を定義し、必要に応じてアイコンを登録します。各言語のファイルに表示名や説明を加え、設定画面の分類に項目を配置します。スキーマに応じて入力欄、スライダー、スイッチ、選択メニューが表示される仕組みや、設定値の読み書き、変更監視、React Hookでの利用方法も説明します。設定値はsettings.jsonに保存されます。
新しい機能のオン・オフや数値、選択肢を設定画面から変更できるようにしたいときに使えます。設定項目を適切な分類に整理し、多言語の表示をそろえたい開発者にも向いています。
Project Graphの設定ファイルや分類構成に沿った変更が必要です。初期値を定義し、設定画面に表示するには適切なグループへの追加が必要です。翻訳を表示する場合は、各言語ファイルにも項目を追加します。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
本技能指导如何在 Project Graph 项目中创建新的设置项。
创建新设置项需要完成以下 5 个步骤:
在 app/src/core/service/Settings.tsx 文件的 settingsSchema 对象中添加新的设置项定义。
支持的 Zod 类型:
z.boolean().default(false) - 布尔值开关z.number().min(x).max(y).default(z) - 数字(可添加 .int() 限制为整数)z.string().default("") - 字符串z.union([z.literal("option1"), z.literal("option2")]).default("option1") - 枚举选择z.tuple([z.number(), z.number(), z.number(), z.number()]).default([0,0,0,0]) - 元组(如颜色 RGBA)示例:
// 布尔值设置
enableNewFeature: z.boolean().default(false),
// 数字范围设置(带滑块)
newSliderValue: z.number().min(0).max(100).int().default(50),
// 枚举选择设置
newMode: z.union([z.literal("mode1"), z.literal("mode2")]).default("mode1"),
在 app/src/core/service/SettingsIcons.tsx 文件的 settingsIcons 对象中添加对应的图标。
步骤:
lucide-react 导入合适的图标组件settingsIcons 对象中添加映射:settingKey: IconComponent示例:
import { NewIcon } from "lucide-react";
export const settingsIcons = {
// ... 其他设置项
enableNewFeature: NewIcon,
};
在所有语言文件中添加翻译:
app/src/locales/zh_CN.yml - 简体中文app/src/locales/zh_TW.yml - 繁体中文app/src/locales/en.yml - 英文app/src/locales/zh_TWC.yml - 接地气繁体中文app/src/locales/id.yml - 印度尼西亚语翻译结构:
settings:
settingKey:
title: "设置项标题"
description: |
设置项的详细描述
可以多行
options: # 仅枚举类型需要
option1: "选项1显示文本"
option2: "选项2显示文本"
示例:
settings:
enableNewFeature:
title: "启用新功能"
description: |
开启后将启用新功能特性。
此功能可能会影响性能。
newMode:
title: "新模式"
description: "选择新的模式选项"
options:
mode1: "模式一"
mode2: "模式二"
在 app/src/sub/SettingsWindow/settings.tsx 文件的 categories 对象中,将新设置项的键名添加到相应的分组数组中。
分组结构:
const categories = {
visual: { // 一级分类:视觉
basic: [...], // 二级分组:基础
background: [...], // 二级分组:背景
node: [...], // 二级分组:节点样式
// ...
},
automation: { // 一级分类:自动化
autoNamer: [...],
autoSave: [...],
// ...
},
control: { // 一级分类:控制
mouse: [...],
cameraMove: [...],
// ...
},
performance: { // 一级分类:性能
memory: [...],
cpu: [...],
// ...
},
ai: { // 一级分类:AI
api: [...],
},
};
添加设置项到分组:
const categories = {
visual: {
basic: [
"language",
"isClassroomMode",
"enableNewFeature", // 添加新设置项
// ...
],
},
// ...
};
分组选择指南:
basic: 基础视觉设置background: 背景相关设置node: 节点样式设置edge: 连线样式设置section: 分组框的样式设置entityDetails: 实体详情面板设置debug: 调试相关设置miniWindow: 迷你窗口设置experimental: 实验性视觉功能autoNamer: 自动命名相关autoSave: 自动保存相关autoBackup: 自动备份相关autoImport: 自动导入相关mouse: 鼠标相关设置touchpad: 触摸板设置cameraMove: 相机移动设置cameraZoom: 相机缩放设置objectSelect: 对象选择设置textNode: 文本节点编辑设置edge: 连线操作设置generateNode: 节点生成设置gamepad: 游戏手柄设置memory: 内存相关设置cpu: CPU 相关设置render: 渲染相关设置experimental: 实验性性能功能api: AI API 配置注意: 如果设置项不属于任何现有分组,可以:
设置项添加到分组后,会在设置页面的相应分组中自动显示。如果需要手动渲染或添加额外内容,可以使用 SettingField 组件:
基本用法:
import { SettingField } from "@/components/ui/field";
<SettingField settingKey="enableNewFeature" />;
带额外内容的用法:
<SettingField settingKey="enableNewFeature" extra={<Button>额外按钮</Button>} />
注意: 大多数情况下,只需要将设置项添加到 categories 中即可,设置页面会自动渲染。只有在需要特殊布局或额外功能时才需要手动使用 SettingField 组件。
SettingField 组件会根据 schema 定义自动渲染对应的 UI 控件:
Input 输入框Slider 滑块 + Input 数字输入框Input 数字输入框Switch 开关Select 下拉选择框在代码中访问设置值:
import { Settings } from "@/core/service/Settings";
// 读取设置值
const value = Settings.enableNewFeature;
// 修改设置值
Settings.enableNewFeature = true;
// 监听设置变化(返回取消监听的函数)
const unsubscribe = Settings.watch("enableNewFeature", (newValue) => {
console.log("设置已更改:", newValue);
});
// React Hook 方式(在组件中使用)
const [value, setValue] = Settings.use("enableNewFeature");
enableNewFeature.default())settings.json 文件中settingsIcons 中添加,组件会使用 Fragmentcategories 对象中的相应分组,否则不会在设置页面中显示假设要添加一个"启用暗色模式"的设置项:
1. Settings.tsx:
export const settingsSchema = z.object({
// ... 其他设置项
enableDarkMode: z.boolean().default(false),
});
2. SettingsIcons.tsx:
import { Moon } from "lucide-react";
export const settingsIcons = {
// ... 其他设置项
enableDarkMode: Moon,
};
3. zh_CN.yml:
settings:
enableDarkMode:
title: "启用暗色模式"
description: "开启后将使用暗色主题界面"
4. settings.tsx - 添加到分组:
const categories = {
visual: {
basic: [
"language",
"isClassroomMode",
"enableDarkMode", // 添加到基础视觉设置分组
// ...
],
// ...
},
// ...
};
5. 设置项会自动显示:
设置项添加到 categories 后,会在设置页面的"视觉 > 基础"分组中自动显示,无需手动使用 SettingField 组件。
如果希望设置项出现在快捷设置栏(Quick Settings Toolbar)中,需要:
QuickSettingsManager.addQuickSetting() 手动添加非布尔类型的设置项まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Project Graphに新しいショートカットを登録し、キー割り当てや設定画面の分類、各言語の説明文まで追加する手順を案内するスキルです。
Project Graphの翻訳ファイルの場所と対応言語を確認し、新しい翻訳の追加や既存訳の更新、翻訳システムの把握を支援します。
コーディング作業で、依頼を満たすために必要な最小限の変更を選び、影響範囲や確認事項も含めて簡潔に進め方を整えるスキルです。
shadcn/uiのコンポーネントを探して追加・更新し、プロジェクト設定に沿ったUIの構成や修正を支援するスキルです。
表したい概念や画面の配置に合うLucideアイコンを候補から探し、実在確認を経て意味や見た目を比べ、用途ごとにおすすめを提示します。
TypeScriptのコードをプロジェクト指定のコマンドで型チェックし、型の不整合を確認するスキルです。