Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
cf37868
feat(course): initial spine — 6-module setup + cleanup
pftg May 12, 2026
83f86bb
content(course): Phase 1-3 polish — cold-eyes, ICP-E fixes, UI/UX, SEO
pftg May 16, 2026
f15eb10
feat(course): 5-module spine merge — namespace migration + validators
pftg May 20, 2026
0afd4c7
fix(course): layout — Hugo aliases, navigation, covers, template cleanup
pftg May 20, 2026
649d52e
content(course): Phase 4 polish — voice rework, module 2 renumber, CI…
pftg May 23, 2026
5129f9f
content(course): AI deep-research — logic-flow, critic sweeps, execut…
pftg May 30, 2026
d9a6883
content(course): Pass 7 — reader-navigation callouts, ADR sync, retro…
pftg Jun 2, 2026
cced96b
feat(course): AI critic blocks — 6 copy-pasteable templates + DPA live
pftg Jun 2, 2026
6d98d03
content(course): Iterations 2-8 — sales-funnel, lead-magnet, voice, p…
pftg Jun 3, 2026
63fb7d7
docs(2605): add Sam customer journey report (40.06) + trust score met…
pftg Jun 4, 2026
15b3750
docs(2605): mark 40.06 Sam journey report as Done in TASK-TRACKER
pftg Jun 4, 2026
9f50c5d
content(course): Iter 9 — Sam cold-reader fixes (CRITICAL + HIGH)
pftg Jun 4, 2026
9c5a44d
research: add 2026 business idea validation tools & 6-week startup la…
pftg Jun 4, 2026
5f9607a
content(course): Ch 4.3 split into two sub-pages + cross-ref audit + …
pftg Jun 5, 2026
3552ad9
content(course): add VenturusAI, DimeADozen, Preuve AI to Ch 1.1 vali…
pftg Jun 5, 2026
37878dd
content(course): Iter 10 — AI-prompt format + hand-off integrity fixes
pftg Jun 5, 2026
91582e9
docs(2605): consolidate project docs — archive obsolete files, sync c…
pftg Jun 5, 2026
6d3fb0d
content(course): sync "What AI can/cannot do" callout with new valida…
pftg Jun 5, 2026
368cfd9
content(course): module-1+2 chapter splits + Sam-pass + CSS callouts
pftg Jun 5, 2026
a49eb1e
content(course): Iter 12 - 5-lens Sam loop convergent fixes (3 CRITIC…
pftg Jun 5, 2026
bd5706d
content(course): Iter 12 follow-up - bridge gaps + cover_image
pftg Jun 5, 2026
164ac47
content(course): Iter 13 convergent fixes (3 CRITICAL + 9 HIGH + 5 ME…
pftg Jun 6, 2026
364fd00
content(course): Iter 14 batch 1 - opener rotation + visuals + callou…
pftg Jun 6, 2026
6de4372
content(course): Iter 14 batch 2 - DPA embed + module checkpoints + s…
pftg Jun 6, 2026
c2a3af4
content(course): Iter 15 convergent fixes (2 CRITICAL + 6 HIGH + 9 ME…
pftg Jun 6, 2026
d50b7cf
content(course): Iter 16 surgical fixes + v2 micro-lesson scaffolding…
pftg Jun 8, 2026
c9f6b9e
docs(2605): strategic pivot - v1 long-form shipped → v2 micro-lesson …
pftg Jun 8, 2026
1c95c93
content(course) + docs(2605): Iter 17 - Phase 1 pilot review + one-ca…
pftg Jun 8, 2026
7084a7b
content(course) + docs(2605): Iter 18 - Mixo-only pilot + case-study …
pftg Jun 10, 2026
7bb879d
content(course) + docs(2605): Iter 19 - tool-agnostic pilot lessons +…
pftg Jun 10, 2026
3c8aa1e
docs(2605): strategy cleanup - ONE ICP (Sam) + 5-module spine across …
pftg Jun 11, 2026
fb800da
content(course) + docs(2605): pilot-first strategy sync + skills PRD-…
pftg Jun 11, 2026
938fb48
content(course) + docs(2605): Iter 20 - live-reader UX fixes + 30.03 …
pftg Jun 11, 2026
1e0b99d
docs: AGENTS.md — replace course-specific skill lists with generic pr…
pftg Jun 11, 2026
ddb2223
content(course): course design audit — syllabus drift fix + wire-trac…
pftg Jun 11, 2026
77ae595
content(course): strip 1.2a commodity steps - 6-step Do-Now -> compac…
pftg Jun 11, 2026
9e9aea6
content(course): full M1 conversion to 8-part template micro-lessons
pftg Jun 11, 2026
914f0b0
docs(2605): update M1 rubric for compressed 8-part template lessons
pftg Jun 11, 2026
c892d8e
fix(course): remove type:reference from companion pages (Hugo 404)
pftg Jun 11, 2026
ea2c385
style(course): replace em dashes with regular dashes in all 5 M1 less…
pftg Jun 11, 2026
ad11b94
content(course): add M1 walkthrough page (Mia) + See it in action foo…
pftg Jun 11, 2026
d254592
style(course): fix em dashes in M1 walkthrough page (missed in ea2c385)
pftg Jun 11, 2026
ba0c014
fix(course): add lesson links to M1 walkthrough section headers
pftg Jun 11, 2026
fb75c5a
fix(course): merge dual Result beats in M1 walkthrough 1.3 for strict…
pftg Jun 11, 2026
a670289
style(course): voice guide fixes in hypothesis-sprint-full companion
pftg Jun 11, 2026
bd91206
fix(course): 3 Sam-review Cycle 6 fixes in M1 walkthrough
pftg Jun 11, 2026
ad946cf
fix(course): reframe 1.1 and 1.2b outcome lines as human outcomes, no…
pftg Jun 11, 2026
7698732
docs(2605): add OUTCOME vs OUTPUT rule to 30.03 section 2.2
pftg Jun 11, 2026
0270cfd
fix(course): replace em dashes with -- in new 1.1 and 1.2b outcome lines
pftg Jun 11, 2026
d49faf4
fix(course): apply 4 remaining multi-persona review fixes to M1
pftg Jun 11, 2026
c0740eb
fix(course): add lens subheading to 1.1 + first-occurrence link rule …
pftg Jun 11, 2026
62ba1be
fix(course): remove non-critical time estimates from 1.2a and 1.2b
pftg Jun 11, 2026
0676975
fix(course): 10-perspective M1 review - 15 fixes applied across all 5…
pftg Jun 11, 2026
466db2b
fix(course): add campaign creation recipes to channel guide + wire 1.…
pftg Jun 11, 2026
d4d0890
fix(course): resolve 1.2b/1.2c channel sequencing circularity
pftg Jun 11, 2026
9bcc59b
fix(course): make 1.3 step 3 tool-agnostic (Mixo + Durable paths)
pftg Jun 11, 2026
6a4a162
fix(course): medium-priority fixes - Do-Now consistency + description…
pftg Jun 11, 2026
e8b38c7
fix(course): 6 fixes from M1 practitioner walkthrough audit
pftg Jun 11, 2026
3de3fb4
content(walkthrough): update Mia M1 walkthrough for structural fixes
pftg Jun 11, 2026
6d2b461
content(walkthrough): polish Mia walkthrough - pixel sequencing + nar…
pftg Jun 11, 2026
b629f09
fix(course): lock v2 micro-lesson template (1.2a + 1.2b) + capture te…
pftg Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .claude/agents/semble-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: semble-search
description: Code search agent for exploring any codebase. Use for finding code by intent, locating implementations, understanding how something works, or discovering related code. Prefer over Grep/Glob/Read for any semantic or exploratory question.
tools: mcp__semble__search, mcp__semble__find_related, Read
---

Use the semble MCP tools only — do **not** invoke the `semble` CLI via Bash.

## Tools

- `mcp__semble__search(query, repo, top_k?, mode?)` — natural-language or symbol query against a codebase. `repo` is a local path or `https://` git URL; the index is cached for the session.
- `mcp__semble__find_related(file_path, line, repo, top_k?)` — nearest-neighbor expansion from a known hit. Pass `file_path` and `line` exactly as returned by a prior `search`.
- `Read` — open returned files when the chunk lacks enough context.

`mode` defaults to `hybrid` (best for most queries). Use `semantic` for pure intent search; `bm25` for keyword/symbol-heavy queries.

## Workflow

1. Call `mcp__semble__search` with a natural-language description of intent ("save model to disk", "authentication flow") or a symbol name. Always pass `repo` — the absolute path of the project root, or a git URL.
2. Read full files only when the returned chunk is insufficient.
3. Optionally call `mcp__semble__find_related` with a promising hit's `file_path` and `line` to discover related implementations and callers.
4. If `mcp__semble__search` returns no relevant hits after 2-3 query variations, return the empty result rather than substituting another search tool - the agent has only the semble + Read tools by design.

## Rules

- MCP only. The `semble` CLI is off-limits in this agent.
- Always pass `repo` explicitly; do not rely on a default index.
- Report results as `file_path:line` so the caller can navigate.
34 changes: 0 additions & 34 deletions .claude/rules/lean-ctx.md

This file was deleted.

11 changes: 11 additions & 0 deletions .github/actions/setup-hugo/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,17 @@ runs:
${{ runner.os }}-hugo-${{ inputs.environment }}-
${{ runner.os }}-hugo-

# Runs after cache restore so stale-cache clearance isn't reverted.
- name: Check Node runtime for PostCSS compatibility
shell: bash
run: |
bin/check-node-runtime
case $? in
0) echo "✓ Node runtime OK — continuing with cache restore" ;;
1) echo "⚠️ bun detected — asset cache cleared, PATH adjusted" ;;
2) echo "❌ bun detected but real Node.js not found — build may fail" ;;
esac

