---
{
  "n": 16,
  "title": "The project's coding style, kept from the removed feature",
  "abstract": "",
  "refs": [],
  "seen": [
    "agent"
  ],
  "data": {
    "status": "final"
  },
  "created": 1789950210.2295969,
  "updated": 1789950227.173918,
  "deleted": 0.0,
  "completed": 1789950227.173915,
  "outcome": "final",
  "type": "doc"
}
---
Six rules the coding style feature used to publish as skills. The feature was removed by to-do 391; these are the rules themselves, so removing the machinery does not lose the content. Each line is the rule's subject and its decision, as the feature stated them.

## Where imports go
Imports go at the top of the file; inside a function only to break an import cycle or keep a hook process from loading what it never uses.

## Helper functions in the viewer
A top-level helper in the viewer's JavaScript is a function declaration, not a const arrow function.

## Building strings in the viewer
The viewer's JavaScript builds strings from pieces with template literals, not + concatenation.

## What a module says about itself at the top
A module has no module docstring; the file opens on its imports.

## Naming an unpacked outcome
Unpack an (ok, message) outcome as ok; in a test file whose pass counter is the global ok, unpack it as took.

## A module's say() helper
Declare say(message: str, /, **values) with the message name positional-only.

## What was lost, and what was not
The feature published each rule as a skill under .claude/skills/style-<subject>, and those files were git-ignored. Removing the feature deleted them, so the longer bodies — the reasoning and the worked examples — are gone and cannot be recovered from the repository. What survives is each rule's subject and its decision, taken from the managed block the feature kept in CLAUDE.md, which is in the repository's history. No style rows had ever been written into this record: the .journal/style folder was empty, so the skills on disk came from a record that predates the 2.0 rebuild.
