Skip to content

Commit da14e91

Browse files
committed
feat(skills): add /landing-ab (self-driving LP ladder) + /agent-business (app-to-agent playbook)
Two skills from the Angus Sewell field guides (2026-07-03). landing-ab ships every landing page L2-ready with the PostHog 5-level ladder and bundles its UserPromptSubmit intent hook; agent-business is the 6-op service-as-agent build recipe. Listed in the install.sh summary; step-installer wiring TBD.
1 parent 70e469a commit da14e91

5 files changed

Lines changed: 140 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
77
## [Unreleased]
88

99
### Added
10+
- **`/landing-ab` skill** — self-driving landing pages per the 5-level PostHog ladder (static → watch → test → auto-iterate → personalize). Every new landing page ships with a `signup-cta`-tagged CTA, PostHog autocapture + heatmaps wired at build time, a `landing-ab` feature-flag stub, and a `docs/LP-OPS.md` carrying the L3–L5 playbook (95%+ / ≥50-exposure test calls, weekly PostHog-MCP optimizer loop, cohort personalization). Vendored at `landing-ab-skill/` (SKILL.md + companion UserPromptSubmit hook `landing-ab-intent.sh`). Listed in the `install.sh` skill summary; not yet wired into a step installer.
11+
- **`/agent-business` skill** — turn any app into an AI agent business via the 6-op playbook: pick market → reverse-engineer the data → stack (Claude + n8n + Postgres) → messaging hookup (LoopMessage / Twilio / Unipile) → inbound brain → proactive coach cron. Phone-number-keyed schema, log tools per signal, 2-texts-a-day cap. Vendored at `agent-business-skill/` (single SKILL.md). Listed in the `install.sh` skill summary; not yet wired into a step installer.
1012
- **`/bullets` skill** (step 4) — crushes a paragraph or prose blob into the shortest scannable bullets: one fact per bullet, ≤~12 words, zero fluff, every signal preserved (names, numbers, dates, paths, decisions). Always outputs bullets — built because `/concise` decides shape per reply and sometimes leaves prose, which is wrong for document handoffs where nobody should have to read a blob. Triggers on `/bullets` and in plain English ("bullet this", "bulletize", "turn this into bullets"). Vendored at `bullets-skill/` (single SKILL.md). Installed by Step 4 as an inline heredoc alongside `/w4w` and `/concise` (no network dependency); self-test asserts SKILL.md landed. Listed across `README.md`, `CHEATSHEET.md`, `README-SECTIONS/cheat-sheet.md`, `install.sh` + `update.sh` summaries, the Step 4 self-test + summary, and the `uninstall.sh` Step 4 removal loop.
1113
- **`/recon` skill** (step 7) — pre-build prior-art reconnaissance. On build-intent ("build / make / start a new X", "does X exist?") it offers a one-line prompt first (never auto-runs — Nate sometimes clones a known paid tool on purpose), then sweeps GitHub via the `gh` CLI + the web for existing free and paid options, ranks the top ~10 in a comparison table, finds the edge (or honestly calls it a red ocean), and ends with a GREEN/YELLOW/RED verdict. Output is a discussion, not code. Vendored at `recon-skill/` (single SKILL.md). Installed by Step 7 alongside `/gitfix` (depends on the `gh` CLI Step 7 already installs); no PAT needed. Step 7 installer downloads from `fidgetcoding/cli-maxxing/main` via curl with a local fallback, the non-interactive path installs it too, and the self-test asserts SKILL.md landed. Listed across `README.md`, `CHEATSHEET.md`, `README-SECTIONS/cheat-sheet.md`, `install.sh` + `update.sh` summaries, `step-final` self-test, and the `uninstall.sh` Step 7 removal.
1214
- **`/concise` skill** (step 4) — default chat-shape filter. No fluff, no scaffolding, no headers on simple questions, no sycophancy. Auto-suspends for copywriting deliverables (tweets, scripts, decks, client docs) so it doesn't sand down voice on output going to a human audience. Vendored at `concise-skill/` (SKILL.md + 3 references — `copywriting.md`, `inputs.md`, `code-and-commits.md`). Step 4 installer downloads from `lorecraft-io/cli-maxxing/main` via curl with a local fallback for offline / pre-publish runs. Self-test asserts SKILL.md + copywriting.md reference landed. Listed across `README.md`, `CHEATSHEET.md`, `install.sh` summary, `update.sh` summary, and `uninstall.sh` skill removal loop.

