diff --git a/.claude/commands/opsx/apply.md b/.claude/commands/opsx/apply.md new file mode 100644 index 0000000..8793060 --- /dev/null +++ b/.claude/commands/opsx/apply.md @@ -0,0 +1,152 @@ +--- +name: "OPSX: 应用" +description: 实现 OpenSpec 变更中的任务(实验性) +category: 工作流 +tags: [workflow, artifacts, experimental] +--- + +实现 OpenSpec 变更中的任务。 + +**输入**:可选择指定变更名称(例如,`/opsx:apply add-auth`)。如果省略,检查是否可以从对话上下文中推断出来。如果模糊或不明确,你必须提示可用的变更。 + +**步骤** + +1. **选择变更** + + 如果提供了名称,使用它。否则: + - 如果用户提到了某个变更,从对话上下文中推断 + - 如果只存在一个活动变更,自动选择 + - 如果不明确,运行 `openspec-cn list --json` 获取可用变更,并使用 **AskUserQuestion tool** 让用户选择 + + 始终宣布:"正在使用变更:"以及如何覆盖(例如,`/opsx:apply `)。 + +2. **检查状态以了解 Schema** + ```bash + openspec-cn status --change "" --json + ``` + 解析 JSON 以了解: + - `schemaName`:正在使用的工作流(例如:"spec-driven") + - 哪个产出物包含任务(对于 spec-driven 通常是 "tasks",检查其他产出物的状态) + +3. **获取应用指令** + + ```bash + openspec-cn instructions apply --change "" --json + ``` + + 这返回: + - 上下文文件路径(因 Schema 而异) + - 进度(总计,完成,剩余) + - 带有状态的任务列表 + - 基于当前状态的动态指令 + + **处理状态:** + - 如果 `state: "blocked"`(缺少产出物):显示消息,建议使用 `/opsx:continue` + - 如果 `state: "all_done"`:祝贺,建议归档 + - 否则:继续实现 + +4. **阅读上下文文件** + + 阅读 apply instructions 输出中 `contextFiles` 列出的文件。 + 文件取决于正在使用的 Schema: + - **spec-driven**: proposal, specs, design, tasks + - 其他模式:遵循 CLI 输出中的 contextFiles + +5. **显示当前进度** + + 显示: + - 正在使用的 Schema + - 进度:"N/M 任务已完成" + - 剩余任务概览 + - 来自 CLI 的动态指令 + +6. **实现任务(循环直到完成或受阻)** + + 对于每个待处理任务: + - 显示正在处理哪个任务 + - 进行所需的代码更改 + - 保持更改最小化且专注 + - 在任务文件中标记任务完成:`- [ ]` → `- [x]` + - 继续下一个任务 + + **暂停如果:** + - 任务不清楚 → 询问澄清 + - 实现揭示了设计问题 → 建议更新产出物 + - 遇到错误或阻碍 → 报告并等待指导 + - 用户中断 + +7. **完成或暂停时,显示状态** + + 显示: + - 本次会话完成的任务 + - 总体进度:"N/M 任务已完成" + - 如果全部完成:建议归档 + - 如果暂停:解释原因并等待指导 + +**实现期间的输出** + +``` +## 正在实现: (schema: ) + +正在处理任务 3/7: +[...正在进行实现...] +✓ 任务完成 + +正在处理任务 4/7: +[...正在进行实现...] +✓ 任务完成 +``` + +**完成时的输出** + +``` +## 实现完成 + +**变更:** +**Schema:** +**进度:** 7/7 任务已完成 ✓ + +### 本次会话已完成 +- [x] 任务 1 +- [x] 任务 2 +... + +所有任务已完成!您可以使用 `/opsx:archive` 归档此变更。 +``` + +**暂停时的输出(遇到问题)** + +``` +## 实现暂停 + +**变更:** +**Schema:** +**进度:** 4/7 任务已完成 + +### 遇到的问题 +<问题描述> + +**选项:** +1. <选项 1> +2. <选项 2> +3. 其他方法 + +您想怎么做? +``` + +**护栏** +- 继续执行任务直到完成或受阻 +- 开始前始终阅读上下文文件(来自 apply instructions 输出) +- 如果任务模棱两可,暂停并在实现前询问 +- 如果实现揭示了问题,暂停并建议更新产出物 +- 保持代码更改最小化并限定在每个任务范围内 +- 完成每个任务后立即更新任务复选框 +- 遇到错误、阻碍或不清楚的需求时暂停 - 不要猜测 +- 使用 CLI 输出中的 contextFiles,不要假设特定的文件名 + +**流畅的工作流集成** + +此技能支持"变更上的操作"模型: + +- **可以随时调用**:在所有产出物完成之前(如果存在任务),部分实现之后,与其他操作交错 +- **允许产出物更新**:如果实现揭示了设计问题,建议更新产出物 - 不是阶段锁定的,流畅地工作 diff --git a/.claude/commands/opsx/archive.md b/.claude/commands/opsx/archive.md new file mode 100644 index 0000000..2cfccdf --- /dev/null +++ b/.claude/commands/opsx/archive.md @@ -0,0 +1,157 @@ +--- +name: "OPSX: 归档" +description: 归档实验性工作流中已完成的变更 +category: 工作流 +tags: [workflow, archive, experimental] +--- + +归档实验性工作流中已完成的变更。 + +**输入**:可选择在 `/opsx:archive` 后指定变更名称(例如,`/opsx:archive add-auth`)。如果省略,检查是否可以从对话上下文中推断出来。如果模糊或不明确,你必须提示可用的变更。 + +**步骤** + +1. **如果没有提供变更名称,提示选择** + + 运行 `openspec-cn list --json` 获取可用变更。使用 **AskUserQuestion tool** 让用户选择。 + + 仅显示活动变更(未归档的)。 + 如果可用,包括每个变更使用的 Schema。 + + **重要提示**:不要猜测或自动选择变更。始终让用户选择。 + +2. **检查产出物完成状态** + + 运行 `openspec-cn status --change "" --json` 检查产出物完成情况。 + + 解析 JSON 以了解: + - `schemaName`:正在使用的工作流 + - `artifacts`:产出物列表及其状态(`done` 或其他) + + **如果有任何产出物未 `done`:** + - 显示列出未完成产出物的警告 + - 提示用户确认是否继续 + - 如果用户确认,则继续 + +3. **检查任务完成状态** + + 阅读任务文件(通常是 `tasks.md`)以检查未完成的任务。 + + 统计标记为 `- [ ]`(未完成)与 `- [x]`(已完成)的任务。 + + **如果发现未完成的任务:** + - 显示警告,显示未完成任务的数量 + - 提示用户确认是否继续 + - 如果用户确认,则继续 + + **如果没有任务文件存在:** 继续,无需任务相关警告。 + +4. **评估增量规格说明同步状态** + + 在 `openspec/changes//specs/` 检查增量规格说明。如果不存在,不提示同步直接继续。 + + **如果存在增量规格说明:** + - 将每个增量规格说明与其在 `openspec/specs//spec.md` 的相应主规格说明进行比较 + - 确定将应用哪些更改(添加、修改、删除、重命名) + - 在提示前显示合并摘要 + + **提示选项:** + - 如果需要更改:"立即同步(推荐)","不同步直接归档" + - 如果已同步:"立即归档","仍要同步","取消" + + 如果用户选择同步,执行 `/opsx:sync` 逻辑。无论选择如何都继续归档。 + +5. **执行归档** + + 如果归档目录不存在,则创建它: + ```bash + mkdir -p openspec/changes/archive + ``` + + 使用当前日期生成目标名称:`YYYY-MM-DD-` + + **检查目标是否已存在:** + - 如果是:失败并报错,建议重命名现有归档或使用不同日期 + - 如果否:将变更目录移动到归档 + + ```bash + mv openspec/changes/ openspec/changes/archive/YYYY-MM-DD- + ``` + +6. **显示摘要** + + 显示归档完成摘要,包括: + - 变更名称 + - 使用的 Schema + - 归档位置 + - 规格说明同步状态(已同步 / 跳过同步 / 无增量规格说明) + - 任何警告的注释(未完成的产出物/任务) + +**成功时的输出** + +``` +## 归档完成 + +**变更:** +**Schema:** +**归档至:** openspec/changes/archive/YYYY-MM-DD-/ +**规范:** ✓ 已同步到主规范 + +所有产出物已完成。所有任务已完成。 +``` + +**成功时的输出(无增量规范)** + +``` +## 归档完成 + +**变更:** +**Schema:** +**归档至:** openspec/changes/archive/YYYY-MM-DD-/ +**规范:** 无增量规范 + +所有产出物已完成。所有任务已完成。 +``` + +**成功时的输出(带警告)** + +``` +## 归档完成(带警告) + +**变更:** +**Schema:** +**归档至:** openspec/changes/archive/YYYY-MM-DD-/ +**规格说明:** 跳过同步(用户选择跳过) + +**警告:** +- 带有 2 个未完成产出物的归档 +- 带有 3 个未完成任务的归档 +- 增量规格说明同步已跳过(用户选择跳过) + +如果这不是故意的,请检查归档。 +``` + +**错误时的输出(归档已存在)** + +``` +## 归档失败 + +**变更:** +**目标:** openspec/changes/archive/YYYY-MM-DD-/ + +目标归档目录已存在。 + +**选项:** +1. 重命名现有归档 +2. 如果是重复的,删除现有归档 +3. 等待不同的日期再归档 +``` + +**防护措施** +- 如果未提供变更,始终提示选择 +- 使用产出物图(openspec-cn status --json)进行完成度检查 +- 不要在警告时阻止归档 - 只需告知并确认 +- 移动到归档时保留 .openspec.yaml(它与目录一起移动) +- 显示清晰的操作摘要 +- 如果请求同步,使用 Skill tool 调用 `openspec-sync-specs`(代理驱动) +- 如果存在增量规格说明,请始终运行同步评估,并在提示前显示综合摘要 diff --git a/.claude/commands/opsx/explore.md b/.claude/commands/opsx/explore.md new file mode 100644 index 0000000..b35a421 --- /dev/null +++ b/.claude/commands/opsx/explore.md @@ -0,0 +1,173 @@ +--- +name: "OPSX: 探索" +description: 进入探索模式 - 构思想法、调查问题、澄清需求 +category: 工作流 +tags: [workflow, explore, experimental, thinking] +--- + +进入探索模式。深入思考。自由可视化。跟随对话的发展。 + +**重要提示:探索模式是为了思考,而不是为了实施。** 你可以阅读文件、搜索代码和调查代码库,但你绝不能编写代码或实现功能。如果用户要求你实现某些内容,请提醒他们先退出探索模式(例如,使用 `/opsx:new` 或 `/opsx:ff` 开始变更)。如果用户要求,你可以创建 OpenSpec 产出物(提案、设计、规格说明)——这是捕捉思考,而不是实施。 + +**这是一种姿态,而不是一种工作流。** 没有固定的步骤,没有要求的顺序,没有强制性的输出。你是一个思考伙伴,帮助用户进行探索。 + +**输入**:`/opsx:explore` 之后的参数是用户想要思考的任何内容。可能是: +- 一个模糊的想法:"实时协作" +- 一个具体的问题:"认证系统越来越难维护" +- 一个变更名称:"add-dark-mode"(在该变更的上下文中探索) +- 一个比较:"这个场景下该用 Postgres 还是 SQLite" +- 无(仅进入探索模式) + +--- + +## 姿态 + +- **好奇而非说教** - 提出自然产生的问题,不要照本宣科 +- **开放话题而非审问** - 浮现多个有趣的方向,让用户选择产生共鸣的部分。不要把他们限制在单一的提问路径中。 +- **可视化** - 在有助于澄清思路时大方使用 ASCII 图表 +- **自适应** - 跟随有趣的话题,当新信息出现时及时转换 +- **耐心** - 不要急于下结论,让问题的轮廓自然显现 +- **务实** - 在相关时探索实际的代码库,不要仅仅停留在理论上 + +--- + +## 你可能做的事情 + +根据用户提出的内容,你可能会: + +**探索问题空间** +- 针对他们所说的内容提出澄清性问题 +- 挑战假设 +- 重新构建问题 +- 寻找类比 + +**调查代码库** +- 绘制与讨论相关的现有架构图 +- 寻找集成点 +- 识别已在使用的模式 +- 揭示隐藏的复杂性 + +**比较选项** +- 头脑风暴多种方法 +- 构建比较表 +- 勾勒权衡 +- 推荐路径(如果被询问) + +**可视化** +``` +┌─────────────────────────────────────────┐ +│ 大量使用 ASCII 图表 │ +├─────────────────────────────────────────┤ +│ │ +│ ┌────────┐ ┌────────┐ │ +│ │ 状态 │────────▶│ 状态 │ │ +│ │ A │ │ B │ │ +│ └────────┘ └────────┘ │ +│ │ +│ 系统图、状态机、数据流、 │ +│ 架构草图、依赖图、比较表 │ +│ │ +└─────────────────────────────────────────┘ +``` + +**揭示风险和未知数** +- 识别可能出错的地方 +- 发现理解上的差距 +- 建议进行探针(Spike)或调查 + +--- + +## OpenSpec 意识 + +你拥有 OpenSpec 系统的完整上下文。自然地使用它,不要强行使用。 + +### 检查上下文 + +开始时,快速检查存在什么: +```bash +openspec-cn list --json +``` + +这会告诉你: +- 是否有活跃的变更 +- 它们的名称、模式和状态 +- 用户可能正在处理的内容 + +如果用户提到了特定的变更名称,请阅读其产出物以获取上下文。 + +### 当不存在变更时 + +自由思考。当见解清晰时,你可以提议: + +- "这感觉足够扎实,可以开始一个变更了。要我创建一个吗?" + → 可以过渡到 `/opsx:new` 或 `/opsx:ff` +- 或者继续探索 - 没有形式化的压力 + +### 当存在变更时 + +如果用户提到变更或你检测到相关变更: + +1. **阅读现有产出物以获取上下文** + - `openspec/changes//proposal.md` + - `openspec/changes//design.md` + - `openspec/changes//tasks.md` + - 等等 + +2. **在对话中自然地引用它们** + - "你的设计提到使用 Redis,但我们刚刚意识到 SQLite 更合适……" + - "提案将此范围限定为高级用户,但我们现在考虑面向所有人……" + +3. **当做出决定时提议捕获** + + | 见解类型 | 捕获位置 | + |--------------|------------------| + | 发现新需求 | `specs//spec.md` | + | 需求变更 | `specs//spec.md` | + | 做出设计决策 | `design.md` | + | 范围变更 | `proposal.md` | + | 识别出新工作 | `tasks.md` | + | 假设失效 | 相关产出物 | + + 提议示例: + - "这是一个设计决策。要把它记录在 design.md 中吗?" + - "这是一个新需求。要把它添加到 specs 中吗?" + - "这改变了范围。要更新 proposal 吗?" + +4. **由用户决定** - 提议并继续。不要施压。不要自动捕获。 + +--- + +## 你不必做的事情 + +- 遵循脚本 +- 每次都问相同的问题 +- 生成特定的产出物 +- 得出结论 +- 如果离题有价值,不必保持在主题上 +- 简短(这是思考时间) + +--- + +## 结束探索 + +没有要求的结束方式。探索可能会: + +- **流入行动**:"准备好开始了吗? `/opsx:new` 或 `/opsx:ff`" +- **导致产出物更新**:"已用这些决定更新 design.md" +- **仅提供清晰度**:用户得到了他们需要的,继续前进 +- **稍后继续**:"我们可以随时继续这个话题" + +当感觉事情变得清晰时,你可以总结 - 但这是可选的。有时思考本身就是价值。 + +--- + +## 护栏 + +- **不要实施** - 绝不编写代码或实现功能。创建 OpenSpec 产出物是可以的,编写应用程序代码是不行的。 +- **不要假装理解** - 如果某些事情不清楚,请深入挖掘 +- **不要匆忙** - 发现是思考时间,而不是任务时间 +- **不要强加结构** - 让模式自然浮现 +- **不要自动捕捉** - 提议保存见解,不要直接做 +- **要可视化** - 一个好的图表胜过千言万语 +- **要探索代码库** - 将讨论建立在现实基础上 +- **要质疑假设** - 包括用户的和你自己的 diff --git a/.claude/commands/opsx/propose.md b/.claude/commands/opsx/propose.md new file mode 100644 index 0000000..6b64952 --- /dev/null +++ b/.claude/commands/opsx/propose.md @@ -0,0 +1,106 @@ +--- +name: "OPSX: 提案" +description: 提案新变更 - 一步创建并生成所有产出物 +category: 工作流 +tags: [workflow, artifacts, experimental] +--- + +提案新变更 - 一步创建变更并生成所有产出物。 + +我将创建一个包含以下产出物的变更: +- proposal.md(什么和为什么) +- design.md(如何) +- tasks.md(实现步骤) + +准备好实现后,运行 /opsx:apply + +--- + +**输入**:`/opsx:propose` 之后的参数是变更名称(kebab-case),或用户想要构建内容的描述。 + +**步骤** + +1. **如果没有提供输入,询问他们想要构建什么** + + 使用 **AskUserQuestion tool**(开放式,无预设选项)询问: + > "您想要处理什么变更?请描述您想要构建或修复的内容。" + + 根据他们的描述,推导出一个 kebab-case 名称(例如:"add user authentication" → `add-user-auth`)。 + + **重要提示**:在不了解用户想要构建什么的情况下,请勿继续。 + +2. **创建变更目录** + ```bash + openspec-cn new change "" + ``` + 这将在 `openspec/changes//` 创建一个带有 `.openspec.yaml` 的脚手架变更。 + +3. **获取产出物构建顺序** + ```bash + openspec-cn status --change "" --json + ``` + 解析 JSON 以获取: + - `applyRequires`: 实现前所需的产出物 ID 数组(例如:`["tasks"]`) + - `artifacts`: 所有产出物及其状态和依赖项的列表 + +4. **按顺序创建产出物直到准备好应用** + + 使用 **TodoWrite tool** 跟踪产出物的进度。 + + 按依赖顺序循环遍历产出物(没有待处理依赖项的产出物优先): + + a. **对于每个 `ready`(依赖项已满足)的产出物**: + - 获取指令: + ```bash + openspec-cn instructions --change "" --json + ``` + - 指令 JSON 包括: + - `context`:项目背景(对你的约束 - 不要包含在输出中) + - `rules`:产出物特定规则(对你的约束 - 不要包含在输出中) + - `template`:用于输出文件的结构 + - `instruction`:此产出物类型的 Schema 特定指导 + - `outputPath`:写入产出物的位置 + - `dependencies`:已完成的产出物,用于读取上下文 + - 读取任何已完成的依赖文件以获取上下文 + - 使用 `template` 作为结构创建产出物文件 + - 应用 `context` 和 `rules` 作为约束 - 但不要将它们复制到文件中 + - 显示简短进度:"✓ 已创建 " + + b. **继续直到所有 `applyRequires` 产出物完成** + - 创建每个产出物后,重新运行 `openspec-cn status --change "" --json` + - 检查 `applyRequires` 中的每个产出物 ID 在 artifacts 数组中是否具有 `status: "done"` + - 当所有 `applyRequires` 产出物完成时停止 + + c. **如果产出物需要用户输入**(上下文不清楚): + - 使用 **AskUserQuestion tool** 进行澄清 + - 然后继续创建 + +5. **显示最终状态** + ```bash + openspec-cn status --change "" + ``` + +**输出** + +完成所有产出物后,总结: +- 变更名称和位置 +- 已创建产出物的列表及简要描述 +- 准备就绪:"所有产出物已创建!准备好实现。" +- 提示:"运行 `/opsx:apply` 开始实现。" + +**产出物创建指南** + +- 遵循每个产出物类型的 `openspec-cn instructions` 中的 `instruction` 字段 +- Schema 定义了每个产出物应包含的内容 - 遵循它 +- 在创建新产出物之前阅读依赖产出物以获取上下文 +- 使用 `template` 作为输出文件的结构 - 填充其各个部分 +- **重要提示**:`context` 和 `rules` 是对你的约束,而不是文件内容 + - 不要将 ``、``、`` 块复制到产出物中 + - 这些引导你编写内容,但不应出现在输出中 + +**护栏** +- 创建实现所需的所有产出物(由 Schema 的 `apply.requires` 定义) +- 在创建新产出物之前始终阅读依赖产出物 +- 如果上下文极其不清楚,询问用户 - 但倾向于做出合理的决定以保持势头 +- 如果同名变更已存在,询问用户是否要继续它或创建一个新的 +- 在继续下一个之前,验证写入后每个产出物文件是否存在 diff --git a/.claude/skills/openspec-apply-change/SKILL.md b/.claude/skills/openspec-apply-change/SKILL.md new file mode 100644 index 0000000..3e8e6d1 --- /dev/null +++ b/.claude/skills/openspec-apply-change/SKILL.md @@ -0,0 +1,156 @@ +--- +name: openspec-apply-change +description: 实现 OpenSpec 变更中的任务。当用户想要开始实现、继续实现或处理任务时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +实现 OpenSpec 变更中的任务。 + +**输入**:可选指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或不明确,你**必须**提示获取可用变更。 + +**步骤** + +1. **选择变更** + + 如果提供了名称,使用它。否则: + - 如果用户提到了某个变更,从对话上下文中推断 + - 如果只存在一个活动变更,自动选择 + - 如果不明确,运行 `openspec-cn list --json` 获取可用变更,并使用 **AskUserQuestion tool** 让用户选择 + + 始终宣布:"正在使用变更:"以及如何覆盖(例如,`/opsx:apply `)。 + +2. **检查状态以了解 Schema** + ```bash + openspec-cn status --change "" --json + ``` + 解析 JSON 以了解: + - `schemaName`:正在使用的工作流(例如:"spec-driven") + - 哪个产出物包含任务(对于 spec-driven 通常是 "tasks",检查其他产出物的状态) + +3. **获取应用指令** + + ```bash + openspec-cn instructions apply --change "" --json + ``` + + 这返回: + - 上下文文件路径(因 Schema 而异 - 可能是 proposal/specs/design/tasks 或 spec/tests/implementation/docs) + - 进度(总计,完成,剩余) + - 带有状态的任务列表 + - 基于当前状态的动态指令 + + **处理状态:** + - 如果 `state: "blocked"`(缺少产出物):显示消息,建议使用 openspec-continue-change + - 如果 `state: "all_done"`:祝贺,建议归档 + - 否则:继续实现 + +4. **阅读上下文文件** + + 阅读 apply instructions 输出中 `contextFiles` 列出的文件。 + 文件取决于正在使用的 Schema: + - **spec-driven**: proposal, specs, design, tasks + - 其他模式:遵循 CLI 输出中的 contextFiles + +5. **显示当前进度** + + 显示: + - 正在使用的 Schema + - 进度:"N/M 任务已完成" + - 剩余任务概览 + - 来自 CLI 的动态指令 + +6. **实现任务(循环直到完成或受阻)** + + 对于每个待处理任务: + - 显示正在处理哪个任务 + - 进行所需的代码更改 + - 保持更改最小化且专注 + - 在任务文件中标记任务完成:`- [ ]` → `- [x]` + - 继续下一个任务 + + **暂停如果:** + - 任务不清楚 → 询问澄清 + - 实现揭示了设计问题 → 建议更新产出物 + - 遇到错误或阻碍 → 报告并等待指导 + - 用户中断 + +7. **完成或暂停时,显示状态** + + 显示: + - 本次会话完成的任务 + - 总体进度:"N/M 任务已完成" + - 如果全部完成:建议归档 + - 如果暂停:解释原因并等待指导 + +**实现期间的输出** + +``` +## 正在实现: (schema: ) + +正在处理任务 3/7: +[...正在进行实现...] +✓ 任务完成 + +正在处理任务 4/7: +[...正在进行实现...] +✓ 任务完成 +``` + +**完成时的输出** + +``` +## 实现完成 + +**变更:** +**Schema:** +**进度:** 7/7 任务已完成 ✓ + +### 本次会话已完成 +- [x] 任务 1 +- [x] 任务 2 +... + +所有任务已完成!准备归档此变更。 +``` + +**暂停时的输出(遇到问题)** + +``` +## 实现暂停 + +**变更:** +**Schema:** +**进度:** 4/7 任务已完成 + +### 遇到的问题 +<问题描述> + +**选项:** +1. <选项 1> +2. <选项 2> +3. 其他方法 + +您想怎么做? +``` + +**护栏** +- 继续执行任务直到完成或受阻 +- 开始前始终阅读上下文文件(来自 apply instructions 输出) +- 如果任务模棱两可,暂停并在实现前询问 +- 如果实现揭示了问题,暂停并建议更新产出物 +- 保持代码更改最小化并限定在每个任务范围内 +- 完成每个任务后立即更新任务复选框 +- 遇到错误、阻碍或不清楚的需求时暂停 - 不要猜测 +- 使用 CLI 输出中的 contextFiles,不要假设特定的文件名 + +**流畅的工作流集成** + +此技能支持"变更上的操作"模型: + +- **可以随时调用**:在所有产出物完成之前(如果存在任务),部分实现之后,与其他操作交错 +- **允许产出物更新**:如果实现揭示了设计问题,建议更新产出物 - 不是阶段锁定的,流畅地工作 diff --git a/.claude/skills/openspec-archive-change/SKILL.md b/.claude/skills/openspec-archive-change/SKILL.md new file mode 100644 index 0000000..38dcb05 --- /dev/null +++ b/.claude/skills/openspec-archive-change/SKILL.md @@ -0,0 +1,114 @@ +--- +name: openspec-archive-change +description: 归档实验性工作流中已完成的变更。当用户想要在实现完成后最终确定并归档变更时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +归档实验性工作流中已完成的变更。 + +**输入**:可选指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或不明确,你**必须**提示获取可用变更。 + +**步骤** + +1. **如果没有提供变更名称,提示选择** + + 运行 `openspec-cn list --json` 获取可用变更。使用 **AskUserQuestion tool** 让用户选择。 + + 仅显示活动变更(未归档的)。 + 如果可用,包括每个变更使用的 Schema。 + + **重要提示**:不要猜测或自动选择变更。始终让用户选择。 + +2. **检查产出物完成状态** + + 运行 `openspec-cn status --change "" --json` 检查产出物完成情况。 + + 解析 JSON 以了解: + - `schemaName`:正在使用的工作流 + - `artifacts`:产出物列表及其状态(`done` 或其他) + + **如果有任何产出物未 `done`:** + - 显示列出未完成产出物的警告 + - 使用 **AskUserQuestion tool** 确认用户是否要继续 + - 如果用户确认,则继续 + +3. **检查任务完成状态** + + 阅读任务文件(通常是 `tasks.md`)以检查未完成的任务。 + + 统计标记为 `- [ ]`(未完成)与 `- [x]`(已完成)的任务。 + + **如果发现未完成的任务:** + - 显示警告,显示未完成任务的数量 + - 使用 **AskUserQuestion tool** 确认用户是否要继续 + - 如果用户确认,则继续 + + **如果没有任务文件存在:** 继续,无需任务相关警告。 + +4. **评估增量规范同步状态** + + 检查 `openspec/changes//specs/` 中的增量规范。如果不存在,则在没有同步提示的情况下继续。 + + **如果存在增量规范:** + - 将每个增量规范与其在 `openspec/specs//spec.md` 对应的各主规范进行比较 + - 确定将应用哪些更改(添加、修改、移除、重命名) + - 在提示前显示综合摘要 + + **提示选项:** + - 如果需要更改:"立即同步(推荐)"、"归档而不同步" + - 如果已同步:"立即归档"、"仍然同步"、"取消" + + 如果用户选择同步,使用 Task tool(subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change ''. Delta spec analysis: ")。无论选择如何,都继续归档。 + +5. **执行归档** + + 如果归档目录不存在,则创建它: + ```bash + mkdir -p openspec/changes/archive + ``` + + 使用当前日期生成目标名称:`YYYY-MM-DD-` + + **检查目标是否已存在:** + - 如果是:失败并报错,建议重命名现有归档或使用不同日期 + - 如果否:将变更目录移动到归档 + + ```bash + mv openspec/changes/ openspec/changes/archive/YYYY-MM-DD- + ``` + +6. **显示摘要** + + 显示归档完成摘要,包括: + - 变更名称 + - 使用的 Schema + - 归档位置 + - 规范是否已同步(如果适用) + - 关于任何警告的说明(未完成的产出物/任务) + +**成功时的输出** + +``` +## 归档完成 + +**变更:** +**模式:** +**归档至:** openspec/changes/archive/YYYY-MM-DD-/ +**规范:** ✓ 已同步到主规范(或 "无增量规范" 或 "同步已跳过") + +所有产出物已完成。所有任务已完成。 +``` + +**防护措施** +- 如果未提供变更,始终提示选择 +- 使用产出物图(openspec-cn status --json)进行完成度检查 +- 不要在警告时阻止归档 - 只需告知并确认 +- 移动到归档时保留 .openspec.yaml(它与目录一起移动) +- 显示清晰的操作摘要 +- 如果请求同步,使用 openspec-sync-specs 方法(代理驱动) +- 如果存在增量规格说明,始终运行同步评估并在提示前显示综合摘要 diff --git a/.claude/skills/openspec-explore/SKILL.md b/.claude/skills/openspec-explore/SKILL.md new file mode 100644 index 0000000..1f5ab72 --- /dev/null +++ b/.claude/skills/openspec-explore/SKILL.md @@ -0,0 +1,289 @@ +--- +name: openspec-explore +description: 进入探索模式 - 一个用于探索想法、调查问题和澄清需求的思考伙伴。当用户想要在进行更改之前或期间深入思考某事时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +进入探索模式。深入思考。自由想象。跟随对话的任何方向。 + +**重要提示:探索模式是为了思考,而不是为了实施。** 你可以阅读文件、搜索代码和调查代码库,但你绝不能编写代码或实现功能。如果用户要求你实现某些内容,请提醒他们先退出探索模式(例如,使用 `/opsx:new` 或 `/opsx:ff` 开始变更)。如果用户要求,你可以创建 OpenSpec 产出物(提案、设计、规格说明)——这是捕捉思考,而不是实施。 + +**这是一种姿态,而不是一种工作流。** 没有固定的步骤,没有要求的顺序,没有强制性的输出。你是一个思考伙伴,帮助用户进行探索。 + +--- + +## 姿态 + +- **好奇而非说教** - 提出自然产生的问题,不要照本宣科 +- **开放话题而非审问** - 浮现多个有趣的方向,让用户选择产生共鸣的部分。不要把他们限制在单一的提问路径中。 +- **可视化** - 在有助于澄清思路时大方使用 ASCII 图表 +- **自适应** - 跟随有趣的话题,当新信息出现时及时转换 +- **耐心** - 不要急于下结论,让问题的轮廓自然显现 +- **务实** - 在相关时探索实际的代码库,不要仅仅停留在理论上 + +--- + +## 你可能做的事情 + +根据用户提出的内容,你可能会: + +**探索问题空间** +- 针对他们所说的内容提出澄清性问题 +- 挑战假设 +- 重新构建问题 +- 寻找类比 + +**调查代码库** +- 绘制与讨论相关的现有架构图 +- 寻找集成点 +- 识别已在使用的模式 +- 揭示隐藏的复杂性 + +**比较选项** +- 头脑风暴多种方法 +- 构建比较表 +- 勾勒权衡 +- 推荐路径(如果被询问) + +**可视化** +``` +┌─────────────────────────────────────────┐ +│ 大量使用 ASCII 图表 │ +├─────────────────────────────────────────┤ +│ │ +│ ┌────────┐ ┌────────┐ │ +│ │ 状态 │────────▶│ 状态 │ │ +│ │ A │ │ B │ │ +│ └────────┘ └────────┘ │ +│ │ +│ 系统图、状态机、数据流、 │ +│ 架构草图、依赖图、比较表 │ +│ │ +└─────────────────────────────────────────┘ +``` + +**揭示风险和未知数** +- 识别可能出错的地方 +- 发现理解上的差距 +- 建议进行探针(Spike)或调查 + +--- + +## OpenSpec 意识 + +你拥有 OpenSpec 系统的完整上下文。自然地使用它,不要强行使用。 + +### 检查上下文 + +开始时,快速检查存在什么: +```bash +openspec-cn list --json +``` + +这会告诉你: +- 是否有活跃的变更 +- 它们的名称、模式和状态 +- 用户可能正在处理的内容 + +### 当不存在变更时 + +自由思考。当见解清晰时,你可以提议: + +- "这感觉足够扎实,可以开始一个变更了。要我创建一个吗?" + → 可以过渡到 `/opsx:new` 或 `/opsx:ff` +- 或者继续探索 - 没有形式化的压力 + +### 当存在变更时 + +如果用户提到变更或你检测到相关变更: + +1. **阅读现有产出物以获取上下文** + - `openspec/changes//proposal.md` + - `openspec/changes//design.md` + - `openspec/changes//tasks.md` + - 等等 + +2. **在对话中自然地引用它们** + - "你的设计提到使用 Redis,但我们刚刚意识到 SQLite 更合适……" + - "提案将此范围限定为高级用户,但我们现在考虑面向所有人……" + +3. **当做出决定时提议捕获** + + | 见解类型 | 捕获位置 | + |--------------|------------------| + | 发现新需求 | `specs//spec.md` | + | 需求变更 | `specs//spec.md` | + | 做出设计决策 | `design.md` | + | 范围变更 | `proposal.md` | + | 识别出新工作 | `tasks.md` | + | 假设失效 | 相关产出物 | + + 提议示例: + - "这是一个设计决策。要把它记录在 design.md 中吗?" + - "这是一个新需求。要把它添加到 specs 中吗?" + - "这改变了范围。要更新 proposal 吗?" + +4. **由用户决定** - 提议并继续。不要施压。不要自动捕获。 + +--- + +## 你不必做的事情 + +- 遵循脚本 +- 每次都问相同的问题 +- 生成特定的产出物 +- 得出结论 +- 如果离题有价值,不必保持在主题上 +- 简短(这是思考时间) + +--- + +## 处理不同的切入点 + +**用户提出一个模糊的想法:** +``` +用户: 我正在考虑添加实时协作 + +你: 实时协作是一个很大的领域。让我想想…… + + 协作谱系 + ════════════════════════════════════════════ + + 感知 协调 同步 + │ │ │ + ▼ ▼ ▼ + ┌────────┐ ┌────────┐ ┌────────┐ + │ 存在 │ │ 光标 │ │ CRDT │ + │ "3人 │ │ 多选 │ │ 无冲突 │ + │ 在线" │ │ │ │ │ + └────────┘ └────────┘ └────────┘ + │ │ │ + 简单 中等 复杂 + + 你的想法倾向于哪里? +``` + +**用户提出一个具体问题:** +``` +用户: 认证系统一团糟 + +你: [阅读代码库] + + ┌─────────────────────────────────────────────┐ + │ 当前认证流程 │ + └─────────────────────────────────────────────┘ + │ + ┌─────────────┼─────────────┐ + ▼ ▼ ▼ + ┌─────────┐ ┌─────────┐ ┌─────────┐ + │ Google │ │ GitHub │ │ Email │ + │ OAuth │ │ OAuth │ │ Magic │ + └────┬────┘ └────┬────┘ └────┬────┘ + │ │ │ + └─────────────┼─────────────┘ + ▼ + ┌───────────┐ + │ 会话 │ + └─────┬─────┘ + │ + ▼ + ┌───────────┐ + │ 权限 │ + └───────────┘ + + 我看到三个纠结的地方。哪个最紧急? +``` + +**用户在实施中途卡住:** +``` +用户: /opsx:explore add-auth-system + OAuth 集成比预期的要复杂 + +你: [阅读变更产出物] + + 你在任务 4:"实现 OAuth 流程" + + 让我追踪一下涉及的内容…… + + [绘制图表,探索选项,建议路径] + + 想要更新设计以反映这一点吗? + 或者添加一个探针任务来调查? +``` + +**用户想要比较选项:** +``` +用户: 我们应该用 Postgres 还是 SQLite? + +你: 通用的回答很无聊。上下文是什么? + +用户: 一个跟踪本地开发环境的 CLI 工具 + +你: 那改变了一切。 + + ┌─────────────────────────────────────────────────┐ + │ CLI 工具数据存储 │ + └─────────────────────────────────────────────────┘ + + 关键约束: + • 无后台进程运行 + • 必须离线工作 + • 单用户 + + SQLite Postgres + 部署 嵌入式 ✓ 需要服务器 ✗ + 离线 是 ✓ 否 ✗ + 单文件 是 ✓ 否 ✗ + + SQLite。毫无疑问。 + + 除非……有同步组件吗? +``` + +--- + +## 结束探索 + +没有要求的结束方式。探索可能会: + +- **流入行动**:"准备好开始了吗? /opsx:new 或 /opsx:ff" +- **导致产出物更新**:"已用这些决定更新 design.md" +- **仅提供清晰度**:用户得到了他们需要的,继续前进 +- **稍后继续**:"我们可以随时继续这个话题" + +当感觉事情变得清晰时,你可以总结: + +``` +## 我们弄清楚了什么 + +**问题**:[清晰的理解] + +**方法**:[如果出现了一个] + +**未决问题**:[如果还有] + +**下一步**(如果准备好了): +- 创建变更:/opsx:new +- 快进到任务:/opsx:ff +- 继续探索:继续交谈 +``` + +但这个总结是可选的。有时思考本身就是价值。 + +--- + +## 护栏 + +- **不要实施** - 绝不编写代码或实现功能。创建 OpenSpec 产出物是可以的,编写应用程序代码是不行的。 +- **不要假装理解** - 如果某些事情不清楚,请深入挖掘 +- **不要匆忙** - 发现是思考时间,而不是任务时间 +- **不要强加结构** - 让模式自然浮现 +- **不要自动捕捉** - 提议保存见解,不要直接做 +- **要可视化** - 一个好的图表胜过千言万语 +- **要探索代码库** - 将讨论建立在现实基础上 +- **要质疑假设** - 包括用户的和你自己的 diff --git a/.claude/skills/openspec-propose/SKILL.md b/.claude/skills/openspec-propose/SKILL.md new file mode 100644 index 0000000..6ac7c65 --- /dev/null +++ b/.claude/skills/openspec-propose/SKILL.md @@ -0,0 +1,110 @@ +--- +name: openspec-propose +description: 一步提案新变更并生成所有产出物。当用户想要快速描述他们想要构建的内容,并获得包含设计、规格说明和任务的完整提案以准备实现时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +提案新变更 - 一步创建变更并生成所有产出物。 + +我将创建一个包含以下产出物的变更: +- proposal.md(什么和为什么) +- design.md(如何) +- tasks.md(实现步骤) + +准备好实现后,运行 /opsx:apply + +--- + +**输入**:用户的请求应包含变更名称(kebab-case)或对他们想要构建内容的描述。 + +**步骤** + +1. **如果没有提供明确的输入,询问他们想要构建什么** + + 使用 **AskUserQuestion tool**(开放式,无预设选项)询问: + > "您想要处理什么变更?请描述您想要构建或修复的内容。" + + 根据他们的描述,推导出一个 kebab-case 名称(例如:"add user authentication" → `add-user-auth`)。 + + **重要提示**:在不了解用户想要构建什么的情况下,请勿继续。 + +2. **创建变更目录** + ```bash + openspec-cn new change "" + ``` + 这将在 `openspec/changes//` 创建一个带有 `.openspec.yaml` 的脚手架变更。 + +3. **获取产出物构建顺序** + ```bash + openspec-cn status --change "" --json + ``` + 解析 JSON 以获取: + - `applyRequires`: 实现前所需的产出物 ID 数组(例如:`["tasks"]`) + - `artifacts`: 所有产出物及其状态和依赖项的列表 + +4. **按顺序创建产出物直到准备好应用** + + 使用 **TodoWrite tool** 跟踪产出物的进度。 + + 按依赖顺序循环遍历产出物(没有待处理依赖项的产出物优先): + + a. **对于每个 `ready`(依赖项已满足)的产出物**: + - 获取指令: + ```bash + openspec-cn instructions --change "" --json + ``` + - 指令 JSON 包括: + - `context`:项目背景(对你的约束 - 不要包含在输出中) + - `rules`:产出物特定规则(对你的约束 - 不要包含在输出中) + - `template`:用于输出文件的结构 + - `instruction`:此产出物类型的 Schema 特定指导 + - `outputPath`:写入产出物的位置 + - `dependencies`:已完成的产出物,用于读取上下文 + - 读取任何已完成的依赖文件以获取上下文 + - 使用 `template` 作为结构创建产出物文件 + - 应用 `context` 和 `rules` 作为约束 - 但不要将它们复制到文件中 + - 显示简短进度:"✓ 已创建 " + + b. **继续直到所有 `applyRequires` 产出物完成** + - 创建每个产出物后,重新运行 `openspec-cn status --change "" --json` + - 检查 `applyRequires` 中的每个产出物 ID 在 artifacts 数组中是否具有 `status: "done"` + - 当所有 `applyRequires` 产出物完成时停止 + + c. **如果产出物需要用户输入**(上下文不清楚): + - 使用 **AskUserQuestion tool** 进行澄清 + - 然后继续创建 + +5. **显示最终状态** + ```bash + openspec-cn status --change "" + ``` + +**输出** + +完成所有产出物后,总结: +- 变更名称和位置 +- 已创建产出物的列表及简要描述 +- 准备就绪:"所有产出物已创建!准备好实现。" +- 提示:"运行 `/opsx:apply` 或要求我实现以开始处理任务。" + +**产出物创建指南** + +- 遵循每个产出物类型的 `openspec-cn instructions` 中的 `instruction` 字段 +- Schema 定义了每个产出物应包含的内容 - 遵循它 +- 在创建新产出物之前阅读依赖产出物以获取上下文 +- 使用 `template` 作为输出文件的结构 - 填充其各个部分 +- **重要提示**:`context` 和 `rules` 是对你的约束,而不是文件内容 + - 不要将 ``、``、`` 块复制到产出物中 + - 这些引导你编写内容,但不应出现在输出中 + +**护栏** +- 创建实现所需的所有产出物(由 Schema 的 `apply.requires` 定义) +- 在创建新产出物之前始终阅读依赖产出物 +- 如果上下文极其不清楚,询问用户 - 但倾向于做出合理的决定以保持势头 +- 如果同名变更已存在,询问用户是否要继续它或创建一个新的 +- 在继续下一个之前,验证写入后每个产出物文件是否存在 diff --git a/.codex/skills/openspec-apply-change/SKILL.md b/.codex/skills/openspec-apply-change/SKILL.md new file mode 100644 index 0000000..3e8e6d1 --- /dev/null +++ b/.codex/skills/openspec-apply-change/SKILL.md @@ -0,0 +1,156 @@ +--- +name: openspec-apply-change +description: 实现 OpenSpec 变更中的任务。当用户想要开始实现、继续实现或处理任务时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +实现 OpenSpec 变更中的任务。 + +**输入**:可选指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或不明确,你**必须**提示获取可用变更。 + +**步骤** + +1. **选择变更** + + 如果提供了名称,使用它。否则: + - 如果用户提到了某个变更,从对话上下文中推断 + - 如果只存在一个活动变更,自动选择 + - 如果不明确,运行 `openspec-cn list --json` 获取可用变更,并使用 **AskUserQuestion tool** 让用户选择 + + 始终宣布:"正在使用变更:"以及如何覆盖(例如,`/opsx:apply `)。 + +2. **检查状态以了解 Schema** + ```bash + openspec-cn status --change "" --json + ``` + 解析 JSON 以了解: + - `schemaName`:正在使用的工作流(例如:"spec-driven") + - 哪个产出物包含任务(对于 spec-driven 通常是 "tasks",检查其他产出物的状态) + +3. **获取应用指令** + + ```bash + openspec-cn instructions apply --change "" --json + ``` + + 这返回: + - 上下文文件路径(因 Schema 而异 - 可能是 proposal/specs/design/tasks 或 spec/tests/implementation/docs) + - 进度(总计,完成,剩余) + - 带有状态的任务列表 + - 基于当前状态的动态指令 + + **处理状态:** + - 如果 `state: "blocked"`(缺少产出物):显示消息,建议使用 openspec-continue-change + - 如果 `state: "all_done"`:祝贺,建议归档 + - 否则:继续实现 + +4. **阅读上下文文件** + + 阅读 apply instructions 输出中 `contextFiles` 列出的文件。 + 文件取决于正在使用的 Schema: + - **spec-driven**: proposal, specs, design, tasks + - 其他模式:遵循 CLI 输出中的 contextFiles + +5. **显示当前进度** + + 显示: + - 正在使用的 Schema + - 进度:"N/M 任务已完成" + - 剩余任务概览 + - 来自 CLI 的动态指令 + +6. **实现任务(循环直到完成或受阻)** + + 对于每个待处理任务: + - 显示正在处理哪个任务 + - 进行所需的代码更改 + - 保持更改最小化且专注 + - 在任务文件中标记任务完成:`- [ ]` → `- [x]` + - 继续下一个任务 + + **暂停如果:** + - 任务不清楚 → 询问澄清 + - 实现揭示了设计问题 → 建议更新产出物 + - 遇到错误或阻碍 → 报告并等待指导 + - 用户中断 + +7. **完成或暂停时,显示状态** + + 显示: + - 本次会话完成的任务 + - 总体进度:"N/M 任务已完成" + - 如果全部完成:建议归档 + - 如果暂停:解释原因并等待指导 + +**实现期间的输出** + +``` +## 正在实现: (schema: ) + +正在处理任务 3/7: +[...正在进行实现...] +✓ 任务完成 + +正在处理任务 4/7: +[...正在进行实现...] +✓ 任务完成 +``` + +**完成时的输出** + +``` +## 实现完成 + +**变更:** +**Schema:** +**进度:** 7/7 任务已完成 ✓ + +### 本次会话已完成 +- [x] 任务 1 +- [x] 任务 2 +... + +所有任务已完成!准备归档此变更。 +``` + +**暂停时的输出(遇到问题)** + +``` +## 实现暂停 + +**变更:** +**Schema:** +**进度:** 4/7 任务已完成 + +### 遇到的问题 +<问题描述> + +**选项:** +1. <选项 1> +2. <选项 2> +3. 其他方法 + +您想怎么做? +``` + +**护栏** +- 继续执行任务直到完成或受阻 +- 开始前始终阅读上下文文件(来自 apply instructions 输出) +- 如果任务模棱两可,暂停并在实现前询问 +- 如果实现揭示了问题,暂停并建议更新产出物 +- 保持代码更改最小化并限定在每个任务范围内 +- 完成每个任务后立即更新任务复选框 +- 遇到错误、阻碍或不清楚的需求时暂停 - 不要猜测 +- 使用 CLI 输出中的 contextFiles,不要假设特定的文件名 + +**流畅的工作流集成** + +此技能支持"变更上的操作"模型: + +- **可以随时调用**:在所有产出物完成之前(如果存在任务),部分实现之后,与其他操作交错 +- **允许产出物更新**:如果实现揭示了设计问题,建议更新产出物 - 不是阶段锁定的,流畅地工作 diff --git a/.codex/skills/openspec-archive-change/SKILL.md b/.codex/skills/openspec-archive-change/SKILL.md new file mode 100644 index 0000000..38dcb05 --- /dev/null +++ b/.codex/skills/openspec-archive-change/SKILL.md @@ -0,0 +1,114 @@ +--- +name: openspec-archive-change +description: 归档实验性工作流中已完成的变更。当用户想要在实现完成后最终确定并归档变更时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +归档实验性工作流中已完成的变更。 + +**输入**:可选指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或不明确,你**必须**提示获取可用变更。 + +**步骤** + +1. **如果没有提供变更名称,提示选择** + + 运行 `openspec-cn list --json` 获取可用变更。使用 **AskUserQuestion tool** 让用户选择。 + + 仅显示活动变更(未归档的)。 + 如果可用,包括每个变更使用的 Schema。 + + **重要提示**:不要猜测或自动选择变更。始终让用户选择。 + +2. **检查产出物完成状态** + + 运行 `openspec-cn status --change "" --json` 检查产出物完成情况。 + + 解析 JSON 以了解: + - `schemaName`:正在使用的工作流 + - `artifacts`:产出物列表及其状态(`done` 或其他) + + **如果有任何产出物未 `done`:** + - 显示列出未完成产出物的警告 + - 使用 **AskUserQuestion tool** 确认用户是否要继续 + - 如果用户确认,则继续 + +3. **检查任务完成状态** + + 阅读任务文件(通常是 `tasks.md`)以检查未完成的任务。 + + 统计标记为 `- [ ]`(未完成)与 `- [x]`(已完成)的任务。 + + **如果发现未完成的任务:** + - 显示警告,显示未完成任务的数量 + - 使用 **AskUserQuestion tool** 确认用户是否要继续 + - 如果用户确认,则继续 + + **如果没有任务文件存在:** 继续,无需任务相关警告。 + +4. **评估增量规范同步状态** + + 检查 `openspec/changes//specs/` 中的增量规范。如果不存在,则在没有同步提示的情况下继续。 + + **如果存在增量规范:** + - 将每个增量规范与其在 `openspec/specs//spec.md` 对应的各主规范进行比较 + - 确定将应用哪些更改(添加、修改、移除、重命名) + - 在提示前显示综合摘要 + + **提示选项:** + - 如果需要更改:"立即同步(推荐)"、"归档而不同步" + - 如果已同步:"立即归档"、"仍然同步"、"取消" + + 如果用户选择同步,使用 Task tool(subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change ''. Delta spec analysis: ")。无论选择如何,都继续归档。 + +5. **执行归档** + + 如果归档目录不存在,则创建它: + ```bash + mkdir -p openspec/changes/archive + ``` + + 使用当前日期生成目标名称:`YYYY-MM-DD-` + + **检查目标是否已存在:** + - 如果是:失败并报错,建议重命名现有归档或使用不同日期 + - 如果否:将变更目录移动到归档 + + ```bash + mv openspec/changes/ openspec/changes/archive/YYYY-MM-DD- + ``` + +6. **显示摘要** + + 显示归档完成摘要,包括: + - 变更名称 + - 使用的 Schema + - 归档位置 + - 规范是否已同步(如果适用) + - 关于任何警告的说明(未完成的产出物/任务) + +**成功时的输出** + +``` +## 归档完成 + +**变更:** +**模式:** +**归档至:** openspec/changes/archive/YYYY-MM-DD-/ +**规范:** ✓ 已同步到主规范(或 "无增量规范" 或 "同步已跳过") + +所有产出物已完成。所有任务已完成。 +``` + +**防护措施** +- 如果未提供变更,始终提示选择 +- 使用产出物图(openspec-cn status --json)进行完成度检查 +- 不要在警告时阻止归档 - 只需告知并确认 +- 移动到归档时保留 .openspec.yaml(它与目录一起移动) +- 显示清晰的操作摘要 +- 如果请求同步,使用 openspec-sync-specs 方法(代理驱动) +- 如果存在增量规格说明,始终运行同步评估并在提示前显示综合摘要 diff --git a/.codex/skills/openspec-explore/SKILL.md b/.codex/skills/openspec-explore/SKILL.md new file mode 100644 index 0000000..1f5ab72 --- /dev/null +++ b/.codex/skills/openspec-explore/SKILL.md @@ -0,0 +1,289 @@ +--- +name: openspec-explore +description: 进入探索模式 - 一个用于探索想法、调查问题和澄清需求的思考伙伴。当用户想要在进行更改之前或期间深入思考某事时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +进入探索模式。深入思考。自由想象。跟随对话的任何方向。 + +**重要提示:探索模式是为了思考,而不是为了实施。** 你可以阅读文件、搜索代码和调查代码库,但你绝不能编写代码或实现功能。如果用户要求你实现某些内容,请提醒他们先退出探索模式(例如,使用 `/opsx:new` 或 `/opsx:ff` 开始变更)。如果用户要求,你可以创建 OpenSpec 产出物(提案、设计、规格说明)——这是捕捉思考,而不是实施。 + +**这是一种姿态,而不是一种工作流。** 没有固定的步骤,没有要求的顺序,没有强制性的输出。你是一个思考伙伴,帮助用户进行探索。 + +--- + +## 姿态 + +- **好奇而非说教** - 提出自然产生的问题,不要照本宣科 +- **开放话题而非审问** - 浮现多个有趣的方向,让用户选择产生共鸣的部分。不要把他们限制在单一的提问路径中。 +- **可视化** - 在有助于澄清思路时大方使用 ASCII 图表 +- **自适应** - 跟随有趣的话题,当新信息出现时及时转换 +- **耐心** - 不要急于下结论,让问题的轮廓自然显现 +- **务实** - 在相关时探索实际的代码库,不要仅仅停留在理论上 + +--- + +## 你可能做的事情 + +根据用户提出的内容,你可能会: + +**探索问题空间** +- 针对他们所说的内容提出澄清性问题 +- 挑战假设 +- 重新构建问题 +- 寻找类比 + +**调查代码库** +- 绘制与讨论相关的现有架构图 +- 寻找集成点 +- 识别已在使用的模式 +- 揭示隐藏的复杂性 + +**比较选项** +- 头脑风暴多种方法 +- 构建比较表 +- 勾勒权衡 +- 推荐路径(如果被询问) + +**可视化** +``` +┌─────────────────────────────────────────┐ +│ 大量使用 ASCII 图表 │ +├─────────────────────────────────────────┤ +│ │ +│ ┌────────┐ ┌────────┐ │ +│ │ 状态 │────────▶│ 状态 │ │ +│ │ A │ │ B │ │ +│ └────────┘ └────────┘ │ +│ │ +│ 系统图、状态机、数据流、 │ +│ 架构草图、依赖图、比较表 │ +│ │ +└─────────────────────────────────────────┘ +``` + +**揭示风险和未知数** +- 识别可能出错的地方 +- 发现理解上的差距 +- 建议进行探针(Spike)或调查 + +--- + +## OpenSpec 意识 + +你拥有 OpenSpec 系统的完整上下文。自然地使用它,不要强行使用。 + +### 检查上下文 + +开始时,快速检查存在什么: +```bash +openspec-cn list --json +``` + +这会告诉你: +- 是否有活跃的变更 +- 它们的名称、模式和状态 +- 用户可能正在处理的内容 + +### 当不存在变更时 + +自由思考。当见解清晰时,你可以提议: + +- "这感觉足够扎实,可以开始一个变更了。要我创建一个吗?" + → 可以过渡到 `/opsx:new` 或 `/opsx:ff` +- 或者继续探索 - 没有形式化的压力 + +### 当存在变更时 + +如果用户提到变更或你检测到相关变更: + +1. **阅读现有产出物以获取上下文** + - `openspec/changes//proposal.md` + - `openspec/changes//design.md` + - `openspec/changes//tasks.md` + - 等等 + +2. **在对话中自然地引用它们** + - "你的设计提到使用 Redis,但我们刚刚意识到 SQLite 更合适……" + - "提案将此范围限定为高级用户,但我们现在考虑面向所有人……" + +3. **当做出决定时提议捕获** + + | 见解类型 | 捕获位置 | + |--------------|------------------| + | 发现新需求 | `specs//spec.md` | + | 需求变更 | `specs//spec.md` | + | 做出设计决策 | `design.md` | + | 范围变更 | `proposal.md` | + | 识别出新工作 | `tasks.md` | + | 假设失效 | 相关产出物 | + + 提议示例: + - "这是一个设计决策。要把它记录在 design.md 中吗?" + - "这是一个新需求。要把它添加到 specs 中吗?" + - "这改变了范围。要更新 proposal 吗?" + +4. **由用户决定** - 提议并继续。不要施压。不要自动捕获。 + +--- + +## 你不必做的事情 + +- 遵循脚本 +- 每次都问相同的问题 +- 生成特定的产出物 +- 得出结论 +- 如果离题有价值,不必保持在主题上 +- 简短(这是思考时间) + +--- + +## 处理不同的切入点 + +**用户提出一个模糊的想法:** +``` +用户: 我正在考虑添加实时协作 + +你: 实时协作是一个很大的领域。让我想想…… + + 协作谱系 + ════════════════════════════════════════════ + + 感知 协调 同步 + │ │ │ + ▼ ▼ ▼ + ┌────────┐ ┌────────┐ ┌────────┐ + │ 存在 │ │ 光标 │ │ CRDT │ + │ "3人 │ │ 多选 │ │ 无冲突 │ + │ 在线" │ │ │ │ │ + └────────┘ └────────┘ └────────┘ + │ │ │ + 简单 中等 复杂 + + 你的想法倾向于哪里? +``` + +**用户提出一个具体问题:** +``` +用户: 认证系统一团糟 + +你: [阅读代码库] + + ┌─────────────────────────────────────────────┐ + │ 当前认证流程 │ + └─────────────────────────────────────────────┘ + │ + ┌─────────────┼─────────────┐ + ▼ ▼ ▼ + ┌─────────┐ ┌─────────┐ ┌─────────┐ + │ Google │ │ GitHub │ │ Email │ + │ OAuth │ │ OAuth │ │ Magic │ + └────┬────┘ └────┬────┘ └────┬────┘ + │ │ │ + └─────────────┼─────────────┘ + ▼ + ┌───────────┐ + │ 会话 │ + └─────┬─────┘ + │ + ▼ + ┌───────────┐ + │ 权限 │ + └───────────┘ + + 我看到三个纠结的地方。哪个最紧急? +``` + +**用户在实施中途卡住:** +``` +用户: /opsx:explore add-auth-system + OAuth 集成比预期的要复杂 + +你: [阅读变更产出物] + + 你在任务 4:"实现 OAuth 流程" + + 让我追踪一下涉及的内容…… + + [绘制图表,探索选项,建议路径] + + 想要更新设计以反映这一点吗? + 或者添加一个探针任务来调查? +``` + +**用户想要比较选项:** +``` +用户: 我们应该用 Postgres 还是 SQLite? + +你: 通用的回答很无聊。上下文是什么? + +用户: 一个跟踪本地开发环境的 CLI 工具 + +你: 那改变了一切。 + + ┌─────────────────────────────────────────────────┐ + │ CLI 工具数据存储 │ + └─────────────────────────────────────────────────┘ + + 关键约束: + • 无后台进程运行 + • 必须离线工作 + • 单用户 + + SQLite Postgres + 部署 嵌入式 ✓ 需要服务器 ✗ + 离线 是 ✓ 否 ✗ + 单文件 是 ✓ 否 ✗ + + SQLite。毫无疑问。 + + 除非……有同步组件吗? +``` + +--- + +## 结束探索 + +没有要求的结束方式。探索可能会: + +- **流入行动**:"准备好开始了吗? /opsx:new 或 /opsx:ff" +- **导致产出物更新**:"已用这些决定更新 design.md" +- **仅提供清晰度**:用户得到了他们需要的,继续前进 +- **稍后继续**:"我们可以随时继续这个话题" + +当感觉事情变得清晰时,你可以总结: + +``` +## 我们弄清楚了什么 + +**问题**:[清晰的理解] + +**方法**:[如果出现了一个] + +**未决问题**:[如果还有] + +**下一步**(如果准备好了): +- 创建变更:/opsx:new +- 快进到任务:/opsx:ff +- 继续探索:继续交谈 +``` + +但这个总结是可选的。有时思考本身就是价值。 + +--- + +## 护栏 + +- **不要实施** - 绝不编写代码或实现功能。创建 OpenSpec 产出物是可以的,编写应用程序代码是不行的。 +- **不要假装理解** - 如果某些事情不清楚,请深入挖掘 +- **不要匆忙** - 发现是思考时间,而不是任务时间 +- **不要强加结构** - 让模式自然浮现 +- **不要自动捕捉** - 提议保存见解,不要直接做 +- **要可视化** - 一个好的图表胜过千言万语 +- **要探索代码库** - 将讨论建立在现实基础上 +- **要质疑假设** - 包括用户的和你自己的 diff --git a/.codex/skills/openspec-propose/SKILL.md b/.codex/skills/openspec-propose/SKILL.md new file mode 100644 index 0000000..6ac7c65 --- /dev/null +++ b/.codex/skills/openspec-propose/SKILL.md @@ -0,0 +1,110 @@ +--- +name: openspec-propose +description: 一步提案新变更并生成所有产出物。当用户想要快速描述他们想要构建的内容,并获得包含设计、规格说明和任务的完整提案以准备实现时使用。 +license: MIT +compatibility: 需要 openspec CLI。 +metadata: + author: openspec + version: "1.0" + generatedBy: "1.2.0-2" +--- + +提案新变更 - 一步创建变更并生成所有产出物。 + +我将创建一个包含以下产出物的变更: +- proposal.md(什么和为什么) +- design.md(如何) +- tasks.md(实现步骤) + +准备好实现后,运行 /opsx:apply + +--- + +**输入**:用户的请求应包含变更名称(kebab-case)或对他们想要构建内容的描述。 + +**步骤** + +1. **如果没有提供明确的输入,询问他们想要构建什么** + + 使用 **AskUserQuestion tool**(开放式,无预设选项)询问: + > "您想要处理什么变更?请描述您想要构建或修复的内容。" + + 根据他们的描述,推导出一个 kebab-case 名称(例如:"add user authentication" → `add-user-auth`)。 + + **重要提示**:在不了解用户想要构建什么的情况下,请勿继续。 + +2. **创建变更目录** + ```bash + openspec-cn new change "" + ``` + 这将在 `openspec/changes//` 创建一个带有 `.openspec.yaml` 的脚手架变更。 + +3. **获取产出物构建顺序** + ```bash + openspec-cn status --change "" --json + ``` + 解析 JSON 以获取: + - `applyRequires`: 实现前所需的产出物 ID 数组(例如:`["tasks"]`) + - `artifacts`: 所有产出物及其状态和依赖项的列表 + +4. **按顺序创建产出物直到准备好应用** + + 使用 **TodoWrite tool** 跟踪产出物的进度。 + + 按依赖顺序循环遍历产出物(没有待处理依赖项的产出物优先): + + a. **对于每个 `ready`(依赖项已满足)的产出物**: + - 获取指令: + ```bash + openspec-cn instructions --change "" --json + ``` + - 指令 JSON 包括: + - `context`:项目背景(对你的约束 - 不要包含在输出中) + - `rules`:产出物特定规则(对你的约束 - 不要包含在输出中) + - `template`:用于输出文件的结构 + - `instruction`:此产出物类型的 Schema 特定指导 + - `outputPath`:写入产出物的位置 + - `dependencies`:已完成的产出物,用于读取上下文 + - 读取任何已完成的依赖文件以获取上下文 + - 使用 `template` 作为结构创建产出物文件 + - 应用 `context` 和 `rules` 作为约束 - 但不要将它们复制到文件中 + - 显示简短进度:"✓ 已创建 " + + b. **继续直到所有 `applyRequires` 产出物完成** + - 创建每个产出物后,重新运行 `openspec-cn status --change "" --json` + - 检查 `applyRequires` 中的每个产出物 ID 在 artifacts 数组中是否具有 `status: "done"` + - 当所有 `applyRequires` 产出物完成时停止 + + c. **如果产出物需要用户输入**(上下文不清楚): + - 使用 **AskUserQuestion tool** 进行澄清 + - 然后继续创建 + +5. **显示最终状态** + ```bash + openspec-cn status --change "" + ``` + +**输出** + +完成所有产出物后,总结: +- 变更名称和位置 +- 已创建产出物的列表及简要描述 +- 准备就绪:"所有产出物已创建!准备好实现。" +- 提示:"运行 `/opsx:apply` 或要求我实现以开始处理任务。" + +**产出物创建指南** + +- 遵循每个产出物类型的 `openspec-cn instructions` 中的 `instruction` 字段 +- Schema 定义了每个产出物应包含的内容 - 遵循它 +- 在创建新产出物之前阅读依赖产出物以获取上下文 +- 使用 `template` 作为输出文件的结构 - 填充其各个部分 +- **重要提示**:`context` 和 `rules` 是对你的约束,而不是文件内容 + - 不要将 ``、``、`` 块复制到产出物中 + - 这些引导你编写内容,但不应出现在输出中 + +**护栏** +- 创建实现所需的所有产出物(由 Schema 的 `apply.requires` 定义) +- 在创建新产出物之前始终阅读依赖产出物 +- 如果上下文极其不清楚,询问用户 - 但倾向于做出合理的决定以保持势头 +- 如果同名变更已存在,询问用户是否要继续它或创建一个新的 +- 在继续下一个之前,验证写入后每个产出物文件是否存在 diff --git a/.codex/skills/ui-ux-pro-max/SKILL.md b/.codex/skills/ui-ux-pro-max/SKILL.md new file mode 100644 index 0000000..9aed743 --- /dev/null +++ b/.codex/skills/ui-ux-pro-max/SKILL.md @@ -0,0 +1,292 @@ +--- +name: ui-ux-pro-max +description: UI/UX design intelligence with searchable database +--- +# ui-ux-pro-max + +Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations. + +## Prerequisites + +Check if Python is installed: + +```bash +python3 --version || python --version +``` + +If Python is not installed, install it based on user's OS: + +**macOS:** +```bash +brew install python3 +``` + +**Ubuntu/Debian:** +```bash +sudo apt update && sudo apt install python3 +``` + +**Windows:** +```powershell +winget install Python.Python.3.12 +``` + +--- + +## How to Use This Skill + +When user requests UI/UX work (design, build, create, implement, review, fix, improve), follow this workflow: + +### Step 1: Analyze User Requirements + +Extract key information from user request: +- **Product type**: SaaS, e-commerce, portfolio, dashboard, landing page, etc. +- **Style keywords**: minimal, playful, professional, elegant, dark mode, etc. +- **Industry**: healthcare, fintech, gaming, education, etc. +- **Stack**: React, Vue, Next.js, or default to `html-tailwind` + +### Step 2: Generate Design System (REQUIRED) + +**Always start with `--design-system`** to get comprehensive recommendations with reasoning: + +```bash +python3 skills/ui-ux-pro-max/scripts/search.py " " --design-system [-p "Project Name"] +``` + +This command: +1. Searches 5 domains in parallel (product, style, color, landing, typography) +2. Applies reasoning rules from `ui-reasoning.csv` to select best matches +3. Returns complete design system: pattern, style, colors, typography, effects +4. Includes anti-patterns to avoid + +**Example:** +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "beauty spa wellness service" --design-system -p "Serenity Spa" +``` + +### Step 2b: Persist Design System (Master + Overrides Pattern) + +To save the design system for hierarchical retrieval across sessions, add `--persist`: + +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --persist -p "Project Name" +``` + +This creates: +- `design-system/MASTER.md` — Global Source of Truth with all design rules +- `design-system/pages/` — Folder for page-specific overrides + +**With page-specific override:** +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "" --design-system --persist -p "Project Name" --page "dashboard" +``` + +This also creates: +- `design-system/pages/dashboard.md` — Page-specific deviations from Master + +**How hierarchical retrieval works:** +1. When building a specific page (e.g., "Checkout"), first check `design-system/pages/checkout.md` +2. If the page file exists, its rules **override** the Master file +3. If not, use `design-system/MASTER.md` exclusively + +### Step 3: Supplement with Detailed Searches (as needed) + +After getting the design system, use domain searches to get additional details: + +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "" --domain [-n ] +``` + +**When to use detailed searches:** + +| Need | Domain | Example | +|------|--------|---------| +| More style options | `style` | `--domain style "glassmorphism dark"` | +| Chart recommendations | `chart` | `--domain chart "real-time dashboard"` | +| UX best practices | `ux` | `--domain ux "animation accessibility"` | +| Alternative fonts | `typography` | `--domain typography "elegant luxury"` | +| Landing structure | `landing` | `--domain landing "hero social-proof"` | + +### Step 4: Stack Guidelines (Default: html-tailwind) + +Get implementation-specific best practices. If user doesn't specify a stack, **default to `html-tailwind`**. + +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "" --stack html-tailwind +``` + +Available stacks: `html-tailwind`, `react`, `nextjs`, `vue`, `svelte`, `swiftui`, `react-native`, `flutter`, `shadcn`, `jetpack-compose` + +--- + +## Search Reference + +### Available Domains + +| Domain | Use For | Example Keywords | +|--------|---------|------------------| +| `product` | Product type recommendations | SaaS, e-commerce, portfolio, healthcare, beauty, service | +| `style` | UI styles, colors, effects | glassmorphism, minimalism, dark mode, brutalism | +| `typography` | Font pairings, Google Fonts | elegant, playful, professional, modern | +| `color` | Color palettes by product type | saas, ecommerce, healthcare, beauty, fintech, service | +| `landing` | Page structure, CTA strategies | hero, hero-centric, testimonial, pricing, social-proof | +| `chart` | Chart types, library recommendations | trend, comparison, timeline, funnel, pie | +| `ux` | Best practices, anti-patterns | animation, accessibility, z-index, loading | +| `react` | React/Next.js performance | waterfall, bundle, suspense, memo, rerender, cache | +| `web` | Web interface guidelines | aria, focus, keyboard, semantic, virtualize | +| `prompt` | AI prompts, CSS keywords | (style name) | + +### Available Stacks + +| Stack | Focus | +|-------|-------| +| `html-tailwind` | Tailwind utilities, responsive, a11y (DEFAULT) | +| `react` | State, hooks, performance, patterns | +| `nextjs` | SSR, routing, images, API routes | +| `vue` | Composition API, Pinia, Vue Router | +| `svelte` | Runes, stores, SvelteKit | +| `swiftui` | Views, State, Navigation, Animation | +| `react-native` | Components, Navigation, Lists | +| `flutter` | Widgets, State, Layout, Theming | +| `shadcn` | shadcn/ui components, theming, forms, patterns | +| `jetpack-compose` | Composables, Modifiers, State Hoisting, Recomposition | + +--- + +## Example Workflow + +**User request:** "Làm landing page cho dịch vụ chăm sóc da chuyên nghiệp" + +### Step 1: Analyze Requirements +- Product type: Beauty/Spa service +- Style keywords: elegant, professional, soft +- Industry: Beauty/Wellness +- Stack: html-tailwind (default) + +### Step 2: Generate Design System (REQUIRED) + +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "beauty spa wellness service elegant" --design-system -p "Serenity Spa" +``` + +**Output:** Complete design system with pattern, style, colors, typography, effects, and anti-patterns. + +### Step 3: Supplement with Detailed Searches (as needed) + +```bash +# Get UX guidelines for animation and accessibility +python3 skills/ui-ux-pro-max/scripts/search.py "animation accessibility" --domain ux + +# Get alternative typography options if needed +python3 skills/ui-ux-pro-max/scripts/search.py "elegant luxury serif" --domain typography +``` + +### Step 4: Stack Guidelines + +```bash +python3 skills/ui-ux-pro-max/scripts/search.py "layout responsive form" --stack html-tailwind +``` + +**Then:** Synthesize design system + detailed searches and implement the design. + +--- + +## Output Formats + +The `--design-system` flag supports two output formats: + +```bash +# ASCII box (default) - best for terminal display +python3 skills/ui-ux-pro-max/scripts/search.py "fintech crypto" --design-system + +# Markdown - best for documentation +python3 skills/ui-ux-pro-max/scripts/search.py "fintech crypto" --design-system -f markdown +``` + +--- + +## Tips for Better Results + +1. **Be specific with keywords** - "healthcare SaaS dashboard" > "app" +2. **Search multiple times** - Different keywords reveal different insights +3. **Combine domains** - Style + Typography + Color = Complete design system +4. **Always check UX** - Search "animation", "z-index", "accessibility" for common issues +5. **Use stack flag** - Get implementation-specific best practices +6. **Iterate** - If first search doesn't match, try different keywords + +--- + +## Common Rules for Professional UI + +These are frequently overlooked issues that make UI look unprofessional: + +### Icons & Visual Elements + +| Rule | Do | Don't | +|------|----|----- | +| **No emoji icons** | Use SVG icons (Heroicons, Lucide, Simple Icons) | Use emojis like 🎨 🚀 ⚙️ as UI icons | +| **Stable hover states** | Use color/opacity transitions on hover | Use scale transforms that shift layout | +| **Correct brand logos** | Research official SVG from Simple Icons | Guess or use incorrect logo paths | +| **Consistent icon sizing** | Use fixed viewBox (24x24) with w-6 h-6 | Mix different icon sizes randomly | + +### Interaction & Cursor + +| Rule | Do | Don't | +|------|----|----- | +| **Cursor pointer** | Add `cursor-pointer` to all clickable/hoverable cards | Leave default cursor on interactive elements | +| **Hover feedback** | Provide visual feedback (color, shadow, border) | No indication element is interactive | +| **Smooth transitions** | Use `transition-colors duration-200` | Instant state changes or too slow (>500ms) | + +### Light/Dark Mode Contrast + +| Rule | Do | Don't | +|------|----|----- | +| **Glass card light mode** | Use `bg-white/80` or higher opacity | Use `bg-white/10` (too transparent) | +| **Text contrast light** | Use `#0F172A` (slate-900) for text | Use `#94A3B8` (slate-400) for body text | +| **Muted text light** | Use `#475569` (slate-600) minimum | Use gray-400 or lighter | +| **Border visibility** | Use `border-gray-200` in light mode | Use `border-white/10` (invisible) | + +### Layout & Spacing + +| Rule | Do | Don't | +|------|----|----- | +| **Floating navbar** | Add `top-4 left-4 right-4` spacing | Stick navbar to `top-0 left-0 right-0` | +| **Content padding** | Account for fixed navbar height | Let content hide behind fixed elements | +| **Consistent max-width** | Use same `max-w-6xl` or `max-w-7xl` | Mix different container widths | + +--- + +## Pre-Delivery Checklist + +Before delivering UI code, verify these items: + +### Visual Quality +- [ ] No emojis used as icons (use SVG instead) +- [ ] All icons from consistent icon set (Heroicons/Lucide) +- [ ] Brand logos are correct (verified from Simple Icons) +- [ ] Hover states don't cause layout shift +- [ ] Use theme colors directly (bg-primary) not var() wrapper + +### Interaction +- [ ] All clickable elements have `cursor-pointer` +- [ ] Hover states provide clear visual feedback +- [ ] Transitions are smooth (150-300ms) +- [ ] Focus states visible for keyboard navigation + +### Light/Dark Mode +- [ ] Light mode text has sufficient contrast (4.5:1 minimum) +- [ ] Glass/transparent elements visible in light mode +- [ ] Borders visible in both modes +- [ ] Test both modes before delivery + +### Layout +- [ ] Floating elements have proper spacing from edges +- [ ] No content hidden behind fixed navbars +- [ ] Responsive at 375px, 768px, 1024px, 1440px +- [ ] No horizontal scroll on mobile + +### Accessibility +- [ ] All images have alt text +- [ ] Form inputs have labels +- [ ] Color is not the only indicator +- [ ] `prefers-reduced-motion` respected diff --git a/.codex/skills/ui-ux-pro-max/data/charts.csv b/.codex/skills/ui-ux-pro-max/data/charts.csv new file mode 100644 index 0000000..9463c37 --- /dev/null +++ b/.codex/skills/ui-ux-pro-max/data/charts.csv @@ -0,0 +1,26 @@ +No,Data Type,Keywords,Best Chart Type,Secondary Options,Color Guidance,Performance Impact,Accessibility Notes,Library Recommendation,Interactive Level +1,Trend Over Time,"trend, time-series, line, growth, timeline, progress",Line Chart,"Area Chart, Smooth Area",Primary: #0080FF. Multiple series: use distinct colors. Fill: 20% opacity,⚡ Excellent (optimized),✓ Clear line patterns for colorblind users. Add pattern overlays.,"Chart.js, Recharts, ApexCharts",Hover + Zoom +2,Compare Categories,"compare, categories, bar, comparison, ranking",Bar Chart (Horizontal or Vertical),"Column Chart, Grouped Bar",Each bar: distinct color. Category: grouped same color. Sorted: descending order,⚡ Excellent,✓ Easy to compare. Add value labels on bars for clarity.,"Chart.js, Recharts, D3.js",Hover + Sort +3,Part-to-Whole,"part-to-whole, pie, donut, percentage, proportion, share",Pie Chart or Donut,"Stacked Bar, Treemap",Colors: 5-6 max. Contrasting palette. Large slices first. Use labels.,⚡ Good (limit 6 slices),⚠ Hard for accessibility. Better: Stacked bar with legend. Avoid pie if >5 items.,"Chart.js, Recharts, D3.js",Hover + Drill +4,Correlation/Distribution,"correlation, distribution, scatter, relationship, pattern",Scatter Plot or Bubble Chart,"Heat Map, Matrix",Color axis: gradient (blue-red). Size: relative. Opacity: 0.6-0.8 to show density,⚠ Moderate (many points),⚠ Provide data table alternative. Use pattern + color distinction.,"D3.js, Plotly, Recharts",Hover + Brush +5,Heatmap/Intensity,"heatmap, heat-map, intensity, density, matrix",Heat Map or Choropleth,"Grid Heat Map, Bubble Heat",Gradient: Cool (blue) to Hot (red). Scale: clear legend. Divergent for ±data,⚡ Excellent (color CSS),⚠ Colorblind: Use pattern overlay. Provide numerical legend.,"D3.js, Plotly, ApexCharts",Hover + Zoom +6,Geographic Data,"geographic, map, location, region, geo, spatial","Choropleth Map, Bubble Map",Geographic Heat Map,Regional: single color gradient or categorized colors. Legend: clear scale,⚠ Moderate (rendering),⚠ Include text labels for regions. Provide data table alternative.,"D3.js, Mapbox, Leaflet",Pan + Zoom + Drill +7,Funnel/Flow,funnel/flow,"Funnel Chart, Sankey",Waterfall (for flows),Stages: gradient (starting color → ending color). Show conversion %,⚡ Good,✓ Clear stage labels + percentages. Good for accessibility if labeled.,"D3.js, Recharts, Custom SVG",Hover + Drill +8,Performance vs Target,performance-vs-target,Gauge Chart or Bullet Chart,"Dial, Thermometer",Performance: Red→Yellow→Green gradient. Target: marker line. Threshold colors,⚡ Good,✓ Add numerical value + percentage label beside gauge.,"D3.js, ApexCharts, Custom SVG",Hover +9,Time-Series Forecast,time-series-forecast,Line with Confidence Band,Ribbon Chart,Actual: solid line #0080FF. Forecast: dashed #FF9500. Band: light shading,⚡ Good,✓ Clearly distinguish actual vs forecast. Add legend.,"Chart.js, ApexCharts, Plotly",Hover + Toggle +10,Anomaly Detection,anomaly-detection,Line Chart with Highlights,Scatter with Alert,Normal: blue #0080FF. Anomaly: red #FF0000 circle/square marker + alert,⚡ Good,✓ Circle/marker for anomalies. Add text alert annotation.,"D3.js, Plotly, ApexCharts",Hover + Alert +11,Hierarchical/Nested Data,hierarchical/nested-data,Treemap,"Sunburst, Nested Donut, Icicle",Parent: distinct hues. Children: lighter shades. White borders 2-3px.,⚠ Moderate,⚠ Poor - provide table alternative. Label large areas.,"D3.js, Recharts, ApexCharts",Hover + Drilldown +12,Flow/Process Data,flow/process-data,Sankey Diagram,"Alluvial, Chord Diagram",Gradient from source to target. Opacity 0.4-0.6 for flows.,⚠ Moderate,⚠ Poor - provide flow table alternative.,"D3.js (d3-sankey), Plotly",Hover + Drilldown +13,Cumulative Changes,cumulative-changes,Waterfall Chart,"Stacked Bar, Cascade",Increases: #4CAF50. Decreases: #F44336. Start: #2196F3. End: #0D47A1.,⚡ Good,✓ Good - clear directional colors with labels.,"ApexCharts, Highcharts, Plotly",Hover +14,Multi-Variable Comparison,multi-variable-comparison,Radar/Spider Chart,"Parallel Coordinates, Grouped Bar",Single: #0080FF 20% fill. Multiple: distinct colors per dataset.,⚡ Good,⚠ Moderate - limit 5-8 axes. Add data table.,"Chart.js, Recharts, ApexCharts",Hover + Toggle +15,Stock/Trading OHLC,stock/trading-ohlc,Candlestick Chart,"OHLC Bar, Heikin-Ashi",Bullish: #26A69A. Bearish: #EF5350. Volume: 40% opacity below.,⚡ Good,⚠ Moderate - provide OHLC data table.,"Lightweight Charts (TradingView), ApexCharts",Real-time + Hover + Zoom +16,Relationship/Connection Data,relationship/connection-data,Network Graph,"Hierarchical Tree, Adjacency Matrix",Node types: categorical colors. Edges: #90A4AE 60% opacity.,❌ Poor (500+ nodes struggles),❌ Very Poor - provide adjacency list alternative.,"D3.js (d3-force), Vis.js, Cytoscape.js",Drilldown + Hover + Drag +17,Distribution/Statistical,distribution/statistical,Box Plot,"Violin Plot, Beeswarm",Box: #BBDEFB. Border: #1976D2. Median: #D32F2F. Outliers: #F44336.,⚡ Excellent,"✓ Good - include stats table (min, Q1, median, Q3, max).","Plotly, D3.js, Chart.js (plugin)",Hover +18,Performance vs Target (Compact),performance-vs-target-(compact),Bullet Chart,"Gauge, Progress Bar","Ranges: #FFCDD2, #FFF9C4, #C8E6C9. Performance: #1976D2. Target: black 3px.",⚡ Excellent,✓ Excellent - compact with clear values.,"D3.js, Plotly, Custom SVG",Hover +19,Proportional/Percentage,proportional/percentage,Waffle Chart,"Pictogram, Stacked Bar 100%",10x10 grid. 3-5 categories max. 2-3px spacing between squares.,⚡ Good,✓ Good - better than pie for accessibility.,"D3.js, React-Waffle, Custom CSS Grid",Hover +20,Hierarchical Proportional,hierarchical-proportional,Sunburst Chart,"Treemap, Icicle, Circle Packing",Center to outer: darker to lighter. 15-20% lighter per level.,⚠ Moderate,⚠ Poor - provide hierarchy table alternative.,"D3.js (d3-hierarchy), Recharts, ApexCharts",Drilldown + Hover +21,Root Cause Analysis,"root cause, decomposition, tree, hierarchy, drill-down, ai-split",Decomposition Tree,"Decision Tree, Flow Chart",Nodes: #2563EB (Primary) vs #EF4444 (Negative impact). Connectors: Neutral grey.,⚠ Moderate (calculation heavy),✓ clear hierarchy. Allow keyboard navigation for nodes.,"Power BI (native), React-Flow, Custom D3.js",Drill + Expand +22,3D Spatial Data,"3d, spatial, immersive, terrain, molecular, volumetric",3D Scatter/Surface Plot,"Volumetric Rendering, Point Cloud",Depth cues: lighting/shading. Z-axis: color gradient (cool to warm).,❌ Heavy (WebGL required),❌ Poor - requires alternative 2D view or data table.,"Three.js, Deck.gl, Plotly 3D",Rotate + Zoom + VR +23,Real-Time Streaming,"streaming, real-time, ticker, live, velocity, pulse",Streaming Area Chart,"Ticker Tape, Moving Gauge",Current: Bright Pulse (#00FF00). History: Fading opacity. Grid: Dark.,⚡ Optimized (canvas/webgl),⚠ Flashing elements - provide pause button. High contrast.,Smoothed D3.js, CanvasJS +24,Sentiment/Emotion,"sentiment, emotion, nlp, opinion, feeling",Word Cloud with Sentiment,"Sentiment Arc, Radar Chart",Positive: #22C55E. Negative: #EF4444. Neutral: #94A3B8. Size = Frequency.,⚡ Good,⚠ Word clouds poor for screen readers. Use list view.,"D3-cloud, Highcharts, Nivo",Hover + Filter +25,Process Mining,"process, mining, variants, path, bottleneck, log",Process Map / Graph,"Directed Acyclic Graph (DAG), Petri Net",Happy path: #10B981 (Thick). Deviations: #F59E0B (Thin). Bottlenecks: #EF4444.,⚠ Moderate to Heavy,⚠ Complex graphs hard to navigate. Provide path summary.,"React-Flow, Cytoscape.js, Recharts",Drag + Node-Click diff --git a/.codex/skills/ui-ux-pro-max/data/colors.csv b/.codex/skills/ui-ux-pro-max/data/colors.csv new file mode 100644 index 0000000..a187845 --- /dev/null +++ b/.codex/skills/ui-ux-pro-max/data/colors.csv @@ -0,0 +1,97 @@ +No,Product Type,Primary (Hex),Secondary (Hex),CTA (Hex),Background (Hex),Text (Hex),Border (Hex),Notes +1,SaaS (General),#2563EB,#3B82F6,#F97316,#F8FAFC,#1E293B,#E2E8F0,Trust blue + orange CTA contrast +2,Micro SaaS,#6366F1,#818CF8,#10B981,#F5F3FF,#1E1B4B,#E0E7FF,Indigo primary + emerald CTA +3,E-commerce,#059669,#10B981,#F97316,#ECFDF5,#064E3B,#A7F3D0,Success green + urgency orange +4,E-commerce Luxury,#1C1917,#44403C,#CA8A04,#FAFAF9,#0C0A09,#D6D3D1,Premium dark + gold accent +5,Service Landing Page,#0EA5E9,#38BDF8,#F97316,#F0F9FF,#0C4A6E,#BAE6FD,Sky blue trust + warm CTA +6,B2B Service,#0F172A,#334155,#0369A1,#F8FAFC,#020617,#E2E8F0,Professional navy + blue CTA +7,Financial Dashboard,#0F172A,#1E293B,#22C55E,#020617,#F8FAFC,#334155,Dark bg + green positive indicators +8,Analytics Dashboard,#1E40AF,#3B82F6,#F59E0B,#F8FAFC,#1E3A8A,#DBEAFE,Blue data + amber highlights +9,Healthcare App,#0891B2,#22D3EE,#059669,#ECFEFF,#164E63,#A5F3FC,Calm cyan + health green +10,Educational App,#4F46E5,#818CF8,#F97316,#EEF2FF,#1E1B4B,#C7D2FE,Playful indigo + energetic orange +11,Creative Agency,#EC4899,#F472B6,#06B6D4,#FDF2F8,#831843,#FBCFE8,Bold pink + cyan accent +12,Portfolio/Personal,#18181B,#3F3F46,#2563EB,#FAFAFA,#09090B,#E4E4E7,Monochrome + blue accent +13,Gaming,#7C3AED,#A78BFA,#F43F5E,#0F0F23,#E2E8F0,#4C1D95,Neon purple + rose action +14,Government/Public Service,#0F172A,#334155,#0369A1,#F8FAFC,#020617,#E2E8F0,High contrast navy + blue +15,Fintech/Crypto,#F59E0B,#FBBF24,#8B5CF6,#0F172A,#F8FAFC,#334155,Gold trust + purple tech +16,Social Media App,#E11D48,#FB7185,#2563EB,#FFF1F2,#881337,#FECDD3,Vibrant rose + engagement blue +17,Productivity Tool,#0D9488,#14B8A6,#F97316,#F0FDFA,#134E4A,#99F6E4,Teal focus + action orange +18,Design System/Component Library,#4F46E5,#6366F1,#F97316,#EEF2FF,#312E81,#C7D2FE,Indigo brand + doc hierarchy +19,AI/Chatbot Platform,#7C3AED,#A78BFA,#06B6D4,#FAF5FF,#1E1B4B,#DDD6FE,AI purple + cyan interactions +20,NFT/Web3 Platform,#8B5CF6,#A78BFA,#FBBF24,#0F0F23,#F8FAFC,#4C1D95,Purple tech + gold value +21,Creator Economy Platform,#EC4899,#F472B6,#F97316,#FDF2F8,#831843,#FBCFE8,Creator pink + engagement orange +22,Sustainability/ESG Platform,#059669,#10B981,#0891B2,#ECFDF5,#064E3B,#A7F3D0,Nature green + ocean blue +23,Remote Work/Collaboration Tool,#6366F1,#818CF8,#10B981,#F5F3FF,#312E81,#E0E7FF,Calm indigo + success green +24,Mental Health App,#8B5CF6,#C4B5FD,#10B981,#FAF5FF,#4C1D95,#EDE9FE,Calming lavender + wellness green +25,Pet Tech App,#F97316,#FB923C,#2563EB,#FFF7ED,#9A3412,#FED7AA,Playful orange + trust blue +26,Smart Home/IoT Dashboard,#1E293B,#334155,#22C55E,#0F172A,#F8FAFC,#475569,Dark tech + status green +27,EV/Charging Ecosystem,#0891B2,#22D3EE,#22C55E,#ECFEFF,#164E63,#A5F3FC,Electric cyan + eco green +28,Subscription Box Service,#D946EF,#E879F9,#F97316,#FDF4FF,#86198F,#F5D0FE,Excitement purple + urgency orange +29,Podcast Platform,#1E1B4B,#312E81,#F97316,#0F0F23,#F8FAFC,#4338CA,Dark audio + warm accent +30,Dating App,#E11D48,#FB7185,#F97316,#FFF1F2,#881337,#FECDD3,Romantic rose + warm orange +31,Micro-Credentials/Badges Platform,#0369A1,#0EA5E9,#CA8A04,#F0F9FF,#0C4A6E,#BAE6FD,Trust blue + achievement gold +32,Knowledge Base/Documentation,#475569,#64748B,#2563EB,#F8FAFC,#1E293B,#E2E8F0,Neutral grey + link blue +33,Hyperlocal Services,#059669,#10B981,#F97316,#ECFDF5,#064E3B,#A7F3D0,Location green + action orange +34,Beauty/Spa/Wellness Service,#EC4899,#F9A8D4,#8B5CF6,#FDF2F8,#831843,#FBCFE8,Soft pink + lavender luxury +35,Luxury/Premium Brand,#1C1917,#44403C,#CA8A04,#FAFAF9,#0C0A09,#D6D3D1,Premium black + gold accent +36,Restaurant/Food Service,#DC2626,#F87171,#CA8A04,#FEF2F2,#450A0A,#FECACA,Appetizing red + warm gold +37,Fitness/Gym App,#F97316,#FB923C,#22C55E,#1F2937,#F8FAFC,#374151,Energy orange + success green +38,Real Estate/Property,#0F766E,#14B8A6,#0369A1,#F0FDFA,#134E4A,#99F6E4,Trust teal + professional blue +39,Travel/Tourism Agency,#0EA5E9,#38BDF8,#F97316,#F0F9FF,#0C4A6E,#BAE6FD,Sky blue + adventure orange +40,Hotel/Hospitality,#1E3A8A,#3B82F6,#CA8A04,#F8FAFC,#1E40AF,#BFDBFE,Luxury navy + gold service +41,Wedding/Event Planning,#DB2777,#F472B6,#CA8A04,#FDF2F8,#831843,#FBCFE8,Romantic pink + elegant gold +42,Legal Services,#1E3A8A,#1E40AF,#B45309,#F8FAFC,#0F172A,#CBD5E1,Authority navy + trust gold +43,Insurance Platform,#0369A1,#0EA5E9,#22C55E,#F0F9FF,#0C4A6E,#BAE6FD,Security blue + protected green +44,Banking/Traditional Finance,#0F172A,#1E3A8A,#CA8A04,#F8FAFC,#020617,#E2E8F0,Trust navy + premium gold +45,Online Course/E-learning,#0D9488,#2DD4BF,#F97316,#F0FDFA,#134E4A,#5EEAD4,Progress teal + achievement orange +46,Non-profit/Charity,#0891B2,#22D3EE,#F97316,#ECFEFF,#164E63,#A5F3FC,Compassion blue + action orange +47,Music Streaming,#1E1B4B,#4338CA,#22C55E,#0F0F23,#F8FAFC,#312E81,Dark audio + play green +48,Video Streaming/OTT,#0F0F23,#1E1B4B,#E11D48,#000000,#F8FAFC,#312E81,Cinema dark + play red +49,Job Board/Recruitment,#0369A1,#0EA5E9,#22C55E,#F0F9FF,#0C4A6E,#BAE6FD,Professional blue + success green +50,Marketplace (P2P),#7C3AED,#A78BFA,#22C55E,#FAF5FF,#4C1D95,#DDD6FE,Trust purple + transaction green +51,Logistics/Delivery,#2563EB,#3B82F6,#F97316,#EFF6FF,#1E40AF,#BFDBFE,Tracking blue + delivery orange +52,Agriculture/Farm Tech,#15803D,#22C55E,#CA8A04,#F0FDF4,#14532D,#BBF7D0,Earth green + harvest gold +53,Construction/Architecture,#64748B,#94A3B8,#F97316,#F8FAFC,#334155,#E2E8F0,Industrial grey + safety orange +54,Automotive/Car Dealership,#1E293B,#334155,#DC2626,#F8FAFC,#0F172A,#E2E8F0,Premium dark + action red +55,Photography Studio,#18181B,#27272A,#F8FAFC,#000000,#FAFAFA,#3F3F46,Pure black + white contrast +56,Coworking Space,#F59E0B,#FBBF24,#2563EB,#FFFBEB,#78350F,#FDE68A,Energetic amber + booking blue +57,Cleaning Service,#0891B2,#22D3EE,#22C55E,#ECFEFF,#164E63,#A5F3FC,Fresh cyan + clean green +58,Home Services (Plumber/Electrician),#1E40AF,#3B82F6,#F97316,#EFF6FF,#1E3A8A,#BFDBFE,Professional blue + urgent orange +59,Childcare/Daycare,#F472B6,#FBCFE8,#22C55E,#FDF2F8,#9D174D,#FCE7F3,Soft pink + safe green +60,Senior Care/Elderly,#0369A1,#38BDF8,#22C55E,#F0F9FF,#0C4A6E,#E0F2FE,Calm blue + reassuring green +61,Medical Clinic,#0891B2,#22D3EE,#22C55E,#F0FDFA,#134E4A,#CCFBF1,Medical teal + health green +62,Pharmacy/Drug Store,#15803D,#22C55E,#0369A1,#F0FDF4,#14532D,#BBF7D0,Pharmacy green + trust blue +63,Dental Practice,#0EA5E9,#38BDF8,#FBBF24,#F0F9FF,#0C4A6E,#BAE6FD,Fresh blue + smile yellow +64,Veterinary Clinic,#0D9488,#14B8A6,#F97316,#F0FDFA,#134E4A,#99F6E4,Caring teal + warm orange +65,Florist/Plant Shop,#15803D,#22C55E,#EC4899,#F0FDF4,#14532D,#BBF7D0,Natural green + floral pink +66,Bakery/Cafe,#92400E,#B45309,#F8FAFC,#FEF3C7,#78350F,#FDE68A,Warm brown + cream white +67,Coffee Shop,#78350F,#92400E,#FBBF24,#FEF3C7,#451A03,#FDE68A,Coffee brown + warm gold +68,Brewery/Winery,#7C2D12,#B91C1C,#CA8A04,#FEF2F2,#450A0A,#FECACA,Deep burgundy + craft gold +69,Airline,#1E3A8A,#3B82F6,#F97316,#EFF6FF,#1E40AF,#BFDBFE,Sky blue + booking orange +70,News/Media Platform,#DC2626,#EF4444,#1E40AF,#FEF2F2,#450A0A,#FECACA,Breaking red + link blue +71,Magazine/Blog,#18181B,#3F3F46,#EC4899,#FAFAFA,#09090B,#E4E4E7,Editorial black + accent pink +72,Freelancer Platform,#6366F1,#818CF8,#22C55E,#EEF2FF,#312E81,#C7D2FE,Creative indigo + hire green +73,Consulting Firm,#0F172A,#334155,#CA8A04,#F8FAFC,#020617,#E2E8F0,Authority navy + premium gold +74,Marketing Agency,#EC4899,#F472B6,#06B6D4,#FDF2F8,#831843,#FBCFE8,Bold pink + creative cyan +75,Event Management,#7C3AED,#A78BFA,#F97316,#FAF5FF,#4C1D95,#DDD6FE,Excitement purple + action orange +76,Conference/Webinar Platform,#1E40AF,#3B82F6,#22C55E,#EFF6FF,#1E3A8A,#BFDBFE,Professional blue + join green +77,Membership/Community,#7C3AED,#A78BFA,#22C55E,#FAF5FF,#4C1D95,#DDD6FE,Community purple + join green +78,Newsletter Platform,#0369A1,#0EA5E9,#F97316,#F0F9FF,#0C4A6E,#BAE6FD,Trust blue + subscribe orange +79,Digital Products/Downloads,#6366F1,#818CF8,#22C55E,#EEF2FF,#312E81,#C7D2FE,Digital indigo + buy green +80,Church/Religious Organization,#7C3AED,#A78BFA,#CA8A04,#FAF5FF,#4C1D95,#DDD6FE,Spiritual purple + warm gold +81,Sports Team/Club,#DC2626,#EF4444,#FBBF24,#FEF2F2,#7F1D1D,#FECACA,Team red + championship gold +82,Museum/Gallery,#18181B,#27272A,#F8FAFC,#FAFAFA,#09090B,#E4E4E7,Gallery black + white space +83,Theater/Cinema,#1E1B4B,#312E81,#CA8A04,#0F0F23,#F8FAFC,#4338CA,Dramatic dark + spotlight gold +84,Language Learning App,#4F46E5,#818CF8,#22C55E,#EEF2FF,#312E81,#C7D2FE,Learning indigo + progress green +85,Coding Bootcamp,#0F172A,#1E293B,#22C55E,#020617,#F8FAFC,#334155,Terminal dark + success green +86,Cybersecurity Platform,#00FF41,#0D0D0D,#FF3333,#000000,#E0E0E0,#1F1F1F,Matrix green + alert red +87,Developer Tool / IDE,#1E293B,#334155,#22C55E,#0F172A,#F8FAFC,#475569,Code dark + run green +88,Biotech / Life Sciences,#0EA5E9,#0284C7,#10B981,#F0F9FF,#0C4A6E,#BAE6FD,DNA blue + life green +89,Space Tech / Aerospace,#F8FAFC,#94A3B8,#3B82F6,#0B0B10,#F8FAFC,#1E293B,Star white + launch blue +90,Architecture / Interior,#171717,#404040,#D4AF37,#FFFFFF,#171717,#E5E5E5,Minimal black + accent gold +91,Quantum Computing,#00FFFF,#7B61FF,#FF00FF,#050510,#E0E0FF,#333344,Quantum cyan + interference purple +92,Biohacking / Longevity,#FF4D4D,#4D94FF,#00E676,#F5F5F7,#1C1C1E,#E5E5EA,Bio red/blue + vitality green +93,Autonomous Systems,#00FF41,#008F11,#FF3333,#0D1117,#E6EDF3,#30363D,Terminal green + alert red +94,Generative AI Art,#18181B,#3F3F46,#EC4899,#FAFAFA,#09090B,#E4E4E7,Canvas neutral + creative pink +95,Spatial / Vision OS,#FFFFFF,#E5E5E5,#007AFF,#888888,#000000,#CCCCCC,Glass white + system blue +96,Climate Tech,#059669,#10B981,#FBBF24,#ECFDF5,#064E3B,#A7F3D0,Nature green + solar gold diff --git a/.codex/skills/ui-ux-pro-max/data/icons.csv b/.codex/skills/ui-ux-pro-max/data/icons.csv new file mode 100644 index 0000000..a85e97f --- /dev/null +++ b/.codex/skills/ui-ux-pro-max/data/icons.csv @@ -0,0 +1,101 @@ +No,Category,Icon Name,Keywords,Library,Import Code,Usage,Best For,Style +1,Navigation,menu,hamburger menu navigation toggle bars,Lucide,import { Menu } from 'lucide-react',,Mobile navigation drawer toggle sidebar,Outline +2,Navigation,arrow-left,back previous return navigate,Lucide,import { ArrowLeft } from 'lucide-react',,Back button breadcrumb navigation,Outline +3,Navigation,arrow-right,next forward continue navigate,Lucide,import { ArrowRight } from 'lucide-react',,Forward button next step CTA,Outline +4,Navigation,chevron-down,dropdown expand accordion select,Lucide,import { ChevronDown } from 'lucide-react',,Dropdown toggle accordion header,Outline +5,Navigation,chevron-up,collapse close accordion minimize,Lucide,import { ChevronUp } from 'lucide-react',,Accordion collapse minimize,Outline +6,Navigation,home,homepage main dashboard start,Lucide,import { Home } from 'lucide-react',,Home navigation main page,Outline +7,Navigation,x,close cancel dismiss remove exit,Lucide,import { X } from 'lucide-react',,Modal close dismiss button,Outline +8,Navigation,external-link,open new tab external link,Lucide,import { ExternalLink } from 'lucide-react',,External link indicator,Outline +9,Action,plus,add create new insert,Lucide,import { Plus } from 'lucide-react',,Add button create new item,Outline +10,Action,minus,remove subtract decrease delete,Lucide,import { Minus } from 'lucide-react',,Remove item quantity decrease,Outline +11,Action,trash-2,delete remove discard bin,Lucide,import { Trash2 } from 'lucide-react',,Delete action destructive,Outline +12,Action,edit,pencil modify change update,Lucide,import { Edit } from 'lucide-react',,Edit button modify content,Outline +13,Action,save,disk store persist save,Lucide,import { Save } from 'lucide-react',,Save button persist changes,Outline +14,Action,download,export save file download,Lucide,import { Download } from 'lucide-react',,Download file export,Outline +15,Action,upload,import file attach upload,Lucide,import { Upload } from 'lucide-react',,Upload file import,Outline +16,Action,copy,duplicate clipboard paste,Lucide,import { Copy } from 'lucide-react',,Copy to clipboard,Outline +17,Action,share,social distribute send,Lucide,import { Share } from 'lucide-react',,Share button social,Outline +18,Action,search,find lookup filter query,Lucide,import { Search } from 'lucide-react',,Search input bar,Outline +19,Action,filter,sort refine narrow options,Lucide,import { Filter } from 'lucide-react',,Filter dropdown sort,Outline +20,Action,settings,gear cog preferences config,Lucide,import { Settings } from 'lucide-react',,Settings page configuration,Outline +21,Status,check,success done complete verified,Lucide,import { Check } from 'lucide-react',,Success state checkmark,Outline +22,Status,check-circle,success verified approved complete,Lucide,import { CheckCircle } from 'lucide-react',,Success badge verified,Outline +23,Status,x-circle,error failed cancel rejected,Lucide,import { XCircle } from 'lucide-react',,Error state failed,Outline +24,Status,alert-triangle,warning caution attention danger,Lucide,import { AlertTriangle } from 'lucide-react',,Warning message caution,Outline +25,Status,alert-circle,info notice information help,Lucide,import { AlertCircle } from 'lucide-react',,Info notice alert,Outline +26,Status,info,information help tooltip details,Lucide,import { Info } from 'lucide-react',,Information tooltip help,Outline +27,Status,loader,loading spinner processing wait,Lucide,import { Loader } from 'lucide-react',,Loading state spinner,Outline +28,Status,clock,time schedule pending wait,Lucide,import { Clock } from 'lucide-react',,Pending time schedule,Outline +29,Communication,mail,email message inbox letter,Lucide,import { Mail } from 'lucide-react',,Email contact inbox,Outline +30,Communication,message-circle,chat comment bubble conversation,Lucide,import { MessageCircle } from 'lucide-react',,Chat comment message,Outline +31,Communication,phone,call mobile telephone contact,Lucide,import { Phone } from 'lucide-react',,Phone contact call,Outline +32,Communication,send,submit dispatch message airplane,Lucide,import { Send } from 'lucide-react',,Send message submit,Outline +33,Communication,bell,notification alert ring reminder,Lucide,import { Bell } from 'lucide-react',,Notification bell alert,Outline +34,User,user,profile account person avatar,Lucide,import { User } from 'lucide-react',,User profile account,Outline +35,User,users,team group people members,Lucide,import { Users } from 'lucide-react',,Team group members,Outline +36,User,user-plus,add invite new member,Lucide,import { UserPlus } from 'lucide-react',,Add user invite,Outline +37,User,log-in,signin authenticate enter,Lucide,import { LogIn } from 'lucide-react',,Login signin,Outline +38,User,log-out,signout exit leave logout,Lucide,import { LogOut } from 'lucide-react',,Logout signout,Outline +39,Media,image,photo picture gallery thumbnail,Lucide,import { Image } from 'lucide-react',,Image photo gallery,Outline +40,Media,video,movie film play record,Lucide,import { Video } from 'lucide-react',