Skip to content

chore: standardize CI, release, scripts, and package metadata across Ankhorage package repos #1

@artiphishle

Description

@artiphishle

Goal

Standardize GitHub workflow, Bun tooling, baseline package scripts, and public package metadata across releasable ankhorage/* package/tooling repositories that are part of the current Ankhorage package release set.

Each included repo should have exactly two GitHub workflow files:

.github/workflows/ci.yml
.github/workflows/release.yml

Those two files should be identical across all included repos.

Each included repo should also expose the same baseline package scripts for formatting and release versioning, plus consistent public package metadata.

Explicit scope update

Do not implement shared/reusable workflows in @ankhorage/devtools for this issue.

Do not publish workflow templates from @ankhorage/devtools in this issue.

For now, each included repo should keep its own physical .github/workflows/ci.yml and .github/workflows/release.yml, but the contents must be standardized and identical.

Excluded repos

The following repos are explicitly excluded and must not be changed in this issue:

  • ankhorage/ankhorage4 — not released yet.
  • ankhorage/react-native-reanimated-dnd-web — separate package lifecycle; ignore completely for this task.

Do not change workflows, package metadata, or Bun/type settings in excluded repos as part of this issue.

Included repos

Audit and update the releasable Ankhorage package/tooling repos, including:

  • ankhorage/contracts
  • ankhorage/surface
  • ankhorage/zora
  • ankhorage/templates
  • ankhorage/devtools
  • ankhorage/orchestrator
  • ankhorage/orchestrator-module-expo-localization
  • ankhorage/orchestrator-module-expo-google-fonts
  • ankhorage/paradox
  • ankhorage/supabase-auth

If another repo is not currently releasable or should be excluded, document the reason in the PR.

Required workflow state

Every included repo must have exactly these two workflow files:

.github/workflows/ci.yml
.github/workflows/release.yml

No additional workflow files should remain unless explicitly justified.

The workflow contents should be identical across included repos.

Required package script baseline

Every included repo must have these scripts in package.json:

{
  "scripts": {
    "format": "prettier --write .",
    "format:check": "prettier --check .",
    "version-packages": "changeset version"
  }
}

Preserve existing scripts and ordering where reasonable, but ensure these three are present and consistent.

Required public package metadata baseline

Every included repo must have public package metadata in the same shape as ZORA, with only the repository/package-specific names changed.

Required fields:

{
  "homepage": "https://github.com/ankhorage/<repo>#readme",
  "bugs": {
    "url": "https://github.com/ankhorage/<repo>/issues"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/ankhorage/<repo>.git"
  }
}

Rules:

  • Use the actual GitHub repository name for <repo>.
  • Do not invent different homepage, bugs, or repository shapes.
  • Preserve existing descriptions, keywords, license, exports, files, dependencies, and package-specific metadata unless they are clearly wrong.
  • ZORA is the reference shape for these metadata fields.

Required Bun baseline

Every included repo should use Bun 1.3.13 or higher.

  • If packageManager is missing, add it as at least:
"packageManager": "bun@1.3.13"
  • If packageManager already uses Bun 1.3.13 or higher, leave it as-is.
  • If packageManager uses a Bun version below 1.3.13, update it to bun@1.3.13.

Required Bun type package baseline

Every included repo should use the official Bun types package:

"@types/bun": "^1.3.13"

Rules:

  • Use @types/bun, not bun-types.
  • If @types/bun is missing, add it to devDependencies.
  • If @types/bun is below ^1.3.13, update it to at least ^1.3.13.
  • If @types/bun is already ^1.3.13 or higher, leave it as-is.
  • Remove bun-types from devDependencies if present.

Required TypeScript config baseline

If any tsconfig*.json file contains:

"types": ["bun-types"]

or includes "bun-types" inside a types array, replace it with:

"types": ["bun"]

Do not otherwise rewrite unrelated TypeScript config.

Implementation plan for Codex

Phase 1: Audit repos

For every included repo, inspect:

  • .github/workflows/
  • package.json
  • tsconfig*.json

Record:

  • whether exactly ci.yml and release.yml exist
  • whether the workflow contents match the canonical baseline
  • packageManager
  • @types/bun
  • bun-types
  • types: ["bun-types"]
  • format
  • format:check
  • version-packages
  • homepage
  • bugs.url
  • repository.type
  • repository.url

Phase 2: Define canonical workflows

Use one canonical ci.yml and one canonical release.yml across all included repos.

The canonical workflows should:

  • use Bun 1.3.13
  • install with bun install --frozen-lockfile
  • run available scripts defensively where needed so the same workflow can be used in slightly different package repos
  • support Changesets release where .changeset/config.json exists
  • skip release cleanly where Changesets is absent

Phase 3: Apply repo updates

For every included repo:

  • ensure exactly .github/workflows/ci.yml and .github/workflows/release.yml
  • replace workflow contents with the canonical baseline
  • ensure format, format:check, and version-packages scripts exist
  • ensure homepage, bugs, and repository follow the ZORA-style metadata shape with repo-specific URLs
  • update packageManager only when missing or below Bun 1.3.13
  • add/update @types/bun only when missing or below ^1.3.13
  • remove bun-types if present
  • replace types: ["bun-types"] with types: ["bun"]
  • add a changeset when a published package's package.json changes

Do not touch excluded repos.

Phase 4: Verification

For each touched repo, run or rely on CI for:

bun run build
bun run lint:fix
bun run test

Also run where available:

bun run typecheck
bun run format:check
bun run knip

Acceptance criteria

  • Included repos have exactly two workflow files: ci.yml and release.yml.
  • Workflow contents are identical across included repos.
  • Included repos expose format, format:check, and version-packages scripts.
  • Included repos have ZORA-style homepage, bugs, and repository metadata with the correct repo-specific URLs.
  • Included repos use Bun 1.3.13 or higher.
  • Included repos use @types/bun at ^1.3.13 or higher.
  • No included repo uses bun-types.
  • No included repo has types: ["bun-types"].
  • Excluded repos are not changed.
  • PR descriptions document any excluded repo or exception.

Non-goals

  • Do not create reusable/shared workflows in @ankhorage/devtools.
  • Do not publish workflows from the @ankhorage/devtools npm package.
  • Do not migrate Changesets ownership in this issue.
  • Do not add Knip support in this issue.
  • Do not touch ankhorage/ankhorage4.
  • Do not touch ankhorage/react-native-reanimated-dnd-web.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions