mirror of
https://github.com/walter-base/common-workflow.git
synced 2026-09-08 19:26:46 -04:00
70 lines
2.5 KiB
Markdown
70 lines
2.5 KiB
Markdown
# Common Agent Marketplace Workflows
|
|
|
|
Public reusable GitHub Actions workflows and validation actions for repositories
|
|
that publish agent skills and plugins.
|
|
|
|
This repository intentionally contains only generic marketplace automation:
|
|
|
|
- skill and plugin manifest validation
|
|
- pull-request preview archives
|
|
- release archives and installation summaries
|
|
- optional catalog metadata published beside release artifacts
|
|
- optional npm registry publishing for agents that support npm catalogs
|
|
|
|
Container, infrastructure, deployment, and environment-specific workflows are
|
|
kept in the private `Walter0697/common-workflow` repository.
|
|
|
|
## Reuse
|
|
|
|
Reference the workflows from a repository workflow with a version tag or commit
|
|
SHA, for example:
|
|
|
|
```yaml
|
|
jobs:
|
|
validate:
|
|
uses: walter-base/common-workflow/.github/workflows/agent-marketplace-ci.yaml@master
|
|
```
|
|
|
|
The validator is also available as:
|
|
|
|
```yaml
|
|
uses: walter-base/common-workflow/actions/validate-agent-marketplace@master
|
|
```
|
|
|
|
## Publishing to an npm registry
|
|
|
|
The generic archive and its installer are opaque to coding agents: something has
|
|
to download and unpack them, which is what the generated installer script does.
|
|
Agents can, however, resolve npm packages on their own, so publishing the same
|
|
release contents to an npm registry lets them install and update without an
|
|
installer.
|
|
|
|
Release callers may pass `catalog_file` to publish a validated `catalog.json`
|
|
beside the Generic package archive and installer. The file is also included in
|
|
the archive when its path is listed in `package_paths`.
|
|
|
|
Enable it on the release workflow:
|
|
|
|
```yaml
|
|
with:
|
|
publish_npm: true
|
|
npm_package_name: "@acme/agent-skills"
|
|
# npm_registry defaults to the Gitea npm registry for gitea_user
|
|
secrets:
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
```
|
|
|
|
Notes:
|
|
|
|
- the package is built from the same staged directory as the generic archive, so
|
|
the two can never drift apart
|
|
- `package.json` is generated at publish time with the release version, which
|
|
keeps it in step with the plugin manifest versions that release-please bumps
|
|
- `npm_package_name` must be scoped, because the scope is what routes installs to
|
|
the registry in `.npmrc`. The scope does not have to match the registry owner:
|
|
Gitea's own example maps an `@test` scope to a `testuser` registry URL
|
|
- `NPM_TOKEN` is used when set; otherwise `GITEA_TOKEN` is reused
|
|
- publishing fails if any released path is absent from the packed tarball, which
|
|
guards against npm's ignore rules silently dropping `.agents/` or
|
|
`.claude-plugin/`
|