Skip to content

Rework docs prose, onboarding, team guidance, and QA - #64

Open
alexanderaidun-a8c wants to merge 20 commits into
mainfrom
docs-polish
Open

alexanderaidun-a8c wants to merge 20 commits into
mainfrom
docs-polish

Conversation

@alexanderaidun-a8c

@alexanderaidun-a8c alexanderaidun-a8c commented Oct 6, 2026 •

Copy link
Copy Markdown

What changed

The current docs lead new readers through the CLI, bury team and browser paths, and repeat the same page-promise opening across much of the authored corpus. This change makes those paths visible and states key facts earlier.

  • Give new readers a route that fits them. The homepage and Quickstart now surface dashboard Drop before CLI installation: drag a folder, .zip, or index.html to publish without an install or account. The homepage also links directly to the glossary and Teams. Quickstart points collaborators to invitations and team access defaults. The domain setup steps separate CLI and dashboard instructions into tabs instead of mixing them in one paragraph.
  • Explain the product model at the point of need. A new 12-term glossary defines Space, version, live, Drop, grant, Team, Zero, and other recurring terms and is linked from the homepage and Reference navigation. Teams now explains shared ownership, member publishing and rollback, role boundaries, and default access before the management instructions. Database names the Zero setup prerequisite before teaching queries. Publishing guidance puts the prebuilt-versus-source-build choice, Git connection terminology, and repository requirement for WordPress data sources earlier. Troubleshooting starts with the Space Overview diagnostic path. The MCP server reference points readers who want one-click setup back to the Claude guides; anonymous claiming links to agent permissions.
  • Revise the authored corpus, not the generated contracts. Across 78 existing authored MDX pages in Docs, Agents, CLI, API, and Platforms, 65 opening paragraphs changed to state a useful fact or action instead of promising what a page will cover. The body pass split or trimmed long chained sentences across 62 pages, followed by checks for repeated openings and duplicated description/body text. Examples now lead with the rollback mechanism, cron configuration and publish timing, variable precedence, cache refresh, and what traffic stats count. The generated CLI, API, errors, and setup snapshot is unchanged.
  • Make the writing standard reviewable. STYLE_GUIDE.md explains the existing Vale rules, Spacefast voice, concision, and worked before/after examples. AGENTS.md now points contributors to it and lists the docs test gate.
  • Add QA and regression coverage. The branch adds reports for reader paths, command accuracy, agent answers, and writing, plus a repeatable writing-audit script. Twelve new checks read the built docs for the changed entry paths and first-page facts. test:docs runs these with the 14 existing corpus, LLM-index, and audit tests through Node's test runner; CI now runs that suite after the build. Four ambiguous or stale agent-eval questions were corrected.

Review notes

This PR changes authored docs, contributor guidance, tests, and CI, but no product implementation or generated-reference snapshot in this repository. Please review the entry paths, the new team and glossary explanations, and whether the revised leads preserve the detail readers need below them. Some leads move a key fact from a later paragraph to the top: anonymous key loss, default hostname permanence, MCP delegation, and Functions runtime detection are examples. Two pre-existing gaps remain for separate fixes: no verified support contact path, and inconsistent API-key preset guidance between the authored page and producer-owned CLI example.

Verification

With Bun 1.3.11 and Node 24, generated-snapshot and command-example verification, type check, strict link validation, production build, 26 docs tests, composed-site audit, route verification, public-safety, Vale, and git diff --check pass. The built site contains 1,531 pages; no generated snapshot was edited. The Website dependency declarations are unchanged.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