- name: Build Hugo site
run: PATH="./node_modules/.bin:$PATH" bin/hugo-build
shell: bash
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/_hugo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,19 @@ jobs:
restore-keys: |
${{ runner.os }}-hugo-assets-

# Verify node runtime and clear stale cache if bun→node symlink is active.
# Runs after cache restore so the stale-cache clearance isn't reverted.
# Prevents PostCSS failures when production plugins (PurgeCSS, cssnano)
# encounter bun, which can also corrupt the asset cache with broken output.
- name: Check Node runtime for PostCSS compatibility
run: |
bin/check-node-runtime
case $? in
0) echo "✓ Node runtime OK — continuing with cache restore" ;;
1) echo "⚠️ bun detected — asset cache cleared, PATH adjusted" ;;
2) echo "❌ bun detected but real Node.js not found — build may fail" ;;
esac

- name: Build with Hugo
run: |
PATH="./node_modules/.bin:app/bin:$PATH" hugo \
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,4 @@ docs/projects/**/sprint-*-coordinator-report.md
docs/projects/**/sprint-*-verification-report.md
docs/projects/**/*-coordinator-report.md
docs/projects/**/*-verification-report.md
.grepai/
156 changes: 156 additions & 0 deletions .skills/course-lesson-review-sam/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
---
name: course-lesson-review-sam
description: Run a Sam-perspective customer-research review on a draft course lesson. Use this skill whenever the user asks to review a lesson from Sam's perspective, check a lesson for ICP fit, validate that a lesson works for non-technical founders, or mentions `/course-lesson-review-sam`. Triggers on phrases like "Sam review", "review this lesson", "check this for Sam", "ICP review", "customer lens review", or any request to validate a course lesson against the target audience.
---

