一键导入
adding-a-provider
Use when adding a new ingestion provider (e.g. GitLab, Bitbucket, Artifactory). Checklist of every file that needs a new provider entry.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when adding a new ingestion provider (e.g. GitLab, Bitbucket, Artifactory). Checklist of every file that needs a new provider entry.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | adding-a-provider |
| description | Use when adding a new ingestion provider (e.g. GitLab, Bitbucket, Artifactory). Checklist of every file that needs a new provider entry. |
Every provider must be registered in 10 locations across backend, frontend, and tests. Missing any one causes silent failures or missing UI elements.
internal/ingestion/<provider>.go — Create. Implement IIngestionSource interface (Name(), SourceID(), FetchNewReleases()). Follow github.go as template.
internal/ingestion/<provider>_test.go — Create. Mock HTTP server tests: Name, FetchNewReleases, FetchEmpty, FetchHTTPError. Follow github_test.go as template.
internal/ingestion/loader.go — Add case "<provider>" to BuildSource() switch.
internal/api/providers.go — Add {"id": "<provider>", "name": "<Display Name>", "type": "polling"} to the providers slice.
internal/api/health_test.go — Update TestProvidersHandlerList: bump expected count and add assertions for new provider.
web/components/sources/source-form.tsx — Add <SelectItem> to provider dropdown. If provider supports prereleases, add to the exclude_prereleases condition.
web/components/projects/project-form.tsx — EASY TO MISS. Same changes as source-form.tsx — this is a separate inline form used during project creation.
web/components/ui/provider-badge.tsx — Add entry to PROVIDER_STYLES with brand color and icon (check react-icons/fa for available icons).
web/components/releases/release-detail.tsx — Add cases to both getProviderUrl() and getProviderLabel().
web/lib/format.ts — Add URL validation rule to validateRepository() rejecting full URLs for the new provider.
go test ./... — all passgo vet ./... — clean