mcpField
D
decodie-observe

decodie-observe

github.com/owenbush开发1249 次安装10 周前更新
代码仓库

关于 decodie-observe

Decodie 技能会在编码过程中记录决策、模式和语言概念,生成结构化学习条目。它维护会话记录和项目索引,供 VSCode 扩展、网页界面及 GitHub 集成使用。

主要功能

  1. 01编码时创建聚焦的学习条目
  2. 02维护会话记录和项目索引
  3. 03检测可能重复的条目
  4. 04用内容锚点关联代码
  5. 05将被替代的记录标记为已取代

适用场景

  1. 01记录实现方案背后的考量
  2. 02随代码变更积累项目学习记录
  3. 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 集成 使用。

在整个编码会话期间,请遵循以下所有指示。

设置

  1. 检查项目根目录下是否存在 .decodie/。如果不存在,则创建:

    • .decodie/index.json,内容为 { "version": "1.0", "project": "<directory-name>", "entries": [] }
    • .decodie/config.json,包含默认偏好设置
    • .decodie/sessions/ 目录
    • .decodie/rules/ 目录
  2. 加载规则。 检查 ~/.decodie/rules/*.md(全局)和 .decodie/rules/*.md(项目级)。读取找到的所有 .md 文件。将其内容视为控制文档输出的附加指示,包括语气、语言、详略程度、格式和受众。如有冲突,以项目级规则为准。如果没有规则,则使用默认设置。

  3. 加载索引摘要以检测重复内容。运行:

    bash scripts/summarize-index.sh "$(pwd)"
    

    如果无法运行,则直接读取 .decodie/index.json,并总结现有条目、主题和有效标题。

  4. 确定会话 ID。在 .decodie/sessions/ 中查找符合 YYYY-MM-DD-NNN 格式的今日文件,找出最大的 NNN,然后递增。

实时生成条目

编码时,每当做出有意义的决策——选择一种模式、使用一项语言特性、做出架构选择或规避一个陷阱——就写一条学习条目。应将此操作穿插在日常编码工作中,而不是等到最后一次性完成。

哪些内容算是有意义的决策
  • 使用语言内置功能、标准库函数或框架 API
  • 在多种方案中做出选择(设计模式、算法、数据结构)
  • 应用编码约定或项目特定标准
  • 规避已知陷阱或反模式
  • 做出架构或结构方面的选择
  • 配置工具、构建系统或部署流水线

记录所有内容。不要根据对开发者经验的猜测进行筛选。关于基础语言特性的 foundational 条目,与关于系统架构的 advanced 条目同样有效。

每条目仅记录一个概念

让条目聚焦于单一概念。如果一次代码更改涉及多个可学习概念(例如,在数组函数中使用闭包,同时还体现了按引用传递),则应为每个概念分别创建条目,并相互交叉引用。

替代关系

修改或删除现有条目所引用的代码时:

  1. 检查索引中引用指向已更改代码的条目(按文件路径和锚点内容匹配)。
  2. 对于引用的代码已发生根本变化或已被删除的条目:
    • 在 index.json 中将条目的 lifecycle 更新为 "superseded"。
    • 如果你正在创建涵盖新方案的替代条目,则将 superseded_by 设为新条目的 ID。
    • 如果代码仅被删除且没有替代方案,则将 superseded_by 设为 null,但仍将其标记为 "superseded"。
  3. 在新旧条目之间添加交叉引用。

会话管理

  • 创建条目时,将每个条目追加到会话文件的 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.json
  • topics:小写 kebab-case 标签;适用时重用索引中的现有标签

index.json 条目按时间戳排序,最新的排在最前。

会话条目内容
  • code_snippet — 用于说明概念的精简代码片段
  • explanation — 清晰说明,并强调“为什么”,而不只是“是什么”
  • alternatives_considered — 其他考虑过的方案及其权衡
  • key_concepts — 核心要点数组
重复项检测

创建条目之前,请检查索引中是否有潜在重复项:

  1. 查找标题相似的条目
  2. 查找具有相同 topics + decision_type 组合的条目
  3. 如果是近似重复项:上下文相同则跳过;如果含义有实质差异,则创建条目并添加交叉引用
外部文档

如果条目涉及广为人知的 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/ 目录不会影响项目。
  • 每个条目只记录一个概念。 多个概念 = 多个条目,并添加交叉引用。
  • 保持索引精简。 完整内容放在会话文件中;索引仅保留元数据。

评论

支持 Markdown