README 文档规范:从项目门面到可执行的使用手册
README 往往是开发者接触一个项目时看到的第一份文档。
它不是项目介绍页的装饰品,也不是把目录树、技术栈和几张徽章堆在一起就算完成。一个合格的 README,至少应该让目标读者快速回答以下问题:
- 这个项目解决什么问题?
- 它是否适合我的使用场景?
- 我需要准备什么环境?
- 怎样安装、启动和验证?
- 遇到问题去哪里寻找帮助?
- 如何参与开发或提交贡献?
- 项目的维护状态、兼容范围和许可证是什么?
如果用户读完 README 仍然不知道怎样运行项目,那么这份 README 即使排版再漂亮,也只能算一张“项目海报”,不能算使用文档。
本文综合参考 Standard Readme、The Documentation Compendium 和 《如何编写好的 README》,并结合现代 GitHub 项目、企业内部仓库和 Java 后端工程的实际情况,整理出一套可落地的 README 编写规范。
一、README 的核心目标
README 的目标不是“写得多”,而是降低项目的理解成本、试用成本和协作成本。
可以将 README 的价值概括为四个层次:
flowchart LR
A[看懂项目] --> B[成功运行]
B --> C[正确使用]
C --> D[参与维护]
A1[项目是什么] --> A
A2[解决什么问题] --> A
B1[环境要求] --> B
B2[安装与启动] --> B
B3[验证结果] --> B
C1[配置说明] --> C
C2[使用示例] --> C
C3[限制与兼容性] --> C
D1[贡献流程] --> D
D2[发布规范] --> D
D3[维护者与许可证] --> D
1. 帮助读者判断项目是否有用
README 顶部应在最短时间内说明:
- 项目是什么;
- 项目解决什么问题;
- 项目适合谁;
- 项目与类似方案相比有什么不同;
- 当前是否可用于生产环境。
不要让读者向下滚动五屏,才发现项目只是一个实验性 Demo。
2. 帮助读者完成第一次成功运行
README 最重要的交付结果,不是“读者看完了”,而是“读者成功执行了”。
因此,安装与快速开始部分必须是可复制、可执行、可验证的。理想状态下,新用户可以直接复制命令,在合理的前置条件下得到预期结果。
3. 固化项目对外契约
代码实现会变化,README 描述的是项目对使用者承诺的接口、能力和边界。
只要对外使用方式没有变化,内部实现可以重构;一旦对外行为发生变化,README、示例、版本说明和迁移指南也应同步更新。
4. 降低维护和协作成本
良好的 README 可以减少以下重复沟通:
- “这个项目怎么启动?”
- “需要哪个 JDK 版本?”
- “配置文件放在哪里?”
- “数据库要提前初始化吗?”
- “为什么本地请求不通?”
- “怎么提交 Pull Request?”
- “这个仓库还维护吗?”
README 写清楚一次,胜过维护者在群里解释几十次。文档是不会请假的同事,当然,写错了也会全年无休地误导人。
二、README 的基本原则
2.1 面向明确的目标读者
开始写 README 之前,先确认主要读者是谁:
| 项目类型 | 主要读者 | README 应重点回答 |
|---|---|---|
| 开源库 | 使用库的开发者 | 安装、API、示例、兼容性 |
| CLI 工具 | 命令行用户 | 安装、命令、参数、示例 |
| Web 应用 | 部署者、贡献者 | 启动、配置、构建、部署 |
| 后端服务 | 开发者、运维、调用方 | 依赖、配置、接口、运行方式 |
| 企业内部项目 | 团队成员、接手人员 | 架构、环境、发布、排障 |
| 文档仓库 | 阅读者、文档贡献者 | 内容范围、导航、贡献方式 |
| 示例项目 | 学习者 | 学习目标、步骤、预期结果 |
不要试图在 README 中同时服务所有人。README 应提供主路径,其余内容链接到 docs/、Wiki、API 文档或运维手册。
2.2 使用渐进式信息结构
推荐按照“先概览、再运行、后深入”的顺序组织内容:
flowchart TD
A[项目名称与一句话说明]
B[核心能力与适用场景]
C[快速开始]
D[安装与配置]
E[详细使用方式]
F[架构与 API]
G[开发、贡献与发布]
H[维护者与许可证]
A --> B --> C --> D --> E --> F --> G --> H
读者在页面顶部获得决策信息,在中部完成第一次运行,在下部查阅深入资料。
不要把“项目历史”“作者感言”放在安装说明前面。用户此时只想知道怎么跑起来,并没有准备先看一部项目传记。
2.3 示例优先于抽象描述
相比下面这种描述:
系统提供灵活、强大、可扩展的配置能力。
更好的写法是直接展示:
1 | |
并说明配置文件位置、默认值、修改后的效果。
技术文档应尽量使用:
- 可复制的命令;
- 完整的最小示例;
- 输入与输出;
- 成功结果;
- 常见失败原因;
- 相关配置说明。
2.4 默认读者不了解项目内部约定
不要假设读者知道:
- 内部缩写;
- 私有仓库地址;
- 默认端口;
- 默认账号;
- 公司内部脚本;
- 特殊构建参数;
- 本地必须存在的目录;
- 隐含的服务启动顺序。
第一次出现缩写时应给出完整名称。内部项目也不例外,因为三个月后的自己,很可能已经变成“新用户”。
2.5 保持简洁,但不能省略关键步骤
“简洁”不是少写字,而是删除无用信息。
下面两种情况都不合格:
- 只有一句“执行 Maven 命令即可启动”;
- 把 Maven 生命周期、JVM 原理和 Spring Boot 全部讲一遍。
README 应提供完成任务所需的最少充分信息。
2.6 README 必须与代码同步
以下变更通常需要同步修改 README:
- 最低运行版本变化;
- 启动命令变化;
- 配置项变化;
- 默认端口变化;
- API 变化;
- 环境变量变化;
- Docker 镜像名称变化;
- 模块结构变化;
- 发布方式变化;
- 兼容性变化;
- 许可证变化。
README 不是项目初始化时写一次、随后永久封印的纪念品。
三、文件命名与多语言规范
3.1 文件名
默认使用:
1 | |
注意大小写应保持为 README,Markdown 格式使用 .md 扩展名。
3.2 多语言 README
对于同时维护中英文文档的项目,推荐:
1 | |
建议将 README.md 作为英文主文档,将 README.zh-CN.md 作为简体中文文档,并在顶部提供相互跳转:
1 | |
中文文档中对应写法:
1 | |
如果仓库只有一份中文 README,可以继续使用 README.md,无需为了形式额外创建英文空壳。
3.3 文档放置位置
项目根目录的 README 最容易被访问,也最适合作为项目入口。
对于复杂项目,可采用以下结构:
1 | |
根 README 负责导航和主路径,docs/ 负责承载深入内容。
四、推荐的 README 信息架构
下面是一套适合大多数软件项目的推荐结构。
其中并非所有章节都必须出现,应根据项目类型裁剪。
| 顺序 | 章节 | 建议级别 | 主要作用 |
|---|---|---|---|
| 1 | 标题 | 必须 | 明确项目名称 |
| 2 | 横幅或 Logo | 可选 | 建立项目识别 |
| 3 | 徽章 | 可选 | 展示构建、版本、许可证等状态 |
| 4 | 语言切换 | 多语言项目建议 | 中英文跳转 |
| 5 | 简短描述 | 必须 | 一句话说明项目价值 |
| 6 | 详细描述 | 建议 | 说明场景、边界与差异 |
| 7 | 功能特性 | 建议 | 快速了解核心能力 |
| 8 | 项目状态 | 建议 | 说明稳定性与维护状态 |
| 9 | 目录 | 长文档必须 | 提供导航 |
| 10 | 快速开始 | 强烈建议 | 最短路径跑通项目 |
| 11 | 环境要求 | 需要时必须 | 列出依赖与版本 |
| 12 | 安装 | 软件项目必须 | 提供安装步骤 |
| 13 | 配置 | 需要时必须 | 说明配置文件和环境变量 |
| 14 | 使用方法 | 软件项目必须 | 提供常用场景 |
| 15 | 架构或目录结构 | 复杂项目建议 | 帮助理解代码 |
| 16 | API | 对外提供接口时建议 | 说明接口或链接文档 |
| 17 | 测试 | 建议 | 说明怎样运行测试 |
| 18 | 构建与发布 | 工程项目建议 | 说明打包和发布 |
| 19 | 部署 | 服务项目建议 | 说明部署方式 |
| 20 | 兼容性 | 建议 | 说明平台和版本范围 |
| 21 | 安全 | 公开项目建议 | 报告漏洞和安全注意事项 |
| 22 | 常见问题 | 可选 | 汇总高频问题 |
| 23 | 路线图或 TODO | 可选 | 说明后续计划 |
| 24 | 更新日志 | 版本化项目建议 | 链接 CHANGELOG |
| 25 | 贡献指南 | 开源项目必须 | 说明贡献流程 |
| 26 | 维护者 | 建议 | 明确负责人 |
| 27 | 致谢 | 可选 | 鸣谢贡献 |
| 28 | 许可证 | 必须 | 明确授权方式,建议放最后 |
五、各章节编写规范
5.1 标题
标题必须清晰、自解释,并尽量与以下名称保持一致:
- 仓库名称;
- 项目目录名称;
- 包管理器中的包名;
- 发布制品名称。
推荐:
1 | |
如果品牌名与仓库名不同,可以写成:
1 | |
避免使用:
1 | |
除非项目真的叫 My Project,否则这几乎没有信息量。
5.2 横幅与 Logo
横幅或 Logo 应直接放在标题之后,不单独增加“横幅”章节。
推荐使用仓库内的相对路径,避免外部图片失效或产生不必要的第三方请求:
1 | |
注意:
- 必须提供
alt文本; - 控制图片大小;
- 不要使用十几兆的原图;
- 不要让 Logo 占满第一屏;
- 项目没有视觉资产时可以不放。
5.3 徽章
徽章适合展示可验证的项目状态,例如:
- CI 构建状态;
- 当前版本;
- Maven Central 或 npm 版本;
- 测试覆盖率;
- 许可证;
- 支持的 JDK 或 Node.js 版本;
- 文档状态。
示例:
1 | |
徽章应遵循以下原则:
- 只展示对用户有决策价值的信息;
- 每个徽章应链接到对应详情页;
- 不要堆满第一屏;
- 不要使用已经失效或长期为 unknown 的徽章;
- 不要将“使用了 Git、Java、IDEA”全部做成徽章。
徽章不是集邮墙。
5.4 简短描述
简短描述应放在标题、Logo、徽章之后,不需要单独的标题。
Standard Readme 建议简短描述控制在 120 个字符以内,并与 GitHub 仓库描述及包管理器中的描述保持一致。
推荐:
1 | |
不推荐:
1 | |
后者没有说明项目到底做什么。
可以使用以下公式:
1 | |
例如:
1 | |
5.5 详细描述
详细描述通常用两到四个自然段说明:
- 项目背景;
- 目标问题;
- 适用场景;
- 不适用场景;
- 与类似方案的差异;
- 当前成熟度。
避免写成长篇背景论文。过长内容应移动到“背景”或 docs/architecture.md。
5.6 功能特性
功能特性应描述用户可感知的能力,而不是简单罗列技术栈。
推荐:
1 | |
不推荐:
1 | |
技术栈可以作为补充,但它不能替代功能描述。
5.7 项目状态
建议显式说明项目当前状态:
1 | |
常见状态包括:
- Experimental:实验性;
- Alpha:早期开发;
- Beta:功能基本可用,但可能变化;
- Stable:稳定维护;
- Maintenance:仅维护,不再增加主要功能;
- Deprecated:已弃用;
- Archived:已归档。
不要让一个五年没更新的项目看起来还在“高速迭代”。
5.8 目录
当 README 超过约 100 行,或者包含较多二级标题时,应提供目录。
目录至少应覆盖所有二级标题:
1 | |
注意检查中文标题生成的锚点是否能正常跳转。
5.9 快速开始
快速开始是 README 最重要的章节之一。
它应该提供一条最短成功路径,而不是所有安装选项。
一个完整的快速开始应包含:
- 前置条件;
- 获取项目;
- 最小配置;
- 启动命令;
- 验证命令;
- 预期输出;
- 下一步链接。
示例:
1 | |
关键点:必须告诉读者怎样判断“启动成功”。
5.10 环境要求
环境要求应提供明确版本范围。
推荐:
| 依赖 | 最低版本 | 推荐版本 | 说明 |
|---|---|---|---|
| JDK | 21 | 21 LTS | 不支持 JDK 17 |
| Maven | 3.9 | 3.9.11 | 推荐使用 Maven Wrapper |
| PostgreSQL | 16 | 18 | 需要 pgvector 扩展 |
| Redis | 7 | 8 | 默认使用 DB 0 |
不要只写:
1 | |
版本不明确,是环境问题的头号孵化器。
5.11 安装
安装部分应根据项目类型给出对应方式。
Maven 依赖
1 | |
Gradle 依赖
1 | |
npm 安装
1 | |
源码安装
1 | |
安装命令必须与真实发布渠道一致。尚未发布到 Maven Central,就不要写一个看起来很正式但实际不存在的依赖坐标。
5.12 配置
配置章节应说明:
- 配置文件位置;
- 环境变量名称;
- 是否必填;
- 默认值;
- 示例值;
- 敏感信息处理;
- 配置优先级;
- 修改后是否需要重启。
推荐使用表格:
| 配置项 | 环境变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
server.port |
SERVER_PORT |
否 | 8080 |
HTTP 端口 |
spring.datasource.url |
DB_URL |
是 | 无 | 数据库连接地址 |
app.jwt.secret |
JWT_SECRET |
是 | 无 | JWT 签名密钥 |
app.timeout |
APP_TIMEOUT |
否 | 3s |
上游请求超时 |
敏感信息不要直接给出生产密钥:
1 | |
5.13 使用方法
Usage 不应只有一段抽象说明,至少要提供一个完整的常用示例。
对于库项目,应同时展示导入和调用:
1 | |
对于 CLI 项目,应展示帮助、常用命令和关键参数:
1 | |
对于服务项目,应展示请求和响应:
1 | |
响应:
1 | |
示例代码应与项目其他代码使用同样的格式化和静态检查规则。不能让 README 中的示例成为仓库里唯一无法编译的代码。
5.14 项目结构
复杂项目可以介绍核心目录,但不要无差别粘贴整棵目录树。
推荐:
1 | |
只解释对理解项目有帮助的目录。
5.15 架构说明
README 中的架构图应展示关键组件与数据流,不要塞入所有类名。
flowchart LR
Client[客户端]
Gateway[统一网关]
Auth[鉴权过滤器]
Router[路由引擎]
HTTP[HTTP 服务]
GRPC[gRPC 服务]
LLM[大模型服务]
Client --> Gateway
Gateway --> Auth
Auth --> Router
Router --> HTTP
Router --> GRPC
Router --> LLM
详细设计应链接到:
1 | |
5.16 API 文档
API 较少时,可以直接在 README 中说明。
API 较多时,README 只保留入口:
1 | |
API 文档至少应覆盖:
- 请求方法与路径;
- 参数;
- 返回类型;
- 错误码;
- 鉴权方式;
- 限制条件;
- 示例。
5.17 测试
应说明如何运行:
- 单元测试;
- 集成测试;
- 端到端测试;
- 特定模块测试;
- 覆盖率报告。
示例:
1 | |
如果集成测试依赖 Docker、数据库或特定环境变量,也应提前说明。
5.18 构建与发布
适用于需要发布制品的项目:
1 | |
输出:
1 | |
发布说明可以包含:
- 版本规则;
- 分支策略;
- Tag 规则;
- 制品仓库;
- 发布审批;
- 回滚方式。
建议遵循语义化版本:
1 | |
并将详细变更维护在 CHANGELOG.md。
5.19 部署
服务型项目应至少说明一种推荐部署方式:
- 本地进程;
- Docker;
- Docker Compose;
- Kubernetes;
- Helm;
- systemd。
例如:
1 | |
README 中提供最常用方式,复杂的高可用、容量规划和生产参数应放入专门部署文档。
5.20 兼容性
明确说明支持范围:
| 项目版本 | JDK | Spring Boot | 状态 |
|---|---|---|---|
| 1.x | 17 | 3.2.x | 维护模式 |
| 2.x | 21 | 3.5.x | 当前稳定版 |
| 3.x | 25 | 4.x | 规划中 |
对于 SDK 或公共组件,兼容性表格非常重要。
5.21 安全
公开项目建议提供 SECURITY.md,README 中给出入口:
1 | |
如果项目存在明显安全风险,例如默认密码、危险端口、文件权限、生产环境限制,应在 README 前部增加醒目提醒。
5.22 常见问题与排障
FAQ 应优先收录真实发生过的问题,而不是为了凑章节而虚构问题。
推荐格式:
1 | |
复杂问题应移动到 docs/troubleshooting.md。
5.23 路线图与 TODO
路线图用于说明方向,Issue 用于管理执行。
README 中只保留较高层计划:
1 | |
不要把数百条开发任务全部塞进 README。
5.24 更新日志
推荐维护独立的 CHANGELOG.md:
1 | |
更新日志应回答:
- 新增了什么;
- 修复了什么;
- 是否存在破坏性变更;
- 是否需要迁移;
- 是否存在已知问题。
5.25 贡献指南
贡献部分至少应说明:
- 是否接受 Issue;
- 是否接受 Pull Request;
- 怎样搭建开发环境;
- 分支和提交规范;
- 代码风格;
- 测试要求;
- 是否需要签署 CLA 或 DCO;
- 去哪里提问。
示例:
1 | |
5.26 维护者
列出真正负责项目方向和维护的人,而不是把整个组织成员全部贴上去。
1 | |
对于企业内部项目,还可以写团队名、值班群或服务目录链接。
5.27 致谢
致谢可以包括:
- 重要贡献者;
- 上游项目;
- 设计灵感;
- 赞助者;
- 数据或素材来源。
保持简洁、真实,不要把所有依赖库复制到致谢章节。
5.28 许可证
许可证应明确写出 SPDX 标识,并链接到本地文件:
1 | |
对于不开源的企业项目,可以写:
1 | |
按照 Standard Readme 的建议,许可证应作为 README 的最后一个章节。
六、不同类型项目的结构裁剪
README 不应机械套用同一份超长模板。
6.1 最小开源库
适合功能单一、使用方式简单的依赖库:
1 | |
6.2 标准开源项目
1 | |
6.3 企业内部后端服务
企业项目通常不需要过度强调 Star、开源徽章和社区宣传,而应该强化可运行性、依赖关系与运维信息:
1 | |
6.4 文档仓库
文档仓库可以省略安装和运行,但应强化导航:
1 | |
6.5 教程与示例项目
1 | |
七、推荐的 README 编写流程
7.1 先写用户主路径
先回答:
- 用户为什么要用?
- 用户怎样跑起来?
- 用户怎样验证?
- 用户接下来做什么?
不要一开始就花半天调整徽章间距。
7.2 再补充项目边界
补充:
- 支持什么;
- 不支持什么;
- 当前成熟度;
- 兼容范围;
- 已知限制。
7.3 最后拆分深入文档
当某个章节过长时,将其移动到独立文件:
| README 中的内容 | 独立文档 |
|---|---|
| 简要架构图 | docs/architecture.md |
| 最小配置 | docs/configuration.md |
| 推荐部署方式 | docs/deployment.md |
| 常见问题入口 | docs/troubleshooting.md |
| 贡献摘要 | CONTRIBUTING.md |
| 安全报告入口 | SECURITY.md |
| 版本摘要 | CHANGELOG.md |
README 应是地图,不是把整个城市压成一张纸。
八、常见反模式
8.1 只有项目名称
1 | |
问题:完全没有说明项目做什么,也没有使用方法。
8.2 只有技术栈
1 | |
问题:技术栈不能回答业务价值和使用方式。
8.3 命令无法直接执行
1 | |
问题:
xxx.jar的真实文件名是什么?- 是否需要配置?
- 是否需要数据库?
- 成功后怎样验证?
8.4 截图代替文字
把启动命令、配置和错误信息全部放在截图中,会造成:
- 无法复制;
- 无法搜索;
- 无法被屏幕阅读器正确读取;
- 修改后容易过期;
- 图片加载失败时信息消失。
截图适合展示 UI,不适合承载关键操作步骤。
8.5 徽章过载
二三十个徽章会让用户在第一屏看不到项目简介。
只保留能影响用户决策的状态信息。
8.6 README 与版本不一致
典型问题:
- 文档写 JDK 17,代码已经要求 JDK 21;
- 文档写端口 8080,实际默认是 9090;
- 文档写
master分支,实际默认分支是main; - 文档里的 Maven 坐标已经废弃;
- 示例接口已经删除。
过期文档比没有文档更危险,因为它会非常自信地把用户带到沟里。
8.7 没有验证结果
只有启动命令,没有健康检查、日志标识、页面地址或响应示例,用户无法判断是否成功。
8.8 把所有内容都塞进 README
README 过长会降低可扫描性。
超过合理范围后,应拆分架构、部署、迁移、故障排查和 API 文档。
8.9 使用模糊宣传语
避免:
- 极致性能;
- 企业级;
- 世界领先;
- 简单易用;
- 高可用;
- 高扩展;
- 开箱即用。
除非后文给出明确机制、指标、边界或示例,否则这些只是广告词。
8.10 链接失效
相对链接、分支名、文档路径和外部 URL 都可能失效,应定期自动检查。
九、README 的自动化质量保障
README 也应该进入工程质量体系。
9.1 Markdown 格式检查
可以使用 markdownlint-cli2:
1 | |
示例配置 .markdownlint-cli2.yaml:
1 | |
规则应根据项目实际情况调整,不要为了通过检查把文档改得更难读。
9.2 链接检查
可以使用 lychee:
1 | |
GitHub Actions 示例:
1 | |
9.3 示例代码校验
README 中的示例代码最好来自真实可运行的 examples/ 目录,而不是复制后独立维护。
推荐:
1 | |
README 链接到示例工程:
1 | |
如果必须内嵌代码,可以通过文档测试、Snippet 测试或 CI 脚本验证。
9.4 配置项同步检查
可以编写脚本对比:
- README 中的环境变量;
.env.example;- Spring Boot 配置元数据;
- Helm Values;
- Docker Compose;
- 部署清单。
避免同一个配置项在五个地方有五个默认值。
9.5 README 变更门禁
当代码修改涉及以下文件时,可以提示同步检查 README:
pom.xml、build.gradle;- Dockerfile;
application.yml;- OpenAPI 文件;
- 公共 API;
- CLI 参数;
- Helm Chart;
- CI/CD 脚本。
Pull Request 模板中可以加入:
1 | |
十、README 质量检查清单
10.1 内容完整性
- 标题与项目名称一致;
- 一句话说明项目是什么;
- 明确解决的问题和适用场景;
- 说明当前维护状态;
- 提供最短可运行路径;
- 明确环境与版本要求;
- 安装命令真实可用;
- 配置项说明清晰;
- 至少有一个完整使用示例;
- 提供成功验证方法;
- 说明兼容性和已知限制;
- 提供问题反馈渠道;
- 提供贡献方式;
- 明确许可证。
10.2 可读性
- 信息按用户任务顺序组织;
- 长文档提供目录;
- 标题层级连续;
- 段落不过长;
- 表格只用于结构化信息;
- 代码块标注语言;
- 缩写首次出现时给出全称;
- 不依赖读者掌握内部知识;
- 避免空洞宣传语;
- 避免过量徽章和装饰。
10.3 可执行性
- 命令可以直接复制;
- 文件名和路径真实存在;
- 所有占位符有明确说明;
- 前置依赖完整;
- 启动顺序明确;
- 示例输入和输出匹配;
- 失败时提供常见排查方向;
- 示例代码经过测试;
- 文档与当前版本一致。
10.4 可维护性
- 使用相对链接引用仓库内文件;
- 没有失效链接;
- README 与 CHANGELOG 分工明确;
- 深入内容已拆到
docs/; - 变更流程要求同步文档;
- CI 检查 Markdown 和链接;
- 多语言文档有同步策略;
- 维护者信息有效。
十一、最小 README 模板
下面的模板适合小型开源库、工具或示例工程。
1 | |
十二、标准开源项目 README 模板
1 | |
十三、企业级 Java 后端服务 README 模板
该模板更适合 Spring Boot、微服务、网关、财务系统或企业内部服务。
1 | |
十四、推荐的仓库文档组合
README 不是孤立存在的。一个成熟项目通常还需要以下文档:
1 | |
各文档之间应通过链接形成清晰导航,避免重复维护同一段内容。
十五、结语
一份好的 README,不需要拥有最复杂的排版,而需要让用户更少猜测、更少试错、更快得到结果。
可以用一句话判断 README 是否合格:
一个对项目不熟悉、但具备必要技术基础的人,能否只依靠 README 完成第一次成功运行?
如果答案是否定的,那么最应该补充的通常不是 Logo、徽章或项目愿景,而是前置条件、可执行命令、配置说明、预期结果和故障排查。
README 是代码仓库的入口,也是项目对外提供的第一份接口契约。代码质量决定项目能做什么,文档质量决定别人能不能正确使用它。