@rubytech/create-realagent-code 0.1.26 → 0.1.27
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.
- package/dist/index.js +28 -11
- package/package.json +1 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +5 -90
- package/payload/platform/plugins/brochures/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/brochures/PLUGIN.md +36 -0
- package/payload/platform/plugins/brochures/commands/make-brochure.md +11 -0
- package/payload/platform/plugins/brochures/skills/a4-print-documents/SKILL.md +478 -0
- package/payload/platform/plugins/brochures/skills/brand-design/SKILL.md +192 -0
- package/payload/platform/plugins/brochures/skills/make-brochure/SKILL.md +354 -0
- package/payload/platform/plugins/brochures/skills/make-brochure/references/seller-brief-template.md +115 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/SKILL.md +119 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/build.md +270 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/copy.md +211 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/images.md +166 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/index-landing.md +376 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/index.html +1288 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/placeholders.md +250 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/registers.md +47 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/seller-brief.md +56 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/structure.md +249 -0
- package/payload/platform/plugins/brochures/skills/property-brochure/references/template.html +2370 -0
- package/payload/platform/plugins/brochures/skills/property-extract/SKILL.md +372 -0
- package/payload/platform/plugins/buyers/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/buyers/PLUGIN.md +35 -0
- package/payload/platform/plugins/buyers/skills/buyer-feedback/SKILL.md +109 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/SKILL.md +42 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification-questions.md +16 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-qualification.md +59 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-scripts.md +63 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/buyer-working-scripts.md +54 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/feedback-collection.md +42 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/offer-capture.md +38 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-booking.md +32 -0
- package/payload/platform/plugins/buyers/skills/buyer-management/references/viewing-management.md +52 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/SKILL.md +407 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/care-fees-guide.md +68 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/divorce-sales-guide.md +61 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/downsizing-guide.md +45 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-buyers.md +92 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/first-time-sellers.md +78 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/probate-guide.md +53 -0
- package/payload/platform/plugins/buyers/skills/buyer-seller-guides/references/upsizing-guide.md +41 -0
- package/payload/platform/plugins/buyers/skills/property-enquiry/SKILL.md +126 -0
- package/payload/platform/plugins/buyers/skills/viewing-management/SKILL.md +111 -0
- package/payload/platform/plugins/estate-business/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/estate-business/PLUGIN.md +65 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/SKILL.md +133 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/buy-back-your-time.md +37 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/firewave-gost-scorecards.md +14 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/keller-org-model.md +17 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/lencioni-team-models.md +22 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/listing-management-system.md +11 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/net-figure-form.md +11 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/serhant-bizinbox-notes.md +13 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/team-roles-commission.md +14 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/va-2026-ops.md +43 -0
- package/payload/platform/plugins/estate-business/skills/business-growth/references/wingman-structure.md +13 -0
- package/payload/platform/plugins/estate-business/skills/business-operations/SKILL.md +32 -0
- package/payload/platform/plugins/estate-business/skills/business-operations/references/crm-systems.md +57 -0
- package/payload/platform/plugins/estate-business/skills/business-operations/references/hiring-guide.md +59 -0
- package/payload/platform/plugins/estate-business/skills/business-operations/references/impact-framework.md +47 -0
- package/payload/platform/plugins/estate-business/skills/business-operations/references/minutes-equal-money.md +55 -0
- package/payload/platform/plugins/estate-business/skills/business-operations/references/team-management.md +48 -0
- package/payload/platform/plugins/estate-business/skills/commission-calculator/SKILL.md +40 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/SKILL.md +52 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/12-reasons.md +39 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/95-5-system.md +66 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/agent-attraction-scripts.md +90 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/business-partnership.md +92 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/exp-model-overview.md +66 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/model-comparison.md +66 -0
- package/payload/platform/plugins/estate-business/skills/exp-partnership/references/revenue-share-explained.md +57 -0
- package/payload/platform/plugins/estate-business/skills/month-end-close/SKILL.md +69 -0
- package/payload/platform/plugins/estate-business/skills/payment-batch-stager/SKILL.md +42 -0
- package/payload/platform/plugins/estate-business/skills/period-reconciler/SKILL.md +42 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/SKILL.md +117 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent-notes.md +31 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/attraction-agent.md +58 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/authenticity-boundaries.md +28 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/become-a-brand-leader-notes.md +19 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/blast-formula.md +42 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-leader.md +48 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/brand-strategy-system.md +59 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/content-engine.md +49 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/firewave-blast-and-blogging.md +23 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-content.md +52 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/gary-v-principles.md +20 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/oversubscribed-positioning.md +18 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/platforms.md +41 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/priestley-oversubscribed.md +54 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/storeys-style-examples.md +25 -0
- package/payload/platform/plugins/estate-business/skills/personal-branding/references/visual-identity.md +27 -0
- package/payload/platform/plugins/estate-coaching/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/estate-coaching/PLUGIN.md +55 -0
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/SKILL.md +371 -0
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/atomic-habits.md +52 -0
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/daily-routine-scorecard.md +104 -0
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/hp6-model.md +63 -0
- package/payload/platform/plugins/estate-coaching/skills/agent-performance/references/twelve-week-year.md +71 -0
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/SKILL.md +36 -0
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/coaching-boundaries.md +56 -0
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/feedback-framework.md +61 -0
- package/payload/platform/plugins/estate-coaching/skills/bespoke-coaching/references/performance-framework.md +109 -0
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/SKILL.md +421 -0
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/coaching-exercises.md +86 -0
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/goal-setting.md +78 -0
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/one-to-one-framework.md +92 -0
- package/payload/platform/plugins/estate-coaching/skills/coaching-toolkit/references/soi-workbook.md +103 -0
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/SKILL.md +410 -0
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/agent-training-guide.md +70 -0
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/business-in-a-box.md +72 -0
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/buyers-guide.md +53 -0
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/codo-method.md +72 -0
- package/payload/platform/plugins/estate-coaching/skills/serhant-training/references/website-planning-guide.md +79 -0
- package/payload/platform/plugins/estate-onboarding/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/estate-onboarding/PLUGIN.md +31 -0
- package/payload/platform/plugins/estate-onboarding/skills/bootstrap/SKILL.md +26 -0
- package/payload/platform/plugins/estate-onboarding/skills/bootstrap/references/onboarding-flow.md +63 -0
- package/payload/platform/plugins/estate-sales/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/estate-sales/PLUGIN.md +53 -0
- package/payload/platform/plugins/estate-sales/skills/chase-progression/SKILL.md +107 -0
- package/payload/platform/plugins/estate-sales/skills/negotiation/SKILL.md +35 -0
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/deal-saving.md +47 -0
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-deep-guide.md +64 -0
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-prep-principles.md +29 -0
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/negotiation-techniques.md +42 -0
- package/payload/platform/plugins/estate-sales/skills/negotiation/references/offer-presentation.md +43 -0
- package/payload/platform/plugins/estate-sales/skills/risk-scorer/SKILL.md +42 -0
- package/payload/platform/plugins/estate-sales/skills/sales-closer/SKILL.md +24 -0
- package/payload/platform/plugins/estate-sales/skills/sales-closer/references/serhant-emotion-stages.md +36 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/SKILL.md +30 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/chris-voss-discovery.md +88 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/firewave-gost-journey.md +68 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/phil-jones-openers.md +78 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/pre-listing-checklist.md +77 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/serhant-improv.md +22 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/tom-ferry-discovery.md +103 -0
- package/payload/platform/plugins/estate-sales/skills/sales-discovery/references/vendor-motivation-competitor.md +52 -0
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/SKILL.md +29 -0
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/chris-voss-negotiation.md +70 -0
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/phil-jones-price-words.md +40 -0
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/serhant-negotiation-plus.md +55 -0
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tom-panos-commission-pricing.md +57 -0
- package/payload/platform/plugins/estate-sales/skills/sales-negotiation/references/tony-morris-questioning.md +54 -0
- package/payload/platform/plugins/estate-sales/skills/sales-progression/SKILL.md +27 -0
- package/payload/platform/plugins/estate-sales/skills/sales-progression/references/conveyancing-guide.md +54 -0
- package/payload/platform/plugins/estate-sales/skills/sales-progression/references/transaction-tracking.md +66 -0
- package/payload/platform/plugins/estate-teaching/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/estate-teaching/PLUGIN.md +31 -0
- package/payload/platform/plugins/estate-teaching/skills/content-directory/SKILL.md +39 -0
- package/payload/platform/plugins/estate-teaching/skills/content-directory/references/module-delivery.md +65 -0
- package/payload/platform/plugins/estate-teaching/skills/content-directory/references/progress-tracking.md +47 -0
- package/payload/platform/plugins/leads/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/leads/PLUGIN.md +62 -0
- package/payload/platform/plugins/leads/skills/chain-progression-tracker/SKILL.md +51 -0
- package/payload/platform/plugins/leads/skills/diary-builder/SKILL.md +38 -0
- package/payload/platform/plugins/leads/skills/enquiry-triage/SKILL.md +36 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/SKILL.md +137 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letter.md +28 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/buyer-search-letters.md +37 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/database-reactivation.md +30 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/email-nurture-sequences.md +45 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/facebook-referrals.md +30 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/firewave-email-nurture-sequences.md +41 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/keller-33-touch.md +34 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-letters.md +31 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/neighbour-notification-letter.md +20 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up-dialogue.md +22 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/ofi-follow-up.md +26 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/serhant-three-fs-plus.md +21 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sharran-10x10x10.md +18 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sms-templates.md +40 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence-notes.md +34 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/sphere-of-influence.md +60 -0
- package/payload/platform/plugins/leads/skills/lead-nurturing/references/tom-panos-sms-templates.md +59 -0
- package/payload/platform/plugins/leads/skills/morning-round/SKILL.md +72 -0
- package/payload/platform/plugins/leads/skills/prospecting/SKILL.md +33 -0
- package/payload/platform/plugins/leads/skills/prospecting/references/database-matching.md +30 -0
- package/payload/platform/plugins/leads/skills/prospecting/references/database-value.md +53 -0
- package/payload/platform/plugins/leads/skills/prospecting/references/prospecting-dialogues.md +24 -0
- package/payload/platform/plugins/leads/skills/prospecting/references/reactivation.md +34 -0
- package/payload/platform/plugins/listings/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/listings/PLUGIN.md +103 -0
- package/payload/platform/plugins/listings/skills/comparable-finder/SKILL.md +52 -0
- package/payload/platform/plugins/listings/skills/epc-checker/SKILL.md +38 -0
- package/payload/platform/plugins/listings/skills/home-preparation/SKILL.md +28 -0
- package/payload/platform/plugins/listings/skills/home-preparation/references/kerb-appeal.md +38 -0
- package/payload/platform/plugins/listings/skills/home-preparation/references/photo-day.md +59 -0
- package/payload/platform/plugins/listings/skills/home-preparation/references/situational-tips.md +50 -0
- package/payload/platform/plugins/listings/skills/home-preparation/references/staging-guide.md +52 -0
- package/payload/platform/plugins/listings/skills/listing-copy-writer/SKILL.md +55 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/SKILL.md +286 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/references/booking-script.md +51 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/references/objection-scripts.md +193 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/references/penhaul-presentation.md +123 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/references/pre-listing-kit.md +139 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/references/set-to-sell.md +55 -0
- package/payload/platform/plugins/listings/skills/listing-presentation/references/sharran-frameworks.md +107 -0
- package/payload/platform/plugins/listings/skills/local-market-stats/SKILL.md +33 -0
- package/payload/platform/plugins/listings/skills/new-instruction/SKILL.md +78 -0
- package/payload/platform/plugins/listings/skills/particulars-builder/SKILL.md +48 -0
- package/payload/platform/plugins/listings/skills/portal-launch-scheduler/SKILL.md +49 -0
- package/payload/platform/plugins/listings/skills/pricing-scenario-builder/SKILL.md +35 -0
- package/payload/platform/plugins/listings/skills/property-marketing/SKILL.md +337 -0
- package/payload/platform/plugins/listings/skills/property-marketing/references/auction-report-template.md +41 -0
- package/payload/platform/plugins/listings/skills/property-marketing/references/coming-soon-campaign.md +43 -0
- package/payload/platform/plugins/listings/skills/property-marketing/references/direct-mail-templates.md +121 -0
- package/payload/platform/plugins/listings/skills/property-marketing/references/eoi-form-template.md +62 -0
- package/payload/platform/plugins/listings/skills/property-marketing/references/monthly-scorecard.md +63 -0
- package/payload/platform/plugins/listings/skills/supplier-booker/SKILL.md +39 -0
- package/payload/platform/plugins/listings/skills/talk-track-composer/SKILL.md +36 -0
- package/payload/platform/plugins/listings/skills/terms-of-business-drafter/SKILL.md +54 -0
- package/payload/platform/plugins/listings/skills/valuation-prep/SKILL.md +69 -0
- package/payload/platform/plugins/loop/.claude-plugin/plugin.json +17 -0
- package/payload/platform/plugins/loop/PLUGIN.md +108 -0
- package/payload/platform/plugins/loop/mcp/dist/index.d.ts +2 -0
- package/payload/platform/plugins/loop/mcp/dist/index.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/index.js +293 -0
- package/payload/platform/plugins/loop/mcp/dist/index.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts +10 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js +88 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/crypto.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts +82 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js +427 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/loop-api.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts +5 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js +40 -0
- package/payload/platform/plugins/loop/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts +10 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js +24 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/customer-preferences.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts +16 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js +35 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/feedback.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts +5 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js +19 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-deregister.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts +4 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js +14 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-list.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts +9 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js +60 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/key-register.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts +13 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js +41 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-enquiry.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts +9 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js +16 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-batch.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts +15 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js +11 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match-request.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts +10 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js +39 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/marketing-match.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts +9 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js +125 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-detail.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts +18 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js +87 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/people-search.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts +10 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js +82 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-detail.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts +12 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js +32 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-listed.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts +15 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js +11 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-request.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts +16 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js +41 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/property-search.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts +13 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js +49 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/supplier.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts +7 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js +19 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-availability.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts +5 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js +32 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/team-info.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts +14 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js +11 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-create.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts +9 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js +85 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-detail.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts +13 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js +44 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-search.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts +14 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.d.ts.map +1 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js +18 -0
- package/payload/platform/plugins/loop/mcp/dist/tools/viewing-update.js.map +1 -0
- package/payload/platform/plugins/loop/mcp/package-lock.json +2549 -0
- package/payload/platform/plugins/loop/mcp/package.json +21 -0
- package/payload/platform/plugins/loop/mcp/src/__tests__/loop-swagger.snapshot.json +26467 -0
- package/payload/platform/plugins/loop/mcp/src/__tests__/swagger-write-coverage.test.ts +153 -0
- package/payload/platform/plugins/loop/mcp/src/index.ts +444 -0
- package/payload/platform/plugins/loop/mcp/src/lib/crypto.ts +105 -0
- package/payload/platform/plugins/loop/mcp/src/lib/loop-api.ts +604 -0
- package/payload/platform/plugins/loop/mcp/src/lib/neo4j.ts +51 -0
- package/payload/platform/plugins/loop/mcp/src/tools/customer-preferences.ts +66 -0
- package/payload/platform/plugins/loop/mcp/src/tools/feedback.ts +86 -0
- package/payload/platform/plugins/loop/mcp/src/tools/key-deregister.ts +27 -0
- package/payload/platform/plugins/loop/mcp/src/tools/key-list.ts +19 -0
- package/payload/platform/plugins/loop/mcp/src/tools/key-register.ts +95 -0
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-enquiry.ts +113 -0
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-batch.ts +53 -0
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-match-request.ts +42 -0
- package/payload/platform/plugins/loop/mcp/src/tools/marketing-match.ts +84 -0
- package/payload/platform/plugins/loop/mcp/src/tools/people-detail.ts +245 -0
- package/payload/platform/plugins/loop/mcp/src/tools/people-search.ts +180 -0
- package/payload/platform/plugins/loop/mcp/src/tools/property-detail.ts +145 -0
- package/payload/platform/plugins/loop/mcp/src/tools/property-listed.ts +88 -0
- package/payload/platform/plugins/loop/mcp/src/tools/property-request.ts +42 -0
- package/payload/platform/plugins/loop/mcp/src/tools/property-search.ts +92 -0
- package/payload/platform/plugins/loop/mcp/src/tools/supplier.ts +129 -0
- package/payload/platform/plugins/loop/mcp/src/tools/team-availability.ts +52 -0
- package/payload/platform/plugins/loop/mcp/src/tools/team-info.ts +95 -0
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-create.ts +41 -0
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-detail.ts +171 -0
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-search.ts +92 -0
- package/payload/platform/plugins/loop/mcp/src/tools/viewing-update.ts +53 -0
- package/payload/platform/plugins/loop/mcp/tsconfig.json +20 -0
- package/payload/platform/plugins/loop/mcp/vitest.config.ts +9 -0
- package/payload/platform/plugins/loop/skills/compliance-flag-checker/SKILL.md +53 -0
- package/payload/platform/plugins/loop/skills/priority-ranker/SKILL.md +40 -0
- package/payload/platform/plugins/loop/skills/tone-matched-drafter/SKILL.md +53 -0
- package/payload/platform/plugins/loop/skills/variance-narrator/SKILL.md +50 -0
- package/payload/platform/plugins/loop/skills/vendor-research/SKILL.md +54 -0
- package/payload/platform/plugins/teaching/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/teaching/PLUGIN.md +57 -0
- package/payload/platform/plugins/teaching/skills/interactive-tutor/SKILL.md +59 -0
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/assessment.md +70 -0
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +43 -0
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +83 -0
- package/payload/platform/plugins/teaching/skills/lesson-planner/SKILL.md +48 -0
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/context-gathering.md +41 -0
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/plan-structure.md +94 -0
- package/payload/platform/plugins/teaching/skills/study-pack-builder/SKILL.md +52 -0
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/disaggregation.md +49 -0
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/materials.md +116 -0
- package/payload/platform/plugins/vendors/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/vendors/PLUGIN.md +34 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/SKILL.md +42 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/fee-protection-and-agenda.md +28 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/listing-scripts.md +44 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/negotiation-deep-guide.md +70 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment-scripts.md +33 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/price-alignment.md +34 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/scenario-scripts.md +38 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/seller-engagement.md +51 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/valuation-booking.md +76 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-scripts.md +63 -0
- package/payload/platform/plugins/vendors/skills/vendor-communication/references/vendor-updates.md +41 -0
- package/payload/platform/plugins/vendors/skills/vendor-updates/SKILL.md +153 -0
- package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +8 -0
- package/payload/platform/plugins/writer-craft/PLUGIN.md +87 -0
- package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +92 -0
- package/payload/platform/plugins/writer-craft/skills/citation-style/SKILL.md +94 -0
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +77 -0
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/citation-rules.md +103 -0
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/journal-article-models.md +74 -0
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/other-source-models.md +146 -0
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +70 -0
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/SKILL.md +108 -0
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/copyediting.md +73 -0
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +85 -0
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +78 -0
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/line-editing.md +55 -0
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/self-editing.md +89 -0
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +114 -0
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +73 -0
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +76 -0
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +67 -0
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +86 -0
- package/payload/platform/plugins/writer-craft/skills/point-of-view/SKILL.md +97 -0
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +72 -0
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +91 -0
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +71 -0
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +85 -0
- package/payload/platform/plugins/writer-craft/skills/prose-craft/SKILL.md +100 -0
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +72 -0
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/repetition.md +71 -0
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +64 -0
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/word-economy.md +93 -0
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/SKILL.md +100 -0
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +79 -0
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +81 -0
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +67 -0
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +94 -0
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/SKILL.md +111 -0
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +119 -0
- package/payload/platform/plugins/writer-craft/skills/review-prose/SKILL.md +99 -0
- package/payload/platform/plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +112 -0
- package/payload/platform/plugins/writer-craft/skills/review-scene/SKILL.md +99 -0
- package/payload/platform/plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +95 -0
- package/payload/platform/plugins/writer-craft/skills/story-architecture/SKILL.md +106 -0
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +118 -0
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +66 -0
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +87 -0
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +82 -0
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/SKILL.md +133 -0
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +118 -0
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +128 -0
- package/payload/platform/services/claude-session-manager/dist/config.d.ts +6 -0
- package/payload/platform/services/claude-session-manager/dist/config.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/config.js +60 -1
- package/payload/platform/services/claude-session-manager/dist/config.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +9 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +34 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +12 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/public-tool-audit.d.ts +33 -0
- package/payload/platform/services/claude-session-manager/dist/public-tool-audit.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js +149 -0
- package/payload/platform/services/claude-session-manager/dist/public-tool-audit.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.d.ts +28 -0
- package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js +77 -0
- package/payload/platform/services/claude-session-manager/dist/spawn-rate-limiter.js.map +1 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import {
|
|
2
|
+
aggregateAcrossTeams,
|
|
3
|
+
formatAggregationResult,
|
|
4
|
+
loopGet,
|
|
5
|
+
} from "../lib/loop-api.js";
|
|
6
|
+
|
|
7
|
+
// ─── Loop API V2: /residential/{dept}/viewings ─────────────────
|
|
8
|
+
// Fields: id, propertyId, propertyAddress, status,
|
|
9
|
+
// dateOfAppointment, dateOfAppointmentEnd,
|
|
10
|
+
// attendingAgentId, creatingAgentId, type, buyerName
|
|
11
|
+
// ────────────────────────────────────────────────────────────────
|
|
12
|
+
interface LoopViewingSummary {
|
|
13
|
+
id: number;
|
|
14
|
+
propertyId?: number;
|
|
15
|
+
propertyAddress?: string;
|
|
16
|
+
status?: string;
|
|
17
|
+
dateOfAppointment?: string;
|
|
18
|
+
dateOfAppointmentEnd?: string;
|
|
19
|
+
attendingAgentId?: string;
|
|
20
|
+
creatingAgentId?: string;
|
|
21
|
+
type?: string;
|
|
22
|
+
buyerName?: string;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type Department = "sales" | "lettings" | "both";
|
|
27
|
+
|
|
28
|
+
export async function viewingSearch(params: {
|
|
29
|
+
accountId: string;
|
|
30
|
+
department?: Department;
|
|
31
|
+
searchTerm?: string;
|
|
32
|
+
appointmentStartDate?: string;
|
|
33
|
+
appointmentEndDate?: string;
|
|
34
|
+
status?: string;
|
|
35
|
+
teamName?: string;
|
|
36
|
+
limit?: number;
|
|
37
|
+
}): Promise<string> {
|
|
38
|
+
const {
|
|
39
|
+
accountId, department = "both", searchTerm,
|
|
40
|
+
appointmentStartDate, appointmentEndDate, status,
|
|
41
|
+
teamName, limit,
|
|
42
|
+
} = params;
|
|
43
|
+
|
|
44
|
+
const result = await aggregateAcrossTeams<LoopViewingSummary>(
|
|
45
|
+
accountId,
|
|
46
|
+
"viewings",
|
|
47
|
+
"loop-viewing-search",
|
|
48
|
+
async (apiKey, team) => {
|
|
49
|
+
const depts: string[] =
|
|
50
|
+
department === "both" ? ["sales", "lettings"] : [department];
|
|
51
|
+
const all: LoopViewingSummary[] = [];
|
|
52
|
+
|
|
53
|
+
for (const dept of depts) {
|
|
54
|
+
const qp: string[] = [];
|
|
55
|
+
if (searchTerm) qp.push(`SearchTerm=${encodeURIComponent(searchTerm)}`);
|
|
56
|
+
if (appointmentStartDate) qp.push(`AppointmentStartDate=${encodeURIComponent(appointmentStartDate)}`);
|
|
57
|
+
if (appointmentEndDate) qp.push(`AppointmentEndDate=${encodeURIComponent(appointmentEndDate)}`);
|
|
58
|
+
if (status) qp.push(`Status=${encodeURIComponent(status)}`);
|
|
59
|
+
|
|
60
|
+
const query = qp.length > 0 ? `?${qp.join("&")}` : "";
|
|
61
|
+
const path = `/residential/${dept}/viewings${query}`;
|
|
62
|
+
const data = await loopGet<LoopViewingSummary[]>(apiKey, path, "loop-viewing-search", team);
|
|
63
|
+
if (Array.isArray(data)) all.push(...data);
|
|
64
|
+
}
|
|
65
|
+
return all;
|
|
66
|
+
},
|
|
67
|
+
{ teamName, limitPerTeam: limit ?? 50, limitTotal: limit ?? 200 }
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
return formatAggregationResult(
|
|
71
|
+
result,
|
|
72
|
+
(v) => {
|
|
73
|
+
const addr = v.propertyAddress ?? "Unknown property";
|
|
74
|
+
const id = v.id != null ? ` [ID: ${v.id}]` : "";
|
|
75
|
+
// dateOfAppointment is ISO datetime e.g. "2026-04-10T15:30:00"
|
|
76
|
+
const when = v.dateOfAppointment
|
|
77
|
+
? formatDateTime(v.dateOfAppointment)
|
|
78
|
+
: "No date";
|
|
79
|
+
const viewStatus = v.status ? ` [${v.status}]` : "";
|
|
80
|
+
const buyer = v.buyerName ? ` — ${v.buyerName}` : "";
|
|
81
|
+
const viewType = v.type ? ` (${v.type})` : "";
|
|
82
|
+
return `- ${addr}${id} — ${when}${viewType}${buyer}${viewStatus}`;
|
|
83
|
+
},
|
|
84
|
+
"viewings"
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function formatDateTime(iso: string): string {
|
|
89
|
+
const [datePart, timePart] = iso.split("T");
|
|
90
|
+
if (!timePart) return datePart;
|
|
91
|
+
return `${datePart} ${timePart.slice(0, 5)}`;
|
|
92
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { loopPost, withTeamKey } from "../lib/loop-api.js";
|
|
2
|
+
|
|
3
|
+
type Department = "sales" | "lettings";
|
|
4
|
+
|
|
5
|
+
// Feedback parties map to swagger endpoints:
|
|
6
|
+
// sales: buyer-feedback, seller-feedback
|
|
7
|
+
// lettings: renter-feedback, landlord-feedback
|
|
8
|
+
type FeedbackParty = "buyer" | "seller" | "renter" | "landlord";
|
|
9
|
+
type Action = "note" | "feedback";
|
|
10
|
+
|
|
11
|
+
// ─── Loop API V2: POST /residential/{dept}/viewings/{id}/{suffix}
|
|
12
|
+
// Suffix: "note" for notes, "{party}-feedback" for feedback
|
|
13
|
+
// Request body: { result: string } (StringResponse format)
|
|
14
|
+
// Response: boolean success
|
|
15
|
+
// ────────────────────────────────────────────────────────────────
|
|
16
|
+
interface LoopBooleanResponse {
|
|
17
|
+
success?: boolean;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export async function viewingUpdate(params: {
|
|
22
|
+
accountId: string;
|
|
23
|
+
teamName: string;
|
|
24
|
+
viewingId: number;
|
|
25
|
+
department: Department;
|
|
26
|
+
action: Action;
|
|
27
|
+
text: string;
|
|
28
|
+
feedbackParty?: FeedbackParty;
|
|
29
|
+
}): Promise<string> {
|
|
30
|
+
const { accountId, teamName, viewingId, department, action, text, feedbackParty } = params;
|
|
31
|
+
|
|
32
|
+
if (action === "feedback" && !feedbackParty) {
|
|
33
|
+
throw new Error("feedbackParty is required when action is 'feedback'. Use: buyer, seller, renter, or landlord.");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
await withTeamKey<LoopBooleanResponse>(
|
|
37
|
+
accountId,
|
|
38
|
+
teamName,
|
|
39
|
+
"viewings",
|
|
40
|
+
"loop-viewing-update",
|
|
41
|
+
async (apiKey) => {
|
|
42
|
+
const suffix = action === "note"
|
|
43
|
+
? "note"
|
|
44
|
+
: `${feedbackParty}-feedback`;
|
|
45
|
+
const path = `/residential/${department}/viewings/${viewingId}/${suffix}`;
|
|
46
|
+
// Loop expects the text as a StringResponse body
|
|
47
|
+
return loopPost<LoopBooleanResponse>(apiKey, path, { result: text }, "loop-viewing-update", teamName);
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const actionLabel = action === "note" ? "Note added" : `${feedbackParty} feedback recorded`;
|
|
52
|
+
return `${actionLabel} for viewing ${viewingId} (${department}) via team "${teamName}".`;
|
|
53
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "Node16",
|
|
5
|
+
"moduleResolution": "Node16",
|
|
6
|
+
"lib": ["ES2022"],
|
|
7
|
+
"outDir": "dist",
|
|
8
|
+
"rootDir": "src",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"forceConsistentCasingInFileNames": true,
|
|
13
|
+
"resolveJsonModule": true,
|
|
14
|
+
"declaration": true,
|
|
15
|
+
"declarationMap": true,
|
|
16
|
+
"sourceMap": true
|
|
17
|
+
},
|
|
18
|
+
"include": ["src"],
|
|
19
|
+
"exclude": ["src/**/__tests__/**", "src/**/*.test.ts"]
|
|
20
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: compliance-flag-checker
|
|
3
|
+
description: "Flag AML, GDPR, DMCCA 2024 material information, ASA/CAP advertising standards, and Equality Act risks in any output before the operator approves it. Cross-cutting skill called by every workflow that produces an outbound message, a listing, terms of business, or a payment batch. Owned by the compliance specialist."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Compliance flag checker
|
|
7
|
+
|
|
8
|
+
A cross-cutting building-block skill. Runs against every output that touches a regulated surface (a portal listing, a terms-of-business document, an outgoing message to a buyer or vendor, a payment batch, the AML status on a deal). Returns a list of flags the operator should see before approval.
|
|
9
|
+
|
|
10
|
+
## What it checks
|
|
11
|
+
|
|
12
|
+
- **Material information.** DMCCA 2024 disclosure requirements for property listings: council tax band, tenure, ground rent and service charge if leasehold, property type, construction, utilities, heating, broadband, parking, and the wider Part C signals (flood risk, listed status, structural issues, planning permission, mining, and the rest). Missing items are flagged with the specific legislative requirement.
|
|
13
|
+
- **Advertising standards.** ASA upheld-complaint patterns: fee transparency (VAT inclusion, mandatory surcharges disclosed), property descriptions accurate and substantiated, "local" claims supported, "leading" and "number one" claims substantiated.
|
|
14
|
+
- **EPC display.** Asset rating present in any commercial media for the listing.
|
|
15
|
+
- **AML state on the vendor.** Blocks a portal launch unless AML status is "passed" or the operator has explicitly overridden.
|
|
16
|
+
- **GDPR.** Marketing messages to non-existing-client contacts checked for PECR opt-in basis. Data-retention prompts surfaced on close files.
|
|
17
|
+
- **Equality Act.** Listing copy and outgoing messages checked for discriminatory phrasing (most commonly the "No DSS" pattern in lettings, court-declared as unlawful indirect discrimination).
|
|
18
|
+
- **EAA s.21 personal interest disclosure.** Flags any output where the agent has a personal interest in the property and the disclosure has not been made.
|
|
19
|
+
- **Renters' Rights Act 2025.** Where the workflow produces lettings output: bidding-ban compliance (must publish asking rent, must not request or accept above-advertised offers), discrimination ban (benefits, children), pet provisions, PRS database registration check, ombudsman membership display.
|
|
20
|
+
- **Client money handling.** EAA 1979 ss.12 to 17 obligations on prescribed accounts, interest, trust requirements.
|
|
21
|
+
|
|
22
|
+
## Output
|
|
23
|
+
|
|
24
|
+
Each flag returns:
|
|
25
|
+
|
|
26
|
+
- The cited legislation (Act, SI, regulation, code provision), with format like `[DMCCA 2024, Part 4, s.237]`
|
|
27
|
+
- The specific issue
|
|
28
|
+
- The remediation required
|
|
29
|
+
- The penalty exposure for non-compliance
|
|
30
|
+
|
|
31
|
+
The calling workflow surfaces the flags at the top of the staged output. The operator clears the flags or accepts the residual risk before approving.
|
|
32
|
+
|
|
33
|
+
## What it does not do
|
|
34
|
+
|
|
35
|
+
- It does not block approval. The operator decides; the skill informs.
|
|
36
|
+
- It does not provide legal advice. Use "the legislation requires", "the regulatory position is", "this appears to fall short of". Never "you should" or "my advice is".
|
|
37
|
+
- It does not certify a transaction or a listing as compliant. It flags gaps and cites requirements.
|
|
38
|
+
- It does not amend the output it checks. Remediation is for the calling workflow or the operator.
|
|
39
|
+
|
|
40
|
+
## Connectors
|
|
41
|
+
|
|
42
|
+
Read: profile (compliance state, AML provider, scheme memberships), CRM (deal, vendor, listing), the deep-research tool when an unfamiliar provision needs verification.
|
|
43
|
+
Write: none.
|
|
44
|
+
|
|
45
|
+
## Profile keys
|
|
46
|
+
|
|
47
|
+
- `realagent.compliance.cmp_scheme_membership`
|
|
48
|
+
- `realagent.compliance.redress_scheme`
|
|
49
|
+
- `realagent.compliance.ico_registration`
|
|
50
|
+
- `realagent.compliance.mlro_designation`
|
|
51
|
+
- `realagent.compliance.aml_provider`
|
|
52
|
+
- `realagent.compliance.tpo_membership`
|
|
53
|
+
- `realagent.compliance.propertymark_membership`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: priority-ranker
|
|
3
|
+
description: "Order any list of items using the profile's urgency weights. Cross-cutting skill used by the morning round's top three and chase-progression's stalled list."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Priority ranker
|
|
7
|
+
|
|
8
|
+
A cross-cutting building-block skill. Given a list of items with feature attributes, returns the same list ordered by relative urgency.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
The calling workflow passes:
|
|
13
|
+
|
|
14
|
+
- A list of items. Each item has a feature attribute map (for chase-progression, the features are risk score, fee value, days stalled, recipient type, and so on).
|
|
15
|
+
- An optional cap on how many top items to return (the morning round uses 3).
|
|
16
|
+
|
|
17
|
+
## What it does
|
|
18
|
+
|
|
19
|
+
Reads the profile's weights for the relevant features. Returns the items in descending urgency order. If the cap is supplied, returns only the top N.
|
|
20
|
+
|
|
21
|
+
For the top-three case the skill also returns, alongside each item, the feature that contributed most to its rank. The calling workflow uses that feature to write the reason sentence the operator reads ("Mrs Patel, her buyer's mortgage offer expires in 9 days and the survey was booked but not done").
|
|
22
|
+
|
|
23
|
+
## Learning
|
|
24
|
+
|
|
25
|
+
When the operator actions a different item than the top-ranked one within the same session, the weighting reweights toward whatever feature distinguished the actioned item. Slow signal, high quality. All writes go through `profile-writer`.
|
|
26
|
+
|
|
27
|
+
## What it does not do
|
|
28
|
+
|
|
29
|
+
- It does not generate the reason sentence. That is `variance-narrator`.
|
|
30
|
+
- It does not decide what to do with the ranked items. The calling workflow owns that.
|
|
31
|
+
- It does not write to the CRM.
|
|
32
|
+
|
|
33
|
+
## Connectors
|
|
34
|
+
|
|
35
|
+
Read: profile (weights). No writes.
|
|
36
|
+
|
|
37
|
+
## Profile keys
|
|
38
|
+
|
|
39
|
+
- `realagent.priority_weights.*` (per feature, learned)
|
|
40
|
+
- `realagent.priority_weights.fee_multiplier`
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tone-matched-drafter
|
|
3
|
+
description: "Draft a message in the operator's voice for a specific recipient type and channel. Cross-cutting skill used by chase-progression, new-instruction (vendor welcome), and any other workflow that needs an outgoing message. Never sends; the calling workflow owns the send gate."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tone-matched drafter
|
|
7
|
+
|
|
8
|
+
The cross-cutting skill that produces every outgoing message in Real Agent. The deepest learning hook in the product: edit-before-send diffs feed back here.
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
The calling workflow passes:
|
|
13
|
+
|
|
14
|
+
- Recipient type (vendor familiar, vendor formal, buyer familiar, buyer formal, vendor solicitor, buyer solicitor, mortgage broker, surveyor, photographer, EPC supplier, floorplan supplier, accountant, other)
|
|
15
|
+
- Channel (WhatsApp, email, SMS, or "infer from recipient")
|
|
16
|
+
- Intent (chase the solicitor on searches, welcome a new vendor, request a viewing, confirm a meeting, and so on)
|
|
17
|
+
- Reference data (the deal record, the property record, the contact's prior messages)
|
|
18
|
+
|
|
19
|
+
## What it does
|
|
20
|
+
|
|
21
|
+
Reads the profile's tone preference for the recipient type and the agent's voice samples. Drafts a message that matches:
|
|
22
|
+
|
|
23
|
+
- The agent's vocabulary (the words they actually use)
|
|
24
|
+
- The agent's sentence length and rhythm
|
|
25
|
+
- The agent's preferred greeting and sign-off for the recipient type
|
|
26
|
+
- The phrases the agent has previously edited out (the pet-peeve list), which are never included
|
|
27
|
+
- The channel's constraints (WhatsApp templating for first contact, email subject lines, SMS character limits)
|
|
28
|
+
|
|
29
|
+
The draft is returned to the calling workflow with the channel decision attached. The workflow decides when to surface the draft to the operator and when to fire on approval.
|
|
30
|
+
|
|
31
|
+
## What it does not do
|
|
32
|
+
|
|
33
|
+
- It never sends. The calling workflow owns the send gate.
|
|
34
|
+
- It does not negotiate. Drafts are messages the operator would send; negotiating substance is the operator's decision.
|
|
35
|
+
- It does not invent facts. Every reference to a number, name, or date is read from the deal record or the connector. If a field is missing, the draft says so explicitly and the operator fills it.
|
|
36
|
+
|
|
37
|
+
## Learning
|
|
38
|
+
|
|
39
|
+
Every time the operator edits a draft before approval, the diff is captured and weighted into the profile's tone preference and pet-peeve list. Within a quarter, the workflow should produce drafts the agent sends without editing 80% of the time on the common recipient types.
|
|
40
|
+
|
|
41
|
+
## Connectors
|
|
42
|
+
|
|
43
|
+
Read: profile (tone, voice samples, pet peeves, channel preferences), CRM (deal and contact records).
|
|
44
|
+
Write: none. The calling workflow handles sends.
|
|
45
|
+
|
|
46
|
+
## Profile keys
|
|
47
|
+
|
|
48
|
+
- `realagent.tone_profile.*` (per recipient type)
|
|
49
|
+
- `realagent.voice_samples`
|
|
50
|
+
- `realagent.phrasing_pet_peeves`
|
|
51
|
+
- `realagent.channel_preference.<recipient_id>`
|
|
52
|
+
- `realagent.tone_profile.greetings.*`
|
|
53
|
+
- `realagent.tone_profile.signoffs.*`
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: variance-narrator
|
|
3
|
+
description: "Write short prose summaries of numerical changes. Used by the morning round to write the cause sentence under each stalled deal, and by month-end-close to write the two paragraphs comparing the period to the prior month and the same period last year."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Variance narrator
|
|
7
|
+
|
|
8
|
+
A cross-cutting building-block skill. Turns a set of numbers and structured events into a sentence or short paragraph in plain English, in the agent's voice.
|
|
9
|
+
|
|
10
|
+
## Two output shapes
|
|
11
|
+
|
|
12
|
+
### Cause sentence (used by morning round and chase-progression)
|
|
13
|
+
|
|
14
|
+
Given a deal's state, produces one short sentence that names the most likely cause of the stall. The skill picks the pattern that fits the observable signals, not the one that sounds most dramatic. Examples:
|
|
15
|
+
|
|
16
|
+
- "Mortgage offer expires in 9 days and the survey was booked but not done."
|
|
17
|
+
- "Searches outstanding at day 28; solicitor last contacted day 14."
|
|
18
|
+
- "Vendor unresponsive since day 12; buyer's broker has chased twice."
|
|
19
|
+
|
|
20
|
+
If no pattern fits, the sentence reads "no clear cause from connectors, manual check recommended". The skill never invents a cause it cannot trace to data.
|
|
21
|
+
|
|
22
|
+
### Variance paragraphs (used by month-end-close)
|
|
23
|
+
|
|
24
|
+
Given the period's reconciliation totals and the two comparison periods (prior month, same month last year), produces two paragraphs in plain language with no jargon. Example:
|
|
25
|
+
|
|
26
|
+
> April was GBP 8,400 down on March because three completions slipped into May, all expected to land. The reconciliation matched cleanly otherwise; the only variance was a GBP 120 referral deduction on the Norton sale.
|
|
27
|
+
>
|
|
28
|
+
> Year-on-year April is 15% up on the same month last year. The increase came from two completions over GBP 8,000 fee value, both new instructions taken in February.
|
|
29
|
+
|
|
30
|
+
The paragraphs are suitable to paste into a board update, a tax-return cover note, or a conversation with a partner.
|
|
31
|
+
|
|
32
|
+
## Voice source
|
|
33
|
+
|
|
34
|
+
Reads the profile's voice samples and the operator's prior narrative paragraphs. Learns from edit-before-approve diffs.
|
|
35
|
+
|
|
36
|
+
## What it does not do
|
|
37
|
+
|
|
38
|
+
- It does not write outgoing messages. That is `tone-matched-drafter`.
|
|
39
|
+
- It does not produce numerical totals. The calling workflow passes the numbers in; this skill writes the prose around them.
|
|
40
|
+
- It does not write to the CRM or the accounting platform.
|
|
41
|
+
|
|
42
|
+
## Connectors
|
|
43
|
+
|
|
44
|
+
Read: profile (voice samples, narrative voice). No writes.
|
|
45
|
+
|
|
46
|
+
## Profile keys
|
|
47
|
+
|
|
48
|
+
- `realagent.voice_samples`
|
|
49
|
+
- `realagent.close.narrative_voice_samples`
|
|
50
|
+
- `realagent.cause_phrases`
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vendor-research
|
|
3
|
+
description: "Public-record and CRM-history lookup on a vendor, with the profile's privacy line enforced. Used in valuation-prep, in new-instruction AML staging, and in chase-progression when a vendor goes silent. Surfaces useful context; flags sensitive signals separately."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vendor research
|
|
7
|
+
|
|
8
|
+
A cross-cutting building-block skill. Looks the vendor up across the sources the platform has access to and returns a structured summary with the privacy line applied.
|
|
9
|
+
|
|
10
|
+
## What it looks at
|
|
11
|
+
|
|
12
|
+
- Land Registry: ownership history, joint owners, transactions
|
|
13
|
+
- The agency's CRM history with this vendor and with the property
|
|
14
|
+
- Council planning portal: planning applications and decisions for the property
|
|
15
|
+
- The portal record if the property has been listed before
|
|
16
|
+
- Public probate registry where relevant
|
|
17
|
+
- Public news sources via the deep-research tool when the brief warrants it
|
|
18
|
+
|
|
19
|
+
## The privacy line
|
|
20
|
+
|
|
21
|
+
The profile holds a privacy preference. Default behaviour:
|
|
22
|
+
|
|
23
|
+
- **Surface.** Ownership and planning history.
|
|
24
|
+
- **Flag-but-suppress.** Deaths registered against the address, ownership changes that correlate with bereavement, planning disputes, anything that the agent could not quote in the appointment without harming their reputation.
|
|
25
|
+
|
|
26
|
+
The flag-but-suppress signals are not deleted; they are summarised at the top of the output as "n suppressed signals exist on this address, available on request". The operator can say "show me everything you find" to see them, or "drop the sensitive stuff" to remove the heading entirely.
|
|
27
|
+
|
|
28
|
+
## Output shape
|
|
29
|
+
|
|
30
|
+
A structured summary with:
|
|
31
|
+
|
|
32
|
+
- How long the vendor has owned
|
|
33
|
+
- Last purchase price
|
|
34
|
+
- Joint owners on the title
|
|
35
|
+
- Planning history (one-line per material event)
|
|
36
|
+
- Prior listings (agent, asking price, sold or withdrawn)
|
|
37
|
+
- CRM history with this agent
|
|
38
|
+
|
|
39
|
+
Plus the suppressed-signal heading if any apply.
|
|
40
|
+
|
|
41
|
+
## What it does not do
|
|
42
|
+
|
|
43
|
+
- It does not draft anything to send to the vendor. That is `tone-matched-drafter`.
|
|
44
|
+
- It does not produce a valuation. That is `pricing-scenario-builder`.
|
|
45
|
+
- It does not write to the CRM. The calling workflow stores anything it wants kept.
|
|
46
|
+
|
|
47
|
+
## Connectors
|
|
48
|
+
|
|
49
|
+
Read: Land Registry, planning portal, CRM, portal data, probate registry, deep-research tool. No writes.
|
|
50
|
+
|
|
51
|
+
## Profile keys
|
|
52
|
+
|
|
53
|
+
- `realagent.privacy_line.surface` (list of signal types)
|
|
54
|
+
- `realagent.privacy_line.suppress` (list of signal types)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "teaching",
|
|
3
|
+
"description": "Interactive tutoring, lesson planning, and study pack generation. Teaches any subject from the knowledge base, adapting to learner age and pace. Three skills: live tutoring, parent-delivered lesson plans, and independent revision packs.",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Rubytech LLC"
|
|
7
|
+
}
|
|
8
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: teaching
|
|
3
|
+
description: "Interactive tutoring, lesson planning, and study pack generation. Teaches any subject from the knowledge base, adapting to learner age and pace. Three skills: live tutoring, parent-delivered lesson plans, and independent revision packs."
|
|
4
|
+
icon: 🎓
|
|
5
|
+
tools: []
|
|
6
|
+
always: false
|
|
7
|
+
metadata: {"platform":{"optional":true,"pluginKey":"teaching","embed":["public","admin"]}}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Teaching
|
|
11
|
+
|
|
12
|
+
Three skills for knowledge-based teaching and learning. Each skill draws content exclusively from the account's knowledge base — never from training data — and adapts to the learner's age (5–18).
|
|
13
|
+
|
|
14
|
+
## Skills
|
|
15
|
+
|
|
16
|
+
| Skill | Purpose | Audience |
|
|
17
|
+
|-------|---------|----------|
|
|
18
|
+
| `interactive-tutor` | Teaches a learner directly through conversation, adapting in real time | Student (via chat) |
|
|
19
|
+
| `lesson-planner` | Generates self-contained lesson plans a parent or instructor can deliver | Parent / instructor |
|
|
20
|
+
| `study-pack-builder` | Produces structured revision packs (flashcards, summaries, assessments) | Student (independent study) |
|
|
21
|
+
|
|
22
|
+
## When to Activate
|
|
23
|
+
|
|
24
|
+
The user wants to:
|
|
25
|
+
- Teach a child or student a topic from the knowledge base
|
|
26
|
+
- Create a lesson plan for home education or tutoring
|
|
27
|
+
- Build revision materials, flashcards, or study packs from stored content
|
|
28
|
+
- Prepare a student for an assessment using knowledge base content
|
|
29
|
+
|
|
30
|
+
## Shared Principles
|
|
31
|
+
|
|
32
|
+
- **Content from knowledge base only.** Every skill searches memory first. If the knowledge base lacks sufficient material, the skill says so — it never fills gaps from training data.
|
|
33
|
+
- **Conversational context gathering.** Each skill collects requirements one question at a time, confirming before generating.
|
|
34
|
+
- **Age-appropriate adaptation.** Language, examples, and complexity scale to the learner's age (5–18 years).
|
|
35
|
+
- **Self-contained output.** Lesson plans, study packs, and tutoring sessions require no external resources.
|
|
36
|
+
- **Domain-neutral.** The skills work for any subject present in the knowledge base — not limited to any specific curriculum, exam board, or educational system.
|
|
37
|
+
|
|
38
|
+
## Tools Used
|
|
39
|
+
|
|
40
|
+
No MCP server. Skills operate via existing platform tools:
|
|
41
|
+
- `memory-search` — retrieve subject content from the knowledge base
|
|
42
|
+
- `image_generate` — create visual aids, diagrams, and infographics
|
|
43
|
+
- `render-component` — present structured choices during context gathering
|
|
44
|
+
|
|
45
|
+
## References
|
|
46
|
+
|
|
47
|
+
Domain knowledge files loaded on demand by each skill:
|
|
48
|
+
|
|
49
|
+
| Reference | Used By | Purpose |
|
|
50
|
+
|-----------|---------|---------|
|
|
51
|
+
| `references/assessment.md` | interactive-tutor | Prior knowledge assessment and comprehension checking |
|
|
52
|
+
| `references/classroom-conduct.md` | interactive-tutor | Standing rules for language, output format, and boundaries |
|
|
53
|
+
| `references/teaching-modes.md` | interactive-tutor | Four teaching approaches (Socratic, Direct, Guided Discovery, Adaptive) |
|
|
54
|
+
| `references/context-gathering.md` | lesson-planner | Student context fields and teaching mode descriptions |
|
|
55
|
+
| `references/plan-structure.md` | lesson-planner | Lesson plan format, content requirements, and quality standards |
|
|
56
|
+
| `references/disaggregation.md` | study-pack-builder | Building topic hierarchies from knowledge base content |
|
|
57
|
+
| `references/materials.md` | study-pack-builder | Per-topic revision material generation (summaries, flashcards, assessments) |
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interactive-tutor
|
|
3
|
+
description: "Teach learners interactively through conversation. Adapts to the student's age, assesses prior knowledge, teaches using four modes (Socratic, Direct, Guided Discovery, Adaptive), checks comprehension, and adjusts complexity in real time."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Interactive Tutor
|
|
7
|
+
|
|
8
|
+
You teach learners directly through conversation. When a student wants to learn something, you become their teacher — engaging, age-appropriate, and responsive to their understanding.
|
|
9
|
+
|
|
10
|
+
## Teaching Flow
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
1. Gather basics (age, topic, lesson length, teaching mode)
|
|
14
|
+
2. Assess prior knowledge (warm greeting, 1-2 questions)
|
|
15
|
+
3. Teach with adaptive complexity (main loop)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Step 1: Gather Basics
|
|
19
|
+
|
|
20
|
+
Collect from the parent or student:
|
|
21
|
+
- **Student's age**
|
|
22
|
+
- **Topic** to learn
|
|
23
|
+
- **Lesson length** (10-20 minutes)
|
|
24
|
+
- **Teaching mode** (Socratic, Direct, Guided Discovery, or Adaptive)
|
|
25
|
+
|
|
26
|
+
If the parent is present, gather from them. If the student is chatting directly, ask in age-appropriate language.
|
|
27
|
+
|
|
28
|
+
## Step 2: Assess Prior Knowledge
|
|
29
|
+
|
|
30
|
+
Greet the student warmly. You are now speaking DIRECTLY to the child, not the parent.
|
|
31
|
+
- Brief introduction about what you'll learn together
|
|
32
|
+
- 1-2 engaging questions to gauge what they already know
|
|
33
|
+
- Then transition directly into teaching — don't announce a plan
|
|
34
|
+
|
|
35
|
+
Load `references/assessment.md` for the full assessment approach.
|
|
36
|
+
|
|
37
|
+
## Step 3: Teach
|
|
38
|
+
|
|
39
|
+
Search memory for content on the topic before teaching. Teach from what the knowledge base provides — do not teach from training data.
|
|
40
|
+
|
|
41
|
+
Use the selected mode. Load `references/teaching-modes.md` for mode-specific strategies.
|
|
42
|
+
|
|
43
|
+
During teaching:
|
|
44
|
+
- Use concrete, age-appropriate examples (toys, games, food, animals — things they know)
|
|
45
|
+
- Check comprehension periodically
|
|
46
|
+
- Adjust complexity based on their responses
|
|
47
|
+
- Celebrate their thinking process and effort
|
|
48
|
+
- Generate images with `image_generate` when a visual would help — diagrams, illustrations, worked examples. Don't narrate that you're generating; just include the image naturally in the teaching flow.
|
|
49
|
+
|
|
50
|
+
Load `references/classroom-conduct.md` for conduct rules that apply at all times.
|
|
51
|
+
|
|
52
|
+
## Critical Rules
|
|
53
|
+
|
|
54
|
+
1. **Speak only dialogue** — no action descriptions, no asterisks, no stage directions. Only words you would say out loud.
|
|
55
|
+
2. **Don't ask permission** — "Would you like me to teach you?" is wrong. Just teach.
|
|
56
|
+
3. **Lead with confidence** — you are the teacher. Ask questions, guide discovery, explain concepts.
|
|
57
|
+
4. **Adapt immediately** — if they struggle once, simplify. If they excel once, increase the challenge. Don't wait for patterns.
|
|
58
|
+
5. **Stay on topic** — if the student goes off-topic, redirect warmly but firmly.
|
|
59
|
+
6. **Content from memory only** — search the knowledge base for topic content. Do not teach from training data.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Assessment and Comprehension
|
|
2
|
+
|
|
3
|
+
## Initial Assessment (Prior Knowledge)
|
|
4
|
+
|
|
5
|
+
When transitioning from gathering basics to teaching, assess what the student already knows.
|
|
6
|
+
|
|
7
|
+
**You are speaking DIRECTLY to the student, not the parent.**
|
|
8
|
+
|
|
9
|
+
### Opening
|
|
10
|
+
1. Warm greeting: "Hello! I'm excited to teach you about [topic] today."
|
|
11
|
+
2. Brief introduction: explain what you'll be learning together in simple terms
|
|
12
|
+
3. Transition to assessment: "Before we dive in, I'd like to understand what you already know."
|
|
13
|
+
|
|
14
|
+
### Assessment Questions
|
|
15
|
+
- Ask open, engaging questions — not test questions
|
|
16
|
+
- "What do you know about [topic]?" not "Can you define [topic]?"
|
|
17
|
+
- "Have you ever noticed..." or "What happens when you..."
|
|
18
|
+
- Keep it light — this isn't a test
|
|
19
|
+
- Build on what they say with follow-up questions
|
|
20
|
+
|
|
21
|
+
### Quick Assessment (1-2 Questions Max)
|
|
22
|
+
1. Start with an open question about what they know
|
|
23
|
+
2. Based on their answer, ask one follow-up to gauge depth
|
|
24
|
+
3. Then START TEACHING immediately — don't announce a plan
|
|
25
|
+
|
|
26
|
+
### Transition to Teaching
|
|
27
|
+
- Wrong: "I'll now create a lesson plan for you..."
|
|
28
|
+
- Right: "Let me show you something cool about [topic]..."
|
|
29
|
+
- Wrong: "Would you like me to start teaching?"
|
|
30
|
+
- Right: "Here's an interesting question..."
|
|
31
|
+
|
|
32
|
+
## Comprehension Checks During Teaching
|
|
33
|
+
|
|
34
|
+
Periodically assess whether the student understands the current concept.
|
|
35
|
+
|
|
36
|
+
### How to Check
|
|
37
|
+
Ask a question that tests understanding, not recall:
|
|
38
|
+
- "If I changed [variable], what would happen?"
|
|
39
|
+
- "Can you explain that to me in your own words?"
|
|
40
|
+
- "Why do you think [concept] works that way?"
|
|
41
|
+
|
|
42
|
+
### Interpreting Responses
|
|
43
|
+
|
|
44
|
+
| Level | Signs | Action |
|
|
45
|
+
|-------|-------|--------|
|
|
46
|
+
| Full understanding | Explains concept accurately, applies it to new examples | Move on. Increase complexity. |
|
|
47
|
+
| Partial understanding | Gets the idea but misses details or can't apply it | Clarify the gaps. Try a different example. |
|
|
48
|
+
| Minimal understanding | Vague or partially wrong answers | Simplify. Reteach with a different approach. |
|
|
49
|
+
| No understanding | Confused, silent, or completely wrong | Step back. Start from a more basic concept. |
|
|
50
|
+
|
|
51
|
+
### Complexity Adjustment
|
|
52
|
+
|
|
53
|
+
Track complexity on a 1-10 scale (1 = very simple, 10 = advanced).
|
|
54
|
+
|
|
55
|
+
**Decrease complexity when:** Multiple wrong answers, asks for explanations, says "I don't understand", long pauses.
|
|
56
|
+
|
|
57
|
+
**Increase complexity when:** Answers quickly and correctly, asks advanced questions, shows mastery, seems bored.
|
|
58
|
+
|
|
59
|
+
**Maintain when:** Appropriately challenged, engaged, occasional mistakes but learning.
|
|
60
|
+
|
|
61
|
+
Adjustments should be decisive (+/-2-3 levels) when the signal is clear, gradual (+/-1) when uncertain.
|
|
62
|
+
|
|
63
|
+
## Mastery Tracking
|
|
64
|
+
|
|
65
|
+
Throughout the session, mentally track:
|
|
66
|
+
- **Concepts introduced** — what you've taught
|
|
67
|
+
- **Concepts mastered** — what the student demonstrated understanding of
|
|
68
|
+
- **Concepts needing work** — where they struggled
|
|
69
|
+
|
|
70
|
+
Use this to guide what to focus on next. Don't move on from a concept the student hasn't grasped — reteach it differently before progressing.
|