Markdown style
Markdown style 定义 Markdown 源文件的正文排版、格式化和 Git 自动修复惯例。默认每个自然段保持一行,使用 Markdown 语法表达必要的结构;软换行由官方 formatter 合并,显式硬换行保留语义。它提供可重复的源文件样式,而不是要求作者按固定字符数拆分内容(dprint.json、docs/specs/markdown-style/SPEC.md)。
- 工具
- 文档
目录
Definition
Markdown style 定义 Markdown 源文件的正文排版、格式化和 Git 自动修复惯例。默认每个自然段保持一行,使用 Markdown 语法表达必要的结构;软换行由官方 formatter 合并,显式硬换行保留语义。它提供可重复的源文件样式,而不是要求作者按固定字符数拆分内容(dprint.json、docs/specs/markdown-style/SPEC.md)。
本主题不负责文档业务内容、链接可达性或站点视觉设计;与 Quality gates 的边界是:本主题确定具体排版和修复行为,后者确定这些检查如何参与 merge/readiness contract。可安装实现位于 skills/policies/markdown-style/,Topic 只维护可复用知识,不复制其工具资产。
When to use
项目准备统一 Markdown formatter、修复非语义正文换行、接入 staged auto-fix,或要求本地与 CI 使用相同样式配置时命中。若只修改文档内容或调整文档站 UI,且没有改变源文件排版与 Git/CI 契约,就不应扩大到此主题(docs/specs/markdown-style/SPEC.md)。
采用前检查当前 hook 管理器、部分暂存习惯和现有 CI。工具接入应保留已存在的 hook、配置、未暂存内容及 required check 名称;当前仓库从 repo-owned 原生配置开始,其他项目通过独立的 Policy adoption preview 接入(skills/policies/markdown-style/SKILL.md)。
Habits / defaults
- 默认使用原生 dprint 的官方 Markdown 插件;
textWrap: never配合wrapUnspacedScripts: true合并中英文软换行,不引入正文行宽上限(dprint.json)。 - 段落由空行分隔。列表层级、表格内容、代码块、frontmatter 和显式硬换行是需要保留的结构,不使用文本替换来猜测它们的边界(
docs/specs/markdown-style/SPEC.md)。 - 表格紧凑填充,代码块与 HTML 跳过内嵌 formatter,硬换行统一为反斜杠,换行符使用 LF;固定工具版本和 SHA256 由可复用包清单管理(
skills/policies/markdown-style/assets/toolchain.json)。 - 提交只修复 staged Markdown,使用 Lefthook 原生部分暂存恢复和
stage_fixed: true。初始化完成下载与 Wasm 编译,提交阶段只使用本地工具;缺失时明确失败并提示 setup(lefthook.yml、tools/markdown.py)。 - CI 使用与本地相同的 check,现有文档机械格式化单独提交。生成器直接产出合规 Markdown,先确定最终文本再计算 fingerprints,避免 formatter 和生成器互相覆盖(
tools/topic_skill_manager.py)。
Reference implementations
dprint.json、lefthook.yml、tools/markdown.py:提供方仓库统一配置、暂存修复和全仓只读检查的实现面。skills/policies/markdown-style/SKILL.md与 package assets:供其他项目预览并明确采用的自包含工具包,包装同时支持提供方源包和项目安装面。projects/tps55288-rs.md:已有项目记录了 dprint 与 Lefthook 的原生工具组合;该快照仅作为工具组合样本,不证明其已采用本主题的正文配置。docs/specs/markdown-style/SPEC.md:保留部分暂存、恢复冲突、生成稳定性和 CI 一致性的长期行为契约。
Failure modes
- 仅关闭长行 lint,却继续由 formatter 按列宽拆行:需要检查实际 Markdown
textWrap,不能只从lineWidth推断正文行为(dprint.json)。 - 只设置 never,中文仍保留软换行:官方插件对无空格脚本还有独立开关,应显式启用
wrapUnspacedScripts并用中文 fixture 验证(skills/policies/markdown-style/assets/templates/dprint.json)。 - 格式化工作区后直接全量 git add,会把未准备的修改一起提交:应让 hook 选择 staged 文件并使用原生备份与恢复;冲突时中止提交,保留修改和恢复入口(
lefthook.yml)。 - 提交时临时安装工具,造成网络等待或版本漂移:把固定版本下载、摘要校验和 Wasm 编译放在 setup,hook 缺失工具时清楚失败(
skills/policies/markdown-style/assets/scripts/markdown.py)。 - 生成器输出与格式基线不一致,重建后不断产生差异:修正模板的标题空行和表格填充,并验证重复生成正文与 tree hash 稳定(
tools/topic_skill_manager.py)。
Evidence index
dprint.jsonlefthook.ymltools/markdown.pytools/topic_skill_manager.pyskills/policies/markdown-style/SKILL.mdskills/policies/markdown-style/assets/toolchain.jsondocs/specs/markdown-style/SPEC.mdprojects/tps55288-rs.mdhttps://github.com/dprint/dprint-plugin-markdown/blob/0.26.0/tests/specs/Text/Text_UnspacedScripts_TextWrap_Never.txthttps://github.com/evilmartians/lefthook/releases/tag/v2.1.16
相关内容
Style Playbook Skills
项目实践Style Playbook Skills 是 Ivan style playbook 的 source-of-truth 仓库:它保存人工维护的 project snapshots、Topic packages、六个 global group Skills,以及用于浏览、筛选和触发生成任务的本地 library site。
tps55288-rs
项目实践Rust driver skeleton for TI TPS55288 buck-boost converter over I2C, intended for no_std embedded environments. Evidence: Cargo.toml, src/.
markdown-style
规则Apply one-line Markdown paragraphs with pinned native dprint, safe staged Lefthook fixes, and matching CI checks.