FastGPT community plugin registry and publishing automation.
This repository indexes community-provided FastGPT plugins, runs deterministic validation, records Agent-assisted review evidence in pull request comments, writes publish/revoke lifecycle events, and provides the workflow entry point for publishing approved community plugins to FastGPT Marketplace.
- Maintain a lightweight registry of community plugin references in
plugins.json. - Store each plugin as a pinned git submodule under
packages/tools/<pluginId>. - Use lower camelCase plugin ids, for example
googleSheets. - Run schema, submodule, source layout, and policy gates before publish.
- Use AI skills for plugin intake review and daily publish/revoke summaries.
- Publish approved
.pkgartifacts through GitHub Actions. - Record repository-side lifecycle state for publish and revoke actions.
Community plugins are reviewed for publishability and traceability. The review scope focuses on publish intake and audit evidence. Plugin source, ongoing availability, maintenance, and feature expansion stay with the plugin contributor unless explicitly stated otherwise.
.
├── .agents/skills/
│ ├── develop-fastgpt-plugin/ # Beginner FastGPT plugin development guide
│ ├── plugin-discovery/ # Candidate intake helper
│ ├── plugin-review/ # AI publishability review skill
│ └── daily-summary/ # AI daily lifecycle summary skill
├── .github/workflows/
│ ├── validate.yml # PR and manual registry validation
│ ├── publish.yml # Manual publish workflow
│ └── revoke.yml # Manual repository-side revoke workflow
├── events/<yyyy-mm-dd>/ # Committed publish/revoke lifecycle events
├── packages/tools/<pluginId>/ # Community plugin submodules
├── schemas/ # Registry, review verdict, and lifecycle event contracts
├── scripts/ # Validation, publish, revoke, and policy gates
├── tests/ # Vitest coverage for deterministic gates
├── plugins.json # Machine-readable community plugin registry
├── package.json # Root scripts and toolchain versions
├── pnpm-workspace.yaml # Root toolchain catalog; plugin submodules are excluded
└── turbo.json # Task orchestration
plugins.json is the source of truth for indexed community plugins:
{
"version": 1,
"plugins": [
{
"pluginId": "weatherTool",
"version": "0.1.0",
"type": "tool",
"source": "https://github.com/example/weatherTool",
"commit": "abcdef1234567890",
"submodule": "packages/tools/weatherTool",
"path": ".",
"status": "pending",
"support": "community"
}
]
}Field rules live in schemas/registry.ts. Scripts and skills should depend on the schema instead of duplicating validation logic.
Plugin submodules are independent repositories. They are intentionally excluded from the root pnpm workspace.
Each plugin repository should provide:
- explicit dependency versions in its own
package.json; - its own
packageManagerfield; - its own
pnpm-lock.yaml; - its own pnpm build-script approvals when dependencies require lifecycle scripts, for example
onlyBuiltDependencies; - no
catalog:orworkspace:dependency specifiers.
The root pnpm-workspace.yaml catalog is only for this registry repository's scripts, schemas, and tests. Validation and publish commands install plugin submodules with pnpm install --frozen-lockfile --ignore-workspace from the plugin directory.
- Node.js
>=22 - pnpm
>=10 - Recommended pinned version:
pnpm@10.28.2
corepack enable
corepack prepare pnpm@10.28.2 --activate
pnpm installThis repository may contain many plugin submodules under packages/tools/*. Do not clone or update every tool by default.
Recommended clone:
git clone --filter=blob:none --sparse <community-registry-url> fastgpt-community-plugins
cd fastgpt-community-plugins
git sparse-checkout set --no-cone '/*' '!/packages/tools/*'
pnpm installWhen you need one plugin, fetch only that submodule:
git sparse-checkout add packages/tools/googleSheets
git submodule update --init --recursive packages/tools/googleSheets
pnpm run plugin -- check googleSheetsAvoid running git submodule update --init --recursive without a path; it will fetch every community plugin.
In sparse checkouts, use pnpm run plugin -- check <pluginId> or pnpm run plugin -- check --base <base> --head <head> for targeted validation. Full pnpm run validate expects the relevant submodules to be present.
# Type check repository scripts and schemas
pnpm run type-check
# Run deterministic tests
pnpm test
# Validate registry, submodules, and policy gates
pnpm run validate
# Unified human/Agent plugin lifecycle CLI
pnpm run plugin -- add --from packages/tools/googleSheets --json
pnpm run plugin -- check googleSheets
# Add or update a registry entry
pnpm run registry -- upsert --plugin googleSheets --version 0.1.0 --source <plugin-repo-url> --commit <commit-sha>
# Infer registry metadata from a local submodule package
pnpm run registry -- upsert --from packages/tools/googleSheets --source <plugin-repo-url> --commit <commit-sha>
# Publish pending plugins without mutating registry state
pnpm run plugin -- publish-pending --all-pending --dry-run --skip-build
# Revoke a plugin in repository state and write a revoke event
pnpm run revoke -- --plugin <pluginId> --reason broken --details "Fails current package check"Community plugin source code should live in its own repository. This registry only keeps a pinned reference.
-
Ensure the plugin repository builds independently with explicit dependency versions and a committed
pnpm-lock.yaml. -
Add the plugin repository as a submodule:
git submodule add <plugin-repo-url> packages/tools/<pluginId> git -C packages/tools/<pluginId> checkout <commit-sha>
-
Add or update the matching entry in
plugins.json:pnpm run plugin -- add --from packages/tools/<pluginId>
-
Run deterministic validation.
plugin checkinstalls the plugin as an independent repository:pnpm run plugin -- check <pluginId> pnpm test
-
Open a pull request containing the registry entry and submodule pointer.
-
Use the
plugin-reviewskill to inspect the pinned plugin and post findings or a publishability verdict as a GitHub PR comment. Do not commit review verdict JSON into this repository.
This repository intentionally keeps subjective review and summary work in Codex skills:
develop-fastgpt-plugin: helps contributors create, test, package, and submit FastGPT plugins.plugin-discovery: prepares candidate registry entries, submodule commands, and intake notes.plugin-review: reviews a pinned plugin candidate and comments a structuredpass,warn, orfailverdict on the pull request.daily-summary: reads committed lifecycle events and current registry state to produce a human-readable daily digest.
Deterministic scripts remain responsible for schema validation, policy gates, package checks, publish event writing, and revoke event writing.
Publishing runs automatically after a plugin PR is merged to main:
validate.ymlverifies registry schema, submodule consistency, source layout, and policy gates before merge.plugin-reviewposts a structured AI verdict and findings to the pull request.publish.ymlruns onpushtomainand publishes registry entries that are stillpending.publish.ymlbuilds the plugin as an independent repository, uploads the.pkgto Marketplace, writes a publish event, marks the registry entryactive, and commits lifecycle state back to the repository.- The publish receipt is uploaded as a GitHub Actions artifact under
dist/receipts.
The lifecycle commit from step 4 may trigger publish.yml again because it updates plugins.json. The second run exits without publishing because the plugin is no longer pending.
Required GitHub Actions secrets:
MARKETPLACE_BASE_URLMARKETPLACE_AUTH- Optional
NPM_TOKENwhen private package installation is needed.
revoke.yml is currently a repository-side action. It:
- marks the registry entry as
revoked; - writes a committed revoke event under
events/<yyyy-mm-dd>/; - records optional
marketplace_release_idfor future marketplace-side revoke integration.
Marketplace-side revoke or hide APIs are intentionally left as an extension point. When those APIs exist, scripts/revoke.ts can attach that call before writing the final event.
- FastGPT: the main FastGPT repository.
- fastgpt-plugin: FastGPT plugin system, CLI, and SDK infrastructure.
- fastgpt-official-plugins: officially maintained FastGPT plugins.