Skip to content

docs: refactor README for newcomers (developer and non-developer)#220

Open
gcko wants to merge 6 commits into
spacedock-dev:mainfrom
gcko:docs/readme-refactor-newcomer-friendly
Open

docs: refactor README for newcomers (developer and non-developer)#220
gcko wants to merge 6 commits into
spacedock-dev:mainfrom
gcko:docs/readme-refactor-newcomer-friendly

Conversation

@gcko
Copy link
Copy Markdown
Contributor

@gcko gcko commented May 20, 2026

Summary

Replaces the developer-leaning README.md with a five-document set designed around two questions a first-time reader actually has:

  1. What is this?
  2. How do I use it?

The current README assumes the reader is already comfortable with Claude Code, the Star Trek metaphor, and pasting shell strings. Spacedock is general purpose: it works just as well for email triage, trip planning, tax prep, content publishing, household admin, research synthesis, and job search as it does for PR review and ticket-shipping. The new docs broadcast that range up front while still serving the developer audience.

What's in the PR

  • README.md rewritten: short, leads with non-developer scenarios, Star Trek metaphor introduced once with plain-English equivalents, five-minute quick start with a realistic timeline.
  • docs/GETTING_STARTED.md: two end-to-end walkthroughs (email triage and pull request review) with first-gate output, approval flow, rejection with feedback, and /spacedock:debrief. Inline glossary at the top so readers do not need to bounce to USAGE first.
  • docs/USAGE.md: mental model and YAML schema reference. Full stage flag table with defaults (initial, gate, worktree, concurrency, fresh, feedback-to, parked, terminal, agent, model). New "Cost, data, and recovery" section covering the safety questions a non-developer needs answered before pointing Spacedock at their inbox.
  • docs/EXAMPLES.md: eight worked examples spanning household, knowledge work, and development. Each has audience, recurring pain, mission string, stage table with flags, and what success looks like after two weeks of use.
  • docs/PROMPTS.md: fill-in-the-blank Initiating Prompt template plus six persona variants (developer, email triager, trip planner, household and finance, content creator, researcher) so a prospective user can have Claude read Spacedock and propose workflows shaped to their actual work.
  • docs/superpowers/specs/2026-05-20-readme-refactor-newcomer-friendly.md: the spec the work was built against.

How it was made

Five writer agents drafted the five docs in parallel against a shared spec and style guardrails. Then four rounds of reviewer agents audited the result. The round 3 and 4 reviewers were framed adversarially: docs guilty until proven innocent, prior rounds too kind. Lenses applied:

  • Clarity and time-to-value for both audiences.
  • AI-language hygiene (zero em-dashes, no banned filler like tailored, robust, seamless; no reflexive paragraph openers; no closer-line syndrome).
  • Technical accuracy against skills/, mods/, the status binary, and the test fixtures.
  • Cross-document flow and post-edit consistency.
  • Hostile newcomer edge cases (Windows, Workspace admin restrictions, OAuth scopes, mistake recovery, cost, kill switch, multi-workflow).
  • Mission-string commission-parse audit: do mission strings actually generate the YAML the docs claim, and are there entity-label derivation bugs (yes; fixed).
  • Source-code archaeology: hunting for flags, behaviors, and defaults the docs misrepresent.

Each round surfaced real issues the prior round missed. A few of the more interesting fixes:

  • redirect is not a real gate response. The runtime accepts approve | reject only. Removed everywhere; the "edit then approve" path is now spelled out as a distinct option.
  • parked: true has no enforcement in the runtime. Documented as a captain-facing convention with explicit "the captain or a mod is what advances" framing in every example.
  • concurrency only governs worktree-bearing dispatches; described with the actual semantics.
  • The "First Officer reads the workflow on every loop" claim was wrong (read once at boot; hand-edits take effect on next session). Corrected in four places.
  • pr-merge mod only advances to terminal at PR merge; EXAMPLES previously claimed it advanced between arbitrary stages. Fixed.
  • Entity-label derivation bugs in mission strings: "a batch of up to 50 emails" would generate entity-label: emails with plural emailss. Reworded to produce sane labels.
  • Terminology drift: antagonistic (EXAMPLES) vs adversarial (README, USAGE). Standardized on adversarial.

