CommunityProductivity & Collaborationgithub.com

umairmsm/wp-kickoff

Stage 1 of a wp-site-kit WordPress build. Use when starting a new WordPress website or taking over or rebuilding an existing one - discovery brief, stack decision, creating the project with bin/wp-site-new, locked decisions, private repo and credentials inventory. Triggers - "new WordPress site", "start a client website", "rebuild this site", "take over this WordPress site".

What is wp-kickoff?

wp-kickoff is a Claude Code agent skill that stage 1 of a wp-site-kit WordPress build. Use when starting a new WordPress website or taking over or rebuilding an existing one - discovery brief, stack decision, creating the project with bin/wp-site-new, locked decisions, private repo and credentials inventory. Triggers - "new WordPress site", "start a client website", "rebuild this site", "take over this WordPress site".

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/umairmsm/wp-site-kit/tree/HEAD/skills/wp-kickoff

Installed? Explore more Productivity & Collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Stage 1: Kickoff

Goal: one page of truth about the business, and an empty project with every file the method expects. Nothing is designed or built yet.

Steps

  1. Is there a live site already? If yes, treat it as a running business, not a parked domain. First take inventory (references/discovery-brief.md, "Existing site"):
    • every URL (from its sitemaps), form, payment step, blog post and contact detail;
    • its Search Console data, if the owner can share it;
    • what earns money today. The rebuild must keep all of it working. Crawl politely: read the Terms of Use first (robots.txt is not permission) and leave 2 seconds or more between requests.
  2. Discovery brief. Ask the questions in references/discovery-brief.md and write the answers to docs/BRIEF.md. Mark each fact with its source (owner, document, crawl). If you don't know a fact, write PENDING-<who>. Never guess.
  3. Stack. Start from the default in references/stack.md. Change a layer only for a reason you can state, and record it in DECISIONS.md.
  4. Create the project with the kit's scaffolder (two folders up from this skill):
    bash <kit>/bin/wp-site-new --name "Acme Tours" --slug acme-tours --prefix acme \
         --domain example.com --dir ~/sites/acme-tours --git
    
    • slug: lowercase and hyphens. It names the DDEV project, the folders and the text domains.
    • prefix: 2 to 12 lowercase letters or digits. Every function, option, post type, meta key, hook and nonce starts with <prefix>_.
  5. Fill AGENTS.md:
    • what the site is;
    • who approves design and customer copy;
    • the locked decisions;
    • hard rules specific to this business, such as regulated claims, licences to show, or words the owner never wants.
  6. Private remote, set up on day 1. The owner creates a private repo and pushes. Once the local site exists (stage 3), run scripts/backup.sh and keep one copy on another machine.
  7. Credentials inventory (docs/reference/CREDENTIALS_INVENTORY.md):
    • list every account (registrar, DNS, host, SMTP, analytics, Search Console, payments, CDN);
    • write where each secret lives;
    • names only, never values.
  8. Tick the Kickoff gate in SITE_STATUS.md with evidence: the brief's approval date, the first commit SHA, the remote name.

Gate

  • docs/BRIEF.md approved by the owner (date)
  • Locked decisions and business hard rules in AGENTS.md
  • Project created and committed; private remote exists
  • Credentials inventory started (names only)
  • Replacing a live site: URL and feature inventory saved in docs/data/legacy/ (or "n/a")

Pitfalls we hit

  • Treating "cutover" as a DNS change while the old site was taking paid bookings that day.
  • An old site's review counts ("1,118 reviews") turned out to be made up. Don't carry them over.
  • Proxying the domain through Cloudflare while the old host rate-limited by IP. The host saw only Cloudflare's IPs, so real visitors got 429 errors. Check the origin's limits before you turn the proxy on.
  • Trusting another agent's notes that said "resolved". The fix was unpushed, untested and never deployed. Check the real thing.
  • Someone pasted an API key into an agent chat. Rotate any key an agent has seen.

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

umairmsm/wp-build

Stage 3 of a wp-site-kit WordPress build - local DDEV site, the core must-use plugin (modules), the presentation-only child theme with skins, the content model (custom post types, meta, WP_Query, render functions), and the enquiry pipeline that saves leads before forwarding. Use when building or changing features, templates, content types, forms or plugin modules on a wp-site-kit site.

umairmsm/wp-content

Stage 4 of a wp-site-kit WordPress build - real copy and photos. Content truth (facts only from the owner), AI drafts and owner approval, claims audits, banned words and fake proof, legal pages, the photo pipeline (dedupe, real-only, EXIF strip, WebP sizes, alt text, AI image register), and recorded content changes. Use for "write the copy", "add photos", "the owner sent new photos", "check for duplicates", "update prices or text on the live site", "legal pages".

umairmsm/wp-design

Stage 2 of a wp-site-kit WordPress build - design direction, a static HTML/CSS prototype with design tokens, owner sign-off with screenshots, self-hosted fonts, and porting the approved look into a swappable WordPress skin. Use for "design the site", "new look", "redesign", "change colours or fonts", "make a new skin", "port the prototype to WordPress".

umairmsm/wp-operate

Stage 8 of a wp-site-kit WordPress build and everything after launch - backups with an off-machine copy, restore drills, the disaster-recovery runbook, credentials inventory, update policy, alerts, and working from more than one machine (bridge file, workstation doctor, encrypted state bundle, rescuing unpushed work). Use for "backup", "restore", "move to a new machine/server", "update plugins", "what if the server dies", "work from the cloud box", "set up a second machine".

umairmsm/wp-seo

Stage 5 of a wp-site-kit WordPress build - titles and descriptions, canonical URLs, one schema owner and JSON-LD, sitemaps, robots.txt and llms.txt, AI crawler access, redirects (301 vs 302), legacy URL maps, Search Console, and adding languages one pilot at a time with Polylang (hreflang, .po/.mo strings, native review). Use for "SEO", "schema", "redirect", "old URLs", "translate the site", "add French/Spanish", "hreflang", "canonical".

umairmsm/wp-ship

Stage 7 of a wp-site-kit WordPress build - staging behind Cloudflare Access, server hardening, safe deploys from a commit (scripts/deploy-safe.sh), database content changes, the launch audit, DNS cutover without breaking a running business, and the first week after launch. Use for "deploy", "set up staging", "go live", "launch", "cutover", "move DNS", "harden the server".

umairmsm/wp-site

Start here for any WordPress website built with wp-site-kit, from an empty folder to a live site. Use when someone says "build a WordPress site", "new website for a client", "where are we on the site", "what is next before launch", or asks to continue a site project. Finds the current stage from SITE_STATUS.md, applies the hard rules, and hands over to the right stage skill.

Related Skills