mcpField
L
lat-md

lat-md

github.com/vercel-labs开发2.0k47 次安装2 周前更新
代码仓库

关于 lat-md

用于编写和编辑 `lat.md/` 文档的规范,说明章节结构、交叉引用、源码链接、测试规格,以及如何用 `lat check` 验证。

主要功能

  1. 01规定章节结构
  2. 02将文档链接到源码符号
  3. 03使用 wiki 链接交叉引用
  4. 04通过代码引用编写测试规格
  5. 05用 `lat check` 验证文档

适用场景

  1. 01记录项目设计决策
  2. 02描述业务规则与 API 合约
  3. 03编写测试规格
  4. 04检查 `lat.md/` 的引用和结构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vercel-labs/lat.md --skill lat-md

安装后在 Claude Code 中输入/lat-md确认已加载。

详细介绍

lat.md 编写指南

此技能介绍了编写 lat.md/ 文件时使用的语法、结构规则和约定。每当你需要在 lat.md/ 目录中创建或编辑章节时,请加载此技能。

项目专属的 lat 文档应放在 lat.md/ 中。请勿修改此生成的技能或生成的 AGENTS.md 来记录项目指南:两者均由 lat 工具管理,之后可能会被 lat init 替换。

lat.md 中应包含的内容

lat.md/ 文件描述项目做什么以及为什么——包括领域概念、关键设计决策、业务逻辑和测试规范。它们不会重复源代码。可以将每个章节视为源代码引用回去的锚点。

将 lat.md/ 视为当前已实现状态的精简快照。可以在实现过程中同时在 lat.md/ 中拟定计划,目标是在提交时让文档描述已实现的内容。除此之外,除非用户明确要求,否则请勿将提案、假设性设计和未来工作写入 lat.md/。仅涉及规划的任务不需要更新知识图谱。请勿将其用作日志或变更日志,也不要仅为记录无关紧要的实现细节而扩充文档。

适合作为章节的内容:

  • 架构决策及其依据
  • 领域概念和业务规则
  • API 契约和协议
  • 测试规范(测试内容及原因)
  • 不明显的约束或不变量

不适合作为章节的内容:

  • 逐步讲解代码(代码本身就是讲解)
  • 自动生成的 API 文档(请使用工具生成)
  • 每次变更的日志或变更日志条目
  • 提案、计划中的功能、假设性设计或对未来行为的承诺;除非用户明确要求,或在实现过程中拟定并在提交时描述已实现的行为
  • 临时笔记或 TODO
  • 不会改变当前状态模型的无关紧要的实现细节

章节结构

每个章节必须以一段引言开头——标题后必须立即至少有一个句子,且前面不能有子标题或其他块级内容。

第一段不得超过 250 个字符(不计入 [[wiki link]] 内容)。这段文字用于标识章节——它会出现在搜索结果、命令输出和 RAG 上下文中。

# Good Section

Brief overview of what this section documents and why it matters.

More detail can go in subsequent paragraphs, code blocks, or lists.

## Child heading

Details about this child topic.
# Bad Section

## Child heading

This is invalid — "Bad Section" has no leading paragraph.

lat check 会强制执行此规则。

图表

默认使用文字描述。只有当概念涉及七个以上相互作用的对象(例如组件、状态或阶段),且具有复杂的顺序、分支或依赖关系,难以仅用文字清楚说明时,才使用 Mermaid 图表。

对象数量本身并不足以构成使用图表的理由;如果简短的段落或列表就能清楚说明简单的顺序或关系,请省略图表。图表应帮助用户和后续 Agent 概览各对象之间的交互。

每张图表都应聚焦于一个流程,使用易读的标签,并在周围的文字中通过精确的源代码符号链接解释重要决策。优先使用小型概览图或多张聚焦的图表,而不是一张密集的图表。请使用围栏式 mermaid 代码块,并运行 lat check 验证语法和可读性。

章节 ID

章节通过文件路径和标题链定位:

  • 完整形式:lat.md/path/to/file#Heading#SubHeading
  • 简写形式:file#Heading#SubHeading(文件名不重复时)

