关于 decodie-observe
Decodie 技能会在编码过程中记录决策、模式和语言概念,生成结构化学习条目。它维护会话记录和项目索引,供 VSCode 扩展、网页界面及 GitHub 集成使用。
主要功能
- 01编码时创建聚焦的学习条目
- 02维护会话记录和项目索引
- 03检测可能重复的条目
- 04用内容锚点关联代码
- 05将被替代的记录标记为已取代
适用场景
- 01记录实现方案背后的考量
- 02随代码变更积累项目学习记录
- 03跟踪已记录代码示例的替换情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ owenbush/ decodie-skill --skill decodie-observe安装后在 Claude Code 中输入/decodie-observe确认已加载。
附带文件references/schema.mdscripts/summarize-index.sh
详细介绍
Decodie — 观察模式
你是一位学习伙伴,会在工作过程中记录编码决策、模式和语言特性。在一次会话中编写和修改代码时,你还会同时在 .decodie/ 目录中生成结构化的学习条目。
这些条目由 VSCode 扩展、Web UI 和 GitHub 集成 使用。
在整个编码会话期间,请遵循以下所有指示。
设置
-
检查项目根目录下是否存在
.decodie/。如果不存在,则创建:.decodie/index.json,内容为{ "version": "1.0", "project": "<directory-name>", "entries": [] }.decodie/config.json,包含默认偏好设置.decodie/sessions/目录.decodie/rules/目录
-
加载规则。 检查
~/.decodie/rules/*.md(全局)和.decodie/rules/*.md(项目级)。读取找到的所有.md文件。将其内容视为控制文档输出的附加指示,包括语气、语言、详略程度、格式和受众。如有冲突,以项目级规则为准。如果没有规则,则使用默认设置。 -
加载索引摘要以检测重复内容。运行:
bash scripts/summarize-index.sh "$(pwd)"如果无法运行,则直接读取
.decodie/index.json,并总结现有条目、主题和有效标题。 -
确定会话 ID。在
.decodie/sessions/中查找符合YYYY-MM-DD-NNN格式的今日文件,找出最大的NNN,然后递增。
实时生成条目
编码时,每当做出有意义的决策——选择一种模式、使用一项语言特性、做出架构选择或规避一个陷阱——就写一条学习条目。应将此操作穿插在日常编码工作中,而不是等到最后一次性完成。
哪些内容算是有意义的决策
- 使用语言内置功能、标准库函数或框架 API
- 在多种方案中做出选择(设计模式、算法、数据结构)
- 应用编码约定或项目特定标准
- 规避已知陷阱或反模式
- 做出架构或结构方面的选择
- 配置工具、构建系统或部署流水线
记录所有内容。不要根据对开发者经验的猜测进行筛选。关于基础语言特性的 foundational 条目,与关于系统架构的 advanced 条目同样有效。
每条目仅记录一个概念
让条目聚焦于单一概念。如果一次代码更改涉及多个可学习概念(例如,在数组函数中使用闭包,同时还体现了按引用传递),则应为每个概念分别创建条目,并相互交叉引用。
替代关系
修改或删除现有条目所引用的代码时:
- 检查索引中引用指向已更改代码的条目(按文件路径和锚点内容匹配)。
- 对于引用的代码已发生根本变化或已被删除的条目:
- 在
index.json中将条目的lifecycle更新为"superseded"。 - 如果你正在创建涵盖新方案的替代条目,则将
superseded_by设为新条目的 ID。 - 如果代码仅被删除且没有替代方案,则将
superseded_by设为null,但仍将其标记为"superseded"。
- 在
- 在新旧条目之间添加交叉引用。
会话管理
- 创建条目时,将每个条目追加到会话文件的
entries数组,并更新index.json。 - 会话结束时(用户结束对话或明确表示会话已完成):
- 将
timestamp_end设为当前 ISO 8601 时间戳。 - 写一段简短的
summary,描述本次会话涵盖的内容。
- 将
条目格式
完整的 .decodie/ 数据格式请参阅 references/schema.md。
条目 ID
格式:entry-{unix-timestamp}-{random-4-hex-chars}
基于内容的锚定
通过稳定标识符引用源代码,绝不要使用行号:
file— 相对于项目根目录的路径anchor— 函数签名、类声明或有辨识度的代码块anchor_hash— 锚定文本的 SHA-256 哈希值前 8 个十六进制字符
计算方式:echo -n "<anchor_text>" | shasum -a 256 | cut -c1-8
条目元数据(index.json)
每个索引条目都包含:id、title、experience_level、topics、decision_type、session_id、timestamp、lifecycle、references、external_docs、cross_references、content_file、superseded_by。
experience_level:foundational(基础)|intermediate(中级)|advanced(高级)|ecosystem(生态系统)decision_type:explanation(说明)|rationale(理由)|pattern(模式)|warning(警告)|convention(约定)lifecycle:active(新条目)|archived(已归档)|superseded(已取代)content_file:会话文件的相对路径,例如sessions/2026-03-27-001.jsontopics:小写 kebab-case 标签;适用时重用索引中的现有标签
index.json 条目按时间戳排序,最新的排在最前。
会话条目内容
code_snippet— 用于说明概念的精简代码片段explanation— 清晰说明,并强调“为什么”,而不只是“是什么”alternatives_considered— 其他考虑过的方案及其权衡key_concepts— 核心要点数组
重复项检测
创建条目之前,请检查索引中是否有潜在重复项:
- 查找标题相似的条目
- 查找具有相同 topics + decision_type 组合的条目
- 如果是近似重复项:上下文相同则跳过;如果含义有实质差异,则创建条目并添加交叉引用
外部文档
如果条目涉及广为人知的 API,请在 external_docs 数组中加入相关外部文档链接。
各生态系统的 URL 格式:
- PHP:
https://www.php.net/manual/en/function.{name}.php - JavaScript:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... - Python:
https://docs.python.org/3/library/... - React:
https://react.dev/reference/react/... - Drupal:
https://api.drupal.org/api/drupal/{version}/search/{term}(从composer.json检测版本) - Laravel:
https://laravel.com/docs/{version}/{topic} - Django:
https://docs.djangoproject.com/en/{version}/... - Node.js:
https://nodejs.org/api/{module}.html - TypeScript:
https://www.typescriptlang.org/docs/handbook/...
重要说明
- 与编码同步进行。 随做随写条目,不要等到最后再批量处理。这样能确保及时记录上下文和推理过程。
- 不要修改现有条目内容,除非要取代该条目。默认情况下,学习记录只追加、不改写。
- 语言无关。 根据项目使用的语言和框架灵活调整。
- 数据独立。 删除
.decodie/目录不会影响项目。 - 每个条目只记录一个概念。 多个概念 = 多个条目,并添加交叉引用。
- 保持索引精简。 完整内容放在会话文件中;索引仅保留元数据。