puppylpg.github.io: Skill for Claude Code

.agents/skills/blog-lint/SKILL.md

blog-lint is a skill for Claude Code, Codex from puppylpg/puppylpg.github.io. It costs 112 tokens per session (1,481 once invoked), scanned A, original, MIT.

A blog-wide health check for finding conflicts, outdated conclusions, missing links, orphaned articles, inconsistent tags, stale wiki hub pages, and mismatched Chinese quotation marks.

In plain words
What is it for?
Use it to review a knowledge-base blog, check article consistency, update wiki hub pages, and carry out regular maintenance.
Why use it?
Blogs change over time, so separate articles can become inconsistent or disconnected. It produces evidence-based findings and follows the repository’s publishing process for repairs.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents); mentions AGENTS.md.

This is puppylpg/puppylpg.github.io's own configuration. It tells Claude Code and Codex how to work on puppylpg.github.io itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything puppylpg.github.io configures →

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/puppylpg/puppylpg.github.io/master/.agents/skills/blog-lint/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/puppylpg/puppylpg.github.io

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for blog-lint

README.md
[![agentmods](https://agentmods.dev/badge/skills/puppylpg/puppylpg.github.io/blog-lint/github.svg)](https://agentmods.dev/skills/puppylpg/puppylpg.github.io/blog-lint)
Your own site
<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.

agentmods 80×15 button for blog-lint

Your own site · 80×15
<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>
Per session 112 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,481 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 8d ago against content hash f9790fa2528d, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

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.

.agents/skills/blog-lint/SKILL.md · 84 lines

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/ 枢纽页中的“当前状态”部分 vs AGENTS.md
    • 教程文章中的命令/路径 vs 仓库现状(如 bin/ 脚本名、Dockerfile 参数)。
  • 方法:先读 AGENTS.md 和各 _wiki/*.md 提取“事实清单”,再 grep 全站核对这些事实的其他出现位置。

2. 过时结论未标注

  • 文章描述的方案已被后续文章取代,但旧文没有标注。已知演化线:
    • 代理:v2ray(VMess)→ xray(VLESS)→ mihomo(机场)并存,各自角色以 AGENTS.md 为准;
    • 本地预览:原生 Ruby vs Docker 两条路线。
  • 处理:不删旧文(实录有历史价值),在旧文开头或对应小节加一句指向新方案的说明,例如“本文方案已演进为 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.mdAGENTS.md 是否同步。
  • 开放问题跟进:wiki 页里 wiki-openq-status--open 状态的问题,检查近期新文章是否已经回答;已回答的把结论编回 wiki 页正文,问题徽章改为 --done
  • 枢纽页链接有效性:wiki 页手写的内链必须与目标文件的真实 slug 一致(曾发生 Stanford%20CNN vs Stanford-CNN 导致 CI htmlproofer 失败);本地 bundle exec jekyll build 后用 htmlproofer 或 grep _site 抽查。

4. 孤儿文章与缺失交叉引用

  • 孤儿:grep 全站,没有任何其他文章/枢纽页链接到它,且 tags 独一无二的页面。
  • 同主题系列文章(如“家庭影院(一)(二)(三)”)应互相链接或在枢纽页汇合。
  • 处理:优先把孤儿挂进对应枢纽页;确属独立的孤立内容列入报告即可,不强行互链。

5. 格式与约定

  • 中文引号配对:左引号 (U+201C)和右引号 (U+201D)必须成对,检查“左引号写成右引号”的低级错误;
  • categories/tags 小写;
  • frontmatter 必填 titledate,不手写 last_modified_at
  • 文件名 slug 规范(小写英文数字连字符,≤50 字符)。

输出格式

体检结果输出为一份 Markdown 报告,结构固定:

# 博客体检报告 <日期>

## 事实矛盾(N 条)
## 过时未标注(N 条)
## 枢纽页待更新(N 条)
## 孤儿与缺链(N 条)
## 格式问题(N 条)

## 建议修复顺序

Read the full file on GitHub · 84 lines

Changes

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.

  1. 8d ago First seen · 84 lines · 112 tokens per session scan A f9790fa2528d

Subscribe to this mod's changes

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.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

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…

microsoft/ai-agents-for-beginners · 200 tokens

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…

vercel/next.js · 95 tokens

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…

vercel/next.js · 170 tokens

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…

vercel/next.js · 103 tokens

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…

microsoft/vscode · 72 tokens