问题: 通过环境的提问工具向用户提问——绝不要用纯文本散文。一次只问一个问题,提供2-4个可点击选项,等待回答。如果环境没有提问工具,则用散文形式提出同样选项,一次一个。
网站上线检查清单
新网站上线前的预启动审计与设置工作流。针对 Cloudflare DNS + Vercel 托管 + PostHog + 法律上下文进行定制。
交互方式(请先阅读)
此技能本质上是交互式的。要主动提问,而不是假设。用户会点击,而不是输入。
每次运行时都必须先问这些问题(按顺序,一次一个):
- 站点类型:
doc-site|marketing/lead-gen|SaaS-app|training/paid-course|personal-portfolio - 迁移情况:
greenfield-new-domain|migration-need-301-redirects|replacing-existing-on-same-domain - 多语言:
single-locale|en|fr+en|other-multi - PostHog 设置:
hogpost.samber.dev|set-up-new-proxy|skip-PostHog - AI 爬虫策略:
use-default-for-site-type|customize-per-bot|block-all - 浏览器工具可用性:
claude-chrome-extension|playwright|neither-skip-browser-checks
在后续每个阶段的决策点处也要再次询问,包括:
- 是否安装 Sentry / BetterStack / Crisp(取决于站点类型,明确询问)
- www 与 apex 域名的规范偏好(大多数站点:apex;但仍然要问)
- 如果用户选择了
customize-per-bot,允许哪些 AI 机器人 - CSP 严格程度:
strict-default-src-none|balanced-allow-self|permissive-for-marketing - 是否完全跳过某个阶段(例如,非法国站点跳过阶段 3)
未获得明确的用户输入之前,绝不要越过任何决策点。冗长的无检查点清单不是目标。
未经用户明确确认,绝不要安装任何 MCP 服务器或技能。 在运行 npx skills add、claude mcp add 或任何等效安装命令之前,始终通过提问工具询问——即使技能选择工作流建议了一个精选子集。
如何使用此技能
- 运行上面的会话开始问题。
- 按顺序引导用户完成阶段 1-10。对于每个阶段:a. 列出项目,询问是否有任何应跳过。b. 对于每个剩余项目,运行验证命令(见下面“验证工具”)。c. 报告通过/失败。如果失败,询问用户是现在修复还是稍后排队。
- 最后提供按阶段分组的状态报告,清晰区分阻塞项、推荐修复项和可选改进项。
配套技能
有六个技能包对网站上线很有用。绝不要安装整个多技能包。实际安装的子集取决于用户在启动时确认的站点类型。
包清单
| 包 | 涵盖内容 | 通常对谁有用 |
|---|---|---|
AgriciDaniel/claude-seo | SEO + GEO + schema + hreflang + sitemaps 审计,并行子代理 | 所有站点类型 |
addyosmani/web-quality-skills | Lighthouse、Core Web Vitals、可访问性、性能、最佳实践 | 所有站点类型 |
trailofbits/skills | 安全审计(OWASP、标头、依赖项) | 所有站点类型 |
aaron-he-zhu/seo-geo-claude-skills | 20 个 SEO+GEO 技能、CORE-EEAT + CITE 框架、/seo: 斜杠命令 | 内容密集型站点、竞争激烈的利基市场 |
coreyhaines31/marketingskills | ~30 个营销技能(CRO、文案、广告、弹窗、电子邮件、付费墙等) | marketing/lead-gen、SaaS-app、training/paid-course |
jonathimer/devmarketing-skills | 33 个开发者营销技能(人物画像、文档即营销、技术教程等) | doc-site、面向开发者的 SaaS-app |
技能选择工作流(在会话开始时运行)
用户确认站点类型后,针对与该站点类型相关的每个包:
- 列出可用子技能:
npx skills add owner/repo --list - 基于站点类型和此技能将执行的阶段,提出一个精选子集。将每个阶段的需求与列表返回的特定子技能相匹配。
- 与用户确认。 当提议列表超过 3 项时使用多选,否则使用单选(
install-as-proposed|let-me-modify|skip-this-pack)。 - 批量安装商定的子集:
npx skills add owner/repo --skill A B C
规则:
- 子技能名称存在于包中,而非此 SKILL.md 中。始终查询
--list以获取最新状态。包的内容会变化。 - 绝不要在没有
--skill的情况下运行npx skills add owner/repo(那会安装所有内容)。 - 站点类型 → 包的映射(要枚举哪些包,子技能仍按工作流选择):
doc-site: claude-seo, web-quality-skills, trailofbits, seo-geo-claude-skills, devmarketing-skillsmarketing/lead-gen: claude-seo, web-quality-skills, trailofbits, seo-geo-claude-skills, marketingskillsSaaS-app: 全部六个training/paid-course: claude-seo, web-quality-skills, trailofbits, marketingskillspersonal-portfolio: claude-seo, web-quality-skills, trailofbits, seo-geo-claude-skills(轻量级子集)
- 如果用户稍后请求一个需要尚未安装的子技能的阶段,针对该单个子技能再次运行工作流,而不是重新安装整个子集。
这样可以避免导入用户不需要的 80+ 个技能,避免子技能名称过时,并避免过度依赖单个包版本。
在阶段中委派任务时,不要重复此技能编排的工作。以狭窄范围调用专家(例如,“仅在 URL X 上运行安全标头子审计”)。
阶段 0:上线准备门控
在任何其他阶段之前运行此项。 产品不会自己营销——但一个没准备好的产品也不会营销成功。只有当你即将发布的产品值得发布时,启动机制才有意义。
两种失败模式从相反方向扼杀发布:
- 隐身模式 — 发布太晚。“穿西装的拖延症。”你在私下里不断打磨,等待产品完美。它永远不会发布,没人知道你的存在。
- “再来一个功能” — 从不发布。每个提议的发布日期都为了多一个功能而推迟。范围无限蔓延;发布永远不会到来。
中间道路是 SLC — 简单、可爱、完整(Simple, Lovable, Complete) (Jason Cohen 提出),是发布没人想要的、最小但不可爱的 MVP 的解药。一个可发布的 v1 是:
- 简单 — 它只做_一件事_。而不是把很多事情做差。一个清晰的工作,做好。
- 可爱 — 人们_想要_使用它,而不仅仅是忍受它。一个 MVP 要求用户为了“提供反馈”而忍受一个精简的体验。SLC 给了他们一个他们会选择的东西。如果没有人会为失去它而感到悲伤,那它还不够可爱。
- 完整 — 对于那一件事来说,它是一个_完整_的体验,而不是一个有明显漏洞的残次品。在其选择的范围内是完整的,而不是一个更大承诺的预告片。
门控: 如果它还不是简单、可爱、完整的,那么只有当你缺少的正是增加范围时,你才处于“再来一个功能”的领域——否则你处于隐身模式,应该发布。削减范围,直到一件事是可爱且完整的,然后发布那个。SLC 给你一个现在的真实发布,而不是一个永远不会到来的完美发布。
在运行各个阶段之前快速检查:
- 它是否做一件清晰定义的事?(简单)
- 目标用户是否会_选择_使用它,而不仅仅是忍受它?(可爱)
- 那一件事是否是一个完整的体验,没有明显的漏洞?(完整)
- 你是否已经超过了这个标准还在打磨?→ 停止。你处于隐身模式。发布。
- 你是否还在向范围中添加新东西?→ 停止。你处于“再来一个功能”。回退到 SLC。
目录提交准备(来自 directory-submissions 技能): 问这 9 个问题。如果有任何答案是“否”,他们还没准备好——先帮助他们构建缺失的部分。
- 产品是否可公开访问(无密码墙)?
- 是否有定价页面(即使是“Beta 期间免费”)?
- 隐私政策 + 服务条款是否已上线?
- Logo 资源是否为 PNG + SVG + 正方形 + favicon?
- 是否有 5-8 张真实截图 + 60-90 秒演示视频?
- 着陆页是否已为 GEO 做好准备(单个 H1、顺序层次结构、FAQ schema、结构化数据)?
- 是否至少有 3 个替代页面和 3 个用例页面已上线并被索引?
- 模板库或磁石资源是否可用(如果适用于类别)?
- 是否至少有 20 名 Beta/早期用户可以在 G2 上留下评论?
1-7 中任何一项为“否”是硬阻塞。8-9 项为“否”是软阻塞:你可以发布,但会失去 Tier 2 评论价值和 Typeform 式的复合效应。
ORB 渠道策略(来自 launch 技能): 在三种渠道类型中构建你的发布营销。所有内容最终都应引导回自有渠道。
自有渠道
你拥有渠道(尽管不拥有受众)。无需算法或平台规则即可直接访问。
- 电子邮件列表、博客、播客、品牌社区(Slack、Discord)、网站/产品
- 根据受众开始 1-2 个: 行业缺乏优质内容 → 博客;人们想要直接更新 → 电子邮件;参与度重要 → 社区
租赁渠道
提供可见性但你无法控制的平台。算法变化,规则改变,付费游戏增加。
- 社交媒体(Twitter/X、LinkedIn、Instagram)、应用商店、YouTube、Reddit
- 如何正确使用: 选择你的受众活跃的 1-2 个平台;使用它们将流量引流到自有渠道;不要依赖它们作为你唯一的策略
借用的渠道
利用他人的受众来绕过最困难的部分——被注意到。
- 客座内容(博客文章、播客采访、新闻通讯专题)
- 合作(网络研讨会、联合营销、社交接管)
- 演讲活动(会议、小组讨论、虚拟峰会)
- 影响者合作
- 要主动: 列出你的受众追随的行业领袖 → 推介双赢合作 → 使用 SparkToro 或 Listen Notes 等工具找到受众重叠
通过门控,然后运行下面的阶段。
文案语气和人性化润色
每个站点都有可见的营销文案(主标题、功能、CTA、元描述、OG 描述、博客文章、404 页面文本)。在上线前,必须进行两个层次的润色:
1. 每个站点定义一次 TONE.md
询问用户:“这个站点已经有 TONE.md 了吗?”(yes-already-exists | no-create-from-template | skip-use-default)。
如果要创建:将其写入 .agents/TONE.md 或仓库根目录的 TONE.md。参见 references/templates.md(“TONE.md 模板”部分)了解结构。
TONE.md 指定:语气(简洁、反主流等)、禁止模式(例如“深入”、“至关重要”、破折号、AI 感强的开头句)、句子长度偏好、受众阅读水平、来自用户自己写作的好句子和坏句子示例。
2. 以匹配的语言运行人性化润色
在每个起草步骤之后(无论是通过文案技能、手动还是直接由 Claude 完成),运行人性化工具以去除 AI 模式。
在会话开始时询问用户站点的主要受众语言(如果还不知道):
english-global→npx skills add https://github.com/blader/humanizer --skill humanizerfrench→ 使用samber/cc-skills@humaniseur-fr(自定义法语人性化工具)或等效的法语优化技能other→ 如果可用则安装匹配的人性化工具;否则技能会内联编写一个简短的语言特定反模式检查清单
对以下内容应用人性化工具:主标题文案、功能描述、CTA 按钮、元描述、OG/Twitter 卡片描述、博客文章、电子邮件注册确认、404 页面文本。跳过法律页面(品牌信息、一般销售条款),因为它们有严格的措辞要求。
3. 在调用文案技能时始终引用 TONE.md
在委派给任何文案或内容写作子技能(在调用时根据技能选择工作流选择)时,将 TONE.md 包含在提示上下文中。明确传递语气约束:“遵循 .agents/TONE.md。避免列出的模式。起草后应用人性化工具。”
浏览器交互偏好
许多检查需要真实浏览器(Lighthouse 运行、securityheaders.com 扫描、opengraph.xyz 验证、Twitter 卡片验证器、移动视口、屏幕阅读器烟雾测试、网络标签检查)。
始终优先使用 Claude Chrome 扩展。 只有当 Chrome 扩展不可用时才回退到 Playwright。如果两者都不可用,询问用户是跳过浏览器检查完全,还是等到他们启用其中一个。
验证工具
大多数检查可以从命令行完成,无需第三方服务。在每个阶段内联使用这些工具。不要单独信任 Cloudflare/Vercel/Google 仪表板中的面板,用 curl 验证。
DNS(阶段 1):
dig +short A example.com # A 记录
dig +short AAAA example.com # AAAA(IPv6)
dig +short MX example.com # MX(邮件)
dig +short TXT example.com # SPF + 验证 TXT
dig +short TXT _dmarc.example.com # DMARC
dig +short TXT default._domainkey.example.com # DKIM(选择器可变)
dig +short CAA example.com # CAA
dig +dnssec example.com | grep RRSIG # DNSSEC 活跃
TLS / HTTPS(阶段 1):
curl -sIL https://example.com | head # 跟随重定向
curl -sI https://www.example.com # 检查 www 处理
openssl s_client -showcerts -connect example.com:443 < /dev/null 2>/dev/null | openssl x509 -noout -dates
标头(阶段 4):
curl -sI https://example.com | grep -iE 'content-security-policy|strict-transport-security|x-frame-options|x-content-type-options|referrer-policy|permissions-policy'
# 完整标头转储:
curl -sI https://example.com
# 外部评分器:
curl -s "https://api.securityheaders.com/?q=https://example.com&followRedirects=on&hide=on" -I | grep -i 'x-grade'
SEO 文件(阶段 5):
curl -s https://example.com/robots.txt
curl -sI ht
…
[为翻译而截断]