Borrowing it
Nothing to install: this file belongs to puppylpg/puppylpg.github.io. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/puppylpg/puppylpg.github.io/master/.agents/skills/blog-lint/SKILL.mdgit clone --depth 1 https://github.com/puppylpg/puppylpg.github.ioWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/puppylpg/puppylpg.github.io/blog-lint)<a href="https://agentmods.dev/skills/puppylpg/puppylpg.github.io/blog-lint"><img src="https://agentmods.dev/badge/skills/puppylpg/puppylpg.github.io/blog-lint/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/puppylpg/puppylpg.github.io/blog-lint"><img src="https://agentmods.dev/badge/skills/puppylpg/puppylpg.github.io/blog-lint.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00112 | $0.01481 |
| Opus 5 | $0.00056 | $0.00740 |
| Sonnet 5 | $0.00022 | $0.00296 |
| Haiku 4.5 | $0.00011 | $0.00148 |
Grade A, and why
blog-lint scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 84 lines — stays where its author put it; the contents beside it link to each section on GitHub.
博客健康体检(Blog Lint)
定位
这是 Karpathy LLM Wiki 模式里 Lint 操作 的本站实现:博客文章是时间流,写完就不再动,但知识会演化——旧结论被新方案取代、同一事实在两篇文章里写得不一样、新文章忘了挂进枢纽页。定期体检让这些漂移显形。
思想背景见 _ai/2026-08-24-karpathy-llm-wiki-knowledge-base.md;站点结构与发布流程以根目录 AGENTS.md 为准。
核心原则
- 只报告有证据的问题:每条发现必须给出具体文件路径和原文片段,禁止泛泛的“某些文章可能过时”。
- 区分问题严重度:事实性矛盾 > 过时未标注 > 结构问题(孤儿、缺链) > 风格问题(引号、tag 大小写)。
- 修复走发布流程:任何落盘修改都遵循
AGENTS.md的发布流程(预览 → 确认 → 询问后再 commit/push)。批量修复前先给报告,不要静默改一大片。
检查清单
按以下顺序逐项执行,每项注明检查方法和通过标准。
1. 事实矛盾(最高优先级)
- 同一事实在不同文件中取值不同。已知的高危事实源:
AGENTS.md树莓派代理服务表 vs_life/各代理文章中的端口、容器名、配置路径;_wiki/枢纽页中的“当前状态”部分 vsAGENTS.md;- 教程文章中的命令/路径 vs 仓库现状(如
bin/脚本名、Dockerfile 参数)。
- 方法:先读
AGENTS.md和各_wiki/*.md提取“事实清单”,再 grep 全站核对这些事实的其他出现位置。
2. 过时结论未标注
- 文章描述的方案已被后续文章取代,但旧文没有标注。已知演化线:
- 代理:v2ray(VMess)→ xray(VLESS)→ mihomo(机场)并存,各自角色以
AGENTS.md为准; - 本地预览:原生 Ruby vs Docker 两条路线。
- 代理:v2ray(VMess)→ xray(VLESS)→ mihomo(机场)并存,各自角色以
- 处理:不删旧文(实录有历史价值),在旧文开头或对应小节加一句指向新方案的说明,例如“本文方案已演进为 XXX,见 <链接>”。
3. Wiki 枢纽页新鲜度
- 对照
_wiki/每页的“维护约定”,检查该主题下的新文章是否已归入枢纽页:- 树莓派主题:
grep -l "树莓派\|raspberry" _life/*.md的结果 vs_wiki/raspberry-pi.md已收录链接; - AI 主题:
_ai/新文章 vs_wiki/ai-llm-agent.md的知识线; - 博客主题:
_tutorials/中 Jekyll/Chirpy 相关文章 vs_wiki/blog-chirpy-jekyll.md。
- 树莓派主题:
- 新增集合、主题覆盖文件、发布流程变化时,检查
_wiki/blog-chirpy-jekyll.md和AGENTS.md是否同步。 - 开放问题跟进:wiki 页里
wiki-openq-status--open状态的问题,检查近期新文章是否已经回答;已回答的把结论编回 wiki 页正文,问题徽章改为--done。 - 枢纽页链接有效性:wiki 页手写的内链必须与目标文件的真实 slug 一致(曾发生
Stanford%20CNNvsStanford-CNN导致 CI htmlproofer 失败);本地bundle exec jekyll build后用 htmlproofer 或 grep_site抽查。
4. 孤儿文章与缺失交叉引用
- 孤儿:grep 全站,没有任何其他文章/枢纽页链接到它,且 tags 独一无二的页面。
- 同主题系列文章(如“家庭影院(一)(二)(三)”)应互相链接或在枢纽页汇合。
- 处理:优先把孤儿挂进对应枢纽页;确属独立的孤立内容列入报告即可,不强行互链。
5. 格式与约定
- 中文引号配对:左引号
“(U+201C)和右引号”(U+201D)必须成对,检查“左引号写成右引号”的低级错误; categories/tags小写;- frontmatter 必填
title、date,不手写last_modified_at; - 文件名 slug 规范(小写英文数字连字符,≤50 字符)。
输出格式
体检结果输出为一份 Markdown 报告,结构固定:
# 博客体检报告 <日期>
## 事实矛盾(N 条)
## 过时未标注(N 条)
## 枢纽页待更新(N 条)
## 孤儿与缺链(N 条)
## 格式问题(N 条)
## 建议修复顺序
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 84 lines · 112 tokens per session scan A f9790fa2528d
blog-lint is a skill published in the GitHub repository puppylpg/puppylpg.github.io (2 stars, last pushed 4d ago), licensed MIT. It adds 112 tokens to every session and 1,481 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…
chronicle
Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…