
hosting-plans-helper
★ 470by automattic · part of automattic/studio
Answer WordPress.com plan, pricing, upgrade, and feature-tier questions (plan names, what each tier unlocks — plugins, themes, custom code, SSH, hosting — and current prices) from authoritative live data. Load before answering ANY plan, pricing, or feature-gating question; never answer these from memory.
This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.
Hosting Plans Helper
Use this skill whenever the user asks about WordPress.com (or Pressable) plans, pricing, upgrades, or what a plan tier unlocks — for example "which plan do I need for plugins?", "what does Business include?", "how much is Commerce?", "can I use custom CSS on Premium?", or "should I upgrade?".
Hard rule: never answer from memory
Plan names, prices, and feature-tier gating change, and your training data is stale. You MUST fetch current data with this skill before answering. Do not state a plan name, a price, or which tier unlocks a feature from memory — even if you are confident. If the fetch fails, say you can't verify current plan data right now and point the user to https://wordpress.com/pricing; do not guess.
Step 1: Fetch plan names and features
Fetch wpcom/v2/plans/features. It returns, per plan, the current name, the
product_slug (used to look up the price in Step 2), and the full list of features
that tier unlocks — grouped (Essential features, Performance boosters, High
Availability, Developer tools, Security, etc.).
Local sites (Bash tool available):
curl -s "https://public-api.wordpress.com/wpcom/v2/plans/features?locale=en"Connected WordPress.com sites (wpcom_request tool available, no Bash):
wpcom_request method=GET path="!/plans/features" apiNamespace="wpcom/v2"Step 2: Fetch current prices
Fetch wpcom/v2/products for prices. It is keyed by product slug; each product has a
cost_display (the formatted, already-localized price, e.g. "$300") and a
currency_code.
Local sites:
curl -s "https://public-api.wordpress.com/wpcom/v2/products"Connected WordPress.com sites:
wpcom_request method=GET path="!/products" apiNamespace="wpcom/v2"Both endpoints are public (no authentication) and both are reachable in either environment.
Step 3: Answer from the fetched data only
- Use the exact plan names from Step 1 — do not rename or substitute legacy names.
- For a plan's price, look up
products[ plan.product_slug ].cost_displayand quote it as-is (it is already localized; mention the currency). The free plan has no price. - To answer "does plan X include feature Y?" or "what do I need for Y?", check the
per-plan
featureslist from Step 1. Each feature has atitle, atooltip(use it to explain), and agroup. Recommend the lowest tier whosefeaturesincludes what the user needs. - When recommending an upgrade, name the specific tier and the concrete features it unlocks for the user's stated goal.
Phrasing
Answer directly and authoritatively, as plain product knowledge. Do not mention that you fetched anything, or reference "the live data", "the data I fetched", "according to the API", or any source or tool. The fetched data is simply the truth — state it.
- Yes: "Plugins are supported on the Personal plan and above."
- No: "Based on the live data I just fetched, plugins are supported on Personal and above."
Scope
Currently covers the WordPress.com consumer plans (Free, Personal, Premium, Business, Commerce). If the user asks about a plan or product not in the response (e.g. Pressable, Woo Hosted, VIP, enterprise), say it's not covered by this data and point them to https://wordpress.com/pricing rather than answering from memory.
npx skills add https://github.com/automattic/studio --skill hosting-plans-helperRun this in your project — your agent picks the skill up automatically.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under GPL-2.0— you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub →