ワンクリックで
ob-project-log
项目知识沉淀到 Obsidian。四种模式:自动沉淀(Hook)、手动沉淀、浏览追问、架构回顾(生成档案+批注+resolve 改代码)。触发词:ob-project-log、项目沉淀、追问文章、架构回顾、review init/resolve。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
项目知识沉淀到 Obsidian。四种模式:自动沉淀(Hook)、手动沉淀、浏览追问、架构回顾(生成档案+批注+resolve 改代码)。触发词:ob-project-log、项目沉淀、追问文章、架构回顾、review init/resolve。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
在需要打包、签名、OTA、APK/IPA、GitHub Release、商店提交、部署、回滚或验活时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它核对具体渠道授权,可复用用户明确记录的项目级 preview OTA 持续授权并在验证通过后自动发布;未获授权只做预检。
把自然语言 App 需求、模块说明和参考截图一路推进到经验证的代码与当次授权交付;用于需要长时间自主开发、持续排障和跨上下文恢复的移动端或跨端 App 任务。它不固定技术栈、阶段或交付形式,也不会把无人值守理解为远端发布授权。
在需要与生产者分离的独立评审、复核、验收,或对 App 方案、UI、代码、体验或交付准备度做质量判断时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它只做只读评判并绑定真实证据,不创建或修改产物,也不做第一方定位根因或直接改代码。
在设计、开发或交付 App 时按需参考 Happy/Paws 经验,包括移动端架构、React Native/Expo 取舍、验证、OTA、安装包与 Release 边界。用于用户明确要求参考 Happy/Paws,或当前问题与这些真实工程经验高度匹配时;它只提供上下文,不是 App Workflow,也不强制复制 Happy 的技术栈。
在需要创建、修改、重构、修复 App 代码,或只读诊断崩溃、定位根因、给出候选补丁时使用;支持独立窄任务,也支持作为 app-flow 的当前行动。它不做产品调研、原型/设计、独立评审或打包发布,除非当前行动本身就是改代码。
作为 self-learning 的 HyperFrames 产出能力,自主学习本地教学音视频或公开视频链接,把教程讲授的方法、可观察动效和屏幕代码转成有证据、可恢复、可渲染的 HyperFrames Demo,并记录实际使用的内容、Skills、工具与可复用经验。仅在 self-learning 调用,或用户明确要求从教学素材制作 HyperFrames Demo 时使用;普通学习任务不要单独触发。
| name | ob-project-log |
| description | 项目知识沉淀到 Obsidian。四种模式:自动沉淀(Hook)、手动沉淀、浏览追问、架构回顾(生成档案+批注+resolve 改代码)。触发词:ob-project-log、项目沉淀、追问文章、架构回顾、review init/resolve。 |
Obsidian 项目知识沉淀助手。从 AI 对话或代码库提取项目知识,支持自动沉淀、手动沉淀、浏览追问、架构回顾四种模式。 将项目知识写入 Obsidian wiki,按主题组织为活文档。支持从对话提取、从代码扫描提取、就地批注后 resolve 改代码的闭环工作流。
触发词:
模式一(自动沉淀):由 Stop Hook 自动触发,无需手动调用
模式二(手动沉淀):ob-project-log / 项目沉淀 / 记录到项目 / 沉淀对话
模式三(浏览追问):追问文章 / 继续讨论 / 优化笔记 / 项目追问 / 追问
模式四(架构回顾):架构回顾 / 项目回顾 / review init / review resolve / 生成架构档案
示例:
- "ob-project-log"
- "把这次对话沉淀到项目"
- "追问文章" → 列出文章 → 选择 → 追问优化
- "架构回顾" / "review init" → 扫描代码 → 生成 architecture-flow.md + decisions.md
- "review resolve" → 扫描批注 → 列出 → 确认 → 批量改代码 + 更新档案
requires=OBSIDIAN_REPO
四种模式:自动沉淀、手动沉淀、浏览追问、架构回顾,将项目知识写入 Obsidian 并支持就地批注后 resolve 闭环。写入后自动更新项目 CLAUDE.md 索引段。
模式判断:Hook → 自动沉淀;"追问/继续讨论" → 浏览追问;"架构回顾/review init/resolve" → 架构回顾;其他 → 手动沉淀。
自动/手动沉淀:识别项目 → 分析对话 → 提取知识 → 匹配/创建文件 → 写入更新 → 更新 CLAUDE.md 索引段。
浏览追问:列出文章 → 用户选择 → 读取全文 → 追问循环 → 更新文章 → 更新 CLAUDE.md 索引段。
架构回顾:init 派 Explore 扫码生成档案+建软链;用户在 Obsidian 用 [!review] 批注;resolve 列出批注+确认+派 sub-agent 批量处理(改文档/改代码/给推理)。
把项目知识写入 Obsidian wiki,按主题组织为活文档。支持四种模式:
| 模式 | 知识来源 | 主要动作 |
|---|---|---|
| 一·自动沉淀 | 对话 | Hook 触发,静默写入 |
| 二·手动沉淀 | 对话 | 用户触发,输出摘要 |
| 三·浏览追问 | 对话 + 已有文章 | 选文章 → 追问 → 更新 |
| 四·架构回顾 | 代码库 | 扫码生成档案 → 用户批注 → resolve 改代码 |
模式四是闭环工作流(详见 references/architecture-review-guide.md),其他三种是单向沉淀。
【硬约束】仓库路径一律委托 ob-router skill 解析,本 skill 不自行读取路径文件。
调用 ob-router skill 获取 $OBSIDIAN_REPO:
ob-router init 持久化将 ob-router 返回的路径保存为 $OBSIDIAN_REPO,后续全程使用此变量。
核心问题:不同类型的项目,Obsidian wiki 目录不同。必须先检测项目类型,再确定写入路径。
<!-- ob-index:start --> 区域内已有 > 索引路径: 行,直接使用该路径.study-meta.json:如果项目根目录存在此文件且包含 "managedBy": "repo-study",判定为 repo-study 项目-study 结尾,且 $OBSIDIAN_REPO/wiki/open-source/{project-name}/ 存在,判定为 repo-study 项目$OBSIDIAN_REPO/wiki/ 下搜索与项目名匹配的目录| 项目类型 | 检测条件 | Wiki 路径 | 示例 |
|---|---|---|---|
| repo-study 项目 | .study-meta.json 存在,或目录名以 -study 结尾且在 open-source/ 下有对应目录 | $OBSIDIAN_REPO/wiki/open-source/{project-name}/ | wiki/open-source/codex-plugin-cc-study/ |
| 开发项目 | 其他 | $OBSIDIAN_REPO/wiki/projects/{project-name}/ | wiki/projects/CodeIsland/ |
文档中所有 $WIKI_PATH 指代根据上述规则解析后的项目 wiki 目录路径。路径末尾无 /。
$WIKI_PATH = $OBSIDIAN_REPO/wiki/open-source/{project} # repo-study
$WIKI_PATH = $OBSIDIAN_REPO/wiki/projects/{project} # 开发项目
根据触发方式自动判断模式:
| 触发方式 | 模式 | 行为 |
|---|---|---|
| Stop Hook 自动触发 | 自动沉淀 | 分析对话,提取知识,静默写入 |
| "项目沉淀" / "记录到项目" / "ob-project-log" | 手动沉淀 | 同上,但输出详细摘要 |
| "追问文章" / "继续讨论" / "优化笔记" / "项目追问" | 浏览追问 | 列出文章,选择后进入追问循环 |
| "架构回顾" / "项目回顾" / "review init" / "生成架构档案" | 架构回顾·init | 派 Explore sub-agent 扫码 → 生成 architecture-flow.md + decisions.md → 建项目软链 |
| "review resolve" / "处理批注" / "resolve 架构回顾" | 架构回顾·resolve | 扫描 > [!review] 批注 → 列出确认 → TeamCreate 批量派单 → 改文档/改代码 |
Stop Hook 在每次对话结束时自动触发,Claude 执行以下流程:
$OBSIDIAN_REPO 是否已配置判断本次对话是否包含值得沉淀的项目知识:
值得沉淀的信号:
不需要沉淀的信号:
如果 $OBSIDIAN_REPO/wiki/.rating-preferences.md 存在:
git remote get-url origin → 提取 owner/repo)索引加速匹配:在匹配已有文件前,先检查 index.md:
$WIKI_PATH/index.md新建文件的 frontmatter 模板(必填):
---
article_id: OBA-{随机8位}
tags: [{项目名}, {主题标签}]
type: {预定义类型} # concept/tutorial/troubleshooting/reference/note
updated_at: {YYYY-MM-DD}
created_at: {YYYY-MM-DD}
source: conversation
---
article_id 分配规则(随机生成,无状态):
OBA- + 8位随机小写字母数字python3 -c "import random,string; print(''.join(random.choices(string.ascii_lowercase+string.digits,k=8)))"grep -rh "OBA-{生成的ID}" "$OBSIDIAN_REPO/wiki/" --include="*.md",如果已存在则重新生成写入后验证(遵循 frontmatter-schema):
[[xxx]] 引用,确认目标文件存在index.md 表格中[[新文章名]] 反向链接更新索引:写入完成后,同步更新 index.md(格式见下方"索引机制"章节)
写入文章后,自动更新项目 CLAUDE.md 中的 Obsidian 索引段(格式参考 references/claude-index-format.md)。
流程:
git rev-parse --show-toplevel{git_root}/CLAUDE.md<!-- ob-index:start --> 标记内的路径$WIKI_PATH/index.md$OBSIDIAN_REPO/wiki/ 下搜索 frontmatter 含 project: {project_name} 的 index.mdfind "$OBSIDIAN_REPO/wiki/" -type d -name "*{project}*"<!-- ob-index:start --> 标记 → 替换标记区域内容跳过条件:
无论是否有内容沉淀,都创建标记文件防止 Hook 死循环:
echo $(date +%s) > /tmp/ob-project-log-synced-$PPID
📝 已自动沉淀到 {wiki_relative_path}({N} 条更新)
无有价值内容时:
本次对话无需沉淀(未发现项目知识增量)
沉淀完成后(无论是否有内容写入),分析本次对话中的偏好信号并更新 $OBSIDIAN_REPO/wiki/.rating-preferences.md:
.rating-preferences.md 的偏好规则部分:
### 标题 + 规则内容(auto-learned {date}) 标记来源支撑 描述与自动沉淀逻辑相同,但由用户主动触发,增加以下交互:
CLAUDE.md 已有索引路径 → .study-meta.json → 目录名 -study 后缀 → 模糊搜索 → 询问用户
按"项目路径解析"章节确定 $WIKI_PATH。
如果 $OBSIDIAN_REPO/wiki/.rating-preferences.md 存在,先读取偏好规则作为内容质量指引。
分析当前对话,按 references/study-dimensions.md 中的维度提取有价值内容。
每个内容块包含:
提取标准:只取有长期参考价值的内容。闲聊、临时调试、重复内容不取。
代码处理规则(详见 references/code-ref-format.md):
> [!code-ref] callout索引加速匹配:先读取 $WIKI_PATH/index.md:
对每个内容块:
{slug}.md,slug 从主题生成(短英文+连字符)不预设固定文件名,完全根据对话内容动态决定。
更新索引:写入完成后,同步更新 index.md(格式见下方"索引机制"章节)
更新项目 CLAUDE.md 索引段:与自动沉淀模式 3.5 相同,写入后自动更新项目 CLAUDE.md 中的 Obsidian 索引段(参考 references/claude-index-format.md)。
{REDACTED}涉及具体代码时使用 code-ref callout,格式见 references/code-ref-format.md:
> [!code-ref] {描述}
> **仓库**: {repo} | **路径**: `{path}:{line_start}-{line_end}`
> 🔗 [GitHub]({github_url}#L{start}-L{end})
>
> {设计意图}
写入前判断文章类型,按 references/writing-quality.md 中对应类型的标准执行:
| 类型 | 触发信号 | 必填要素 |
|---|---|---|
| 概念/分析 | 架构、原理、对比 | 独到视角 + 关键论点有 code-ref 支撑 + 底部参考 |
| 操作指南 | 安装、配置、教程 | 前置条件 + 编号步骤 + 代码示例 + 常见问题 |
| 踩坑记录 | Bug、兼容性、意外行为 | 症状 + 根因 + 方案 + 预防 |
| 决策记录 | 选型、方案取舍 | 背景 + 备选方案 + 对比 + 选择理由 |
质量底线:文章必须通过 质量自检清单,不达标的先补充再写入。
📝 已沉淀到 {wiki_relative_path}
更新:
- {filename}.md → {做了什么}
- {filename}.md → {做了什么}(新建)
与自动沉淀模式 6 相同:分析本次对话中的偏好信号,更新 .rating-preferences.md。
执行以下任务前,必须读取 references/browse-and-index.md:
index.md、article_idCLAUDE.md 的 Obsidian 知识索引段完整流程详见 references/architecture-review-guide.md,本章只列入口和核心约束。
| 子命令 | 触发词 | 作用 |
|---|---|---|
init | "架构回顾"、"项目回顾"、"review init"、"生成架构档案" | 派 Explore sub-agent 扫描代码 → 生成两份档案 → 项目根建软链 |
resolve | "review resolve"、"处理批注"、"resolve 架构回顾" | 扫描批注 → 列出让用户勾选 → TeamCreate 批量派单 → 改文档/改代码 |
status | "review status"、"查看批注" | 列出当前所有未处理的 [!review] 批注,不执行 |
| 文件 | 真文件路径 | 项目根软链 |
|---|---|---|
| 架构流水线 | $WIKI_PATH/architecture-flow.md | {project-root}/ARCHITECTURE.md |
| 决策清单 | $WIKI_PATH/decisions.md | {project-root}/DECISIONS.md |
源文件锚点 ID 规则:流水线步骤 F-001/F-002/...,决策点 D-001/D-002/...,永久绑定不复用。
用户在档案中任意位置写:
> [!review] 可选标题
> 我想把豆包换成 macOS say 当 fallback
> 不要为了便宜牺牲稳定性
支持的批注类型(用 [!review:类型] 显式标注,未标注由 resolve 阶段自动判定):
| 类型 | 含义 | resolve 行为 |
|---|---|---|
[!review:clarify] | 看不懂,要补充说明 | 改文档(追加补充内容) |
[!review:modify] | 要改代码 | 产出 diff 让用户确认后 apply |
[!review:challenge] | 质疑决策,想要论证 | 给推理回应,写入档案,不改代码 |
[!review](无类型) | 由 resolve 阶段根据内容自动分类 | 同上对应类型 |
[!review] 块从档案中删除,未处理的保留[!review] 块)| 场景 | 处理 |
|---|---|
| OBSIDIAN_REPO 未配置 | 询问用户 |
| 项目识别失败 | 询问用户 |
| 目录不存在 | 自动创建 |
| 对话无有价值内容 | 自动沉淀模式不操作;手动模式告知用户 |
| 追问模式无匹配文章 | 提示用户先沉淀,或创建新文章 |
| 追问模式目录为空 | 提示先使用手动沉淀创建内容 |
| Hook 触发但非 git 项目 | 跳过,不执行任何操作 |
index.md 不存在 | fallback 到原有逻辑(ls + 逐个读取),完成后自动创建索引 |
index.md 损坏或格式异常 | 忽略索引,fallback 到原有逻辑,下次写入时重建索引 |
| 索引与实际文件不一致 | 以实际文件为准,更新索引 |
| review init 时档案已存在 | 增量更新:保留所有 [!review] 批注块,仅刷新自动生成内容 |
| review resolve 时无批注 | 提示"无待处理批注"并退出 |
| review resolve 时项目根软链丢失 | 重建软链后继续 |
| review init 时项目根已有同名实体文件(非软链) | 报警提示并跳过软链创建,避免覆盖 |