Standalone Plugin Repository
Package community and team plugin wrappers
Standalone Plugin Repository
Use this workflow when a team or community repository owns an AIWG marketplace wrapper independently of the AIWG source tree.
Scaffold
aiwg new-bundle team-tools --type plugin
The wrapper lives at `.aiwg/plugins/team-tools/`. Its `manifest.json` declares `type: plugin` and points to a byte-preserved addon, extension, or framework under `pluginConfig.payloadPath`. Complete the payload manifest before packaging.
Validate and package
aiwg package-plugin team-tools --dry-run
aiwg package-plugin team-tools --provider all --output dist/plugins
An explicit source is also supported, but it must resolve inside the current repository:
aiwg package-plugin team-tools \
--source wrappers/team-tools \
--provider codex \
--output dist/plugins
The packager applies the canonical bundle schema recursively to the wrapper and payload, then validates wrapper identity, payload type/path agreement, symlink containment, provider selection, and output collisions. It emits deterministic `.tar.gz` archives with provider-native metadata. Payload bytes are not rewritten.
Install smoke
Extract each archive into a disposable repository before publication:
fixture="$(mktemp -d)"
mkdir -p "$fixture/claude/.git" "$fixture/claude/.claude/plugins"
tar -xzf dist/plugins/team-tools-1.0.0-claude.tar.gz -C "$fixture/claude/.claude/plugins"
test -f "$fixture/claude/.claude/plugins/team-tools/.claude-plugin/plugin.json"
mkdir -p "$fixture/codex/.git" "$fixture/codex/.codex/plugins"
tar -xzf dist/plugins/team-tools-1.0.0-codex.tar.gz -C "$fixture/codex/.codex/plugins"
test -f "$fixture/codex/.codex/plugins/team-tools/.codex-plugin/plugin.json"
test -f "$fixture/codex/.codex/plugins/team-tools/marketplace.json"
Then use the provider's local plugin installation surface from that fixture. The integration suite installs into these provider-native repository paths, validates both manifests with the canonical loader, and compares payload bytes.
Repository and release policy
- Keep wrapper and payload manifests at the same intentional release version.
- Record the original payload repository and commit in release notes.
- Include a license selected by the repository owner; AIWG does not choose one.
- Tag releases with the repository's declared version and attach both provider
archives plus checksums.
- Configure GitHub/Gitea or other remotes explicitly; the packager never pushes
or publishes.
- Provider marketplace submission and review remain provider-owned steps.
Use `aiwg discover "standalone plugin repository"` or steward when returning to this workflow.