landing-site
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLanding site — purpose, UX, and design bar
着陆页——设计目标、用户体验与设计标准
The front door is (Vite + React + Tailwind, dark-only), deployed to
vigiles.sh. This skill is the standard every change is held to. The recurring
failure it exists to stop: adding elements instead of removing them, which
makes the page feel crowded and template-y ("tilda-like") instead of modern.
site/The one rule under all the others: when in doubt, REMOVE. Design by subtraction.
If deleting an element loses no meaning, delete it. A change that adds a box, a
caption, a second button, or a reassurance line is suspect until proven necessary.
着陆页对应代码目录为(基于Vite + React + Tailwind构建,仅支持深色模式),部署在vigiles.sh。本规范是所有变更需遵循的标准。它旨在避免反复出现的问题:盲目添加元素而非做减法,这种行为会让页面显得拥挤、模板化(类似Tilda风格),缺乏现代感。
site/所有规则之上的核心原则:存疑即删,以减法做设计。
如果删除某个元素不会丢失信息,那就删掉它。任何新增框体、说明文字、第二个按钮或安抚性语句的变更,在被证明必要前都应受到质疑。
Purpose (what the site is for)
设计目标(着陆页的用途)
- Audience: developers who already live in agentic-coding tools (Claude Code, Codex, Cursor). They are skeptical and skim on a phone.
- The one job: get them to run (or adopt vigiles). The wow is the graded report — show the result, don't explain the mechanism.
npx vigiles audit - Front-door promise: "Lighthouse for your agent harness" — a one-command, zero-config, nothing-uploaded grade of your skills/hooks/subagents/references.
- 目标受众: 日常使用智能编码工具(Claude Code、Codex、Cursor)的开发者。他们持怀疑态度,且习惯在手机上快速浏览。
- 核心任务: 引导他们执行命令(或采用vigiles工具)。核心亮点是分级报告——直接展示结果,无需解释实现机制。
npx vigiles audit - 首页承诺: "Agent工具集的Lighthouse"——只需一条命令,零配置,无需上传任何内容,即可为你的skill/hooks/subagents/references生成评分。
UX requirements
用户体验要求
- Command-first. is the universal action (works on every OS, every terminal). It is THE primary CTA. Everything else is secondary.
npx vigiles audit - The Claude Code deeplink () is a DESKTOP-ONLY enhancement, never the primary path — it silently dead-ends on mobile / CC Web / desktop-without-CC. Render it only where it can work; never ship a button that does nothing.
claude-cli:// - Be honest on mobile. No dead buttons. Where a desktop-only action can't run, say so plainly and give the real action (the command) instead.
- One primary action per screen. Secondary actions are quiet — a text link or a light pill, never a second heavy full-width button competing with the primary.
- Harness-neutral. Say "Claude Code or Codex," don't lead with Claude Code — it's an implementation detail, not the headline. Don't over-explain internals.
- Low-friction + welcoming. A skimmer should understand what it is and how to try it within one screen, without reading a wall.
- 命令优先。 是通用操作(适用于所有操作系统、所有终端),是唯一的主要CTA。其他所有操作均为次要。
npx vigiles audit - Claude Code深度链接()仅为桌面端增强功能,绝不能作为主要路径——它在移动端、Claude Code网页版、未安装Claude Code的桌面端会静默失效。仅在能正常运行的环境中渲染该链接;绝不发布无功能的按钮。
claude-cli:// - 移动端如实展示。 无失效按钮。当桌面端专属操作无法在移动端执行时,需清晰说明并提供替代操作(即命令)。
- 每屏仅一个主要操作。 次要操作需低调呈现——采用文本链接或轻量化胶囊按钮,绝不能使用第二个醒目的全宽按钮与主要CTA竞争。
- 工具集中立。 表述为"Claude Code或Codex",而非以Claude Code为核心——这只是实现细节,并非核心卖点。无需过度解释内部机制。
- 低门槛+友好性。 快速浏览者应能在一屏内理解产品用途及试用方式,无需阅读大段文字。
Design bar — modern & minimal (the anti-crowding rules)
设计标准——现代极简(反拥挤规则)
Reference the feel of Linear / Vercel / Raycast: confident dark, generous space,
few words, one clear focal point per section. NOT a feature-stuffed template.
- Every element must earn its place. Remove anything that only restates another (a caption repeating the screenshot; a trust line said twice; a redundant subhead).
- Cut any label another element already IMPLIES. A "free & open source" badge is redundant when a GitHub/star link is present; an "AUDIT A SPECIFIC REPO" badge above a "Grade a specific repo" heading restates it. If the context already tells the reader, the label is noise.
- Every link/CTA is ACTIONABLE and specific. The reader must know exactly what happens on click. No vague or passive secondary links ("Have Claude Code?…"). If a secondary path isn't worth a clear, concrete action, cut it (or move it to the nav, where a persistent link beats a limp fold link).
- One focal point per section. The eye should land on one thing first.
- Whitespace + typography over boxes. Don't stack 3+ full-width bordered boxes; that repetition is what reads as crowded. Prefer type hierarchy and space to borders. But whitespace must be intentional — no near-empty viewport voids either.
- Reassurance once, in one line. Trust copy ("nothing uploaded") appears once, compact — never a 3-line paragraph, never repeated per section.
- Cohesion. The hero (badge + headline + subhead + visual) must read as ONE idea, each part adding new information. If the subhead just says what the screenshot already shows, cut or sharpen it.
- Restraint in color/emphasis. One accent, semantic band colors that always mean something (grade bands). Bold one phrase per point, not every clause. No decorative emoji confetti.
- Consistent spacing scale. Don't hand-tune one-off margins that fight the rhythm.
参考Linear / Vercel / Raycast的风格:自信的深色模式、充足留白、精简文字、每个板块有一个明确的视觉焦点。绝非堆砌功能的模板。
- 每个元素都需证明自身存在的价值。 删除任何重复表述的内容(比如截图下方重复截图内容的说明文字、重复出现的信任声明、冗余的副标题)。
- 删除已有元素可暗示的标签。 当存在GitHub/星标链接时,"免费开源"徽章是冗余的;在"为指定仓库评分"标题上方添加"AUDIT A SPECIFIC REPO"徽章属于重复表述。如果上下文已能让读者理解,该标签就是冗余信息。
- 每个链接/CTA都需具备可操作性且明确。 读者必须清楚点击后会发生什么。禁止模糊或被动的次要链接(如"使用Claude Code?…")。如果次要路径不值得设置清晰、具体的操作,就删掉它(或移至导航栏,持久化链接比折叠式弱链接效果更好)。
- 每个板块一个视觉焦点。 用户的视线应首先落在一个核心元素上。
- 用留白+排版替代框体。 不要堆叠3个以上全宽带边框的框体;这种重复会让页面显得拥挤。优先通过排版层级和留白区分内容,而非边框。但留白需有目的性——避免出现近乎空白的视窗区域。
- 信任声明仅出现一次,且精简为一行。 信任文案(如"无内容上传")需紧凑呈现,仅出现一次——绝不能写成3行段落,也不要在每个板块重复。
- 内容连贯性。 首屏区块(徽章+标题+副标题+视觉元素)需表达一个完整的核心观点,每个部分都要补充新信息。如果副标题只是重复截图内容,就删掉或优化它。
- 色彩/强调需克制。 仅使用一种主强调色,语义化色块需始终代表特定含义(如评分等级色块)。每个要点仅加粗一个短语,而非每个从句。禁止使用装饰性表情符号。
- 间距规范一致。 不要手动调整孤立的边距,破坏整体布局节奏。
Anti-patterns (things that have gone wrong here)
反模式(曾出现过的错误)
- Stacking input + big button + 3-line trust + divider + command + caption + another button on one fold. (Fix: keep ~3 elements, cut the rest.)
- A caption under the product shot restating the product shot.
- Adding a notice/button per problem instead of rethinking the flow.
- Two competing primary CTAs (deeplink + command) with no hierarchy.
- CC-first framing ("runs in your own Claude Code…") as the headline reassurance.
- 在一屏内堆叠输入框+大按钮+3行信任声明+分隔线+命令+说明文字+另一个按钮。(修复方案:保留约3个元素,删除其余内容。)
- 产品截图下方的说明文字重复截图内容。
- 针对每个问题新增提示/按钮,而非重新梳理流程。
- 两个相互竞争的主要CTA(深度链接+命令),无层级区分。
- 以Claude Code为核心的表述(如"在你的Claude Code中运行…")作为首屏信任声明。
Hosted / in-browser demo (direction, when built)
托管/浏览器内演示(构建方向)
- Deterministic-only compute. Run the model-free rings (Truthfulness / Structure / Safety-via-lethal-trifecta / description-overlap). Skip the model-gated trigger-rate — that's the part that needs an LLM + quota.
- Prefer in-browser (runs in the visitor's browser → reinforces "nothing leaves
your machine"; zero backend/cost). Fallback: cached serverless keyed by
+ per-IP rate-limit.
repo@commit-SHA - A real progress bar / streaming state while the audit runs — fetching files, running each ring — never a dead spinner. It should feel like work is happening.
- TEASE the locked LLM part, don't just label it "limited." Render the
trigger-rate / model-gated section in the result as blurred / locked (a
gated-content pattern) with an "unlock by running it locally" affordance — make
people curious to run for the full report (trigger-rate, linter cross-ref, private repos). The deterministic rings show real numbers; the model-gated section is present but veiled.
npx vigiles audit - Reuse the real report components (render from the JSON) — never a screenshot. This is why the report view must live in a SHARED package (see below).
AuditReport
- 仅支持确定性计算。 运行无需模型的检测项(真实性/结构/三重安全机制/描述重叠)。跳过依赖模型的触发率检测——该部分需要LLM及配额支持。
- 优先浏览器内运行(在访客浏览器中运行→强化"无内容离开你的设备"的信任点;零后端/成本)。备选方案:基于缓存的无服务器方案+按IP限流。
repo@commit-SHA - 审计运行时展示真实进度条/流式状态——包括文件获取、每个检测项的运行过程——绝不使用静态加载动画。需让用户感受到正在处理任务。
- 对受LLM限制的部分进行引导,而非仅标注"受限"。 在结果中,将触发率/依赖模型的部分渲染为模糊/锁定状态( gated-content模式),并添加"通过本地运行解锁"的提示——激发用户的好奇心,促使他们执行获取完整报告(触发率、代码检查器交叉引用、私有仓库支持)。确定性检测项展示真实数据;依赖模型的部分需呈现但处于隐藏状态。
npx vigiles audit - 复用真实报告组件(基于JSON渲染)——绝不使用截图。这就是为什么报告视图必须放在共享包中(见下文)。
AuditReport
Repo structure for shared UI (no hacks)
共享UI的仓库结构(禁止临时方案)
The audit report () and the landing site () — and the future demo —
share the same shadcn primitives, the schema, and the report view.
These must be genuinely shared via a workspace package, not duplicated or
cross-imported by relative path. Target: npm workspaces + a dir (e.g. a
shared primitives package and a package that
renders an ), consumed by , , and the demo. The root
published package + its CI gates (api-surface, coverage) must stay green —
workspaces coexist, they don't replace the root package. Do this as its own reviewed
change, not bolted onto a design pass.
report/site/AuditReportpackages/@vigiles/ui@vigiles/report-viewAuditReportreport/site/vigiles审计报告()、着陆页()及未来的演示页面需共享相同的shadcn基础组件、 schema及报告视图。这些内容必须通过工作区包真正共享,而非复制或通过相对路径跨目录导入。目标:使用npm workspaces + 目录(例如,共享的基础组件包和渲染的包),供、及演示页面使用。根目录下发布的包及其CI校验(API接口、覆盖率)需保持正常——工作区与根包共存,而非替代根包。需将此作为独立的审核变更,而非附加在设计优化中。
report/site/AuditReportpackages/@vigiles/uiAuditReport@vigiles/report-viewreport/site/vigilesProcess — before shipping any site change
发布着陆页变更前的流程
- Hold it against this bar. Ask "what can I remove?" before "what can I add?"
- Screenshot desktop AND mobile (390px) and actually look — most crowding shows
up on the phone fold. (Global playwright + ; or the
vite previewskill.)screenshot - Run a Fable blind pass for anything nontrivial — fresh skeptical eyes catch crowding and incoherence the author is blind to. Act on the flagged cuts — a Fable P0/P1 "delete this" is not optional; don't just note it and move on.
- Verify build + Prettier clean; deterministic deploy via on push to main.
pages.yml
- 对照本规范校验。 在思考"可以添加什么"前,先问"可以删除什么"。
- 截取桌面端和移动端(390px)截图并仔细检查——大多数拥挤问题会在手机首屏显现。(可使用全局playwright + ;或
vite preview工具。)screenshot - 对于重要变更,执行Fable盲审——新鲜的第三方视角能发现作者自身忽略的拥挤和不连贯问题。必须根据盲审建议删除内容——Fable标记为P0/P1的"删除此项"要求是强制性的,不能仅记录而不执行。
- 验证构建+Prettier格式化是否正常;通过在推送到main分支时执行确定性部署。
pages.yml