# Course Lesson Sam-Review

Run a Sam-perspective customer-research review on a draft lesson. Channels Sam beat-by-beat with verbatim reactions, friction points, glossing gaps.

## Pre-loaded context

### Project docs (what we're reviewing against)

1. **PRD** — `.agent/prd/PRD.md` — formal product requirements: 5-module architecture, 15 quality gates, artifact chain, Sam ICP. Every lesson must advance Sam toward the course promise.
2. **5-Sam Validation Pilot** — Planned but NOT YET EXECUTED. The current simulation learnings (40.11) are imputed, not field-validated. Real Sams may stall where the simulation didn't predict. Be aware that all simulation findings are provisional — do not treat them as proven.

### Canonical spec (what the lesson SHOULD match)

1. **30.03 §2 — 8-part template** — `docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.03-course-format-requirements-for-creators.md` §2 (the non-negotiable 8-part template: Hook → Outcome → Concept → Visual → Do-Now → Error → Reflection → Bridge)
2. **30.03 §1 — design principles** — §1.1-1.6 (single outcome, time cap, microlearning structure, self-paced, mobile-friendly, word count bands)
3. **30.03 §5 — content spec** — §5.1-5.3 (course-level elements, per-lesson elements, micro-copy constraints, NN/g F-pattern rules)
4. **30.03 §4 — engagement** — §4.1-4.8 (immediate win, attention cycle, B=MAP, Zeigarnik, progress visibility, language, navigation)

