doa-harnesslisted
Install: claude install-skill medalsoftchina/workcopilot
# DOA Harness — 一键搭建 Copilot 工程轨道(团队版)
## 核心理念
Copilot 的上限不取决于提示词,而取决于它运行在怎样的**工程轨道**上。
三层公式:**Context**(给什么)→ **Constraints**(守什么)→ **GC**(清什么)。
## 运行模式
| 模式 | 触发方式 | 行为 |
|------|---------|------|
| **初始化** | 首次运行(默认) | 完整探测 → 交互确认 → 生成全部 5 类文件 |
| **增量更新** | 参数含 `--update` | 扫描已有文件 → 仅 patch 新增部分(如新模块),保留用户自定义内容 |
| **预览模式** | 参数含 `--dry-run` | 执行探测和模板渲染,输出预览但不写入文件 |
## 工作流
```
调用 skill
→ Step 0: 判断运行模式(初始化 / 增量更新 / 预览)
→ Step 1: 深度探测项目结构与技术栈
→ Step 2: 交互确认关键信息
→ Step 3: 生成 / 更新 5 类配置文件
→ Step 4: 注入 GC 指令
→ Step 5: 验证完整性 & 一致性
→ Step 6: 输出 Day-1 验证指令
```
---
## Step 0: 判断运行模式
1. 检查参数中是否含 `--update` 或 `--dry-run`
2. 扫描工作区,检查 `.github/copilot-instructions.md` 是否已存在
- 已存在且未指定 `--update`:提示用户 "Harness 已初始化,是否切换到增量更新模式?"
- 不存在:进入初始化模式
---
## Step 1: 深度探测项目结构与技术栈
### 1.1 递归扫描子项目
**不再只看根目录**。用 `list_dir` 递归扫描根目录及一级子目录,收集所有包含信号文件的子项目:
```
扫描策略:
1. list_dir 根目录 → 识别子目录
2. 对每个子目录 list_dir → 查找信号文件
3. 构建子项目列表: [{name, path, stack, signals}]
```
### 1.2 信号文件匹配表
| 信号文件 | 技术栈大类 | 需要进一步读取 |
|----------|-----------|---------------|
| `package.json` + `tsconfig.json` | Node/TypeScript | 读 package.json → 判断具体框架 |
| `*.csproj` / `*.sln` | .NET | 读 .csproj → 判断 SDK 版本和项目类型 |
| `pyproject.toml` / `requirements.txt` | Python | 读依赖列表 → 判断框架 |
| `go.mod` | Go | 读 go.mod → 判断主要依赖 |
| `Cargo.toml` | Rust | 读 Cargo.toml |
| `pom.xml` / `build.gradle` | Java/Kotlin | 读构建文件 |
### 1.3 前端框架深度探测
当检测到 `package.json` 时,**必须读取其 dependencies / devDependencies** 来判断:
| 依