Repository Public MIT
1# Contributing23Thank you for looking. This project is maintained by one person with heavy use of Claude Code; clear, small changes are the easiest to accept.45## Two ways to contribute67**Publish an artifact.** Accounts and namespaces are created by the operator in V1. Write to contact@spboucher.ai with the namespace you would like and a line about what you plan to publish. Then follow `/docs/publishing`.89**Change the registry itself.** Read `CLAUDE.md`, `docs/IMPLEMENTATION_PLAN.md` and the ADRs first. Open an issue or email before a large change.1011## Local setup1213Requirements: Node 20 or newer (developed on 26), pnpm 11, PostgreSQL 17 running locally with the `citext` and `pg_trgm` extensions available.1415```bash16pnpm install17createdb skills_dev18cp .env.example .env && chmod 600 .env # fill DATABASE_URL, TOKEN_PEPPER (openssl rand -hex 32), DATA_DIR19pnpm db:migrate20pnpm admin:bootstrap --email you@example.org --name "You" --namespace yourns21pnpm dev22```2324## Checks before you propose a change2526```bash27pnpm typecheck28pnpm test # unit + integration; needs a local PostgreSQL where you can create databases29pnpm test:e2e # when you touched the UI30```3132Integration tests create a database named `skills_test_<random>` and a temporary data directory per test file and drop both afterwards. Set `TEST_ADMIN_DATABASE_URL` if your PostgreSQL is not on the default socket.3334## Rules3536- No feature without a test when it touches authentication, authorization, upload handling, release state or audit. Look at `tests/integration` for the style: tests go through `handleApi` like a real client.37- Never weaken or skip a security test to get green.38- Never edit an applied migration; add a new numbered file.39- Shared limits, scopes and enumerations belong in `packages/registry-core/src/constants.ts`.40- Authorization is enforced in services, not in UI code.41- No secrets in code, tests, fixtures, docs or commit messages. Test fixtures that need token-shaped strings build them at runtime.42- No fabricated numbers, ratings or testimonials anywhere in the product or docs.43- Update `docs/IMPLEMENTATION_PLAN.md` when a status changes, and add an ADR when you make a decision someone will later ask "why" about.44- Keep documentation honest about what is implemented, tested and planned.4546## Licence4748By contributing you agree that your contribution is licensed under the MIT licence of this repository. Artifacts you publish to the registry keep the licence you declare for them.49