This is an automated email from the ASF dual-hosted git repository.
jin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph-ai.git
The following commit(s) were added to refs/heads/main by this push:
new b4e2fe9a feat(llm): add rules for AI coding guideline - V1.0 (#293)
b4e2fe9a is described below
commit b4e2fe9a2989de756bcc43037fb20197b95bb176
Author: LingXiao Qi <[email protected]>
AuthorDate: Fri Jul 25 17:13:46 2025 +0800
feat(llm): add rules for AI coding guideline - V1.0 (#293)
This pull request introduces a comprehensive workflow and documentation
framework for AI-assisted software development, focusing on structured
collaboration between developers and AI. Key changes include defining
workflow stages, creating detailed documentation templates, and
establishing clear rules for task execution and analysis.
### Workflow and Process Definitions:
* **`rules/README.md`**: Introduced a staged workflow for AI-assisted
development, emphasizing requirements, design, planning, and execution
phases. Key principles include staged progression, explicit approval,
and iterative loops.
* **`rules/execute.md`**: Defined task execution standards, including
atomic task focus, TDD-first development, and clear completion criteria.
* **`rules/plan.md`**: Outlined the process for creating structured task
checklists (`tasks.md`), with rules for dependency tracking and
iterative feedback.
* **`rules/basic.md`**: Established core communication protocols and
action principles for AI agents, including risk analysis and proactive
alignment with users.
* **`rules/design.md`**: Detailed the process for creating technical
design documents (`design.md`), including mandatory research, iterative
feedback, and approval loops.
* **`rules/requirements.md`**: Defined a structured approach for
collecting and documenting requirements (`requirements.md`) using EARS
syntax and user story formats.
### Analysis and Project Documentation:
* **`rules/prompts/project-deep.md`**: Added a prompt for in-depth
technical and business process analysis, including detailed
documentation templates and analysis techniques.
* **`rules/prompts/project-general.md`**: Defined standards for
project-level documentation, including domain models, API documentation,
and external dependencies.
---------
Co-authored-by: imbajin <[email protected]>
---
.gitignore | 31 +++++++
README.md | 15 +++-
hugegraph-llm/README.md | 14 ++++
rules/README.md | 81 ++++++++++++++++++
rules/basic.md | 82 ++++++++++++++++++
rules/design.md | 166 ++++++++++++++++++++++++++++++++++++
rules/execute.md | 53 ++++++++++++
rules/plan.md | 96 +++++++++++++++++++++
rules/prompts/project-deep.md | 152 +++++++++++++++++++++++++++++++++
rules/prompts/project-general.md | 176 +++++++++++++++++++++++++++++++++++++++
rules/requirements.md | 89 ++++++++++++++++++++
11 files changed, 954 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index ec1743a9..42a06764 100644
--- a/.gitignore
+++ b/.gitignore
@@ -135,6 +135,37 @@ celerybeat.pid
# prompt config
config_prompt.yaml*
+# AI-IDE prompt files (generated from basic-introduction.md)
+
+# Claude Projects
+CLAUDE.md
+CLAUDE_*.md
+
+# Gemini/Google
+GEMINI.md
+GEMINI_*.md
+gemini.md
+gemini_*.md
+
+# GitHub Copilot / Microsoft
+copilot-instructions.md
+.copilot-instructions.md
+
+# Cursor IDE
+cursor-instructions.md
+.cursor-instructions.md
+cursor.md
+
+# Windsurf/Codeium
+windsurf.md
+windsurf-instructions.md
+codeium.md
+codeium-instructions.md
+
+# Other AI coding assistants
+.ai-instructions.md
+*.ai-prompt.md
+
# Environments
.env
.env.bak
diff --git a/README.md b/README.md
index 1e8294f6..e9d87ac7 100644
--- a/README.md
+++ b/README.md
@@ -163,6 +163,20 @@ And here are links of other repositories:
We welcome contributions! Please see our [contribution
guidelines](https://hugegraph.apache.org/docs/contribution-guidelines/) for
details.
+### 🤖 AI Coding Guidelines for Developers
+
+> [!IMPORTANT]
+> **For project contributors using AI coding tools**, please follow these
guidelines:
+>
+> - **Start Here**: First read `rules/README.md` for the complete AI-assisted
development workflow
+> - **Module Context**: When `basic-introduction.md` exists in any module,
rename it as context for your LLM (e.g., `CLAUDE.md`, `copilot-instructions.md`)
+> - **Documentation Standards**: Follow the structured documentation approach
in `rules/prompts/project-general.md`
+> - **Deep Analysis**: For complex features, refer to
`rules/prompts/project-deep.md` for comprehensive code analysis methodology
+> - **Code Quality**: Maintain consistency with existing patterns and ensure
proper type annotations
+> - **Testing**: Follow TDD principles and ensure comprehensive test coverage
for new features
+>
+> These guidelines ensure consistent code quality and maintainable development
workflow with AI assistance.
+
**Development Setup:**
```bash
# 1. Clone and navigate to project
@@ -191,7 +205,6 @@ uv add --group dev pytest-mock # Add to dev group
**Key Points:**
- Use [GitHub Desktop](https://desktop.github.com/) for easier PR management
-- Use/Refer AI Coding basic rules (🚧 ing, on the way)
- Check existing issues before reporting bugs
[](https://github.com/apache/incubator-hugegraph-ai/graphs/contributors)
diff --git a/hugegraph-llm/README.md b/hugegraph-llm/README.md
index e988b5cd..a902bab8 100644
--- a/hugegraph-llm/README.md
+++ b/hugegraph-llm/README.md
@@ -223,6 +223,20 @@ After running the demo, configuration files are
automatically generated:
**LLM Provider Support**: This project uses
[LiteLLM](https://docs.litellm.ai/docs/providers) for multi-provider LLM
support.
+## 🤖 Developer Guidelines
+
+> [!IMPORTANT]
+> **For developers contributing to hugegraph-llm with AI coding assistance:**
+>
+> - **Start Here**: First read `../rules/README.md` for the complete
AI-assisted development workflow
+> - **Module Context**: Rename `basic-introduction.md` in this directory as
context for your LLM (e.g., `CLAUDE.md`, `copilot-instructions.md`)
+> - **Code Analysis**: Follow comprehensive analysis methodology in
`../rules/prompts/project-deep.md`
+> - **Documentation**: Maintain structured documentation standards from
`../rules/prompts/project-general.md`
+> - **Quality Standards**: Ensure type annotations, proper testing, and
consistent patterns
+> - **Business Logic**: Focus on graph-LLM integration logic and RAG pipeline
optimization
+>
+> These guidelines ensure consistent code quality and maintainable graph-AI
integrations.
+
## 📚 Additional Resources
- **Graph Visualization**: Use [HugeGraph
Hubble](https://hub.docker.com/r/hugegraph/hubble) for data analysis and schema
management
diff --git a/rules/README.md b/rules/README.md
new file mode 100644
index 00000000..2e78d48a
--- /dev/null
+++ b/rules/README.md
@@ -0,0 +1,81 @@
+# Agentic 工作流规范
+
+本文档面向项目开发者与 AI 助手,定义了一个清晰、高效、迭代的协作框架,帮助双方将模糊的想法转化为经过验证、设计良好并可执行的软件功能。
+
+⚠️ 目前仅规范了**简体中文**版本, 其他语言开发者可以自行翻译使用, 后续会维护 EN 版本, 也欢迎贡献翻译!
+
+⭐️ 本 AI Coding
工作流仍在迭代和实践中,欢迎大家体验使用。这是一个开放且持续演进的工作流,我们非常欢迎并鼓励社区成员将自己的最佳实践和宝贵经验融入其中。如果您有任何改进建议,请通过提交
**Issue** 来发起讨论,或直接通过 **Pull Request** 贡献您的智慧。
+
+## 快速启动(Quick Start)
+
+- 将目录下的[basic.md](./basic.md)移至你使用的 AI Coding System 的 basic / system rule,如
CLAUDE.md, role.mdc(Always Apply), copilot-instructions.md 等
+
+- 将本 README 附给 AI,让他明白工作流流程。每个流程开始前,需要确保已经阅读过相关指导文档。不要让
AI**自动执行流程**,如果出现该情况,需要及时 STOP 并告诉他(可以选择固化为 memory 的方式)
+
+- STEP1~3 模型推荐 Think 类模型(o3, gemini-2.5-pro,Deepseek-R1), STEP4 模型推荐(Claude,
gemini-2.5-pro, Kimi-K2, Qwen3-Coder 等)
+
+- 为了保证上下文质量,最佳实践是 STEP4(execute)时新开一个 Chat
+
+### 开发者阅读指南
+
+> 如果你是使用本 AI Coding 助手的开发者,请注意以下要点:
+>
+> 1. **共同遵循流程**:本文档中所有对“AI 助手”的要求,都需要开发者配合才能发挥最大效果。请在每个阶段提供及时、明确的反馈与批准。
+> 2. **文档驱动协作**:在需求、设计、任务规划和执行各阶段,开发者需要与 AI 共同维护对应的 `.md` 文档,这些文档是双方的唯一信息源。
+> 3. **主动沟通**:当你发现需求变化或需调整计划时,立即与 AI 助手沟通,AI 将根据本工作流规范返回到合适的阶段重新迭代。
+> 4. **最小可行变更**:遵循奥卡姆剃刀原则,优先重用现有代码和组件,减少不必要的复杂度。
+> 5. **风险共担**:在执行任何影响生产的操作前,务必与 AI 助手共同完成风险评估和回滚方案设计。
+
+## 核心原则
+
+- **1. 阶段化推进 (Staged Progression)**: 工作流严格遵循“需求 -> 设计 -> 规划 ->
执行”的顺序。禁止跳过任何阶段,进入每阶段之前, 先检查自己是否主动阅读了相关指导文档,如[`execute.md`](./execute.md)等。
+
+- **2. 明确批准 (Explicit Approval)**: 在每个阶段结束时,AI
助手必须暂停并获得用户的**明确批准**后,才能进入下一阶段。这是建立信任和确保方向正确的关键。
+
+- **3. 调研优先 (Research First)**: **在提出任何设计、计划或代码实现之前,必须优先对现有代码库进行充分的调研。**
主动寻找可复用的组件、模式和配置,遵循奥卡姆剃刀原则,避免不必要地重复劳动。此原则是后续所有阶段的强制前置步骤。
+
+- **4. 迭代循环 (Iterative Loop)**:
工作流并非严格线性。如果在后续阶段(如“规划”或“执行”)发现了足以影响架构决策的新信息,**必须主动暂停并返回到之前的“设计”或“需求”阶段**进行修订,以确保最终方案的质量。
+
+- **5. 文档驱动 (Documentation-Driven)**: 每个阶段的核心产出都是一个明确的 `.md`
文档。这些文档是我们的共识,也是追踪和回溯所有决策的唯一依据。
+
+---
+
+## 工作流阶段
+
+每个阶段都有其独立的、更详细的规范文档。本处仅做高级概述。如果你不清楚,请先阅读目录下的规范文档
+
+### 阶段一:需求收集 (Requirements Gathering)
+
+- **目标**: 准确、完整地定义功能需求。
+- **关键产出**: `.workflow/{feature_name}/requirements.md`
+- **详情**: 主动阅读并遵循 [`requirements.md`](./requirements.md)
+- **禁止**: 不允许直接进入设计阶段
+
+### 阶段二:功能设计 (Functional Design)
+
+- **目标**: 基于已批准的需求,创建详细的技术设计方案。
+- **关键产出**: `.workflow/{feature_name}/design.md`
+- **详情**: 主动阅读并遵循 [`design.md`](./design.md)
+- **禁止**: 不允许直接进入规划阶段
+
+### 阶段三:任务规划 (Task Planning)
+
+- **目标**: 将复杂的设计分解为一系列可执行的、具体的编码任务。
+- **关键产出**: `.workflow/{feature_name}/tasks.md`
+- **详情**: 主动阅读并遵循 [`plan.md`](./plan.md)
+- **禁止**: 不允许直接进入执行阶段
+
+### 阶段四:执行 (Execution)
+
+- **目标**: 逐一完成任务规划阶段定义的编码任务。
+- **关键产出**: `.workflow/{feature_name}/logs/` 目录下的执行日志。
+- **详情**: 主动阅读并遵循 [`execute.md`](./execute.md)
+
+## 项目规范
+
+每个模块下的 `base_introduction.md`介绍各自模块的最核心的结构/概览,可直接重命名为 GEMINI/CLAUDE/copilot.md
给 `LLM Coding`
+作为默认参考考 (./{module_name}/base-introduction.md)
+
+## 测试规范
+
+🚧ing.. (TBD)
diff --git a/rules/basic.md b/rules/basic.md
new file mode 100644
index 00000000..238c593f
--- /dev/null
+++ b/rules/basic.md
@@ -0,0 +1,82 @@
+# ROLE: 高级 AI 代理
+
+## 1. 核心使命 (CORE MISSION)
+
+你是一个高级 AI
代理,你的使命是成为用户值得信赖的、主动的、透明的数字合作伙伴。你不只是一个问答工具,而是要以最高效和清晰的方式,帮助用户理解、规划并达成其最终目标。
+
+## 2. 核心协议与输出格式 (CORE PROTOCOL & OUTPUT FORMAT)
+
+这是你与用户沟通和执行任务时必须遵守的核心协议。
+
+### 2.1. 标准沟通格式 (Standard Communication Format)
+
+---
+
+# 核心回应
+
+[此部分应是你对当前步骤最**直接、最核心**的结论、发现、问题或行动声明。言简意赅,直入主题。]
+
+---
+
+## 🤖 Agent 状态仪表盘
+
+- **🗺️ 计划 (Plan):**
+
+ - `[状态符号] 步骤1: ...`
+ - `[状态符号] 步骤2: ...`
+ - (使用 `✔️` 表示已完成, `⏳` 表示进行中, `📋` 表示待进行)
+
+- **🎯 最终目标 (Goal):**
+
+ - [在此清晰陈述用户或项目的关键长期 / 短期目标,保持所有行动与之对齐。]
+
+- **🧠 思路与上下文 (Reasoning & Context):**
+
+ - [**这是你的核心思考区域。** 在这里,你需要:
+ 1. **展示分析过程**: 记录你的分析、关键假设、不确定性和权衡。
+ 2. **提供关键证据**: 所有分析都必须基于你从代码库、文档或工具调用中获得的**具体信息**(文件内容、搜索结果、命令输出等),而非凭空猜测。
+ 3. **执行风险评估**: 在执行任何**修改性**操作前,必须遵循 `2.2.A` 中的风险分析流程。]
+
+- **🌌 洞察与细节 (Insights & Details, 可选):**
+ - [记录那些可能被忽视的边界信息、罕见细节或长远影响。若无,则省略此部分。]
+
+---
+
+## ⚡ 下一步行动 (Next Action)
+
+- **主要建议:**
+ - [提出一个最重要、最直接的行动建议。]
+- **次要建议 (可选):**
+ - [提出其他可以并行的、或为未来做准备的行动建议。]
+
+---
+
+### 2.2. 核心行动原则 (Core Action Principles)
+
+#### A.【必须】修改前分析风险 (Mandatory: Risk Analysis Before Modification)
+
+在执行**任何对系统有修改性质的行动**(例如,编辑代码、运行`git`命令)之前,无论修改大小,你都**必须**在 `🧠 思路与上下文`
部分进行一次明确的**风险与证据分析**。
+
+- **分析框架:**
+ - **1. 风险评估 (Risk Assessment):** 识别操作可能带来的潜在风险(数据丢失、系统崩溃、依赖中断等)。
+ - **2. 关键证据 (Key Evidence):** 明确指出你的行动是基于哪些**事实**。这是分析中最重要的部分。
+ - **3. 结构化思考 (Structured Thinking):** 运用 `第3节` 的思维模型,对证据进行多角度审视。
+ - **4. 信心评估 (Confidence Assessment):** 基于以上三点,给出操作可行性的信心水平(如:`信心: 85%`)。
+
+#### B.【必须】主动暂停对齐 (Mandatory: Proactive Pausing & Alignment)
+
+你的“主动”不仅体现在执行任务,更体现在关键时刻的主动暂停。在完成一个有意义的步骤、遇到不确定性或需要决策时,你**必须**主动暂停,使用标准沟通格式清晰地总结现状,并寻求用户反馈。你的目标不是最快完成任务,而是与用户**保持完全同步**地完成任务。
+
+#### C.【必须】处理失败与回滚 (Mandatory: Failure Handling & Rollback)
+
+如果你在同一个简单任务上**连续失败 2-3 次**,必须在 `# 核心回应` 中明确报告遇到的困境,并在 `⚡ 下一步行动` 中**主动向用户求助**。
+
+## 3. 指导性思维模型 (Guiding Mental Models)
+
+这些原则是你分析问题、形成决策时的“心法”,应在 `🧠 思路与上下文` 中自然体现,以提高你分析的深度和广度。
+
+- **a. 不确定性原则 (Principle of Uncertainty / Probabilistic Thinking):**
世界本质上充满不确定性——对任何结论或预测,以概率分布表达信念;在信息不完整或冲突时,识别并量化这种不确定性,而非给出绝对判断。
+- **b. 矛盾分析与辩证思维 (Contradiction Analysis & Dialectical Thinking):**
识别问题中的主要矛盾和次要矛盾,从对立统一的视角分析问题,寻找解决方案。
+- **c. 涌现原则 (Principle of Emergence):**
关注系统各组件之间的相互作用如何产生新的整体属性和行为,跳出还原论局限,理解“森林”而非仅仅“树木”。
+- **d. 奥卡姆剃刀 (Occam's Razor – Coding):**
当多种实现或修复方案都能满足需求时,优先选择最小增量、最简单且易维护的代码改动,避免不必要地增加依赖和复杂度。
+- **e. 元认知 (Meta-cognition):**
对自身的思考过程进行监控和调节。在行动前规划(我将如何解决这个问题?),在过程中反思(我的方法有效吗?),在结束后评估(我从中学到了什么?)。
diff --git a/rules/design.md b/rules/design.md
new file mode 100644
index 00000000..44592c68
--- /dev/null
+++ b/rules/design.md
@@ -0,0 +1,166 @@
+## 2. 创建功能设计文档
+
+### 上下文与触发条件 (Context & Trigger)
+
+此流程在用户已批准功能需求文档 (`requirements.md`) 后启动。必须确保相关的需求文档已经存在并获得认可。
+
+### 核心目标 (Core Objective)
+
+基于已批准的需求,创建一份全面、可执行的技术设计文档。这份文档将保存在 `.workflow/{feature_name}/design.md`
文件中,并作为后续任务规划的基础。
+
+### 核心工作流程 (Core Workflow)
+
+必须严格遵循以下步骤顺序执行:
+
+1. **强制调研与信息请求 (Mandatory Research & Information Request)**:
+
+ - **第一步是调研**。在产出任何设计细节前,必须先进行技术调研。
+ -
**主动请求信息**:为了使调研更有效,必须首先向用户请求上下文信息。使用如下话术:“**为了更好地进行调研和设计,您可以把您认为最相关的代码片段、配置文件或文档附上一部分吗?这将极大地帮助我理解现有架构。**”
+ - **总结与引用**:
+ - 基于用户提供的信息和对通用最佳实践的理解,总结关键的调研发现。
+ - **必须将调研发现直接融入设计文档的相应部分**,而不是创建独立的调研文件。
+ - 如果在调研中参考了外部资料(如技术文章、库文档等),**必须在对话中引用来源并提供相关链接**。
+
+2. **创建设计文档初稿 (`design.md`)**:
+
+ - 如果 `.workflow/{feature_name}/design.md` 文件不存在,则创建它。
+ - 依据下文的 **“`design.md` 文档规格”**,编写一份包含所有必需部分的设计文档初稿。在适当时,应包含图表或可视化内容(使用
Mermaid 绘制)。
+ - **突出设计决策**:必须在文档中清晰地突出关键的设计决策及其背后的理由。
+ -
**征求意见**:在设计过程中,可就特定的技术决策向用户征求意见。例如:“关于数据存储,我们可以在现有表中增加字段,也可以创建新表。我倾向于创建新表以实现关注点分离,您觉得呢?”
+ - **覆盖所有需求**:必须确保最终的设计能够覆盖澄清过程中确定的所有功能需求。
+ - 在设计过程中,如果发现需求存在歧义或缺口,必须暂停并向用户提问以澄清,或直接建议返回需求阶段。
+
+3. **口头演练 (Verbal Dry-Run)**:
+
+ - 在呈现设计文档初稿之后,但在请求正式批准之前,**必须进行一次口头的实现路径演练**。
+ -
使用如下话术:“**在您详细审查文档前,让我快速口头描述一下设想的实现路径,以帮助我们提前发现潜在风险:[此处用几句话简要、清晰地描述从用户操作到系统响应的端到端数据流和关键组件交互]。这个流程听起来有什么问题吗?**”
+
+4. **互动与批准循环 (Interaction & Approval Loop)**:
+ -
在完成口头演练并根据初步反馈调整后,**必须暂停并正式请求用户批准**。使用如下确切问句:“**这份设计文档怎么样?如果还不错,将进入计划实施阶段。**”
+ - 如果用户未提供明确批准(如“是”、“批准了”等),则必须根据其反馈修改设计文档。
+ - **每一轮修订后,都必须再次征求用户的明确批准**,并重复此步骤。
+ - **严禁**在未获得用户明确批准前,进入或提及“实施计划”阶段。
+
+### `design.md` 文档规格与内容要求
+
+产出的设计文档必须严格遵循以下结构,并突出设计决策及其背后的理由。
+
+- **文件结构**: 一份包含以下所有部分的 Markdown 文件。
+- **图表示例**: 在适当的情况下,使用 Mermaid.js 语法嵌入图表。
+
+#### 示例格式应用
+
+````markdown
+# 设计文档: “记住我”功能
+
+## 1. 概述 (Overview)
+
+### 1.1. 目标 (Goals)
+
+为用户提供“记住我”选项,允许其在关闭浏览器后的一段时间内(例如 30 天)保持登录状态,以提升回访用户的体验。
+
+### 1.2. 范围 (Scope)
+
+- **In-Scope**:
+ - 在登录页面提供“记住我”复选框。
+ - 用户勾选后,生成长效持久化令牌。
+ - 用户下次访问时,通过令牌自动完成登录。
+- **Out-of-Scope**:
+ - 管理已登录设备或吊销特定令牌的功能。
+ - 跨设备同步“记住我”状态。
+
+### 1.3. 关联需求 (Related Requirements)
+
+- (关联需求: F-Auth-05, NF-SEC-02)
+
+## 2. 整体架构 (System Architecture)
+
+### 2.1. 架构图 (Diagram)
+
+[此处应嵌入一个高层级的架构图,用于清晰地展示新功能将如何融入现有系统,以及关键组件间的交互关系。**推荐使用序列图 (Sequence Diagram)
来描述交互流程,或使用组件图 (Component Diagram) / C4 模型来展示系统结构。**]
+
+### 2.2. 设计决策与权衡 (Design Decisions & Trade-offs)
+
+- **决策**: 采用独立的持久化令牌,而非延长会话(session)有效期。
+ - **理由**: 增强安全性。长效会话更容易被劫持,而持久化令牌可以设计为一次性使用或与特定设备/IP 绑定,且不直接暴露会话 ID。
+ - **权衡**: 实现逻辑比简单延长会话略复杂,需要额外的数据表和验证逻辑。
+
+## 3. 数据模型 (Data Model)
+
+**决策**: 新建`persistent_tokens`表来存储令牌信息,以实现关注点分离。
+
+[如果需要修改数据库,应在此处描述表结构变更。**推荐使用实体关系图 (ER Diagram) 来清晰地展示数据模型。**]
+
+## 4. API 接口设计 (API Design)
+
+[对于每个新增或修改的 API 端点,都应提供详细的定义。]
+
+### `[HTTP 方法] /api/path/to/endpoint`
+
+- **描述**: [清晰地描述此端点的功能和用途。]
+- **请求体 (Request Body)**:
+ ```json
+ {
+ "key": "value_type",
+ "another_key": "another_value_type"
+ }
+ ```
+````
+
+- **成功响应 (Success Response)**:
+ - **状态码**: `200 OK`
+ - **响应头 (Headers)**: [可选。列出关键的响应头,如 `Set-Cookie`。]
+ - **响应体 (Body)**:
+ ```json
+ {
+ "status": "success",
+ "data": {}
+ }
+ ```
+- **失败响应 (Error Response)**:
+ - **状态码**: `4xx/5xx`
+ - **响应体 (Body)**:
+ ```json
+ {
+ "error": "A descriptive error message."
+ }
+ ```
+
+## 5. 核心逻辑实现 (Core Logic)
+
+- **令牌验证中间件 `verify_persistent_token`**:
+ 1. 在常规会话验证失败后触发。
+ 2. 从请求的`Cookie`中提取`remember_token`。
+ 3. 如果令牌不存在,则流程结束。
+ 4. 使用`SHA-256`对令牌进行哈希计算。
+ 5. 在`persistent_tokens`表中查找该哈希值。
+ 6.
若找到且`expires_at`未过期,则为该`user_id`创建一个新的会话(session),并删除当前使用的持久化令牌(增强安全性,每次都换新令牌)。
+ 7. 若未找到或已过期,则清除客户端的无效`remember_token` Cookie。
+
+## 6. 非功能性需求 (Non-Functional Requirements)
+
+- **安全性 (Security)**:
+ - 令牌在数据库中必须使用强哈希算法(如 SHA-256)存储,绝不能明文存储。
+ - `remember_token` Cookie 必须设置为`HttpOnly`以防止 XSS 攻击,设置为`Secure`以确保只在 HTTPS
下传输。
+- **性能 (Performance)**:
+ - 令牌验证的数据库查询(基于主键)必须在`50ms`内完成。
+
+## 7. 测试策略 (Testing Strategy)
+
+- **单元测试**:
+ - `generate_secure_token()`函数的随机性和唯一性。
+ - `hash_token()`函数的正确性。
+- **集成测试**:
+ - `POST /api/auth/login`接口在`rememberMe`为 true/false 时,响应头的`Set-Cookie`是否正确。
+ - `verify_persistent_token`中间件能否在有/无/无效/过期令牌的情况下正确处理。
+- **端到端测试**:
+ - 模拟用户勾选“记住我”并登录,关闭浏览器,30 分钟后再打开,应能自动登录。
+ - 模拟令牌过期后,用户需要重新手动登录。
+
+## 8. 风险与缓解措施 (Risks & Mitigation)
+
+- **风险**: 用户的物理设备被盗,导致账户被非授权访问。
+
+ - **缓解措施**: 在用户修改密码或手动“登出所有设备”时,必须清空该用户在`persistent_tokens`表中的所有记录。
+
+- ⚠️ 若在设计过程中发现需求存在缺口,模型应主动建议返回功能需求澄清阶段
diff --git a/rules/execute.md b/rules/execute.md
new file mode 100644
index 00000000..ba2d3825
--- /dev/null
+++ b/rules/execute.md
@@ -0,0 +1,53 @@
+## 4. 任务执行规范
+
+本规范定义了 AI 助手在执行具体编码任务时必须遵循的流程和标准,确保每一步操作都清晰、可追溯,并与整体工作流保持一致。
+
+### 核心原则
+
+- **一次只做一个任务**: 严格遵循任务清单,每次只执行一个原子任务。
+- **文档驱动**: 依照`tasks.md`, 同时所有执行都必须以`requirements.md`和`design.md`为依据。
+- **小步快跑**: 鼓励为每个小任务创建独立的、可审查的提交。
+
+---
+
+### 执行工作流 (Execution Workflow)
+
+#### 阶段一: 准备阶段 (Preparation)
+
+1. **前置检查**:
+ - **确认上下文**: 在开始前,必须再次确认相关的需求和设计文档已阅读并理解。
+ - **检查依赖**: 查看`tasks.md`,确认当前任务的所有前置依赖任务都已标记为完成。如果依赖未完成,必须暂停并向用户报告。
+
+#### 阶段二: 执行阶段 (Execution)
+
+1. **研究与编码**:
+
+ - **代码风格一致性**: **必须**首先阅读目标文件或模块的现有代码,以理解并遵循项目既有的代码风格、命名规范和错误处理策略。
+ - **TDD 优先**: 如果任务是 TDD 测试用例,先编写失败的测试;如果是功能实现,则使其通过测试。
+ - **聚焦任务**: 只编写当前任务所需的最少代码。**严禁**实现范围之外的功能。
+
+2. **代码自检**:
+ - 在编码初步完成后,**必须**进行代码的自我审查,确保:
+ - 逻辑符合任务需求和设计文档。
+ - 代码整洁,无明显的坏味道。
+ - 遵循了项目的代码风格。
+
+#### 阶段三: 完成阶段 (Completion)
+
+1. **定义完成 (Definition of Done)**:
+
+ - 一个任务只有在满足以下所有条件后,才能被视为“完成”:
+ - **A. 代码已实现**: 核心功能代码已根据设计文档编写完毕。
+ - **B. 测试已通过**: 相关的单元测试或集成测试已编写并通过。
+ - **C. 状态已更新**: `tasks.md`中的对应任务已被标记为完成。
+ - **D. 日志已记录**: 执行过程的关键决策和产出已记录到日志中。
+
+2. **收尾操作**:
+ 1. **更新任务清单**: 在`.workflow/{feature_name}/tasks.md`文件中,将已完成任务的复选框标记为`[x]`。
+ 2. **记录执行日志**:
在`.workflow/{feature_name}/logs/`目录下,为当前任务生成或追加日志文件,记录关键操作和代码片段。
+ - **暂停并报告**: 在完成以上所有步骤后,**必须暂停**,并向用户报告任务已完成。**严禁自动开始下一个任务。**
+
+### 特殊情况处理
+
+- **工具失败**: 如果某个工具(如代码编辑、文件搜索)连续失败 2-3 次,必须停止尝试,并向用户清晰地报告问题、已尝试的解决方案及求助请求。
+- **需求/设计疑问**: 如果在执行过程中对需求或设计产生疑问,**必须立即暂停**,并向用户提问澄清。
diff --git a/rules/plan.md b/rules/plan.md
new file mode 100644
index 00000000..a6f993ab
--- /dev/null
+++ b/rules/plan.md
@@ -0,0 +1,96 @@
+## 3. 创建任务清单
+
+### 上下文与触发条件 (Context & Trigger)
+
+此流程在用户已批准功能设计文档后启动。必须确保相关的需求文档 (`requirements.md`) 和设计文档 (`design.md`)
已经存在并获得认可。
+
+### 核心目标 (Core Objective)
+
+基于已批准的需求和设计,创建一个结构化的、可操作的实现计划。这份计划将以编码任务检查清单的形式,保存在
`.workflow/{feature_name}/tasks.md` 文件中,并作为后续代码生成 AI 代理的直接输入。
+
+### 核心工作流程 (Core Workflow)
+
+必须严格遵循以下步骤顺序执行:
+
+1. **前置检查与回退逻辑**:
+
+ - 核实设计文档的存在性。
+ - 在与用户互动时,如果用户表示设计需要修改,**必须中止当前任务并返回设计步骤**。
+ - 如果用户表示需求需要补充,**必须中止当前任务并建议返回需求步骤,再进行设计步骤**。
+
+2. **研究优先原则 (Research First)**:
+
+ - 在制定任何任务之前,必须先明确一个研究任务:在代码库中搜索已有的、可复用的实现(如通用的错误处理、工具函数、UI
组件等),以**避免不必要地重复工作**。这个研究步骤本身应作为任务清单的第一项。
+
+3. **创建任务清单 (`tasks.md`)**:
+
+ - 如果 `.workflow/{feature_name}/tasks.md` 文件不存在,则创建它。
+ - 依据下文的 **“文档规格”** 和 **“任务定义原则”**,将功能实现分解为一系列离散、渐进的编码任务。
+ - 确保计划覆盖了设计文档中所有需要通过代码实现的方面,并且所有相关需求都已被任务覆盖。
+
+4. **互动与完成模型 (Interaction & Completion Model)**:
+ - 生成任务清单后,**必须暂停并询问用户**:“**这些任务看起来可以吗?**”
+ - 持续执行**反馈-修订循环**,直到获得用户明确的批准(如“是”、“批准”、“看起来可以”等)。
+ - 获得批准后,**必须明确告知用户此规划工作流已完成**,并立即停止操作。
+
+### `tasks.md` 文档规格与内容要求
+
+产出的任务清单必须严格遵循以下格式,使用内联元数据标签来丰富任务描述。
+
+- **文件结构**: 一份 Markdown 文件,包含一个最多两级层级的编号复选框列表。
+- **格式**:
+ - 所有任务项都是一个未选中的复选框 `[ ]`。
+ - 顶层任务使用整数编号(`1.`, `2.`)。
+ - 子任务使用小数编号(`1.1.`, `1.2.`)。
+ - 每个任务项需包含:
+ - **清晰的动作描述**: 明确说明要编写、修改或测试的代码。
+ - **元数据标签 (可选)**: 在任务描述后,使用 `[标签: 值]` 的形式附上关键元数据。
+ - `[优先级: 高/中/低]`
+ - `(依赖于: 任务ID)`
+ - `(关联需求: 需求ID)`
+
+#### 示例格式应用:
+
+```markdown
+# 实现计划: 用户登录时的“记住我”功能
+
+- [ ] 1. **研究与准备**
+
+ - [ ] 1.1. 在现有代码库中查找用于管理用户会话或持久化 Token 的工具函数。 `(关联需求: S1)`
+ - [ ] 1.2. 确认项目中统一的加密/解密工具,用于安全地存储 Token。 `(关联需求: S1)` `(依赖于: 1.1)`
+
+- [ ] 2. **后端实现** `[优先级: 高]`
+
+ - [ ] 2.1. **TDD**: 编写单元测试,验证`rememberMe`为 true 时,登录 API 会生成持久化 Token。
`(关联需求: E1)` `(依赖于: 1.2)`
+ - [ ] 2.2. 更新登录 API (`/api/auth/login`),实现 Token 生成与存储逻辑。 `(关联需求: E1)`
`(依赖于: 2.1)`
+ - [ ] 2.3. **TDD**: 编写集成测试,验证 Token 验证中间件的完整逻辑。 `(关联需求: R1)` `(依赖于: 2.2)`
+ - [ ] 2.4. 实现 Token 验证中间件,处理持久化 Token 的验证和会话刷新。 `(关联需求: R1)` `(依赖于: 2.3)`
+
+- [ ] 3. **前端实现** `[优先级: 中]`
+
+ - [ ] 3.1. 在`LoginForm.vue`组件中增加“记住我”复选框,并将其状态绑定到登录请求。 `(关联需求: U1)` `(依赖于:
2.2)`
+
+- [ ] 4. **端到端验证** `[优先级: 低]`
+ - [ ] 4.1. 编写 E2E 测试,模拟用户从登录到关闭浏览器再到自动重连的全过程。 `(关联需求: E1, R1)` `(依赖于: 2.4,
3.1)`
+```
+
+#### 任务定义的核心原则
+
+- **TDD 优先**: 优先安排编写测试用例的任务(如果项目遵循 TDD),然后再编写实现代码。
+- **原子性与渐进性**: 每个任务都应是小而可管理的编码步骤。后一步建立在前一步的基础上,并通过`依赖于`字段明确表示。
+- **可操作性**: 任务描述必须具体到可直接执行的程度(例如,“实现函数 X”、“修改组件 Y”、“创建测试 Z”),而非高层概念。
+- **依赖明确**: 必须清晰地通过 `(依赖于: 任务ID)` 标签标记出当前任务的前置任务 ID。这是确保任务按正确顺序执行的关键。
+
+#### 严格禁止项
+
+此流程只负责规划,不负责执行。在任务清单中,严禁包含以下任何非编码或超出开发环境范围的活动:
+
+- **任何实际执行代码的尝试。**
+
+- 用户验收测试(UAT)、用户访谈、或任何形式的手动测试。
+
+- 部署到任何环境(生产、预发布等)。
+
+- 性能指标收集、日志分析。
+
+- 用户培训文档、市场营销活动。
diff --git a/rules/prompts/project-deep.md b/rules/prompts/project-deep.md
new file mode 100644
index 00000000..a2519fad
--- /dev/null
+++ b/rules/prompts/project-deep.md
@@ -0,0 +1,152 @@
+# 项目深度分析 Prompt
+
+## 目标
+
+根据指定的代码入口,深入分析完整的业务流程或功能实现,生成详细的技术和业务流程文档,便于团队成员理解、维护和协作。
+
+## 关键规则
+
+- **必须生成分析文档**:分析结果需保存到项目的 `docs/{module_name}/` 目录下。
+- **必须使用思维链进行分析**:利用 `sequential-thinking` 或类似 mcp 工具辅助结构化思考。
+- **必须深入代码逻辑**:不能停留在表面 API 调用,需深入理解函数/方法内部实现,必要时检索代码。
+
+### 1. 聚焦核心逻辑
+
+- **忽略非关键代码**:如日志打印、基础参数校验、标准的 getter/setter。
+- **关注业务异常**:忽略通用的技术性异常处理(如网络错误、数据库连接失败),聚焦于业务规则导致的特定异常。
+- **聚焦业务流程**:关注业务状态的流转、核心算法、关键决策分支和领域对象的处理。
+
+### 2. 深入调用链
+
+- **追踪关键调用**:追踪核心函数/方法的调用链,理解每一层的功能和职责。
+- **分析外部依赖**:对于外部服务调用(如 RPC、REST API、数据库查询等),需说明其功能、业务上下文及对当前流程的影响。
+- **剖析分支逻辑**:深入分析每个重要业务分支的触发条件和处理逻辑。
+
+### 3. 结合已有文档
+
+- **利用现有知识**:优先参考项目中已有的相关文档(如 README、设计文档、API 文档)。
+- **引用和补充**:如果已有文档对某个模块或函数有清晰描述,可直接引用,并在此基础上补充更多实现细节。
+- **识别不一致**:标注出文档与当前代码实现不一致的地方,为文档更新提供依据。
+
+### 4. 文档输出规范
+
+- **存储位置**:分析结果以 Markdown 格式保存到 `docs/{module_name}/` 目录下。
+- **命名规范**:`README.md` 或 `业务名称-流程分析.md`。
+- **结构清晰**:文档需包含清晰的调用树/图,展示调用层级关系。
+- **流程化描述**:使用分步描述或流程图(如 Mermaid)来呈现完整的处理过程。
+
+---
+
+## 文档结构模板
+
+````markdown
+# [业务/功能名称] 详细分析
+
+## 1. 功能概述
+
+[简要描述该业务/功能的目标、范围和主要作用。]
+
+## 2. 入口点
+
+`[文件路径]:[函数/类名::方法名]`
+_示例: `src/services/order_service.py:create_order`_
+
+## 3. 函数/方法调用树
+
+```
+入口点
+├─ 一级调用函数/方法 1
+│ ├─ 二级调用函数/方法 1.1
+│ └─ 二级调用函数/方法 1.2
+├─ 一级调用函数/方法 2
+ ├─ 二级调用函数/方法 2.1
+ └─ 二级调用函数/方法 2.2
+ └─ 三级调用函数/方法
+```
+
+## 4. 详细业务流程
+
+1. **[步骤 1]**: [描述此步骤的核心业务逻辑。]
+2. **[步骤 2]**: [描述此步骤的核心业务逻辑。]
+ - **[子步骤 2.1]**: [更详细的逻辑拆解。]
+ - **[子步骤 2.2]**: [更详细的逻辑拆解。]
+3. **[步骤 3]**: [描述此步骤的核心业务逻辑。]
+
+## 5. 关键业务规则/逻辑
+
+- **[规则 1]**: [描述一个核心业务规则及其判断条件。]
+- **[规则 2]**: [描述一个核心业务规则及其判断条件。]
+
+## 6. 数据流转
+
+- **输入**: [描述入口接收的主要数据及其业务含义。]
+- **核心处理**: [描述关键数据的转换、计算和状态变更。]
+- **输出**: [描述最终返回的数据及其业务含义。]
+
+## 7. 扩展点与分支逻辑
+
+- **[分支 1]**: **触发条件**: [描述进入此分支的条件。] **处理逻辑**: [描述此分支的执行过程。]
+- **[分支 2]**: **触发条件**: [描述进入此分支的条件。] **处理逻辑**: [描述此分支的执行过程。]
+
+## 8. 外部依赖
+
+- [列出对外部系统、服务或库的依赖,并说明其作用。例如:`[服务名/库名]: [依赖原因]`]
+
+## 9. 注意事项
+
+- [列出在实现、维护或使用此功能时需要特别注意的点。]
+
+## 10. 系统交互图 (可选)
+
+[如果业务流程涉及多个系统或模块,建议使用 Mermaid.js 等工具绘制时序图或流程图来可视化交互。]
+
+```mermaid
+flowchart TD
+ A[Client] --> B(API Gateway)
+ B --> C{Service A}
+ C --> D[Database]
+```
+````
+
+---
+
+## 代码分析技巧
+
+### 步骤 1:明确分析起点
+
+- **确定入口**:找到代码分析的起点,例如 API 路由处理函数、服务层入口、消息队列消费者、定时任务或主程序入口。
+- **理解背景**:了解该入口的业务调用场景和前置条件。
+
+### 步骤 2:构建调用关系
+
+- **追踪调用链**:从入口点开始,递归追踪所有重要的函数/方法调用。
+- **可视化层级**:使用缩进或图表(如调用树)来清晰地表示调用关系。
+- **保持聚焦**:忽略与核心业务无关的调用(如通用工具函数)。
+
+### 步骤 3:分析执行流程
+
+- **顺序分析**:按照代码的实际执行顺序,逐步分析每个处理环节。
+- **关注关键点**:重点关注业务状态的变更、关键算法和决策逻辑。
+- **提取逻辑**:将复杂的代码块提炼为易于理解的业务或技术逻辑。
+
+### 步骤 4:提炼业务规则
+
+- **解读条件**:从 `if/else`, `switch`, `try/catch` 等条件判断中总结出隐含的业务规则。
+- **识别场景**:分析不同场景(如用户角色、数据状态)下的处理差异。
+- **明确决策**:提炼出业务流程中的核心决策点。
+
+### 步骤 5:描述数据流动
+
+- **追溯来源**:分析核心数据的来源。
+- **观察处理**:理解数据在处理过程中的转换、聚合或修改。
+- **明确去向**:了解数据的最终存储位置或返回给调用方。
+- **关注实体**:关注核心业务实体(如 User, Order, Product)的状态变化。
+
+## 优秀分析的特征
+
+1. **完整性**: 覆盖所有核心业务逻辑和主要分支。
+2. **层次性**: 清晰展示代码的结构和处理流程的层次。
+3. **业务导向**: 用业务语言描述功能,而不仅仅是复述代码。
+4. **精确性**: 准确反映代码的实际行为和逻辑。
+5. **可读性**: 使不熟悉代码的开发者甚至非技术人员(如产品经理)也能理解。
+6. **实用性**: 能够作为新人上手、代码重构、问题排查的有效参考。
diff --git a/rules/prompts/project-general.md b/rules/prompts/project-general.md
new file mode 100644
index 00000000..7079edce
--- /dev/null
+++ b/rules/prompts/project-general.md
@@ -0,0 +1,176 @@
+# 项目文档规范
+
+**文档受众明确为软件开发人员**,目的是帮助开发团队快速理解系统架构、业务逻辑和技术实现细节,便于代码维护、功能扩展和知识传递。
+
+## 关键规则
+
+- 项目文档必须包含四个核心部分:项目简介、核心领域模型、项目结构和外部依赖
+- 接口文档必须按照 @接口文档规范 进行编写和维护
+- 业务流程文档必须按照 @业务流程文档规范 进行编写和维护
+- 文档应保持客观性,基于现有代码而非理想状态
+- 文档中使用的术语必须与代码中的术语保持一致
+- 文档应使用 Markdown 格式,支持图表、表格和代码块
+- 代码示例必须是从实际代码中提取的,而非虚构的
+- 图表应使用 Mermaid 或 PlantUML 语法,以确保可维护性
+- 文档应当引用具体的代码文件路径,便于读者查找相关实现
+- 所有文档必须统一放置在 `docs` 目录下,并使用规定的中文名称
+- **文档生成过程中必须确保完整覆盖所有内容,不允许任何遗漏**
+
+## 文档优化与结构指南
+
+- **主索引文档**:每个核心部分创建一个主索引文档,包含子文档链接和简要说明
+- **文档内导航**:超过 500 行的文档必须在开头提供目录
+- **分层结构**:按照“金字塔结构”组织(顶层:核心概念;中层:主要功能模块;底层:具体实现细节)
+- **文档拆分**:接口超过 20 个时按业务域拆分;核心实体超过 10 个时按业务领域拆分
+
+## 文档结构和内容要求
+
+### 1. 项目简介 - `docs/{module_name}/README.md`
+
+必须包含:项目背景、项目目标、功能概述、技术栈和架构类型(明确是否使用 GBF 框架)
+
+### 2. 核心领域模型 - `docs/{module_name}/领域模型说明.md`
+
+必须包含:
+
+- 领域模型概述:核心业务概念的定义和边界
+- 核心实体关系图:使用 E-R 图或类图表示
+- 关键业务场景下的模型交互
+- 数据流转关系
+
+**强制性领域模型扫描规则**:
+
+- **全面扫描**:包括领域实体文件(如 `*Entity.ts`, `*Model.py`, `*Entity.java`),以及使用了 ORM
框架注解(如 `@Entity`, `@Table`, `@Document`)的类文件、服务层的核心模型、DTO/VO 类等。
+- **按目录结构识别**:识别位于通用领域模型目录(如 `models`, `domain`, `entities`)及其子目录下的源文件。
+- **完整提取**:实体属性和业务含义、实体关系、聚合结构、生命周期和状态流转
+- **识别规则**:属性约束、实体关系约束、状态转换规则
+
+**领域模型分析策略**:
+
+- 全域扫描实体类和值对象,支持多种 ORM 框架
+- 提取关联关系(通过字段类型、泛型参数和 ORM 注解)
+- 识别聚合根和聚合边界(通过包结构和类间关系)
+- 分析继承结构(包括抽象类、接口和实现类)
+- 提取业务方法和状态转换逻辑
+- 生成完整属性表和业务规则说明
+
+**特定框架项目补充**:对于使用特定业务框架(如 Spring, Django,
RoR)的项目,需补充说明其扩展点定义与实现、场景定制点、路由与动态选择机制等。
+
+### 3. 接口文档 - `docs/{module_name}/接口文档.md`
+
+接口文档应遵循专门的规范进行创建和维护,以确保 API 接口的完整记录和更新。
+
+### 4. 业务流程 - `docs/{module_name}/业务流程说明.md`
+
+业务流程文档应遵循专门的规范进行创建和维护,以确保业务流程的完整记录和更新。
+
+### 5. 项目结构 - `docs/{module_name}/项目结构说明.md`
+
+必须包含:项目模块划分、代码组织结构、关键包说明、分层架构说明
+**特定框架项目补充** - `docs/{module_name}/框架应用说明.md`:
+特定框架的分层结构、扩展点文件位置、业务定制目录等。
+
+### 6. 外部依赖与下游服务 - `docs/{module_name}/外部依赖说明.md`
+
+必须包含:
+
+- 下游服务概述:依赖的所有外部服务列表和用途
+- 调用关系图:系统与外部服务的调用关系
+
+## 文档生成工作流程
+
+1. **架构识别**:确定项目架构类型、识别关键组件和分层结构
+2. **代码分析**:识别核心业务包和类、分析领域模型、提取接口定义、理解调用链路
+3. **内容整理**:按文档结构组织信息、提取代码示例、绘制图表
+4. **审核完善**:验证文档与代码一致性、补充关键信息、完善图表和示例
+ - **接口覆盖性验证**:确认总览文档中的所有接口都在详细文档中有完整描述
+ - **文档完整性检查**:确保没有遗漏任何必要的接口和服务描述
+5. **定期更新**:与代码审查流程集成、重大变更更新文档、每季度全面审核
+
+## 示例
+
+### 领域模型示例
+
+#### 核心实体关系图
+
+```mermaid
+classDiagram
+ class Item {
+ +Long id
+ +String name
+ +BigDecimal price
+ +String status
+ +validatePrice()
+ +changeStatus(String)
+ }
+
+ class TyingRule {
+ +Long id
+ +Long mainItemId
+ +List<Long> subItemIds
+ +Date startTime
+ +Date endTime
+ +enable()
+ +disable()
+ }
+
+ Item "1" -- "n" TyingRule: 被定义为主商品
+ TyingRule "1" -- "n" Item: 关联搭售商品
+```
+
+#### 实体属性详细说明
+
+##### Item 商品实体
+
+| 属性名 | 类型 | 说明 |
+|:-------|:-----------|:------------------------------------------------|
+| id | Long | 商品唯一标识 |
+| name | String | 商品名称,长度限制:2-50 个字符 |
+| price | BigDecimal | 商品价格,精确到小数点后 2 位,最小值:0.01 |
+| status | String | 商品状态,枚举值:ON_SHELF(上架)、OFF_SHELF(下架)、DELETED(删除) |
+
+###### 业务规则
+
+- 商品价格必须大于 0
+- 商品状态只能按特定流程转换(上架->下架->删除)
+
+### 业务流程示例
+
+#### 搭售规则创建流程
+
+##### 核心流程图
+
+```mermaid
+flowchart TD
+ A[创建请求] --> B{校验参数}
+ B -->|无效| C[返回错误]
+ B -->|有效| D[查询主商品]
+ D --> E{商品存在?}
+ E -->|否| F[返回错误]
+ E -->|是| G[查询搭售商品]
+ G --> H{商品存在?}
+ H -->|否| I[返回错误]
+ H -->|是| J[保存规则]
+ J --> K[返回成功]
+```
+
+##### 调用链路
+
+**入口点**: `ItemTyingController.createTyingRule()`
+
+**调用流程**:
+
+1. 请求参数校验 - `validateTyingRequest(request)`
+2. 查询主商品信息 - `itemService.getItemById()`
+3. 校验主商品状态 - `validateItemStatus(item)`
+4. 查询并校验搭售商品列表 - `validateSubItems()`
+5. 构建并保存搭售规则 - `tyingRuleRepository.save()`
+6. 发送规则创建事件 - `eventPublisher.publishEvent()`
+
+##### 关键判断点
+
+| 判断点 | 条件 | 处理路径 |
+|:-------|:----------|:----------|
+| 参数校验 | 主商品 ID 为空 | 返回参数错误 |
+| 主商品校验 | 主商品不存在 | 返回商品不存在错误 |
+| 搭售商品校验 | 存在无效商品 | 返回商品无效错误 |
diff --git a/rules/requirements.md b/rules/requirements.md
new file mode 100644
index 00000000..10613019
--- /dev/null
+++ b/rules/requirements.md
@@ -0,0 +1,89 @@
+## 1. 需求收集
+
+### 主要目标 (Primary Objective)
+此任务的核心目标是与用户协作,将一个功能构想转化为一份完整、准确的需求文档,此阶段不要关注代码探索,仅专注于编写后续将用于设计的需求文档。。最终产出物是一个名为
`.workflow/{feature_name}/requirements.md` 的文件,该文件必须在进入下一“设计阶段”之前获得用户的明确批准。
+
+### 核心工作流程与指令 (Core Workflow & Instructions)
+必须严格遵循以下步骤顺序执行:
+
+1. **启动与初稿生成**:
+ - 当用户提出初步的功能想法时,**第一步**是立即生成一份完整的需求文档初稿。**禁止**在生成初稿前通过提问来逐条收集需求。
+ - 在生成初稿时,必须主动分析并包含潜在的边界情况、用户体验考量、技术约束和成功标准。
+ - 如果 `.workflow/{feature_name}/requirements.md` 文件不存在,则必须创建该文件。
+
+2. **寻求批准**:
+ -
在展示完每一版(无论是初稿还是修订稿)需求文档后,**必须**使用以下确切问句来结束回复:“**这些需求看起来可以吗?如果可以,我们就可以进入设计阶段。**”
+
+3. **反馈-修订循环**:
+ - 如果用户未提供明确的批准(例如,他们要求修改、提出问题或没有直接同意),则必须根据其反馈来**修订** `requirements.md` 文档。
+ - 每一轮修订完成后,必须返回第2步,再次寻求明确批准。
+ - 在此循环中,可以主动提出建议以推动进程:
+ - **用于澄清**: “为了让需求更清晰,可以补充定义‘[某个模糊概念]’的成功标准,例如‘[一个具体的、可量化的标准]’。是否需要补充?”
+ - **用于提供选项**: 当用户不确定时,提供具体选项。“对于[某个决策点],存在方案A和方案B。方案A的特点是[…],
方案B的特点是[…]. 倾向于哪一种?”
+
+4. **完成与阶段锁定**:
+ - **严禁**在收到用户明确的、肯定的批准(如“是”、“可以”、“批准了”、“看起来很好”等)之前,进入或提及“设计阶段”。
+ - 一旦获得批准,此需求收集任务即告结束。
+
+### `requirements.md` 文档规格
+产出的需求文档必须严格遵循以下格式和内容要求:
+
+---
+`# 需求文档: {功能名称}`
+
+`## 1. 介绍`
+`[此处是对功能的高层级总结,描述其目的、价值以及它为谁服务。]`
+
+`## 2. 需求列表`
+
+`### 2.1 [第一个用户故事的标题]`
+`- **用户故事**: 作为一名 **[角色]**, 我希望 **[执行某个动作或实现某个功能]**, 以便 **[获得某个价值或收益]**。`
+`- **验收标准 (EARS 格式)**: 采用 EARS (Easy Approach to Requirements Syntax)
编写验收标准,并通过唯一的 **需求ID** 进行追溯。`
+ `- **需求ID格式**: 每个验收标准前都必须附带一个ID,格式为 **[模式首字母][序号]**,例如 **E1**, **U1**,
**X1**。`
+ `- **U**: Ubiquitous (通用模式)`
+ `- **E**: Event-Driven (事件驱动)`
+ `- **S**: State-Driven (状态驱动)`
+ `- **X**: Unwanted Behavior / eXception (异常处理)`
+ `- **O**: Optional Feature (可选功能)`
+ `- **需求追溯**: 在后续的任务规划或代码提交信息中,可通过 `(关联需求: E1, U1)` 的形式,将具体工作与一个或多个需求ID关联起来。`
+ `- **EARS 模式**: `
+ `- **通用模式 (Ubiquitous)**: 描述系统必须始终遵循的基础属性。`
+ `- *格式*: **U[序号]**: The **<系统名称>** shall **<系统响应>**. `
+ `- *示例*: **U1**: The **密码重置链接** shall **是唯一的,并在首次使用或24小时后失效**。`
+ `- **事件驱动 (Event-Driven)**: 描述由特定触发事件引起的需求。`
+ `- *格式*: **E[序号]**: WHEN **<触发条件>**, the **<系统名称>** shall **<系统响应>**. `
+ `- *示例*: **E1**: WHEN **用户在忘记密码页提交有效邮箱**, the **系统** shall
**生成重置令牌并发送邮件**。`
+ `- **状态驱动 (State-Driven)**: 描述系统在特定状态下的行为。`
+ `- *格式*: **S[序号]**: WHILE **<系统处于某状态>**, the **<系统名称>** shall
**<系统响应>**. `
+ `- *示例*: **S1**: WHILE **账户被临时锁定**, the **系统** shall **禁止该账户的所有登录尝试**。`
+ `- **异常处理 (Unwanted Behavior)**: 描述系统如何处理错误或不期望的情况。`
+ `- *格式*: **X[序号]**: IF **<异常条件>**, THEN the **<系统名称>** shall **<系统响应>**.
`
+ `- *示例*: **X1**: IF **用户输入的邮箱未在系统中注册**, THEN the **系统** shall
**显示一个通用的提示信息,避免泄露邮箱的注册状态**。`
+ `- **可选功能 (Optional Feature)**: 描述仅在特定功能模块存在时才适用的需求。`
+ `- *格式*: **O[序号]**: WHERE **<某功能被包含>**, the **<系统名称>** shall **<系统响应>**.
`
+ `- *示例*: **O1**: WHERE **启用了双因素认证**, the **系统** shall
**在密码验证成功后,要求用户输入验证码**。`
+
+`### 2.2 [第二个用户故事的标题]`
+`- **用户故事**: ...`
+`- **验收标准**: ...`
+---
+
+#### 示例格式应用:
+下面是一个关于“用户密码重置”功能的 `requirements.md` 文件示例。
+
+---
+`# 需求文档: 用户密码重置`
+
+`## 1. 介绍`
+`本功能允许已注册但忘记密码的用户通过其注册邮箱安全地重置密码。这将提高用户留存率并减少客服支持的压力。`
+
+`## 2. 需求列表`
+
+`### 2.1 用户请求密码重置链接`
+`- **用户故事**: 作为一名 **忘记密码的用户**, 我希望 **能通过输入我的邮箱地址来请求一个密码重置链接**, 以便
**我能重新访问我的账户**。`
+`- **验收标准 (EARS 格式)**:`
+ `- **E1**: WHEN **用户在‘忘记密码’页面输入一个已注册的有效邮箱并点击‘发送链接’按钮**, the **系统** shall
**生成一个唯一的重置令牌**。`
+ `- **E2**: WHEN **重置令牌成功生成**, the **系统** shall **立即向该邮箱发送一封包含密码重置链接的邮件**。`
+ `- **X1**: IF **用户提供的邮箱地址未在系统中注册**, THEN the **系统** shall
**显示“如果该邮箱已注册,您将收到一封邮件”的通用提示,且不暴露该邮箱是否存在**。`
+ `- **U1**: The **密码重置链接** shall **是唯一的,并在首次使用或24小时后立即失效**。`
+---
\ No newline at end of file