-
Notifications
You must be signed in to change notification settings - Fork 0
feat(course): P0-P1 sprints - funnel instrumentation, media/typography polish, printable PDFs #356
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
7d9a7e7
feat(course): Sprint A - funnel instrumentation + Clarity hook + pilo…
b5a2ac6
fix(course): Sprint B media/typography - TL;DR accent, de-stacks, M1 …
b1b35f7
feat(course): Sprint B covers - 5 walkthrough heroes + artifact-trail…
3d9131c
feat(course): Sprint C - printable PDF thin slice (5 worksheets + pip…
f6f5fba
fix(course): 5.7 cadence mermaid - bump diagram fontSize for the LR l…
c75cefb
docs(course): review notes on blockquote hook + tracker sprint log
348b7a8
fix(course): PDF visual review round - literal markdown in worksheet …
d229fd6
fix(course): PDF cold-eyes round 1 + user-reported pivot-wheel overla…
7418b49
fix(course): exhaustive visual sweep - 13 SVG geometry fixes + 5.1 ca…
cc7df50
fix(course): visual sweep round 2/3 residuals - matrix stale labels, …
9ba7567
chore: gitignore claude-flow init scaffolding (skills/helpers/generat…
6691d8f
fix(course): premium swarm review - 8-dimension pass over all 61 page…
05d89a3
fix(course): reflection round on the premium review - patterns behind…
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| #!/usr/bin/env bash | ||
| # | ||
| # generate-template-pdfs - render printable PDFs for the course template | ||
| # companion pages using headless Chrome. | ||
| # | ||
| # SINGLE SOURCE OF TRUTH: the page markdown under content/course/... . The PDFs | ||
| # committed into each page's bundle are DERIVED artifacts. Regenerate them | ||
| # whenever any of the 5 pages below (or the print CSS in single-post.css) | ||
| # changes, so the paper version stays in sync with the web page. | ||
| # | ||
| # Usage: | ||
| # bin/hugo-build # build the site into _dest/public-dev FIRST | ||
| # bin/generate-template-pdfs | ||
| # | ||
| # Each PDF is written INTO the page's own Hugo page-bundle as <slug>.pdf, so | ||
| # Hugo copies it out as a bundle resource on the next build and the on-page | ||
| # "Download the PDF" link resolves. | ||
|
|
||
| set -euo pipefail | ||
|
|
||
| REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" | ||
| BUILT_DIR="${REPO_ROOT}/_dest/public-dev/course/tech-for-non-technical-founders-2026" | ||
| CONTENT_DIR="${REPO_ROOT}/content/course/tech-for-non-technical-founders-2026" | ||
| CHROME="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" | ||
|
|
||
| # Seconds to let Chrome render before the watchdog kills it. Chrome writes the | ||
| # PDF well within this window but often will NOT exit on its own (the site's JS | ||
| # keeps timers alive under --virtual-time-budget), so we reap it ourselves. | ||
| RENDER_TIMEOUT=25 | ||
|
|
||
| # The 5 template companion pages that get a printable PDF. Edit this list when | ||
| # the set of printable templates changes. | ||
| SLUGS=( | ||
| build-path-decision-worksheet | ||
| mom-test-interview-script | ||
| ownership-checklist | ||
| validated-problem-statement-template | ||
| first-paying-customer-operating-kit | ||
| ) | ||
|
|
||
| if [[ ! -x "${CHROME}" ]]; then | ||
| echo "ERROR: Google Chrome not found at: ${CHROME}" >&2 | ||
| exit 1 | ||
| fi | ||
|
|
||
| if [[ ! -d "${BUILT_DIR}" ]]; then | ||
| echo "ERROR: built site not found at ${BUILT_DIR}. Run bin/hugo-build first." >&2 | ||
| exit 1 | ||
| fi | ||
|
|
||
| fail=0 | ||
| for slug in "${SLUGS[@]}"; do | ||
| src="${BUILT_DIR}/${slug}/index.html" | ||
| out="${CONTENT_DIR}/${slug}/${slug}.pdf" | ||
|
|
||
| if [[ ! -f "${src}" ]]; then | ||
| echo "MISSING source HTML: ${src}" >&2 | ||
| fail=1 | ||
| continue | ||
| fi | ||
|
|
||
| # Own throwaway profile dir so we never touch the shared MCP browser profile. | ||
| profile="$(mktemp -d)" | ||
|
|
||
| # --virtual-time-budget lets client-rendered content (e.g. Mermaid diagrams) | ||
| # finish before capture. Run in the background with a watchdog so a Chrome | ||
| # that renders the PDF but never exits cannot stall the whole batch. | ||
| "${CHROME}" \ | ||
| --headless \ | ||
| --disable-gpu \ | ||
| --no-sandbox \ | ||
| --user-data-dir="${profile}" \ | ||
| --no-pdf-header-footer \ | ||
| --virtual-time-budget=8000 \ | ||
| --print-to-pdf="${out}" \ | ||
| "file://${src}" >/dev/null 2>&1 & | ||
| chrome_pid=$! | ||
| ( sleep "${RENDER_TIMEOUT}"; kill -9 "${chrome_pid}" 2>/dev/null ) & | ||
| watchdog_pid=$! | ||
| wait "${chrome_pid}" 2>/dev/null || true | ||
| kill "${watchdog_pid}" 2>/dev/null || true | ||
| wait "${watchdog_pid}" 2>/dev/null || true | ||
|
|
||
| rm -rf "${profile}" | ||
|
|
||
| if [[ -f "${out}" ]]; then | ||
| size=$(wc -c < "${out}") | ||
| printf 'OK %-40s %8d bytes\n' "${slug}.pdf" "${size}" | ||
| else | ||
| echo "FAILED to render: ${slug}" >&2 | ||
| fail=1 | ||
| fi | ||
| done | ||
|
|
||
| exit "${fail}" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
-925 KB
(52%)
.../course/tech-for-non-technical-founders-2026/agency-ai-five-questions/cover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion
2
...t/course/tech-for-non-technical-founders-2026/agency-ai-five-questions/index.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
-841 KB
(54%)
...ch-for-non-technical-founders-2026/agency-uses-ai-follow-up-questions/cover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
-855 KB
(54%)
...-non-technical-founders-2026/ai-token-bill-dev-shop-pass-through-cost/cover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file added
BIN
+403 KB
...n-technical-founders-2026/build-path-decision-worksheet/build-path-decision-worksheet.pdf
Binary file not shown.
Binary file modified
BIN
-922 KB
(52%)
...se/tech-for-non-technical-founders-2026/build-path-decision-worksheet/cover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Update "click" to "sign-up" for metric consistency.
Line 232 changed the smoke-test metric from "click rate" to "sign-up rate," and lines 73-75 define the metric as "the share of visitors who left their email." Line 219 still says "0 of 30 click," which is inconsistent with the updated terminology.
💚 Proposed fix
📝 Committable suggestion
🤖 Prompt for AI Agents