Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
328 commits
Select commit Hold shift + click to select a range
ef1c57a
Dashboard v4: add Show Full Research Data button + expandable panel w…
Graehamwatts Apr 19, 2026
1172899
Dashboard v4.1: add paired 'Copy Production Content' button on YT Lon…
Graehamwatts Apr 19, 2026
298ef76
Canonical single-topic dashboard template saved: 3 Python builders + …
Graehamwatts Apr 19, 2026
512d7a1
Cleanup pass: DRE 02015066→01466876 across 13 files, video-script-cre…
Graehamwatts Apr 19, 2026
4e69821
Deep QC fix pass: (1) topic-history year-drift 2025→2026 on EPA Prici…
Graehamwatts Apr 19, 2026
c3a2fd3
Newsletter generator: new skills/newsletter-generator/ skill with CMA…
Graehamwatts Apr 19, 2026
518d89a
Label fix: rename primary 'Production Content (ready to post)' → 'Rea…
Graehamwatts Apr 19, 2026
801e47b
Flow-map layout fix: wrap flow cards onto multiple rows instead of ho…
Graehamwatts Apr 19, 2026
d1c43a9
Label clarity: rename generic 'Copy Content' button to format-specifi…
Graehamwatts Apr 19, 2026
6c065ca
Fix label clarity: each of 15 format buttons now has a distinct, form…
Graehamwatts Apr 19, 2026
e53a8ce
Move 'Show Full Research Data' button to the top — now appears just b…
Graehamwatts Apr 19, 2026
75b7ad8
Repair build_dashboard_v4.py truncated print statement at end of file
Graehamwatts Apr 19, 2026
61a7b8f
Swap Monday April 20 topic to EPA 2 Years Homicide-Free. Replaced 233…
Graehamwatts Apr 19, 2026
fb16b3b
Clean up orphaned Monday cb-card in weekly calendar — replaced old EP…
Graehamwatts Apr 19, 2026
0e18fb8
Add visible HeyGen render instruction blocks to 5 video formats (YT L…
Graehamwatts Apr 19, 2026
456931c
Dashboard #2 (test): Peninsula Bidding Wars Back — full single-topic …
Graehamwatts Apr 19, 2026
2788dfa
Dashboard UX overhaul (both EPA + Peninsula dashboards): (1) Research…
Graehamwatts Apr 19, 2026
338778b
Port V6 weekly calendar intel sections to single-topic dashboards (al…
Graehamwatts Apr 19, 2026
9e9b0b5
Dashboard #3: EPA Market Update — owner-focused MOFU/BOFU piece on EP…
Graehamwatts Apr 20, 2026
da9bff8
Add Copy Bank section to all single-topic dashboards — compact consol…
Graehamwatts Apr 20, 2026
8cfb13b
Dashboards #4 + #5 live: Smoke Detector Compliance (CA R314 + H&S §13…
Graehamwatts Apr 20, 2026
05a75eb
Add 7-Day Posting Calendar section to all 5 single-topic dashboards. …
Graehamwatts Apr 20, 2026
c209d9d
Automated HeyGen rendering via local Python + Windows env var (MCP-fr…
Graehamwatts Apr 20, 2026
1d223dc
Fix SyntaxWarning in heygen_render.py: remove erroneous backslash bef…
Graehamwatts Apr 20, 2026
231aebd
Allow --dry-run to work without HEYGEN_API_KEY env var (for verificat…
Graehamwatts Apr 20, 2026
c8fa34e
Render monitor + dashboard auto-embed loop: Python script polls HeyGe…
Graehamwatts Apr 20, 2026
5186d5c
Update render_status.json (2026-04-19 22:26)
Graehamwatts Apr 20, 2026
1bf1223
Fix dashboard source-dump bug: (1) patch_dashboards_render_status.py …
Graehamwatts Apr 20, 2026
38043cd
Add Peter onboarding email: one-page HTML brief with 5 dashboard URLs…
Graehamwatts Apr 20, 2026
b892df0
Peter onboarding email v2 — visual redesign: hero with stat-trio (5 d…
Graehamwatts Apr 20, 2026
413ff50
Dashboard v5 redesign (EPA Two Years prototype): 'Monday April 20 · R…
Graehamwatts Apr 20, 2026
cf916f4
Dashboard v6 UNIFY — full visual language restyle (EPA Two Years prot…
Graehamwatts Apr 20, 2026
84688a0
Fix v6 accordion text readability: the Power-User ElevenLabs block ha…
Graehamwatts Apr 20, 2026
2ee80f3
UNIFIED_FINAL_V1 — collapse 4 layered stylesheets into ONE consolidat…
Graehamwatts Apr 21, 2026
c2525e1
Canonical builder integration: SKILL.md Rule 7 mandates running scrip…
Graehamwatts Apr 21, 2026
cbf6a03
Major polish + streamline pass: (1) UNIFIED_FINAL_V2 — hero h1 contra…
Graehamwatts Apr 21, 2026
2b58998
Builder integration + weekly calendar update: (1) single-topic-dashbo…
Graehamwatts Apr 21, 2026
81571f5
Batch render (workflow #1): single command renders all 5 video format…
Graehamwatts Apr 21, 2026
3ac4f84
Add llm-council skill (Karpathy LLM Council methodology) - 22-04-2026…
Graehamwatts Apr 22, 2026
976bc8a
Architectural streamline: two-score model (Opportunity + Intent)
Graehamwatts Apr 22, 2026
cae4ee5
Post-audit cleanup: kill residual video-script-generator refs, fix st…
Graehamwatts Apr 22, 2026
25705ac
Implement Rule 13 spec + body, fix trigger collisions
Graehamwatts Apr 23, 2026
5e63518
Close architectural gaps 1-5: Rule 14, time-decay, priority axes, ove…
Graehamwatts Apr 23, 2026
4e5189b
Rule 14 enforcer: weekly-calendar-builder.py + v7 calendar for week o…
Graehamwatts Apr 23, 2026
edf188b
Integrate weekly calendar <-> single-topic dashboards via nav bar + b…
Graehamwatts Apr 23, 2026
6d9473b
Retrofit Rule 13 scoring panel onto 5 existing single-topic dashboards
Graehamwatts Apr 23, 2026
c4cfc03
Align Scoring + Research dropdowns: same width, matching chrome, both…
Graehamwatts Apr 23, 2026
92effcd
Remove 3 orphan </div> tags causing .page container to close prematurely
Graehamwatts Apr 23, 2026
d7382d8
Final audit fixes: hero pills on 4 dashboards + phase numbering
Graehamwatts Apr 23, 2026
0e8de1e
Clean calendar inventory: this week + next week only, drop archival
Graehamwatts Apr 23, 2026
b816067
Dedupe next-week calendar + wire cross-week tracking via topic-history
Graehamwatts Apr 23, 2026
a6b07b3
Add Main Dashboard hub (index.html) + back-links from all 7 dashboards
Graehamwatts Apr 23, 2026
725d271
Rebuild: Main Dashboard + 5 day views with new visual system
Graehamwatts Apr 23, 2026
914c038
Widen day views + build real Content Creation section with 15 format …
Graehamwatts Apr 23, 2026
c2ad720
P1-P5 + Sabrina-borrowed templates + MLS/News scraper skills
Graehamwatts Apr 24, 2026
225b5e5
Add Consequence & Urgency section (Monday) + fix 20 research 404s
Graehamwatts Apr 24, 2026
af26d48
Fix modal buttons — swap fragile <template> for bulletproof <script t…
Graehamwatts Apr 24, 2026
55375f9
Remove Consequence & Urgency section — I misread Sabrina's principle
Graehamwatts Apr 24, 2026
8dc67e1
Fix orphan div tags + restore Monday modal functionality
Graehamwatts Apr 24, 2026
269d640
Rewrite youtube-script-template: 4 principles are PARALLEL rules, not…
Graehamwatts Apr 24, 2026
36d0b1b
Populate Tuesday with full 15-format content (Bay Area Mortgage Rates…
Graehamwatts Apr 24, 2026
cd8c7be
Propagate modal JS fix to Tue/Wed/Thu/Fri (all 4 had the old broken o…
Graehamwatts Apr 24, 2026
e48a444
Add Copy Prompt + Production Brief buttons to format cards (Mon+Tue)
Graehamwatts Apr 24, 2026
53b27df
Rewrite prompts: explicit timing math + comprehensive output per format
Graehamwatts Apr 24, 2026
7e8b1df
Add 3 new skills: seo-optimizer, copywriter, context-engineer
Graehamwatts Apr 24, 2026
045062b
Talking-Head prompt now demands plain script + SSML + production in o…
Graehamwatts Apr 24, 2026
411883c
Tasks 1-4 complete + legacy cleanup
Graehamwatts Apr 24, 2026
afb3914
room-redesign: new skill — virtual staging / redesign via direct Gemi…
Graehamwatts Apr 24, 2026
632f5a7
Sync local-only skills to repo: consolidate-memory, higgsfield-video,…
Graehamwatts Apr 24, 2026
9de7a8e
Fix DRE: replace 02015066 -> 01466876 in video-script-creation-engine…
Graehamwatts Apr 24, 2026
de8beeb
Reset: April 27 is now current week — pretend April 20 dev cycle neve…
Graehamwatts Apr 25, 2026
e12f0fd
Architectural fix: identity tripwire + in-production register
Graehamwatts Apr 25, 2026
05a75b6
Fix the recurring regression: 3-button architecture + dead-link clean…
Graehamwatts Apr 25, 2026
ddb11a0
Save stable state snapshot v2026.04.27-stable
Graehamwatts Apr 25, 2026
1e6cfd9
Add new-deal-onboarding skill: PCFS sync for newly closed deals (Shee…
Graehamwatts Apr 29, 2026
ec8b5cd
Rename new-deal-onboarding → past-client-follow-up-system and expand …
Graehamwatts Apr 29, 2026
e668631
offer-analyzer: full-width CMA-branded HTML output + GitHub Pages pub…
Graehamwatts Apr 29, 2026
aaf7273
offer-analyzer: replace net sheet tabs with side-by-side comparison t…
Graehamwatts Apr 29, 2026
df043b8
Fix DRE leak in offer-analyzer + add server-side tripwire enforcement
Graehamwatts Apr 30, 2026
930d4d1
Add top-level CLAUDE.md onboarding for future Claude sessions
Graehamwatts Apr 30, 2026
858bdb3
Tripwire: support documentation-exempt files
Graehamwatts Apr 30, 2026
2b55a28
Reorganize repo: clean root, consolidate skills
Graehamwatts Apr 30, 2026
af941e4
Phase 2 reorg: fix tripwire location, retire docs ref to deleted files
Graehamwatts Apr 30, 2026
7e128a4
Restore output bins; retire dead Rule 7 references
Graehamwatts Apr 30, 2026
da23c8e
Repoint publish targets to cma-reports subfolders + harden DRE rule
Graehamwatts Apr 30, 2026
3bbb3b1
Fix mangled DRE warning wording in cma-generator + offer-analyzer SKI…
Graehamwatts Apr 30, 2026
8b049fe
Option B: pure source-code repo — outputs move to cma-reports
Graehamwatts Apr 30, 2026
c34f316
Fix sed cascade: Graehamwatts/skills/cma-reports → Graehamwatts/cma-r…
Graehamwatts Apr 30, 2026
21f811b
Test preview: blog + video dashboards for week of April 27 2026
Graehamwatts Apr 30, 2026
81162f3
Add research-intelligence dashboard for week of Apr 27 test preview
Graehamwatts Apr 30, 2026
93c94b9
Add methodology section to research dashboard — 'How this drives topi…
Graehamwatts Apr 30, 2026
c662c56
Phase 2-7: BOFU standalones + Pantana audit + integrations + architec…
Graehamwatts May 1, 2026
8a575fa
Create 2026-04-30-woodland-park-772-units-production.html
Graehamwatts May 1, 2026
c8b1f72
Migrate publishing target from cma-reports to online-content
Graehamwatts May 2, 2026
d59021c
Was empty before — outputs/ and credential files were not actually gi…
Graehamwatts May 2, 2026
168c047
Add shared-references/publishing-via-composio.md + update 6 skills to…
Graehamwatts May 3, 2026
c69507e
Strip Eric references from canonical docs + published artifacts (Eric…
Graehamwatts May 3, 2026
5b6d537
Cleanup: remove old published/blog-dashboards artifacts (April test-p…
Graehamwatts May 3, 2026
40d4853
Mark v5.4 weekly calendar as canonical template format (locked May 2026)
Graehamwatts May 3, 2026
7a14db1
newsletter-generator: document monthly cadence — n8n workflow ID, Pet…
Graehamwatts May 3, 2026
dc438bf
newsletter-generator: v2 structure + Peter runbook + Composio-Gmail-d…
Graehamwatts May 3, 2026
a2daa25
higgsfield-video: add GPT Image 2 routing rule for text-in-frame shots
Graehamwatts May 3, 2026
f529c7e
Add emails directory
Graehamwatts May 4, 2026
f49ba3f
Add weekly-listing-update skill
Graehamwatts May 4, 2026
d6821f3
Add weekly-listing-update parser script
Graehamwatts May 4, 2026
691bf7c
Add John weekly-update Monday SOP
Graehamwatts May 4, 2026
5a281c7
Add weekly seller status report: 1908 Cooley Ave - May 3 2026
Graehamwatts May 4, 2026
59ade06
Add weekly-listing-update template (matches 1908 Cooley issue 01)
Graehamwatts May 4, 2026
6f51ec3
Remove misplaced emails/ folder — content moved to online-content repo
Graehamwatts May 4, 2026
fe27209
Harden .gitignore: add github-token.txt and broader token patterns
Graehamwatts May 4, 2026
2bbfe2c
github-skill-sync: rewrite for two-repo architecture (skills + online…
Graehamwatts May 4, 2026
8138a5a
weekly-listing-update: fix broken paths — emails go to online-content…
Graehamwatts May 4, 2026
25aabe7
Remove obsolete skills: github-skill-sync (replaced by Composio publi…
Graehamwatts May 4, 2026
e788eac
heygen-elevenlabs-renderer: replace stale session-id paths with works…
Graehamwatts May 5, 2026
cbe29f4
Rename skills/remotion to skills/remotion-rules (clarify reference li…
Graehamwatts May 5, 2026
6798661
heygen-elevenlabs-renderer: catch last V6 SSML reference (line 13)
Graehamwatts May 5, 2026
fb2d5f9
Sweep V6 to v5.4 in heygen-elevenlabs-renderer internal files: 7 sour…
Graehamwatts May 5, 2026
41f91d9
weekly-listing-update: swap mailto for {{GHL_CALENDAR_URL}} + add tap…
Graehamwatts May 5, 2026
7f32632
Add watts-motion-graphics skill — chroma-key Remotion overlay system
Graehamwatts May 6, 2026
351400e
Add 'Always render, never hand off source' standing rule to watts-mot…
Graehamwatts May 7, 2026
4750132
Add property-os-sync skill — Obsidian vault <-> GitHub sync for Prope…
Graehamwatts May 8, 2026
bd1f480
property-os-sync: exclude .gitignore from rsync delete (prevents nigh…
Graehamwatts May 8, 2026
e556e0e
temp: epa broll image clip2_drone_epa.jpg
Graehamwatts May 10, 2026
a1caf70
temp: epa broll image clip4a_woodland.jpg
Graehamwatts May 10, 2026
a2596d5
temp: epa broll image clip4b_gardens.jpg
Graehamwatts May 10, 2026
864f329
temp: epa broll image clip4c_westside.jpg
Graehamwatts May 10, 2026
b93f111
temp: epa broll image clip5_drone.jpg
Graehamwatts May 10, 2026
12de96d
Add email: Kawajla — N8N migration brief (2026-05-11)
Graehamwatts May 12, 2026
3bb6b1e
Rename emails/ to online-content/ to match folder convention
Graehamwatts May 12, 2026
296f91b
ghl-crm-audit: demote Windsor to BACKUP, promote N8N HighLevel creden…
Graehamwatts May 12, 2026
c2110b1
social-media-analyzer: demote Windsor to backup, document direct-path…
Graehamwatts May 12, 2026
79daecd
consolidate: absorb social-media-analyzer into content-calendar (dele…
Graehamwatts May 12, 2026
f315de5
consolidate: absorb social-media-analyzer into content-calendar (dele…
Graehamwatts May 12, 2026
3fba2b2
audit: delete social-media-analyzer (merge-resurrected zombie), add v…
Graehamwatts May 12, 2026
eb48d2d
consolidate: absorb 4 skills into parents per skill-deprecation-protocol
Graehamwatts May 13, 2026
489cca4
cleanup: remove session-local scripts from repo; add .gitignore entries
Graehamwatts May 13, 2026
abee0a0
feat(content-creation-engine): add YouTube Shorts enumeration via Com…
Graehamwatts May 13, 2026
e16a36b
feat(integrations): add yt-dlp as canonical dependency (#14)
Graehamwatts May 14, 2026
a0fb603
feat(research-sources): add canonical competitor channels table to Se…
Graehamwatts May 14, 2026
eab20d7
chore: add .env / *.env.local to .gitignore so local credential files…
Graehamwatts May 14, 2026
1e65d38
C2-4 Peninsula start frame (temp)
Graehamwatts May 14, 2026
2b1bf96
content-creation-engine: add Tier 2 Impact+Ease ranking + 7-type Comp…
Graehamwatts May 14, 2026
1536aee
chore(vsce): append week of 2026-05-11 to topic-history.json
Graehamwatts May 14, 2026
1d7f7d7
cleanup: delete zombie video-script-creation-engine + fix 8 broken cr…
Graehamwatts May 14, 2026
07243af
feat(weekly-calendar-rules): add Rule 15 -- Main Dashboard canonical …
Graehamwatts May 14, 2026
a76027d
feat(content-calendar): replace stub with canonical Rule 15 builder r…
Graehamwatts May 14, 2026
473e9e8
Add 2 personal skills: language-tutor (mavgpt.ai adapted, 9-step adap…
Graehamwatts May 15, 2026
384b595
Add contract-estimate-builder + scrub zombie DRE 02015066 (#11)
Graehamwatts May 15, 2026
ff5f695
Add maintenance scripts (cleanup_skills, sync_skills, claude_with_cac…
Graehamwatts May 15, 2026
4ea203c
watts-motion-graphics: add 3D Title Card mode (6th mode)
Graehamwatts May 15, 2026
602d72a
watts-motion-graphics: trim description under 1024-char upload limit
Graehamwatts May 15, 2026
485477c
Bake mandatory humanizer pass into CMA workflow
Graehamwatts May 15, 2026
cea8f28
Remove deprecated github-skill-sync from plugin description and activ…
Graehamwatts May 15, 2026
930d681
Replace github-skill-sync references in watts-motion-graphics and roo…
Graehamwatts May 15, 2026
3a8448e
Soften HARD RULES: PAT+javascript_tool is approved Composio fallback
Graehamwatts May 15, 2026
47fb531
Wire humanizer final-pass into 6 client-facing skills (Tier 1)
Graehamwatts May 15, 2026
4e07f29
contract-estimate-builder: add licensing-risk disclaimer paragraph
Graehamwatts May 15, 2026
b4b59c8
Add ai-library skill — registers the private AI Library reference (Do…
Graehamwatts May 15, 2026
d417112
Fix path consistency: standardize on cmas/ (plural) everywhere
Graehamwatts May 15, 2026
04beac7
listing-remarks-writer: add optional Phase 0 (address-first research)
Graehamwatts May 15, 2026
a7d0813
content-creation-engine: bake Humanizer Block into every PROMPT_LIBRA…
Graehamwatts May 15, 2026
cd63703
Sync local Documents/Claude edits: recover truncated content + cma-ge…
Graehamwatts May 15, 2026
8b82df4
content-creation-engine: add anti-zombie Rules 9, 10, 11
Graehamwatts May 16, 2026
0baece8
content-creation-engine: tighten Rule 10 chart spec + add 7 mandatory…
Graehamwatts May 16, 2026
1050291
transcript-repurposer: new skill — repurposes downloaded transcripts …
Graehamwatts May 16, 2026
0bb0c3e
transcript-repurposer: add Phase 0 auto-transcription via shared module
Graehamwatts May 16, 2026
6ad3f00
transcript-repurposer v3: Phase 9 delivery + Property-OS HTML preview
Graehamwatts May 16, 2026
b7480d4
transcript-repurposer v4: pivot to local-CLI architecture (sandbox ca…
Graehamwatts May 16, 2026
2b18298
transcript-repurposer: fix deliver.py section-splitting bug
Graehamwatts May 16, 2026
2520caa
Add video-transcriber: universal video transcription skill
Graehamwatts May 16, 2026
e064e82
Add video-watcher skill + wire into transcriber and content-engine
Graehamwatts May 16, 2026
5f9b5e8
Add instagram-competitor-scraper skill
Graehamwatts May 18, 2026
d918495
Add scraper script + integration plan + video-to-obsidian skill
Graehamwatts May 18, 2026
70ee29e
Add video-to-obsidian skill + content-creation-engine Phase IG wiring
Graehamwatts May 18, 2026
803aa9b
Add video-to-obsidian log_to_vault.py script
Graehamwatts May 18, 2026
dd1b191
Add 4 skills: github-skill-sync, html-email, social-media-analyzer, v…
Graehamwatts May 18, 2026
91364c2
Revert 'Add 4 skills' (dd1b191): all 4 were deprecated, not net-new
Graehamwatts May 18, 2026
eb449c7
video-transcriber: add Windows local faster-whisper path, streamline …
Graehamwatts May 19, 2026
8d6a94e
video-transcriber: add Windows local faster-whisper path + streamline…
Graehamwatts May 19, 2026
754884a
script-writer: verify perishable data, use range language, lead outpu…
Graehamwatts May 20, 2026
12fee70
script-writer: streamline architecture, dedupe pipeline and output spec
Graehamwatts May 21, 2026
e5f91dc
Merge remote-tracking branch 'origin/main'
Graehamwatts May 21, 2026
e39535d
content-creation-engine: lock canonical v6 main-dashboard template
Graehamwatts May 21, 2026
8785140
Add validation gate + daily automation docs; two-button dashboard tem…
Graehamwatts May 22, 2026
ac846ee
skill-sync: 2026-05-24 21:06:51 job-search-engine
Graehamwatts May 24, 2026
d760008
Add travel-hq skill: full travel agent with 7 command templates
Graehamwatts May 24, 2026
04aeba0
content-creation-engine: add market-update freshness gate + deep-dive…
Graehamwatts May 25, 2026
00554d2
Add bi-monthly freshness gate, B1-B6 angle rotation bank, Gemini visu…
Graehamwatts May 25, 2026
b15d19b
Update bi_monthly_history: B4 equity-wealth-position for June 2026; a…
Graehamwatts May 25, 2026
6c3962c
Add email: Peter — June bi-monthly B4 equity production brief (2026-0…
Graehamwatts May 25, 2026
d258769
Fix: push full market-update-narrative README (176 lines were missing…
Graehamwatts May 25, 2026
fe5d762
content-creation-engine: add Simulated LLM Query Capture to per-topic…
Graehamwatts May 25, 2026
e37c9b2
Rename Phase R → Per-Topic Research throughout content-creation-engin…
Graehamwatts May 25, 2026
6eaf593
Add May 2026 market update production brief (EPA + Bay Area)
Graehamwatts May 25, 2026
02db39f
Rebuild production brief: match brand style + add copy buttons on all…
Graehamwatts May 25, 2026
ea116b2
cma-generator: real-MLS-chart rule, em-dash ban, relist-tone rule, in…
Graehamwatts May 27, 2026
fde88b1
cma-generator: add past-client-mode reference (home value update layer)
Graehamwatts May 27, 2026
d5ffa5f
Add farming-postcard skill: 6x4 print-ready postcard generator with l…
Graehamwatts May 27, 2026
4bbd2ea
PCFS: autobuild SKILL drafts→sends; daily Sharon/CMA; new watchdog
Graehamwatts May 27, 2026
f62a183
farming-postcard: add Step 7 auto-publish to online-content archive +…
Graehamwatts May 27, 2026
812c89d
farming-postcard: log test fire run + cache 4 options for June 15 (pe…
Graehamwatts May 27, 2026
e45cbb6
farming-postcard: on-brand email template + SMTP send script + Peter …
Graehamwatts May 27, 2026
fe40f00
farming-postcard: log real SMTP send 2026-05-27 — pipeline confirmed …
Graehamwatts May 28, 2026
f2f8d88
farming-postcard: full pipeline test 2026-05-27 — fresh remixed headl…
Graehamwatts May 28, 2026
2de251c
cma-generator: 5 new rules (pricing ranges, heat map, price-reduction…
Graehamwatts May 28, 2026
045ae06
cma-generator: lock canonical dashboard template (based on Bradley CM…
Graehamwatts May 28, 2026
0296eff
cma-generator: lock canonical section order + Pre-List Prep optional …
Graehamwatts May 28, 2026
0de93e2
cma-generator: refresh canonical template (second-person voice, Pre-L…
Graehamwatts May 28, 2026
ed56bdd
cma-generator: add second-person voice rule (writes directly to seller)
Graehamwatts May 28, 2026
1a44d28
cma-generator: refresh template to v7 (Path A no net math, Path B pre…
Graehamwatts May 28, 2026
1a6a4f2
Add Switchy clicks dashboard
Graehamwatts May 28, 2026
f357140
Add Switchy baseline snapshot
Graehamwatts May 28, 2026
027a9c3
Add Switchy Monday email template
Graehamwatts May 28, 2026
72328e8
Add switchy-engine skill
Graehamwatts May 28, 2026
6e5e3fe
Add switchy-engine skill
Graehamwatts May 28, 2026
1c47945
Add switchy-engine skill
Graehamwatts May 28, 2026
f95fe07
Add switchy-engine skill
Graehamwatts May 28, 2026
763e5b6
Add switchy-engine skill
Graehamwatts May 28, 2026
fec4a95
Add switchy-engine skill
Graehamwatts May 28, 2026
1e66ab4
Add switchy-engine skill
Graehamwatts May 28, 2026
541faa0
Add switchy-engine skill
Graehamwatts May 28, 2026
4851901
Add switchy-engine skill
Graehamwatts May 28, 2026
4da5200
Add switchy-engine skill
Graehamwatts May 28, 2026
a5d5eca
Add switchy shared constants
Graehamwatts May 28, 2026
27bf076
Wire farming-postcard QR router to Switchy
Graehamwatts May 28, 2026
889a139
Add QR generation workflow to switchy-engine
Graehamwatts May 29, 2026
faae46b
CMA past-client mode: add MANDATORY CHECKLIST; enforce all 5 charts +…
Graehamwatts May 29, 2026
0fe8378
Add switchy package: EMAIL-to-Peter-generate-QR.html
Graehamwatts May 29, 2026
f45d534
Add switchy package: Farming_Postcard_EPA_06_01_26_IMPROVED.html
Graehamwatts May 29, 2026
6595d1a
Add switchy package: SWITCHY-INTEGRATION-BRIEF.md
Graehamwatts May 29, 2026
b425c79
Add switchy package: switchy-engine.skill
Graehamwatts May 29, 2026
d682114
Add switchy package: switchy_LIVE_report.md
Graehamwatts May 29, 2026
207736d
Peter email: add Jason alias
Graehamwatts May 29, 2026
c4dc9db
Weekly Switchy dashboard refresh (test run)
Graehamwatts May 29, 2026
5101619
Snapshot (test run)
Graehamwatts May 29, 2026
8c534b1
Add real SMTP sender for weekly report
Graehamwatts May 29, 2026
d220a06
Add switchy-qr (Peter QR-only skill)
Graehamwatts May 29, 2026
81f87c2
Add switchy-qr link creator
Graehamwatts May 29, 2026
23cd3a2
Add installable switchy-qr.skill for Peter
Graehamwatts May 29, 2026
2fb6acb
Peter email: point at switchy-qr
Graehamwatts May 29, 2026
2f8c5b6
Peter email: download link instead of attachment
Graehamwatts May 29, 2026
b7c7c97
Fix sender: drop empty mixed wrapper (was dropping no-attachment mail)
Graehamwatts May 29, 2026
3d88be3
cma-generator: lock canonical Buyer Mode template (based on 1430 Chil…
Graehamwatts May 30, 2026
bf96db1
chore(switchy): weekly Monday refresh index.html (2026-06-01)
Graehamwatts Jun 1, 2026
5fbb0a2
chore(switchy): weekly Monday refresh switchy-snapshot-2026-06-01.jso…
Graehamwatts Jun 1, 2026
4acb19d
Add listing-call-sheet skill (Hybrid Production call-sheet builder: c…
Graehamwatts Jun 1, 2026
a4cf720
listing-call-sheet: visual HTML dashboard output + Gmail-draft distri…
Graehamwatts Jun 1, 2026
ac783de
listing-call-sheet: save crew recipients (Wesley + editor inboxes); d…
Graehamwatts Jun 1, 2026
37c79e8
Production-reliability fixes: dynamic b-roll coverage, generation QC …
Graehamwatts Jun 2, 2026
0119280
Production-reliability fixes: dynamic b-roll coverage, generation QC …
Graehamwatts Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "graehamwatts-skills",
"version": "1.0.0",
"description": "Graeham Watts personal skills vault: content creation engine, CMA generator, disclosure analyzer, offer analyzer, GHL CRM audit, content calendar, listing tools, and the Watts content+video pipeline. Publishing handled via the Composio workflow (see shared-references/publishing-via-composio.md)."
}
52 changes: 52 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Local skill outputs, caching, staging — never commit to GitHub
outputs/
**/outputs/
**/generated/

# Local credentials — NEVER commit
.claude-credentials/
**/.claude-credentials/
*.pat
*-pat.txt
github-pat.txt
github-token.txt
.github-token
*token*.txt
*.token
ghl-pit.txt
*-pit.txt
*.pit
*-credentials.txt
secrets.txt

# OS / editor cruft
.DS_Store
Thumbs.db
*.swp
*~
.vscode/
.idea/

# Python
__pycache__/
*.pyc
*.pyo
.venv/
venv/
*.egg-info/

# Node
node_modules/

# Session-local scripts and TODOs (never commit)
CLEANUP-*.bat
FINISH-*.bat
SYNC-*.bat
FINAL-*.bat
cleanup-and-commit.ps1
NEXT-SESSION-TODO.md
test-persist.txt

# Local credentials (never commit)
.env
*.env.local
Empty file added .nojekyll
Empty file.
80 changes: 80 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# READ THIS FIRST — Onboarding for Claude sessions touching this repo

## Brand identity — the ONE rule that keeps getting violated

**Single source of truth for Graeham's brand identity:** `skills/shared-references/identity.json`

Read that file before writing ANY content that includes:
- DRE number (Graeham's individual salesperson DRE is `01466876`)
- Brokerage name
- Contact info (phone, email, website)
- Markets served

**Do NOT hardcode brand details from memory or training.** California real estate marketing has multiple plausible-looking DRE numbers (brokerage DRE, salesperson DRE, archived numbers from old brokerages). It's tempting to type one in from prior context. **Don't.** Always read identity.json first.

**Specifically prohibited:** the value `02015066` has been blocklisted ten separate times now (as of April 29, 2026). It is NOT Graeham's DRE, NOT Intero Real Estate's brokerage DRE (per Graeham's confirmation), and has no legitimate use anywhere in this repo or in outputs. If you find it in your context window, in a CMA template, in a contact strip, in a SKILL.md description, or anywhere else — **delete it. Do not propagate it.** Note that Cowork's cached skill descriptions may still show the wrong DRE; those are stale and should not be trusted over the actual SKILL.md files on disk.

## Enforcement

`scripts/verify_brand_identity.py` audits the entire repo against `identity.json`'s blocklist. It runs:

1. As a local pre-push git hook (advisory — only runs on machines that have it installed).
2. Manually before every push.

**Run the tripwire manually before pushing:**
```bash
python3 scripts/verify_brand_identity.py
```

If it fails, **fix the file paths it lists before pushing.** Do not bypass.

## Repo structure (Option B architecture, 2026-04-29)

This repo holds **source code only** — no outputs, no data bins.

The repo root contains exactly these items:
- `skills/` — all 39 skills, each in its own folder. **Source of truth.**
- `scripts/` — repo-wide infrastructure scripts (currently just the brand-identity tripwire).
- `.claude-plugin/` — Cowork plugin manifest.
- `.nojekyll` — disables Jekyll on GitHub Pages.
- `index.html` + `assets/` — GitHub Pages landing page.
- `CLAUDE.md` (this file) — onboarding.
- `README.md` — public README.

**Do NOT add output bins to this repo.** Generated content has its own home:

| Output type | Where it goes |
|---|---|
| Published CMAs | `Graehamwatts/online-content/cmas/` |
| Published offer reports | `Graehamwatts/online-content/offers/` |
| Published disclosure reports | `Graehamwatts/online-content/disclosures/` |
| Published newsletters | `Graehamwatts/online-content/newsletters/` |
| Weekly production calendars | `Graehamwatts/online-content/dashboards/weekly-calendars/` |
| Per-topic single-topic dashboards | `Graehamwatts/online-content/dashboards/single-topic/` |
| Internal skill caching/staging | `<skill-folder>/outputs/` (skill-local, gitignored) |

The `online-content` repo is the **published content hub** — a separate repo because (1) it's a GitHub Pages site with public client-facing URLs, (2) outputs and source code shouldn't mix, and (3) it can be backed up/audited independently.

> **Naming history:** This repo was renamed from `cma-reports` to `online-content` on 2026-05-01 to reflect that it holds ALL published content (CMAs, offers, disclosures, newsletters, dashboards) — not just CMAs. The old `cma-reports` repo has been retired; nothing migrated.

## Content-creation primary skill

The active content-engine skill is `skills/content-creation-engine/`. (The older `video-script-creation-engine` was retired during the 2026-04-29 reorganization.) When in doubt about which skill handles content/script generation, use `content-creation-engine`.

## Tag of last known-good state

`v2026.04.27-stable` — if anything regresses, compare against this tag.


## 2026-04-29 leak post-mortem (the 10th occurrence)

**Where it leaked:** `Graehamwatts/cma-reports/Offer_828_Weeks_St.html` (in the now-retired `cma-reports` repo, since superseded by `online-content`) — a published GitHub Pages report for a real client offer comparison. The wrong DRE appeared on lines 523 and 753.

**Root cause:** The Claude session that ran `offer-analyzer` on 2026-04-29 at 22:05 UTC had the wrong DRE (02015066) cached in its system prompt's `available_skills` list (specifically in the now-retired `video-script-creation-engine` description). Instead of reading the DRE from `identity.json` like this file instructs, that session typed the value from prior context.

**Fix applied (2026-04-29):**
- Corrected the contaminated file in cma-reports
- Added a `BRAND IDENTITY HARD RULE` warning at the top of `cma-generator/SKILL.md` and `offer-analyzer/SKILL.md` that explicitly says "do NOT type from prior context"
- Retired `video-script-creation-engine` from GitHub (it's been merged into `content-creation-engine`); local Cowork sync should refresh the cache

**Audit gap:** The tripwire (`scripts/verify_brand_identity.py`) only audits the skills repo. It does NOT currently audit `online-content` (the published-content sister repo, formerly `cma-reports`). A copy of the script should be added to `online-content` as well, OR this script extended to clone-and-audit `online-content` as part of its run. Open follow-up — increased priority since `online-content` will be the live target for every new CMA, offer, disclosure, newsletter, and dashboard going forward.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@
## Usage

This is an internal package and has no documentation.

<\!-- sync-test: 15-04-2026-0421 -->
Loading