@rubytech/create-maxy-code 0.1.114 → 0.1.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (711) hide show
  1. package/dist/__tests__/installer-specialist-registration.test.js +40 -1
  2. package/dist/__tests__/premium-bundle-gate.test.js +59 -0
  3. package/dist/index.js +24 -1
  4. package/dist/specialist-registration.js +15 -0
  5. package/package.json +1 -1
  6. package/payload/platform/config/brand.json +1 -1
  7. package/payload/platform/neo4j/schema.cypher +1 -1
  8. package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -5
  9. package/payload/platform/plugins/contacts/mcp/dist/index.js +3 -3
  10. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -1
  11. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +1 -1
  12. package/payload/platform/plugins/docs/references/contacts-guide.md +1 -9
  13. package/payload/platform/plugins/docs/references/getting-started.md +1 -1
  14. package/payload/platform/plugins/docs/references/internals.md +1 -1
  15. package/payload/platform/plugins/docs/references/platform.md +1 -1
  16. package/payload/platform/plugins/docs/references/plugins-guide.md +1 -2
  17. package/payload/platform/plugins/linkedin-import/PLUGIN.md +1 -1
  18. package/payload/platform/plugins/memory/PLUGIN.md +1 -1
  19. package/payload/platform/plugins/sales/.claude-plugin/plugin.json +1 -1
  20. package/payload/platform/plugins/sales/PLUGIN.md +9 -9
  21. package/payload/platform/plugins/sales/references/close-tracking.md +6 -6
  22. package/payload/platform/plugins/sales/references/faq.md +1 -5
  23. package/payload/platform/plugins/sales/references/objection-handling.md +2 -2
  24. package/payload/platform/plugins/scheduling/PLUGIN.md +1 -1
  25. package/payload/platform/plugins/scheduling/mcp/dist/index.js +2 -2
  26. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/getUserTimezone.test.js +1 -1
  28. package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +3 -3
  29. package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +4 -4
  30. package/payload/platform/plugins/workflows/PLUGIN.md +1 -1
  31. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.d.ts +1 -1
  32. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js +2 -2
  33. package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-execute.js.map +1 -1
  34. package/payload/platform/scripts/conversation-id-allowlist.txt +0 -7
  35. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  36. package/payload/platform/services/claude-session-manager/dist/http-server.js +42 -1
  37. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  38. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +34 -0
  39. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  40. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +83 -2
  41. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  42. package/payload/platform/templates/specialists/agents/project-manager.md +1 -3
  43. package/payload/premium-plugins/.claude-plugin/marketplace.json +0 -10
  44. package/payload/premium-plugins/venture-studio/skills/office-hours/SKILL.md +3 -3
  45. package/payload/premium-plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +4 -4
  46. package/payload/server/{chunk-FSPPVVWM.js → chunk-FJCI6X3H.js} +192 -0
  47. package/payload/server/maxy-edge.js +1 -1
  48. package/payload/server/public/assets/{ChatInput-CsnIedhS.js → ChatInput-CJo_77bp.js} +5 -1
  49. package/payload/server/public/assets/{Checkbox-CWugFyFT.js → Checkbox-YrQovXpN.js} +1 -1
  50. package/payload/server/public/assets/{admin-D3gZuyUn.js → admin-DOxHsV7g.js} +25 -25
  51. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-CeTRKWDb.js → architectureDiagram-Q4EWVU46-Breg9-99.js} +1 -1
  52. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DeeIX5U3.js → blockDiagram-DXYQGD6D-DXf1_673.js} +1 -1
  53. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-CFsqZuil.js → c4Diagram-AHTNJAMY-CSZ36W4-.js} +1 -1
  54. package/payload/server/public/assets/channel-BmZnt3PP.js +1 -0
  55. package/payload/server/public/assets/{chunk-336JU56O-DpIXuFM0.js → chunk-336JU56O-DsrLk2eK.js} +2 -2
  56. package/payload/server/public/assets/{chunk-426QAEUC-Qk8qqrvA.js → chunk-426QAEUC-JpNfNf81.js} +1 -1
  57. package/payload/server/public/assets/{chunk-4TB4RGXK-DtM8-CUn.js → chunk-4TB4RGXK-DmClEAD0.js} +1 -1
  58. package/payload/server/public/assets/{chunk-5FUZZQ4R-CrSQ4ySU.js → chunk-5FUZZQ4R-BI9blW3N.js} +1 -1
  59. package/payload/server/public/assets/{chunk-5PVQY5BW-Bn2nQwdj.js → chunk-5PVQY5BW-BbgttEFO.js} +1 -1
  60. package/payload/server/public/assets/{chunk-EDXVE4YY-CzCPnR0P.js → chunk-EDXVE4YY-BX_LCFOx.js} +1 -1
  61. package/payload/server/public/assets/{chunk-ENJZ2VHE-CgZj9RoG.js → chunk-ENJZ2VHE-Bb7EoD0w.js} +1 -1
  62. package/payload/server/public/assets/{chunk-ICPOFSXX-wy-eNjwW.js → chunk-ICPOFSXX-DH8uQk-s.js} +1 -1
  63. package/payload/server/public/assets/{chunk-OYMX7WX6-CMmJtL8S.js → chunk-OYMX7WX6-FH5kgXsw.js} +1 -1
  64. package/payload/server/public/assets/{chunk-U2HBQHQK-CFCW7OaT.js → chunk-U2HBQHQK-D_ljlkHr.js} +1 -1
  65. package/payload/server/public/assets/{chunk-X2U36JSP-Bgh-CJSN.js → chunk-X2U36JSP-BX3EmZvm.js} +1 -1
  66. package/payload/server/public/assets/{chunk-YZCP3GAM-BXKwZ4vN.js → chunk-YZCP3GAM-Vu7-E93h.js} +1 -1
  67. package/payload/server/public/assets/{chunk-ZZ45TVLE-BiOuK5NP.js → chunk-ZZ45TVLE-CwjhNPX5.js} +1 -1
  68. package/payload/server/public/assets/classDiagram-6PBFFD2Q-kmMLFUpV.js +1 -0
  69. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BV7Ae8ct.js +1 -0
  70. package/payload/server/public/assets/clone-B5eqoN9I.js +1 -0
  71. package/payload/server/public/assets/{dagre-DyCxa9Q2.js → dagre-Ce6gsj0C.js} +1 -1
  72. package/payload/server/public/assets/{dagre-KV5264BT-Cffo_hmf.js → dagre-KV5264BT-BaMGpsoy.js} +1 -1
  73. package/payload/server/public/assets/data-NMvGx6jm.js +1 -0
  74. package/payload/server/public/assets/{diagram-5BDNPKRD-Bt93Du3V.js → diagram-5BDNPKRD-CHEE9rjq.js} +1 -1
  75. package/payload/server/public/assets/{diagram-G4DWMVQ6-v4r-tBsC.js → diagram-G4DWMVQ6-C98sZLW1.js} +1 -1
  76. package/payload/server/public/assets/{diagram-MMDJMWI5-DKrVPOP-.js → diagram-MMDJMWI5-DNvMGsTZ.js} +1 -1
  77. package/payload/server/public/assets/{diagram-TYMM5635-B1PzWQb9.js → diagram-TYMM5635-Cdte4IBa.js} +1 -1
  78. package/payload/server/public/assets/{erDiagram-SMLLAGMA-ClQzsQAs.js → erDiagram-SMLLAGMA-C9VZsWXK.js} +1 -1
  79. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-h3IbpN_7.js → flowDiagram-DWJPFMVM-tuP5fzzR.js} +1 -1
  80. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-ClaxOJi8.js → ganttDiagram-T4ZO3ILL-SJgRPUwx.js} +1 -1
  81. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-pM-U4ClD.js → gitGraphDiagram-UUTBAWPF-DU_cI_50.js} +1 -1
  82. package/payload/server/public/assets/graph-BkwTCV2Y.js +1 -0
  83. package/payload/server/public/assets/graph-labels-h39S93Xo.js +1 -0
  84. package/payload/server/public/assets/{graphlib-CwimOv_M.js → graphlib-D_nAsvmx.js} +1 -1
  85. package/payload/server/public/assets/{infoDiagram-42DDH7IO-DcO3Giwe.js → infoDiagram-42DDH7IO-Cj2Y19m6.js} +1 -1
  86. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-BcdSL5VS.js → ishikawaDiagram-UXIWVN3A-DMc1xq1y.js} +1 -1
  87. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-CYahHYzf.js → journeyDiagram-VCZTEJTY-C4CRAQma.js} +1 -1
  88. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-Cl5KhoS4.js → kanban-definition-6JOO6SKY-CTr4AldU.js} +1 -1
  89. package/payload/server/public/assets/lib-Bnh57com.js +29 -0
  90. package/payload/server/public/assets/{line-d_2oTxLp.js → line-Btlm_IAl.js} +1 -1
  91. package/payload/server/public/assets/{mermaid-parser.core-CMMDGv3x.js → mermaid-parser.core-DXFdj_y1.js} +1 -1
  92. package/payload/server/public/assets/{mermaid.core-DK9ENGbr.js → mermaid.core-DFBhoCr5.js} +3 -3
  93. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-mA3x3MFG.js → mindmap-definition-QFDTVHPH-r9gVQybo.js} +1 -1
  94. package/payload/server/public/assets/{page-CgDmg_fX.js → page-B0iMmY6t.js} +1 -1
  95. package/payload/server/public/assets/{page-D9lluVl7.js → page-zQ79YCEt.js} +2 -2
  96. package/payload/server/public/assets/{pieDiagram-DEJITSTG-CW1nGFlY.js → pieDiagram-DEJITSTG-CHKZjSaH.js} +1 -1
  97. package/payload/server/public/assets/{public-DdLMkNdS.js → public-DyGWgfaZ.js} +4 -4
  98. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-DI5igJhR.js → quadrantDiagram-34T5L4WZ-CSGR1HJr.js} +1 -1
  99. package/payload/server/public/assets/{requirementDiagram-MS252O5E-DyVeI4e_.js → requirementDiagram-MS252O5E-DZ6hX9D6.js} +1 -1
  100. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-CCTTBYKY.js → sankeyDiagram-XADWPNL6-DbZBKh0m.js} +1 -1
  101. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-hVVf35ly.js → sequenceDiagram-FGHM5R23-BHHpb8dt.js} +1 -1
  102. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-CSLuQDUX.js → stateDiagram-FHFEXIEX-DQ1jiLB4.js} +1 -1
  103. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-CByT2RzF.js +1 -0
  104. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-sxC3W8Q4.js → timeline-definition-GMOUNBTQ-BlGiEU7p.js} +1 -1
  105. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-Ro-ton6Z.js → vennDiagram-DHZGUBPP-DmEH-hsB.js} +1 -1
  106. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-T-dKD0Zx.js → wardleyDiagram-NUSXRM2D-C7KJJ40d.js} +1 -1
  107. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-CfProPts.js → xychartDiagram-5P7HB3ND-JDnusCaa.js} +1 -1
  108. package/payload/server/public/data.html +4 -4
  109. package/payload/server/public/graph.html +5 -5
  110. package/payload/server/public/index.html +7 -7
  111. package/payload/server/public/public.html +4 -4
  112. package/payload/server/server.js +52 -8
  113. package/payload/platform/plugins/waitlist/.claude-plugin/plugin.json +0 -17
  114. package/payload/platform/plugins/waitlist/PLUGIN.md +0 -86
  115. package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts +0 -2
  116. package/payload/platform/plugins/waitlist/mcp/dist/index.d.ts.map +0 -1
  117. package/payload/platform/plugins/waitlist/mcp/dist/index.js +0 -388
  118. package/payload/platform/plugins/waitlist/mcp/dist/index.js.map +0 -1
  119. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.d.ts +0 -16
  120. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.d.ts.map +0 -1
  121. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.js +0 -58
  122. package/payload/platform/plugins/waitlist/mcp/dist/lib/admin-model.js.map +0 -1
  123. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts +0 -3
  124. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.d.ts.map +0 -1
  125. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js +0 -48
  126. package/payload/platform/plugins/waitlist/mcp/dist/lib/embedding.js.map +0 -1
  127. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts +0 -5
  128. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.d.ts.map +0 -1
  129. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js +0 -40
  130. package/payload/platform/plugins/waitlist/mcp/dist/lib/neo4j.js.map +0 -1
  131. package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.d.ts +0 -2
  132. package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.d.ts.map +0 -1
  133. package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js +0 -70
  134. package/payload/platform/plugins/waitlist/mcp/dist/tools/__tests__/waitlist-persist.test.js.map +0 -1
  135. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts +0 -34
  136. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.d.ts.map +0 -1
  137. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js +0 -129
  138. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-extract.js.map +0 -1
  139. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.d.ts +0 -27
  140. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.d.ts.map +0 -1
  141. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.js +0 -127
  142. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-heal.js.map +0 -1
  143. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts +0 -23
  144. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.d.ts.map +0 -1
  145. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js +0 -58
  146. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-list.js.map +0 -1
  147. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts +0 -83
  148. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.d.ts.map +0 -1
  149. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js +0 -433
  150. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-persist.js.map +0 -1
  151. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts +0 -19
  152. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.d.ts.map +0 -1
  153. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js +0 -81
  154. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-review.js.map +0 -1
  155. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts +0 -28
  156. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.d.ts.map +0 -1
  157. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js +0 -50
  158. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-scan.js.map +0 -1
  159. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts +0 -33
  160. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.d.ts.map +0 -1
  161. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js +0 -297
  162. package/payload/platform/plugins/waitlist/mcp/dist/tools/waitlist-setup.js.map +0 -1
  163. package/payload/platform/plugins/waitlist/mcp/package.json +0 -23
  164. package/payload/platform/plugins/waitlist/mcp/vitest.config.ts +0 -9
  165. package/payload/premium-plugins/real-agent/BUNDLE.md +0 -47
  166. package/payload/premium-plugins/real-agent/agents/buyer-enquiry/IDENTITY.md +0 -13
  167. package/payload/premium-plugins/real-agent/agents/buyer-enquiry/SOUL.md +0 -19
  168. package/payload/premium-plugins/real-agent/agents/buyer-enquiry/template.json +0 -9
  169. package/payload/premium-plugins/real-agent/agents/compliance.md +0 -317
  170. package/payload/premium-plugins/real-agent/agents/listing-curator.md +0 -152
  171. package/payload/premium-plugins/real-agent/agents/negotiator.md +0 -167
  172. package/payload/premium-plugins/real-agent/agents/valuer.md +0 -155
  173. package/payload/premium-plugins/real-agent/plugins/.claude-plugin/marketplace.json +0 -68
  174. package/payload/premium-plugins/real-agent/plugins/brochures/.claude-plugin/plugin.json +0 -8
  175. package/payload/premium-plugins/real-agent/plugins/brochures/PLUGIN.md +0 -38
  176. package/payload/premium-plugins/real-agent/plugins/brochures/commands/make-brochure.md +0 -11
  177. package/payload/premium-plugins/real-agent/plugins/brochures/skills/a4-print-documents/SKILL.md +0 -478
  178. package/payload/premium-plugins/real-agent/plugins/brochures/skills/brand-design/SKILL.md +0 -235
  179. package/payload/premium-plugins/real-agent/plugins/brochures/skills/make-brochure/SKILL.md +0 -355
  180. package/payload/premium-plugins/real-agent/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +0 -115
  181. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/SKILL.md +0 -195
  182. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/build.md +0 -689
  183. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/copy.md +0 -211
  184. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/images.md +0 -166
  185. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/index-landing.md +0 -376
  186. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/index.html +0 -1290
  187. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/placeholders.md +0 -250
  188. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/registers.md +0 -105
  189. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/seller-brief.md +0 -56
  190. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/structure.md +0 -249
  191. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/references/template.html +0 -2400
  192. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-extract/SKILL.md +0 -366
  193. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/SKILL.md +0 -100
  194. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/references/render.py +0 -267
  195. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-market-report/references/template.html +0 -266
  196. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-socials/SKILL.md +0 -143
  197. package/payload/premium-plugins/real-agent/plugins/buyers/.claude-plugin/plugin.json +0 -8
  198. package/payload/premium-plugins/real-agent/plugins/buyers/PLUGIN.md +0 -35
  199. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-feedback/SKILL.md +0 -109
  200. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/SKILL.md +0 -42
  201. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +0 -16
  202. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +0 -59
  203. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +0 -63
  204. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +0 -54
  205. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/feedback-collection.md +0 -42
  206. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/offer-capture.md +0 -38
  207. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/viewing-booking.md +0 -32
  208. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-management/references/viewing-management.md +0 -52
  209. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/SKILL.md +0 -407
  210. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +0 -68
  211. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +0 -61
  212. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +0 -45
  213. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +0 -92
  214. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +0 -78
  215. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +0 -53
  216. package/payload/premium-plugins/real-agent/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +0 -41
  217. package/payload/premium-plugins/real-agent/plugins/buyers/skills/property-enquiry/SKILL.md +0 -126
  218. package/payload/premium-plugins/real-agent/plugins/buyers/skills/property-recommender/SKILL.md +0 -116
  219. package/payload/premium-plugins/real-agent/plugins/buyers/skills/viewing-management/SKILL.md +0 -111
  220. package/payload/premium-plugins/real-agent/plugins/estate-business/.claude-plugin/plugin.json +0 -8
  221. package/payload/premium-plugins/real-agent/plugins/estate-business/PLUGIN.md +0 -64
  222. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/SKILL.md +0 -133
  223. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +0 -37
  224. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +0 -14
  225. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/keller-org-model.md +0 -17
  226. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +0 -22
  227. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/listing-management-system.md +0 -11
  228. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/net-figure-form.md +0 -11
  229. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +0 -13
  230. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +0 -14
  231. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +0 -43
  232. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-growth/references/wingman-structure.md +0 -13
  233. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-operations/SKILL.md +0 -32
  234. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-operations/references/crm-systems.md +0 -57
  235. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-operations/references/hiring-guide.md +0 -59
  236. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-operations/references/impact-framework.md +0 -47
  237. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +0 -55
  238. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/business-operations/references/team-management.md +0 -48
  239. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/commission-calculator/SKILL.md +0 -40
  240. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/SKILL.md +0 -52
  241. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +0 -39
  242. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +0 -66
  243. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +0 -90
  244. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +0 -92
  245. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +0 -66
  246. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +0 -66
  247. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +0 -57
  248. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/month-end-close/SKILL.md +0 -69
  249. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/payment-batch-stager/SKILL.md +0 -42
  250. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/period-reconciler/SKILL.md +0 -42
  251. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/SKILL.md +0 -117
  252. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +0 -31
  253. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +0 -58
  254. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +0 -28
  255. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +0 -19
  256. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/blast-formula.md +0 -42
  257. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/brand-leader.md +0 -48
  258. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +0 -59
  259. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/content-engine.md +0 -49
  260. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +0 -23
  261. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +0 -52
  262. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +0 -20
  263. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +0 -18
  264. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/platforms.md +0 -41
  265. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +0 -54
  266. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +0 -25
  267. package/payload/premium-plugins/real-agent/plugins/estate-business/skills/personal-branding/references/visual-identity.md +0 -27
  268. package/payload/premium-plugins/real-agent/plugins/estate-coaching/.claude-plugin/plugin.json +0 -8
  269. package/payload/premium-plugins/real-agent/plugins/estate-coaching/PLUGIN.md +0 -54
  270. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/agent-performance/SKILL.md +0 -371
  271. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +0 -52
  272. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +0 -104
  273. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +0 -63
  274. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +0 -71
  275. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +0 -36
  276. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +0 -56
  277. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +0 -61
  278. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +0 -109
  279. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +0 -421
  280. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +0 -86
  281. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +0 -78
  282. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +0 -92
  283. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +0 -103
  284. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/serhant-training/SKILL.md +0 -410
  285. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +0 -70
  286. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +0 -72
  287. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +0 -53
  288. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +0 -72
  289. package/payload/premium-plugins/real-agent/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +0 -79
  290. package/payload/premium-plugins/real-agent/plugins/estate-sales/.claude-plugin/plugin.json +0 -8
  291. package/payload/premium-plugins/real-agent/plugins/estate-sales/PLUGIN.md +0 -52
  292. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/chase-progression/SKILL.md +0 -107
  293. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/negotiation/SKILL.md +0 -35
  294. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/negotiation/references/deal-saving.md +0 -47
  295. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +0 -64
  296. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +0 -29
  297. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +0 -42
  298. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +0 -43
  299. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/risk-scorer/SKILL.md +0 -42
  300. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-closer/SKILL.md +0 -24
  301. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +0 -36
  302. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/SKILL.md +0 -30
  303. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +0 -88
  304. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +0 -68
  305. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +0 -78
  306. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +0 -77
  307. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +0 -22
  308. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +0 -103
  309. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +0 -52
  310. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-negotiation/SKILL.md +0 -29
  311. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +0 -70
  312. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +0 -40
  313. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +0 -55
  314. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +0 -57
  315. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +0 -54
  316. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-progression/SKILL.md +0 -27
  317. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +0 -54
  318. package/payload/premium-plugins/real-agent/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +0 -66
  319. package/payload/premium-plugins/real-agent/plugins/estate-teaching/.claude-plugin/plugin.json +0 -8
  320. package/payload/premium-plugins/real-agent/plugins/estate-teaching/PLUGIN.md +0 -30
  321. package/payload/premium-plugins/real-agent/plugins/estate-teaching/skills/content-directory/SKILL.md +0 -39
  322. package/payload/premium-plugins/real-agent/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +0 -65
  323. package/payload/premium-plugins/real-agent/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +0 -47
  324. package/payload/premium-plugins/real-agent/plugins/leads/.claude-plugin/plugin.json +0 -8
  325. package/payload/premium-plugins/real-agent/plugins/leads/PLUGIN.md +0 -61
  326. package/payload/premium-plugins/real-agent/plugins/leads/skills/chain-progression-tracker/SKILL.md +0 -51
  327. package/payload/premium-plugins/real-agent/plugins/leads/skills/diary-builder/SKILL.md +0 -38
  328. package/payload/premium-plugins/real-agent/plugins/leads/skills/enquiry-triage/SKILL.md +0 -36
  329. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/SKILL.md +0 -137
  330. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +0 -28
  331. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +0 -37
  332. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +0 -30
  333. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +0 -45
  334. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +0 -30
  335. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +0 -41
  336. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +0 -34
  337. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +0 -31
  338. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +0 -20
  339. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +0 -22
  340. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +0 -26
  341. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +0 -21
  342. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +0 -18
  343. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/sms-templates.md +0 -40
  344. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +0 -34
  345. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +0 -60
  346. package/payload/premium-plugins/real-agent/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +0 -59
  347. package/payload/premium-plugins/real-agent/plugins/leads/skills/morning-round/SKILL.md +0 -72
  348. package/payload/premium-plugins/real-agent/plugins/leads/skills/prospecting/SKILL.md +0 -33
  349. package/payload/premium-plugins/real-agent/plugins/leads/skills/prospecting/references/database-matching.md +0 -30
  350. package/payload/premium-plugins/real-agent/plugins/leads/skills/prospecting/references/database-value.md +0 -53
  351. package/payload/premium-plugins/real-agent/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +0 -24
  352. package/payload/premium-plugins/real-agent/plugins/leads/skills/prospecting/references/reactivation.md +0 -34
  353. package/payload/premium-plugins/real-agent/plugins/listings/.claude-plugin/plugin.json +0 -8
  354. package/payload/premium-plugins/real-agent/plugins/listings/PLUGIN.md +0 -100
  355. package/payload/premium-plugins/real-agent/plugins/listings/skills/comparable-finder/SKILL.md +0 -52
  356. package/payload/premium-plugins/real-agent/plugins/listings/skills/home-preparation/SKILL.md +0 -28
  357. package/payload/premium-plugins/real-agent/plugins/listings/skills/home-preparation/references/kerb-appeal.md +0 -38
  358. package/payload/premium-plugins/real-agent/plugins/listings/skills/home-preparation/references/photo-day.md +0 -59
  359. package/payload/premium-plugins/real-agent/plugins/listings/skills/home-preparation/references/situational-tips.md +0 -50
  360. package/payload/premium-plugins/real-agent/plugins/listings/skills/home-preparation/references/staging-guide.md +0 -52
  361. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-copy-writer/SKILL.md +0 -55
  362. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/SKILL.md +0 -286
  363. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/references/booking-script.md +0 -51
  364. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/references/objection-scripts.md +0 -193
  365. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +0 -123
  366. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +0 -139
  367. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/references/set-to-sell.md +0 -55
  368. package/payload/premium-plugins/real-agent/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +0 -107
  369. package/payload/premium-plugins/real-agent/plugins/listings/skills/local-market-stats/SKILL.md +0 -33
  370. package/payload/premium-plugins/real-agent/plugins/listings/skills/new-instruction/SKILL.md +0 -77
  371. package/payload/premium-plugins/real-agent/plugins/listings/skills/particulars-builder/SKILL.md +0 -48
  372. package/payload/premium-plugins/real-agent/plugins/listings/skills/portal-launch-scheduler/SKILL.md +0 -49
  373. package/payload/premium-plugins/real-agent/plugins/listings/skills/pricing-scenario-builder/SKILL.md +0 -35
  374. package/payload/premium-plugins/real-agent/plugins/listings/skills/property-marketing/SKILL.md +0 -337
  375. package/payload/premium-plugins/real-agent/plugins/listings/skills/property-marketing/references/auction-report-template.md +0 -41
  376. package/payload/premium-plugins/real-agent/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +0 -43
  377. package/payload/premium-plugins/real-agent/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +0 -121
  378. package/payload/premium-plugins/real-agent/plugins/listings/skills/property-marketing/references/eoi-form-template.md +0 -62
  379. package/payload/premium-plugins/real-agent/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +0 -63
  380. package/payload/premium-plugins/real-agent/plugins/listings/skills/supplier-booker/SKILL.md +0 -39
  381. package/payload/premium-plugins/real-agent/plugins/listings/skills/talk-track-composer/SKILL.md +0 -36
  382. package/payload/premium-plugins/real-agent/plugins/listings/skills/terms-of-business-drafter/SKILL.md +0 -54
  383. package/payload/premium-plugins/real-agent/plugins/listings/skills/valuation-prep/SKILL.md +0 -69
  384. package/payload/premium-plugins/real-agent/plugins/loop/.claude-plugin/plugin.json +0 -8
  385. package/payload/premium-plugins/real-agent/plugins/loop/PLUGIN.md +0 -261
  386. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/index.d.ts +0 -2
  387. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/index.d.ts.map +0 -1
  388. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/index.js +0 -320
  389. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/index.js.map +0 -1
  390. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/crypto.d.ts +0 -10
  391. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/crypto.d.ts.map +0 -1
  392. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/crypto.js +0 -88
  393. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/crypto.js.map +0 -1
  394. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/file-crypto.d.ts +0 -3
  395. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  396. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/file-crypto.js +0 -48
  397. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/file-crypto.js.map +0 -1
  398. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/key-store.d.ts +0 -22
  399. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/key-store.d.ts.map +0 -1
  400. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/key-store.js +0 -165
  401. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/key-store.js.map +0 -1
  402. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/loop-api.d.ts +0 -82
  403. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +0 -1
  404. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/loop-api.js +0 -392
  405. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/loop-api.js.map +0 -1
  406. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.d.ts +0 -5
  407. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +0 -1
  408. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.js +0 -40
  409. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/lib/neo4j.js.map +0 -1
  410. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/auto-responder.d.ts +0 -12
  411. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/auto-responder.d.ts.map +0 -1
  412. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/auto-responder.js +0 -22
  413. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/auto-responder.js.map +0 -1
  414. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +0 -10
  415. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +0 -1
  416. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/customer-preferences.js +0 -24
  417. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/customer-preferences.js.map +0 -1
  418. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/feedback.d.ts +0 -16
  419. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/feedback.d.ts.map +0 -1
  420. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/feedback.js +0 -35
  421. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/feedback.js.map +0 -1
  422. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-deregister.d.ts +0 -5
  423. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  424. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-deregister.js +0 -9
  425. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-deregister.js.map +0 -1
  426. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-list.d.ts +0 -4
  427. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-list.d.ts.map +0 -1
  428. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-list.js +0 -14
  429. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-list.js.map +0 -1
  430. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-register.d.ts +0 -9
  431. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-register.d.ts.map +0 -1
  432. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-register.js +0 -43
  433. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/key-register.js.map +0 -1
  434. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +0 -6
  435. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +0 -1
  436. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-enquiry.js +0 -7
  437. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +0 -1
  438. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +0 -9
  439. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +0 -1
  440. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-batch.js +0 -16
  441. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +0 -1
  442. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +0 -15
  443. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +0 -1
  444. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-request.js +0 -11
  445. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +0 -1
  446. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match.d.ts +0 -10
  447. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +0 -1
  448. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match.js +0 -39
  449. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/marketing-match.js.map +0 -1
  450. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-detail.d.ts +0 -9
  451. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +0 -1
  452. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-detail.js +0 -125
  453. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-detail.js.map +0 -1
  454. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-search.d.ts +0 -18
  455. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-search.d.ts.map +0 -1
  456. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-search.js +0 -87
  457. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/people-search.js.map +0 -1
  458. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-detail.d.ts +0 -10
  459. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +0 -1
  460. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-detail.js +0 -82
  461. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-detail.js.map +0 -1
  462. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-intent.d.ts +0 -33
  463. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-intent.d.ts.map +0 -1
  464. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-intent.js +0 -19
  465. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-intent.js.map +0 -1
  466. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-listed.d.ts +0 -11
  467. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +0 -1
  468. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-listed.js +0 -26
  469. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-listed.js.map +0 -1
  470. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-request.d.ts +0 -15
  471. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-request.d.ts.map +0 -1
  472. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-request.js +0 -11
  473. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-request.js.map +0 -1
  474. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-search.d.ts +0 -16
  475. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-search.d.ts.map +0 -1
  476. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-search.js +0 -41
  477. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-search.js.map +0 -1
  478. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-sold.d.ts +0 -9
  479. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-sold.d.ts.map +0 -1
  480. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-sold.js +0 -19
  481. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/property-sold.js.map +0 -1
  482. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/supplier.d.ts +0 -13
  483. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/supplier.d.ts.map +0 -1
  484. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/supplier.js +0 -49
  485. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/supplier.js.map +0 -1
  486. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-availability.d.ts +0 -7
  487. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +0 -1
  488. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-availability.js +0 -19
  489. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-availability.js.map +0 -1
  490. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-info.d.ts +0 -5
  491. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-info.d.ts.map +0 -1
  492. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-info.js +0 -32
  493. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/team-info.js.map +0 -1
  494. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-create.d.ts +0 -14
  495. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +0 -1
  496. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-create.js +0 -11
  497. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-create.js.map +0 -1
  498. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +0 -9
  499. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +0 -1
  500. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-detail.js +0 -85
  501. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-detail.js.map +0 -1
  502. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-search.d.ts +0 -13
  503. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +0 -1
  504. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-search.js +0 -44
  505. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-search.js.map +0 -1
  506. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-update.d.ts +0 -14
  507. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +0 -1
  508. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-update.js +0 -18
  509. package/payload/premium-plugins/real-agent/plugins/loop/mcp/dist/tools/viewing-update.js.map +0 -1
  510. package/payload/premium-plugins/real-agent/plugins/loop/mcp/package-lock.json +0 -2549
  511. package/payload/premium-plugins/real-agent/plugins/loop/mcp/package.json +0 -21
  512. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +0 -26467
  513. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/__tests__/new-tool-shape.test.ts +0 -99
  514. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/__tests__/plugin-md-time-doctrine.test.ts +0 -132
  515. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +0 -154
  516. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/index.ts +0 -498
  517. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/crypto.ts +0 -105
  518. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/file-crypto.ts +0 -54
  519. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/key-store.ts +0 -221
  520. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/loop-api.ts +0 -567
  521. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/lib/neo4j.ts +0 -51
  522. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/auto-responder.ts +0 -80
  523. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/customer-preferences.ts +0 -66
  524. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/feedback.ts +0 -86
  525. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/key-deregister.ts +0 -12
  526. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/key-list.ts +0 -19
  527. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/key-register.ts +0 -70
  528. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/marketing-enquiry.ts +0 -27
  529. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/marketing-match-batch.ts +0 -53
  530. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/marketing-match-request.ts +0 -42
  531. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/marketing-match.ts +0 -84
  532. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/people-detail.ts +0 -245
  533. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/people-search.ts +0 -180
  534. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/property-detail.ts +0 -145
  535. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/property-intent.ts +0 -84
  536. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/property-listed.ts +0 -81
  537. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/property-search.ts +0 -92
  538. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/property-sold.ts +0 -67
  539. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/supplier.ts +0 -129
  540. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/team-availability.ts +0 -52
  541. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/team-info.ts +0 -95
  542. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/viewing-create.ts +0 -41
  543. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/viewing-detail.ts +0 -171
  544. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/viewing-search.ts +0 -92
  545. package/payload/premium-plugins/real-agent/plugins/loop/mcp/src/tools/viewing-update.ts +0 -53
  546. package/payload/premium-plugins/real-agent/plugins/loop/mcp/tsconfig.json +0 -20
  547. package/payload/premium-plugins/real-agent/plugins/loop/mcp/vitest.config.ts +0 -9
  548. package/payload/premium-plugins/real-agent/plugins/loop/skills/compliance-flag-checker/SKILL.md +0 -53
  549. package/payload/premium-plugins/real-agent/plugins/loop/skills/priority-ranker/SKILL.md +0 -40
  550. package/payload/premium-plugins/real-agent/plugins/loop/skills/tone-matched-drafter/SKILL.md +0 -53
  551. package/payload/premium-plugins/real-agent/plugins/loop/skills/variance-narrator/SKILL.md +0 -50
  552. package/payload/premium-plugins/real-agent/plugins/loop/skills/vendor-research/SKILL.md +0 -54
  553. package/payload/premium-plugins/real-agent/plugins/preval/.claude-plugin/plugin.json +0 -8
  554. package/payload/premium-plugins/real-agent/plugins/preval/PLUGIN.md +0 -55
  555. package/payload/premium-plugins/real-agent/plugins/preval/hooks/preval-prompt-required.sh +0 -140
  556. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/SKILL.md +0 -198
  557. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/__tests__/adherence.test.py +0 -373
  558. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/render.py +0 -814
  559. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template-inputs.schema.json +0 -204
  560. package/payload/premium-plugins/real-agent/plugins/preval/skills/property-preval/references/template.html +0 -381
  561. package/payload/premium-plugins/real-agent/plugins/property-data/.claude-plugin/plugin.json +0 -8
  562. package/payload/premium-plugins/real-agent/plugins/property-data/PLUGIN.md +0 -181
  563. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.d.ts +0 -2
  564. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.d.ts.map +0 -1
  565. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js +0 -236
  566. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/index.js.map +0 -1
  567. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.d.ts +0 -3
  568. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.d.ts.map +0 -1
  569. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.js +0 -72
  570. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/crypto.js.map +0 -1
  571. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/file-crypto.d.ts +0 -3
  572. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/file-crypto.d.ts.map +0 -1
  573. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/file-crypto.js +0 -49
  574. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/file-crypto.js.map +0 -1
  575. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/key-store.d.ts +0 -15
  576. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/key-store.d.ts.map +0 -1
  577. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/key-store.js +0 -135
  578. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/key-store.js.map +0 -1
  579. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.d.ts +0 -5
  580. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.d.ts.map +0 -1
  581. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.js +0 -38
  582. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/neo4j.js.map +0 -1
  583. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts +0 -28
  584. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.d.ts.map +0 -1
  585. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.js +0 -101
  586. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/lib/propertydata-api.js.map +0 -1
  587. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.d.ts +0 -24
  588. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.d.ts.map +0 -1
  589. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.js +0 -33
  590. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/endpoints.js.map +0 -1
  591. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.d.ts +0 -4
  592. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.d.ts.map +0 -1
  593. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.js +0 -9
  594. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-deregister.js.map +0 -1
  595. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.d.ts +0 -4
  596. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.d.ts.map +0 -1
  597. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.js +0 -10
  598. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-list.js.map +0 -1
  599. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.d.ts +0 -5
  600. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.d.ts.map +0 -1
  601. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.js +0 -50
  602. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/dist/tools/key-register.js.map +0 -1
  603. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/package-lock.json +0 -2566
  604. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/package.json +0 -21
  605. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/endpoints.test.ts +0 -252
  606. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/key-roundtrip.test.ts +0 -107
  607. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/propertydata-api.test.ts +0 -184
  608. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/__tests__/schema-parity.test.ts +0 -62
  609. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/index.ts +0 -409
  610. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/crypto.ts +0 -79
  611. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/file-crypto.ts +0 -55
  612. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/key-store.ts +0 -181
  613. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/neo4j.ts +0 -47
  614. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/lib/propertydata-api.ts +0 -120
  615. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/endpoints.ts +0 -47
  616. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/key-deregister.ts +0 -9
  617. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/key-list.ts +0 -10
  618. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/src/tools/key-register.ts +0 -54
  619. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/tsconfig.json +0 -20
  620. package/payload/premium-plugins/real-agent/plugins/property-data/mcp/vitest.config.ts +0 -8
  621. package/payload/premium-plugins/real-agent/plugins/property-data/skills/property-data/SKILL.md +0 -77
  622. package/payload/premium-plugins/real-agent/plugins/vendors/.claude-plugin/plugin.json +0 -8
  623. package/payload/premium-plugins/real-agent/plugins/vendors/PLUGIN.md +0 -33
  624. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/SKILL.md +0 -42
  625. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +0 -28
  626. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +0 -44
  627. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +0 -70
  628. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +0 -33
  629. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/price-alignment.md +0 -34
  630. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +0 -38
  631. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +0 -51
  632. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +0 -76
  633. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +0 -63
  634. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +0 -41
  635. package/payload/premium-plugins/real-agent/plugins/vendors/skills/vendor-updates/SKILL.md +0 -153
  636. package/payload/premium-plugins/real-agent/specs/00-architecture-and-customization.md +0 -122
  637. package/payload/premium-plugins/real-agent/specs/01-morning-round.md +0 -76
  638. package/payload/premium-plugins/real-agent/specs/02-valuation-prep.md +0 -81
  639. package/payload/premium-plugins/real-agent/specs/03-new-instruction.md +0 -96
  640. package/payload/premium-plugins/real-agent/specs/04-chase-progression.md +0 -120
  641. package/payload/premium-plugins/real-agent/specs/05-month-end-close.md +0 -79
  642. package/payload/premium-plugins/teaching/.claude-plugin/plugin.json +0 -8
  643. package/payload/premium-plugins/teaching/PLUGIN.md +0 -58
  644. package/payload/premium-plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
  645. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
  646. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
  647. package/payload/premium-plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
  648. package/payload/premium-plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
  649. package/payload/premium-plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
  650. package/payload/premium-plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
  651. package/payload/premium-plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
  652. package/payload/premium-plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
  653. package/payload/premium-plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
  654. package/payload/premium-plugins/writer-craft/.claude-plugin/plugin.json +0 -8
  655. package/payload/premium-plugins/writer-craft/PLUGIN.md +0 -88
  656. package/payload/premium-plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -92
  657. package/payload/premium-plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
  658. package/payload/premium-plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
  659. package/payload/premium-plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
  660. package/payload/premium-plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
  661. package/payload/premium-plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
  662. package/payload/premium-plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
  663. package/payload/premium-plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
  664. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
  665. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
  666. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
  667. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
  668. package/payload/premium-plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
  669. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
  670. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
  671. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
  672. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
  673. package/payload/premium-plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
  674. package/payload/premium-plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
  675. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
  676. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
  677. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
  678. package/payload/premium-plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
  679. package/payload/premium-plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
  680. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
  681. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
  682. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
  683. package/payload/premium-plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
  684. package/payload/premium-plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
  685. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
  686. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
  687. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
  688. package/payload/premium-plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
  689. package/payload/premium-plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
  690. package/payload/premium-plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
  691. package/payload/premium-plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
  692. package/payload/premium-plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
  693. package/payload/premium-plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
  694. package/payload/premium-plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
  695. package/payload/premium-plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
  696. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
  697. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
  698. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
  699. package/payload/premium-plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
  700. package/payload/premium-plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
  701. package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
  702. package/payload/premium-plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
  703. package/payload/server/public/assets/channel-CrSx5mnG.js +0 -1
  704. package/payload/server/public/assets/classDiagram-6PBFFD2Q-C3IDJsqN.js +0 -1
  705. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BOIrJ5Zb.js +0 -1
  706. package/payload/server/public/assets/clone-P8Fkz7JD.js +0 -1
  707. package/payload/server/public/assets/data-DRfwJPja.js +0 -1
  708. package/payload/server/public/assets/graph-B4FFYwus.js +0 -1
  709. package/payload/server/public/assets/graph-labels-Cpk9Ktt0.js +0 -1
  710. package/payload/server/public/assets/lib--yuBd0Xi.js +0 -33
  711. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-C5JejhQU.js +0 -1