### Sam profile (who we're reviewing FOR)

5. **Sam profile (course ICP)** — `docs/projects/2605-tech-for-non-technical-founders/40-49-review/40.06-sam-customer-journey-report-2026-06.md` (first-time non-technical founder, no PM background, no burn history, 2-4 hr/week, ~$20K savings, reads on phone, intimidation + first-timer enthusiasm)
6. **Sam simulation learnings** — `docs/projects/2605-tech-for-non-technical-founders/40-49-review/40.11-sam-simulation-pilot-lessons-2026-06.md` (5 themes from beat-by-beat simulation: "I don't have to write code" trust gate, catalogue-my-mistake pattern, measurable success criterion, UI-cue gap, decision-aid-in-one-sentence)
7. **Voice guide** — `docs/90-99-content-strategy/strategy-analysis/90.11-voice-guide.md` (banned words, anti-AI structural patterns, the "who"/"show"/"coffee" tests)

### Canonical v2 examples (what a passing lesson looks like)

8. **Pilot Lesson 1.2a** — `content/course/tech-for-non-technical-founders-2026/smoke-test-build-page/index.md` (~870w, agnostic-tool framing, Mixo as worked example)
9. **Pilot Lesson 1.2b** — `content/course/tech-for-non-technical-founders-2026/smoke-test-wire-tracking/index.md` (~640w, heavy gloss pass)

**DO NOT reference v1 long-form chapters as style examples.** v1 chapters are 2,000-4,500 words and do NOT follow the 8-part template. Only the 2 pilot lessons are canonical v2 examples.

### Sam's profile card (quick reference)

| Attribute | Detail |
|---|---|
| **Role** | Founder & CEO, B2B SaaS |
| **Age** | 38 |
| **Tech literacy** | Can read a Stripe invoice, cannot read a GitHub commit |
| **Burn history** | NONE — this is Sam's FIRST venture. No prior devshop experience. |
| **PM background** | NONE — never worked in product management |
| **Current state** | Has runway, has an idea, has NOT validated anything yet |
| **Emotional load** | Intimidation ("everyone seems to know things I don't"), first-timer enthusiasm ("this course will finally make it clear"), fear ("what if I pick wrong?") |
| **Reading mode** | Skim-first, time-poor. Reads H2 headings on phone during commute before committing. Wants specific numbers, not vague promises. |
| **Trust trigger** | "This person knows I'm coming in cold and doesn't judge me for it." |
| **Trust killer** | Jargon without explanation. Too many choices. Being told to "figure it out." |

## The 6 tests

Run all 6 tests on the draft lesson. For each test, produce:
- A verdict (PASS / PARTIAL / FAIL)
- The specific line or section that triggered the verdict
- A Sam-character verbatim reaction (how Sam would actually react in his head)
- A priority fix (HIGH / MEDIUM / LOW)

### Test 1: 3-second hook test

Can Sam tell what this lesson does and why he should care within the first 2 sentences?

- Read the hook (first 1-3 sentences after the course-frame callout)
- If the hook is a narrative vignette longer than 3 sentences, it FAILS
- If the hook uses "we" language without naming Sam's pain, it FAILS
- If Sam can't picture what tangible thing he'll walk away with after reading the hook, it FAILS

