Skip to content

feat(distribution): sync the github-actions-conventions vocabulary to claude-code-plugins - #688

Merged
kyle-sexton merged 2 commits into
mainfrom
feat/sync-github-actions-conventions
Oct 4, 2026
Merged

kyle-sexton merged 2 commits into
mainfrom
feat/sync-github-actions-conventions

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

No related issue: Phase 2 of the pr-pipeline config-reader plan in claude-code-plugins; no tracker item exists for it.

Hold: a human merges this.

Summary

claude-code-plugins is building resolve-config, the pr-pipeline config reader. It checks lane and activity names against components/github-actions-conventions/vocabulary.json, read from the base SHA. This PR makes the vocabulary and its schema managed files in claude-code-plugins at .github/standards/github-actions-conventions/.

Fix

  • distribution/sync-manifest.yml: a new github-actions-conventions component (vocabulary.json, vocabulary.schema.json), added only to claude-code-plugins' managed list, next to trusted-actors.
  • components/managed-files-guard/managed-files-guard.yml and -fleet.yml: both destination paths added to the paths: trigger, so the guard catches hand edits to the synced files, as it does for trusted-actors.

Verification

  • bash harness/shell/run-tests.sh components/managed-files-guard/managed-files-guard.test.sh distribution/sync-manifest.test.sh: 2 passed, 0 failed.
  • bash distribution/sync-manifest.sh validate: "Manifest valid: 41 components, 13 targets".
  • Pre-commit (editorconfig, typos, gitleaks) passed.

Related

  • The CI/CD Conventions session was consulted before this PR. The destination path is confirmed, no relocation is planned, and run-activity gets no runner-policy contract until it is promoted to ci-workflows.
  • Consumer: the claude-code-plugins pr-pipeline config reader, which opens in a separate draft PR.

🤖 Generated with Claude Code

kyle-sexton and others added 2 commits October 4, 2026 11:40
… claude-code-plugins

The pr-pipeline config reader in claude-code-plugins checks lane and
activity names against vocabulary.json read from the base SHA, so the
vocabulary and its schema need to be managed files there. The
managed-files-guard path lists gain both destinations so hand edits are
caught.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review October 4, 2026 16:15
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-04T16:17:20.856490Z 63edccf Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@claude

claude Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 53s —— View job


Security review — /review:security-review

  • Gather context (PR diff, changed files)
  • Apply skip gate
  • Report result

Skip gate: no security-relevant surface.

This PR only wires an already-existing component into the distribution/guard tooling:

No new code path, no secrets/token handling, no injection surface (command/SQL/path/template), and no authorization or trust-boundary change. The change is purely additive to data files (manifest mapping + trigger-path lists) and strengthens guard coverage rather than weakening it — not a case of removing or softening a standing instruction, so the instruction-surface-deletion lens doesn't apply either.

I inspected the referenced vocabulary.json directly: it's inert naming-convention metadata (stage/function/verb lists), no secrets or executable content.

No security issues found.

@claude

claude Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 27s —— View job


Code review complete

  • Gather context (PR diff, files)
  • Review distribution/sync-manifest.yml
  • Review components/managed-files-guard/managed-files-guard.yml and -fleet.yml
  • Post findings

No findings. This is a narrow, mechanical config change and it's internally consistent:

  • distribution/sync-manifest.yml: the new github-actions-conventions component (vocabulary.json, vocabulary.schema.json) is alphabetically placed, follows the exact shape of the adjacent trusted-actors component, and is added only to melodic-software/claude-code-plugins's managed list (alphabetically inserted there too) — matching the PR's description.
  • Both managed-files-guard.yml and managed-files-guard-fleet.yml get the same two new paths: entries, in the same sorted position, keeping the two files identical apart from their documented runs-on/name differences.
  • The source files (components/github-actions-conventions/vocabulary.json + .schema.json) already exist and are an already-admitted, documented component (components/github-actions-conventions/README.md); this PR only adds a new sync destination for two of its files, so docs/component-lifecycle.md#admission-evidence (new-component admission) doesn't apply here — consumer/destination lists correctly stay in sync-manifest.yml per that doc rather than being duplicated into the README.
  • components/managed-files-guard/managed-files-guard.test.sh asserts the paths: trigger equals the sorted union of every target's dest-paths output from the manifest — exactly the contract this PR's two files must satisfy, and the new entries line up with that union given where the component was inserted.
  • PR body satisfies .claude/rules/pr-body-contract.md: opens with No related issue: <reason>, and carries non-empty ## Summary, ## Fix, ## Verification, ## Related sections.

I wasn't able to execute bash distribution/sync-manifest.sh validate or the test suite myself in this sandbox (shell commands beyond basic read-only ones require interactive approval that isn't available here), so the PR's own "2 passed, 0 failed" / "Manifest valid" verification claims are author-reported and unverified by me — my review above is based on static inspection of the manifest, the guard files, and the test contract they must satisfy.

@kyle-sexton
kyle-sexton merged commit ad6667c into main Oct 4, 2026
2 checks passed
@kyle-sexton
kyle-sexton deleted the feat/sync-github-actions-conventions branch October 4, 2026 16:18
kyle-sexton added a commit that referenced this pull request Oct 4, 2026
#689)

No related issue: naming-lint finding on claude-code-plugins#6263, which
adds the PR lane runner.

## Summary

claude-code-plugins#6263 adds `.github/workflows/pr-run-activity.yml`,
the reusable runner every PR lane calls. The naming lint rejects it
because `run-activity` is not a `pr` function word. CI/CD Conventions
flagged the unprefixed name, and the stage-first name was then chosen.

## Fix

`vocabulary.json` `functions.pr` gains `run-activity`, with status
`reserved` and a purpose. It moves to `in-use` once the workflow is on a
main branch.

## Verification

- `npm run test:github-actions-conventions`: 14 passed, 0 failed.
- `naming-lint.mjs --mode enforcing` against the claude-code-plugins
branch reports no finding for `pr-run-activity`, `resolve-config` or
`report-check-run`.
- `biome check` on the file is clean.

## Related

- claude-code-plugins#6263 (consumer). The vocabulary syncs there
through the entry from #688.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Oct 5, 2026
No related issue: unblocks the ci-workflows v0.38.0 fleet repin in the
GitHub Actions conventions migration.

## Summary

Registers the nine ci-workflows reusables at the v0.38.0 tag
`95732fda50a95d3297320a6f2c791a1a91870a7f` in
`components/runner-policy/policy.json`, so consumer repins from v0.36.0
pass runner-policy. The `fb56986` (v0.36.0) entries stay until every
consumer has repinned; a follow-up retires them.

## Fix

- `policy.json`: nine new keys, each body a verbatim copy of its
`fb56986` entry (text-spliced, no re-serialization; 121 insertions, 0
deletions).
- `README.md`: review note for v0.38.0 (identical blobs, `$/` tree
changes, zizmor and upload-sarif bumps, the hand sign-off of the four
secret-capable entries, and the `maintenance-sync-standards`
disarm/re-arm behavior from ci-workflows#688 plus the failed re-arm now
failing the run). The v0.36.0 sentence about `fb56986` being the only
admitted SHA now reads in the past tense.

## Verification

- `git diff fb56986..95732fd -- .github/workflows` in ci-workflows
matches the per-reusable review: six reusables changed, three
byte-identical; no input, secret, caller permission or `runs-on` routing
moved. `maintenance-sync-standards.yml` was re-diffed against the #688
head reviewed (`d564b5bc`): the only addition is a `setFailed` when a
run disarms and cannot re-arm.
- `npm run test:runner-policy` (297/297), `npm run lint:runner-policy`,
`npx biome check components/runner-policy/policy.json`, `npm run
lint:md`: all pass.

## Related

- ci-workflows v0.38.0 release (`95732fd`)
- ci-workflows#688 (sync re-arm behavior)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant