一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
154 lines
7.5 KiB
HTML
154 lines
7.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Filebase — sync that respects your bandwidth</title>
|
|
<style>
|
|
:root {
|
|
--bg: #fafaf9; --fg: #1c1b1a; --muted: #6b6964; --border: #e6e4e0;
|
|
--accent: #c96442; --surface: #ffffff;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body { margin: 0; background: var(--bg); color: var(--fg); font: 16px/1.55 -apple-system, system-ui, sans-serif; }
|
|
.wrap { max-width: 1080px; margin: 0 auto; padding: 0 32px; }
|
|
header { display: flex; justify-content: space-between; align-items: center; padding: 20px 0; }
|
|
.logo { font-weight: 600; font-size: 17px; letter-spacing: -0.01em; }
|
|
nav a { color: var(--fg); text-decoration: none; margin-left: 22px; font-size: 14px; }
|
|
button { font: inherit; cursor: pointer; padding: 11px 20px; border-radius: 8px; font-weight: 500; }
|
|
.btn-primary { background: var(--accent); color: white; border: 1px solid var(--accent); }
|
|
.btn-secondary { background: transparent; color: var(--fg); border: 1px solid var(--border); }
|
|
.btn-link { background: transparent; border: none; color: var(--accent); padding: 11px 0; font-weight: 500; cursor: pointer; }
|
|
section { padding: 80px 0; }
|
|
.hero { padding: 100px 0; }
|
|
.hero h1 { font-size: clamp(44px, 6vw, 76px); line-height: 1.05; letter-spacing: -0.02em; max-width: 17ch; margin: 0 0 22px; }
|
|
.hero p { font-size: 19px; color: var(--muted); max-width: 56ch; margin: 0 0 36px; }
|
|
.hero .cta { display: flex; gap: 12px; }
|
|
.features { background: var(--surface); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
|
|
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
|
|
@media (max-width: 800px) { .feature-grid { grid-template-columns: 1fr; } }
|
|
.feature h3 { font-size: 18px; margin: 0 0 8px; letter-spacing: -0.01em; }
|
|
.feature .num { font-family: ui-monospace, monospace; color: var(--accent); font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px; display: block; }
|
|
.feature p { margin: 0; color: var(--muted); font-size: 14.5px; }
|
|
.proof { text-align: center; }
|
|
.proof h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); margin: 0 0 28px; }
|
|
.logos { display: flex; justify-content: center; gap: 56px; flex-wrap: wrap; opacity: 0.6; font-weight: 600; font-size: 17px; letter-spacing: -0.01em; }
|
|
.pricing h2 { text-align: center; font-size: 36px; margin: 0 0 12px; letter-spacing: -0.02em; }
|
|
.pricing .lede { text-align: center; color: var(--muted); margin: 0 0 48px; }
|
|
.tiers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
|
@media (max-width: 800px) { .tiers { grid-template-columns: 1fr; } }
|
|
.tier { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 32px; }
|
|
.tier.featured { border-color: var(--accent); position: relative; }
|
|
.tier.featured::before { content: 'Recommended'; position: absolute; top: -12px; left: 24px; background: var(--accent); color: white; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 500; }
|
|
.tier h3 { margin: 0 0 8px; font-size: 18px; }
|
|
.tier .price { font-size: 40px; letter-spacing: -0.02em; margin: 6px 0 16px; }
|
|
.tier .price small { font-size: 14px; color: var(--muted); font-weight: 400; }
|
|
.tier ul { list-style: none; padding: 0; margin: 16px 0 24px; color: var(--muted); font-size: 14px; }
|
|
.tier ul li { padding: 5px 0; border-top: 1px solid var(--border); }
|
|
.tier ul li:first-child { border-top: none; }
|
|
.closing { background: var(--accent); color: white; text-align: center; }
|
|
.closing h2 { font-size: 38px; letter-spacing: -0.02em; margin: 0 0 14px; }
|
|
.closing p { opacity: 0.85; margin: 0 0 28px; }
|
|
.closing button { background: white; color: var(--accent); border: none; }
|
|
footer { padding: 28px 0; color: var(--muted); font-size: 13px; text-align: center; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="wrap">
|
|
<header data-od-id="topnav">
|
|
<span class="logo">◰ Filebase</span>
|
|
<nav>
|
|
<a href="#features">Features</a>
|
|
<a href="#pricing">Pricing</a>
|
|
<a href="#docs">Docs</a>
|
|
<button class="btn-secondary" style="margin-left: 12px;">Sign in</button>
|
|
</nav>
|
|
</header>
|
|
<section class="hero" data-od-id="hero">
|
|
<h1>File sync that doesn't eat your bandwidth.</h1>
|
|
<p>Block-level deltas, end-to-end encryption, and a pricing model that doesn't punish you for working with video.</p>
|
|
<div class="cta">
|
|
<button class="btn-primary">Get Filebase</button>
|
|
<button class="btn-link">Read the whitepaper →</button>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<section class="features" id="features" data-od-id="features">
|
|
<div class="wrap feature-grid">
|
|
<div class="feature">
|
|
<span class="num">01</span>
|
|
<h3>Block-level diffs</h3>
|
|
<p>Edit a 4 GB Final Cut project? We sync the 200 KB you changed. Not the whole file.</p>
|
|
</div>
|
|
<div class="feature">
|
|
<span class="num">02</span>
|
|
<h3>End-to-end encrypted</h3>
|
|
<p>Files are encrypted on your laptop before they leave. We can't read them. Neither can law enforcement, by design.</p>
|
|
</div>
|
|
<div class="feature">
|
|
<span class="num">03</span>
|
|
<h3>Honest pricing</h3>
|
|
<p>One flat rate for unlimited storage. No "fair use" clauses. No throttling at 90%.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="proof wrap" data-od-id="proof">
|
|
<h2>Used by teams at</h2>
|
|
<div class="logos"><span>Anthropic</span><span>Stripe</span><span>Linear</span><span>Vercel</span><span>Cursor</span></div>
|
|
</section>
|
|
|
|
<section class="pricing wrap" id="pricing" data-od-id="pricing">
|
|
<h2>Pricing</h2>
|
|
<p class="lede">Pick a tier. Switch or cancel any time.</p>
|
|
<div class="tiers">
|
|
<div class="tier">
|
|
<h3>Solo</h3>
|
|
<div class="price">$8<small>/mo</small></div>
|
|
<p style="color: var(--muted); margin: 0;">For individuals.</p>
|
|
<ul>
|
|
<li>1 TB storage</li>
|
|
<li>Block-level sync</li>
|
|
<li>Email support</li>
|
|
</ul>
|
|
<button class="btn-secondary" style="width: 100%;">Choose Solo</button>
|
|
</div>
|
|
<div class="tier featured">
|
|
<h3>Team</h3>
|
|
<div class="price">$14<small>/seat/mo</small></div>
|
|
<p style="color: var(--muted); margin: 0;">For teams up to 50.</p>
|
|
<ul>
|
|
<li>5 TB pooled storage</li>
|
|
<li>Shared folders & roles</li>
|
|
<li>Priority support</li>
|
|
<li>Audit log</li>
|
|
</ul>
|
|
<button class="btn-primary" style="width: 100%;">Choose Team</button>
|
|
</div>
|
|
<div class="tier">
|
|
<h3>Enterprise</h3>
|
|
<div class="price">Custom</div>
|
|
<p style="color: var(--muted); margin: 0;">SSO, on-prem keys, SLA.</p>
|
|
<ul>
|
|
<li>Unlimited storage</li>
|
|
<li>SAML / SCIM</li>
|
|
<li>Dedicated support</li>
|
|
</ul>
|
|
<button class="btn-secondary" style="width: 100%;">Talk to sales</button>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="closing" data-od-id="closing">
|
|
<div class="wrap">
|
|
<h2>Sync less, ship more.</h2>
|
|
<p>14-day free trial. No credit card needed.</p>
|
|
<button>Get Filebase</button>
|
|
</div>
|
|
</section>
|
|
|
|
<footer class="wrap" data-od-id="footer">© Filebase · Privacy · Terms · Status</footer>
|
|
</body>
|
|
</html>
|