pulumi/new-package
Guided workflow to add a new provider package to the Pulumi Registry
npx skills add https://github.com/pulumi/registry --skill new-package
Use this when: You want to add a new provider package to the Pulumi Registry, either as a community package or a first-party Pulumi provider.
/new-package
Walks through a guided process to create the package YAML metadata, validate the provider, and optionally add it to the community package list.
CRITICAL SUCCESS CRITERIA: Complete all 7 steps in sequence. Every step is mandatory. DO NOT SKIP ANY STEP OR END THE WORKFLOW PREMATURELY!
Step Counter: Display progress before each step as: [Step X/7] followed by the step heading.
References: This skill uses reference files for templates and validation:
new-package:references:yaml-template - Canonical YAML structurenew-package:references:package-list-format - Community package list entry formatnew-package:references:first-party-checklist - First-party provider setup checklistUse AskUserQuestion to ask:
Question: "What type of package are you adding?"
Options:
Store the selection for later steps.
Use AskUserQuestion to collect the following (ask in sequence, one at a time):
datadog, cloudflare, my-providerhttps://github.com/pulumiverse/pulumi-exampleDatadog, Cloudflare, My ProviderPulumi, pulumiverse, MyOrgCloud, Database, Infrastructure, Monitoring, Network, Utility, Version Control Systemprovider/cmd/pulumi-resource-example/schema.jsonFor community packages, also ask:
For first-party packages, default component: false and native: false (can be overridden).
Verify the repository exists and is accessible:
gh api repos/{owner}/{repo} --jq '.full_name'
Construct the schema file URL and verify it's reachable:
For GitHub repos, construct the raw URL:
https://raw.githubusercontent.com/{owner}/{repo}/{default-branch}/{schema-file-path}
Use WebFetch to check if the URL returns valid content:
main, masterGenerate the YAML file using the template from new-package:references:yaml-template.
Actions:
gh api repos/{owner}/{repo}/releases/latest --jq '.tag_name' 2>/dev/null || echo "v0.0.1"
Package YAML Preview:
─────────────────────────────────────────
[YAML content]
─────────────────────────────────────────
File: themes/default/data/registry/packages/{name}.yaml
AskUserQuestion to confirm:themes/default/data/registry/packages/{name}.yamlAdd an entry to community-packages/package-list.json:
include arraySee new-package:references:package-list-format for the entry format.
Skip package-list.json modification. Instead, display the first-party setup checklist:
See new-package:references:first-party-checklist for the complete checklist.
Key message: "First-party providers use repository_dispatch events. The provider repository needs to be configured to send resource-provider dispatch events to pulumi/registry via the publish-provider-update.yml workflow."
/validate-package {name} to verify the new package New package added successfully!
Package: {name}
Type: {community|first-party}
File: themes/default/data/registry/packages/{name}.yaml
{If community: Added to community-packages/package-list.json}
Next steps:
- Review the generated YAML file
- Run /shipit to commit and create a PR
{If first-party: - Configure repository_dispatch in the provider repo}
/shipit to commit and create a PRTake pulumi/new-package from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.