Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
628 commits
Select commit Hold shift + click to select a range
04d2cef
content-creation-engine: load marketing-psychology for persuasive out…
Graehamwatts Jun 11, 2026
962d166
farming-postcard: repetition audit — add 4-axis differentiation rules…
Graehamwatts Jun 11, 2026
a386e4a
cma-generator past-client: ban all 'no agenda'/'no-pressure' phrasing…
Graehamwatts Jun 11, 2026
d56bcab
skill-creator: placement+sync rule for new skills (single Documents f…
Graehamwatts Jun 11, 2026
ff3de3c
Add chatgpt-ads skill: merge of AiM Bulk-Build ChatGPT Ads agent + 25…
Graehamwatts Jun 11, 2026
24051da
Auto-sync: session-end commit 2026-06-11 14:54
Graehamwatts Jun 11, 2026
630e490
Auto-sync: session-end commit 2026-06-11 20:10
Graehamwatts Jun 12, 2026
484898d
Past-seller rule hardened per Graeham 2026-06-11: CMA only on current…
Graehamwatts Jun 12, 2026
b950df2
Auto-sync: session-end commit 2026-06-13 11:33
Graehamwatts Jun 13, 2026
66f6fdb
Past-client three-address model + out-of-state policy (Graeham 2026-0…
Graehamwatts Jun 13, 2026
b0764d6
Auto-sync: session-end commit 2026-06-15 18:01
Graehamwatts Jun 16, 2026
294cf49
Auto-sync: session-end commit 2026-06-15 18:28
Graehamwatts Jun 16, 2026
716136d
Auto-sync: session-end commit 2026-06-17 12:25
Graehamwatts Jun 17, 2026
f31387c
Auto-sync: session-end commit 2026-06-22 13:29
Graehamwatts Jun 22, 2026
ff7b3a9
weekly-listing-update: week-over-week trajectory, prominent offer ban…
Graehamwatts Jun 22, 2026
21aa198
Auto-sync: session-end commit 2026-06-22 14:38
Graehamwatts Jun 22, 2026
d0dd206
weekly-listing-update: remove temp preview/build artifacts
Graehamwatts Jun 22, 2026
374a2d5
weekly-listing-update: differentiate offer states (received / accepte…
Graehamwatts Jun 22, 2026
1f8664e
Auto-sync: session-end commit 2026-06-22 17:41
Graehamwatts Jun 23, 2026
7d6b10c
weekly-listing-update: script-generated line chart + launch-week anch…
Graehamwatts Jun 23, 2026
c374d04
fix(content-calendar): restore truncated __main__ guard in weekly-cal…
Graehamwatts Jun 23, 2026
c5e2692
Auto-sync: session-end commit 2026-06-22 20:25
Graehamwatts Jun 23, 2026
750f8e7
harden(skills): add Python integrity gate + remove dead truncated bui…
Graehamwatts Jun 23, 2026
d4aabc0
content-calendar: encode email recipients + daily cadence (LOCKED)
Graehamwatts Jun 23, 2026
bf068b3
Auto-sync: session-end commit 2026-06-22 21:30
Graehamwatts Jun 23, 2026
d86c3c3
Auto-sync: session-end commit 2026-06-22 21:32
Graehamwatts Jun 23, 2026
6a545ba
Auto-sync: session-end commit 2026-06-22 21:33
Graehamwatts Jun 23, 2026
dcb9bd9
Auto-sync: session-end commit 2026-06-22 21:36
Graehamwatts Jun 23, 2026
f6d7a3e
Auto-sync: session-end commit 2026-06-22 22:06
Graehamwatts Jun 23, 2026
c1a16c6
Auto-sync: session-end commit 2026-06-22 22:23
Graehamwatts Jun 23, 2026
8c9147c
Auto-sync: session-end commit 2026-06-22 23:23
Graehamwatts Jun 23, 2026
aa91346
Auto-sync: session-end commit 2026-06-22 23:27
Graehamwatts Jun 23, 2026
aeda44a
Auto-sync: session-end commit 2026-06-23 00:11
Graehamwatts Jun 23, 2026
558d3e0
Auto-sync: session-end commit 2026-06-23 00:12
Graehamwatts Jun 23, 2026
48cfd95
Auto-sync: session-end commit 2026-06-23 00:13
Graehamwatts Jun 23, 2026
4321fea
Auto-sync: session-end commit 2026-06-23 00:14
Graehamwatts Jun 23, 2026
c38c541
Auto-sync: session-end commit 2026-06-23 00:16
Graehamwatts Jun 23, 2026
f69cbe4
Auto-sync: session-end commit 2026-06-23 14:21
Graehamwatts Jun 23, 2026
5e6a30a
Auto-sync: session-end commit 2026-06-23 17:12
Graehamwatts Jun 24, 2026
969507a
cma-generator: add Market Pricing Behavior & DOM Correlation analysis…
Graehamwatts Jun 24, 2026
347b8bd
cma-generator: require readable 'Reading the numbers' summary + why +…
Graehamwatts Jun 24, 2026
6f45c3c
Auto-sync: session-end commit 2026-06-23 21:27
Graehamwatts Jun 24, 2026
57fcd96
Auto-sync: session-end commit 2026-06-23 22:20
Graehamwatts Jun 24, 2026
1b52d4f
Auto-sync: session-end commit 2026-06-23 22:41
Graehamwatts Jun 24, 2026
f1398d4
Auto-sync: session-end commit 2026-06-26 10:34
Graehamwatts Jun 26, 2026
4ab553f
Auto-sync: session-end commit 2026-06-26 10:39
Graehamwatts Jun 26, 2026
5915b25
cma-generator: pricing-behavior labeling + honesty rules (r label, ad…
Graehamwatts Jun 27, 2026
bef53c0
Auto-sync: session-end commit 2026-06-26 18:31
Graehamwatts Jun 27, 2026
b1fc03c
listing-launch-engine + content-creation-engine: Listing Content Engi…
Graehamwatts Jun 27, 2026
c2d20c0
Auto-sync: session-end commit 2026-06-26 21:11
Graehamwatts Jun 27, 2026
19f6d4e
Auto-sync: session-end commit 2026-06-27 00:40
Graehamwatts Jun 27, 2026
4493737
Auto-sync: session-end commit 2026-06-27 01:06
Graehamwatts Jun 27, 2026
4678367
Auto-sync: session-end commit 2026-06-27 01:09
Graehamwatts Jun 27, 2026
e864fc4
Auto-sync: session-end commit 2026-06-27 01:13
Graehamwatts Jun 27, 2026
8c95a32
Auto-sync: session-end commit 2026-06-27 01:16
Graehamwatts Jun 27, 2026
5003f38
Auto-sync: session-end commit 2026-06-27 01:18
Graehamwatts Jun 27, 2026
195b186
Auto-sync: session-end commit 2026-06-27 01:20
Graehamwatts Jun 27, 2026
4a2b1ea
Auto-sync: session-end commit 2026-06-27 01:34
Graehamwatts Jun 27, 2026
f825d98
Auto-sync: session-end commit 2026-06-27 11:14
Graehamwatts Jun 27, 2026
654dd35
Auto-sync: session-end commit 2026-06-27 11:48
Graehamwatts Jun 27, 2026
5b24e77
Auto-sync: session-end commit 2026-06-27 15:26
Graehamwatts Jun 27, 2026
3e9030d
Auto-sync: session-end commit 2026-06-27 15:32
Graehamwatts Jun 27, 2026
469980d
Auto-sync: session-end commit 2026-06-27 15:46
Graehamwatts Jun 27, 2026
3dfdc2c
Auto-sync: session-end commit 2026-06-27 15:53
Graehamwatts Jun 27, 2026
d82b624
Auto-sync: session-end commit 2026-06-27 15:55
Graehamwatts Jun 27, 2026
923a529
Auto-sync: session-end commit 2026-06-27 16:08
Graehamwatts Jun 27, 2026
1c74436
Auto-sync: session-end commit 2026-06-27 16:11
Graehamwatts Jun 27, 2026
190e503
Add comedy-craft + concept-forge creative-video system; wire into LLE…
Graehamwatts Jun 27, 2026
be7d5b9
Auto-sync: session-end commit 2026-06-27 16:34
Graehamwatts Jun 27, 2026
dc83108
Auto-sync: session-end commit 2026-06-27 16:36
Graehamwatts Jun 27, 2026
5a80fc7
Auto-sync: session-end commit 2026-06-27 16:44
Graehamwatts Jun 27, 2026
b4d3198
Auto-sync: session-end commit 2026-06-27 16:48
Graehamwatts Jun 27, 2026
ebad493
Auto-sync: session-end commit 2026-06-27 16:49
Graehamwatts Jun 27, 2026
189b238
content-multiplier: intent-only boundaries — gauntlet-survivor input,…
Graehamwatts Jun 28, 2026
bc717b8
Auto-sync: session-end commit 2026-06-29 10:22
Graehamwatts Jun 29, 2026
8d8e535
farming-postcard: July 1 manual recovery (Prop 19) after 06/24 schedu…
Graehamwatts Jun 30, 2026
955c056
farming-postcard: July 1 rush-to-print — swap Prop 19 CTA to call/tex…
Graehamwatts Jun 30, 2026
31ab9af
farming-postcard: line up July 15 (Buyer-tagged) + Aug 1 (Equity); no…
Graehamwatts Jun 30, 2026
ad9d61b
Auto-sync: session-end commit 2026-06-29 18:15
Graehamwatts Jun 30, 2026
f7da97f
farming-postcard: harden send script (remove stale session-pinned cre…
Graehamwatts Jun 30, 2026
4f29c4b
Auto-sync: session-end commit 2026-07-01 15:35
Graehamwatts Jul 1, 2026
6fbffab
trackabi-va-payroll: add email cleanup after receipt conversion + BPI…
Graehamwatts Jul 1, 2026
05ea076
Auto-sync: session-end commit 2026-07-01 16:51
Graehamwatts Jul 1, 2026
438a5ca
Auto-sync: session-end commit 2026-07-01 21:51
Graehamwatts Jul 2, 2026
af334d1
Auto-sync: session-end commit 2026-07-01 23:54
Graehamwatts Jul 2, 2026
12a160f
Auto-sync: session-end commit 2026-07-01 23:58
Graehamwatts Jul 2, 2026
2370071
Auto-sync: session-end commit 2026-07-02 17:33
Graehamwatts Jul 3, 2026
6a36a4b
Auto-sync: session-end commit 2026-07-02 18:05
Graehamwatts Jul 3, 2026
da2350c
Auto-sync: session-end commit 2026-07-02 18:20
Graehamwatts Jul 3, 2026
1a827e4
Auto-sync: session-end commit 2026-07-02 21:33
Graehamwatts Jul 3, 2026
a6b4f2f
Auto-sync: session-end commit 2026-07-02 21:34
Graehamwatts Jul 3, 2026
433e9f1
Auto-sync: session-end commit 2026-07-02 21:35
Graehamwatts Jul 3, 2026
e10e9eb
Auto-sync: session-end commit 2026-07-02 22:22
Graehamwatts Jul 3, 2026
5c7959f
Auto-sync: session-end commit 2026-07-02 22:30
Graehamwatts Jul 3, 2026
e3bbb3f
Auto-sync: session-end commit 2026-07-02 22:32
Graehamwatts Jul 3, 2026
24fbc08
Auto-sync: session-end commit 2026-07-02 22:34
Graehamwatts Jul 3, 2026
58b5d16
Auto-sync: session-end commit 2026-07-02 22:35
Graehamwatts Jul 3, 2026
88723d7
Auto-sync: session-end commit 2026-07-02 22:38
Graehamwatts Jul 3, 2026
a0ad41c
Auto-sync: session-end commit 2026-07-02 23:00
Graehamwatts Jul 3, 2026
ccfb3d9
Auto-sync: session-end commit 2026-07-02 23:00
Graehamwatts Jul 3, 2026
68c2b07
Auto-sync: session-end commit 2026-07-02 23:01
Graehamwatts Jul 3, 2026
6d95eb2
Exempt dre-leak-incident-log.md from brand tripwire; log 2026-07-02 c…
Graehamwatts Jul 3, 2026
7e3d53f
Auto-sync: session-end commit 2026-07-02 23:49
Graehamwatts Jul 3, 2026
37fc47c
Auto-sync: session-end commit 2026-07-03 12:00
Graehamwatts Jul 3, 2026
811295b
Auto-sync: session-end commit 2026-07-03 12:15
Graehamwatts Jul 3, 2026
dac3ead
newsletter-generator: CTA target is graehamwatts.com/evaluation
Graehamwatts Jul 4, 2026
ec28e1f
Auto-sync: session-end commit 2026-07-03 21:20
Graehamwatts Jul 4, 2026
2e2923e
Fix stale live-Composio instructions in 4 skills (retired 2026-06-09)
Graehamwatts Jul 4, 2026
28a6d54
newsletter-generator: story-page depth layer (details + embedded vide…
Graehamwatts Jul 4, 2026
10ba3c0
identity.json: add socials (IG business handle graeham.watts, YouTube)
Graehamwatts Jul 6, 2026
55d0a92
newsletter-generator: social links from identity.json (business IG gr…
Graehamwatts Jul 6, 2026
719a78d
Auto-sync: session-end commit 2026-07-10 00:01
Graehamwatts Jul 10, 2026
44d6a8c
Auto-sync: session-end commit 2026-07-11 01:19
Graehamwatts Jul 11, 2026
a6c1222
Auto-sync: session-end commit 2026-07-12 00:49
Graehamwatts Jul 12, 2026
8aebfc2
Auto-sync: session-end commit 2026-07-12 00:54
Graehamwatts Jul 12, 2026
f427cfe
Auto-sync: session-end commit 2026-07-13 12:36
Graehamwatts Jul 13, 2026
a190a19
Auto-sync: session-end commit 2026-07-13 13:02
Graehamwatts Jul 13, 2026
f9de160
farming-postcard: mark July 1 + July 15 shipped; Aug 1 is next
Graehamwatts Jul 14, 2026
cf7be8a
Auto-sync: session-end commit 2026-07-14 14:43
Graehamwatts Jul 14, 2026
18b30c8
Auto-sync: session-end commit 2026-07-14 14:50
Graehamwatts Jul 14, 2026
1be590c
Auto-sync: session-end commit 2026-07-17 16:00
Graehamwatts Jul 17, 2026
fcae6ad
Auto-sync: session-end commit 2026-07-17 16:00
Graehamwatts Jul 17, 2026
b2c6e2e
Auto-sync: session-end commit 2026-07-17 16:10
Graehamwatts Jul 17, 2026
2fa40f0
Auto-sync: session-end commit 2026-07-17 22:21
Graehamwatts Jul 18, 2026
72c99f2
Add website-crawler skill (scaffolded, not yet installed)
Graehamwatts Jul 18, 2026
c69c8c8
Add AI Library content (HTML/PDF + sources) so it lives on GitHub, no…
Graehamwatts Jul 22, 2026
42e27e1
Auto-sync: session-end commit 2026-07-23 00:22
Graehamwatts Jul 23, 2026
ae17a04
Auto-sync: session-end commit 2026-07-23 00:46
Graehamwatts Jul 23, 2026
247eda3
Auto-sync: session-end commit 2026-07-23 10:11
Graehamwatts Jul 23, 2026
0372be6
Auto-sync: session-end commit 2026-07-23 12:17
Graehamwatts Jul 23, 2026
22c0146
Auto-sync: session-end commit 2026-07-23 13:30
Graehamwatts Jul 23, 2026
4dabd4b
Remove unused content-multiplier skill, trim listing-launch-engine de…
Graehamwatts Jul 28, 2026
46e4698
Consolidate remotion-video: strip generic API reference, point to rem…
Graehamwatts Jul 28, 2026
233541c
Fix stale video-script-creation-engine refs, fix video-creator broker…
Graehamwatts Jul 28, 2026
f251d28
Save native-knowledge audit doc for future reference
Graehamwatts Jul 28, 2026
18107dd
Trim Tier A generic/native-knowledge content across 20 skills
Graehamwatts Jul 28, 2026
80d5758
Trim resident descriptions on 11 actively-used skills; fix null-byte …
Graehamwatts Jul 28, 2026
e9109da
Fix 6 mechanical bugs from the native-knowledge audit's Part 1 list
Graehamwatts Jul 28, 2026
0685905
Retire heygen-elevenlabs-renderer — auto-render moving to PropertyIQ
Graehamwatts Jul 28, 2026
0c3a858
Auto-sync: session-end commit 2026-07-28 12:13
Graehamwatts Jul 28, 2026
93f0855
Tier A trim: cut generic/textbook content from 14 more skills
Graehamwatts Jul 28, 2026
6bc0d44
Auto-sync: session-end commit 2026-07-28 16:02
Graehamwatts Jul 28, 2026
19409d6
cinematic-trailer-pipeline: migrate Phase 3 off retired PAI 2.0/UTOPAI
Graehamwatts Jul 28, 2026
c9cef8c
Auto-sync: session-end commit 2026-07-28 16:20
Graehamwatts Jul 28, 2026
b9f2aab
past-client-follow-up-system: fix stale N8N workflow ID + real Buying…
Graehamwatts Jul 28, 2026
9d34392
cma-generator: add non-negotiable minimums (dollar price points, last…
Graehamwatts Aug 3, 2026
8cf8655
cma-generator: add hard rule against trusting unverified MLS date fil…
Graehamwatts Aug 7, 2026
01f040b
consolidate: absorb switchy-qr into switchy-engine (deletes skills/sw…
Graehamwatts Aug 7, 2026
be37f81
retire: remove cowork-task-shutoff skill
Graehamwatts Aug 7, 2026
4880235
clean up stray files in skills/ root
Graehamwatts Aug 7, 2026
4ea63fd
Auto-sync: session-end commit 2026-08-09 17:08
Graehamwatts Aug 10, 2026
dcb9b86
Auto-sync: session-end commit 2026-08-09 17:31
Graehamwatts Aug 10, 2026
66dcddf
Auto-sync: session-end commit 2026-08-09 17:43
Graehamwatts Aug 10, 2026
f0e33a3
Auto-sync: session-end commit 2026-08-09 17:46
Graehamwatts Aug 10, 2026
e4505e0
Auto-sync: session-end commit 2026-08-12 20:15
Graehamwatts Aug 13, 2026
df8ad86
Auto-sync: session-end commit 2026-08-13 16:09
Graehamwatts Aug 13, 2026
e2b8a61
cma-generator: make MLS Stats-sourced trend chart mandatory, not hand…
Graehamwatts Aug 13, 2026
0ddb80b
Auto-sync: session-end commit 2026-08-13 16:16
Graehamwatts Aug 13, 2026
e7825e5
cma-generator: default market trend chart to an embedded MLS Stats sc…
Graehamwatts Aug 13, 2026
512be70
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 13, 2026
5f3af6c
Auto-sync: session-end commit 2026-08-13 16:31
Graehamwatts Aug 13, 2026
fb85bc8
cma-generator: restructure to eliminate 9 contradictory rules
Graehamwatts Aug 13, 2026
9798dc7
Brand migration: Intero Real Estate -> Compass across 48 skill files
Graehamwatts Aug 13, 2026
18efb76
Audit fixes: brand trap, dead model ID, broken SMTP path, tripwire ha…
Graehamwatts Aug 13, 2026
77a15f6
Auto-sync: session-end commit 2026-08-13 17:19
Graehamwatts Aug 14, 2026
e319f8c
Auto-sync: session-end commit 2026-08-13 17:19
Graehamwatts Aug 14, 2026
267f1c1
Fix ALL-CAPS brand miss: printed postcards said INTERO + Berkshire Ha…
Graehamwatts Aug 14, 2026
3ff2f96
Auto-sync: session-end commit 2026-08-13 18:23
Graehamwatts Aug 14, 2026
389c361
Privacy: stop publishing disclosures/offers publicly; fix weekly temp…
Graehamwatts Aug 14, 2026
298f503
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 14, 2026
834695f
Auto-sync: session-end commit 2026-08-13 18:50
Graehamwatts Aug 14, 2026
b576cc7
Auto-sync: session-end commit 2026-08-13 18:52
Graehamwatts Aug 14, 2026
c15c765
Auto-sync: session-end commit 2026-08-13 19:18
Graehamwatts Aug 14, 2026
43ad368
Auto-sync: session-end commit 2026-08-13 19:53
Graehamwatts Aug 14, 2026
63ca5c6
weekly-listing-update: rebuild template on brand, add pre-send validator
Graehamwatts Aug 14, 2026
6467fd2
Exempt validate_report.py from the brand tripwire
Graehamwatts Aug 14, 2026
aa87cff
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 14, 2026
5ae762f
Auto-sync: session-end commit 2026-08-13 20:00
Graehamwatts Aug 14, 2026
43a5084
weekly-listing-update: refine palette
Graehamwatts Aug 14, 2026
3696153
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 14, 2026
cc219a1
content-creation-engine: add dashboard manifest + validator
Graehamwatts Aug 14, 2026
fa8f867
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 14, 2026
f2ee8b6
Exempt the manifest and validators from the brand tripwire
Graehamwatts Aug 14, 2026
4ea7b71
Auto-sync: session-end commit 2026-08-13 20:27
Graehamwatts Aug 14, 2026
9068a70
validate_dashboard: add --layout-only for design previews
Graehamwatts Aug 14, 2026
c333803
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 14, 2026
6d48d8c
Fix instructions that reference things which do not exist
Graehamwatts Aug 14, 2026
5a8cfd4
Auto-sync: session-end commit 2026-08-13 21:57
Graehamwatts Aug 14, 2026
5b4a5c8
Add verify_references.py: fail on pointers to things that do not exist
Graehamwatts Aug 14, 2026
6c026ba
Resolve verify_references.py merge
Graehamwatts Aug 14, 2026
dc890bf
Remove real client data from templates and references
Graehamwatts Aug 14, 2026
a08e976
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 14, 2026
45518bb
Auto-sync: session-end commit 2026-08-15 16:54
Graehamwatts Aug 15, 2026
5d14f6e
Auto-sync: session-end commit 2026-08-15 16:56
Graehamwatts Aug 15, 2026
f11c167
identity: raise team/brokerage prominence, add co-brand lockup spec
Graehamwatts Aug 16, 2026
e6755e4
cma-generator: adopt the 3444 Kenyon build as the listing standard
Graehamwatts Aug 16, 2026
9a555a2
Add compensation-package skill: Compass/Boyenga-branded marketing & c…
Graehamwatts Aug 16, 2026
dff9438
Auto-sync: session-end commit 2026-08-16 00:31
Graehamwatts Aug 16, 2026
6f09960
compensation-package: disconnect variants, fix comparison table, corr…
Graehamwatts Aug 16, 2026
09a5bf8
compensation-package template: side-by-side Package Includes layout f…
Graehamwatts Aug 16, 2026
3aa9f37
Auto-sync: session-end commit 2026-08-16 00:58
Graehamwatts Aug 16, 2026
5702a42
Auto-sync: session-end commit 2026-08-16 00:59
Graehamwatts Aug 16, 2026
6dfca8d
compensation-package template: flat editorial-column layout for Marke…
Graehamwatts Aug 16, 2026
7141403
Auto-sync: session-end commit 2026-08-16 10:18
Graehamwatts Aug 16, 2026
ab24133
compensation-package template: roof inspections, Zillow Showcase (Pla…
Graehamwatts Aug 16, 2026
515b0d5
compensation-package template: standardize comparison-table wording
Graehamwatts Aug 16, 2026
42eea39
compensation-package template: decouple staging row from Compass Conc…
Graehamwatts Aug 16, 2026
f9d074b
compensation-package template: align rows across tiers, fix content b…
Graehamwatts Aug 16, 2026
dec21fd
Auto-sync: session-end commit 2026-08-16 14:42
Graehamwatts Aug 16, 2026
572f5bb
Auto-sync: session-end commit 2026-08-16 14:45
Graehamwatts Aug 16, 2026
b16cad3
compensation-package template: compress print sizing so full tier lis…
Graehamwatts Aug 16, 2026
c23a3ba
Auto-sync: session-end commit 2026-08-16 15:30
Graehamwatts Aug 16, 2026
e1125b8
compensation-package template: merge Compass Concierge + How We're Di…
Graehamwatts Aug 16, 2026
2d1606a
Encode Shree Khare pushback fixes: explicit pros/cons per pricing tie…
Graehamwatts Aug 17, 2026
8f93e3f
Auto-sync: session-end commit 2026-08-17 18:08
Graehamwatts Aug 18, 2026
ff933e6
compensation-package: deep clean included (not optional) on Gold/Plat…
Graehamwatts Aug 18, 2026
29586c5
cma-generator: fix pricing-strategy card format per direct Graeham co…
Graehamwatts Aug 18, 2026
b6f52d0
Auto-sync: session-end commit 2026-08-17 19:56
Graehamwatts Aug 18, 2026
942794b
Add track-record-map skill: generalized sold-listings map + xlsx pipe…
Graehamwatts Aug 18, 2026
adfae46
track-record-map: add team license (DRE 70010882), fix class-filter a…
Graehamwatts Aug 18, 2026
f1957ff
Auto-sync: session-end commit 2026-08-18 11:55
Graehamwatts Aug 18, 2026
3ba61a3
farming-postcard: September 1 card (Neighbor Envy fresh remix) — diff…
Graehamwatts Aug 18, 2026
c8e2fc3
farming-postcard: Sept 1 card v2 — dual QR (front+back), real Switchy…
Graehamwatts Aug 19, 2026
1355700
farming-postcard: Sept 1 card v3 (final) — copy reverted to original,…
Graehamwatts Aug 19, 2026
e66ed31
farming-postcard: Sept 1 card v4 (final) — single front QR + back cal…
Graehamwatts Aug 19, 2026
5dd6e34
farming-postcard: GHL investigation results — API write-scope dead en…
Graehamwatts Aug 19, 2026
f18aa5a
farming-postcard: resolve sold-homes map + Switchy pixel status (Sept…
Graehamwatts Aug 19, 2026
0325f5b
Update topic-history + previous_topics: tenant-occupied-selling-data …
Graehamwatts Aug 19, 2026
01bc95e
Replace humanizer skill with Aboudjem/humanizer-skill (MIT): 29 patte…
Graehamwatts Aug 20, 2026
c32f537
Auto-sync: session-end commit 2026-08-19 17:26
Graehamwatts Aug 20, 2026
51627ed
Auto-sync: session-end commit 2026-08-21 23:52
Graehamwatts Aug 22, 2026
8871a68
Merge branch 'main' of https://github.com/Graehamwatts/skills
Graehamwatts Aug 24, 2026
12b4069
Auto-sync: session-end commit 2026-08-24 14:13
Graehamwatts Aug 24, 2026
1e5ae27
Auto-sync: session-end commit 2026-08-25 17:48
Graehamwatts Aug 26, 2026
f875cf4
Auto-sync: session-end commit 2026-08-25 17:49
Graehamwatts Aug 26, 2026
2cdcd84
listing-remarks-writer: rewrite around a hard 1300-char MLSListings b…
Graehamwatts Aug 26, 2026
1438741
Auto-sync: session-end commit 2026-08-27 00:04
Graehamwatts Aug 27, 2026
3746abf
Auto-sync: session-end commit 2026-08-27 18:08
Graehamwatts Aug 28, 2026
170c202
Retire last live references to deprecated skills (github-skill-sync, …
Graehamwatts Aug 28, 2026
d29d6e2
Fix auto-push tripwire deadlock: blocked DRE now lives ONLY in identi…
Graehamwatts Aug 28, 2026
1d6c60b
Rescue 9 cache-only skills into the repo; fix live Intero branding
Graehamwatts Aug 28, 2026
6b8bfb3
Auto-sync: session-end commit 2026-08-28 16:49
Graehamwatts Aug 28, 2026
3556e3f
Auto-sync: session-end commit 2026-08-30 20:01
Graehamwatts Aug 31, 2026
4a8bf9c
cma-generator: add Target Price Reality Check methodology (client-sta…
Graehamwatts Aug 31, 2026
f9e83f9
Add apple-design-engineering skill (vendored from emilkowalski/skills…
Graehamwatts Aug 31, 2026
7410262
Auto-sync: session-end commit 2026-08-31 18:14
Graehamwatts Sep 1, 2026
43a4795
content-calendar v6: slot-aware selection, policy-decode boost, long-…
Graehamwatts Sep 1, 2026
263c859
Monday slot: giveaway suspended until business-video bank exists; Tim…
Graehamwatts Sep 1, 2026
fbb1b6d
content-creation-engine: Phase 5 carousel/slideshow production spec (…
Graehamwatts Sep 1, 2026
b8b6cfb
Avatar character reference + generation pipeline standard (Soul ID re…
Graehamwatts Sep 1, 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)."
}
3 changes: 3 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# graphify
- **graphify** (`.claude/skills/graphify/SKILL.md`) - any input to knowledge graph. Trigger: `/graphify`
When the user types `/graphify`, use the installed graphify skill or instructions before doing anything else.
3 changes: 3 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"hooks": {}
}
1 change: 1 addition & 0 deletions .claude/skills/graphify/.graphify_version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.9.5
712 changes: 712 additions & 0 deletions .claude/skills/graphify/SKILL.md

Large diffs are not rendered by default.

56 changes: 56 additions & 0 deletions .claude/skills/graphify/references/add-watch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# graphify reference: add a URL and watch a folder

Load this when the user ran `/graphify add <url>` or passed `--watch`. Neither is part of the default build.

## For /graphify add

Fetch a URL and add it to the corpus, then update the graph.

```bash
$(cat graphify-out/.graphify_python) -c "
import sys
from graphify.ingest import ingest
from pathlib import Path

try:
out = ingest('URL', Path('./raw'), author='AUTHOR', contributor='CONTRIBUTOR')
print(f'Saved to {out}')
except ValueError as e:
print(f'error: {e}', file=sys.stderr)
sys.exit(1)
except RuntimeError as e:
print(f'error: {e}', file=sys.stderr)
sys.exit(1)
"
```

Replace `URL` with the actual URL, `AUTHOR` with the user's name if provided, `CONTRIBUTOR` likewise. If the command exits with an error, tell the user what went wrong - do not silently continue. After a successful save, automatically run the `--update` pipeline on `./raw` to merge the new file into the existing graph.

Supported URL types (auto-detected):
- YouTube / any video URL → audio downloaded via yt-dlp, transcribed to `.txt` on next run (requires `pip install 'graphifyy[video]'`)
- Twitter/X → fetched via oEmbed, saved as `.md` with tweet text and author
- arXiv → abstract + metadata saved as `.md`
- PDF → downloaded as `.pdf`
- Images (.png/.jpg/.webp) → downloaded, Claude vision extracts on next run
- Any webpage → converted to markdown via html2text

---

## For --watch

Start a background watcher that monitors a folder and auto-updates the graph when files change.

```bash
$(cat graphify-out/.graphify_python) -m graphify.watch INPUT_PATH --debounce 3
```

Replace INPUT_PATH with the folder to watch. Behavior depends on what changed:

- **Code files only (.py, .ts, .go, etc.):** re-runs AST extraction + rebuild + cluster immediately, no LLM needed. `graph.json` and `GRAPH_REPORT.md` are updated automatically.
- **Docs, papers, or images:** writes a `graphify-out/needs_update` flag and prints a notification to run `/graphify --update` (LLM semantic re-extraction required).

Debounce (default 3s): waits until file activity stops before triggering, so a wave of parallel agent writes doesn't trigger a rebuild per file.

Press Ctrl+C to stop.

For agentic workflows: run `--watch` in a background terminal. Code changes from agent waves are picked up automatically between waves. If agents are also writing docs or notes, you'll need a manual `/graphify --update` after those waves.
87 changes: 87 additions & 0 deletions .claude/skills/graphify/references/exports.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# graphify reference: extra exports and benchmark

Load this when the user passed one of the export flags (`--wiki`, `--neo4j`, `--neo4j-push`, `--falkordb`, `--falkordb-push`, `--svg`, `--graphml`, `--mcp`), or when the corpus is large enough for the token-reduction benchmark. Each step runs only for its own flag.

### Step 6b - Wiki (only if --wiki flag)

**Only run this step if `--wiki` was explicitly given in the original command.**

Run this before Step 9 (cleanup) so `.graphify_labels.json` is still available.

```bash
graphify export wiki
```

### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)

**If `--neo4j`** - generate a Cypher file for manual import:

```bash
graphify export neo4j
```

**If `--neo4j-push <uri>`** - push directly to a running Neo4j instance. Ask the user for credentials if not provided:

```bash
graphify export neo4j --push bolt://localhost:7687 --user neo4j --password PASSWORD
```

Default URI is `bolt://localhost:7687`, default user is `neo4j`. Uses MERGE - safe to re-run without creating duplicates.

### Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag)

**If `--falkordb`** - generate a Cypher file. The statements are OpenCypher, but FalkorDB's `GRAPH.QUERY` runs one statement at a time (no bulk script import like Neo4j's `cypher-shell`), so prefer `--falkordb-push` to load a graph. Use this only when you want the portable `cypher.txt` artifact:

```bash
graphify export falkordb
```

**If `--falkordb-push <uri>`** - push directly to a running FalkorDB instance. Credentials are optional; ask the user only if the instance requires auth:

```bash
graphify export falkordb --push falkordb://localhost:6379
```

Default URI is `falkordb://localhost:6379` (the scheme is informational - `redis://` or a bare `host:port` work too), auth is optional, and the target graph defaults to `graphify`. Uses MERGE - safe to re-run without creating duplicates.

### Step 7b - SVG export (only if --svg flag)

```bash
graphify export svg
```

### Step 7c - GraphML export (only if --graphml flag)

```bash
graphify export graphml
```

### Step 7d - MCP server (only if --mcp flag)

```bash
$(cat graphify-out/.graphify_python) -m graphify.serve graphify-out/graph.json
```

This starts a stdio MCP server that exposes tools: `query_graph`, `get_node`, `get_neighbors`, `get_community`, `god_nodes`, `graph_stats`, `shortest_path`. Add to Claude Desktop or any MCP-compatible agent orchestrator so other agents can query the graph live.

To configure in Claude Desktop, add to `claude_desktop_config.json`. Claude Desktop can't run `$(...)`, and under `uv tool install` the system `python3` can't import graphify — so set `command` to the **absolute interpreter path** printed by `cat graphify-out/.graphify_python`:
```json
{
"mcpServers": {
"graphify": {
"command": "<absolute path from: cat graphify-out/.graphify_python>",
"args": ["-m", "graphify.serve", "/absolute/path/to/graphify-out/graph.json"]
}
}
}
```

### Step 8 - Token reduction benchmark (only if total_words > 5000)

If `total_words` from `graphify-out/.graphify_detect.json` is greater than 5,000, run:

```bash
graphify benchmark
```

Print the output directly in chat. If `total_words <= 5000`, skip silently - the graph value is structural clarity, not token compression, for small corpora.
70 changes: 70 additions & 0 deletions .claude/skills/graphify/references/extraction-spec.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# graphify reference: extraction subagent prompt

Load this in Step 3 Part B when the corpus has at least one doc, paper, or image chunk. A pure-code corpus skips Part B and never reads this file. Each semantic subagent receives the prompt below verbatim (substitute FILE_LIST, CHUNK_NUM, TOTAL_CHUNKS, DEEP_MODE, and CHUNK_PATH).

```
You are a graphify extraction subagent. Read the files listed and extract a knowledge graph fragment.
Output ONLY valid JSON matching the schema below - no explanation, no markdown fences, no preamble.

Files (chunk CHUNK_NUM of TOTAL_CHUNKS):
FILE_LIST

Rules:
- EXTRACTED: relationship explicit in source (import, call, citation, "see §3.2")
- INFERRED: reasonable inference (shared data structure, implied dependency)
- AMBIGUOUS: uncertain - flag for review, do not omit

Code files: focus on semantic edges AST cannot find (call relationships, shared data, arch patterns).
Do not re-extract imports - AST already has those.
Doc/paper files: extract named concepts, entities, citations. For rationale (WHY decisions were made, trade-offs, design intent): store as a `rationale` attribute on the relevant concept node — do NOT create a separate rationale node or fragment node. Only create a node for something that is itself a named entity or concept. Use `file_type:"rationale"` for concept-like nodes (ideas, principles, mechanisms, design patterns). `file_type` MUST be one of exactly these six values: `code`, `document`, `paper`, `image`, `rationale`, `concept`. Any other value is invalid and will be rejected.
Code files: when adding `calls` edges, source MUST be the caller (the function/class doing the calling), target MUST be the callee. Never reverse this direction. `calls` edges MUST stay within one language: a Python function cannot `calls` a JS/TS/Go/Rust/Java symbol and vice versa — cross-language call edges are phantom artifacts, never emit them.
Image files: use vision to understand what the image IS - do not just OCR.
UI screenshot: layout patterns, design decisions, key elements, purpose.
Chart: metric, trend/insight, data source.
Tweet/post: claim as node, author, concepts mentioned.
Diagram: components and connections.
Research figure: what it demonstrates, method, result.
Handwritten/whiteboard: ideas and arrows, mark uncertain readings AMBIGUOUS.

DEEP_MODE (if --mode deep was given): be aggressive with INFERRED edges - indirect deps,
shared assumptions, latent couplings. Mark uncertain ones AMBIGUOUS instead of omitting.

Semantic similarity: if two concepts in this chunk solve the same problem or represent the same idea without any structural link (no import, no call, no citation), add a `semantically_similar_to` edge marked INFERRED with a confidence_score reflecting how similar they are (0.6-0.95). Examples:
- Two functions that both validate user input but never call each other
- A class in code and a concept in a paper that describe the same algorithm
- Two error types that handle the same failure mode differently
Only add these when the similarity is genuinely non-obvious and cross-cutting. Do not add them for trivially similar things.

Hyperedges: if 3 or more nodes clearly participate together in a shared concept, flow, or pattern that is not captured by pairwise edges alone, add a hyperedge to a top-level `hyperedges` array. Examples:
- All classes that implement a common protocol or interface
- All functions in an authentication flow (even if they don't all call each other)
- All concepts from a paper section that form one coherent idea
Use sparingly — only when the group relationship adds information beyond the pairwise edges. Maximum 3 hyperedges per chunk.

If a file has YAML frontmatter (--- ... ---), copy source_url, captured_at, author,
contributor onto every node from that file.

confidence_score is REQUIRED on every edge - never omit it, never use 0.5 as a default:
- EXTRACTED edges: confidence_score = 1.0 always
- INFERRED edges: pick exactly ONE value from this set — never 0.5:
0.95 direct structural evidence (shared data structure, named cross-file reference).
0.85 strong inference (clear functional alignment, no direct symbol link).
0.75 reasonable inference (shared problem domain + similar shape, requires interpretation).
0.65 weak inference (thematically related, no shape evidence).
0.55 speculative but plausible (surface-level co-occurrence only).
Models follow discrete rubrics better than continuous ranges; the bimodal
distribution observed in production (>50% at 0.5, >40% at 0.85+) shows the
range guidance is being collapsed to a binary. If no value above fits, mark
the edge AMBIGUOUS rather than picking 0.4 or below.
- AMBIGUOUS edges: 0.1-0.3

Node ID format: lowercase, only `[a-z0-9_]`, no dots or slashes. Format: `{stem}_{entity}` where stem is the **full repo-relative path with the extension dropped**, every path segment kept and joined with `_` (each segment lowercased with non-alphanumeric chars replaced by `_`), and entity is the symbol name similarly normalized. Use every directory level, not just the immediate parent — this keeps same-named files in different directories distinct. Examples: `src/auth/session.py` + `ValidateToken` → `src_auth_session_validatetoken`; `lib/utils/helpers.py` + `parse_url` → `lib_utils_helpers_parse_url`; `tests/test_foo.py` + `_helper` → `tests_test_foo_helper`; `docs/v1/api/README.md` + `getUser` → `docs_v1_api_readme_getuser`. Top-level files (no parent dir, e.g. `setup.py`) use just the filename stem: `setup_my_func`. This must match the ID the AST extractor generates — using just the filename (e.g., `session_validatetoken`) or only the immediate parent (e.g., `auth_session_validatetoken`) will create orphan ghost-duplicate nodes. If you are re-extracting a project built under the old immediate-parent format, the user should run `graphify extract --force` to rebuild cleanly. CRITICAL: never append chunk numbers, sequence numbers, or any suffix to an ID (no `_c1`, `_c2`, `_chunk2`, etc.). IDs must be deterministic from the label alone — the same entity must always produce the same ID regardless of which chunk processes it.

Generate the extraction JSON matching this schema exactly:
{"nodes":[{"id":"auth_session_validatetoken","label":"Human Readable Name","file_type":"code|document|paper|image|rationale|concept","source_file":"<FILE_LIST path verbatim>","source_location":null,"source_url":null,"captured_at":null,"author":null,"contributor":null}],"edges":[{"source":"node_id","target":"node_id","relation":"calls|implements|references|cites|conceptually_related_to|shares_data_with|semantically_similar_to|rationale_for","confidence":"EXTRACTED|INFERRED|AMBIGUOUS","confidence_score":1.0,"source_file":"<FILE_LIST path verbatim>","source_location":null,"weight":1.0}],"hyperedges":[{"id":"snake_case_id","label":"Human Readable Label","nodes":["node_id1","node_id2","node_id3"],"relation":"participate_in|implement|form","confidence":"EXTRACTED|INFERRED","confidence_score":0.75,"source_file":"<FILE_LIST path verbatim>"}],"input_tokens":0,"output_tokens":0}

source_file RULE (every node, edge, and hyperedge): set source_file to the path of the originating file EXACTLY as it appears in FILE_LIST — verbatim and absolute. Do NOT shorten to a basename, do NOT re-relativize, do NOT strip any directory prefix, and do NOT change separators (the engine canonicalizes separators and relativizes against the build root downstream). Copy the FILE_LIST entry character-for-character. This keeps the full build and incremental --update on the same base, so build_merge's replace-on-re-extract matches the existing node instead of accumulating a duplicate.

Then write the JSON to disk using the Write tool at this exact absolute path (no relative paths — Write resolves relative paths against an undefined cwd and the file will be silently lost):
CHUNK_PATH
```
46 changes: 46 additions & 0 deletions .claude/skills/graphify/references/github-and-merge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# graphify reference: GitHub clone and cross-repo merge

Load this when the user passed one or more `https://github.com/...` URLs, or named several local subfolders to merge into one graph.

### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)

**Single repo:**
```bash
LOCAL_PATH=$(graphify clone <github-url> [--branch <branch>])
# Use LOCAL_PATH as the target for all subsequent steps
```

**Multiple repos (cross-repo graph):**
```bash
# Clone each repo, run the full pipeline on each, then merge
graphify clone <url1> # → ~/.graphify/repos/<owner1>/<repo1>
graphify clone <url2> # → ~/.graphify/repos/<owner2>/<repo2>
# Run /graphify on each local path to produce their graph.json files
# Then merge:
graphify merge-graphs \
~/.graphify/repos/<owner1>/<repo1>/graphify-out/graph.json \
~/.graphify/repos/<owner2>/<repo2>/graphify-out/graph.json \
--out graphify-out/cross-repo-graph.json
```

Graphify clones into `~/.graphify/repos/<owner>/<repo>` and reuses existing clones on repeat runs. Each node in the merged graph carries a `repo` attribute so you can filter by origin.

**Multiple local subfolders (monorepo or multi-service layout):**

The skill pipeline writes all intermediate and final outputs to `graphify-out/` in the current working directory. Running the skill on each subfolder separately will clobber the same output dir. Instead, use the CLI directly for each subfolder — it places `graphify-out/` *inside* the scanned path:

```bash
graphify extract ./core/ # → ./core/graphify-out/graph.json
graphify extract ./service/ # → ./service/graphify-out/graph.json
graphify extract ./platform/ # → ./platform/graphify-out/graph.json
# Add --backend gemini|kimi|openai|deepseek|claude-cli depending on which API key you have set

# Then merge at the project root:
graphify merge-graphs \
./core/graphify-out/graph.json \
./service/graphify-out/graph.json \
./platform/graphify-out/graph.json \
--out graphify-out/graph.json
```

Once `graphify-out/graph.json` exists, the fast path above takes over: any codebase question runs `graphify query` directly on the merged graph — no re-extraction, no size gate.
33 changes: 33 additions & 0 deletions .claude/skills/graphify/references/hooks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# graphify reference: commit hook and native CLAUDE.md integration

Load this when the user asked to install the post-commit hook or wire graphify into a project's CLAUDE.md.

## For git commit hook

Install a post-commit hook that auto-rebuilds the graph after every commit. No background process needed - triggers once per commit, works with any editor.

```bash
graphify hook install # install
graphify hook uninstall # remove
graphify hook status # check
```

After every `git commit`, the hook detects which code files changed (via `git diff HEAD~1`), re-runs AST extraction on those files, and rebuilds `graph.json` and `GRAPH_REPORT.md`. Doc/image changes are ignored by the hook - run `/graphify --update` manually for those.

If a post-commit hook already exists, graphify appends to it rather than replacing it.

---

## For native CLAUDE.md integration

Run once per project to make graphify always-on in Claude Code sessions:

```bash
graphify claude install
```

This writes a `## graphify` section to the local `CLAUDE.md` that instructs Claude to check the graph before answering codebase questions and rebuild it after code changes. No manual `/graphify` needed in future sessions.

```bash
graphify claude uninstall # remove the section
```
Loading