@@ -1,689 +0,0 @@
1
- # Build pipeline — live editing, snapshots, PDFs, web bundle
2
-
3
- ## Live editing workflow
4
-
5
- 1. Copy template to property directory, populate with content
6
- 2. Stage `output/images/` per `images.md → Image renaming and optimisation`
7
- 3. **If branded register and `<brand_dir>/DESIGN.md` contains a `## Type roles` block** — emit the role overlay into both `brochure.html` and `index.html` per **Type-role overlay generation** below. Run this **before** any snapshot capture; the overlay is part of what the user reviews in the browser, not a post-process applied to PDFs.
8
- 3b. **Doc-comment strip — run against BOTH templates.** After substitution and overlay emission, run a regex pass that removes template authoring notes (the `<!-- REPLACE … -->` markers and any demo-placeholder blocks inside comments) from both `brochure.html` and `index.html`. The single regex is `re.compile(r"<!--\s*REPLACE\s+.*?-->", re.DOTALL)`. Run it explicitly against **both** files — a strip pass that covers only the brochure leaves landing-page authoring notes rendering as visible body text whenever a comment delimiter is misplaced (the historical `page.html` template shipped this defect once already). See **Template authoring hygiene + CI lint** below for the source-side check that catches the same class of defect at template-edit time, before a property build is ever started.
9
- 4. Serve locally: `python3 -m http.server <port>` from the project root
10
- 5. Navigate Playwright to the brochure URL
11
- 6. Present to user in browser for review
12
- 7. User requests changes — iterate on content, image sizing, page balance
13
- 8. Verify every page fits A4: measure `scrollHeight` for all `.page` elements
14
- 9. Verify no 404s in the browser console
15
- 10. Repeat 6–9 until user approves the final copy
16
- 11. **Only after user approval**: render snapshots (two passes — 300 dpi to `output/`, 192 dpi to `output/.snapshots-web/`) per **Print snapshot capture** below
17
- 12. Build both PDFs (img2pdf + qpdf) per **PDF deliverable** below
18
- 13. Build the web bundle (96 dpi JPGs + bundled web PDF + zip) per **Web bundle** below
19
- 14. User downloads the web PDF via brochure.html's Download button or receives the print master separately for press/print runs
20
-
21
- Do not capture snapshots during the editing cycle — they are expensive and invalidated by every change.
22
-
23
- ## Print snapshot capture
24
-
25
- Every page is pre-captured as a PNG. The PNGs are used both as the print-stylesheet replacement (so the live brochure prints to a clean PDF when a user hits Cmd+P) **and** as the source images bound into the two PDF deliverables. **Run this only once, after the user approves the final version.**
26
-
27
- **Two render passes, two DPI tiers:**
28
-
29
- | Snapshot set | DPR | Size per page (landscape A4) | Used for |
30
- |---|---|---|---|
31
- | `<property_dir>/output/*-print.png` | 3.125× (300 dpi) | 3509×2481 px | print-master PDF + the print stylesheet's `.print-img` swap |
32
- | `<property_dir>/output/.snapshots-web/*-print.png` | 2× (192 dpi) | 2246×1588 px | web PDF |
33
-
34
- The print-tier PNGs (300 dpi) are the canonical archived snapshots — they live at the top of `output/` next to the HTML and the PDFs. The web-tier PNGs (192 dpi) are an intermediate render step and live in `output/.snapshots-web/`; they're consumed by the web-PDF build and can be deleted afterwards.
35
-
36
- **Render via Playwright** (one script, run twice with different `SCALE`):
37
-
38
- ```javascript
39
- const { chromium } = require('playwright');
40
- const path = require('path');
41
-
42
- const HTML = process.argv[2]; // path to brochure.html
43
- const OUT_DIR = process.argv[3]; // output directory for PNGs
44
- const SCALE = parseFloat(process.argv[4] || '3.125'); // 2 for web, 3.125 for print
45
-
46
- (async () => {
47
- const browser = await chromium.launch();
48
- const context = await browser.newContext({
49
- viewport: { width: 1123, height: 794 }, // 794 × 1123 if portrait
50
- deviceScaleFactor: SCALE,
51
- });
52
- const page = await context.newPage();
53
- await page.goto(`file://${HTML}`, { waitUntil: 'networkidle' });
54
-
55
- // Suppress screen-only chrome before snapshotting.
56
- // The template has @media print { .download-bar { display: none } } so the
57
- // bar disappears under Cmd+P, but Playwright's element.screenshot() captures
58
- // the SCREEN render — @media print does not fire. Without this style-tag
59
- // injection, the floating "Download PDF" button (and any future screen-only
60
- // overlay) leaks into every per-page snapshot and into both PDFs.
61
- // KEEP this in any custom render script — it is load-bearing.
62
- await page.addStyleTag({ content: `
63
- .download-bar { display: none !important; }
64
- ` });
65
-
66
- await page.evaluate(() =>
67
- Promise.all(Array.from(document.images, img =>
68
- img.complete ? null : new Promise(r => { img.onload = img.onerror = r; }))));
69
-
70
- const pages = await page.$$('section.page');
71
- for (let i = 0; i < pages.length; i++) {
72
- const label = await pages[i].getAttribute('data-screen-label');
73
- const filename = i === 0
74
- ? 'cover-print.png'
75
- : /back/i.test(label || '') ? 'backpage-print.png' : `page${i+1}-print.png`;
76
- await pages[i].scrollIntoViewIfNeeded();
77
- await pages[i].screenshot({ path: path.join(OUT_DIR, filename), type: 'png' });
78
- }
79
- await browser.close();
80
- })();
81
- ```
82
-
83
- Run it once for each tier:
84
-
85
- ```bash
86
- node render-snapshots.js <property_dir>/output/brochure.html <property_dir>/output/ 3.125
87
- node render-snapshots.js <property_dir>/output/brochure.html <property_dir>/output/.snapshots-web/ 2
88
- ```
89
-
90
- For a 16-page folio, each pass produces `cover-print.png`, `page2-print.png` through `page15-print.png`, and `backpage-print.png` — sixteen files in each directory.
91
-
92
- **Print CSS**: `@page { size: A4 landscape; margin: 0 }` (or `portrait` if overridden). The print stylesheet has two paths, both still needed:
93
-
94
- 1. **Snapshot path (primary)** — when a `.print-img` has a non-empty `src`, the rule `.page:has(.print-img[src]:not([src=""])) > *:not(.print-img) { display: none }` hides everything else and the snapshot fills the page at `z-index: 9999`. The 300 dpi snapshots are referenced by `.print-img src=""` so the live DOM print path also gets full-quality output if the user hits Cmd+P.
95
- 2. **Live-DOM fallback** — if a snapshot is missing or empty, the page prints the live DOM. The folio is forced visible by overriding `.folio` with `z-index: 100`, `bottom: 6mm`, and **dropping `backdrop-filter`** (Chromium's PDF engine strips it, making the pill effectively invisible against dark imagery). The pill background falls back to a solid `rgba(252, 251, 248, 0.95)` for light pages and `rgba(6, 68, 68, 0.78)` for `.folio-dark` pages. The same `z-index` lift is applied to `.back-foot`.
96
-
97
- **Why both paths matter**: users sometimes hit Cmd+P before snapshots are captured, or the snapshot pipeline fails silently. The fallback guarantees the folio still prints. The `.print-img` elements use `opacity: 0; width: 1px; height: 1px` on screen (not `display: none` — that prevents image loading in some browsers).
98
-
99
- ## PDF deliverable
100
-
101
- The brochure ships as `brochure.html` plus **two PDFs**, both in `<property_dir>/output/`:
102
-
103
- - `<property_slug>-brochure-print.pdf` — **print master** (300 dpi, ~65–100 MB for a 16-page folio). Canonical archive artefact, suitable for sending to commercial print houses.
104
- - `<property_slug>-brochure-web.pdf` — **web/digital deliverable** (192 dpi, ~20–35 MB). What gets emailed, attached, and downloaded from the web bundle.
105
-
106
- Both are image-only — no fonts embedded, no Ghostscript anywhere in the chain. See **a4-print-documents → PDF deliverables** for the full rationale on why image-only is the right answer.
107
-
108
- ### Build steps
109
-
110
- Build both grades from the per-page snapshots in `output/` and `output/.snapshots-web/`, then linearize via qpdf. The print master embeds the PNG snapshots verbatim; the web grade re-encodes them as JPEG quality 85 before binding, so the deliverable that goes out to email and CDN hosting is materially smaller:
111
-
112
- ```bash
113
- # Print master from 300 dpi PNGs (in output/)
114
- cd <property_dir>/output/
115
- img2pdf --pagesize 297mmx210mm \
116
- --title "<Property Name> · <address line 1>" \
117
- --author "<Agent Name>" \
118
- --output /tmp/pre-linearize.pdf \
119
- cover-print.png page2-print.png page3-print.png page4-print.png \
120
- page5-print.png page6-print.png page7-print.png page8-print.png \
121
- page9-print.png page10-print.png page11-print.png page12-print.png \
122
- page13-print.png page14-print.png page15-print.png backpage-print.png
123
- qpdf --linearize --object-streams=disable \
124
- /tmp/pre-linearize.pdf \
125
- <property_slug>-brochure-print.pdf
126
-
127
- # Web PDF from 192 dpi PNGs → JPEG q=85 (in output/.snapshots-web/)
128
- # img2pdf preserves JPEG bytes verbatim, so re-encoding once up front is the only quality step.
129
- cd <property_dir>/output/.snapshots-web/
130
- for png in *-print.png; do
131
- magick "$png" -quality 85 -strip -interlace none -colorspace sRGB "${png%.png}.jpg"
132
- done
133
- img2pdf --pagesize 297mmx210mm \
134
- --title "<Property Name> · <address line 1>" \
135
- --author "<Agent Name>" \
136
- --output /tmp/pre-linearize.pdf \
137
- cover-print.jpg page2-print.jpg … backpage-print.jpg
138
- qpdf --linearize --object-streams=disable \
139
- /tmp/pre-linearize.pdf \
140
- <property_dir>/output/<property_slug>-brochure-web.pdf
141
-
142
- rm /tmp/pre-linearize.pdf
143
- rm -rf <property_dir>/output/.snapshots-web/ # optional cleanup
144
- ```
145
-
146
- `297mmx210mm` is **landscape** A4. For portrait flip to `210mmx297mm`. img2pdf preserves the embedded PNG bytes verbatim — no re-encode, no quality loss. qpdf's `--object-streams=disable` is required because the PDF 1.4 linearization profile (which we want for maximum viewer compatibility) is incompatible with object streams.
147
-
148
- ### Verification — three commands, all must pass for both files
149
-
150
- ```bash
151
- qpdf --check <output>.pdf # → "No syntax or stream encoding errors found"
152
- pdfinfo <output>.pdf | grep Optimized # → "Optimized: yes"
153
- pdffonts <output>.pdf | wc -l # → 2 (header rows only; no font entries)
154
- ```
155
-
156
- A typical 16-page folio ships with the print master at **65–100 MB** (PNG-embedded) and the web PDF at **7–15 MB** (JPEG-embedded at q=85). If the print master lands under ~40 MB, the snapshot DPR is wrong (likely rendered at 2× instead of 3.125×). If the web PDF exceeds ~20 MB, the JPEG re-encode was skipped (bind step ran against `.png` instead of `.jpg`) or the snapshot DPR drifted to 3.125× by accident.
157
-
158
- The web PDF defaults to JPEG-embedded; PNG-embedded for the web grade is **opt-in only**, for one-pagers or report-style brochures where small-text crispness matters more than wire size. For the standard photographic property folio, JPEG q=85 is visually indistinguishable from PNG at typical screen DPRs and is roughly 3–5× smaller. The print master never flips to JPEG — its audience archives for press runs.
159
-
160
- ### When to (re)generate
161
-
162
- Generate the PDF after every approved layout change. Do not let the PDF drift behind the HTML.
163
-
164
- ## Web bundle — self-contained zip for hosting
165
-
166
- In addition to the print-quality artefacts in `output/`, the brochure ships a separate **self-contained web bundle** under `output/web/`, then zipped to `output/<slug>-web.zip`. This is what a property micro-site or marketing portal hosts publicly. It is intentionally smaller — the canonical `output/` photos and snapshots are sized for archival print quality, which is wasteful when the brochure is being delivered as a one-time HTML page on a web page.
167
-
168
- The web bundle is a parallel directory with the same on-disk shape as `output/` but with smaller assets:
169
-
170
- ```
171
- output/web/
172
- brochure.html # identical content; .print-img src attributes cleared (see below)
173
- index.html # companion landing page (mandatory in bundle)
174
- <slug>-brochure.pdf # identical bytes to <slug>-brochure-web.pdf at the property level — simpler name inside the bundle since there's only one PDF here
175
- images/
176
- <slug>-NN.webp # web-tier per-slot encodings (see table below)
177
- qr-video.png, qr-listing.png
178
- <brand>-logo-light.png
179
- ```
180
-
181
- The bundle deliberately does **not** include the per-page JPG snapshots (`cover-print.jpg` etc). They duplicate the brochure content already embedded in `<slug>-brochure.pdf` at smaller cost-to-quality. Operators who want printed output download the PDF from the bundle; operators who view `brochure.html` in a browser and hit Cmd+P get the live-DOM print path (see `Print snapshot capture → Live-DOM fallback`). Shipping both was the historical defect that pushed a 16-page folio bundle past 50 MB.
182
-
183
- ### Web-tier image encoding
184
-
185
- The same per-slot tier idea as the digital floor in `images.md`, but with smaller widths and slightly lower quality — sized for screen viewing at 100% zoom, not for print sharpness.
186
-
187
- | Slot type | Web tier (long edge / quality) | Typical file size |
188
- |---|---|---|
189
- | Hero / cover / banner / feature / drone aerial / front elevation / outdoor full-bleed | **1300 px @ q82** | 80–300 KB |
190
- | Story photo (in-spread half-page) | **1100 px @ q80** | 60–250 KB |
191
- | Gallery thumb / strip / image-led grid cell | **800 px @ q76** | 25–80 KB |
192
- | **Floor plan** (PNG output, line art) | **PNG source copied unchanged; JPG source converted to PNG at build time** — `magick <slug>-floorplan.jpg <slug>-floorplan.png` then drop the `.jpg`. The brochure templates reference `images/<slug>-floorplan.png` and the contract is PNG-only on disk; JPEG compression artefacts on thin lines and small text are unacceptable for floorplans. | matches PNG output (often 500 KB – 1 MB) |
193
- | Site plan (raster line art) | **1100 px @ q80** WebP if not already PNG; if PNG, copy unchanged | 30–60 KB or source size |
194
-
195
- A 27-image folio typically lands at **~2.5 MB** of web photographs, with the floor plan adding **0.5–1.0 MB** on top because line art is preserved at source resolution. Total web image weight is typically 3.0–3.5 MB.
196
-
197
- **Floor-plan rule, repeated for emphasis.** Line-art PNG floor plans are **never re-encoded** for the web bundle — copy the source file as-is. Browsers render PNG line art crisply at any zoom level; converting to WebP introduces visible artefacts on text and rules even at q90+. The bundle gains a few hundred KB but the trade-off is on the right side.
198
-
199
- ### Clear `.print-img` src in the web copy
200
-
201
- The canonical `output/brochure.html` carries `<img class="print-img" src="cover-print.png">` references that power the snapshot path in the print stylesheet (Cmd+P → embedded PNG fills the page). The web bundle does **not** include those PNGs — and does not derive smaller JPEG copies either, because the PDF embedded in the bundle already covers the "I want a printable artefact" need. Instead, the web copy of `brochure.html` has its `.print-img` src attributes cleared so the print stylesheet drops to the live-DOM fallback path:
202
-
203
- ```python
204
- # Edit the web copy of brochure.html only — leave the canonical output/brochure.html unchanged.
205
- import re
206
- with open("output/web/brochure.html") as f:
207
- s = f.read()
208
- # Clear every .print-img src — the print stylesheet's :has(.print-img[src]:not([src=""]))
209
- # selector then fails, and the @media print live-DOM path renders the page directly.
210
- s = re.sub(
211
- r'(<img\s+class="print-img"[^>]*?\s+)src="[^"]*"',
212
- r'\1src=""',
213
- s,
214
- )
215
- with open("output/web/brochure.html", "w") as f:
216
- f.write(s)
217
- ```
218
-
219
- The `.print-img` element on screen is `opacity: 0; width: 1px; height: 1px` regardless of `src`, so clearing the attribute has zero visible effect — only the print stylesheet branches differently. Operators who want a printable PDF download `<slug>-brochure.pdf` directly from the bundle.
220
-
221
- ### Copy the web PDF into the bundle
222
-
223
- The web PDF (`<slug>-brochure-web.pdf` at the property level) is also placed inside the bundle, named simply `<slug>-brochure.pdf` to match `index.html` and `brochure.html` link conventions (where there's only one PDF in scope, no `-web` suffix is needed):
224
-
225
- ```bash
226
- cp output/<slug>-brochure-web.pdf output/web/<slug>-brochure.pdf
227
- ```
228
-
229
- ### Strip unreferenced images
230
-
231
- Every image in `output/web/images/` must be reachable from at least one HTML surface in the bundle (`brochure.html`, the companion landing page, and `og.html` if present). The build accumulates working images during editing — operator drops a hero, re-numbers a sequence, swaps an image and forgets to delete the prior version — and without the strip step the bundle ships every accumulated file. Typical bloat on a re-iterated 16-page folio is 20–40 unreferenced `.webp` files at ~500 KB each, which is what pushes a "30–50 MB target" bundle to 80–120 MB.
232
-
233
- ```bash
234
- cd output/web
235
-
236
- # Collect every image actually referenced by the bundle's HTML surfaces.
237
- # `cat *.html` catches brochure.html, the companion landing page, and og.html
238
- # without needing to know the landing-page filename in advance.
239
- referenced=$(cat *.html 2>/dev/null \
240
- | grep -oE 'images/[A-Za-z0-9_.-]+\.(webp|jpg|jpeg|png|svg)' \
241
- | sort -u)
242
-
243
- # Walk images/ and remove anything not in $referenced. Brand assets
244
- # (logos, QR PNGs) are referenced by the templates and survive.
245
- removed=0
246
- for f in images/*; do
247
- if ! echo "$referenced" | grep -qxF "$f"; then
248
- rm -f "$f"
249
- removed=$((removed + 1))
250
- fi
251
- done
252
- echo "[strip] removed $removed unreferenced files from output/web/images/"
253
- ```
254
-
255
- The strip is a closed-set operation: two agents producing the bundle for the same property emit byte-identical surviving image sets. Run it before the zip step; a bundle carrying unreferenced images is a build defect, not "extra-safe" packaging.
256
-
257
- ### Bundling
258
-
259
- After populating `output/web/`, zip it with `-X` (strip extra attributes) and exclude any `.DS_Store` / AppleDouble files:
260
-
261
- ```bash
262
- cd output && rm -f <slug>-web.zip
263
- ( cd web && zip -r -X "../<slug>-web.zip" . -x "*.DS_Store" "._*" )
264
- ```
265
-
266
- A typical 16-page folio web zip is **30–50 MB**, dominated by the embedded web PDF. The `output/web/` directory remains on disk alongside the zip — it's the unzipped form of the same bundle, useful for direct upload to a static-site host.
267
-
268
- ### Smoke-test before declaring done
269
-
270
- Serve the unzipped bundle from an isolated temp directory and verify every referenced asset returns 200:
271
-
272
- ```bash
273
- TMP=/tmp/web-test && rm -rf $TMP && mkdir -p $TMP
274
- cd $TMP && unzip -q /path/to/<slug>-web.zip
275
- python3 -m http.server 8765 &
276
- for f in brochure.html index.html images/<slug>-01.webp images/<brand>-logo-light.png <slug>-brochure.pdf; do
277
- echo "$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8765/$f) $f"
278
- done
279
- ```
280
-
281
- The brochure should render the same as the canonical preview, just lighter on the wire. If any 404 appears, the web copy is missing a referenced file — fix and re-zip.
282
-
283
- ### What stays in `output/` vs. what moves to `output/web/`
284
-
285
- | File | `output/` (canonical archive) | `output/web/` (web bundle) |
286
- |---|---|---|
287
- | `brochure.html` | full-resolution images, `.png` snapshot refs | identical structure, `.print-img` srcs cleared (live-DOM print fallback) |
288
- | `index.html` | — | ✓ companion landing page; see `index-landing.md` |
289
- | `<slug>-brochure-print.pdf` | ✓ canonical print master (50–80 MB, 300 dpi) | — (too large to bundle) |
290
- | `<slug>-brochure-web.pdf` | ✓ web/digital deliverable (7–15 MB, 192 dpi JPEG-embedded) | — copied into bundle as `<slug>-brochure.pdf` |
291
- | `<slug>-brochure.pdf` | — | ✓ identical bytes to `-web.pdf`; matches index.html / brochure.html link |
292
- | `cover-print.png … backpage-print.png` | ✓ 300 dpi PNG (~4–7 MB each) — canonical snapshots | — bundle ships the PDF instead of per-page JPGs |
293
- | `images/<slug>-NN.webp` | full-quality per Render-slot table | web-tier per the web table above |
294
- | `images/qr-*.png`, `images/<brand>-logo-*.png` | ✓ | ✓ (copied unchanged — already small) |
295
- | `.snapshots-web/*-print.png` | ✓ intermediate (192 dpi PNGs used by the web-PDF build; deletable after) | — |
296
-
297
- The convention: `output/` is the canonical archive for the property's lifetime. `output/web/` is a derived bundle, regenerable any time from the canonical artefacts.
298
-
299
- ## Brand-token override emission (cascade-safe, two-template, two-vocabulary)
300
-
301
- Branded register replaces palette and type tokens in `:root`. The override is emitted as a `<style id="brand-tokens">…</style>` block at the **`BRAND_TOKENS_OVERRIDE_SLOT`** sentinel in **both** the brochure template (`template.html`) and the companion landing page (`index.html`). The sentinel sits immediately before the closing `}` of each `:root` rule — placing the override after the template's own declarations is what keeps the brand values winning the cascade. See SKILL.md hard rule "Brand-token overrides MUST land at the BRAND_TOKENS_OVERRIDE_SLOT sentinel".
302
-
303
- ### Two vocabularies (today)
304
-
305
- The brochure and the landing page use independent token vocabularies. Until vocabulary unification lands (see follow-up below), the brand-tokens block must include **both** sets of token names so that whichever template the block lands in, the right values bind.
306
-
307
- | Concept | `template.html` token | `index.html` token |
308
- |---|---|---|
309
- | Ivory page background | `--paper-25` | `--paper` |
310
- | Slightly darker cream surface | `--paper-50` | `--paper-2` |
311
- | Warm cream / banded surface | `--paper-100` | (no equivalent — omit) |
312
- | Pure white | `--paper-0` | (no equivalent — omit) |
313
- | Body ink | `--ink` | `--ink` (shared name) |
314
- | Secondary ink | (no equivalent — omit) | `--ink-2` |
315
- | Bronze accent | `--gold-700` | `--gold` |
316
- | Antique gold rule / softer accent | `--gold-500` | `--gold-soft` |
317
- | Champagne flourish | `--gold-300` | (no equivalent — omit) |
318
- | Display serif family | `--serif` | `--serif` (shared name) |
319
- | Body serif family | `--body-serif` | (no equivalent — omit) |
320
- | Sans family | `--sans` | (no equivalent — omit) |
321
-
322
- Pick one brand-pack value per concept, emit **both** token names in the same block. Example for a brand whose accent is brand-green `#02843E`:
323
-
324
- ```html
325
- <style id="brand-tokens">
326
- :root {
327
- /* template.html vocabulary */
328
- --paper-25: #FFFFFF;
329
- --paper-50: #F4F1EA;
330
- --paper-100: #EFE7D8;
331
- --gold-700: #02843E;
332
- --gold-500: #4FB371;
333
- --gold-300: #C9E8D4;
334
- --ink: #323636;
335
- --serif: 'Lora', 'Cormorant Garamond', serif;
336
- --body-serif: 'Lora', serif;
337
- --sans: 'Inter', sans-serif;
338
-
339
- /* index.html vocabulary — same colour values, different token names */
340
- --paper: #FFFFFF;
341
- --paper-2: #F4F1EA;
342
- --gold: #02843E;
343
- --gold-soft: #4FB371;
344
- --ink-2: #2A3036;
345
- }
346
- </style>
347
- ```
348
-
349
- The same block is substituted at the sentinel in **both** templates. A block that only carries the `template.html` vocabulary leaves the landing page rendering Premium silently — the substitution gate passes and the snapshot capture proceeds. The defect is invisible until visual review.
350
-
351
- ### Follow-up — vocabulary unification (long-term)
352
-
353
- The dual-emission above is a tactical fix for the divergence between the two templates' `:root` vocabularies. The long-term fix is to **unify the landing page on `template.html`'s tiered vocabulary** (`--paper-0 / -25 / -50 / -100`, `--gold-300 / -500 / -700`, `--ink` plus a `--ink-2` if needed) so every brand block is authored once instead of twice. Until that refactor lands, the dual-emission contract above is structurally required.
354
-
355
- ## Template authoring hygiene + CI lint
356
-
357
- The doc-comment strip in step 3b of the workflow above catches template authoring notes **at property-build time** — but a template that ships with a misplaced `<!-- … -->` delimiter is a source-side defect that should be caught at template-edit time, before any property build runs against it. The historical `page.html` template carried a duplicated authoring note where one copy sat inside a proper comment and the other copy sat outside any delimiters; browsers rendered the duplicate as visible body text on every property built from that template.
358
-
359
- Add a CI step (or a `make check-templates` recipe at the plugin root) that parses every `references/*.html` and asserts:
360
-
361
- ```python
362
- import re
363
- from pathlib import Path
364
-
365
- REFERENCES = Path("references")
366
- TEMPLATES = list(REFERENCES.glob("*.html")) # template.html, index.html
367
- COMMENT_RE = re.compile(r"<!--.*?-->", re.DOTALL)
368
-
369
- LEAKED_PHRASES = [
370
- "terminate this outer comment",
371
- "REPLACE markers, use prose",
372
- "delimiter pair",
373
- "the bug that prompted this note",
374
- ]
375
-
376
- defects = []
377
-
378
- for tpl in TEMPLATES:
379
- text = tpl.read_text()
380
-
381
- # 1. Every <!-- must be closed by --> within the file.
382
- if text.count("<!--") != text.count("-->"):
383
- defects.append(f"{tpl}: unbalanced HTML comment delimiters")
384
-
385
- # 2. Strip every well-formed comment, then any LEAKED_PHRASES that
386
- # remain are authoring notes sitting outside comments — body-text
387
- # defects waiting to ship.
388
- outside_comments = COMMENT_RE.sub("", text)
389
- for phrase in LEAKED_PHRASES:
390
- if phrase in outside_comments:
391
- defects.append(f"{tpl}: authoring-note phrase {phrase!r} found outside any HTML comment")
392
-
393
- # 3. `{{ token }}` placeholders are fine inside slot positions but
394
- # an example placeholder appearing inside a code-block in body text
395
- # (e.g. an explanation of how to use the template) is a leak.
396
- # Surface as a soft warning — operator decides.
397
- leftover_examples = re.findall(r"\{\{\s*example[_a-z]*\s*\}\}", outside_comments)
398
- if leftover_examples:
399
- defects.append(f"{tpl}: example placeholders leaked outside comments: {leftover_examples}")
400
-
401
- if defects:
402
- print("Template lint failed:")
403
- for d in defects:
404
- print(f" - {d}")
405
- raise SystemExit(1)
406
- ```
407
-
408
- Either check catches the page.html-class leak at edit time, before it ships to a property build. The lint runs against the source-side `references/*.html` only — the property-build copies under `<property_dir>/output/` are derived artefacts and are protected by step 3b above instead.
409
-
410
- ## Type-role overlay generation
411
-
412
- If the brand pack's `DESIGN.md` contains a `## Type roles` block (declared per `references/registers.md → Type-role overrides`), parse it and emit a single `<style id="brand-type-roles">…</style>` block at the `<!-- BRAND_TYPE_ROLES_OVERRIDE_SLOT -->` sentinel immediately before the closing `</style>` of the template's main stylesheet. The override CSS is generated **mechanically** from the recipe map below — the build does not invent selectors, it emits the documented ones using values from the DESIGN doc.
413
-
414
- Two agents running this build on different days for the same brand pack produce byte-identical overlays. That is the contract.
415
-
416
- The role-overlay step runs **before** snapshot capture (step 10 in the live-editing workflow), not after. The overlay is part of the rendered HTML the user reviews, not a post-process applied to PDFs.
417
-
418
- ### Recipe map — reference implementation
419
-
420
- ```python
421
- ROLE_RECIPES = {
422
- 'display-headline-style': {
423
- 'normal': [
424
- '.cover-title, .opener-title, .ed-headline, .chapter-head h3, '
425
- '.feature-page h3, .gallery-head h3, .siteplan-page h3, .toc-title, '
426
- '.back-headline, .mi-head h2, .mi-head h3 '
427
- '{ font-style: normal !important; }',
428
- ],
429
- },
430
- 'display-em-style': {
431
- # Affirmative "use the display family's natural italic cut". Emits no
432
- # override (the template default at :root already sets em runs to italic
433
- # via font-style inheritance). Authors should prefer this for any brand
434
- # whose display family carries a real italic (Playfair, Cormorant, Lora,
435
- # EB Garamond, etc.) AND whose site visibly uses italic emphasis. The
436
- # "default" value in registers.md required OMITTING the role entirely,
437
- # which made the safe choice silent and the destructive choices (weight-
438
- # shift, normal) the only affirmative ones in the example block — a known
439
- # foot-gun. Setting `italic` explicitly closes that.
440
- 'italic': [],
441
- 'weight-shift': [
442
- '.cover-title em, .opener-title em, .ed-headline em, .toc-title em, '
443
- '.back-headline em, .mi-head em '
444
- '{ font-style: normal !important; font-weight: 500 !important; }',
445
- ],
446
- 'normal': [
447
- '.cover-title em, .opener-title em, .ed-headline em, .toc-title em, '
448
- '.back-headline em, .mi-head em '
449
- '{ font-style: normal !important; }',
450
- ],
451
- },
452
- 'display-letterspacing': {
453
- # tuned to family: Cormorant=wide (0.18em), humanist sans=medium (0.10em),
454
- # geometric sans=tight (0.04em). Applies only to the two largest display lines.
455
- 'medium': [
456
- '.cover-title { letter-spacing: 0.10em !important; text-indent: 0.10em !important; }',
457
- '.opener-title { letter-spacing: -0.012em !important; }',
458
- ],
459
- 'tight': [
460
- '.cover-title { letter-spacing: 0.04em !important; text-indent: 0.04em !important; }',
461
- '.opener-title { letter-spacing: -0.02em !important; }',
462
- ],
463
- },
464
- 'deck-family': {
465
- 'sans': [
466
- '.ed-deck, .ed-deck em, .feature-deck, .gallery-deck, .siteplan-deck '
467
- '{ font-family: var(--sans) !important; font-style: normal !important; }',
468
- ],
469
- },
470
- 'deck-case': {
471
- 'sentence': [
472
- '.ed-deck, .feature-deck, .gallery-deck, .siteplan-deck '
473
- '{ letter-spacing: 0.02em !important; text-transform: none !important; }',
474
- '.ed-deck em { font-weight: 500 !important; }',
475
- ],
476
- },
477
- 'subtitle-family': {
478
- 'sans-tracked-caps': [
479
- '.opener-title em, .cover-subtitle, .opener-spec '
480
- '{ font-family: var(--sans) !important; font-style: normal !important; }',
481
- '.opener-spec em { font-style: normal !important; font-weight: 500 !important; }',
482
- ],
483
- 'sans': [
484
- '.opener-title em, .cover-subtitle, .opener-spec '
485
- '{ font-family: var(--sans) !important; font-style: normal !important; '
486
- 'letter-spacing: 0.04em !important; text-transform: none !important; }',
487
- ],
488
- },
489
- 'caption-family': {
490
- 'sans': [
491
- '.ed-caption, .ed-caption strong, .caption, .caption-pill, .caption-text, '
492
- '.img-caption, .photo-caption, .intermission .caption-pill '
493
- '{ font-family: var(--sans) !important; font-style: normal !important; }',
494
- ],
495
- },
496
- 'caption-em-style': {
497
- 'weight-shift': [
498
- '.ed-caption em, .caption em, .caption-text em, .img-caption em, '
499
- '.photo-caption em, .intermission .caption-pill em '
500
- '{ font-style: normal !important; font-weight: 500 !important; }',
501
- ],
502
- },
503
- 'dropcap': {
504
- 'ink': [
505
- '.ed-body.dropcap::first-letter { color: var(--ink) !important; }',
506
- ],
507
- 'ink-bold-sans': [
508
- '.ed-body.dropcap::first-letter { '
509
- 'font-family: var(--sans) !important; font-style: normal !important; '
510
- 'font-weight: 700 !important; color: var(--ink) !important; }',
511
- ],
512
- 'hidden': [
513
- '.ed-body.dropcap::first-letter { '
514
- 'font-family: var(--sans) !important; font-style: normal !important; '
515
- 'font-size: inherit !important; font-weight: 400 !important; '
516
- 'line-height: inherit !important; color: inherit !important; '
517
- 'float: none !important; padding: 0 !important; }',
518
- ],
519
- },
520
- 'hairline-rules': {
521
- 'eyebrow-only': [
522
- '.opener .ed-rule, .opener-text .ed-rule, .opener-body .ed-rule, '
523
- '.feature-page .ed-rule, .gallery-head .ed-rule, .siteplan-page .ed-rule, '
524
- '.chapter-head .ed-rule { display: none !important; }',
525
- ],
526
- 'hidden': [
527
- '.ed-rule, .toc-rule { display: none !important; }',
528
- ],
529
- },
530
- 'body-em-style': {
531
- 'weight-shift': [
532
- '.ed-body em, .opener-body em, .opener-text em, .gallery-cell em, '
533
- '.siteplan-panel em, .spec-list li em, .mi-row em, .floorplan-lead em, '
534
- '.floorplan-sub em, .epc-caption em '
535
- '{ font-style: normal !important; font-weight: 500 !important; }',
536
- ],
537
- },
538
- 'folio-em-style': {
539
- 'weight-shift': [
540
- '.folio em, .folio .folio-mid em '
541
- '{ font-style: normal !important; font-weight: 500 !important; '
542
- 'font-family: var(--sans) !important; }',
543
- ],
544
- },
545
- 'backpage-em-style': {
546
- 'weight-shift': [
547
- '.back-headline em, .back-tagline em, .back-foot em, .back-contact-grid em, '
548
- '.back-rule em { font-style: normal !important; font-weight: 500 !important; }',
549
- ],
550
- },
551
- }
552
-
553
-
554
- def emit_overlay(role_values: dict[str, str]) -> str:
555
- """Compose the <style id='brand-type-roles'> block from a {role: value} dict.
556
-
557
- role_values is parsed from the DESIGN.md `## Type roles` block — either a
558
- role/value table or a flat `role: value` line list. Missing roles inherit
559
- the template default (no CSS emitted). Unknown roles raise ValueError so
560
- they surface during the build, not silently in the rendered brochure.
561
-
562
- DARK_SURFACE_PROTECTION and STRUCTURAL_CLAMP_LOOSEN are emitted FIRST and
563
- UNCONDITIONALLY whenever any role values are declared. They are the
564
- foundation of any branded re-skin; see "Always-emit recipes" above.
565
- """
566
- if not role_values:
567
- return "" # No role block declared — emit nothing.
568
- lines = ["<style id=\"brand-type-roles\">"]
569
- lines.append(" /* === DARK SURFACE PROTECTION === */")
570
- lines.extend(DARK_SURFACE_PROTECTION)
571
- lines.append(" /* === STRUCTURAL CLAMP LOOSEN === */")
572
- lines.extend(STRUCTURAL_CLAMP_LOOSEN)
573
- for role, value in role_values.items():
574
- if role not in ROLE_RECIPES:
575
- raise ValueError(f"Unknown type role: {role}")
576
- if value not in ROLE_RECIPES[role]:
577
- raise ValueError(f"Unknown value '{value}' for role '{role}'")
578
- lines.append(f" /* === ROLE: {role}: {value} === */")
579
- lines.extend(ROLE_RECIPES[role][value])
580
- lines.append("</style>")
581
- return "\n".join(lines)
582
- ```
583
-
584
-
585
- ### Always-emit recipes — dark-surface protection, light-surface data protection, structural clamps
586
-
587
- Three sections of the overlay are emitted **whenever the brand pack's `## Type roles` block is present**, regardless of which roles the operator declared. They are the foundation of any branded re-skin — without them the role API's targeted overrides can blow up adjacent template assumptions.
588
-
589
- #### Dark-surface protection (fixed exclusion list)
590
-
591
- The role API's color rules deliberately stop short of selectors that sit on dark surfaces — the toc-image caption pill, intermission caption pills, the spread-6 chapter-head overlay on a dark photo, the back-page masthead and tagline, and the back-page contact-grid name lines. The brand-token swap will have remapped `--gold-700` (the template's italic-emphasis color) to the brand's accent — typically navy or a deep brand colour. On a light surface, that's correct. On a dark surface, navy on dark is unreadable.
592
-
593
- The recipe is a **fixed exclusion list**, not a heuristic. Ship it as part of the overlay:
594
-
595
- ```python
596
- DARK_SURFACE_PROTECTION = [
597
- # Body text on dark surfaces — keep paper-light regardless of brand-token swap.
598
- '.toc-image .caption, .toc-image .caption *, '
599
- '.intermission .caption-pill, .intermission .caption-pill *, '
600
- '.spread-6 .top-image .overlay, .spread-6 .top-image .overlay *, '
601
- '.back-headline, .back-tagline, .back-foot, .back-contact-grid, .back-rule '
602
- '{ color: var(--paper-25) !important; }',
603
- # Emphasis on dark surfaces — use the brand accent (--gold-300) which the
604
- # brand-tokens block typically maps to the brand's bright/highlight colour.
605
- '.toc-image .caption em, '
606
- '.intermission .caption-pill em, '
607
- '.spread-6 .top-image .overlay em, '
608
- '.spread-6 .top-image .overlay .ed-headline em, '
609
- '.back-headline em, '
610
- '.back-tagline em, '
611
- '.back-contact-grid .cell .name em, '
612
- '.back-foot em '
613
- '{ color: var(--gold-300) !important; }',
614
- ]
615
- ```
616
-
617
- The selector list is closed. Two agents producing brochures for the same brand pack emit byte-identical dark-surface blocks. If the template adds a new dark-surface region in a future revision, this list (in `build.md`) is the authoritative update site.
618
-
619
- #### Light-surface data protection (fixed selector list)
620
-
621
- The template uses `var(--gold-700)` both for genuine accents (em emphasis, eyebrow rules, particulars numbering) **and** for data-value treatment in the Material Information rows, opener meta row, EPC chart rows, floorplan caption, and the spec list. Premium binds `--gold-700` to a muted bronze (`#7A6235`) so the data cells read as subtle accents on cream. Branded binds `--gold-700` to whatever the brand's primary accent is — for some brands a saturated green or red — and every data cell turns into a hyperlink-looking blob.
622
-
623
- The light-surface twin of dark-surface protection forces data-cell text back to `var(--ink)` (and the folio strip to `var(--slate-600)`), regardless of which brand token swap happens.
624
-
625
- ```python
626
- LIGHT_SURFACE_DATA_PROTECTION = [
627
- # Material info, opener meta, EPC data values, floorplan caption, spec list —
628
- # always read as ink, never brand-accent.
629
- '.mi-row .v, .mi-row .v em, '
630
- '.opener-meta-row .v, .opener-meta-row .v em, '
631
- '.epc-row .v, .epc-row .v em, '
632
- '.spec-list li, .spec-list li em, .spec-list li strong, '
633
- '.floorplan-sub, .floorplan-sub em '
634
- '{ color: var(--ink) !important; }',
635
- # Folio strip — muted slate, never full brand colour.
636
- '.folio, .folio em, .folio-mid, .folio-mid em '
637
- '{ color: var(--slate-600) !important; }',
638
- # Particulars numbering keeps the brand accent intentionally; the existing
639
- # `.spec-list li .num` rule already scopes that to the number span only —
640
- # no override needed here.
641
- ]
642
- ```
643
-
644
- Same closed-list contract as the dark-surface block: two agents emit byte-identical output for the same brand. If a future template revision adds a new data-cell region, the entry is added here. A cleaner long-term fix is to split `--gold-700` into `--accent-strong` (em, eyebrow rules, `.num`) and `--data-text` (the selectors above, defaulting to `--ink`) so Branded only swaps `--accent-strong`; until that token split lands, this override block is structurally mandatory in Branded runs, not optional polish.
645
-
646
- #### Structural clamp loosen
647
-
648
- The template's chapter-heading grid rows are sized for the Cormorant Garamond display setup (italic, weight 400, letter-spacing tuned for didone). When the role overlay swaps display family, weight, or letter-spacing, headings can grow a few millimetres beyond what the fixed-height rows accommodate — and the template's `overflow: hidden` on those rows clips the descenders. The proposal author's term for this is "structural-element clamps that need to be loosened together with the type-role overlay."
649
-
650
- The recipe is bounded: only the known fixed-height heading rows in spreads 2 and 3 are loosened, and only to `minmax(<original>, max-content)`. A heading that already fits the original budget renders identically; a heading that needs a few extra mm no longer clips.
651
-
652
- ```python
653
- STRUCTURAL_CLAMP_LOOSEN = [
654
- # spread-3: chapter heading row fixed at 60mm in the template.
655
- # Loosen to "60mm but grow if needed" — image cells in the second row
656
- # absorb the shrinkage when the heading takes extra height.
657
- '.spread-3 { grid-template-rows: minmax(60mm, max-content) 1fr !important; }',
658
- '.spread-3 .head { overflow: visible !important; }',
659
- # spread-2: bottom strip fixed at 56mm. Same treatment.
660
- '.spread-2 { grid-template-rows: 1fr minmax(56mm, max-content) !important; }',
661
- # Other spreads use auto 1fr or auto auto already — no loosening needed.
662
- ]
663
- ```
664
-
665
- If a future template revision adds another fixed-height heading row, the entry is added here. The substitute step's `emit_overlay()` always emits these three sections first, then the per-role recipes.
666
-
667
-
668
- ### Where the overlay lands
669
-
670
- The template's main `<style>` ends with the sentinel line:
671
-
672
- ```html
673
- /* BRAND_TYPE_ROLES_OVERRIDE_SLOT — branded register may inject role overrides here */
674
- </style>
675
- ```
676
-
677
- The build replaces that sentinel comment with the emitted `<style id="brand-type-roles">…</style>` block (or with nothing if no role values are declared). The original `<style>` continues to its closing `</style>` immediately after. Both `brochure.html` and the landing page (`page.html` / `index.html`) carry the sentinel and receive the same overlay — the role API is global to the property's output.
678
-
679
- ### Verification
680
-
681
- After the overlay is emitted, run a quick check:
682
-
683
- ```bash
684
- grep -c 'id="brand-type-roles"' output/brochure.html output/web/page.html
685
- # both must return 1 if the brand pack declared roles, 0 otherwise.
686
- ```
687
-
688
- A branded run whose DESIGN.md declares `## Type roles` but whose rendered HTML lacks `id="brand-type-roles"` is **shipped broken** — the overlay step was skipped or failed silently.
689
-