Registry Review Criteria
Go Code (tools/resourcedocsgen/)#
- Idiomatic Go: Follow Go conventions (naming, error handling, package structure)
- Error handling: All errors must be checked and handled; no silently ignored errors
- Test coverage: New functionality should include tests; modifications should not break existing tests
- Lint compliance: Must pass
golangci-lint run(run viamake lint-go) - Module boundaries:
tools/resourcedocsgen/is a separate Go module — changes should respect module boundaries
CI Workflows (.github/workflows/)#
- YAML validity: Well-formed YAML with correct indentation
- Action version pinning: Use SHA-pinned actions (e.g.,
actions/checkout@v4with full SHA) for security - Secret handling: No hardcoded secrets; use GitHub secrets or Pulumi ESC references
- OIDC config: Verify
id-token: writepermission when using OIDC authentication - Trigger conditions: Verify
on:triggers, branch filters, and path filters are correct - Concurrency: Check for appropriate
concurrencygroups to prevent duplicate runs
Build System (Makefile, scripts/)#
- Backward compatibility: Changes to Makefile targets should not break existing CI workflows
make lintpassability: All changes must passmake lint- Script safety: Shell scripts should use
set -euo pipefail, quote variables, handle edge cases - Dependency management: Changes to
package.jsonshould use Yarn (not npm or pnpm)
Provider YAML (themes/default/data/registry/packages/*.yaml)#
Required Fields#
Every package YAML file must include:
| Field | Type | Description |
|---|---|---|
name |
string | Package short name (lowercase, alphanumeric + hyphens) |
title |
string | Display name |
description |
string | Brief package description |
publisher |
string | Publisher name (e.g., "Pulumi", "pulumiverse") |
repo_url |
string | GitHub repository URL |
version |
string | Semver version (e.g., v1.2.3) |
schema_file_url |
string | URL to the provider's schema JSON |
category |
string | One of the valid categories (see below) |
component |
boolean | Whether this is a component provider |
native |
boolean | Whether this is a native provider |
package_status |
string | ga or public_preview |
Valid Categories#
Cloud, Database, Infrastructure, Monitoring, Network, Utility, Version Control System
Field Validation#
versionmust match semver pattern:v\d+\.\d+\.\d+(with optional pre-release suffix)repo_urlmust be a valid GitHub URL:https://github.com/{owner}/{repo}schema_file_urlmust be a valid URL pointing to a JSON filecomponentandnativemust be boolean (trueorfalse)package_statusmust begaorpublic_preview
Infrastructure (infrastructure/)#
- Pulumi IaC review: Verify resource configurations, stack references, and outputs
- CloudFront/S3 impact: Flag changes that could affect CDN distribution or origin bucket configuration
origin-bucket-metadata.json: Changes to this file directly affect production deployment — flag for careful review
BUILD-AND-DEPLOY.md Currency#
If any of the following files change, flag whether BUILD-AND-DEPLOY.md needs updating:
Makefile.github/workflows/*.ymlscripts/ci/*.shinfrastructure/config/
Community Package List (community-packages/package-list.json)#
- JSON validity: Must be well-formed JSON
- Required fields: Each entry must have
repoSlug(string) andschemaFile(string) - Repo slug format: Must be
{owner}/{repo}format (valid GitHub repository slug) - No duplicates: No duplicate
repoSlugentries
Hugo Templates and Theme (themes/default/layouts/, themes/default/theme/)#
- Template syntax: Valid Hugo template syntax with proper
{{ }}delimiters - Asset compilation: Theme JS/CSS changes should build cleanly with
make build-assets - Static files: Changes to
themes/default/static/should not conflict with generated content - Shortcode parity: Shortcodes exist in both HTML (
.html) and markdown (.markdown.md) variants. When modifying a shortcode, ensure both variants reflect the change as appropriate for their output channel (HTML for the web, plain markdown for CLI/terminal) - Image hosting: Images referenced in templates (banner ads, promotional graphics, etc.) must use absolute URLs pointing to
https://www.pulumi.com/(e.g.,https://www.pulumi.com/images/docs/ad/example.png). The registry site is served from a separate S3 bucket/CloudFront distribution than the main docs site — relative paths like/images/docs/ad/example.pngwill 404 because those images live inpulumi/docs, notpulumi/registry. Never add image files to the registry repo's static directory to work around this — always reference preexisting images onpulumi.comwith absolute URLs
General#
- Spelling and grammar: Check non-generated content for typos and grammatical errors
- Link validation: Verify URLs are well-formed; flag broken or placeholder links
- Newline endings: Files should end with a trailing newline
- Generated content commits: The
api-docs/subdirectories underthemes/default/content/registry/packages/<pkg>/are git-ignored build output — never committed. The_index.mdlanding page there — andinstallation-configuration.md, for the packages that have one — is committed metadata, maintained by thegenerate-package-metadata.ymlworkflow and bundled when onboarding a package, so committing them is expected; they must beresourcedocsgenoutput, never hand-edited. Only_index.mdis required: do not flag a package that ships an overview and no install page - No secrets: Flag any file that appears to contain API keys, tokens, or credentials