Ctrl K
ComunidadGuías…

CLAUDE.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Project preferences for Claude Code

These override skill defaults for the Shrinkerr repo. Read on session start.

## File locations

- **Superpowers specs and plans** — write to `.superpowers/specs/` and
  `.superpowers/plans/`, not the skill default `docs/superpowers/`. The
  `docs/` directory is user-facing documentation only.

## Writing conventions

- **CHANGELOG entries are one-liners.** State what changed and (briefly)
  why. No implementation details, no "root cause" essays, no
  multi-bullet sub-sections. If a change has a genuine compat break or
  migration note, bold it and add one extra short sentence — not a
  paragraph. See existing v0.5.x entries for the target shape.

- **Commit messages** can be a bit longer than CHANGELOG entries (they
  document context for future archaeology) but still tight. Subject
  line under 70 chars; body, if any, explains why not what.

## Release workflow

Two channels (since v0.9.156, 2026-10-08). Users get an "update available"
notice only for real releases, every few weeks — not for every fix.

- **`develop`** — all day-to-day work. Every push runs the tests and builds
  `:develop` / `:develop-nvenc` images (VERSION shown as
  `X.Y.Z-dev.<run>+<sha>`). The maintainer's NUC runs `:develop-nvenc`.
- **`main`** — released code only. The stable `:latest` / `:nvenc` images move
  only when a `vX.Y.Z` tag is pushed (pushing `main` alone builds nothing).

`VERSION` on `develop` holds the **next** release number (e.g. `0.10.0`).

### Day-to-day (any fix or feature)

```bash
git checkout develop
# change + tests (backend pytest; `npm run build` for frontend changes)
# CHANGELOG.md: add a one-liner under `## [Unreleased]`
git add <touched-files>
git commit -m "..."
git push origin develop
```

Do **not** bump VERSION, tag, or push `main` for normal work.

### Release day (only when the user asks for a release)

```bash
git checkout develop
# CHANGELOG.md: rename `## [Unreleased]` → `## [X.Y.Z] — YYYY-MM-DD`
#   (VERSION already says X.Y.Z); group lines under
#   ### Added / Changed / Fixed / Security
git commit -am "release: vX.Y.Z"
git checkout main && git merge --ff-only develop
git tag vX.Y.Z
git push origin main && git push origin vX.Y.Z
git checkout develop
# bump VERSION to the next planned version, add a fresh `## [Unreleased]`
git commit -am "chore: start X.Y+1.0" && git push origin develop
```

GitHub Actions then builds the release images and creates the GitHub Release
(which triggers the in-app update notice).

### Hotfix (security or data-loss only, with the user's OK)

```bash
git checkout main
# fix + regression test
echo "X.Y.Z" > VERSION          # patch bump of the last release
# CHANGELOG.md: new `## [X.Y.Z] — date` section at the top
git add ... && git commit -m "fix: ..."
git tag vX.Y.Z && git push origin main && git push origin vX.Y.Z
git checkout develop && git merge main   # keep develop's VERSION; keep both changelog sections
git push origin develop
```

Optional pre-release for testers: tag `vX.Y.Z-rc.N` on `develop` → GitHub
pre-release + `:vX.Y.Z-rc.N[-nvenc]` images; stable users are not notified.