create-site
Creates a new Power Pages code site (SPA) from a curated template or from scratch using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, template selection or scaffolding, component planning, design, implementation, validat…
Install / Use
npx skills add microsoft/power-platform-skills --skill create-siteInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
OperationsSupported Platforms
Our assessment of create-site
create-site scores 85/100 on our quality scale, 504th of 736 Operations skills we index.
Its SKILL.md is 104 KB long, well organised into 52 sections with 13 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has 919 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 12 days ago, so create-site is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
create-site compared with similar skills
All 4 of these similar skills score higher than create-site; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| create-site (this skill)by microsoft | 85 | 919 | 12d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 14d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 14d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 15d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 130.2k | 15d ago | SKILL.md |
Frequently asked questions
- How do I install create-site?
- Run
npx skills add microsoft/power-platform-skills --skill create-site. The install tabs above show the steps for each supported agent. - Which AI agents does create-site work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is create-site safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is create-site still maintained?
- The repository was last updated 12 days ago, so create-site is actively maintained.
Skill content
View source on GitHubname: create-site description: >- Creates a new Power Pages code site (SPA) from a curated template or from scratch using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, template selection or scaffolding, component planning, design, implementation, validation, and deployment. Use when the user wants to create, build, use a template for, or scaffold a new Power Pages website or portal. user-invocable: true argument-hint: Optional site description allowed-tools: Read, Write, Edit, Grep, Glob, Bash, WebSearch, AskUserQuestion, Task, TaskCreate, TaskUpdate, TaskList, mcp__plugin_power-pages_playwright__browser_navigate, mcp__plugin_power-pages_playwright__browser_snapshot, mcp__plugin_power-pages_playwright__browser_click model: opus
Plugin check: Run
node "${PLUGIN_ROOT}/scripts/check-version.js"— if it outputs a message, show it to the user before proceeding.
Create Power Pages Code Site
Guide the user through creating a complete, production-quality Power Pages code site from initial concept to deployed site. Follow a systematic approach: discover requirements, scaffold and launch immediately, plan components and design, implement with design applied, validate, review, and deploy.
Core Principles
- Use best judgement for design details: Once the user picks an aesthetic direction and mood, make confident decisions about specific fonts, colors, page layouts, and component behavior. Do not ask the user to specify every detail — use the design reference and your own taste to make creative, distinctive choices.
- Use TaskCreate/TaskUpdate: Track all progress throughout all phases — create the path-agnostic upfront tasks first, then append branch-specific tasks after the creation path is selected.
- Scaffold early, design with intention: Get the dev server running immediately after discovery so the user has something to look at. Then plan the design and features while the scaffold is live — apply the chosen aesthetic during implementation.
- Live preview feedback loop: The dev server MUST be running before any customization begins. Browse the site via Playwright (
browser_navigate+browser_snapshot) to verify every significant change. Do NOT take screenshots — only use accessibility snapshots to check page structure and content. - Keep the scaffold loader in sync with reality: The scaffold loader polls
public/scaffold-status.json. Update this file before everyAskUserQuestion(to raise the "waiting for your input" banner so the user doesn't miss a terminal prompt) and before each implementation step in Phase 5 (so the progress-bar label matches what you're actually doing while the decorative spinner continues its default cycle). See Live Preview Status Protocol. - Use real images: Source high-quality photos from Unsplash wherever pages need visual content — hero sections, feature cards, about pages, backgrounds, etc. Use
https://images.unsplash.com/photo-{id}?w={width}&h={height}&fit=cropURLs with specific photo IDs found viaWebSearch. Never leave image placeholders or broken<img>tags pointing to nonexistent files. - Git checkpoints: Commit after every individual page and component — each gets its own commit so breaking changes can be reverted.
Constraint: Only static SPA frameworks are supported (React, Vue, Angular, Astro). NOT supported: Next.js, Nuxt.js, Remix, SvelteKit, Liquid.
Initial request: $ARGUMENTS
Live Preview Status Protocol
<!-- not-a-gate: prose-only section — mentions of `AskUserQuestion` here describe the live-status protocol that wraps every real prompt in Phases 3/4/8; the actual gates are catalogued in §6.13 of references/approval-gates.md and marked at their call sites below -->While the scaffold loading screen is visible (from Phase 2.6 until the Home page itself is replaced in Phase 5), the loader polls GET /scaffold-status.json every 1.5 seconds. The message you write into <PROJECT_ROOT>/public/scaffold-status.json appears as the label under the progress bar, and awaitingInput controls the "waiting for your input" banner. The decorative spinner above the progress bar continues its built-in phrase cycle; keep the progress-bar label current so the loader still reflects what is actually happening.
Why this matters: When the browser with the loader takes over the user's screen, a prompt in the terminal can sit unanswered for a long time because the user doesn't realize anything is waiting. The banner makes it obvious.
File shape (all fields optional — omit any field you don't want to change):
{
"message": "Creating Contact page",
"awaitingInput": false,
"inputPrompt": "Please check your terminal to respond."
}
message— one short present-participle phrase shown as the status line under the progress bar in the loader (replacing the default "Getting started…" / "Setting up infrastructure…" cycle). Include the grouping context inline when it helps (e.g.,"Creating Footer component (shared components)").awaitingInput— whentrue, a prominent pulsing banner appears at the top of the loader and stays visible until this field is cleared. Set this before everyAskUserQuestioncall and clear it (false) immediately after the user answers.inputPrompt— short context for the banner (e.g.,"Choose a framework"). Optional.
When to update the file:
- After scaffold launches (end of Phase 2): write an initial status like
{ "message": "Planning your site", "awaitingInput": false }. - Before any
AskUserQuestionthat runs while the scaffold is visible (Phases 3, 4, and any in-scaffold prompt in Phase 5): setawaitingInput: truewith a shortinputPrompt. After the user answers, write again withawaitingInput: false. - Before each implementation step in Phase 5 — applying design tokens, creating each shared component, creating each page, updating the router, updating navigation — update
messageto the specific action. Examples:"Applying design tokens","Creating Navbar component","Creating Contact page". - At the end of Phase 5, after the Home page has been replaced: delete
public/scaffold-status.jsonso it isn't deployed with the site.
Write the file with the Write tool (atomic overwrite). You do not need to read it first.
Phase 1: Discovery
Goal: Understand what site needs to be built and what problem it solves
Actions:
<!-- gate: create-site:1.purpose | category=plan | cancel-leaves=nothing -->🚦 Gate (plan · create-site:1.purpose): Path-agnostic discovery prompt collecting site name, purpose, and audience. Determines what kind of site the user needs before the skill decides between a template-backed path and the from-scratch scaffold path. Fires only on the "site purpose unclear" branch (step 3 below).
Trigger: Phase 1 when site name, purpose, or audience was not provided in
$ARGUMENTS. Why we ask: Wrong purpose/audience context → wrong branch decision and wrong generated site plan; cleanup is annoying. Cancel leaves: Nothing — no scaffolding has started yet.
-
Create the minimal upfront todo list (see Progress Tracking):
- Discover site requirements
- Select template or choose from-scratch
-
If site name, purpose, and audience are clear from arguments:
- Summarize understanding
- Identify site type (portal, dashboard, landing page, blog, etc.)
-
If site name, purpose, or audience is unclear, use
AskUserQuestion:| Question | Header | Options | |----------|--------|---------| | What should the site be called? (e.g., "Contoso Portal", "HR Dashboard") | Site Name | (free text — use a single generic option so the user types a custom name via "Other") | | What is the site's purpose? | Purpose | Company Portal, Blog/Content, Dashboard, Landing Page | | Who is the target audience? | Audience | Internal (employees, partners), External (public-facing customers) |
-
From the user's answers, derive:
__SITE_NAME__(Title Case, e.g.,Contoso Portal)__SITE_SLUG__(kebab-case derived from site name, e.g.,contoso-portal)__SITE_DESCRIPTION__(one-line description based on name + purpose)
-
Summarize the path-agnostic understanding and confirm with user before proceeding:
- Site name
- Site purpose/type
- Target audience
Do not ask for framework or project location in Phase 1. Each creation path asks for its location after Phase 1.5 selects that path.
Audience influences site generation:
- Internal: Prioritize data tables, dashboards, authentication, navigation depth, functional over flashy design
- External: Prioritize landing page appeal, SEO-friendly structure, contact forms, clean marketing-oriented layout
Output: Clear statement of site purpose, audience, and derived naming values.
Phase 1.5: Template Branch Decision
Goal: Route the user into the appropriate creation path after path-agnostic Discovery.
Current implementation state: Template discovery, selection, supporting-solution import, packaged SPA cloning/upload, optional seed data, activation, live-site preview, and terminal telemetry are implemented for
kind: "spa". Traditional catalog entries are accepted but not shown until their solution-only provisioning flow is implemented. The user can always choose Start from scratch to continue into the existing scaffold flow.
Actions:
-
Mark Select template or choose from-scratch as
in_progress. -
Fetch the template catalog:
node "${PLUGIN_ROOT}/scripts/fetch-template-catalog.js"Use the returned immutable commit SHA for every template artifact request in this run. Pass
--ref <tag-or-branch>only for a deliberate test or rollback.Evaluate the JSON result:
- If
ok: false: tell the user templates are temporarily unavailable and continue with the from-scratch path. This is additive; a catalog failure must never blockcreate-site. - If
ok: truebutselectableCatalog.templatesis empty: tell the user no supported SPA templates are currently available and continue with the from-scratch path. Do not offer entries fromcatalog.templateswhosekindistraditional. - If supported SPA templates are available: use
selectableCatalog.templatesfor every matching, preview, browse, and selection step below. Keepcatalog.templatesonly as the complete downloaded manifest.
- If
-
Semantically match the template families against the Phase 1 context (
$ARGUMENTS, site name, purpose, audience, and any framework mentioned by the user):- Use each family template's
displayName,description,keywords,audience, available variant frameworks, and any variant-specific previews. - Do not compute a numeric score or invent a ranking script. Keywords guide agent judgement; they are not counted.
- Treat a template family as the user-facing template and a framework variant as the installable package. A family can have multiple variants (
react,vue,angular,astro).
- Use each family template's
-
Ask the user how to proceed after semantic matching:
| Match situation | Question | Header | Options | |-----------------|----------|--------|---------| | One or more clear matches | I found matching template(s) for your site. What would you like to do? | Creation Path | Show matching templates (Recommended), Browse all templates, Create from scratch | | No clear match | I couldn't find a matching template for your site. What would you like to do? | Creation Path | Browse all templates, Create from scratch (Recommended) |
Branch on the answer:
- **Sho
Truncated for display — read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
130.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
