sandtable 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -0
- package/dashboard/css/dashboard.css +731 -0
- package/dashboard/dashboard.html +1086 -0
- package/dashboard/js/conventions-viewer.js +37 -0
- package/dashboard/js/data-loader.js +147 -0
- package/dashboard/js/event-stream-renderer.js +158 -0
- package/dashboard/js/filter-controller.js +102 -0
- package/dashboard/js/journal-timeline.js +29 -0
- package/dashboard/js/roadmap-renderer.js +72 -0
- package/dashboard/js/timeline-renderer.js +283 -0
- package/dashboard/js/waterfall-renderer.js +189 -0
- package/harness/install-hooks.sh +34 -0
- package/harness/post-commit +17 -0
- package/harness/post-merge +17 -0
- package/harness/summary-hook.md +18 -0
- package/package.json +38 -0
- package/server.js +60 -0
- package/skills/build-json.md +36 -0
- package/skills/scan-docs.md +38 -0
- package/skills/summarize.md +66 -0
- package/src/builder/build.js +1019 -0
- package/src/cli/sandtable.js +970 -0
- package/src/scanner/scan.js +415 -0
- package/templates/.sandtable.template.json +51 -0
- package/templates/journal-entry.md +22 -0
- package/templates/summary-block.md +42 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# build-json — 生成 data/*.json (v2)
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
读取扫描结果,生成 dashboard 所需的 JSON 数据文件。
|
|
5
|
+
|
|
6
|
+
## v2 数据文件
|
|
7
|
+
|
|
8
|
+
### 主输出
|
|
9
|
+
| 文件 | 说明 |
|
|
10
|
+
|------|------|
|
|
11
|
+
| `data/timeline.json` | 统一时间线(主线 + 次要元素 + 过滤类型清单) |
|
|
12
|
+
| `data/conventions.json` | 约定简称(默认 `configured: false`,手动配置) |
|
|
13
|
+
| `data/agents.json` | 角色分工(保留,暂不渲染) |
|
|
14
|
+
| `data/brief.json` | 200 字简报 |
|
|
15
|
+
|
|
16
|
+
### 兼容输出 (v1 格式)
|
|
17
|
+
| 文件 | 说明 |
|
|
18
|
+
|------|------|
|
|
19
|
+
| `data/roadmap.json` | v1 Roadmap 格式(由 timeline 转换) |
|
|
20
|
+
| `data/journal-index.json` | v1 瀑布流格式(由 timeline 转换) |
|
|
21
|
+
|
|
22
|
+
## 时间分群
|
|
23
|
+
元素按 `timeGroup` 分三类:
|
|
24
|
+
- **past**(过去历史):completed / cancelled 状态
|
|
25
|
+
- **current**(现阶段):in_progress / pending 状态(默认 tab)
|
|
26
|
+
- **future**(未来计划):规则由 `.sandtable.json` timeRules 控制
|
|
27
|
+
|
|
28
|
+
## 调用方式
|
|
29
|
+
```bash
|
|
30
|
+
node src/cli/sandtable.js build [projectRoot]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 渲染约定
|
|
34
|
+
- primary 元素始终展示,secondary 元素经 checkbox 勾选后展示
|
|
35
|
+
- conventions 默认显示"待配置"占位,用户手动编辑 data/conventions.json 后,设 `configured: true` 即正常渲染
|
|
36
|
+
- dashboard 优先加载 timeline.json,若不存在则用 roadmap.json + journal-index.json 回退合并
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# scan-docs — 扫描项目文档目录 (v2)
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
遍历项目的 `docs/` 目录,识别所有 .md 文件,按 **主线/次要** 归类,提取摘要块和时间信息。
|
|
5
|
+
|
|
6
|
+
## v2 核心概念
|
|
7
|
+
|
|
8
|
+
### 主线元素 (primary)
|
|
9
|
+
所有项目通用的结构元素,默认展示:
|
|
10
|
+
- phase(阶段)、milestone(里程碑)、task(任务)、subtask(子任务)
|
|
11
|
+
- conclusion(结论/复盘)、decision(设计决策)、agent(角色定义)
|
|
12
|
+
|
|
13
|
+
### 次要元素 (secondary)
|
|
14
|
+
项目特有的内容元素,默认隐藏可勾选:
|
|
15
|
+
- journal(日志)、convention(约定)、prompt(提示词)、template(模板)、intent(意图)
|
|
16
|
+
|
|
17
|
+
### 时间信息提取
|
|
18
|
+
- 优先级:文件名日期 > 内容首个日期 > 文件修改时间
|
|
19
|
+
|
|
20
|
+
### 配置文件
|
|
21
|
+
可选 `.sandtable.json`:
|
|
22
|
+
- `paths`:覆盖目录到类别的映射
|
|
23
|
+
- `timeRules`:时间分群规则(按状态/按日期)
|
|
24
|
+
- `display`:显示偏好
|
|
25
|
+
|
|
26
|
+
## 调用方式
|
|
27
|
+
```bash
|
|
28
|
+
node src/cli/sandtable.js scan [projectRoot]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 输出
|
|
32
|
+
JSON 格式的扫描结果,v2 新增字段:
|
|
33
|
+
- `primaryCount` / `secondaryCount`:主线/次要文件数量
|
|
34
|
+
- `elementTypes`:所有发现的元素类型
|
|
35
|
+
- 每个文件新增:`kind`(primary/secondary)、`elementType`、`date`、`dateSource`
|
|
36
|
+
|
|
37
|
+
## 下一步
|
|
38
|
+
运行 `build-json` skill 将扫描结果转为 data/*.json
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!-- SUMMARY
|
|
2
|
+
{
|
|
3
|
+
"type": "convention",
|
|
4
|
+
"status": "completed",
|
|
5
|
+
"tags": ["skill", "summarize", "v0.2"],
|
|
6
|
+
"summary": "AI skill:读取 scan.json 找出无摘要块文件,阅读内容后生成 SUMMARY 块并插入文件头部"
|
|
7
|
+
}
|
|
8
|
+
-->
|
|
9
|
+
# summarize — AI 总结无摘要块文件 (v2)
|
|
10
|
+
|
|
11
|
+
## 用途
|
|
12
|
+
读取 `data/scan.json`,找出所有 `hasSummary: false` 的文件,逐个阅读内容后生成符合模板规范的 `<!-- SUMMARY {...} -->` 块,插入文件头部。
|
|
13
|
+
|
|
14
|
+
## 前置条件
|
|
15
|
+
- `data/scan.json` 已存在(需先运行 `node src/cli/sandtable.js scan`)
|
|
16
|
+
- 摘要块模板参考:`templates/summary-block.md`
|
|
17
|
+
|
|
18
|
+
## 执行步骤
|
|
19
|
+
|
|
20
|
+
### 第 1 步:列出待总结文件
|
|
21
|
+
```bash
|
|
22
|
+
node src/cli/sandtable.js summarize [projectRoot]
|
|
23
|
+
```
|
|
24
|
+
或直接读取 `data/scan.json`,过滤 `files` 数组中 `hasSummary: false` 的条目。
|
|
25
|
+
|
|
26
|
+
### 第 2 步:逐个阅读并分析
|
|
27
|
+
对每个无摘要块的文件:
|
|
28
|
+
1. 用 Read 工具读取文件内容
|
|
29
|
+
2. 根据内容判断:
|
|
30
|
+
- **type**:`decision | journal | milestone | spec | convention | phase | conclusion`
|
|
31
|
+
- **status**:`completed | in_progress | pending | blocked | cancelled`
|
|
32
|
+
- **tags**:1-3 个关键词标签
|
|
33
|
+
- **summary**:一句话中文摘要(≤50 字)
|
|
34
|
+
- **kind**:`primary`(主线)或 `secondary`(次要)
|
|
35
|
+
3. 参考自动分类规则:
|
|
36
|
+
- type 为 milestone / roadmap / phase / task / decision / agent → `kind: "primary"`
|
|
37
|
+
- type 为 journal / convention / spec / template / intent → `kind: "secondary"`
|
|
38
|
+
|
|
39
|
+
### 第 3 步:生成并插入 SUMMARY 块
|
|
40
|
+
用 Edit 工具在文件开头(`#` 标题之前)插入:
|
|
41
|
+
```html
|
|
42
|
+
<!-- SUMMARY
|
|
43
|
+
{
|
|
44
|
+
"type": "实际类型",
|
|
45
|
+
"status": "实际状态",
|
|
46
|
+
"tags": ["tag1", "tag2"],
|
|
47
|
+
"summary": "一句话中文摘要"
|
|
48
|
+
}
|
|
49
|
+
-->
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 第 4 步:验证
|
|
53
|
+
重新运行 `node src/cli/sandtable.js build`,确认 `data/scan.json` 中该文件 `hasSummary` 变为 `true`。
|
|
54
|
+
|
|
55
|
+
## 摘要块格式要求
|
|
56
|
+
|
|
57
|
+
- 必须是合法的 JSON,放在 `<!-- SUMMARY` 和 `-->` 之间
|
|
58
|
+
- `type`、`status`、`tags`、`summary` 为必填字段
|
|
59
|
+
- `kind` 为可选字段,仅在需要覆盖自动分类时使用
|
|
60
|
+
- summary 使用中文,简洁准确,≤50 字
|
|
61
|
+
|
|
62
|
+
## 批量处理建议
|
|
63
|
+
|
|
64
|
+
- 每次处理 3-5 个文件,处理完一批后 build 验证
|
|
65
|
+
- 优先处理 `docs/plan/` 和 `docs/agents/` 下的文件(主线元素)
|
|
66
|
+
- 模板文件(templates/)和 harness 可跳过或标记为 `type: "template"`
|