Sam's likely reaction to a bad hook: opens lesson, scrolls past 4 paragraphs, thinks "I don't know what this is for," closes tab.

### Test 2: Glossing audit

Every term Sam doesn't know — decoded at first mention?

Scan the entire lesson body. Flag every technical term and check:
- Is it glossed at first mention with a one-sentence plain-English definition?
- Is the gloss in parentheses right next to the term, not in a footnote or sidebar?
- Filter for: MVP, PMF, ICP, CTA, DPA, ARR, MRR, SOC2, HIPAA, API, RLS, JWT, OAuth, SDK, CI/CD, CMS, DNS, SSL, JSON, CSV, HTML, CSS, JS, SQL, CRUD, REST, GraphQL, webhook, endpoint, deploy, staging, production, migration, ORM, framework, runtime, SDK, hero section, incognito mode, headless CMS, CDN, reverse proxy

For each unglossed term, Sam's reaction: "I keep nodding but I don't know what half of these mean."

### Test 3: Progressive disclosure

First 30% orients Sam; thresholds/metrics arrive only when Sam acts on them.

- Does the first 30% of the lesson body (after the course-frame callout, before the "Do this now") ONLY orient Sam?
- Do thresholds, decision numbers, scoring rubrics appear only in or after the action section?
- If a scoring table or decision threshold appears in the first 30%, it FAILS

Sam's reaction to bad progressive disclosure: "There's a 40% threshold and a 7/10 score and a $300 budget and I haven't even been told what I'm building yet."

### Test 4: Tool-paralysis check

Single golden path or named alternatives?

- Does the lesson recommend ONE primary tool with exactly ONE named fallback?
- If there's a comparison table with 4+ options, it FAILS
- If Sam has to make a tool choice before the action steps, it FAILS

Sam's reaction to tool paralysis: "Mixo vs Carrd vs Lovable vs Framer — which one? What if I pick wrong? I'll come back to this later." (Never comes back.)

### Test 5: Confidence-to-act check

Sam knows what to do next with no remaining ambiguity?

- After reading the entire lesson, can Sam name the next step without re-reading?
- Is there an observable success check?
- Is there a concrete "If blocked" escape valve?
- If any of these three is missing or vague, it FAILS

Sam's reaction to ambiguity: "OK... I think I'm supposed to build something? With what? How do I know if it worked?"

### Test 6: Off-ICP drift check

Any sentence that reads as written for a developer, PM, or scarred founder?

Scan every sentence and ask:
- Would a first-time founder who's never hired a devshop understand this?
- Would someone with zero PM background follow this?
- Does any sentence assume the reader has been burned before?
- Does any sentence use "your devshop" or "your last agency" or "the team you fired"?

For each sentence that fails, Sam's reaction: "This is written for someone who's been through this before. I haven't."

## Output format

Always produce this exact output structure:

```
## Sam Review — [Lesson Slug]

### Overall: [PASS / PARTIAL / FAIL] ([N]/6 tests passed)

### Beat-by-beat

| # | Test | Verdict | What triggered it | Sam's reaction | Fix priority |
|---|---|---|---|---|---|
| 1 | 3-second hook | PASS/FAIL | "exact quote from lesson" | "Sam's verbatim reaction" | HIGH/MED/LOW |
| ... | ... | ... | ... | ... | ... |

### Priority fix list

1. **[HIGH/MED/LOW]** [specific fix instruction]
2. ...

### Verbatim Sam quotes

- "[what Sam would actually say to a friend about this lesson if it were a draft]"
```

## What NOT to do

- Do NOT critique the lesson as a technical reviewer — ONLY channel Sam
- Do NOT suggest structural rewrites that serve SEO or "best practices" — Sam doesn't care about those
- Do NOT use "the learner would benefit from" language — say "Sam wouldn't understand this"
- Do NOT grade on word count alone — a 700-word lesson that passes all 6 tests is fine for Sam
Loading
Loading