[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f3m2lkte3euf6c":3},{"code":4,"message":5,"data":6,"timestamp":38},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":28,"homepage":29,"updated_at":30,"history":31},"Nutlope\u002Fhallmark",4,"Anti-AI-slop design skill for Claude Code, Cursor, and Codex.","CSS",32153,1653,455,180,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},49058547,"Hallmark – Anti-AI-Slop Design Skill for Claude Code, Cursor, and Codex",7,9,"2026-07-26","给编程 Agent 用的设计技能：拦住 AI 生成页面的典型套路，改用主题材质出稿。","## 解决什么问题\n\n让 Claude Code、Codex、Cursor 或 OpenCode 做一个落地页，出来的往往是同一个页面：每个标题上方的 eyebrow 小标签、字距拉开的全大写标签、标题里只染一个词的颜色、撑不满首屏的 hero、页面底部必有的邮件订阅框。功能没问题，但一眼就是机器做的。Hallmark 在提示层解决这个问题：给 Agent 一套精选主题目录，按访客来页面的目的推导出页面结构，并在真实浏览器里针对这些具体套路做一次 lint，不通过就不交付。\n\n## 有什么不同\n\n多数“让 AI 输出好看点”的做法，要么是塞进 system prompt 的几段话，要么是一个需要反复提醒才会用的组件库。Hallmark 是一个带状态的技能包：从 48 个单文件材质里发三张主题，pre-flight 读取现有项目（字体、配色、框架），并要求真实素材而不是编造；`sloplint` 在真实浏览器里按八种宽度渲染，命中它针对的那些模式就失败。三层门禁（Floor 永不放行、Reflex 可记录理由后覆盖、Finish 不阻塞）比一张扁平清单更接近真实的设计评审。它还提供 redesign 和 audit 路径，校验重做后每个链接、表单字段和处理函数都还在。\n\n## 适合谁\n\n适合用编程 Agent 写营销页、文档首页或小型产品站，并且已经厌倦每次审同一套模板的开发者。没有设计师的独立开发者和小团队最受益。有成熟设计体系的团队不合适：这 48 个主题是有明确态度的材质，完整 redesign 会和你的 token 打架。它也不是通用 UI 库，应用内部的组件开发用不上。\n\n## 上手成本\n\n安装命令是 `npx skills add nutlope\u002Fhallmark -g`，需要 Node 18 以上；浏览器检查还要 puppeteer-core 和 Chrome，不装就只能跑静态检查。产出是自包含的 HTML 和 CSS，接进 React 代码库得手动改。照片库指向 Wikimedia Commons 的图片，每张各自的许可需要遵守，它刻意排除了图库站点。MIT 许可，没有厂商锁定。主要风险是成熟度：README 写得很细，但这套技能格式很年轻、迭代快，并且绑定了具体的 Agent harness。\n\n## 点评\n\nHallmark 是 2026 年 4 月才创建的新项目，半年左右到约 3.2 万星，只上过一次趋势榜，Hacker News 上也只有一条安静的讨论帖。这种“星数很高、外部讨论很薄”的形态更像是发布带来的尖峰，而不是已经沉淀的采用，星数只能当关注度看。想法本身确实有用，在真实浏览器里做 lint 也是正确的方向。接下来要看的是，当各家 Agent harness 改动技能格式时，主题目录和门禁规则能不能跟上。",{"slug":25,"name":26},"developer-tools","开发工具",[],"MIT","https:\u002F\u002Fwww.usehallmark.com\u002F","2026-10-24T20:36:11Z",[32,36],{"date":33,"stars":34,"stars_gained":35},"2026-10-24",32105,570,{"date":37,"stars":11,"stars_gained":13},"2026-10-25",1792890792]