agent-business-skill/SKILL.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
name: agent-business
3+
description: Turn any app or human service into an AI agent business (Angus Sewell 6-op playbook, 2026-07-03). Use whenever Nate wants to build an AI agent that texts clients, a texting coach/tutor/advisor/consultant agent, an SMS/iMessage/WhatsApp agent, a service-as-an-agent business, or says "turn this app into an agent", "AI coach business", "agent that replaces a [coach/tutor/advisor]", or wants the app-to-agent playbook applied to a market. Also invocable directly as /agent-business.
4+
---
5+
6+
# /agent-business — turn any app into an AI agent business
7+
8+
Every winning app is a cheap self-serve version of a service humans pay far more for. Rebuild that human service as an AI agent living between app and human: same outcome, fraction of the human's price. Worked example: texting AI fitness coach at $700/mo vs a $1,500+/mo human coach.
9+
10+
**Source of truth:** `/Users/nathandavidovich/BRAIN2/02-Sources/SRC-2026-07-03-agent-business-build-guide.md` (archived PDF alongside).
11+
12+
Run the 6 ops in order. Each op below = objective + the moves. Verbatim prompts live in the source note — pull them when executing.
13+
14+
## Op 1 — Pick the market
15+
- App Store → Top Charts → category with a clear human equivalent. Name the app's outcome (lose fat, file taxes, learn Spanish), the human pro selling it, and their monthly price.
16+
- Only pick categories where the human charges MONTHLY and the outcome is measurable — coach, tutor, advisor, consultant. Skip one-off services.
17+
- Wedge: same outcome, agent-delivered, fraction of cost.
18+
19+
## Op 2 — Reverse-engineer the data
20+
- Don't copy app features. Work backwards from the outcome → the 3–6 signals proving it's happening → raw data points per signal (units + frequency).
21+
- Schema: always a `users` table keyed by PHONE NUMBER (people text from one number, not one inbox — phone is the join key, not email) + one table per signal (e.g. `food_log`, `workout_log`, `weight_log`, `goals`).
22+
- Postgres on Supabase; Airtable only for no-code. Schema-design prompt in the source note.
23+
24+
## Op 3 — Pick the stack
25+
- Three pieces: **brain** (Claude — decides + writes every reply) · **builder** (n8n; Gumloop only if allergic to node graphs) · **database** (Postgres/Supabase).
26+
- Give the agent DB tools: `log_*` per signal + `get_client_state`.
27+
- Start on n8n even if the client is non-technical: one webhook, one agent node, one Postgres node.
28+
29+
## Op 4 — Wire it to their texts
30+
- No app to download — the client texts a number. Connector inbound webhook → builder trigger; agent gets a `send_message` tool on the connector's send API. Trigger fires on every inbound `{phone, text}`.
31+
- Connectors: LoopMessage (iMessage — converts best, blue bubble = trust, needs a Mac online, from $24.99/mo) · Twilio (SMS+WhatsApp — zero-hardware start) · Unipile (multi-channel).
32+
- Connector is swappable later without touching the agent — start Twilio if no Mac.
33+
34+
## Op 5 — The inbound brain
35+
- Per-message loop: look up client by phone (create + 3 onboarding questions if new) → classify text (log-type vs question) → call the matching log tool with parsed values → unknown values looked up via Apify/web, NEVER guessed → reply 1–2 warm sentences + one specific next action.
36+
- Make the agent ask before assuming — one clarifying question beats a wrong log that poisons every later nudge. Full system prompt in the source note.
37+
38+
## Op 6 — The proactive coach
39+
- The check-in is what clients actually pay for. Schedule trigger 2×/day max (over-texting gets muted).
40+
- Per active user: read last 7 days of logs vs `goals` → decide the SINGLE most useful nudge → send ONE short, specific text → log what was sent so the next run doesn't repeat it. Cron prompt in the source note.
41+
42+
## Loadout
43+
Claude (brain) · n8n (orchestrator) · Postgres/Supabase (DB) · LoopMessage / Twilio / Unipile (messaging) · Apify (lookups/enrichment). All free-tier or BYO except the connector.
44+
45+
## Guardrails
46+
- Business model first: name the human price and the agent price BEFORE building anything.
47+
- Ship the inbound brain (Op 5) before the proactive cron (Op 6) — reactive must work before proactive.
48+
- Per-client data isolation from day one (per-client tables or client_id scoping).

