Branch: 336-feature/please-update-the-gh-context-stop-hook-t
Plan file: /home/ben/.claude/plans/moonlit-mixing-globe.md
Plan: Standardize Org-Level vs Repo-Level CI
Problem
The constellos org has CI naming chaos:
- Org rulesets (disabled) require:
CI / Lint, CI / Typecheck, CI / Unit Tests
- Org reusable workflow produces:
CI / Static Analysis / Lint (ESLint), CI / Static Analysis / Types (TypeScript), CI / Tests / Unit (Vitest), CI / Tests / E2E (Playwright) (when called from a CI job)
- constellos (main repo): inline CI producing
Lint (ESLint), Types (TypeScript), Unit Tests (Vitest), E2E Tests (Playwright)
- claude-code-plugins: inline CI producing
Lint, Typecheck, Test, AI Review
- nodes-md: already uses reusable workflow (thin caller) — producing
CI / Static Analysis / ... names
- github-agents: no CI at all
Nothing matches the ruleset requirements. The reusable workflow is well-designed but the rulesets were written assuming different names.
Current State
| Repo |
CI Source |
Check Names |
| constellos |
Inline ci.yml |
Lint (ESLint), Types (TypeScript), Unit Tests (Vitest), E2E Tests (Playwright) |
| nodes-md |
Reusable caller |
CI / Static Analysis / Lint (ESLint), CI / Static Analysis / Types (TypeScript), CI / Tests / Unit (Vitest), CI / Tests / E2E (Playwright) |
| claude-code-plugins |
Inline ci-pipeline.yml |
Lint, Typecheck, Test, AI Review |
| github-agents |
None |
— |
Recommendation
1. Standardize on the reusable workflow check names
The reusable workflow produces the most descriptive names. Update the org ruleset to match what it actually produces:
Basic CI ruleset required checks (update from current):
CI / Lint → CI / Static Analysis / Lint (ESLint)
CI / Typecheck → CI / Static Analysis / Types (TypeScript)
CI / Unit Tests → CI / Tests / Unit (Vitest)
2. Migrate repos to thin callers
Replace inline CI workflows with thin callers to the reusable workflow (like nodes-md already does):
Target ci.yml for all repos:
name: CI
on:
pull_request:
branches: ['**']
jobs:
CI:
uses: constellos/.github/.github/workflows/ci-pipeline-reusable.yml@main
with:
node_version: '22'
secrets: inherit
3. Remove the redundant AI Review job
The AI Review job in claude-code-plugins' ci-pipeline.yml is redundant — constellos-review.yml already runs AI reviews (requirements + code-quality agents). Remove it entirely.
4. Handle the constellos-review.yml workflow
This already exists as a separate workflow in both claude-code-plugins and constellos. It handles AI reviews independently from CI. Leave it as-is — it's a separate concern from CI pipeline.
Changes by Repo
constellos/.github (org)
- Update Basic CI ruleset required checks to match reusable workflow names
- Enable the Basic CI ruleset (set enforcement to
active)
constellos/constellos (main monorepo)
- Replace inline
ci.yml with thin reusable caller (identical to what nodes-md uses)
- Keep
constellos-review.yml as-is
constellos/claude-code-plugins
- Replace
ci-pipeline.yml with:
- Thin reusable CI caller (same as above)
- Keep the AI Review job as a separate local workflow or append it after the reusable call
- Keep
constellos-review.yml as-is
constellos/nodes-md
- No changes needed — already uses the reusable workflow
constellos/github-agents
- Add the thin CI caller workflow (it currently has no CI)
Implementation
Step 1: Update org ruleset check names
Update the "Basic CI" ruleset via GitHub org settings or API:
required_status_checks:
- context: "CI / Static Analysis / Lint (ESLint)"
- context: "CI / Static Analysis / Types (TypeScript)"
- context: "CI / Tests / Unit (Vitest)"
Step 2: Replace claude-code-plugins CI
Replace .github/workflows/ci-pipeline.yml with thin reusable caller (AI Review removed — already handled by constellos-review.yml):
name: CI
on:
pull_request:
branches: ['**']
permissions:
contents: read
jobs:
CI:
uses: constellos/.github/.github/workflows/ci-pipeline-reusable.yml@main
with:
node_version: '22'
secrets: inherit
Step 3: Replace constellos main CI
Replace .github/workflows/ci.yml with the same thin caller (without the AI Review job — handled by constellos-review.yml):
name: CI
on:
pull_request:
branches: ['**']
push:
branches: [main]
permissions:
contents: read
jobs:
CI:
uses: constellos/.github/.github/workflows/ci-pipeline-reusable.yml@main
with:
node_version: '22'
secrets: inherit
Step 4: Add CI to github-agents
Create .github/workflows/ci.yml with the thin caller.
Step 5: Enable org ruleset
Set Basic CI ruleset enforcement to active.
Verification
- Create test PRs in each repo and verify check names match
- Verify the org ruleset correctly gates merges
- Confirm AI Review still runs as a separate check where needed
- Verify nodes-md is unaffected (no changes)
Scope Question
This plan covers changes to 4 repos (org .github, constellos, claude-code-plugins, github-agents). Only the claude-code-plugins changes can be made from this worktree. The other repos need separate work.
For this session: Only modify claude-code-plugins/.github/workflows/ci-pipeline.yml.
Follow-up: Org ruleset update + other repo migrations (separate PRs/sessions).
Branch:
336-feature/please-update-the-gh-context-stop-hook-tPlan file:
/home/ben/.claude/plans/moonlit-mixing-globe.mdPlan: Standardize Org-Level vs Repo-Level CI
Problem
The constellos org has CI naming chaos:
CI / Lint,CI / Typecheck,CI / Unit TestsCI / Static Analysis / Lint (ESLint),CI / Static Analysis / Types (TypeScript),CI / Tests / Unit (Vitest),CI / Tests / E2E (Playwright)(when called from aCIjob)Lint (ESLint),Types (TypeScript),Unit Tests (Vitest),E2E Tests (Playwright)Lint,Typecheck,Test,AI ReviewCI / Static Analysis / ...namesNothing matches the ruleset requirements. The reusable workflow is well-designed but the rulesets were written assuming different names.
Current State
ci.ymlLint (ESLint),Types (TypeScript),Unit Tests (Vitest),E2E Tests (Playwright)CI / Static Analysis / Lint (ESLint),CI / Static Analysis / Types (TypeScript),CI / Tests / Unit (Vitest),CI / Tests / E2E (Playwright)ci-pipeline.ymlLint,Typecheck,Test,AI ReviewRecommendation
1. Standardize on the reusable workflow check names
The reusable workflow produces the most descriptive names. Update the org ruleset to match what it actually produces:
Basic CI ruleset required checks (update from current):
2. Migrate repos to thin callers
Replace inline CI workflows with thin callers to the reusable workflow (like nodes-md already does):
Target
ci.ymlfor all repos:3. Remove the redundant AI Review job
The
AI Reviewjob in claude-code-plugins'ci-pipeline.ymlis redundant —constellos-review.ymlalready runs AI reviews (requirements + code-quality agents). Remove it entirely.4. Handle the
constellos-review.ymlworkflowThis already exists as a separate workflow in both
claude-code-pluginsandconstellos. It handles AI reviews independently from CI. Leave it as-is — it's a separate concern from CI pipeline.Changes by Repo
constellos/.github(org)active)constellos/constellos(main monorepo)ci.ymlwith thin reusable caller (identical to what nodes-md uses)constellos-review.ymlas-isconstellos/claude-code-pluginsci-pipeline.ymlwith:constellos-review.ymlas-isconstellos/nodes-mdconstellos/github-agentsImplementation
Step 1: Update org ruleset check names
Update the "Basic CI" ruleset via GitHub org settings or API:
Step 2: Replace claude-code-plugins CI
Replace
.github/workflows/ci-pipeline.ymlwith thin reusable caller (AI Review removed — already handled byconstellos-review.yml):Step 3: Replace constellos main CI
Replace
.github/workflows/ci.ymlwith the same thin caller (without the AI Review job — handled byconstellos-review.yml):Step 4: Add CI to github-agents
Create
.github/workflows/ci.ymlwith the thin caller.Step 5: Enable org ruleset
Set Basic CI ruleset enforcement to
active.Verification
Scope Question
This plan covers changes to 4 repos (org
.github, constellos, claude-code-plugins, github-agents). Only the claude-code-plugins changes can be made from this worktree. The other repos need separate work.For this session: Only modify
claude-code-plugins/.github/workflows/ci-pipeline.yml.Follow-up: Org ruleset update + other repo migrations (separate PRs/sessions).