---
name: project-init
description: "初始化项目目录结构，收集项目元信息（项目名称、目录、公司、密级），生成 .adspecs/project.json。支持四种模式：简易模式（仅 docs + wiki）、经典模式（+ front-demo）、完整模式（所有目录）、轻量模式（Python+SQLite+React+AntD6 全栈 demo，固定技术栈）。经典/完整模式支持 front-demo 技术栈选择（Vue 或 Ant Design React）。项目目录可选：未提供时直接在当前工作目录创建。Use when the user asks to initialize a project, create project scaffold, set up a new development environment, or recreate the project directory structure."
agent_created: true
argument-hint: "[--project-name <名称>] [--project-dir <目录>] [--company <公司>] [--mode simple|classic|full|demo] [--front-demo vue|antd]"
---

# 项目初始化 (Project Init)

## 概述

在当前会话工作目录下搭建项目的目录结构。支持三种初始化模式，用户可根据需要选择：

| 模式     | 初始化区域                                                 | 说明                                                    |
| -------- | ---------------------------------------------------------- | ------------------------------------------------------- |
| 简易模式 | `docs/` + `wiki/`                                          | 仅文档目录和模板，适合产品经理和技术设计阶段            |
| 经典模式 | `docs/` + `wiki/` + `front-demo/`                          | 文档 + 前端演示，适合需求设计和原型验证，适用于产品经理 |
| 完整模式 | `docs/` + `wiki/` + `web-ui/` + `service/` + `front-demo/` | 所有目录和文件，适合产品经理和开发人员                  |
| 轻量模式 | `docs/` + `wiki/` + `web-ui/` + `service/` + `front-demo/` | 固定技术栈（Python + SQLite + React + AntD6）全栈 demo，适合快速原型验证与功能演示 |

各区域说明：

| 区域          | 说明                          | 创建方式                                                                                                           | 适用模式           |
| ------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------ |
| `docs/`       | 文档目录树（11 个一级子目录） | 创建骨架 + README.md（40 经典/完整/轻量模式从 references 复制，简易模式仅创建空目录；模板已迁移至 .adspecs/templates/） | 简易 / 经典 / 完整 / 轻量 |
| `wiki/`       | 基线文件目录                  | 创建骨架 + README.md                                                                                               | 简易 / 经典 / 完整 / 轻量 |
| `front-demo/` | PM 设计阶段前端演示项目       | 从 references 复制（支持 Vue 或 Ant Design React；轻量模式固定 Ant Design React）                                  | 经典 / 完整 / 轻量 |
| `web-ui/`     | 前端正式项目                  | 从插件根目录 references/web-ui 复制                                                                                   | 完整 / 轻量        |
| `service/`    | 后端服务模块目录              | 创建 service 目录 + README.md                                                                                      | 完整 / 轻量        |
| `.adspecs/`   | 插件运行时配置与脚本          | 从插件根目录 .adspecs 完整复制（含 extensions.yml、feature.json、scripts/）                                       | 简易 / 经典 / 完整 / 轻量 |
| `hooks/`      | Hook 脚本（SessionStart/Stop 等） | 从插件根目录 hooks/ 完整复制（含 hooks.json、platform.js 等 5 个脚本）                                       | 简易 / 经典 / 完整 / 轻量 |

## 适用场景

当用户要求：

- 初始化项目、创建项目骨架、搭建开发环境
- 在新机器或新目录重建项目结构
- 为新项目创建标准目录布局
- 在当前目录下直接生成项目结构（未提供项目名称时）

## 用户输入

```text
$ARGUMENTS
```

### 项目信息收集（必选，交互式提示）

每次执行本技能时，**必须**通过 AskUserQuestion 工具收集以下项目信息（即使 `$ARGUMENTS` 已提供部分参数，未提供的字段仍需交互收集），**不可跳过此步骤**。

#### 必收集字段

| 字段           | 变量名               | 说明                               | 约束                                               | 默认值                   |
| -------------- | -------------------- | ---------------------------------- | -------------------------------------------------- | ------------------------ |
| **项目名称**   | `project_name`       | 项目完整名称（中文/英文均可）      | 必填，不可留空                                     | —                        |
| **项目目录**   | `project_dir`        | 项目文件目录名，用于创建项目根目录 | 仅允许字母、数字、连字符、下划线                   | 留空 = 当前目录          |
| **公司名称**   | `company_name`       | 所属公司名称                       | 任意字符                                           | "XX有限公司"             |
| **项目短名称** | `project_short_name` | 用于文件命名前缀和模块编号前缀     | **仅允许英文字母和数字**（不含连字符、空格、中文） | 从 project_name 自动推导 |
| **文件密级**   | `confidentiality`    | 文件保密等级                       | 可选值：公开 / 内部资料 / 机密 / 绝密              | "内部资料"               |

#### 收集方式

使用 **AskUserQuestion** 工具分两次收集：

**第一次（核心信息）**：

```
questions: [
  {
    question: "请输入项目名称：",
    header: "项目名称",
    options: [
      { label: "示例：华峰铝业CRM平台", description: "项目完整名称，支持中英文" },
      { label: "示例：my-project",       description: "英文项目名称" }
    ],
    multiSelect: false
  },
  {
    question: "请输入项目目录名（留空则在当前目录直接创建）：",
    header: "项目目录",
    options: [
      { label: "留空（当前目录）", description: "不创建子目录，直接在当前工作目录下生成项目结构" },
      { label: "输入目录名",       description: "在当前目录下创建同名子目录作为项目根目录（仅字母、数字、连字符、下划线）" }
    ],
    multiSelect: false
  }
]
```

**第二次（补充信息）**：

```
questions: [
  {
    question: "请输入公司名称（不填默认"XX有限公司"）：",
    header: "公司名称",
    options: [
      { label: "XX有限公司",  description: "默认值，后续可修改 .adspecs/project.json" },
      { label: "输入公司名称", description: "自定义公司名称" }
    ],
    multiSelect: false
  },
  {
    question: "请选择文件密级（不选默认"内部资料"）：",
    header: "文件密级",
    options: [
      { label: "内部资料（默认）", description: "仅限公司内部使用" },
      { label: "公开",             description: "可对外公开" },
      { label: "机密",             description: "限授权人员访问" },
      { label: "绝密",             description: "最高保密等级" }
    ],
    multiSelect: false
  }
]
```

#### project_short_name 自动推导规则

`project_short_name` 不由用户直接输入，而是自动推导：

1. 从 `project_name` 中提取所有英文字母和数字（去除中文、空格、连字符、下划线等）
2. 转为小写
3. 如果结果为空（项目名称全中文），则从 `project_dir` 推导（去除连字符和下划线）
4. 如果仍为空，使用 `project` 作为默认值

**示例**：

| project_name        | project_dir  | project_short_name |
| ------------------- | ------------ | ------------------ |
| "华峰铝业 CRM 平台" | "hflv-crm"   | "hflvcrm"          |
| "my-project"        | "my-project" | "myproject"        |
| "CRM 客户关系管理"  | ""           | "crm"              |
| "智慧园区管理"      | "park"       | "park"             |

#### $ARGUMENTS 快捷参数

以下参数可通过 `$ARGUMENTS` 直接传入，跳过对应的交互提示：

| 参数                    | 对应字段     | 示例                           |
| ----------------------- | ------------ | ------------------------------ |
| `--project-name <名称>` | project_name | `--project-name "华峰铝业CRM"` |
| `--project-dir <目录>`  | project_dir  | `--project-dir hflv-crm`       |
| `--company <公司名称>`  | company_name | `--company "华峰集团"`         |

### 初始化模式（必选，交互式提示）

通过 **AskUserQuestion** 工具询问用户选择初始化模式：

- **简易模式**：仅初始化文档目录（docs/ + wiki/），不初始化 web-ui、service、front-demo
- **经典模式**：简易模式基础上完成 front-demo 初始化
- **完整模式**：初始化所有目录和文件
- **轻量模式**：固定技术栈（Python + SQLite + React + Ant Design 6）全栈 demo，包含完整前后端程序，适合快速功能演示

如果 `$ARGUMENTS` 中包含 `--mode` 参数，可直接解析使用：

- `--mode simple` → 简易模式
- `--mode classic` → 经典模式
- `--mode full` → 完整模式
- `--mode demo` → 轻量模式

### 前端演示技术栈（经典/完整模式时必选，轻量模式固定）

当用户选择**经典模式**或**完整模式**时，通过 **AskUserQuestion** 工具询问前端演示项目的技术栈：

- **front-demo**（Vue 技术栈，**默认**）→ 从插件根目录 `references/front-demo/` 复制
- **antd-front-demo**（Ant Design React 技术栈）→ 从插件根目录 `references/antd-front-demo/` 复制

如果 `$ARGUMENTS` 中包含 `--front-demo` 参数，可直接解析使用：

- `--front-demo vue` → front-demo（Vue 技术栈）
- `--front-demo antd` → antd-front-demo（Ant Design React 技术栈）

简易模式下忽略此参数。

**轻量模式**前端技术栈固定为 **Ant Design React**（`FRONT_DEMO_SOURCE = "antd-front-demo"`），无需询问用户。

### 可选参数（通过 $ARGUMENTS 传入）

| 参数           | 默认值                                        | 说明                                                       |
| -------------- | --------------------------------------------- | ---------------------------------------------------------- |
| `--modules`    | `3100-crm-mdm:mdm,3103-crm-contract:contract` | 逗号分隔的后端模块列表，格式 `{port}-crm-{name}:{package}` |
| `--mode`       | （交互式选择）                                | 初始化模式：`simple` / `classic` / `full` / `demo`         |
| `--front-demo` | `vue`                                         | 前端演示技术栈：`vue` / `antd`（轻量模式下自动为 `antd`）  |

