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:
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:
or includes "bun-types" inside a types array, replace it with:
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.
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:
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/devtoolsfor this issue.Do not publish workflow templates from
@ankhorage/devtoolsin this issue.For now, each included repo should keep its own physical
.github/workflows/ci.ymland.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/contractsankhorage/surfaceankhorage/zoraankhorage/templatesankhorage/devtoolsankhorage/orchestratorankhorage/orchestrator-module-expo-localizationankhorage/orchestrator-module-expo-google-fontsankhorage/paradoxankhorage/supabase-authIf 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:
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:
<repo>.Required Bun baseline
Every included repo should use Bun
1.3.13or higher.packageManageris missing, add it as at least:packageManageralready uses Bun1.3.13or higher, leave it as-is.packageManageruses a Bun version below1.3.13, update it tobun@1.3.13.Required Bun type package baseline
Every included repo should use the official Bun types package:
Rules:
@types/bun, notbun-types.@types/bunis missing, add it todevDependencies.@types/bunis below^1.3.13, update it to at least^1.3.13.@types/bunis already^1.3.13or higher, leave it as-is.bun-typesfromdevDependenciesif present.Required TypeScript config baseline
If any
tsconfig*.jsonfile contains:or includes
"bun-types"inside atypesarray, replace it with:Do not otherwise rewrite unrelated TypeScript config.
Implementation plan for Codex
Phase 1: Audit repos
For every included repo, inspect:
.github/workflows/package.jsontsconfig*.jsonRecord:
ci.ymlandrelease.ymlexistpackageManager@types/bunbun-typestypes: ["bun-types"]formatformat:checkversion-packageshomepagebugs.urlrepository.typerepository.urlPhase 2: Define canonical workflows
Use one canonical
ci.ymland one canonicalrelease.ymlacross all included repos.The canonical workflows should:
1.3.13bun install --frozen-lockfile.changeset/config.jsonexistsPhase 3: Apply repo updates
For every included repo:
.github/workflows/ci.ymland.github/workflows/release.ymlformat,format:check, andversion-packagesscripts existhomepage,bugs, andrepositoryfollow the ZORA-style metadata shape with repo-specific URLspackageManageronly when missing or below Bun1.3.13@types/bunonly when missing or below^1.3.13bun-typesif presenttypes: ["bun-types"]withtypes: ["bun"]package.jsonchangesDo 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 testAlso run where available:
Acceptance criteria
ci.ymlandrelease.yml.format,format:check, andversion-packagesscripts.homepage,bugs, andrepositorymetadata with the correct repo-specific URLs.1.3.13or higher.@types/bunat^1.3.13or higher.bun-types.types: ["bun-types"].Non-goals
@ankhorage/devtools.@ankhorage/devtoolsnpm package.ankhorage/ankhorage4.ankhorage/react-native-reanimated-dnd-web.