Skip to content
internal/spellcorpus
On this page

The corpus-wide spelling run: the engine selfdoc check uses, applied to every sibling project, which is how the shared accept list gets populated at all.

#internal/spellcorpus

#internal/spellcorpus

Package spellcorpus is the corpus-wide spelling run: the same engine, every sibling project.

selfdoc check spell-checks the project it is run in. This runs the identical engine over every selfdoc project that lives beside it, which is how the shared accept list gets populated: one sweep surfaces the technical vocabulary the whole fleet uses, and the terms that are genuine get added once, for everyone.

Strictly read-only over the projects it visits. Directives are not resolved -- resolution runs a project's extractors over its source, and a survey has no business doing that in someone else's repository -- so what is scanned is the raw Markdown body of every docs template and every post. Posts are read straight off disk rather than through post discovery, which means drafts are surveyed too: a draft's prose is still prose, and a term it introduces belongs on the accept list before the draft ships. A project whose config cannot be loaded is reported and skipped, never fatal.

#ProjectSpellReport

Go go
type ProjectSpellReport struct

ProjectSpellReport is what the sweep found in one project.

#WordCount

Go go
type WordCount struct

WordCount is one unknown word with how many times it occurred.

#CorpusDocument

Go go
type CorpusDocument struct

CorpusDocument is one sweep's whole finding.

It is the one computation behind both renderings: [CorpusDocument.Payload] is the machine document the command's JSON envelope carries, and [RenderCorpusText] is the human report, so the two can never disagree. The Python held this as the payload dictionary itself and rendered out of it; here the typed value is the shared origin and the dictionary is derived from it.

#ScanProject

Go go
func ScanProject(

ScanProject spell-checks one project's docs tree and its posts.

vocab is the word list to accept against and accepted is the accept list. The report's Error is set instead of results when the project could not be read.

#RunSpellCorpus

Go go
func RunSpellCorpus(root string, handle *effects.Handle) (CorpusDocument, int, error)

RunSpellCorpus sweeps every selfdoc project under root and returns what it found, with the exit code the command terminates on.

root is the directory whose immediate subdirectories are searched for a selfdoc.json. The exit code is 1 when any unknown word was found -- a misspelling is an error, and the accept list is the sanctioned answer for a genuine term -- and 0 on a clean sweep. A project that could not be read is reported but does not by itself fail the sweep.

#RenderCorpusText

Go go
func RenderCorpusText(document CorpusDocument, detail bool) string

RenderCorpusText renders a sweep as the human report.

The summary table plus, when detail, each project's unknown words with a first location and any suggestion.

#ProjectSpellReport.UniqueWords

Go go
func (r ProjectSpellReport) UniqueWords() []WordCount

UniqueWords returns the report's unknown words with their occurrence counts, commonest first and then alphabetically by lowercased spelling.

#CorpusDocument.Payload

Go go
func (d CorpusDocument) Payload() map[string]any

Payload renders the document as the machine payload the sweep carries.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search