- 项目概览:本仓库是 Hugo 驱动的个人博客,主题使用
PaperMod(作为 Git 子模块引入),通过 Netlify 自动构建部署到https://grass.show/。 - 文章内容:所有正式文章与随笔位于
content/post/,译文位于content/translate/,文件为 Markdown 格式并带 Hugo front matter。 - 部署方式:Netlify 按照仓库根目录配置(见
netlify.toml)运行hugo构建,使用public/作为发布目录。
content/post/:博文与随笔,新增文章默认放在这里。content/translate/:翻译类文章。layouts/partials/:自定义或覆盖主题的局部模板(例如评论组件comments.html)。themes/PaperMod/:博客主题作为 Git 子模块引入,一般不直接修改,如需改动优先在layouts/下覆盖。static/:静态资源(图片等),会按原路径拷贝到构建输出。public/:hugo生成的静态站点目录,已在.gitignore中忽略,不应提交。hugo.toml:站点与主题配置。netlify.toml:Netlify 构建配置。
所有命令默认在仓库根目录
/home/grass/workspace/personal/running-grass.github.io执行。
- 本地预览(包含草稿):
hugo server -D- 访问本地预览:
http://localhost:1313/
- 访问本地预览:
- 正式构建:
hugo- 输出会写入
public/目录。
- 输出会写入
- 首次克隆后拉取主题子模块:
git submodule update --init --recursive
- MUST:提交信息遵循 Conventional Commits 规范,type、scope、description 等按约定书写(见下文“技能使用约定”中的
conventional-commits技能)。 - MUST:不要提交
public/目录内容,构建产物一律视为可重建文件。 - MUST:不要在
themes/PaperMod/目录中直接修改主题源码;如需自定义样式或局部模板,优先在layouts/或static/下添加/覆盖文件。 - MUST:在新增文章时,为 Markdown 文件添加合规的 front matter(至少包含
title、date、draft字段,必要时补充tags、series等)。 - MUST:每篇文章的 front matter 必须包含
aliases,用于给该文章生成“指向自身的旧链接/别名链接”,避免未来调整 URL 结构或改名导致 404。- 规则:
aliases至少包含 1 条路径(以/开头、不以/结尾、不含域名),作为该文章需要长期兼容的入口。 - 建议默认值:
content/post/<name>.md:aliases = ["/post/<name>"]content/translate/<name>.md:aliases = ["/translate/<name>"]
- 变更约定:当你修改文章的最终访问路径(例如设置
url、更改站点 permalink 规则、或改文件名导致 URL 改变)时,把旧路径追加到aliases(可保留多条),确保老链接能跳转到新链接。
- 规则:
- MUST:当使用 YAML front matter(
---)时,数组字段必须使用 YAML 多行列表(block sequence),不要使用[...]这种 JSON/flow style 数组写法。- 示例(推荐):
aliases:/tags:换行后用多行- item的形式书写。
- 示例(推荐):
- SHOULD:新增博文统一放在
content/post/,译文放在content/translate/。 - SHOULD:在本地使用
hugo server -D预览文章排版与链接是否正常,再提交。 - SHOULD:新增文章时合理使用标签(
tags)与系列(series),方便站内导航。
- 构建环境:由 Netlify 管理,构建参数与 Hugo 版本在
netlify.toml中声明,无需在本地执行部署脚本。 - 敏感信息:本仓库不应包含任何密钥、账号密码或私有配置文件;如有部署相关密钥,应通过 Netlify 的环境变量或其他密钥管理方式注入。
- 破坏性操作:任何会删除远端数据、修改生产配置的操作,均不应通过本仓库脚本自动执行,必须由人工在部署平台上确认。
本仓库在 Cursor / AI coding agent 中推荐使用以下技能:
- 讨论并生成新博文:
.agents/skills/discuss-and-generate-post/SKILL.md- 触发时机:当你想写一篇新的博文,希望 AI 从灵感碰撞 → 大纲 → 初稿 → 润色 → 检查 → 定稿 → 写入文件全流程协作时。
- 行为边界:在你确认主题与大纲前,AI 不得直接生成整篇长文;在你确认定稿前,AI 不得写入最终文件。
就近优先:当本仓库的
AGENTS.md与全局技能说明存在冲突时,以本文件为准;对话中的显式指令优先于本文件约定。
- 在对话中说明你想写的主题;如需要 AI 协助,请显式调用“讨论并生成新博文”技能工作流。
- 在 AI 协助下确定文章主题、读者与角度,生成并确认大纲。
- 由 AI 或你自己完成正文初稿,多轮润色后确定定稿。
- 由 AI 按本仓库惯例生成 Markdown 文件(含 front matter),写入
content/post/<slug>.md。 - 本地执行
hugo server -D,确认文章显示与链接正确,再提交代码。
- 在仓库根运行
hugo能成功生成站点,输出到public/,无报错。 - 在仓库根运行
hugo server -D能正常预览,首页与文章页展示正常。 - 主题子模块
themes/PaperMod能正常拉取(git submodule update --init --recursive成功)。 - 提交信息符合 Conventional Commits 规范,且使用中文描述。
- 新增文章的 Markdown 文件位于
content/post/(或content/translate/),front matter 字段完整且能被 Hugo 正常解析。