### 最终项目路径

项目基于**用户当前会话工作目录**（`pwd`）创建，根据 `project_dir` 确定目标路径：

- 如果 `project_dir` 非空 → `TARGET = $(pwd)/{project_dir}`，在该子目录下创建项目结构
- 如果 `project_dir` 为空 → `TARGET = $(pwd)`，直接在当前工作目录下创建项目结构

**简易模式：**

```
{pwd}/（或 {pwd}/{project_dir}/）
├── .adspecs/
├── docs/
├── hooks/
└── wiki/
```

**经典模式：**

```
{pwd}/（或 {pwd}/{project_dir}/）
├── .adspecs/
├── docs/
├── hooks/
├── wiki/
└── front-demo/
```

**完整模式：**

```
{pwd}/（或 {pwd}/{project_dir}/）
├── .adspecs/
├── docs/
├── hooks/
├── wiki/
├── web-ui/
├── service/
└── front-demo/
```

## 执行前检查

**重要**：以下步骤 **每次执行都必须完整走一遍**，不可因为上下文中已有相关信息而跳过任何交互提示。即使当前目录已存在项目结构，也必须重新询问用户。

1. **收集项目信息**（必选，不可跳过）：
   - 解析 `$ARGUMENTS` 中的 `--project-name`、`--project-dir`、`--company` 参数
   - 对未通过参数提供的字段，使用 **AskUserQuestion** 工具按"项目信息收集"章节的方式分两次收集
   - 收集完成后，对 `project_short_name` 执行自动推导（按"project_short_name 自动推导规则"）
   - 对 `company_name` 和 `confidentiality`，如果用户未填写，使用默认值（"XX有限公司" 和 "内部资料"）
   - 记录收集结果：`PROJECT_NAME`、`PROJECT_DIR`、`COMPANY_NAME`、`PROJECT_SHORT_NAME`、`CONFIDENTIALITY`
   - 解析 `--modules` 列表（有则用，无则用默认值）
   - 解析 `--mode` 参数（有则用，无则交互式选择）
   - 解析 `--front-demo` 参数（有则用，经典/完整模式下无则交互式选择）

2. **选择初始化模式**：
   - 使用 **AskUserQuestion** 工具询问初始化模式（简易 / 经典 / 完整）
   - **AskUserQuestion 调用示例**：

     ```
     questions: [
       {
         question: "请选择项目初始化模式：",
         header: "初始化模式",
         options: [
           { label: "简易模式", description: "仅初始化文档目录和模板（docs/ + wiki/），适合产品经理和技术设计阶段" },
           { label: "经典模式", description: "文档 + 前端演示项目（docs/ + wiki/ + front-demo/），适合需求设计和原型验证，适用于产品经理" },
           { label: "完整模式", description: "所有目录和文件（docs/ + wiki/ + web-ui/ + service/ + front-demo/），适合正式开发阶段，适用于开发人员" },
           { label: "轻量模式", description: "固定技术栈 Python + SQLite + React + AntD6 全栈 demo（docs + wiki + web-ui + service + front-demo），适合快速功能演示" }
         ],
         multiSelect: false
       }
     ]
     ```

3. **选择前端演示技术栈**（仅经典/完整模式，轻量模式固定 Ant Design React 无需选择）：
   - 使用 **AskUserQuestion** 工具询问前端演示技术栈
   - **AskUserQuestion 调用示例**：

     ```
     questions: [
       {
         question: "请选择前端演示项目的技术栈：",
         header: "前端技术栈",
         options: [
           { label: "Vue（默认）",    description: "Vue 3 + Vite + TypeScript + Element Plus 技术栈" },
           { label: "Ant Design React", description: "React + Ant Design 技术栈" },
           { label: "跳过", description: "不创建前端演示项目，仅初始化文档目录和模板" }
         ],
         multiSelect: false
       }
     ]
     ```

   - 记录选择结果：`FRONT_DEMO_SOURCE` = `front-demo`（Vue）或 `antd-front-demo`（Ant Design React）

4. **计算最终路径**：
   - 如果 `PROJECT_DIR` 非空 → `TARGET = $(pwd)/{PROJECT_DIR}`
   - 如果 `PROJECT_DIR` 为空 → `TARGET = $(pwd)`（直接使用当前工作目录）
5. **检查目标路径是否存在**：
   - 如果 `TARGET` 不存在 → 直接创建目录，跳到第 7 步
   - 如果 `TARGET` 存在 → 进入**冲突处理流程**（第 6 步）
