Private Claude Code plugin for the Shadowtek team. Provides skills, agents, commands, rules, and hooks for web design, hosting, and ads projects.
View Build Pipeline Diagram → Interactive reference —
/new-projectmain flow + all standalone commands. Download button included for sharing.
Requirement: GitHub access to the private shadowtek/shadowtek-claude-plugin repo.
claude plugin marketplace add shadowtek/shadowtek-claude-pluginRegisters the Shadowtek marketplace across all Claude Code interfaces — CLI, VS Code, and Desktop app.
- CLI:
claude plugin install shadowtek@shadowtek-claude-plugin - VS Code: Type
/pluginsin the Claude Code chat panel → find "shadowtek" → Install - Desktop app: Click + → Plugins → find "shadowtek" → Install
~/.claude/plugins/shadowtek/setup.shInstalls everything-claude-code, which shadowtek depends on for agents and extended tooling.
- CLI:
claude plugins update shadowtek - VS Code / Desktop: Plugin manager → click Update
Add to ~/.claude/settings.json to skip Step 1:
{
"extraKnownMarketplaces": {
"shadowtek-plugins": {
"source": {
"source": "github",
"repo": "shadowtek/shadowtek-claude-plugin"
}
}
}
}Commands are designed to chain. Below are the standard flows and the preferred run order.
For Shadowtek brand/design/build engagements.
/new-project
↓
/brand-agent or /brand-guidelines (if brand work needed)
↓
/build-orchestrator
↓
/pre-flight
↓
/deploy
↓
/publish-brand (optional — publish deliverables to brand.shadowtek.com.au)
↓
/handoff (optional — engineering handoff doc)
/new-project auto-routes when SiteLaunch is selected at Step 0.
/new-project → /sitelaunch-build
↓
/pre-flight
↓
/deploy
Produces a ready-to-import Google Ads Editor CSV using brand data.
/brand-agent ← must run first to produce brand.json
↓
/brand-to-ads
New account / client onboarding (all zones at once):
/cf-harden-bulk
↓
/cf-overview ← verify everything scored correctly
Single zone setup or override:
/cf-harden
↓
/cf-audit ← confirm pass/fail per check
Audit only (no changes):
/cf-overview ← account-wide score, surfaces failing zones
↓
/cf-audit ← drill into a specific zone
For new city/niche deployments in the directory-network monorepo. Standalone — no dependencies.
/new-directory
Structured intake that routes to the right build track. Always the starting point for any new client project.
/new-project
- One question at a time — never asks two at once
- Reads
SHADOWTEK-AGENTS.md,STACK.md, andCONVENTIONS.mdbefore making stack decisions - Shadowtek track: project type → discovery → stack decision → scaffolding (WordPress, Headless WP + Astro, Astro static, landing page, web app)
- SiteLaunch track: auto-selected at Step 0 → collects trade, location, services, trust signals, pages, brand assets → hands off to
/sitelaunch-build
Three-tier brand deliverable system. Produces self-contained HTML files for client handoff.
/brand-agent
| Tier | Deliverables | Best for |
|---|---|---|
| Tier 1 — Brand Identity | Brand Guide HTML + brand.json |
New clients, visual rebrand |
| Tier 2 — Brand + Positioning | + Audience Summary HTML | Strategy-focused engagements |
| Tier 3 — Full Brand Agent | + Marketing Strategy HTML | Full brand + go-to-market |
- 25-question intake (one at a time)
- Researches the client site and competitors via Playwright + WebSearch
- Generates brand-colored, offline-capable HTML deliverables
- Tier 3 outputs: 30-60-90 roadmap, channel strategy, KPI dashboard, budget guidance, risk register
- Accepts a context payload from
/new-project— skips already-known data
Produces a brand guide HTML + brand.json without the full brand-agent intake. Faster for clients with an existing brand direction.
/brand-guidelines
- Accepts context payload from
/new-projector/build-orchestrator - Outputs
brand.jsonfor use by/build-orchestratorand/brand-to-ads
Reads a brand.json produced by /brand-agent or /brand-guidelines and generates a ready-to-import Google Ads Editor CSV for Search campaigns.
/brand-to-ads
- Requires
brand.jsonin the current directory (run/brand-agentfirst) - Asks for: services, landing page URL, target location, daily budget, phone number
- Builds campaigns with 4 ad groups each: Generic, Local, Urgent, Problem
- Phrase Match and Exact Match only — no Broad Match
- All campaigns start Paused (safe default)
- Output:
./[client-slug]-google-ads.csv
Receives project context from /new-project and executes a multi-phase build using parallel agent teams.
/build-orchestrator
- Reads
SHADOWTEK-AGENTS.md,STACK.md, andCONVENTIONS.md - Accepts: project type, business name, industry, brand assets,
DESIGN.mdpath, reference sites, content brief, content mode, page list, dynamic features - Dispatches parallel build agents across design, content, and code phases
- Integrates
brand.jsonif available from a prior brand-agent run
Builds a tradie / service business lead gen site. Called automatically from /new-project (SiteLaunch track) or directly with intake data.
/sitelaunch-build
- Every build includes: sticky mobile click-to-call bar, lead capture form, Google Maps embed, click-to-call buttons in hero + contact, mobile-first (375px baseline), LocalBusiness schema, meta tags, sitemap, robots.txt
- Page options: 1 page / 2–3 pages / 4–5 pages
- Cloudflare account:
682f2ac2525ac7ab0913046b14ac020e(SiteLaunch CF account — not Shadowtek's)
Comprehensive technical health check against a staging Astro site before DNS cutover. This is a gate, not a fixer — reports findings, user fixes, then re-runs.
/pre-flight
- Astro 6 + Cloudflare Pages/Workers only (v1 scope)
- Refuses non-Astro projects with an explicit error
- Checks: build output, meta tags, schema, performance, accessibility, CF config, redirects, forms
Builds and deploys the current project. Auto-detects Wrangler (Cloudflare Pages) vs Git-only from project config.
/deploy
- Detects
wrangler.toml/wrangler.json/wrangler.jsonc - Runs
npm run build— stops entirely on build failure, never deploys stale output - Wrangler path: runs
wrangler pages deploy dist, trusts config as-is (never overrides account or project settings) - Git-only path: skips CF deploy, proceeds straight to commit + push
- Asks for confirmation before committing; handles missing upstream (
--set-upstream origin) - Always finishes with a clean summary of what ran vs what was skipped
Takes previously-generated brand and EDM HTML deliverables from disk and publishes them to brand.shadowtek.com.au for client preview — without re-running /brand-agent or /edm.
/publish-brand
- Discovers deliverables in the current directory automatically
- Returns shareable preview URLs
Writes a technical handoff brief for a senior engineer picking up the project cold. Reads ground truth from the filesystem — not from memory.
/handoff
- Runs
git status,git log,git diff,git stash listbefore writing anything - Updates an existing
HANDOFF.mdif found; creates a new one otherwise - Covers: current state, outstanding work, known issues, environment setup, deployment notes
Builds a UI matching a reference image, then iterates via screenshot comparison until it matches.
/ui-build
- Single page →
index.html(all inline) / Multi-page → one.htmlper page +styles.css - Tailwind CSS via CDN
- Uses
playwright-clifor screenshot comparison loop - Uses
nano-banana-profor image placeholders when source images aren't provided - Mobile-first responsive
Scaffolds a Node.js Express API with Shadowtek conventions.
/scaffold-node [description of what the API should do]
Structure: routes/ → controllers/ → services/ → middleware/ → config/
Includes: ecosystem.config.js, .env.example, .gitignore, package.json, README.md
Deploys WAF rules + zone security settings to a single Cloudflare zone.
/cf-harden
- Interactive — selects account and zone via
AskUserQuestion - Deploys: WAF managed rules, security level, SSL mode, Always HTTPS, bot fight mode, HSTS
- Offers profile options: strict / standard / custom
Deploys WAF rules + zone settings across all zones in a single Cloudflare account. Use for initial client onboarding.
/cf-harden-bulk
- Selects account interactively
- Applies the same security profile to every zone in the account
- Use
/cf-hardenon individual zones afterwards for per-zone overrides
Audits a single zone against the Shadowtek security standard. Reports ✓ / ✗ / ⚠ per check.
/cf-audit
- Offers to fix any failing checks after the report
Audits all zones in a Cloudflare account. Produces a per-zone report + account-wide score.
/cf-audit-bulk
- Offers to fix failing zones after the report
Scans all zones across all Shadowtek Cloudflare accounts, scores each against the security standard, and surfaces anything needing attention.
/cf-overview
- Fetches all accounts + zones in parallel
- Scores on: WAF rules count, SSL mode, Always HTTPS, DNS proxying
- Good starting point before drilling into
/cf-auditon specific zones
Spins up a fully configured, deployed instance of a local business directory for a new city and niche inside the directory-network monorepo.
/new-directory
- Monorepo:
github.com/shadowtek/directory-network - Intake: city, niche, site name, domain, search radius
- Generates:
site.tsconfig, hero image (nano-banana), OG share card (playwright-cli screenshot) - Creates: D1 database, R2 bucket,
wrangler.json, schema + migrations, SITE_REGISTRY KV entry, CI matrix entry - Sets 7 Worker secrets (including shared Stripe price
price_1TSn4gI3G1M8PMhOoiHCoBch) - CI deploys automatically on push — no separate deploy step needed
- Cloudflare account:
23eac34a3165f9a81ad87cfd5126bfcb
Synchronises AI tool configuration across machines using ai-sync.
/sync
Runs: ai-sync pull → ai-sync push → ai-sync status. Stops on first failure.
| Category | Skills |
|---|---|
| SEO | seo, seo-audit, seo-content, seo-geo, seo-hreflang, seo-images, seo-page, seo-plan, seo-programmatic, seo-schema, seo-sitemap, seo-technical, seo-competitor-pages |
| Ads | ads, ads-audit, ads-budget, ads-competitor, ads-creative, ads-google, ads-landing, ads-linkedin, ads-meta, ads-microsoft, ads-plan, ads-tiktok, ads-youtube |
| Brand | brand-agent, brand-guidelines |
| Design | frontend-design, redesign, ui-ux-pro-max, premium-motion, nano-banana, og-image |
| Tools | output-guard, playwright-cli, cf-harden |
audit-budget, audit-compliance, audit-creative, audit-google, audit-meta, audit-tracking, design-tester, developer, seo-content, seo-performance, seo-schema, seo-sitemap, seo-technical, seo-visual
new-project, brand-agent, brand-guidelines, brand-to-ads, build-orchestrator, sitelaunch-build, pre-flight, deploy, publish-brand, handoff, ui-build, scaffold-node, cf-harden, cf-harden-bulk, cf-audit, cf-audit-bulk, cf-overview, new-directory, sync
rules/common/: coding-style, git-workflow, testing, security, performance, patterns, hooks, agents, development-workflow
- SessionStart — Companion plugin check (daily)
- Stop — Orphaned dev server cleanup (kills processes with PPID=1, running > 4h)
everything-claude-code — installed automatically by setup.sh. Provides agents and extended tooling the Shadowtek plugin depends on.
- CLI:
claude plugins update shadowtek - VS Code / Desktop: Plugin manager → click Update
Edit skills, agents, commands, and rules in plugins/shadowtek/, then commit and push:
cd ~/Developer/GitHub/shadowtek-claude-plugin
git add -A && git commit -m "chore: update plugin" && git pushTeam members pick up changes with claude plugins update shadowtek.