install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ if [ "${#MISSING_CRUMBS[@]}" -gt 0 ]; then
172172
fi
173173

174174
echo " Available commands: cskip, ctg, cc, ccr, ccc"
175-
echo " Available skills: /fswarm, /fmini, /fhive, /w4w, /concise, /bullets, /safetycheck, /gitfix, /recon, /osmani-build"
175+
echo " Available skills: /fswarm, /fmini, /fhive, /w4w, /concise, /bullets, /safetycheck, /gitfix, /recon, /osmani-build, /landing-ab, /agent-business"
176176
echo " Swarm tiers: /fswarm{1,2,3,max}, /fmini{1,2,3,max} — 1=think, 2=think hard, 3=think harder, max=ultrathink"
177177
echo ""
178178
echo " Three steps require interactive input — run them separately:"

landing-ab-skill/SKILL.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
name: landing-ab
3+
description: Build every landing page "self-driving" per the 5-level PostHog ladder (Angus Sewell field guide, 2026-07-03). Use whenever Nate asks to build, make, create, ship, spin up, redo, or redesign a landing page, marketing site, marketing page, splash page, one-pager, waitlist page, lead-magnet page, promo page/site, coming-soon page, or product page — or wants A/B testing, PostHog, analytics, heatmaps, session replay, conversion optimization, feature flags, or per-visitor personalization added to an existing page. Also invocable directly as /landing-ab.
4+
---
5+
6+
# /landing-ab — self-driving landing pages
7+
8+
Every landing page ships able to watch, test, and rebuild itself. No more frozen billboards.
9+
10+
**Source of truth:** `/Users/nathandavidovich/BRAIN2/02-Sources/SRC-2026-07-03-self-driving-landing-page.md` (archived PDF alongside). The ladder: L1 Static → L2 Watch → L3 Test → L4 Auto-iterate → L5 Personalize.
11+
12+
## Non-negotiable defaults on every new landing-page build (L1+L2 baked in)
13+
14+
1. **Tag the primary CTA** with `class="signup-cta"` — turns the L3 A/B test into a two-minute flag edit instead of a redeploy.
15+
2. **Wire PostHog at build time**, not later:
16+
```js
17+
// npm i posthog-js — in <head>/app entry (static page: HTML <script> snippet from PostHog docs)
18+
import posthog from 'posthog-js'
19+
posthog.init('<YOUR_PROJECT_KEY>', {
20+
api_host: 'https://us.i.posthog.com', // MUST match key region (US/EU) or 401s + no data
21+
defaults: '2026-05-30',
22+
enable_heatmaps: true
23+
})
24+
```
25+
Ask Nate once for the PostHog project key + region. Unknown → leave `<YOUR_PROJECT_KEY>` and flag it in `docs/LP-OPS.md`.
26+
3. **Stub the experiment flag hook** so L3 is pre-wired:
27+
```js
28+
posthog.onFeatureFlags(function () {
29+
if (posthog.getFeatureFlag('landing-ab') === 'test') {
30+
// render version B
31+
}
32+
})
33+
```
34+
4. **Light mode default** — never ship `prefers-color-scheme: dark` as default (standing rule `feedback_never_dark_mode`).
35+
5. **Drop `docs/LP-OPS.md`** into the repo (see template below) so the optimization loop survives the session.
36+
37+
Division of labor: `copywriting` owns the words, `high-end-visual-design` / `ui-ux-pro-max` own the look — this skill owns instrumentation + the optimization loop.
38+
39+
## docs/LP-OPS.md template (generate per repo, fill in repo/URL specifics)
40+
41+
- **L3 · Run an A/B test:** add `disable_web_experiments: false` to init → PostHog Toolbar → Experiment → New → pick `signup-cta` → edit variant B → set primary metric → Launch (auto 50/50). Call it ONLY at **95%+ chance to win AND ≥50 exposures/variant**. Set run length BEFORE launch; don't peek — early stops ship false winners.
42+
- **L4 · Weekly optimizer loop:** connect PostHog MCP read-only:
43+
`claude mcp add --transport http posthog "https://mcp.posthog.com/mcp?readonly=true" -s user`
44+
Weekly agent prompt:
45+
```
46+
You're my landing-page optimizer. Using the PostHog MCP (read-only), pull results
47+
for experiment 'landing-ab'. If a variant has >95% chance to win and ≥50
48+
exposures/variant, reply with: the winner, the % lift, and ONE specific change to
49+
test next. Wait for my "approved". On approval, edit the page in GitHub repo
50+
[me/site], open a PR, summarize. Never merge without my approval.
51+
```
52+
Schedule via GitHub Actions cron (Claude Code headless). Keep the human-approval gate; write access only on the deploy step.
53+
- **L5 · Personalize:** capture interest signals (`posthog.capture('viewed_pricing')`) → dynamic cohort ("performed X in last 30 days") → multivariate flag `lp-personalize` with JSON payload per variant, release condition targeted at the cohort:
54+
```js
55+
posthog.onFeatureFlags(function () {
56+
const r = posthog.getFeatureFlagResult('lp-personalize')
57+
if (r?.payload) applyContent(r.payload) // payload = { hero, cta, showPricing }
58+
})
59+
```
60+
GDPR: cookies + GeoIP are personal data — consent banner before L5. Need real volume per cohort before trusting a tailored variant.
61+
62+
## After the page ships
63+
64+
Offer once, one line: "Ladder next steps — L3 A/B now, L4 weekly optimizer (PostHog MCP + Actions cron), L5 per-cohort personalization?"
65+
66+
## Existing pages
67+
68+
Invoked on an already-live page: retrofit in ladder order — tag CTA → add PostHog → then whatever level Nate asked for. Never skip L2; everything above it is blind without data.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env bash
2+
# landing-ab-intent.sh — UserPromptSubmit hook.
3+
# On landing-page intent phrasing, inject a reminder to invoke the landing-ab skill
4+
# (self-driving landing page ladder: signup-cta tag, PostHog, flags, LP-OPS.md).
5+
# Silent on everything else.
6+
# Companion to ~/.claude/skills/landing-ab/SKILL.md and the vault source note
7+
# 02-Sources/SRC-2026-07-03-self-driving-landing-page.md (Angus Sewell field guide).
8+
9+
PROMPT=$(jq -r '.prompt // empty' 2>/dev/null)
10+
[ -z "$PROMPT" ] && exit 0
11+
12+
# Already invoking the skill explicitly — no reminder needed.
13+
printf '%s' "$PROMPT" | grep -Eq '/landing-ab\b' && exit 0
14+
15+
# Landing-page intent = LP-shaped noun, or optimization verbs aimed at a page/site.
16+
if printf '%s' "$PROMPT" | grep -Eiq '\blanding[- ]?pages?\b|\bsplash page\b|\bone[- ]pagers?\b|\bwaitlist (page|site)\b|\blead[- ]magnet page\b|\bmarketing (site|page)\b|\bpromo (page|site)\b|\bcoming[- ]soon page\b|\b(a/?b[- ]test|posthog|heatmaps?|session replay|personali[sz]e|conversion)\b.{0,60}\b(page|site|hero|cta)\b'; then
17+
cat <<'EOF'
18+
{"hookSpecificOutput":{"hookEventName":"UserPromptSubmit","additionalContext":"LANDING-AB ENFORCEMENT: This prompt pattern-matches landing-page intent. If this turn involves building or modifying a landing page — or adding analytics, A/B testing, or personalization to one — invoke Skill({skill: \"landing-ab\"}) BEFORE building. It enforces the self-driving ladder: signup-cta CTA tag, PostHog wiring at build time, landing-ab flag stub, docs/LP-OPS.md with the L3-L5 playbook. If landing pages are only mentioned in passing, ignore this silently."}}
19+
EOF
20+
fi
21+
exit 0

0 commit comments

Comments
 (0)