datai/docs/archive/skill/0002-establish-ssot-hub.md

246 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: 0002-establish-ssot-hub
description: 建立项目唯一真源中心,创建 docs/index.md 作为项目文档的唯一入口
---
# 技能:建立真源中心 (Establish SSOT Hub)
## 元数据 (Metadata)
- **name**: establish-ssot-hub
- **description**: 建立项目唯一真源中心,创建 docs/index.md 作为项目文档的唯一入口
- **version**: 1.0.0
- **author**: SSOT Architect
- **lastUpdated**: 2026-01-15
## 触发与定位 (Triggers & Scope)
### 触发条件 (Triggers)
当以下情况发生时AI 应当"觉醒"本技能:
1. **Bootstrap 完成**: 完成项目协作基线初始化后
2. **缺少文档入口**: 检测到 `docs/index.md` 不存在
3. **文档索引更新**: 创建新的需求、设计、决策或提示词文档后
4. **孤儿文件检测**: 发现未被索引的文档文件
5. **工作流阶段 2**: 用户进入工作流的"建立真源中心"阶段
### 定位范围 (Scope)
- **适用模块**: 所有 Datai 项目模块
- **影响文件**: `docs/index.md`
- **索引范围**: docs/ 下的所有子目录和文档
- **相关技能**: skill-bootstrap-workflow, skill-setup-information-architecture
## 核心指令集 (Instructions)
### 架构约束 (Architecture Constraints)
1. **docs/index.md 的核心规则**:
- 这是项目的**唯一**文档入口
- 它不仅是列表,更是导航图
- 必须包含对 Requirements, Design, ADRs, Prompts, Sessions, Retros 的动态索引
- **严禁出现"孤儿文件"**(即未被 index 索引的文件)
2. **必须索引的文档类型**:
- `docs/requirements/` - 需求文档
- `docs/design/` - 系统设计文档
- `docs/decisions/adr/` - 架构决策记录
- `docs/prompts/` - 提示词资产
- `docs/sessions/` - AI 会话快照
- `docs/retros/` - 迭代复盘
- `docs/changelog/` - 变更记录
- `docs/skills/` - 技能文档
3. **索引结构要求**:
- 按文档类型分组
- 每个文档必须包含状态标识Draft/In Progress/Completed
- 必须包含文档的创建/更新日期
- 必须包含文档的简要描述
### 业务逻辑 SOP (Business Logic SOP)
#### 步骤 1: 检查 docs/index.md 是否存在
```bash
# 检查文档入口是否存在
if [ ! -f "docs/index.md" ]; then
echo "警告: docs/index.md 不存在,需要创建"
fi
```
#### 步骤 2: 扫描 docs/ 目录结构
```bash
# 使用 LS 工具扫描 docs/ 目录
# 列出所有子目录和文件
```
#### 步骤 3: 识别孤儿文件
```bash
# 读取 docs/index.md 内容
# 提取所有已索引的文档路径
# 对比 docs/ 目录中的实际文件
# 标记未被索引的文件为"孤儿文件"
```
#### 步骤 4: 创建或更新 docs/index.md
```markdown
# Datai 项目文档中心 (SSOT Hub)
> 本文档是项目的唯一真源入口,所有文档必须在此索引。
## 📋 文档导航
### 📝 需求文档 (Requirements)
| 文档 | 状态 | 描述 | 更新日期 |
|------|------|------|----------|
| [REQ-001](requirements/REQ-001.md) | ✅ Completed | 初始需求 | 2026-01-15 |
| [REQ-002](requirements/REQ-002.md) | 🔄 In Progress | 新功能需求 | 2026-01-15 |
### 🏗️ 系统设计 (Design)
| 文档 | 状态 | 描述 | 更新日期 |
|------|------|------|----------|
| [DES-001](design/DES-001.md) | ✅ Completed | 架构设计 | 2026-01-15 |
| [DES-002](design/DES-002.md) | 📝 Draft | 接口设计 | 2026-01-15 |
### 🎯 架构决策 (ADRs)
| 文档 | 状态 | 描述 | 更新日期 |
|------|------|------|----------|
| [ADR-001](decisions/adr/ADR-001.md) | ✅ Accepted | 技术栈选择 | 2026-01-15 |
| [ADR-002](decisions/adr/ADR-002.md) | 📝 Draft | 数据库设计 | 2026-01-15 |
### 💡 提示词资产 (Prompts)
| 文档 | 版本 | 描述 | 更新日期 |
|------|------|------|----------|
| [PROMPT-001](prompts/PROMPT-001.md) | v1.0.0 | 工作流提示词 | 2026-01-15 |
| [PROMPT-002](prompts/PROMPT-002.md) | v1.0.0 | 代码生成提示词 | 2026-01-15 |
### 🗣️ 会话记录 (Sessions)
| 文档 | 触发 | 结果 | 日期 |
|------|------|------|------|
| [20260115-TaskName](sessions/20260115-TaskName.md) | REQ-001 | Commit: abc123 | 2026-01-15 |
### 🔄 迭代复盘 (Retros)
| 文档 | 类型 | 日期 |
|------|------|------|
| [20260115-Review](retros/20260115-Review.md) | Sprint Review | 2026-01-15 |
### 📊 变更记录 (Changelog)
| 文档 | 版本 | 日期 |
|------|------|------|
| [CHANGELOG](changelog/CHANGELOG.md) | v1.0.0 | 2026-01-15 |
### 🛠️ 技能文档 (Skills)
| 文档 | 描述 | 版本 |
|------|------|------|
| [Bootstrap Workflow](skills/0001-bootstrap-workflow.md) | 项目协作基线初始化 | v1.0.0 |
| [SSOT Hub](skills/0002-establish-ssot-hub.md) | 建立真源中心 | v1.0.0 |
## ⚠️ 孤儿文件警告
以下文档未被索引,请及时处理:
- [文件路径](file/path) - 原因说明
## 📊 统计信息
- 需求文档: X 个
- 设计文档: X 个
- 架构决策: X 个
- 提示词资产: X 个
- 会话记录: X 个
- 迭代复盘: X 个
- 变更记录: X 个
- 技能文档: X 个
## 🔗 快速链接
- [项目 README](../README.md)
- [贡献指南](../CONTRIBUTING.md)
- [变更日志](../CHANGELOG.md)
```
#### 步骤 5: 验证索引完整性
```bash
# 验证所有文档都被索引
# 检查是否有孤儿文件
# 如果有,提示用户处理
```
### 工具调用 (Tool Usage)
1. **目录扫描工具**:
- 使用 `LS` 工具递归扫描 `docs/` 目录
- 列出所有文件和子目录
2. **文件读取工具**:
- 使用 `Read` 工具读取 `docs/index.md` 现有内容
- 使用 `Read` 工具读取各文档的元数据
3. **文件搜索工具**:
- 使用 `Grep` 工具搜索文档中的元数据标记
- 使用 `SearchCodebase` 工具查找特定类型的文档
4. **文件创建/更新工具**:
- 使用 `Write` 工具创建或更新 `docs/index.md`
- 确保索引格式一致
## 错误陷阱与验证 (Anti-Patterns & Checklist)
### 常见错误 (Anti-Patterns)
1. **错误**: 创建了新文档但未更新 docs/index.md
- **后果**: 产生孤儿文件,违反 SSOT 原则
- **修正**: 每次创建新文档后必须更新索引
2. **错误**: docs/index.md 只是简单的文件列表
- **后果**: 无法作为有效的导航图
- **修正**: 必须包含状态、描述、日期等元数据
3. **错误**: 索引格式不一致
- **后果**: 难以维护和查找
- **修正**: 使用统一的 Markdown 表格格式
4. **错误**: 忽略孤儿文件警告
- **后果**: 文档结构混乱,违反 SSOT 原则
- **修正**: 及时处理或删除孤儿文件
5. **错误**: 删除文档后未更新索引
- **后果**: 索引包含无效链接
- **修正**: 删除文档时同步更新索引
### 验收清单 (Acceptance Checklist)
- [ ] docs/index.md 已创建或更新
- [ ] 所有文档类型都已索引
- [ ] 每个文档都包含状态标识
- [ ] 每个文档都包含创建/更新日期
- [ ] 每个文档都包含简要描述
- [ ] 没有孤儿文件
- [ ] 索引格式统一
- [ ] 统计信息准确
- [ ] 快速链接有效
### Correct vs Incorrect 对比
#### Correct 示例
```markdown
### 📝 需求文档 (Requirements)
| 文档 | 状态 | 描述 | 更新日期 |
|------|------|------|----------|
| [REQ-001](requirements/REQ-001.md) | ✅ Completed | 初始需求 | 2026-01-15 |
| [REQ-002](requirements/REQ-002.md) | 🔄 In Progress | 新功能需求 | 2026-01-15 |
```
#### Incorrect 示例
```markdown
### 需求文档
- REQ-001.md
- REQ-002.md
```
**问题**: 缺少状态、描述、日期等元数据,无法作为有效的导航图。
## 相关文档 (Related Documents)
- [工作流提示词](../prompts/03-创建工作流提示词.md#phase-2-建立真源中心-ssot-hub)
- [Bootstrap 工作流技能](./0001-bootstrap-workflow.md)
- [信息架构设置技能](./0003-setup-information-architecture.md)
- [SSOT 原则](../prompts/03-创建工作流提示词.md#核心原则无文档不开发)