6. **冲突处理流程**（按模式扫描对应区域）：
   - 根据模式扫描 `TARGET` 下对应区域目录的存在情况：
     - **简易模式**：扫描 `.adspecs/`、`docs/`、`wiki/`、`hooks/`
     - **经典模式**：扫描 `.adspecs/`、`docs/`、`wiki/`、`front-demo/`、`hooks/`
     - **完整模式**：扫描 `.adspecs/`、`docs/`、`wiki/`、`web-ui/`、`service/`、`front-demo/`、`hooks/`
     - **轻量模式**：扫描 `.adspecs/`、`docs/`、`wiki/`、`web-ui/`、`service/`、`front-demo/`、`hooks/`（同完整模式扫描范围）
   - 如果对应区域均不存在 → 视为空目录，直接继续，跳到第 7 步
   - 如果有任意区域已存在 → 使用 **AskUserQuestion** 工具询问用户对**每个已存在的区域**的处理方式，提供以下两个选项：
     - **重新创建**：删除该区域现有文件，使用最新模板重新创建
     - **跳过**：保留该区域现有文件，不做任何修改
   - 将用户选择记录到区域决策映射中，供后续各阶段使用：

     **简易模式区域决策：**

     ```
     区域决策 = {
       .adspecs: "recreate" | "skip" | "create",
       docs:  "recreate" | "skip" | "create",   # create = 原本不存在，直接创建
       wiki: "recreate" | "skip" | "create",
       hooks: "recreate" | "skip" | "create",
     }
     子目录决策 = {
       conventions_decision: "update" | "skip",   # docs 为 skip 且 40-project_conventions/ 有文件时
       templates_decision:   { "<文件名>": "replace" | "keep", ... },  # .adspecs 为 skip 且 templates/ 有文件时，逐文件确认
     }
     ```

     **经典模式区域决策：**

     ```
     区域决策 = {
       .adspecs:    "recreate" | "skip" | "create",
       docs:       "recreate" | "skip" | "create",
       wiki:      "recreate" | "skip" | "create",
       front_demo: "recreate" | "skip" | "create",
       hooks:      "recreate" | "skip" | "create",
     }
     子目录决策 = {
       conventions_decision: "update" | "skip",   # docs 为 skip 且 40-project_conventions/ 有文件时
       templates_decision:   { "<文件名>": "replace" | "keep", ... },  # .adspecs 为 skip 且 templates/ 有文件时，逐文件确认
     }
     ```

     **完整模式区域决策：**

     ```
     区域决策 = {
       .adspecs:    "recreate" | "skip" | "create",
       docs:       "recreate" | "skip" | "create",
       wiki:      "recreate" | "skip" | "create",
       web_ui:     "recreate" | "skip" | "create",
       service:    "recreate" | "skip" | "create",
       front_demo: "recreate" | "skip" | "create",
       hooks:      "recreate" | "skip" | "create",
     }
     子目录决策 = {
       conventions_decision: "update" | "skip",   # docs 为 skip 且 40-project_conventions/ 有文件时
       templates_decision:   { "<文件名>": "replace" | "keep", ... },  # .adspecs 为 skip 且 templates/ 有文件时，逐文件确认
     }
     ```

     **轻量模式区域决策：**（同完整模式，但前端技术栈固定 + 规范目录自动按技术栈复制）

     ```
     区域决策 = {
       .adspecs:    "recreate" | "skip" | "create",
       docs:       "recreate" | "skip" | "create",
       wiki:      "recreate" | "skip" | "create",
       web_ui:     "recreate" | "skip" | "create",
       service:    "recreate" | "skip" | "create",
       front_demo: "recreate" | "skip" | "create",  # 固定 antd-front-demo
       hooks:      "recreate" | "skip" | "create",
     }
     子目录决策 = {
       conventions_decision: "update" | "skip",   # docs 为 skip 且 40-project_conventions/ 有文件时
       templates_decision:   { "<文件名>": "replace" | "keep", ... },  # .adspecs 为 skip 且 templates/ 有文件时，逐文件确认
     }
     固定技术栈：
       FRONT_DEMO_SOURCE = "antd-front-demo"      # Ant Design React（无需询问用户）
       FRONTEND_STANDARD_SOURCE = "ant6-front-standard"
       BACKEND_STANDARD_SOURCE = "python-end-standard"
     ```

   - **AskUserQuestion 调用示例**（所有模式，当 `.adspecs/`、`docs/` 和 `web-ui/` 已存在时）：

     ```
     questions: [
       {
         question: "docs/ 目录已存在，如何处理？",
         header: "docs/",
         options: [
           { label: "重新创建", description: "删除现有 docs/ 目录，使用最新模板重新创建" },
           { label: "更新",     description: "保留现有 docs/ 目录，按新内容覆盖" },
           { label: "跳过",     description: "保留现有 docs/ 目录，不做任何修改" }
         ],
         multiSelect: false
       },
       {
         question: "web-ui/ 目录已存在，如何处理？",
         header: "web-ui/",
         options: [
           { label: "重新创建", description: "删除现有 web-ui/ 目录，从模板重新复制" },
           { label: "更新",     description: "保留现有 web-ui/ 目录，按新内容覆盖" },
           { label: "跳过",     description: "保留现有 web-ui/ 目录，不做任何修改" }
         ],
         multiSelect: false
       },
       {
         question: ".adspecs/ 目录已存在，如何处理？",
         header: ".adspecs/",
         options: [
           { label: "重新创建", description: "删除现有 .adspecs/ 目录，从模板重新复制" },
           { label: "更新",     description: "保留现有 .adspecs/ 目录，按新内容覆盖" },
           { label: "跳过",     description: "保留现有 .adspecs/ 目录，不做任何修改" }
         ],
         multiSelect: false
       }
     ]
     ```

   - **补充检查（模式升级检测）**：当 `docs/` 已存在且 `docs` 决策为 `skip` 时，如果当前模式为**经典模式**、**完整模式**或**轻量模式**，需额外检查 `docs/40-project_conventions/` 的内容状态：
     - 检查 `docs/40-project_conventions/` 下是否存在实际文件（非空目录）
     - 如果 `40-project_conventions/` 仅包含空子目录（简易模式的产物：`end-integration/` + `frontend-integration/`，或仅 `frontend-standard/` 为空目录）→ 根据前端技术栈选择自动从 references 补充复制 `frontend-standard/` 的文件内容（Vue → `vue3-front-standard/`，Ant Design React → `ant6-front-standard/`），同时补充复制后端规范 `ecp-end-standard/` 到 `end-standard/`，并输出：`📦 补充：检测到 40-project_conventions/ 为空目录（简易模式产物），已按技术栈补充 frontend-standard/ 和 end-standard/`
     - 如果 `40-project_conventions/` 已包含文件 → 不做额外处理

   - **子目录更新检查（40-project_conventions/）**：当 `docs/` 已存在且 `docs` 决策为 `skip`，且 `docs/40-project_conventions/` 下已包含实际文件时，需额外询问用户是否更新此子目录：
     - 使用 **AskUserQuestion** 工具询问：

       ```
       questions: [
         {
           question: "docs/40-project_conventions/ 目录已存在且包含文件，是否使用最新规范文件更新？",
           header: "40-conventions",
           options: [
             { label: "更新", description: "使用 references 中最新的规范文件覆盖现有内容（已有文件将被替换）" },
             { label: "跳过", description: "保留现有 40-project_conventions/ 内容，不做任何修改" }
           ],
           multiSelect: false
         }
       ]
       ```

     - 记录子决策：`conventions_decision` = `"update"` | `"skip"`
     - 如果 `40-project_conventions/` 不存在或仅包含空目录 → 跳过此检查，`conventions_decision` = `"skip"`

   - **子目录更新检查（.adspecs/templates/）**：当 `.adspecs/` 已存在且 `.adspecs` 决策为 `skip`，且 `.adspecs/templates/` 下已包含实际文件时，需**逐文件**询问用户是否替换模板文件（因用户可能在首次初始化后根据项目实际情况修改了模板内容）：

     **步骤 1：扫描目标目录已有模板文件**
     - 列出 `$TARGET/.adspecs/templates/` 下所有 `.md` 文件
     - 同时列出 `$PLUGIN_DIR/.adspecs/templates/` 下所有 `.md` 文件（插件根目录的最新模板）
     - 计算两组文件集合：
       - `existing_files`：目标目录中已有的模板文件名列表
       - `new_files`：插件根目录中存在但目标目录中不存在的模板文件（需要新增）
       - `common_files`：两边都存在的模板文件（需要逐一确认是否替换）

     **步骤 2：先处理新增文件（无需确认）**
     - 如果 `new_files` 非空 → 直接复制到目标目录，输出：`📦 模板新增：已添加 {N} 个新模板文件：{文件列表}`
     - 如果 `new_files` 为空 → 不输出

     **步骤 3：逐文件确认（批量询问）**
     - 对 `common_files` 中的每个文件，使用 **AskUserQuestion** 工具批量询问（每次最多 4 个文件，因为 AskUserQuestion 最多支持 4 个问题，需要分多轮询问）：

       ```
       # 第 1 轮（文件 1~4）
       questions: [
         {
           question: "模板文件 {文件名1} 已存在，是否使用最新版本替换？",
           header: "{文件名1}",
           options: [
             { label: "保留现有", description: "保留当前项目中的版本，不做修改（用户可能已按项目实际情况调整过）" },
             { label: "替换为最新", description: "使用插件根目录中的最新版本覆盖现有文件" }
           ],
           multiSelect: false
         },
         {
           question: "模板文件 {文件名2} 已存在，是否使用最新版本替换？",
           header: "{文件名2}",
           options: [
             { label: "保留现有", description: "保留当前项目中的版本，不做修改" },
             { label: "替换为最新", description: "使用插件根目录中的最新版本覆盖现有文件" }
           ],
           multiSelect: false
         },
         ...  # 最多 4 个问题一轮
       ]
       ```

     - 如果 `common_files` 数量超过 4 个，需要分多轮调用 AskUserQuestion，每轮最多 4 个文件
     - 每轮询问结束后，将用户选择记录到 `templates_decision` 映射中

     **步骤 4：提供批量快捷选项（可选）**
     - 在首轮询问前，可先通过 AskUserQuestion 提供一个全局快捷选项：

       ```
       questions: [
         {
           question: ".adspecs/templates/ 目录已存在且包含 {N} 个模板文件，是否需要逐文件确认？（选择"否"将统一保留现有文件）",
           header: "批量确认",
           options: [
             { label: "逐文件确认", description: "对每个已修改的模板文件逐一询问是否替换（推荐，用户可能已按项目情况调整过模板）" },
             { label: "全部保留现有", description: "保留所有现有模板文件不做修改（跳过逐文件确认）" },
             { label: "全部替换为最新", description: "使用插件根目录中的最新版本覆盖所有模板文件" }
           ],
           multiSelect: false
         }
       ]
       ```

     - 如果用户选择"逐文件确认" → 执行步骤 3 的逐文件询问
     - 如果用户选择"全部保留现有" → `templates_decision` 中所有文件标记为 `"keep"`
     - 如果用户选择"全部替换为最新" → `templates_decision` 中所有文件标记为 `"replace"`

     **步骤 5：记录子决策**
     - 记录子决策映射：`templates_decision` = `{ "<文件名>": "replace" | "keep", ... }`
     - 其中 `"replace"` 表示使用插件根目录最新版本覆盖，`"keep"` 表示保留目标目录现有版本
     - 如果 `.adspecs/templates/` 不存在或仅包含空目录 → 跳过此检查，`templates_decision` = `{}`（空映射）

7. **输出初始化计划摘要**，包含项目信息（项目名称、项目短名称、公司名称、文件密级、项目目录）、初始化模式、前端技术栈（如适用）、每个区域的操作（创建 / 重新创建 / 跳过）、子目录更新决策（40-project_conventions/ 的更新/跳过、templates/ 的逐文件确认结果：哪些文件将被替换、哪些将被保留）、feature.json/project.json 属性补全计划以及补充检查结果，等待用户确认后继续执行

## 工作流程

### 阶段 1：创建 docs/ 目录结构

**适用模式：简易 / 经典 / 完整 / 轻量**

根据区域决策执行：

- `docs` 决策为 `skip` → 输出 `⏭ 阶段 1 跳过：docs/ 已存在，保留现有内容`，但需检查 `conventions_decision` 子决策：
  - 如果 `conventions_decision` = `"update"` → 根据前端技术栈选择从 `references/vue3-front-standard/`（Vue）或 `references/ant6-front-standard/`（Ant Design React）复制到 `$TARGET/docs/40-project_conventions/frontend-standard/`，覆盖更新前端规范文件；经典/完整模式下同时从 `references/ecp-end-standard/` 复制到 `$TARGET/docs/40-project_conventions/end-standard/` 更新后端规范文件，输出：`🔄 阶段 1 补充更新：docs/40-project_conventions/ 已按技术栈更新前后端规范`
  - 如果 `conventions_decision` = `"skip"` → 不做额外处理
  - 处理完子决策后进入阶段 2
- `docs` 决策为 `recreate` → 执行 `rm -rf "$TARGET/docs"`，然后按下方步骤完整重建
- `docs` 决策为 `create` → 直接按下方步骤创建

创建以下完整目录树。大部分目录使用 `mkdir -p` 创建并写入 `README.md`；其中 `40-project_conventions/` 在经典/完整模式下根据前端技术栈选择复制 `vue3-front-standard/`（Vue）或 `ant6-front-standard/`（Ant Design React）到 `frontend-standard/` 子目录，并复制 `ecp-end-standard/` 到 `end-standard/` 子目录（后端 Java 规范）；轻量模式下复制 `ant6-front-standard/` 到 `frontend-standard/` 和 `python-end-standard/` 到 `end-standard/`；在简易模式下仅创建空子目录结构。模板文件（原 `50-templates/`）已迁移至 `.adspecs/templates/`，随阶段 6 的 `.adspecs/` 复制一并完成。

#### 目录结构

```
docs/
├── 00-planning/
├── 00-customer-requirements/
├── 10-architecture/
├── 20-prd/
├── 30-system-design/
├── 40-project_conventions/
│   ├── frontend-standard/      # 经典/完整模式按前端技术栈复制（Vue→vue3-front-standard，AntD→ant6-front-standard）；轻量模式固定 ant6-front-standard；简易模式为空
│   └── end-standard/           # 经典/完整模式复制 ecp-end-standard（Java）；轻量模式固定 python-end-standard；简易模式为空
├── 70-scripts/
│   └── depoly/
├── 80-development/
│   ├── 800-log/
│   ├── 801-dev/
│   └── 802-test/
├── 100-help/
└── 300-specs/
```

#### README.md 内容模板

每个一级子目录的 `README.md` 使用以下格式：