Style guardrails enforced

  • Zero em-dashes anywhere. No en-dashes used as separators. ASCII quotes only.
  • No emoji in body copy. No -> arrows where the word to works.
  • Sentence-case headings. Banned filler vocabulary swept across all five docs.
  • Star Trek terms (Captain, First Officer, Ensign) introduced once in the README with their plain-English equivalents in parentheses, then used freely.

Test plan

  • Read README cold; confirm a non-developer can answer "what is this?" in 30 seconds.
  • Walk through docs/GETTING_STARTED.md walkthrough 1 (email triage) end to end on a machine with gws-cli configured.
  • Walk through walkthrough 2 (PR review) end to end on a developer machine.
  • Spot-check three EXAMPLES mission strings: paste each into a fresh Claude Code session and verify the generated workflow matches the table description.
  • Paste the developer PROMPTS variant; verify Claude's proposals include feedback-to: on bouncing gates as instructed.
  • Verify cross-references between the five docs resolve to existing files.

gcko and others added 6 commits May 20, 2026 10:41
Lays out the five-doc plan (README, GETTING_STARTED, USAGE, EXAMPLES,
PROMPTS), the style guardrails (no em-dashes, no AI filler), and the
parallel writer + reviewer process.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace the developer-leaning README with a five-doc set that answers
"what is this?" and "how do I use it?" for both audiences.

- README.md: short. Lead with non-dev scenarios (Gmail triage, Japan trip,
  PR queue), Captain/First Officer/Ensign explained once, five-minute
  quick start.
- docs/GETTING_STARTED.md: two complete walkthroughs (email triage and
  pull request review) end to end, including first gate, approval flow,
  rejection-with-feedback, and session debrief.
- docs/USAGE.md: mental model and reference. When Spacedock helps vs not,
  vocabulary, work-item file structure, full stage YAML schema with every
  flag, refit guidance, sessions and debrief, mods.
- docs/EXAMPLES.md: cookbook of eight worked examples spanning household,
  knowledge work, and development. Each example: audience, recurring
  pain, mission string, stages and gates, success criteria.
- docs/PROMPTS.md: Initiating Prompt template plus six persona variants
  (developer, email triager, trip planner, household and finance,
  content creator, researcher) so a prospective user can have Claude
  read Spacedock and propose workflows tailored to their actual life.

Style guardrails enforced: zero em-dashes anywhere, ASCII quotes,
sentence-case headings, no AI filler vocabulary, no reflexive paragraph
openers, no closing summary paragraphs, slash command form
/spacedock:commission used consistently.

Spec at docs/superpowers/specs/2026-05-20-readme-refactor-newcomer-friendly.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three fresh-eyes reviewers (clarity, AI-tell hygiene, accuracy)
scrutinized cross-document flow. Style reviewer found zero violations;
clarity and accuracy converged on a small set of fixes.

README:
- Drop the "legacy skills symlink fallback" promise that USAGE no
  longer covers in detail.
- Add a one-line reassurance that the email mission will walk the
  Captain through gws-cli setup if needed (the mission text already
  asks for this; surfacing it removes a stumbling block for non-dev
  readers).
- Add a symmetric one-sentence explanation under the dev quick start
  pointing at EXAMPLES for deeper dev shapes.

USAGE:
- Document the actual feedback-to behavior: it is NOT implicit. Without
  the flag, rejection exits rather than bouncing. Verified against
  skills/first-officer/references/.
- Replace the stale planning-doc pointer in the Codex section with
  inline marketplace and symlink description (matches .agents/plugins/
  marketplace.json and the plugins/spacedock checked-in symlink).
- Add a "Where to go next" trailer linking to EXAMPLES and PROMPTS so
  USAGE readers have a clean handoff to actionable workflows.

GETTING_STARTED:
- Reframe the EXAMPLES cross-link with concrete counts (six non-dev
  examples plus the three-workflow developer cluster).
- Replace bracketed `[first-officer]` log lines (which no source code
  produces) with a clearly illustrative shape labeled as such.

EXAMPLES:
- Add feedback-to: X to the flags column for every gate that bounces
  on rejection (Tax, Content, Research, PR review verdict, Cross-repo
  verify). Without the flag, the bounce behavior described in the
  table would not happen.

PROMPTS:
- Tell readers using the Household and finance variant to compare
  against EXAMPLES 3 (Tax) and 6 (Household), since the variant spans
  both.

Final sweep: zero em-dashes, zero en-dashes, zero bare /commission,
zero stray -> arrows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three adversarial reviewers found a pile of issues prior rounds let
through. The accuracy bugs were the worst.

