commit 9540ca92f5a03381a9187aa424fc889120497c71 Author: matamune Date: Tue May 12 21:58:42 2026 +0000 Add jojo development flow skill diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..69a1834 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +*.tmp diff --git a/README.md b/README.md new file mode 100644 index 0000000..75d07f3 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# peezy-tech skills + +Shared Codex skills for peezy-tech development workflows. + +This repo is intentionally small: one catalog, one folder per skill, and enough +metadata for Codex to load each skill without extra setup. + +## Available Skills + +| Skill | Use When | +| --- | --- | +| [`jojo-development-flow`](./skills/jojo-development-flow/SKILL.md) | Working on `peezy-tech/codex-flows` remotes, jojo.build operations, Codeberg mirroring, jojo Actions, branch tracking, release validation, or npm trusted publishing. | + +## Layout + +```text +skills/ + / + SKILL.md + agents/ + references/ + scripts/ + assets/ +``` + +Only `SKILL.md` is required. The optional directories are used when a skill +needs agent metadata, supporting reference material, executable helpers, or +assets. + +## Checks + +List the available skills: + +```bash +./scripts/list-skills.sh +``` diff --git a/scripts/list-skills.sh b/scripts/list-skills.sh new file mode 100755 index 0000000..82ab8ec --- /dev/null +++ b/scripts/list-skills.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +cd "$repo" +find skills -name SKILL.md -not -path '*/node_modules/*' | sort diff --git a/skills/jojo-development-flow/SKILL.md b/skills/jojo-development-flow/SKILL.md new file mode 100644 index 0000000..05dc740 --- /dev/null +++ b/skills/jojo-development-flow/SKILL.md @@ -0,0 +1,111 @@ +--- +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. diff --git a/skills/jojo-development-flow/agents/openai.yaml b/skills/jojo-development-flow/agents/openai.yaml new file mode 100644 index 0000000..ba3004c --- /dev/null +++ b/skills/jojo-development-flow/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Jojo Development Flow" + short_description: "jojo.build development, Codeberg mirroring, and GitHub publishing flow." + default_prompt: "Use the jojo-first development flow for remotes, branch tracking, jojo.build operations, signed commits, Codeberg mirroring, GitHub publishing, and npm trusted publishing." diff --git a/skills/jojo-development-flow/references/development-flow.md b/skills/jojo-development-flow/references/development-flow.md new file mode 100644 index 0000000..d6c8bcd --- /dev/null +++ b/skills/jojo-development-flow/references/development-flow.md @@ -0,0 +1,158 @@ +# Jojo Development Flow Reference + +## Remotes + +```bash +git remote -v +# origin git@jojo.build:peezy-tech/codex-flows.git +# codeberg git@codeberg.org:peezy-tech/codex-flows.git +# github https://github.com/peezy-tech/codex-flows.git +``` + +`main` should track jojo: + +```bash +git branch --set-upstream-to=origin/main main +git status --short --branch +# ## main...origin/main +``` + +Use jojo for day-to-day work: + +```bash +git pull +git push +``` + +Confirm Codeberg mirror state: + +```bash +git ls-remote origin refs/heads/main +git ls-remote codeberg refs/heads/main +``` + +Use GitHub only to run npm trusted publishing: + +```bash +git push github main +gh workflow run publish-codex-flows.yml --repo peezy-tech/codex-flows --ref main -f confirm_package='@peezy.tech/codex-flows' +``` + +## Accounts + +- `peezy`: human site admin, 2FA enabled. +- `matamune`: active development worker account for this host, not a site admin. +- `peezy-tech`: organization containing `codex-flows`. +- `load-game`: organization containing both `peezy` and `matamune`. + +## Keys + +Host SSH public key: + +```text +~/.config/forgejo-keys/matamune-jojo-build-ssh.pub +``` + +Host GPG public key: + +```text +~/.config/forgejo-keys/matamune-jojo-build-gpg.asc +``` + +Codeberg SSH key still exists for direct mirror diagnostics: + +```text +~/.ssh/id_ed25519_codeberg.pub +``` + +Git signing is expected: + +```bash +git config --global commit.gpgsign true +git config --global user.signingkey E3B0D5FB2E5CF11FAFB2EA113BB8E7D3B968A324 +``` + +## Jojo CLI And API Checks + +`fj` can talk to `jojo.build` when authenticated: + +```bash +fj --host jojo.build auth list +fj --host jojo.build repo view peezy-tech/codex-flows +``` + +For admin automation, prefer a scoped `peezy` token. The old bootstrap `matamune` setup token should not be treated as the long-term admin credential. + +## Branch Protection + +`main` is protected: + +- Owners can push and merge. +- Required status context: `ci / check (push)`. +- Protection applies to admins. +- Signed commits are not required yet. + +## Jojo Actions + +Workflow file: + +```text +.forgejo/workflows/ci.yml +``` + +The runner label used by CI is `ubuntu-latest`, backed by `node:22-bookworm`. The workflow installs Bun before running checks because the release dry-run needs `npm`. + +Current CI gate: + +```bash +bun install --frozen-lockfile +bun run check:types +bun run test +bun run --filter @peezy.tech/codex-flows release:check +``` + +## Jojo CLI + +```bash +fj --host jojo.build auth add-key matamune +fj --host jojo.build auth use-ssh true +``` + +Create the organization repo when missing: + +```bash +fj --host jojo.build org repo create peezy-tech codex-flows \ + -d "Public monorepo for @peezy.tech/codex-flows" \ + -S true +``` + +Verify the repository: + +```bash +fj --host jojo.build repo view peezy-tech/codex-flows +git ls-remote origin HEAD refs/heads/main +``` + +## Package Release Gate + +```bash +bun run --filter @peezy.tech/codex-flows release:check +bun run check:types +bun run test +git diff --check +``` + +Verify npm after GitHub Actions publishing: + +```bash +npm dist-tag ls @peezy.tech/codex-flows +npm view @peezy.tech/codex-flows version repository --json +``` + +## Current State + +- Canonical repo: `https://jojo.build/peezy-tech/codex-flows` +- Codeberg mirror: `https://codeberg.org/peezy-tech/codex-flows` +- GitHub publishing repo: `https://github.com/peezy-tech/codex-flows` +- `origin/main` and `codeberg/main` should stay aligned automatically through the jojo push mirror. +- `github/main` may lag until a release needs npm trusted publishing.