示例:lat.md/tests/search#RAG Replay Tests、cli#init、parser#Wiki Links。

配置的外部来源使用 [[handle:path/to/file.md#Heading]] 引用 Markdown 标题,使用 [[handle:path/to/file.ts#symbol]] 引用受支持的代码符号。克隆外部来源前,请运行 lat external show <handle>;其输出包含固定的提交版本和安全的检出建议。

Wiki 链接

使用 [[target]] 或 [[target|alias]] 交叉引用其他章节或源代码。

记录已实现的行为时,优先链接最相关的源代码符号,而不是整个文件。讨论整个模块或资源时,或没有受支持的符号可代表目标时,使用整个文件或目录链接。如果正文中提到了某个符号,请直接链接该符号。

章节链接

章节链接可关联相关概念,同时明确其稳定的图谱标识。

See [[cli#init]] for setup details.
The parser validates [[parser#Wiki Links|wiki link syntax]].
仓库路径链接

引用项目根目录下的任何现有文件或目录,无需片段:

[[schema.sql]]
[[CHANGELOG]]
[[src/components]]

不受支持的格式会通过引用验证,但无法由 Lat 打开。#fragment 需要指向 lat.md/ 章节或受支持的源文件。

源代码链接

引用源文件中的函数、类、常量和方法:

[[src/config.ts#getConfigDir]]          — function
[[src/server.ts#App#listen]]            — class method
[[lib/utils.py#parse_args]]             — Python function
[[src/lib.rs#Greeter#greet]]            — Rust impl method
[[src/app.go#Greeter#Greet]]            — Go method
[[src/app.h#Greeter]]                   — C struct

如果正文提到了某个实现符号或由其控制的行为,请链接该符号,而不是使用单独的代码片段或照抄其字面值。优先使用 [[src/config.ts#DEFAULT_TIMEOUT]](或 [[src/config.ts#DEFAULT_TIMEOUT|默认超时时间]]),而不是单独的标识符或照抄的值。在正文中保留行为说明;该链接可导航至其实现,并验证绑定关系。

lat check 会验证所有目标是否存在。

代码引用

使用 @lat: 注释将源代码关联到 lat.md/ 章节:

// @lat: [[cli#init]]
export function init() { ... }
# @lat: [[cli#init]]
def init():
    ...

支持的注释样式://(JS/TS/Rust/Go/C/PHP)和 #(Python/PHP)。

每个章节在相关代码处放置一条 @lat: 注释,而不是放在文件顶部。

测试规范

在 lat.md/ 文件中将测试描述为章节。添加 frontmatter,要求每个叶子章节都必须在测试代码中有对应的 @lat: 注释:

---
lat:
  require-code-mention: true
---
# Tests

Authentication test specifications.

## User login

Verify credential validation and error handling.

### Rejects expired tokens

Tokens past their expiry timestamp are rejected with 401, even if otherwise valid.

### Handles missing password

Login request without a password field returns 400 with a descriptive error.

每个测试都引用其规范:

# @lat: [[tests#User login#Rejects expired tokens]]
def test_rejects_expired_tokens():
    ...

规则:

  • require-code-mention: true 下的每个叶子章节都必须恰好由一条 @lat: 注释引用
  • 每个章节都必须有说明——至少用一句话解释测试验证的内容及原因
  • lat check 会标记未被引用的规范和悬空的代码引用

Frontmatter

lat.md/ 文件顶部可选的 YAML frontmatter:

---
lat:
  require-code-mention: true
---

目前唯一受支持的字段是 require-code-mention,用于强制执行测试规范要求。

验证

编辑 lat.md/ 文件后,务必运行 lat check。它会验证:

  • 所有 wiki 链接都指向现有章节、仓库路径或源代码符号
  • 所有相对 Markdown 链接都指向现有文件
  • 完整和折叠的引用式链接都有定义
  • 所有 @lat: 代码引用都指向现有章节
  • 每个章节都有开头段落(≤250 个字符)
  • 所有 require-code-mention 叶子章节都在代码中有引用
  • 每个 lat.md/ 目录都有准确的索引

评论

支持 Markdown