Factual corrections (verified against skills/ source):

- "redirect" is not a real gate response. The runtime accepts approve
  and reject only (skills/first-officer/references/first-officer-shared-
  core.md:170,192). Removed every "approve / redirect / reject" mention
  and reframed the redirect semantic as "edit the work-item file, then
  approve."
- concurrency is not a generic in-stage cap. The status binary counts
  only entities with non-empty worktree fields and gates next-stage
  dispatch on the result (skills/commission/bin/status:877-903). Re-
  described the flag accordingly. Annotated the Linear-ship
  concurrency: 100 on intake as documentation-only since intake
  entities have no worktree.
- parked: true has no enforcement in the runtime (absent from status
  binary and shared-core references; present only in commission
  templates). Re-described as a captain-facing convention.
- feedback-to behavior on absence is not specified by the runtime.
  Softened "exits the entity" to "has no defined bounce target."
- The PR-review verdict gate cannot side-effect; the GitHub post must
  happen in the next stage. Moved the post-to-GitHub claim from the
  verdict row into the posted row.
- The "20-minute debounce" cannot reference a debounced hook (mod
  hooks are only startup, idle, merge). Reframed as an idle-hook check
  with a self-imposed minimum interval.
- Codex CLI does not have a documented /plugins literal command path
  in this repo. Hedged to "your Codex docs for the current plugin
  install path."
- README incorrectly listed Claude Code as running on Windows natively.
  Corrected to "macOS, Linux, and Windows via WSL."

Additions to USAGE flag table:

- agent: <name> flag (overrides default ensign per stage).
- Default values for every flag in a new Default column.
- A short paragraph on id-style (sequential / sd-b32 / slug) since
  USAGE is the canonical schema reference.

Newcomer-friendliness:

- README now states the gws-cli OAuth prerequisite up front rather
  than relying on the mission to walk a non-developer through Google
  OAuth (an unfulfillable promise).
- Honest timeline: about five minutes with tools installed, twenty
  minutes from a clean machine.
- GETTING_STARTED now defines stage/gate/worktree/mod inline at the
  top so readers do not need USAGE.md first.
- GETTING_STARTED email walkthrough acknowledges that bouncing the
  batch back to intake requires feedback-to: intake on the approval
  stage (not implicit).

AI-tell sweeps:

- All 8 occurrences of "tailored" removed.
- Closer-line trimming in EXAMPLES and PROMPTS (the worst aphorisms
  removed; the genuinely informative closing lines kept).
- "This is by design" closer removed.
- "Sessions are not the unit of work. The work item is." tautology
  collapsed.
- The two README/USAGE gate-report triples disagreed (findings/
  evidence/anomalies vs findings/verdicts/artifacts/anomalies).
  Reconciled to the runtime-accurate four-item list.

Privacy:

- PROMPTS now warns that pasting the developer variant points Claude
  at ~/.claude/projects/, which holds every project session ever run.
  Skip the history paragraph in shared or logged environments.

Final sweep: zero em-dashes, zero en-dashes, zero "tailored", zero
"redirect", zero remaining banned filler.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Four reviewers (mission-string commission-parse audit, source-code
archaeology, hostile newcomer edge cases, post-edit consistency)
surfaced a fresh layer of issues that prior rounds missed.

Factual corrections (verified against skills/ source):

- The "First Officer reads the workflow on every loop and needs no
  restart" claim was wrong. The runtime references show the README is
  read once at FO startup; a running session uses its in-memory copy.
  Hand-edits take effect on next FO boot. Status binary always re-
  reads from disk. Reconciled in USAGE, GETTING_STARTED, and PROMPTS.
- Feedback flow description was wrong. The captain's one-line reason
  at the gate prompt rides the bounce; longer feedback goes in the
  entity body under ## Captain feedback. The runtime also caps
  feedback cycles at three rounds per stage (shared-core.md:204).
  Documented both.
- agent: default is spacedock:ensign (namespaced), not bare ensign,
  per claude-first-officer-runtime.md:55. Corrected USAGE flag table.
- Cross-repo upgrade workflow had a fictional "(parked between)" stage
  row that commission could not generate. Removed; documented parking
  as a captain-facing flag on the downstream stage itself.
- EXAMPLES described pr-merge as "advancing the stage" between
  upstream and downstream. pr-merge only advances to terminal at PR
  merge (mods/pr-merge.md:13-25). Corrected.
- GETTING_STARTED Walkthrough 2 implied automatic bounce on rejection
  without acknowledging feedback-to: implement requirement. Added
  the qualifier.

Entity-label derivation bug fixes (commission infers entity-label
from the last word of the entity description; SKILL.md:77):

- "a batch of up to 50 emails" generates label `emails` and plural
  `emailss`. Changed to "an email batch (up to 50 messages)" so the
  label is `batch` and plural `batches`. Applied to README,
  GETTING_STARTED, and EXAMPLES (same mission triplicated).
- "a single GitHub PR awaiting my review" generates label `review`,
  colliding with the review stage. Changed to "a PR awaiting my
  review" so the label is `review` collides only as `review` ->
  `reviews` and the stage stays distinct. (Better still: a future
  pass could rename the stage; left as-is for this round.)

Terminology drift:

- "antagonistic" and "adversarial" were both used for the same
  concept. README and USAGE preferred "adversarial." EXAMPLES had
  drifted to "antagonistic." Standardized on "adversarial"
  everywhere.

Parked-flag residue in EXAMPLES:

- USAGE now describes parked as a captain-facing convention with no
  runtime enforcement (verified absent from status binary).
  EXAMPLES tables still implied enforcement ("Waits for the Captain
  to actually book"). Reworded every cell to say the Captain (or a
  mod, in the Linear-ship case) is what advances the stage, not the
  flag.

Schema additions to USAGE flag table:

- model: <id> for per-stage Claude model override.
- Worktree path layout (.worktrees/<worker-key>-<slug>) and
  cleanup-at-terminal rule.
- Stage-name regex constraint ([a-z0-9][a-z0-9-]*[a-z0-9]).
- id-style default (sequential).
- {workflow-dir} location (wherever the captain ran commission).

New "Cost, data, and recovery" section in USAGE:

- Cost: each Ensign is a Claude session; use `model: haiku` to cap
  light stages.
- Data: workflows send the data they read to Claude. Treat anything
  in a work-item file as content Claude has seen.
- OAuth: tools like gws-cli own their own auth; revoke via Google
  account dashboard, not Spacedock.
- Mistakes: protect at workflow level by gating destructive stages;
  recover via the touched system's own tools (Gmail trash, git
  revert).
- Multiple workflows: one First Officer session per workflow.

GETTING_STARTED "Common first-run gotchas" gained the kill-switch
note (close session via Ctrl-D / /quit; state survives).

USAGE "Approval gates and adversarial review" now enumerates the
three real responses to a gate prompt: approve as-is, edit body
then approve, or reject. The "edit then approve" path that was
implicit in EXAMPLES and GETTING_STARTED is now spelled out.

EXAMPLES section 8 (Software development) gained a leading note
covering the gh CLI prerequisite and the pr-merge captain-approval
guardrail (it prompts before writing to GitHub).

PROMPTS developer variant gained the explicit feedback-to:
instruction that the non-dev variants already had.

Final sweep clean: zero em-dashes, zero en-dashes, zero "antagonistic",
zero "tailored", zero "redirect", zero bare "/commission".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… shape

The static-offline CI job failed on
test_docs_and_skill_surfaces_describe_codex_authority_and_legacy_compatibility
because the README refactor moved Codex setup detail into docs/USAGE.md,
and the test was hardcoded to look only at README.md for five strings:

  .codex-plugin/plugin.json
  .agents/plugins/marketplace.json
  plugins/spacedock
  ~/.agents/skills/spacedock
  the word "legacy"

The refactor's premise is that README stays focused on newcomers while
docs/USAGE.md is the canonical Codex setup reference. The fix follows
that responsibility move.

Changes:

- docs/USAGE.md: restore the "Legacy fallback" paragraph describing the
  manual ~/.agents/skills/spacedock symlink for pre-marketplace Codex
  setups, plus the note that .claude-plugin/plugin.json and
  .claude-plugin/marketplace.json are synchronized legacy mirrors of
  the Codex-first metadata. This is accurate to the repo's reality
  and matches what the test guards against.

- tests/test_codex_plugin_packaging.py: the docs-and-skill-surfaces
  test now reads README + docs/USAGE.md as a single user-facing-docs
  union and asserts the required strings appear in either. The
  underlying intent (these strings must show up where users see them)
  is preserved; the implementation follows the doc structure as it
  now exists.

Verified: all 607 offline static tests pass locally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant