agentsclimarketplace

Engineering journal

Skill xylvvv/agent-skills/skills/engineering-journal

Use when work in a Git repository needs a persistent engineering dossier, work item, investigation record, quick handoff, topic ledger, analysis report, or reusable evidence across projects or sessions.From its SKILL.md

Install
npx -y skills add xylvvv/agent-skills --skill engineering-journal

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.5 KB, ~3.2k tokens by cl100k_base, as published. Nobody here has run it

Engineering Journal

在 Engineering KB 根目录中创建、恢复或更新工程档案。默认 KB 根目录是 ~/Documents/Obsidian/KB/engineering;如果用户明确指定其他 KB 路径、本地知识库路径或团队约定路径,则使用用户指定路径作为本轮 KB 根目录。此 skill 只负责事实沉淀与接力,不代替规划、调试、实现、评审或验证流程。以当前仓库和可复现证据为事实源;不得把 Memories 或未经验证的历史上下文当作事实。

本文中的 <KB_ROOT> 均指上述 KB 根目录。读取或运行 skill 内脚本、内置模板时,使用本次加载到的 engineering-journal skill 所在目录。

识别项目

先运行:

cd <engineering-journal-skill-dir> && node scripts/project_identity.mjs

脚本只读 Git,输出 git_rootgit_common_dirbranchheadsanitized_remoteproject_idproject_keyproject_id 保留完整 sanitized remote;project_key 默认使用远端仓库 basename,无远端时使用 Git root basename。同一 common dir 的 worktree 属于同一项目。脚本失败表示当前目录不属于 Git 仓库:不要创建档案,先说明并确认用户意图。

搜索与路径

  1. 在 KB 根目录搜索 Markdown 文件名和内容中的 project_idproject_key、安全化远端、Git root、任务关键词、issue ID、别名和相关链接。
  2. 检查候选文档的项目身份、范围、更新时间和关联关系。精确匹配时原地恢复;多个候选冲突时先消歧,不得创建近似重复档案。
  3. 脚本输出的 basename key 是首选。只有搜索现有档案或 registry 发现同一 project_key 对应不同 project_id 时才升级:先用 <owner>-<repo>;仍冲突时追加 project_id 的稳定短 hash。不要因“可能冲突”预先扩大 key。
  4. 沿用已有项目布局。仅在无匹配文档时使用最终消歧后的 key 和以下绝对路径,不得额外拼接 engineering
    • <KB_ROOT>/projects/<project-key>/work-items/<task-slug>.md
    • <KB_ROOT>/projects/<project-key>/topics/<topic-slug>.md
    • <KB_ROOT>/projects/<project-key>/evidence/YYYY-MM-DD-<record-slug>.md

新项目自动初始化

当脚本识别出 Git 项目,但 KB 中没有匹配项目入口时,不要求用户手动初始化。按需自动创建最小 KB 和项目容器:

  1. <KB_ROOT> 不存在,创建 <KB_ROOT><KB_ROOT>/projects<KB_ROOT>/_templates
  2. <KB_ROOT>/_templates 缺少必需模板,从 skill 内置 templates/ 复制缺失模板;不得覆盖用户已修改的同名 KB 模板。
  3. 创建 <KB_ROOT>/projects/<project-key>/work-items/topics/evidence/raw/events/ 子目录。
  4. <KB_ROOT>/_templates/project-index.md 创建 index.md,填入 project_key、标题、project_id、当前 Git root、branch、HEAD、远端摘要和创建时间。
  5. <KB_ROOT>/projects/_registry.md 存在且尚未包含该项目链接,追加 [[engineering/projects/<project-key>/index|<project-key>]];若 registry 不存在,先创建最小 registry。
  6. 再创建本轮需要的 work-itemtopicevidence。项目初始化和首份档案创建应写入项目入口事件日志。

自动初始化只建立空容器和索引,不迁移、不复制、不重命名旧资料;发现可能已有同项目旧目录但身份不确定时,先记录候选并向用户确认。

选择档案类型

主类型使用条件默认目录
work-item有边界的 bug、需求、重构、发布或一次性交付,需要跨会话接力work-items
topic-ledger长期演进的模块、机制或技术主题,需要持续累积事实与决策topics
analysis-report某时点的调查、事故复盘、架构或代码分析,需要形成稳定结论evidence

默认选择 work-item。只有生命周期、复用范围或读者明显不同才拆文档,并用 related 链接关联,避免复制。

复杂或可复用分析必须从主档案拆出 evidence-record,存入 evidence。evidence record 的 frontmatter 必须包含:

  • validity: currentstalesupersededdisputed
  • observed_at: 带时区的绝对时间
  • source_revision: 观察时的完整 Git commit SHA
  • supersedes: 被当前记录替代的 evidence record 链接数组

