--- name: jojo-development-flow description: Use when working in this repository on development flow, remotes, jojo.build operations, Codeberg mirroring, branch tracking, commit signing, jojo Actions, npm trusted publishing, release validation, or publishing @peezy.tech/codex-flows. --- # Jojo Development Flow ## Overview Use `jojo.build` as the canonical development home for `peezy-tech/codex-flows`. Codeberg is a push mirror. GitHub is only for npm trusted publishing. ## Current Structure - Canonical repo: `https://jojo.build/peezy-tech/codex-flows` - Git remote `origin`: `git@jojo.build:peezy-tech/codex-flows.git` - Git remote `codeberg`: `git@codeberg.org:peezy-tech/codex-flows.git` - Git remote `github`: `https://github.com/peezy-tech/codex-flows.git` - `main` tracks `origin/main`. - `jojo.build` push-mirrors `main` to Codeberg. - GitHub is pushed manually only when npm trusted publishing needs the release workflow. ## Accounts And Access - Human/admin account: `peezy` - Host development worker account: `matamune` - Organization: `peezy-tech` - Both users are in the `peezy-tech` Owners team. - `matamune` is active but is not a site admin. - `peezy` is the site admin account and has 2FA enabled. ## Core Rules - Push normal development to `origin`. - Do not treat Codeberg as canonical; use it only as a mirror and recovery remote. - Do not treat GitHub as a development remote. - Push to GitHub only when the release workflow must publish to npm. - Do not add npm tokens to the repo or GitHub secrets. GitHub publishes through trusted publishing. - Use package name `@peezy.tech/codex-flows`, not `@peezy-tech/codex-flows`. - Before release work, verify `origin/main` and `codeberg/main` are aligned. - Keep commits signed when possible, but signed commits are not currently required by branch protection. ## Setup Checks When asked to set up or verify the repo, check: ```bash git remote -v git status --short --branch ssh -T git@jojo.build git ls-remote origin refs/heads/main git ls-remote codeberg refs/heads/main gpg --list-secret-keys --keyid-format=long ``` Expected local key files: ```text ~/.ssh/id_ed25519_codeberg.pub ~/.config/forgejo-keys/matamune-jojo-build-ssh.pub ~/.config/forgejo-keys/matamune-jojo-build-gpg.asc ``` ## Jojo CI `main` is protected on `jojo.build`. - Owners can push and merge. - Required status context: `ci / check (push)` - The workflow lives at `.forgejo/workflows/ci.yml`. - The runner is `jojo-build-runner-01`. The CI workflow runs: ```bash bun install --frozen-lockfile bun run check:types bun run test bun run --filter @peezy.tech/codex-flows release:check ``` ## Release Workflow Normal development: ```bash git pull git push ``` Before release, run: ```bash bun run --filter @peezy.tech/codex-flows release:check bun run check:types bun run test git diff --check ``` Then: 1. Bump `packages/codex-client/package.json`. 2. Commit. 3. Push to jojo: `git push`. 4. Confirm Codeberg mirror has received the commit. 5. Push to GitHub: `git push github main`. 6. Run GitHub workflow `.github/workflows/publish-codex-flows.yml` with `confirm_package=@peezy.tech/codex-flows`. 7. Verify `npm dist-tag ls @peezy.tech/codex-flows`. ## References - Read `references/development-flow.md` for exact setup and command details.