```markdown
# {目录名称}

{用途说明}

## 目录说明

| 子目录   | 说明   |
| -------- | ------ |
| {子目录} | {说明} |

## 文件命名规范

{命名规则说明}

## 修订记录

| 日期    | 版本 | 修改内容 | 修改人 |
| ------- | ---- | -------- | ------ |
| {today} | 1.0  | 初始创建 | system |
```

各目录 README.md 具体内容：

**00-planning/**:

- 用途: 规划阶段文档，存放平台级规划产物（业务场景、子模块依赖关系、统一数据模型等）
- 命名规范: `{seq}-{name}.md`（如 `01-smom-wms_business_architecture.md`）

**00-customer-requirements/**:

- 用途: 客户需求文档，存放客户原始需求、会议纪要、需求沟通记录
- 子目录: `crm/` — CRM 模块客户需求

**10-architecture/**:

- 用途: 架构文档，系统架构设计、模块依赖关系、统一数据模型
- 命名规范: `{seq}-{name}.md`（如 `01-smom-wms_business_architecture.md`）

**20-prd/**:

- 用途: PRD 文档，产品需求说明书
- 子目录: `crm/` — CRM 模块 PRD
- 命名规范: `{module-code}-{module-name}/` 下存放

**30-system-design/**:

- 用途: 系统设计，后端系统设计、SQL Schema、前端设计、TDD 任务清单
- 子目录: `crm/` — CRM 模块系统设计
- 命名规范: `{module-code}-{module-name}_system-design.md`、`{module-code}-{module-name}_schema.sql`

**40-project_conventions/**（经典/完整/轻量模式按技术栈复制规范，简易模式仅创建空子目录）:

- 用途: 项目约定，前后端集成开发规范和接口约定
- 子目录:
  - `frontend-standard/` — 前端约定（按技术栈来源不同）
  - `end-standard/` — 后端约定（按模式来源不同）
- 来源规则（经典/完整模式）:
  - 前端演示技术栈选择 **Vue（默认）** → 复制 `$PLUGIN_DIR/references/vue3-front-standard/` 到 `$TARGET/docs/40-project_conventions/frontend-standard/`
  - 前端演示技术栈选择 **Ant Design React** → 复制 `$PLUGIN_DIR/references/ant6-front-standard/` 到 `$TARGET/docs/40-project_conventions/frontend-standard/`
  - 后端规范（所有经典/完整模式）→ 复制 `$PLUGIN_DIR/references/ecp-end-standard/` 到 `$TARGET/docs/40-project_conventions/end-standard/`
- 来源规则（轻量模式）:
  - 前端规范：复制 `$PLUGIN_DIR/references/ant6-front-standard/` 到 `$TARGET/docs/40-project_conventions/frontend-standard/`
  - 后端规范：复制 `$PLUGIN_DIR/references/python-end-standard/` 到 `$TARGET/docs/40-project_conventions/end-standard/`
- 来源规则（简易模式）: 仅创建空目录结构 `frontend-standard/` + `end-standard/`，不复制文件

**70-scripts/**:

- 用途: 脚本，部署脚本和工具脚本
- 子目录: `depoly/` — 部署相关脚本

**80-development/**:

- 用途: 开发产物，开发工件和测试工件归档
- 子目录: `801-dev/` 开发工件, `802-test/` 测试工件（/ads-utest 单元测试报告默认输出目录）
- 子目录: `800-log/` 开发日志，AI 会话记录和开发历史追踪
- 命名规范: `{YYYYMMDD}_{主题}.md` 或 `{YYYYMMDD_HHmmss}_{主题}.md`

**100-help/**:

- 用途: 帮助文档，使用手册和参考指南
- 内容: `使用手册.md`

**300-specs/**:

- 用途: 功能规格说明书，p{module}-{seq}\_{name}\_spec.md 格式
- 命名规范: `p{module}-{seq}_{name}_spec.md`，配套 `p{module}-{seq}_{name}_sim-data.md`

#### 执行命令

```bash
SKILL_DIR="<SKILL.md 所在目录>"   # 即 project-init skill 目录
PLUGIN_DIR="$(cd "$SKILL_DIR/../.." && pwd)"   # adspecs 插件根目录
# 根据 project_dir 是否为空确定目标路径
TARGET="$(pwd)/{PROJECT_DIR}"      # PROJECT_DIR 非空时
# 或 TARGET="$(pwd)"               # PROJECT_DIR 为空时
mkdir -p "$TARGET"

# 如果 docs 决策为 recreate，先删除现有目录
# rm -rf "$TARGET/docs"

# --- 创建空骨架目录（需要 README.md 的目录） ---
mkdir -p "$TARGET/docs/00-planning"
mkdir -p "$TARGET/docs/00-customer-requirements"
mkdir -p "$TARGET/docs/10-architecture"
mkdir -p "$TARGET/docs/20-prd"
mkdir -p "$TARGET/docs/30-system-design"
mkdir -p "$TARGET/docs/70-scripts/depoly"
mkdir -p "$TARGET/docs/80-development/800-log"
mkdir -p "$TARGET/docs/80-development/801-dev"
mkdir -p "$TARGET/docs/80-development/802-test"
mkdir -p "$TARGET/docs/100-help"
mkdir -p "$TARGET/docs/300-specs"

# --- 从 references 复制已有文件的目录 ---
# 40-project_conventions：根据模式决定处理方式
if [ "{mode}" = "simple" ]; then
  # 简易模式：仅创建空子目录结构，不复制 references 文件
  mkdir -p "$TARGET/docs/40-project_conventions/frontend-standard"
  mkdir -p "$TARGET/docs/40-project_conventions/end-standard"
elif [ "{mode}" = "demo" ]; then
  # 轻量模式：固定技术栈 Python + SQLite + React + AntD6，前后端规范都复制
  mkdir -p "$TARGET/docs/40-project_conventions/frontend-standard"
  mkdir -p "$TARGET/docs/40-project_conventions/end-standard"
  cp -r "$PLUGIN_DIR/references/ant6-front-standard/." "$TARGET/docs/40-project_conventions/frontend-standard/"
  cp -r "$PLUGIN_DIR/references/python-end-standard/." "$TARGET/docs/40-project_conventions/end-standard/"
else
  # 经典/完整模式：按前端技术栈选择复制前端规范到 frontend-standard/，后端统一复制 ecp-end-standard
  if [ "$FRONT_DEMO_SOURCE" = "antd-front-demo" ]; then
    # Ant Design React 技术栈
    FRONTEND_STANDARD_SOURCE="ant6-front-standard"
  else
    # Vue 技术栈（默认）
    FRONTEND_STANDARD_SOURCE="vue3-front-standard"
  fi
  mkdir -p "$TARGET/docs/40-project_conventions/frontend-standard"
  mkdir -p "$TARGET/docs/40-project_conventions/end-standard"
  cp -r "$PLUGIN_DIR/references/$FRONTEND_STANDARD_SOURCE/." "$TARGET/docs/40-project_conventions/frontend-standard/"
  cp -r "$PLUGIN_DIR/references/ecp-end-standard/." "$TARGET/docs/40-project_conventions/end-standard/"
fi

# 注意：模板文件已迁移至 .adspecs/templates/，随阶段 6 的 .adspecs/ 复制一并完成，无需单独复制
```

然后使用 Write 工具为**骨架目录**生成 `README.md`（经典/完整模式下 40 已有文件无需生成；简易模式下 40 仅有空目录结构，需生成 README.md）。

`SKILL_DIR` 的确定方式：**SKILL.md 所在目录**即为 `SKILL_DIR`。`PLUGIN_DIR = SKILL_DIR/../..`（adspecs 插件根目录），所有 references 资源均基于 `$PLUGIN_DIR/references/` 访问（references 已迁移至插件根目录）。

完成后输出：

- 新建时（简易模式）：`✅ 阶段 1 完成：docs/ 目录结构已创建（11 个一级子目录，40 仅创建空目录；模板在 .adspecs/templates/ 随阶段 6 复制）`
- 新建时（经典/完整模式）：`✅ 阶段 1 完成：docs/ 目录结构已创建（11 个一级子目录，其中 40 从 references 复制前后端规范；模板在 .adspecs/templates/ 随阶段 6 复制）`
- 新建时（轻量模式）：`✅ 阶段 1 完成：docs/ 目录结构已创建（11 个一级子目录，40 按 Python+React 技术栈复制前后端规范；模板在 .adspecs/templates/ 随阶段 6 复制）`
- 重建时：`🔄 阶段 1 完成：docs/ 目录结构已重新创建（删除旧目录后重建）`
- 跳过时：`⏭ 阶段 1 跳过：docs/ 已存在，保留现有内容`
- 跳过但更新 40 时：`⏭ 阶段 1 跳过：docs/ 已存在 + 🔄 40-project_conventions/ 已从 references 更新`

---

### 阶段 2：创建 wiki/ 基线文件目录

**适用模式：简易 / 经典 / 完整 / 轻量**

根据区域决策执行：

- `wiki` 决策为 `skip` → 输出 `⏭ 阶段 2 跳过：wiki/ 已存在，保留现有内容`，进入阶段 3
- `wiki` 决策为 `recreate` → 执行 `rm -rf "$TARGET/wiki"`，然后按下方步骤完整重建
- `wiki` 决策为 `create` → 直接按下方步骤创建

创建 `wiki/` 目录，用于存放项目基线文件（与 `docs/` 下的 `300-specs/` 不同，顶层 `wiki/` 用于存放跨模块或项目级别的基线规格文件）。

#### 目录结构

```
wiki/
└── README.md
```

#### README.md 内容

使用 Write 工具生成 `wiki/README.md`，内容如下：

```markdown
# wiki

基线文件目录，用于存放项目级别的基线规格文件，包括功能规格、接口规格、数据规格等。

## 目录说明

| 子目录       | 说明                     |
| ------------ | ------------------------ |
| （按需创建） | 按模块或主题组织基线文件 |

## 文件命名规范

`{module}-{name}_spec.md`

## 修订记录

| 日期    | 版本 | 修改内容 | 修改人 |
| ------- | ---- | -------- | ------ |
| {today} | 1.0  | 初始创建 | system |
```

#### 执行命令

```bash
# TARGET="$(pwd)/{PROJECT_DIR}"    # PROJECT_DIR 非空时
# 或 TARGET="$(pwd)"               # PROJECT_DIR 为空时

# 如果 wiki 决策为 recreate，先删除现有目录
# rm -rf "$TARGET/wiki"

mkdir -p "$TARGET/wiki"
```

然后使用 Write 工具生成 `wiki/README.md`。

完成后输出：

- 新建时：`✅ 阶段 2 完成：wiki/ 基线文件目录已创建`
- 重建时：`🔄 阶段 2 完成：wiki/ 基线文件目录已重新创建`
- 跳过时：`⏭ 阶段 2 跳过：wiki/ 已存在，保留现有内容`

---

### 阶段 3：创建 web-ui/ 前端项目

**适用模式：完整 / 轻量**

**模式检查**：如果当前模式 ≠ 完整模式 且 ≠ 轻量模式 → 输出 `⏭ 阶段 3 跳过（当前为{模式名}，web-ui/ 仅在完整/轻量模式下初始化）`，直接进入阶段 4。

根据区域决策执行：

- `web_ui` 决策为 `skip` → 输出 `⏭ 阶段 3 跳过：web-ui/ 已存在，保留现有内容`，进入阶段 4
- `web_ui` 决策为 `recreate` → 执行 `rm -rf "$TARGET/web-ui"`，然后按下方步骤完整重建
- `web_ui` 决策为 `create` → 直接按下方步骤创建

从 references 完整复制 `web-ui` 目录下的是所有文件，web-ui 是ECP管理后台壳工程到目标目录。

#### 源路径

从插件根目录的 `references/` 目录复制。`PLUGIN_DIR = SKILL_DIR/../..`（adspecs 插件根目录）。

#### 执行命令

```bash
SKILL_DIR="<SKILL.md 所在目录>"
PLUGIN_DIR="$(cd "$SKILL_DIR/../.." && pwd)"   # adspecs 插件根目录
# TARGET="$(pwd)/{PROJECT_DIR}"    # PROJECT_DIR 非空时
# 或 TARGET="$(pwd)"               # PROJECT_DIR 为空时

# 如果 web_ui 决策为 recreate，先删除现有目录
# rm -rf "$TARGET/web-ui"

# 从插件根目录 references 复制完整目录
cp -r "$PLUGIN_DIR/references/web-ui" "$TARGET/web-ui"

# 清理不需要的大文件/目录
rm -rf "$TARGET/web-ui/node_modules" 2>/dev/null
rm -rf "$TARGET/web-ui/.git" 2>/dev/null

# 统计复制的文件数量
find "$TARGET/web-ui" -type f | wc -l
```

**注意**：

- 排除 `node_modules/` — 应在目标环境通过 `npm install` 重新安装
- 排除 `.git/` — 目标项目应独立管理版本控制

完成后输出：

- 新建时：`✅ 阶段 3 完成：web-ui/ 前端项目创建（{N} 个文件）`
- 重建时：`🔄 阶段 3 完成：web-ui/ 前端项目已重新创建（{N} 个文件）`
- 跳过时：`⏭ 阶段 3 跳过：web-ui/ 已存在，保留现有内容`

---

### 阶段 4：创建后端服务模块

**适用模式：完整 / 轻量**

**模式检查**：如果当前模式 ≠ 完整模式 且 ≠ 轻量模式 → 输出 `⏭ 阶段 4 跳过（当前为{模式名}，service/ 仅在完整/轻量模式下初始化）`，直接进入阶段 5。

根据区域决策执行：

- `service` 决策为 `skip` → 输出 `⏭ 阶段 4 跳过：service/ 已存在，保留现有内容`，进入阶段 5
- `service` 决策为 `recreate` → 执行 `rm -rf "$TARGET/service"`，然后按下方步骤完整重建
- `service` 决策为 `create` → 直接按下方步骤创建

根据参数中的模块列表，为每个模块创建 `service/` 目录并放置一个 `README.md` 说明文件。

仅创建一个 `service/` 目录和一个 `README.md` 说明文件，不创建其他文件。

#### README.md 内容模板

使用 Write 工具为每个模块生成 `service/{port}-crm-{name}/service/README.md`，内容如下：

```markdown
这是后端服务模块放置目录，在完成技术架构设计后，所有后端服务模块的源代码将放置在此目录下。
```

然后使用 Write 工具生成 `service/README.md`。

完成后输出：

- 新建时：`✅ 阶段 4 完成：service 目录已创建`
- 重建时：`🔄 阶段 4 完成：service 目录已重新创建`
- 跳过时：`⏭ 阶段 4 跳过：service/ 已存在，保留现有内容`

---

### 阶段 5：创建 front-demo/ 前端演示项目

**适用模式：经典 / 完整 / 轻量**

**模式检查**：如果当前模式 = 简易模式 → 输出 `⏭ 阶段 5 跳过（当前为简易模式，front-demo/ 仅在经典/完整/轻量模式下初始化）`，直接进入阶段 6。

根据区域决策执行：

- `front_demo` 决策为 `skip` → 输出 `⏭ 阶段 5 跳过：front-demo/ 已存在，保留现有内容`，进入阶段 6
- `front_demo` 决策为 `recreate` → 执行 `rm -rf "$TARGET/front-demo"`，然后按下方步骤完整重建
- `front_demo` 决策为 `create` → 直接按下方步骤创建

根据用户选择的**前端演示技术栈**，从 references 复制对应的前端演示项目到目标目录：

| 技术栈选择       | 源目录                        | 说明                                          |
| ---------------- | ----------------------------- | --------------------------------------------- |
| Vue（默认）      | `$PLUGIN_DIR/references/front-demo/`      | Vue 3 + Vite + TypeScript + Element Plus      |
| Ant Design React | `$PLUGIN_DIR/references/antd-front-demo/` | React + Vite + TypeScript + Ant Design6技术栈 |

#### 执行命令

```bash
SKILL_DIR="<SKILL.md 所在目录>"
PLUGIN_DIR="$(cd "$SKILL_DIR/../.." && pwd)"   # adspecs 插件根目录
# TARGET="$(pwd)/{PROJECT_DIR}"    # PROJECT_DIR 非空时
# 或 TARGET="$(pwd)"               # PROJECT_DIR 为空时

# 根据前端技术栈选择确定源目录
FRONT_DEMO_SOURCE="front-demo"           # Vue 技术栈（默认）
# 或 FRONT_DEMO_SOURCE="antd-front-demo"  # Ant Design React 技术栈

# 如果 front_demo 决策为 recreate，先删除现有目录
# rm -rf "$TARGET/front-demo"

# 从插件根目录 references 复制完整目录
cp -r "$PLUGIN_DIR/references/$FRONT_DEMO_SOURCE" "$TARGET/front-demo"

# 清理不需要的大文件/目录
rm -rf "$TARGET/front-demo/node_modules" 2>/dev/null
rm -rf "$TARGET/front-demo/.git" 2>/dev/null
rm -rf "$TARGET/front-demo/.vite" 2>/dev/null

# 统计复制的文件数量
find "$TARGET/front-demo" -type f | wc -l
```

**注意**：

- 排除 `node_modules/` — 应在目标环境通过 `npm install` 重新安装
- 排除 `.git/` — 目标项目应独立管理版本控制
- 排除 `.vite/` — Vite 缓存目录，无需复制

完成后输出：

- 新建时：`✅ 阶段 5 完成：front-demo/ 已复制（{技术栈名}，{N} 个文件）`
- 重建时：`🔄 阶段 5 完成：front-demo/ 已重新复制（{技术栈名}，{N} 个文件）`
- 跳过时：`⏭ 阶段 5 跳过：front-demo/ 已存在，保留现有内容`

---

### 阶段 6：创建 .adspecs/ 配置与脚本目录

**适用模式：简易 / 经典 / 完整 / 轻量**

根据区域决策执行：

- `.adspecs` 决策为 `skip` → 输出 `⏭ 阶段 6 跳过：.adspecs/ 已存在，保留现有内容`，但需检查以下子决策和属性补全：
  - 根据 `templates_decision` 逐文件映射执行模板更新（见下方"模板逐文件更新执行逻辑"）
  - 执行 **feature.json 与 project.json 属性补全检查**（见下方）
  - 处理完子决策和属性补全后进入阶段 7
- `.adspecs` 决策为 `recreate` → 先备份已存在的 `feature.json` 和 `project.json`，然后执行 `rm -rf "$TARGET/.adspecs"`，按下方步骤完整重建，最后恢复备份文件并执行属性补全检查（见下方"feature.json 与 project.json 属性补全"）
- `.adspecs` 决策为 `create` → 直接按下方步骤创建

从插件根目录完整复制 `.adspecs` 目录到目标项目根目录，包含插件运行时配置（extensions.yml、feature.json）和辅助脚本（PowerShell 脚本）。

#### 源路径

`PLUGIN_DIR/.adspecs/`（其中 `PLUGIN_DIR` 为 adspecs 插件根目录，即 `SKILL_DIR/../..`）

#### 目录结构

```
.adspecs/
├── extensions.yml
├── feature.json
├── project.json          # 阶段 6 从 references 复制，阶段 6.5 用当前会话数据合并更新
├── session-logger.json   # AI 会话日志自动保存配置（hooks/session-logger.js 读取）
├── templates/
│   ├── 01-业务需求分析模板.md
│   ├── 02-产品需求说明书模板.md
│   ├── 03-系统设计模板.md
│   ├── ... (共 20 个标准模板)
│   └── 20-工作说明书SOW模板.md
└── scripts/
    └── powershell/
        ├── check-prerequisites.ps1
        ├── common.ps1
        ├── create-new-feature.ps1
        ├── setup-plan.ps1
        └── setup-tasks.ps1
```

#### 执行命令

```bash
SKILL_DIR="<SKILL.md 所在目录>"   # 即 project-init skill 目录
PLUGIN_DIR="$(cd "$SKILL_DIR/../.." && pwd)"   # adspecs 插件根目录

# 如果 adspecs 决策为 recreate，先备份已有文件再删除
# BACKUP_FEATURE=""
# BACKUP_PROJECT=""
# [ -f "$TARGET/.adspecs/feature.json" ] && BACKUP_FEATURE=$(cat "$TARGET/.adspecs/feature.json")
# [ -f "$TARGET/.adspecs/project.json" ] && BACKUP_PROJECT=$(cat "$TARGET/.adspecs/project.json")
# rm -rf "$TARGET/.adspecs"

# 从插件根目录完整复制
cp -r "$PLUGIN_DIR/.adspecs" "$TARGET/.adspecs"

# 如果 recreate 且有备份，恢复 feature.json 和 project.json 并执行属性补全
# （通过 Read + Write 工具完成 JSON 属性合并）

# 统计复制的文件数量
find "$TARGET/.adspecs" -type f | wc -l
```

#### feature.json 与 project.json 属性补全

当 `.adspecs/` 决策为 `recreate` 或 `skip` 时，如果目标项目中已存在 `feature.json` 或 `project.json`，**不直接替换**，而是执行属性补全检查：

**补全规则：**

1. 读取目标项目中已有的 JSON 文件（`$TARGET/.adspecs/feature.json` 或 `$TARGET/.adspecs/project.json`）
2. 读取插件根目录中的初始版本（`$PLUGIN_DIR/.adspecs/feature.json` 或 `$PLUGIN_DIR/.adspecs/project.json`，其中 `PLUGIN_DIR = SKILL_DIR/../..`）
3. 对比两个文件的顶层属性键：
   - 如果已有文件**缺少** references 中的某个属性键 → 从 references 中补充该属性（使用 references 的默认值）
   - 如果已有文件中的属性键已存在（即使值不同）→ **保留已有值**，不覆盖
   - 如果已有文件中有 references 中不存在的额外属性 → **保留**，不删除
4. 如果有属性被补全 → 使用 Write 工具写回合并后的 JSON，输出补全信息
5. 如果属性已完全一致 → 不做修改

**recreate 场景处理：**

在 `recreate` 流程中，由于需要先删除整个 `.adspecs/` 目录再重建，处理步骤如下：

1. 删除前：读取并缓存 `$TARGET/.adspecs/feature.json` 和 `$TARGET/.adspecs/project.json` 的内容（如果存在）
2. 执行 `rm -rf` 和 `cp -r` 完成重建
3. 重建后：如果之前缓存了文件内容，将缓存的已有内容与新复制的 references 版本进行属性合并，写回目标文件

**feature.json 属性清单（references 初始版本）：**

| 属性键     | 类型   | 说明                                            |
| ---------- | ------ | ----------------------------------------------- |
| `active`   | string | 当前活动特性目录路径                            |
| `features` | array  | 特性列表，每项含 `directory`、`name`、`created` |

**project.json 属性清单（references 初始版本）：**

| 属性键               | 类型   | 说明                           |
| -------------------- | ------ | ------------------------------ |
| `project_name`       | string | 项目完整名称                   |
| `project_dir`        | string | 项目目录名                     |
| `project_short_name` | string | 项目短名称（仅英文字母和数字） |
| `company_name`       | string | 公司名称                       |
| `company_logo`       | string | 公司 Logo 路径                 |
| `confidentiality`    | string | 文件密级                       |

**补全示例输出：**

- 有属性补全时：`🔧 阶段 6 属性补全：feature.json 已补充缺失属性 [active, features]`
- 无缺失时：`✅ 阶段 6：feature.json 属性完整，无需补全`
- 文件不存在时：`✅ 阶段 6：feature.json 已从 references 创建`

#### 模板逐文件更新执行逻辑

当 `.adspecs` 决策为 `skip` 且 `templates_decision` 映射不为空时，按以下方式执行模板文件的逐文件更新：

1. **新增文件**：对于存在于 `$PLUGIN_DIR/.adspecs/templates/` 但不存在于 `$TARGET/.adspecs/templates/` 的文件，直接复制到目标目录
2. **已有文件逐一处理**：对于 `templates_decision` 映射中的每个文件：
   - `"replace"` → 执行 `cp "$PLUGIN_DIR/.adspecs/templates/{文件名}" "$TARGET/.adspecs/templates/{文件名}"`，用最新版本覆盖
   - `"keep"` → 保留目标目录中的现有文件，不做任何操作
3. **仅复制已标记为 replace 的文件**，不要使用通配符一次性覆盖整个 templates 目录

```bash
# 示例：逐文件复制被标记为 replace 的模板
for file in "${REPLACE_FILES[@]}"; do
  cp "$PLUGIN_DIR/.adspecs/templates/$file" "$TARGET/.adspecs/templates/$file"
done

# 统计实际更新的模板文件数量
echo "更新了 ${#REPLACE_FILES[@]} 个模板文件，保留了 ${#KEEP_FILES[@]} 个模板文件"
```

完成后输出：

- 新建时：`✅ 阶段 6 完成：.adspecs/ 配置与脚本目录已复制（{N} 个文件）`
- 重建时：`🔄 阶段 6 完成：.adspecs/ 已重新复制（{N} 个文件）`
- 重建且有文件恢复时：`🔄 阶段 6 完成：.adspecs/ 已重新复制 + 🔧 feature.json/project.json 已恢复并补全属性`
- 跳过时：`⏭ 阶段 6 跳过：.adspecs/ 已存在，保留现有内容`
- 跳过但部分更新模板时：`⏭ 阶段 6 跳过：.adspecs/ 已存在 + 🔄 templates/ 已部分更新（{N} 个文件替换，{M} 个文件保留）`
- 跳过但属性补全时：`⏭ 阶段 6 跳过：.adspecs/ 已存在 + 🔧 feature.json/project.json 已补全缺失属性`

---

### 阶段 6.5：生成 .adspecs/project.json

**适用模式：简易 / 经典 / 完整 / 轻量**

在所有目录创建完成后，生成 `.adspecs/project.json` 项目元数据文件，为下游技能（如 ads-export-word）提供项目信息。

#### 执行步骤

1. 检查 `$TARGET/.adspecs/project.json` 是否已存在：
   - 如果已存在 → 读取现有内容，与本次收集的字段进行合并：
     - 已有文件中**已存在**的属性 → 用本次收集的最新值更新（如 `project_name`、`company_name` 等）
     - 已有文件中**额外的自定义属性**（如用户手动添加的字段）→ 保留不删除
     - references 初始版本中有但已有文件中**缺失**的属性 → 从 references 补充默认值
   - 如果不存在 → 创建新文件

2. 使用 Write 工具生成 `$TARGET/.adspecs/project.json`，内容如下：

```json
{
  "project_name": "{PROJECT_NAME}",
  "project_short_name": "{PROJECT_SHORT_NAME}",
  "project_dir": "{PROJECT_DIR}",
  "company_name": "{COMPANY_NAME}",
  "company_logo": "",
  "confidentiality": "{CONFIDENTIALITY}",
  "created_at": "{today}"
}
```

#### 字段说明

| 字段                 | 来源            | 说明                               |
| -------------------- | --------------- | ---------------------------------- |
| `project_name`       | 用户输入        | 项目完整名称                       |
| `project_short_name` | 自动推导        | 仅英文字母和数字，用于文件命名前缀 |
| `project_dir`        | 用户输入        | 项目目录名，空字符串表示当前目录   |
| `company_name`       | 用户输入/默认值 | 公司名称，默认 "XX有限公司"        |
| `company_logo`       | 留空            | 公司 Logo 路径，用户后续可手动填写 |
| `confidentiality`    | 用户选择/默认值 | 文件密级，默认 "内部资料"          |
| `created_at`         | 当前日期        | 项目创建日期                       |

完成后输出：`✅ 阶段 6.5 完成：项目元数据已生成 .adspecs/project.json`

---

### 阶段 6.8：复制 hooks/ 脚本目录

**适用模式：简易 / 经典 / 完整 / 轻量**

**重要**：hooks 脚本是插件运行时核心组件，负责 SessionStart/Stop 等生命周期事件处理（wiki 同步队列、commit 候选队列、AI 会话日志等）。缺少此目录会导致 `Cannot find module .../hooks/commit-queue.js` 等错误。

根据区域决策执行：

- `hooks` 决策为 `skip` → 输出 `⏭ 阶段 6.8 跳过：hooks/ 已存在，保留现有内容`，进入阶段 7
- `hooks` 决策为 `recreate` → 执行 `rm -rf "$TARGET/hooks"`，然后按下方步骤完整重建
- `hooks` 决策为 `create` → 直接按下方步骤创建

从插件根目录完整复制 `hooks/` 目录到目标项目根目录，包含 hooks.json 配置和所有 Node.js 脚本。

#### 源路径

`$PLUGIN_DIR/hooks/`（其中 `PLUGIN_DIR` 为 adspecs 插件根目录，即 `SKILL_DIR/../..`）

#### 目录结构

```
hooks/
├── hooks.json            # 跨平台 Hook 配置（SessionStart/PreCompact/PostToolUse/Stop）
├── platform.js           # 平台检测工具模块（Claude Code / Qoder / WorkBuddy 兼容）
├── session-start.js      # SessionStart — 会话启动占位（会话引导由 session-logger.js init 承担）
├── wiki-queue.js         # PostToolUse/Stop — wiki 同步队列管理
├── commit-queue.js       # PostToolUse/Stop — commit 候选队列管理
└── session-logger.js     # SessionStart/PreCompact/Stop — AI 会话日志管理
```

#### 执行命令

```bash
SKILL_DIR="<SKILL.md 所在目录>"
PLUGIN_DIR="$(cd "$SKILL_DIR/../.." && pwd)"   # adspecs 插件根目录

# 如果 hooks 决策为 recreate，先删除现有目录
# rm -rf "$TARGET/hooks"

# 从插件根目录完整复制 hooks/
cp -r "$PLUGIN_DIR/hooks" "$TARGET/hooks"

# 统计复制的文件数量
find "$TARGET/hooks" -type f | wc -l
```

**注意**：
- hooks.json 中的脚本命令使用项目根目录相对路径（`hooks/xxx.js`），运行时由平台 CWD 解析到目标项目的 `hooks/` 目录
- 复制 hooks/ 到目标项目根目录是脚本可执行的前提，不可省略
- 不要修改 hooks.json 内容，保持 `hooks/xxx.js` 路径格式不变

完成后输出：

- 新建时：`✅ 阶段 6.8 完成：hooks/ 脚本目录已复制（{N} 个文件）`
- 重建时：`🔄 阶段 6.8 完成：hooks/ 脚本目录已重新复制（{N} 个文件）`
- 跳过时：`⏭ 阶段 6.8 跳过：hooks/ 已存在，保留现有内容`

---

### 阶段 7：生成路径配置文件

**适用模式：简易 / 经典 / 完整 / 轻量**

在所有目录创建完成后，生成 `.adspecs/paths.json` 路径配置文件，为下游技能提供可配置的目录映射。

#### 执行步骤

1. 检查 `$TARGET/.adspecs/` 目录是否存在，不存在则创建：

```bash
mkdir -p "$TARGET/.adspecs"
```

2. 检查 `$TARGET/.adspecs/paths.json` 是否已存在：
   - 如果已存在 → 输出 `⏭ 路径配置文件已存在，跳过生成：.adspecs/paths.json`，不覆盖用户自定义配置
   - 如果不存在 → 使用 Write 工具生成默认配置

3. 使用 Write 工具生成 `$TARGET/.adspecs/paths.json`，内容如下：

```json
{
  "$schema": "adspecs plugin path configuration",
  "version": 1,
  "paths": {
    "biz_analysis_dir": "docs/00-customer-requirements",
    "architecture_dir": "docs/10-architecture",
    "research_output_dir": "docs/02-prd",
    "sow_dir": "docs/05-sow",
    "prd_dir": "docs/20-prd",
    "design_dir": "docs/30-system-design",
    "test_report_dir": "docs/80-development/802-test",
    "session_log_dir": "docs/80-development/800-log",
    "export_dir": "docs/90-export",
    "wiki_dir": "wiki"
  }
}
```

#### 配置键说明

| 配置键                | 默认值                          | 使用此路径的技能                                                                                                               |
| --------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `biz_analysis_dir`    | `docs/00-customer-requirements` | ads-new-requirement                                                                                                        |
| `architecture_dir`    | `docs/10-architecture`          | ads-architecture-planning（输出）、ads-new-requirement（输入：识别二级模块）                                           |
| `research_output_dir` | `docs/02-prd`                   | ads-requirement-research                                                                                                   |
| `sow_dir`             | `docs/05-sow`                   | ads-write-sow                                                                                                              |
| `prd_dir`             | `docs/20-prd`                   | ads-prd、ads-plan（输入）、ads-front-spec（输入）、wiki-update（源）                                               |
| `design_dir`          | `docs/30-system-design`         | ads-plan（输出）、ads-tasks、ads-front-spec（输出）、ads-front-tasks、ads-utest（输入）、wiki-update（源） |
| `test_report_dir`     | `docs/80-development/802-test`      | ads-utest（测试报告，按模块子目录保存）                                                                                   |
| `session_log_dir`     | `docs/80-development/800-log`   | session-logger（AI 会话日志）                                                                                                  |
| `export_dir`          | `docs/90-export`                | ads-export-word（Word 导出输出）                                                                                           |
| `wiki_dir`            | `wiki`                          | wiki-update（输出目标）                                                                                                        |

完成后输出：`✅ 阶段 7 完成：路径配置文件已生成 .adspecs/paths.json（可编辑以自定义输出路径）`

### 阶段 8：输出初始化报告

所有阶段完成后，输出结构化的初始化报告：

````markdown
## 项目初始化完成 🎉

项目名称: {PROJECT_NAME}
项目短名称: {PROJECT_SHORT_NAME}
公司名称: {COMPANY_NAME}
文件密级: {CONFIDENTIALITY}
初始化模式: {简易模式 / 经典模式 / 完整模式 / 轻量模式}
前端技术栈: {Vue / Ant Design React}（经典/完整模式时显示；轻量模式固定 Ant Design React）
工作目录: {pwd}
项目目录: {PROJECT_DIR 或 "当前目录"}
目标路径: {TARGET}

### 区域执行结果

**简易模式：**

| 区域                      | 状态                              | 说明                                                                       |
| ------------------------- | --------------------------------- | -------------------------------------------------------------------------- |
| .adspecs/                 | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 插件配置、脚本、模板（extensions.yml、feature.json、templates/、scripts/） |
| └ templates/              | 🔄 部分更新 / ⏭ 全部跳过         | .adspecs/ 跳过时，逐文件确认结果（{N} 个替换，{M} 个保留）                 |
| └ feature.json            | 🔧 已补全 / ✅ 已完整 / ✅ 已创建 | 属性补全检查（已有属性保留，缺失属性补充）                                 |
| docs/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 11 个骨架目录，40 仅创建空目录（含 frontend-standard/ + end-standard/）    |
| └ 40-project_conventions/ | 🔄 已更新 / ⏭ 已跳过             | docs/ 跳过时，40 子目录的更新决策                                          |
| wiki/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 基线文件目录 + README.md                                                   |
| hooks/                    | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | Hook 脚本（hooks.json + platform.js + 4 个事件脚本）                       |
| .adspecs/project.json     | ✅ 已生成 / 🔄 已更新             | 项目元数据文件（已有字段合并，缺失属性补全）                               |
| .adspecs/paths.json       | ✅ 已生成 / ⏭ 已存在跳过         | 路径配置文件                                                               |

**经典模式：**

| 区域                      | 状态                              | 说明                                                                       |
| ------------------------- | --------------------------------- | -------------------------------------------------------------------------- |
| .adspecs/                 | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 插件配置、脚本、模板（extensions.yml、feature.json、templates/、scripts/） |
| └ templates/              | 🔄 部分更新 / ⏭ 全部跳过         | .adspecs/ 跳过时，逐文件确认结果（{N} 个替换，{M} 个保留）                 |
| └ feature.json            | 🔧 已补全 / ✅ 已完整 / ✅ 已创建 | 属性补全检查（已有属性保留，缺失属性补充）                                 |
| docs/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 11 个骨架目录 + 40 从 references 复制前后端规范                            |
| └ 40-project_conventions/ | 🔄 已更新 / ⏭ 已跳过             | docs/ 跳过时，40 子目录的更新决策                                          |
| wiki/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 基线文件目录 + README.md                                                   |
| front-demo/               | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | {技术栈名}，{N} 个文件                                                     |
| hooks/                    | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | Hook 脚本（hooks.json + platform.js + 4 个事件脚本）                       |
| .adspecs/project.json     | ✅ 已生成 / 🔄 已更新             | 项目元数据文件（已有字段合并，缺失属性补全）                               |
| .adspecs/paths.json       | ✅ 已生成 / ⏭ 已存在跳过         | 路径配置文件                                                               |

**完整模式：**

| 区域                      | 状态                              | 说明                                                                       |
| ------------------------- | --------------------------------- | -------------------------------------------------------------------------- |
| .adspecs/                 | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 插件配置、脚本、模板（extensions.yml、feature.json、templates/、scripts/） |
| └ templates/              | 🔄 部分更新 / ⏭ 全部跳过         | .adspecs/ 跳过时，逐文件确认结果（{N} 个替换，{M} 个保留）                 |
| └ feature.json            | 🔧 已补全 / ✅ 已完整 / ✅ 已创建 | 属性补全检查（已有属性保留，缺失属性补充）                                 |
| docs/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 11 个骨架目录 + 40 从 references 复制前后端规范                            |
| └ 40-project_conventions/ | 🔄 已更新 / ⏭ 已跳过             | docs/ 跳过时，40 子目录的更新决策                                          |
| wiki/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 基线文件目录 + README.md                                                   |
| web-ui/                   | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | {N} 个文件                                                                 |
| service/                  | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 模块 service 目录 + README.md                                              |
| front-demo/               | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | {技术栈名}，{N} 个文件                                                     |
| hooks/                    | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | Hook 脚本（hooks.json + platform.js + 4 个事件脚本）                       |
| .adspecs/project.json     | ✅ 已生成 / 🔄 已更新             | 项目元数据文件（已有字段合并，缺失属性补全）                               |
| .adspecs/paths.json       | ✅ 已生成 / ⏭ 已存在跳过         | 路径配置文件                                                               |

**轻量模式：**

| 区域                      | 状态                              | 说明                                                                       |
| ------------------------- | --------------------------------- | -------------------------------------------------------------------------- |
| .adspecs/                 | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 插件配置、脚本、模板（extensions.yml、feature.json、templates/、scripts/） |
| └ templates/              | 🔄 部分更新 / ⏭ 全部跳过         | .adspecs/ 跳过时，逐文件确认结果（{N} 个替换，{M} 个保留）                 |
| └ feature.json            | 🔧 已补全 / ✅ 已完整 / ✅ 已创建 | 属性补全检查（已有属性保留，缺失属性补充）                                 |
| docs/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 11 个骨架目录 + 40 按 Python+React 技术栈复制前后端规范                    |
| └ 40-project_conventions/ | 🔄 已更新 / ⏭ 已跳过             | docs/ 跳过时，40 子目录的更新决策                                          |
| wiki/                     | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | 基线文件目录 + README.md                                                   |
| web-ui/                   | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | React + AntD6 前端项目，{N} 个文件                                         |
| service/                  | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | Python 后端服务目录 + README.md                                            |
| front-demo/               | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | Ant Design React，{N} 个文件                                               |
| hooks/                    | ✅ 已创建 / 🔄 已重建 / ⏭ 已跳过 | Hook 脚本（hooks.json + platform.js + 4 个事件脚本）                       |
| .adspecs/project.json     | ✅ 已生成 / 🔄 已更新             | 项目元数据文件（已有字段合并，缺失属性补全）                               |
| .adspecs/paths.json       | ✅ 已生成 / ⏭ 已存在跳过         | 路径配置文件                                                               |

状态说明：

- ✅ 已创建：目录原本不存在，新建完成
- 🔄 已重建：目录原本存在，按用户选择删除后重新创建
- 🔄 已更新：父目录跳过，但子目录按用户选择使用 references 最新文件覆盖更新（templates/ 支持逐文件确认，部分文件可替换、部分保留）
- 🔧 已补全：已有文件属性与 references 对比后，补充缺失属性（已有属性不覆盖）
- ⏭ 已跳过：目录原本存在，按用户选择保留未动

### 目录树总览

**简易模式：**
{pwd}/{PROJECT_DIR}/（或直接 {pwd}/）
├── .adspecs/ (插件配置、脚本、模板 + project.json)
├── docs/ (11 个子目录)
├── hooks/ (Hook 脚本：SessionStart/Stop/PostToolUse 等)
└── wiki/ (基线文件目录)

**经典模式：**
{pwd}/{PROJECT_DIR}/（或直接 {pwd}/）
├── .adspecs/ (插件配置、脚本、模板 + project.json)
├── docs/ (11 个子目录 + 40-project_conventions/ 含前端规范 + Java 后端规范)
├── hooks/ (Hook 脚本：SessionStart/Stop/PostToolUse 等)
├── wiki/ (基线文件目录)
└── front-demo/ ({技术栈名}前端演示项目)

**完整模式：**
{pwd}/{PROJECT_DIR}/（或直接 {pwd}/）
├── .adspecs/ (插件配置、脚本、模板 + project.json)
├── docs/ (11 个子目录 + 40-project_conventions/ 含前端规范 + Java 后端规范)
├── hooks/ (Hook 脚本：SessionStart/Stop/PostToolUse 等)
├── wiki/ (基线文件目录)
├── web-ui/ (Vue3 壳工程)
├── service/
│ └── README.md
└── front-demo/ ({技术栈名}前端演示项目)

**轻量模式：**（Python + SQLite + React + AntD6 全栈 demo）
{pwd}/{PROJECT_DIR}/（或直接 {pwd}/）
├── .adspecs/ (插件配置、脚本、模板 + project.json)
├── docs/ (11 个子目录 + 40-project_conventions/ 含 Python 后端规范 + React 前端规范)
├── hooks/ (Hook 脚本：SessionStart/Stop/PostToolUse 等)
├── wiki/ (基线文件目录)
├── web-ui/ (React + AntD6 前端项目)
├── service/ (Python + SQLite 后端服务)
└── front-demo/ (Ant Design React 前端演示项目)

### 后续步骤

**简易模式：**

1. 在目标目录执行 `git init` 初始化 Git 仓库
2. 根据项目需要调整 `.adspecs/templates/` 下的文档模板
3. `docs/40-project_conventions/` 当前为空目录（简易模式不复制），进入开发阶段时从 references 补充或重新执行 `/project-init` 选择经典/完整模式自动补充
4. 根据需要编辑 `.adspecs/project.json` 补充公司 Logo 路径等信息
5. 根据自己需要调整 `.adspecs/paths.json` 路径配置文件
6. 对当前项目的重新初始化`/init`更新或手动按需修改 `CLAUDE.md`

**经典模式：**

1. 在目标目录执行 `git init` 初始化 Git 仓库
2. 在前端演示目录执行 `npm install` 安装依赖：

   ```bash
   cd {TARGET}/front-demo && npm install
   ```

3. 根据项目需要调整 `.adspecs/templates/` 下的文档模板和 `docs/40-project_conventions/` 约定文档
4. 根据需要编辑 `.adspecs/project.json` 补充公司 Logo 路径等信息
5. 根据自己需要调整 `.adspecs/paths.json` 路径配置文件
6. 对当前项目的重新初始化`/init`更新或手动按需修改 `CLAUDE.md`

**完整模式：**

1. 在目标目录执行 `git init` 初始化 Git 仓库
2. 在前端目录执行 `npm install` 安装依赖：

   ```bash
   cd {TARGET}/web-ui && npm install
   cd {TARGET}/front-demo && npm install
   ```

3. 根据项目需要调整 `.adspecs/templates/` 下的文档模板和 `docs/40-project_conventions/` 前后端编码规范约定文档
4. 根据需要编辑 `.adspecs/project.json` 补充公司 Logo 路径等信息
5. 根据自己需要调整 `.adspecs/paths.json` 路径配置文件
6. 对当前项目的重新初始化`/init`更新或手动按需修改 `CLAUDE.md`

**轻量模式：**（Python + SQLite + React + AntD6 全栈 demo）

1. 在目标目录执行 `git init` 初始化 Git 仓库
2. 安装前端依赖：

   ```bash
   cd {TARGET}/web-ui && npm install
   cd {TARGET}/front-demo && npm install
   ```

3. 安装后端依赖（Python 环境）：

   ```bash
   cd {TARGET}/service
   python -m venv venv
   source venv/bin/activate  # Windows: venv\Scripts\activate
   pip install -r requirements.txt
   ```

4. 根据项目需要调整 `.adspecs/templates/` 下的文档模板和 `docs/40-project_conventions/` 前后端编码规范约定文档
5. 根据需要编辑 `.adspecs/project.json` 补充公司 Logo 路径等信息
6. 根据自己需要调整 `.adspecs/paths.json` 路径配置文件
7. 对当前项目的重新初始化`/init`更新或手动按需修改 `CLAUDE.md`

## 完成标志

- [ ] 已收集项目信息（project_name, project_dir, company_name, project_short_name, confidentiality）
- [ ] project_short_name 已按自动推导规则生成（仅英文字母和数字）
- [ ] company_name 和 confidentiality 已使用默认值（如用户未填写）
- [ ] 已选择初始化模式（简易 / 经典 / 完整 / 轻量）
- [ ] 已选择前端演示技术栈（经典/完整模式：Vue / Ant Design React；轻量模式固定 Ant Design React）
- [ ] 已按模式检查目标路径下对应区域的存在情况
- [ ] 对已存在的区域已通过 AskUserQuestion 获取用户选择（重新创建 / 跳过）
- [ ] docs/ 目录结构已创建/重建/跳过（按用户决策执行；简易模式下 40-project_conventions/ 仅创建空目录，经典/完整模式从 references 复制前后端规范（前端按技术栈 + ecp-end-standard），轻量模式复制 ant6-front-standard + python-end-standard）
- [ ] 模式升级补充检查已完成（docs/ 跳过时，经典/完整/轻量模式自动检测并补充空的 40-project_conventions/）
- [ ] 40-project_conventions/ 子目录更新检查已完成（docs/ 跳过且目录已包含文件时，已通过 AskUserQuestion 获取更新/跳过决策并按决策执行）
- [ ] wiki/ 基线文件目录已创建/重建/跳过
- [ ] web-ui/ 已从 references 完整复制/重建/跳过（仅完整/轻量模式，排除 node_modules、.git）
- [ ] service/ 目录已创建/重建/跳过（仅完整/轻量模式）
- [ ] front-demo/ 已从 references 按技术栈选择复制/重建/跳过（经典/完整/轻量模式，排除 node_modules、.git、.vite）
- [ ] .adspecs/ 配置与脚本目录已从插件根目录完整复制/重建/跳过
- [ ] .adspecs/templates/ 子目录逐文件更新检查已完成（.adspecs/ 跳过且模板目录已包含文件时，已通过 AskUserQuestion 逐文件确认替换/保留决策并按决策执行）
- [ ] feature.json 属性补全检查已完成（recreate/skip 时，已对比 references 初始版本并补全缺失属性，已有属性不覆盖）
- [ ] project.json 属性补全检查已完成（recreate/skip 时，已对比 references 初始版本并补全缺失属性）
- [ ] .adspecs/project.json 项目元数据文件已生成或更新
- [ ] hooks/ 脚本目录已从插件根目录完整复制/重建/跳过（所有模式，含 hooks.json + platform.js + 4 个事件脚本）
- [ ] .adspecs/paths.json 路径配置文件已生成（含 architecture_dir 和 export_dir，或已存在时跳过）
- [ ] 初始化报告已输出（包含项目信息、模式、技术栈、各区域状态）
````

---