alexanderaidun-a8c and others added 17 commits October 5, 2026 12:12
Every page opened with a template sentence cramming 3-4 unrelated
outcomes into one long run-on (often 30+ words,
Spacefast.SentenceLength's existing suggestion-level threshold).
Rewrites each opener to one short sentence naming the single most
important outcome, dropping secondary ones already covered by the
page's own headings. Keeps the existing 2nd-person voice; no facts
changed, only trimmed and verified against each page's body.

Follows WooCommerce's (Automattic-owned) developer docs style guide:
be concise, lead with importance. Adds the rule to AGENTS.md so it
doesn't drift back.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Extends the opener-sentence fix to the rest of each page: wherever
body prose chained 3+ unrelated clauses into a run-on, split or
trimmed it, leading with the most important fact. 124 sentences
touched across 62 files. Left tables, code blocks, headings, and
frontmatter (other than description) untouched; verified by diffing
every file's fenced code blocks before/after (zero mismatches).

Sentence-length suggestion hits (Spacefast.SentenceLength) drop from
63 to 42 repo-wide; 18 of the remaining 42 are in content/(reference)/changelog/**,
which AGENTS.md exempts from style rules other than public-safety and
brand-casing. No facts, commands, or flags were added or changed —
only cut, reordered, or split existing text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Consolidates the voice rules, the concision principle (adapted from
WooCommerce's Automattic-owned docs style guide, keeping Spacefast's
own 2nd-person voice rather than WooCommerce's 3rd-person), and every
banned-word/wordiness/vocabulary rule from the 20 styles/Spacefast/*.yml
Vale files into one document a contributor can actually read.
AGENTS.md now points to it from both the Content and Prose style
sections instead of carrying the rules inline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Resurfaces the existing no-code Drop publishing path (dashboard
drag-and-drop, no CLI, no account) which was documented but buried
two clicks past a CLI-only Quickstart. Adds a homepage pointer and
card, a Quickstart pointer, and extends the existing CLI/Dashboard
Tabs convention to the domain-setup steps that already mixed both
in prose. Also adds a cross-link from the anonymous-claim agent
credential section to the Agents permissions page.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Every page's opening sentence used the same learning-objectives frame
('After this page you can/know X' / 'By the end of this page you have
Y') verbatim, including the 11 pages where it was buried mid-paragraph
rather than as the literal first words. That's a recognizable
AI-writing tell: generic scaffolding repeated identically 64 times
regardless of what's actually on the page, which no Vale rule catches
since it's a structural pattern, not a banned word.

Replaces each opener with a direct statement of the page's key fact,
deliberately varied in construction (you-voiced, mechanism-as-fact,
gerund openers, etc.) so the 64 sentences stop reading as one
template. Fixed two Vale regressions this pass introduced: added
'subcommand' to spelling-exceptions.txt (the plural was already
accepted) and reworded a 'just as easily' that tripped Condescension.
Documents the pattern in STYLE_GUIDE.md so it doesn't drift back.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Found while reviewing the full branch:
- content/api/authentication.mdx and content/cli/api-keys.mdx: the
  opener de-templating pass had reintroduced a 3-clause run-on in the
  first and a vestigial "here's what this page covers" clause in the
  second. Both tightened.
- STYLE_GUIDE.md: its own "be concise" worked examples still showed
  the old "After this page you know..." phrasing as the *good*
  example, directly contradicting the "don't template the opener"
  section two headings later. Updated both to the actual final
  wording. Also corrected four word counts that were eyeballed
  instead of machine-counted (31/33 words before, 27/18 after).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Caught during review: several of the rewritten openers paraphrased
the page's own frontmatter description so closely that the subtitle
and the first sentence of the body read as the same content twice —
e.g. frameworks.mdx's description and opener both opened "Publish
your [framework's/own build] output directly, or hand Spacefast the
source and let it..." Checked every page's description against its
opener with a word-overlap script; found 9 with real duplication
(vs. generic shared technical nouns, which are fine and expected).

Replaced each with a genuinely distinct hook already stated later on
the same page — the internal vocabulary quirk in git.mdx, the
no-connection-string-equivalent "no public/private flag" fact in
access.mdx, the delegation-token security detail in mcp-server.mdx,
and similar for the rest — rather than a reworded restatement of the
description. One page (platforms/index.mdx) has pre-existing overlap
that predates this branch; left alone as out of scope.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Commit 8 fixed 9 pages where the opener paraphrased the frontmatter
description. For several of them the replacement hook was a fact
pulled from later in the same page, and in 9 cases (some overlapping
with commit 8's list, some not: functions.mdx, mcp-server.mdx,
other-clients.mdx, access.mdx, anonymous-and-claim.mdx, frameworks.mdx,
git.mdx, wordpress-data-sources.mdx, urls.mdx) I used a sentence
already present there almost verbatim, moving the duplication instead
of removing it — e.g. frameworks.mdx's new opener was nearly identical
to an existing sentence in its own "Two paths" section.

Wrote a script comparing every opener against every later paragraph
on the same page (not just the description) across all 85 pages.
Found these 9 with real duplication (two more — database.mdx,
api/idempotency.mdx — share a short technical phrase but serve
different purposes: a forward reference and a bolded error-code
signpost, both legitimate patterns used elsewhere in the corpus; left
alone). Fixed each by trimming the now-redundant later sentence to
keep only what it adds beyond the opener, rather than rewriting the
opener a third time.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…liff

A subagent read the whole site in character as a non-technical,
eager-but-impatient new user and reported back critically. Checked
every one of its "duplicative" claims against the actual content and
house policy (brief, contextual, cross-linked restatement is this
repo's own documented convention, not a defect) — none held up, so no
changes there. Four other findings did hold up:

- New content/(reference)/glossary.mdx: Ability, Build, Capsule,
  Claim, Drop, Functions, Grant, Live, Space, Team, Version, Zero —
  every term that piles up starting on the homepage, defined once,
  cross-linked to its canonical deep page. Linked from the homepage
  (card + inline pointer) and added to the Reference nav.
- content/troubleshooting.mdx: added a plain-language "Not sure where
  to start?" note pointing at the dashboard's Overview page, before
  the error-code reference begins — it was the first page flagged as
  "not written for someone like me," on only the third page of the
  site.
- content/agents/mcp-server.mdx: added a note flagging that the page
  is technical reference, with a pointer back to the one-click
  Claude Desktop/Claude Code setup — the agent hit this as an
  unmarked jump from no-code to developer-only one click deep into
  the Agents tab.
- content/quickstart.mdx: enriched the one-line Drop pointer (what you
  can drag, no account needed) rather than creating a new page, which
  AGENTS.md's route policy ("one page per task, not one page per
  toggle") argues against — Drop is the dashboard interface to the
  same publish task Quickstart covers for the CLI, not a separate
  task.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
You asked directly: is the style guide actually being adhered to on
all pages? Checked rather than asserted. Vale (the mechanically
enforced half: banned words, brand casing, wordiness, link text)
passes repo-wide including everything added this session — confirmed
by rerunning verify:prose. The non-mechanical half (concision,
SentenceLength as a suggestion) hadn't been checked against the
content added in the last two commits.

Found 3 real hits: two glossary entries (Build, Zero) that chained
clauses past the point of earning them, tightened to match the
pattern used everywhere else. One was a genuine Vale tokenizer
artifact, not a writing problem: an em-dash immediately before bold
markup in the new troubleshooting.mdx note caused two short sentences
to be scored as one long one; rewrote the punctuation to avoid it
(confirmed by testing against pre-existing :::note[] blocks elsewhere
that don't trip the same false positive). Two remaining hits are
legitimate, stated exceptions: the Grant glossary entry's audience-type
enumeration needs the full list to be a complete definition, and one
opener sits at 31 words using the explicitly sanctioned em-dash
two-clause construction.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…tests

No test suite existed for the docs beyond evals.yaml (AI-assistant
factual retrieval). Added DOCS_TEST_SUITE.md with two independent
20-question suites:

- User click-path: can a real user find the answer, stated clearly,
  in 3 clicks or less from the homepage? Run live against the
  rendered site, not source files. 18/20 passed. Two failures:
  (1) the Database page assumes Zero is already running and never
  says how to turn it on — fixed with a note cross-linking to Zero
  setup; (2) there is no discoverable support/contact channel
  anywhere in the site ("contact support" appears 3 times, never with
  an actual email, form, or link) — flagged, not fixed, since
  inventing a plausible-looking contact method would be worse than
  the honest gap.

- Agent/command-accuracy: is the exact command or code shown actually
  correct, cross-checked against the frozen generated CLI/API
  reference? 18/20 passed. Found two real, pre-existing bugs neither
  of the prior five review passes caught (those were about prose
  quality, not command accuracy): the generated CLI reference's own
  `sf api-keys create` example uses `--preset full_access`, which
  isn't a valid preset per its own documented enum; and the
  hand-authored api-keys page omits a real preset (`partner_admin`)
  and states two contradictory defaults. The first is in frozen,
  producer-owned content and needs a monorepo-side fix, not a
  hand-edit here. The second is authored and editable, but needs a
  judgment call this suite can't make on its own — flagged for a
  deliberate follow-up.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@indent

indent Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Issues

All clear! No issues remaining. 🎉

10 issues already resolved
  • The opener says crawler traffic is "deliberately left out" of a Space's stats, but the page body says requests counts every HTTP request including bots and unique visitors ignore the crawler and status filters. Only views filters crawlers. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The opener claims every file in a published Space gets one of two Cache-Control headers. The same page lists private, no-store and no-store responses (protected Spaces, share-link URLs, non-GET requests, conditional routing rules) and verbatim _headers overrides. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The opener says that when two rules overlap the first match always wins, and lists response headers in the same sentence. The page says header blocks accumulate, _headers wins over a config rule for the same header, and rewrite/404 rules skip themselves when a real file exists. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The opener says there is "exactly one copy" of the key and no way to get it back if the publish folder is lost. The CLI also prints the key in the claim link, --show-secret prints it, and the API returns it at creation and on rotation. A user who kept the claim link is told the Space is unrecoverable. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The opener says "Every account gets Zero for free", but usage.mdx bills Zero CPU per active CPU-second and Zero invocations past 1 million, with fixed Free allowances. The old body only said Zero is on for every account, which is about availability, not price. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The opener says "Your client never actually holds a Spacefast API token", but the local stdio runtime on the same page uses your CLI login or a SPACEFAST_TOKEN bearer token. The Hosted section's remaining sentence ("That delegation token lives five minutes…") now refers back to a sentence several sections above. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The quickstart, homepage (content/index.mdx:46) and Teams page tell readers to invite members, but billing.mdx says Free and Go allow one editor and usage.mdx says the member quota blocks on Free with 409 team_member_quota_exceeded. The quickstart also says to "claim your Space to a team", which only applies to anonymous publishes. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The note says to declare kind: "zero" in sf.jsonc, but zero-runtime.mdx says the runtime block also needs a server entry. A reader who adds only kind gets a failed publish. (fixed by commit c5dcff2)
    Found by Indent Review Agent
  • The opener says API keys and agent credentials cannot manage invitations or membership, but the rest of the page (~lines 196-335) presents sf teams invitations add/resend/cancel and sf teams members rm as working commands with success output and no 403 caveat. content/(concepts)/teams.mdx:74 also still recommends the CLI invitation command. (fixed by commit b43b34c)
    Found by Indent Review Agent
  • The pagination eval in evals.yaml asks for the default and maximum page sizes on list endpoints and expects "default 20", but the rewritten /api/pagination says defaults vary by endpoint (storage objects default to 50) and some lists don't paginate. (fixed by commit b43b34c)
    Found by Indent Review Agent

CI Checks

All required CI checks passed on b43b34c.

Review agents

Select any unchecked box below to run or rerun that agent.

Passed (1)
  • Indent Review Agent · Both open findings are fixed in b43b34c; no dangling references or new issues found.
Full results

Indent Review Agent

  • Summary: Both open findings are fixed in b43b34c; no dangling references or new issues found.
  • Last ran on commit: b43b34cc
  • Latest result
    {
      "summary": "Both open findings are fixed in b43b34cc; no dangling references or new issues found.",
      "findings": []
    }

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 04a06fbc-9265-4a82-8d0d-7adbcd04208c
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread content/(serve)/stats.mdx Outdated
Comment thread content/(serve)/caching.mdx Outdated
Comment thread content/(serve)/routing.mdx Outdated
Comment thread content/(publish)/anonymous-and-claim.mdx Outdated
Comment thread content/(dynamic)/zero-runtime.mdx Outdated
Comment thread content/agents/mcp-server.mdx Outdated
Comment thread content/quickstart.mdx Outdated
Comment thread content/(dynamic)/database.mdx Outdated
Comment thread content/cli/teams.mdx Outdated

@f f left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@spacefast
spacefast Bot had a problem deploying to preview/docs-polish October 7, 2026 17:43 Failure

This branch had an error being deployed

1 failed deployment
preview/docs-polish — b43b34cc Deployed Oct 7, 2026 by spacefast[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants