16 KiB
REA website writing and design guide
A good website is like a good paper: easy to follow, clear and concise, with a clean, refined presentation.
— N0zoM1z0
For REA, that means a concrete question, a figure that explains the process, evidence the reader can inspect, and a useful next step. A clean, refined appearance comes from precise wording, readable figures, consistent typography and deliberate spacing.
Use this guide for new pages and revisions. Create the common page structure
with python3 scripts/website.py new-page, then reuse the relevant components
from an existing page, public/assets/styles.css and public/assets/main.js.
Keep shared regions in sync with templates/. Contribution, preview and
publication commands are in README.md.
What a reader should understand
A reader scanning for five seconds should see the subject and the result. After ten seconds, the main figure should explain the sequence. After fifteen seconds, the prompt or first example should show how to start.
These are reading goals, not a requirement to fit every investigation above the fold. Keep the main path short and let readers open the supporting details.
Write the task directly
Name the software, behavior or action in headings. Give the opening paragraph one job: explain what the page covers. Use concrete verbs such as install, trace, read, compare and calculate.
| General wording | More useful wording |
|---|---|
| Start with a question. | Set up REA. |
| Follow a feature across the app. | Trace an Electron CSV export. |
| Following a copy through Notion. | How Notion copies text and HTML. |
| A position becomes a sound. | Calculate left/right sound panning. |
| Follow the investigation. | REA case studies. |
| Reviewed boundary / source owner / target extent | The helper / its surrounding code / the code section being checked |
Questions also work when they name a behavior: “Where is the CSV created?” and “How does a copied block keep its structure?” give the reader something specific to look for.
Explain necessary terms where they first matter. An IPC channel can be described as a named message between Electron processes. Keep exact API names, addresses and JSON paths in the code or result they identify.
Give each paragraph new information. A diagram can summarize a sequence, while the code below explains individual steps. Repeating that REA supplies instructions, callers and constants in several surrounding paragraphs adds no new step. Explain that role once, then show the results.
Use captions for useful context: which values are illustrative, where an excerpt comes from, or what a check covers. Scope a claim positively and precisely: “The compiled function matches 63 bytes” is more useful than a broad claim followed by several qualifications.
Search titles and sharing previews follow this standard too. Name the software or task so someone can understand the page before opening it. Keep titles and descriptions accurate and concise; use technical terms when they identify the actual topic. Preserve a clear visible headline rather than repeating search terms throughout the page. See README.md for canonical URLs, automatic sitemap generation and sharing assets.
Build a page around one question
Introductions and first exercises
Explain reverse engineering with a familiar behavior. Pair a short, authentic code excerpt with readable logic and a figure that explains the result without requiring the reader to understand either language. Show a simple agent prompt and the specific facts REA supplies to answer it.
Put compact setup at the beginning of the homepage: a copyable installation prompt and the ordinary setup command. Then explain what reverse engineering means and what it lets someone do, before the worked examples. Begin each example with its goal and the reason to inspect that program. Name the actual evidence REA returned and what the agent did with it. Give long pages a short table of contents with concrete section names. Preserve the reading width: the homepage uses the side gutter when it has room, and a collapsible sticky menu on smaller screens. Highlight the current section, keep fragment links usable without JavaScript, and leave room above the destination for the sticky control. Offer experienced readers a direct route from setup to the analysis guides. Keep full case-study previews on the Showcases page, linked from the opening actions. Use short labels, selective bold text and the shared blue highlight to make those facts visible when scanning. Keep source, interpretation and new code attributed to their respective roles. On mobile, the demo can precede its supporting code once its purpose is clear. Show how the reader's task changes using the same question on both sides of a manual/agent comparison. Let returned evidence make REA's contribution visible. When showing manual analysis, use authentic instructions and specific analyst questions: what a command ID means, which call performs arithmetic, or which operand enters a calculation. Numbered selections can connect the code to illustrative thought bubbles. Keep the agent side brief: one visible prompt, a concrete answer, and the evidence used to reach it.
When a small reconstruction makes the finding tangible, let readers change an input or setting and try the result. Connect inspection, recovered logic, reconstruction and the new experiment. Keep the recovered rule distinct from new teaching mechanics, and check it against the inspected program.
Offer a supplied target for the next step. A first exercise should take the reader through setup, a question, an answer with source references, one prediction they can check, and a follow-up. Introduce specialized prerequisites when the chosen target requires them.
Guides
- Name the task and introduce a small example.
- Show a short flow of the relevant files, calls or observations.
- Provide a copyable agent prompt and its prerequisites.
- Explain the important code or returned fields.
- Let the reader try the example, with a command or one ZIP download.
- State the expected result and where to find it.
- Offer a specific follow-up question or another relevant guide.
A command should work after the steps immediately before it. Use npx for a
first CLI query when global installation is optional. Browser examples should
open the hosted fixture by default; a local URL needs a server-start step. Keep
target paths, debugging endpoints and other required inputs explicit.
Case studies
- Introduce the project and the particular feature being examined.
- Show a figure that explains the investigation or behavior.
- Give a short example prompt.
- Pair important REA queries with selected returned evidence.
- Connect that evidence to readable source or an explanation.
- Explain how the result was checked.
- Link the reconstruction repository and supporting sources.
Show REA's useful contribution through a concrete finding: a missing stack argument, a caller, bytes behind a constant, or source ranges in a packaged bundle. Explain what the agent does with that finding. Credit source interpretation, reconstruction and external checks to the work that performed them.
Keep a second investigation optional. Notion's clipboard path is the main
story; Markdown tables and SQLite are additional examples. Native <details>
keeps them available without interrupting the first question.
Keep the explanation on the website. Repository links provide source, reproduction instructions and further evidence. Use specific links for those purposes, and immutable commit links for checkpoint-dependent facts.
Method articles in the Blog
Use longer articles to explain methods, choices and ideas through project experience. Open with a clear takeaway. A personal essay can follow how the author's understanding changed, using concrete episodes to develop a deeper argument. Keep the reasoning easy to follow; a Blog article does not need to become a tutorial. Figures are optional. Add one when it explains something useful rather than repeating a familiar opening flow.
Choose cases that teach different decisions. For example, TH08 illustrates continuing existing work, TH095 illustrates reusing an established method in a new project, and TH04 illustrates adapting checks to an older platform. Close each case with the lesson the reader can apply. Put dates and progress figures beside the milestone they measure, with pinned evidence links in supporting details. Calendar time, source presence, exact comparison, build success and runtime checks each describe a different result.
Make an analogy concrete. The industrial analogy can connect agent execution, quality checks, durable knowledge and a change in how work is organized. Explain what changes and support the argument with experience. Keep necessary terms plain and leave engine inventories in references. A method guide can finish with a first task; an essay can finish with the implications of its argument.
When discussing another project's approach, preserve its credit and contribution
history. Attribute quotations, link their context and distinguish the author's
interpretation from the other project's stated position. Describe the technical
or contribution-model disagreement without assigning motives to its authors.
Working outlines should be visibly labeled and marked noindex until they
become finished articles.
Make figures explain a relationship
Each figure should answer a question that a reader can name. Choose the visual form that fits it:
| Relationship | Existing example | Useful form |
|---|---|---|
| Analysis and verification steps | DX-Ball sound pan | Flow with separate verification branches |
| Code across process boundaries | Electron CSV export and Notion clipboard | HTML flow with APIs and channel names |
| A mathematical transformation | TH04's fixed and aimed rings | SVG drawn from the angle formula |
| Original instructions and readable source | DX-Ball and TH04 | Selectable HTML code with matching step highlights |
| A request caused by an action | Notes browser export | Flow, observed result table and script excerpt |
| Recovered behavior and a new experiment | Dinosaur speed reconstruction | Inspected code, playable demo and original-result check |
| Time blocks and changing output | Aegis login-code reconstruction | Adjustable clock, block number and code beside recovered methods |
Use SVG or semantic HTML for diagrams with exact text, numbers and arrows. Generated illustrations can help explore a layout, but the published labels, relationships and values need to be checked. figures.md records the existing assets and original layout references.
Keep labels short, align related nodes, and give arrows an explicit direction. Use color to identify the relevant operation or connection. Add a legend when the visual encoding needs one. Avoid making the diagram repeat the entire page.
State illustrative inputs in the caption. TH04's diagram uses a count of 16 and a player direction of 40; its dots are calculated from those values. Give an image useful alternative text, and keep source code as selectable HTML.
On small screens, HTML flows stack. A wide SVG can have its own horizontal scroll and an “Open figure” link. A diagram should remain readable at its intended display size; scaling small labels down is not a mobile layout.
Use the existing visual system
The shared stylesheet defines the site. Its core colors are:
| Token | Value | Use |
|---|---|---|
--page |
#ffffff |
Page background |
--ink |
#20252b |
Main text |
--muted |
#5b6570 |
Secondary text |
--line |
#e0e5e9 |
Section and component boundaries |
--soft |
#f4f6f8 |
Code and supporting surfaces |
--accent |
#294f82 |
Links and meaningful highlights |
Use the system sans-serif stack for prose and the shared monospace stack for code. The current container is at most 1080px wide, with article text limited to 760px. Reuse the existing heading sizes, line heights, section spacing and component classes.
Whitespace separates ideas. Thin rules identify sections. Headings establish hierarchy. The blue accent identifies something useful. Keep these elements consistent rather than adding a new treatment for each page. Decorative gradients, large shadows and scroll effects do not help explain the examples.
Agent terminals contain short, copyable prompts. Use the existing continuous cursor animation and reduced-motion behavior. Label an example prompt as an example; a real recorded result belongs in an evidence block. Copy buttons should copy only the intended text, without the prompt symbol or cursor.
Include the shared ↑ Top link on reading pages, with id="top" on the body.
Keep its 44px minimum touch height, safe-area spacing and keyboard focus return.
Use the shared script for visibility and reduced-motion behavior.
Use minmax(0, 1fr) for grid tracks that contain long commands or nested panels.
Allow code blocks to scroll within their own area. Check expanded details as
well as the default page. Document-level horizontal scrolling usually means a
component needs a width constraint; hiding it can conceal content.
Keep evidence accurate and public
Preserve target identity, source locations, relevant versions and the scope of checks. Keep observations, interpretation and unknowns distinguishable in plain language. Put lengthy provenance in an evidence document or collapsed details.
Label simplified source and selected instruction excerpts. When compiler checks apply to the maintained project source, say so; a readable summary is a separate presentation of the calculation. Historical checks and a fresh REA inspection retain their own dates and attribution.
Use generic example data and display paths. Machine paths, personal account identifiers, credentials, local configuration, full vendor bundles and raw captures belong outside the public website. If a path is shortened in a displayed query, identify that in its caption and keep the original capture separately.
Review and publish
Before merging a change:
- Read the default page in order. Check that every section advances the task.
- Open details and confirm that sources and extra examples remain usable.
- Verify commands, prerequisites, expected results and downloadable files.
- Keep links and asset paths working at both
/and/rea/. - Check desktop, intermediate and mobile widths, including 320px.
- Check copying, downloads, code-step selection, keyboard access and reduced motion. Core content and native details should work without JavaScript.
- Confirm that figures and code excerpts agree with the supporting evidence.
- Run site preparation, verification and formatting checks.
Match verification to the change. Copy edits need page and interaction checks. New analysis or behavior claims need the real evidence that supports them; a mock or a page-loading check cannot establish those claims.
Follow the PR review and CI process, then publish using the existing manual
website-pages.yml workflow on main. Its default both target publishes the
same verified artifact to Cloudflare and GitHub Pages and checks both published
commit markers. Use pages only for an explicitly requested publication while
Cloudflare credentials are being configured.
Ordinary commits should not publish the site. After deployment, check both live
pages and confirm they match the reviewed version. The legacy VitePress build
remains separate from the Pages publisher.