Skip to content

feat: static registry with GitHub Pages + version tracking#11

Merged
intel352 merged 6 commits intomainfrom
feat/registry-static-site
Mar 15, 2026
Merged

feat: static registry with GitHub Pages + version tracking#11
intel352 merged 6 commits intomainfrom
feat/registry-static-site

Conversation

@intel352
Copy link
Contributor

Summary

  • Add scripts/build-index.sh and scripts/build-versions.sh to generate static JSON from plugin manifests + GitHub Releases
  • Add build-pages.yml GitHub Action — triggered on push, repository_dispatch (plugin-release), daily cron, and manual dispatch
  • Add templates/notify-registry.yml — reusable Action snippet for plugin repos
  • Update README with contribution guide, registry URL, and submission process

Registry URL

https://gocodealone.github.io/workflow-registry/v1/

Endpoints:

  • /v1/index.json — full plugin catalog
  • /v1/plugins/<name>/manifest.json — plugin manifest
  • /v1/plugins/<name>/versions.json — all versions with downloads + checksums
  • /v1/plugins/<name>/latest.json — latest version

Test plan

  • Verify build-index.sh generates valid v1/index.json
  • Verify build-versions.sh queries GitHub Releases correctly
  • Verify GitHub Pages deploys after merge
  • Verify repository_dispatch triggers rebuild

🤖 Generated with Claude Code

intel352 and others added 5 commits March 14, 2026 15:17
- build-index.sh: reads all plugins/*/manifest.json, generates v1/index.json
  (sorted by name with summary fields) and copies manifests to v1/plugins/
- build-versions.sh: queries GitHub Releases API via gh CLI for each plugin
  with a repository field, generates v1/plugins/<name>/versions.json and
  latest.json with download URLs and sha256 checksums from checksums.txt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- build-pages.yml: builds and deploys v1/ static JSON API to GitHub Pages
  on push to main, repository_dispatch (plugin-release), daily schedule,
  and manual workflow_dispatch
- .gitignore: excludes generated v1/ directory from source control

Registry served at: https://gocodealone.github.io/workflow-registry/v1/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Provides a copy-paste GitHub Actions job snippet that plugin repos can add
to their release workflow to trigger a registry rebuild via repository_dispatch
when a new version is published.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Build & Deploy badge alongside existing Validate badge
- Add registry API URL (https://gocodealone.github.io/workflow-registry/v1/)
- Add Usage via wfctl section with search/install/list/update commands
- Expand Submitting a Plugin into step-by-step PR process with manifest
  requirements summary
- Add Automatic Version Tracking section pointing to templates/notify-registry.yml
- Add Registry Structure overview showing v1/ generated directory and
  static API endpoint table
- Add Plugin Tiers table (core/community/premium)
- Add link to Plugin Authoring Guide

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
build-index.sh:
- Use directory name as canonical plugin name in index entries (overrides
  manifest .name field) so that v1/index.json names align exactly with
  v1/plugins/<dir>/ API paths; fixes 11 mismatches (e.g. "datadog" vs
  "workflow-plugin-datadog", "pipelinesteps" vs "pipeline-steps")

build-versions.sh:
- Replace `gh release list --json assets` (assets not a valid list field)
  with `gh release view <tag> --json assets` per-tag; was crashing silently
  and producing empty release lists for all plugins with releases
- Use `digest` field from gh release view assets (contains sha256 natively)
  instead of downloading checksums.txt, simplifying the approach significantly
- Remove dead-code first `versions=` computation block that was immediately
  superseded by the `versions_with_checksums` block
- Fix jq named capture groups: `(?P<name>...)` → `(?<name>...)` (Oniguruma
  syntax); `(?P<>...)` caused "Regex failure: undefined group option" errors
- Fix asset name regex escaping: use `[.]` instead of `\\.` for literal dots

build-pages.yml:
- Remove redundant "Setup GitHub CLI" step (`gh auth login --with-token`);
  GH_TOKEN env var is sufficient for gh CLI authentication in Actions

README.md:
- Fix dead link to non-existent docs/plugin-authoring.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a GitHub Pages–hosted, static JSON registry API for workflow plugins, generated from plugin manifests and GitHub Releases, and documents how plugin repos can notify the registry to rebuild on new releases.

Changes:

  • Add scripts/build-index.sh and scripts/build-versions.sh to generate v1/ registry artifacts (index + per-plugin version metadata).
  • Add a build-pages.yml GitHub Actions workflow to build and deploy v1/ to GitHub Pages on push/dispatch/cron/manual triggers.
  • Update README with registry URL, submission flow, and the release-notification snippet.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
.github/workflows/build-pages.yml Builds and publishes the generated v1/ directory to GitHub Pages.
scripts/build-index.sh Generates v1/index.json and copies per-plugin manifests into v1/plugins/<name>/manifest.json.
scripts/build-versions.sh Queries GitHub Releases to generate versions.json + latest.json per plugin.
templates/notify-registry.yml Provides a reusable repository_dispatch snippet for plugin repos to trigger rebuilds.
README.md Documents the static registry API, submission process, and automatic version tracking setup.
.gitignore Excludes generated v1/ artifacts from git.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +257 to +262
| Endpoint | Description |
|----------|-------------|
| `GET /v1/index.json` | All plugin summaries (name, description, version, capabilities, ...) |
| `GET /v1/plugins/<name>/manifest.json` | Full manifest for a specific plugin |
| `GET /v1/plugins/<name>/versions.json` | All release versions with download URLs |
| `GET /v1/plugins/<name>/latest.json` | Latest release version only |
- build-versions.sh: log warnings instead of silently swallowing gh CLI errors
- build-versions.sh: normalize repo URL (strip .git, trailing slash, extra paths)
- build-pages.yml: add apt-get update before installing jq
- build-index.sh: include workflowHandlers and wiringHooks in capabilities
- templates/notify-registry.yml: recommend fine-grained PAT over full repo scope

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@intel352
Copy link
Contributor Author

All 7 Copilot review comments addressed in fe81ecd:

  • build-versions.sh error handling: gh release list and gh release view errors are now logged as warnings to stderr instead of silently swallowed
  • build-versions.sh repo URL parsing: Normalized to strip .git suffix, trailing slashes, and extra path segments via cut -d/ -f1,2
  • build-pages.yml apt-get: Added apt-get update before apt-get install
  • build-index.sh capabilities: Added workflowHandlers and wiringHooks fields (defaulting to [])
  • notify-registry.yml PAT scope: Updated to recommend fine-grained PAT with minimal "Contents: Read" permission, or classic PAT with public_repo scope
  • README.md double pipes: Already fixed in previous QA round (no double pipes present)

@intel352 intel352 merged commit 5e5bad3 into main Mar 15, 2026
4 checks passed
@intel352 intel352 deleted the feat/registry-static-site branch March 15, 2026 00:36
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.

2 participants