> ## Documentation Index
> Fetch the complete documentation index at: https://craftspace.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing

> House rules, and what to expect.

Issues and pull requests are welcome. There is no response time promise, and only the latest release is
supported.

Security reports do not go in issues. Use GitHub's private vulnerability reporting, or email
[hello@craftspace.app](mailto:hello@craftspace.app).

## House rules

* **Read `CODING_STYLE.md` before writing TypeScript.** It is the whole rulebook: module shape, file
  order, error handling, named parameters, how config is read.
* **No comments in executable code.** Intent goes in names, structure, types and tests, and
  change-specific context goes in the commit message.
* **Fix every instance, not just the reported one.** If the same bug shape exists in four callers, the fix
  belongs where all four cross.
* **A fix should leave the system smaller.** Deleting beats adding a flag.
* **No abstraction for one caller.** A plain object or a direct call beats a registry, a factory, or an
  interface with a single implementation.

## Adding a server module

Follow `.agents/skills/craftspace-module/SKILL.md`: shared zod schemas, a `FastifyPluginAsyncZod`
controller with its request schemas at the end of the file, registered in `app.ts`. The simplest existing
example is `packages/app/server/src/knowledge/spaces/space-controller.ts`.

## Explaining a change

Reasoning goes in the pull request description, not in a comment above the code. If a change turned on
something surprising, say so there: it is what the next person reads when they wonder why.