当代码、配置或环境已越过 source_revision 且尚未复核时,将 validity 改为 stale。新记录替代旧记录时,新记录填写 supersedes,旧记录改为 superseded 并链接新记录。

工作项状态机

status 只允许出现在 frontmatter。work-item 的状态值和转换固定为:

  • backlog -> active
  • active -> blocked | done | cancelled
  • blocked -> active | done | cancelled
  • done -> active,仅通过 reopen
  • cancelled -> active,仅通过 reopen
  • backlog -> cancelled

禁止其他转换。每次转换都更新时间并写一条事件;正文不得创建 Status 标题或字段。

正文约束

正文只维护两个操作区块;按需读取 templates.md

  1. Current Snapshot:最多 8 个顶层条目,使用标签维护以下信息:
    • Quick Handoff:目标、当前进展、下一步、阻塞点、可直接执行的下一条命令
    • Confirmed Fact:结论及文件行号、commit、命令/测试摘要或“用户明确提供”
    • Hypothesis:未确认内容、验证方法和当前结果
    • Decision:日期、选择、理由和替代关系
    • Verification:命令、时间、PASS/FAIL 和关键摘要
    • Risk:影响与缓解动作
  2. Event Log:按时间倒序保留最近 10 条事件;每条包含绝对时间、类型、事实变化和证据。新增后立即裁剪到 10 条。

事实与假设必须分离。验证后把 hypothesis 转为 confirmed fact 或记录为否定事件。只写增量与摘要,不粘贴大段日志、代码或聊天记录。

复杂需求工作流

当需求横跨多功能点、多接口、多端入口、多轮澄清或联调反馈时,读取 complex-requirement-workflow.md

复杂需求仍以 work-item 作为主档案,但必须额外维护:

  • 事实源治理:记录 PRD/Cooper/导出文档/截图/用户澄清的优先级和覆盖关系。
  • 需求矩阵:按功能点拆 原始需求 / 澄清口径 / 接口契约 / 现有链路 / 前端改动点 / 实现回填 / 验证点 / 待确认问题
  • 问题分层:区分产品需求问题、后端契约问题、前端实现问题和验证问题;PRD 已明确项不得继续列为待确认。
  • 链路追踪:记录入口、接口、请求字段、响应字段、状态消费、参数出口和必要链路图。
  • 实现前检查:确认需求闭环、契约足够、安全实施条件满足。
  • 联调归因:按现象、接口响应、当前代码链路、根因、最小修复、回归点记录。
  • 收尾分层:work-item 摘要、evidence 时点结论、topic/handbook 长期知识、raw 原始证据、模板复用起点。
  • 版本化反哺:长期知识必须带观察版本、HEAD、来源 evidence/raw、失效信号;新需求结束时确认、修正或废弃旧结论。

复杂需求可使用 KB 模板: complex-requirement-matrix.mdintegration-feedback-record.mdcloseout-calibration.md

Superpowers 路由

当前环境已安装 Superpowers 时,可按任务性质调用合适 skill,例如复杂 bug 使用 superpowers:systematic-debugging,实现或修复使用 superpowers:test-driven-development,完成声明前使用 superpowers:verification-before-completion。Superpowers 不是复杂需求工作流的强依赖;无对应 skill 时使用矩阵、检查清单和归因模板执行同等方法。Engineering Journal 始终只记录这些流程产生的事实、决策、验证和风险,不接管其方法或把 skill 输出自动视为已确认事实。

成本与安全

  • 一次短会话即可完成、低不确定性且无接力价值的小任务,不主动新建档案;用户明确要求记录时使用最小模板。
  • 优先更新已有档案;一个任务只选一个主档案。复杂证据仅在可复用或需要独立有效期时拆 record。
  • 永不记录 token、cookie、密码、私钥、完整环境变量、带凭据 URL、内部个人数据或可复用认证材料。
  • 写入前清理远端 URL、命令、日志和错误中的秘密,用 [REDACTED] 替代。发现疑似泄露时停止复制并提示安全处置。

完成检查

  • 项目身份来自脚本的最新输出,并已搜索排重。
  • <KB_ROOT> 已确定;缺失的 KB 必需模板已从 skill 内置 templates/ 补齐,且未覆盖用户已有模板。
  • 路径位于 engineering/projects/<project-key>/...,且未重复拼接 KB 根目录段。
  • 主类型、状态转换和 evidence record 拆分符合规则。
  • frontmatter 之外没有 status 字段;snapshot 不超过 8 项,event log 不超过 10 条。
  • facts、hypotheses、decisions、verification、risks 和 quick handoff 均按当前任务实际情况维护。
  • 复杂需求已维护需求矩阵、问题分层、版本化事实和收尾反哺校准;若未维护,已在风险或待验证中说明原因。
  • 下一会话能直接继续,且文档无秘密、无无必要的大段原始输出。

What ships with it: 11 files

23.8 KB alongside SKILL.md, 1 of them executable

agents/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.