@soulcraft/kits 1.0.0
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/kits/ai-content-studio/kit.json +358 -0
- package/kits/api-documentation/kit.json +358 -0
- package/kits/api-documentation/skills/api-examples/SKILL.md +176 -0
- package/kits/api-documentation/skills/api-review/SKILL.md +35 -0
- package/kits/api-documentation/skills/api-versioning/SKILL.md +156 -0
- package/kits/api-documentation/skills/create-code-examples/SKILL.md +42 -0
- package/kits/api-documentation/skills/define-resource/SKILL.md +39 -0
- package/kits/api-documentation/skills/document-auth/SKILL.md +39 -0
- package/kits/api-documentation/skills/document-endpoint/SKILL.md +40 -0
- package/kits/api-documentation/skills/kit-expertise/SKILL.md +78 -0
- package/kits/api-documentation/skills/openapi-spec/SKILL.md +174 -0
- package/kits/axe-house/kit.json +931 -0
- package/kits/axe-house/skills/axe-expertise/SKILL.md +259 -0
- package/kits/axe-house/skills/blog-draft/SKILL.md +147 -0
- package/kits/axe-house/skills/booking-digest/SKILL.md +188 -0
- package/kits/axe-house/skills/customer-insights/SKILL.md +215 -0
- package/kits/axe-house/skills/demand-forecast/SKILL.md +183 -0
- package/kits/axe-house/skills/email-campaign/SKILL.md +135 -0
- package/kits/axe-house/skills/experience-copy/SKILL.md +142 -0
- package/kits/axe-house/skills/guest-letter/SKILL.md +171 -0
- package/kits/axe-house/skills/inventory-health/SKILL.md +234 -0
- package/kits/axe-house/skills/league-manager/SKILL.md +264 -0
- package/kits/axe-house/skills/revenue-report/SKILL.md +240 -0
- package/kits/axe-house/skills/safety-briefing/SKILL.md +248 -0
- package/kits/axe-house/skills/social-calendar/SKILL.md +203 -0
- package/kits/axe-house/skills/staff-briefing/SKILL.md +231 -0
- package/kits/axe-house/skills/venue-data-model/SKILL.md +225 -0
- package/kits/blog-series/kit.json +363 -0
- package/kits/blog-series/skills/content-hooks/SKILL.md +158 -0
- package/kits/blog-series/skills/headline-brainstorm/SKILL.md +40 -0
- package/kits/blog-series/skills/kit-expertise/SKILL.md +78 -0
- package/kits/blog-series/skills/repurpose-content/SKILL.md +40 -0
- package/kits/blog-series/skills/seo-review/SKILL.md +41 -0
- package/kits/blog-series/skills/seo-writing/SKILL.md +135 -0
- package/kits/blog-series/skills/series-audit/SKILL.md +36 -0
- package/kits/blog-series/skills/write-post-outline/SKILL.md +42 -0
- package/kits/business-plan/kit.json +437 -0
- package/kits/business-plan/skills/competitor-analysis/SKILL.md +34 -0
- package/kits/business-plan/skills/financial-modeling/SKILL.md +180 -0
- package/kits/business-plan/skills/financial-projections/SKILL.md +42 -0
- package/kits/business-plan/skills/kit-expertise/SKILL.md +101 -0
- package/kits/business-plan/skills/market-analysis/SKILL.md +155 -0
- package/kits/business-plan/skills/market-research/SKILL.md +35 -0
- package/kits/business-plan/skills/sba-compliance/SKILL.md +163 -0
- package/kits/business-plan/skills/swot-analysis/SKILL.md +36 -0
- package/kits/canvas-and-corks/kit.json +910 -0
- package/kits/canvas-and-corks/skills/blog-draft/SKILL.md +160 -0
- package/kits/canvas-and-corks/skills/booking-digest/SKILL.md +147 -0
- package/kits/canvas-and-corks/skills/class-description/SKILL.md +53 -0
- package/kits/canvas-and-corks/skills/class-roster/SKILL.md +163 -0
- package/kits/canvas-and-corks/skills/customer-insights/SKILL.md +174 -0
- package/kits/canvas-and-corks/skills/demand-forecast/SKILL.md +191 -0
- package/kits/canvas-and-corks/skills/email-campaign/SKILL.md +154 -0
- package/kits/canvas-and-corks/skills/experience-copy/SKILL.md +152 -0
- package/kits/canvas-and-corks/skills/guest-letter/SKILL.md +127 -0
- package/kits/canvas-and-corks/skills/inventory-health/SKILL.md +204 -0
- package/kits/canvas-and-corks/skills/painting-memory/SKILL.md +76 -0
- package/kits/canvas-and-corks/skills/revenue-report/SKILL.md +196 -0
- package/kits/canvas-and-corks/skills/social-calendar/SKILL.md +146 -0
- package/kits/canvas-and-corks/skills/staff-briefing/SKILL.md +134 -0
- package/kits/canvas-and-corks/skills/studio-expertise/SKILL.md +181 -0
- package/kits/canvas-and-corks/skills/venue-data-model/SKILL.md +325 -0
- package/kits/character-relationship-map/kit.json +367 -0
- package/kits/character-relationship-map/skills/ensemble-balance/SKILL.md +189 -0
- package/kits/character-relationship-map/skills/kit-expertise/SKILL.md +83 -0
- package/kits/character-relationship-map/skills/relationship-dynamics/SKILL.md +158 -0
- package/kits/clay-and-co/kit.json +938 -0
- package/kits/clay-and-co/skills/blog-draft/SKILL.md +135 -0
- package/kits/clay-and-co/skills/booking-digest/SKILL.md +163 -0
- package/kits/clay-and-co/skills/customer-insights/SKILL.md +207 -0
- package/kits/clay-and-co/skills/demand-forecast/SKILL.md +166 -0
- package/kits/clay-and-co/skills/email-campaign/SKILL.md +125 -0
- package/kits/clay-and-co/skills/experience-copy/SKILL.md +132 -0
- package/kits/clay-and-co/skills/guest-letter/SKILL.md +104 -0
- package/kits/clay-and-co/skills/inventory-health/SKILL.md +211 -0
- package/kits/clay-and-co/skills/kiln-scheduler/SKILL.md +206 -0
- package/kits/clay-and-co/skills/piece-tracker/SKILL.md +165 -0
- package/kits/clay-and-co/skills/pottery-expertise/SKILL.md +165 -0
- package/kits/clay-and-co/skills/pottery-memory/SKILL.md +119 -0
- package/kits/clay-and-co/skills/revenue-report/SKILL.md +205 -0
- package/kits/clay-and-co/skills/social-calendar/SKILL.md +130 -0
- package/kits/clay-and-co/skills/staff-briefing/SKILL.md +213 -0
- package/kits/clay-and-co/skills/venue-data-model/SKILL.md +230 -0
- package/kits/concept-map/kit.json +353 -0
- package/kits/concept-map/skills/add-concept/SKILL.md +41 -0
- package/kits/concept-map/skills/assess-understanding/SKILL.md +36 -0
- package/kits/concept-map/skills/concept-hierarchy/SKILL.md +148 -0
- package/kits/concept-map/skills/create-learning-map/SKILL.md +42 -0
- package/kits/concept-map/skills/find-cross-links/SKILL.md +34 -0
- package/kits/concept-map/skills/identify-prerequisites/SKILL.md +40 -0
- package/kits/concept-map/skills/kit-expertise/SKILL.md +78 -0
- package/kits/concept-map/skills/relationship-types/SKILL.md +160 -0
- package/kits/content-calendar/kit.json +420 -0
- package/kits/content-calendar/skills/content-strategy/SKILL.md +174 -0
- package/kits/content-calendar/skills/create-brief/SKILL.md +40 -0
- package/kits/content-calendar/skills/generate-ideas/SKILL.md +40 -0
- package/kits/content-calendar/skills/kit-expertise/SKILL.md +100 -0
- package/kits/content-calendar/skills/plan-series/SKILL.md +40 -0
- package/kits/content-calendar/skills/repurpose-content/SKILL.md +38 -0
- package/kits/content-calendar/skills/repurposing/SKILL.md +179 -0
- package/kits/content-calendar/skills/weekly-review/SKILL.md +34 -0
- package/kits/coworking-space/kit.json +1068 -0
- package/kits/escape-vault/kit.json +1028 -0
- package/kits/escape-vault/skills/blog-draft/SKILL.md +157 -0
- package/kits/escape-vault/skills/booking-digest/SKILL.md +151 -0
- package/kits/escape-vault/skills/customer-insights/SKILL.md +185 -0
- package/kits/escape-vault/skills/demand-forecast/SKILL.md +188 -0
- package/kits/escape-vault/skills/email-campaign/SKILL.md +157 -0
- package/kits/escape-vault/skills/escape-expertise/SKILL.md +200 -0
- package/kits/escape-vault/skills/escape-memory/SKILL.md +99 -0
- package/kits/escape-vault/skills/experience-copy/SKILL.md +159 -0
- package/kits/escape-vault/skills/guest-letter/SKILL.md +143 -0
- package/kits/escape-vault/skills/inventory-health/SKILL.md +222 -0
- package/kits/escape-vault/skills/leaderboard-report/SKILL.md +204 -0
- package/kits/escape-vault/skills/revenue-report/SKILL.md +202 -0
- package/kits/escape-vault/skills/room-designer/SKILL.md +182 -0
- package/kits/escape-vault/skills/social-calendar/SKILL.md +148 -0
- package/kits/escape-vault/skills/staff-briefing/SKILL.md +159 -0
- package/kits/escape-vault/skills/venue-data-model/SKILL.md +335 -0
- package/kits/family-tree/kit.json +380 -0
- package/kits/family-tree/skills/add-family-member/SKILL.md +42 -0
- package/kits/family-tree/skills/analyze-relationship/SKILL.md +41 -0
- package/kits/family-tree/skills/export-gedcom/SKILL.md +34 -0
- package/kits/family-tree/skills/genealogy-research/SKILL.md +188 -0
- package/kits/family-tree/skills/kit-expertise/SKILL.md +107 -0
- package/kits/family-tree/skills/record-oral-history/SKILL.md +43 -0
- package/kits/family-tree/skills/relationship-mapping/SKILL.md +171 -0
- package/kits/family-tree/skills/research-ancestor/SKILL.md +43 -0
- package/kits/farkle-dice-game/kit.json +316 -0
- package/kits/farkle-dice-game/skills/kit-expertise/SKILL.md +137 -0
- package/kits/franchise-ops/kit.json +326 -0
- package/kits/freelance-portfolio/kit.json +435 -0
- package/kits/game-design-doc/kit.json +353 -0
- package/kits/game-design-doc/skills/balance-system/SKILL.md +40 -0
- package/kits/game-design-doc/skills/create-character/SKILL.md +40 -0
- package/kits/game-design-doc/skills/design-mechanic/SKILL.md +40 -0
- package/kits/game-design-doc/skills/economy-design/SKILL.md +152 -0
- package/kits/game-design-doc/skills/game-mechanics/SKILL.md +141 -0
- package/kits/game-design-doc/skills/ideate-features/SKILL.md +36 -0
- package/kits/game-design-doc/skills/kit-expertise/SKILL.md +78 -0
- package/kits/game-design-doc/skills/playtest-feedback/SKILL.md +142 -0
- package/kits/game-design-doc/skills/review-gdd/SKILL.md +33 -0
- package/kits/gather-and-grill/kit.json +966 -0
- package/kits/gather-and-grill/skills/blog-draft/SKILL.md +120 -0
- package/kits/gather-and-grill/skills/booking-digest/SKILL.md +171 -0
- package/kits/gather-and-grill/skills/cooking-memory/SKILL.md +100 -0
- package/kits/gather-and-grill/skills/culinary-expertise/SKILL.md +180 -0
- package/kits/gather-and-grill/skills/customer-insights/SKILL.md +184 -0
- package/kits/gather-and-grill/skills/demand-forecast/SKILL.md +200 -0
- package/kits/gather-and-grill/skills/email-campaign/SKILL.md +97 -0
- package/kits/gather-and-grill/skills/experience-copy/SKILL.md +92 -0
- package/kits/gather-and-grill/skills/guest-letter/SKILL.md +98 -0
- package/kits/gather-and-grill/skills/inventory-health/SKILL.md +193 -0
- package/kits/gather-and-grill/skills/menu-planner/SKILL.md +175 -0
- package/kits/gather-and-grill/skills/recipe-card/SKILL.md +194 -0
- package/kits/gather-and-grill/skills/revenue-report/SKILL.md +245 -0
- package/kits/gather-and-grill/skills/social-calendar/SKILL.md +139 -0
- package/kits/gather-and-grill/skills/staff-briefing/SKILL.md +167 -0
- package/kits/gather-and-grill/skills/venue-data-model/SKILL.md +336 -0
- package/kits/gtd-productivity-system/kit.json +389 -0
- package/kits/gtd-productivity-system/skills/break-down-project/SKILL.md +41 -0
- package/kits/gtd-productivity-system/skills/clarify-task/SKILL.md +42 -0
- package/kits/gtd-productivity-system/skills/gtd-methodology/SKILL.md +185 -0
- package/kits/gtd-productivity-system/skills/inbox-processing/SKILL.md +173 -0
- package/kits/gtd-productivity-system/skills/kit-expertise/SKILL.md +111 -0
- package/kits/gtd-productivity-system/skills/mind-sweep/SKILL.md +35 -0
- package/kits/gtd-productivity-system/skills/process-inbox/SKILL.md +40 -0
- package/kits/gtd-productivity-system/skills/weekly-review/SKILL.md +197 -0
- package/kits/gym-fitness/kit.json +1037 -0
- package/kits/interactive-fiction/kit.json +471 -0
- package/kits/invoice-generator/kit.json +466 -0
- package/kits/loyalty-program/kit.json +323 -0
- package/kits/marketing-plan/kit.json +417 -0
- package/kits/marketing-plan/skills/allocate-budget/SKILL.md +34 -0
- package/kits/marketing-plan/skills/campaign-metrics/SKILL.md +184 -0
- package/kits/marketing-plan/skills/channel-strategy/SKILL.md +156 -0
- package/kits/marketing-plan/skills/content-calendar/SKILL.md +34 -0
- package/kits/marketing-plan/skills/create-persona/SKILL.md +40 -0
- package/kits/marketing-plan/skills/kit-expertise/SKILL.md +109 -0
- package/kits/marketing-plan/skills/measure-performance/SKILL.md +34 -0
- package/kits/marketing-plan/skills/plan-campaign/SKILL.md +41 -0
- package/kits/marketing-site/kit.json +230 -0
- package/kits/marketing-site/skills/add-page/SKILL.md +28 -0
- package/kits/marketing-site/skills/add-section/SKILL.md +29 -0
- package/kits/marketing-site/skills/change-colors/SKILL.md +24 -0
- package/kits/marketing-site/skills/conversion-copy/SKILL.md +152 -0
- package/kits/marketing-site/skills/export-deploy/SKILL.md +24 -0
- package/kits/marketing-site/skills/kit-expertise/SKILL.md +77 -0
- package/kits/marketing-site/skills/landing-page/SKILL.md +156 -0
- package/kits/match-3-puzzle/kit.json +245 -0
- package/kits/match-3-puzzle/skills/kit-expertise/SKILL.md +96 -0
- package/kits/mind-map/kit.json +355 -0
- package/kits/mind-map/skills/add-branch/SKILL.md +40 -0
- package/kits/mind-map/skills/brainstorm-topic/SKILL.md +41 -0
- package/kits/mind-map/skills/branch-expansion/SKILL.md +181 -0
- package/kits/mind-map/skills/find-connections/SKILL.md +34 -0
- package/kits/mind-map/skills/kit-expertise/SKILL.md +78 -0
- package/kits/mind-map/skills/organize-map/SKILL.md +35 -0
- package/kits/mind-map/skills/radiant-thinking/SKILL.md +184 -0
- package/kits/mind-map/skills/summarize-map/SKILL.md +34 -0
- package/kits/music-collection/kit.json +403 -0
- package/kits/music-collection/skills/add-album/SKILL.md +44 -0
- package/kits/music-collection/skills/create-playlist/SKILL.md +37 -0
- package/kits/music-collection/skills/explore-artist/SKILL.md +37 -0
- package/kits/music-collection/skills/journal-session/SKILL.md +40 -0
- package/kits/music-collection/skills/kit-expertise/SKILL.md +98 -0
- package/kits/music-collection/skills/music-metadata/SKILL.md +209 -0
- package/kits/music-collection/skills/playlist-curator/SKILL.md +182 -0
- package/kits/music-collection/skills/recommend-similar/SKILL.md +36 -0
- package/kits/music-venue/kit.json +986 -0
- package/kits/novel-writing-system/kit.json +481 -0
- package/kits/novel-writing-system/skills/character-arc/SKILL.md +164 -0
- package/kits/novel-writing-system/skills/develop-character-arc/SKILL.md +42 -0
- package/kits/novel-writing-system/skills/kit-expertise/SKILL.md +84 -0
- package/kits/novel-writing-system/skills/outline-review/SKILL.md +34 -0
- package/kits/novel-writing-system/skills/plot-doctor/SKILL.md +221 -0
- package/kits/novel-writing-system/skills/plot-hole-check/SKILL.md +35 -0
- package/kits/novel-writing-system/skills/scene-development/SKILL.md +38 -0
- package/kits/novel-writing-system/skills/scene-sequel/SKILL.md +162 -0
- package/kits/novel-writing-system/skills/worldbuilding-session/SKILL.md +40 -0
- package/kits/organization-chart/kit.json +349 -0
- package/kits/organization-chart/skills/add-role/SKILL.md +41 -0
- package/kits/organization-chart/skills/analyze-span/SKILL.md +34 -0
- package/kits/organization-chart/skills/create-raci/SKILL.md +42 -0
- package/kits/organization-chart/skills/kit-expertise/SKILL.md +78 -0
- package/kits/organization-chart/skills/org-design/SKILL.md +188 -0
- package/kits/organization-chart/skills/org-health-check/SKILL.md +35 -0
- package/kits/organization-chart/skills/plan-reorg/SKILL.md +42 -0
- package/kits/organization-chart/skills/role-definition/SKILL.md +180 -0
- package/kits/paws-and-pour/kit.json +969 -0
- package/kits/paws-and-pour/skills/adoption-report/SKILL.md +273 -0
- package/kits/paws-and-pour/skills/animal-profile/SKILL.md +206 -0
- package/kits/paws-and-pour/skills/blog-draft/SKILL.md +137 -0
- package/kits/paws-and-pour/skills/booking-digest/SKILL.md +251 -0
- package/kits/paws-and-pour/skills/cafe-expertise/SKILL.md +218 -0
- package/kits/paws-and-pour/skills/cafe-memory/SKILL.md +114 -0
- package/kits/paws-and-pour/skills/customer-insights/SKILL.md +216 -0
- package/kits/paws-and-pour/skills/demand-forecast/SKILL.md +200 -0
- package/kits/paws-and-pour/skills/email-campaign/SKILL.md +154 -0
- package/kits/paws-and-pour/skills/experience-copy/SKILL.md +139 -0
- package/kits/paws-and-pour/skills/guest-letter/SKILL.md +183 -0
- package/kits/paws-and-pour/skills/inventory-health/SKILL.md +213 -0
- package/kits/paws-and-pour/skills/revenue-report/SKILL.md +273 -0
- package/kits/paws-and-pour/skills/social-calendar/SKILL.md +183 -0
- package/kits/paws-and-pour/skills/staff-briefing/SKILL.md +223 -0
- package/kits/paws-and-pour/skills/venue-data-model/SKILL.md +260 -0
- package/kits/persona-driven-strategy/kit.json +352 -0
- package/kits/persona-driven-strategy/skills/empathy-mapping/SKILL.md +221 -0
- package/kits/persona-driven-strategy/skills/journey-mapping/SKILL.md +219 -0
- package/kits/persona-driven-strategy/skills/kit-expertise/SKILL.md +81 -0
- package/kits/persona-driven-strategy/skills/persona-development/SKILL.md +189 -0
- package/kits/personal-crm/kit.json +373 -0
- package/kits/personal-crm/skills/add-contact/SKILL.md +42 -0
- package/kits/personal-crm/skills/connect-contacts/SKILL.md +41 -0
- package/kits/personal-crm/skills/find-dormant/SKILL.md +35 -0
- package/kits/personal-crm/skills/kit-expertise/SKILL.md +82 -0
- package/kits/personal-crm/skills/log-interaction/SKILL.md +43 -0
- package/kits/personal-crm/skills/network-analysis/SKILL.md +161 -0
- package/kits/personal-crm/skills/relationship-insights/SKILL.md +153 -0
- package/kits/personal-wiki/kit.json +322 -0
- package/kits/personal-wiki/skills/kit-expertise/SKILL.md +81 -0
- package/kits/personal-wiki/skills/orphan-finder/SKILL.md +155 -0
- package/kits/personal-wiki/skills/wiki-structure/SKILL.md +179 -0
- package/kits/petal-press/kit.json +996 -0
- package/kits/petal-press/skills/arrangement-memory/SKILL.md +143 -0
- package/kits/petal-press/skills/blog-draft/SKILL.md +167 -0
- package/kits/petal-press/skills/booking-digest/SKILL.md +196 -0
- package/kits/petal-press/skills/care-card/SKILL.md +173 -0
- package/kits/petal-press/skills/customer-insights/SKILL.md +213 -0
- package/kits/petal-press/skills/demand-forecast/SKILL.md +203 -0
- package/kits/petal-press/skills/email-campaign/SKILL.md +204 -0
- package/kits/petal-press/skills/experience-copy/SKILL.md +184 -0
- package/kits/petal-press/skills/floral-expertise/SKILL.md +244 -0
- package/kits/petal-press/skills/guest-letter/SKILL.md +153 -0
- package/kits/petal-press/skills/inventory-health/SKILL.md +201 -0
- package/kits/petal-press/skills/revenue-report/SKILL.md +219 -0
- package/kits/petal-press/skills/seasonal-guide/SKILL.md +238 -0
- package/kits/petal-press/skills/social-calendar/SKILL.md +217 -0
- package/kits/petal-press/skills/staff-briefing/SKILL.md +217 -0
- package/kits/petal-press/skills/venue-data-model/SKILL.md +226 -0
- package/kits/pitch-deck/kit.json +416 -0
- package/kits/pitch-deck/skills/calculate-market-size/SKILL.md +41 -0
- package/kits/pitch-deck/skills/develop-problem-slide/SKILL.md +39 -0
- package/kits/pitch-deck/skills/investor-qa/SKILL.md +182 -0
- package/kits/pitch-deck/skills/investor-qa-prep/SKILL.md +36 -0
- package/kits/pitch-deck/skills/kit-expertise/SKILL.md +112 -0
- package/kits/pitch-deck/skills/pitch-structure/SKILL.md +186 -0
- package/kits/pitch-deck/skills/practice-pitch/SKILL.md +36 -0
- package/kits/podcast-series/kit.json +324 -0
- package/kits/podcast-series/skills/audience-growth/SKILL.md +38 -0
- package/kits/podcast-series/skills/create-guest-profile/SKILL.md +42 -0
- package/kits/podcast-series/skills/episode-structure/SKILL.md +189 -0
- package/kits/podcast-series/skills/guest-research/SKILL.md +167 -0
- package/kits/podcast-series/skills/kit-expertise/SKILL.md +81 -0
- package/kits/podcast-series/skills/plan-episode/SKILL.md +44 -0
- package/kits/podcast-series/skills/prepare-guest/SKILL.md +45 -0
- package/kits/podcast-series/skills/show-notes/SKILL.md +182 -0
- package/kits/podcast-series/skills/write-show-notes/SKILL.md +43 -0
- package/kits/pour-house/kit.json +912 -0
- package/kits/pour-house/skills/blog-draft/SKILL.md +138 -0
- package/kits/pour-house/skills/booking-digest/SKILL.md +151 -0
- package/kits/pour-house/skills/cellar-report/SKILL.md +251 -0
- package/kits/pour-house/skills/customer-insights/SKILL.md +184 -0
- package/kits/pour-house/skills/demand-forecast/SKILL.md +156 -0
- package/kits/pour-house/skills/email-campaign/SKILL.md +130 -0
- package/kits/pour-house/skills/experience-copy/SKILL.md +125 -0
- package/kits/pour-house/skills/guest-letter/SKILL.md +136 -0
- package/kits/pour-house/skills/inventory-health/SKILL.md +159 -0
- package/kits/pour-house/skills/pour-memory/SKILL.md +89 -0
- package/kits/pour-house/skills/revenue-report/SKILL.md +232 -0
- package/kits/pour-house/skills/social-calendar/SKILL.md +140 -0
- package/kits/pour-house/skills/sommelier-expertise/SKILL.md +324 -0
- package/kits/pour-house/skills/staff-briefing/SKILL.md +176 -0
- package/kits/pour-house/skills/tasting-notes/SKILL.md +179 -0
- package/kits/pour-house/skills/venue-data-model/SKILL.md +323 -0
- package/kits/presentation/kit.json +296 -0
- package/kits/product-requirements-doc/kit.json +365 -0
- package/kits/product-requirements-doc/skills/acceptance-criteria/SKILL.md +219 -0
- package/kits/product-requirements-doc/skills/create-user-story/SKILL.md +43 -0
- package/kits/product-requirements-doc/skills/define-success-metrics/SKILL.md +41 -0
- package/kits/product-requirements-doc/skills/kit-expertise/SKILL.md +81 -0
- package/kits/product-requirements-doc/skills/prd-review/SKILL.md +39 -0
- package/kits/product-requirements-doc/skills/prd-structure/SKILL.md +206 -0
- package/kits/product-requirements-doc/skills/prioritize-features/SKILL.md +43 -0
- package/kits/product-requirements-doc/skills/synthesize-research/SKILL.md +43 -0
- package/kits/product-requirements-doc/skills/user-stories/SKILL.md +198 -0
- package/kits/project-timeline/kit.json +367 -0
- package/kits/project-timeline/skills/add-milestone/SKILL.md +44 -0
- package/kits/project-timeline/skills/add-task/SKILL.md +43 -0
- package/kits/project-timeline/skills/assess-risks/SKILL.md +39 -0
- package/kits/project-timeline/skills/dependency-analysis/SKILL.md +176 -0
- package/kits/project-timeline/skills/identify-critical-path/SKILL.md +37 -0
- package/kits/project-timeline/skills/kit-expertise/SKILL.md +81 -0
- package/kits/project-timeline/skills/milestone-planning/SKILL.md +169 -0
- package/kits/project-timeline/skills/status-update/SKILL.md +39 -0
- package/kits/reading-tracker/kit.json +368 -0
- package/kits/reading-tracker/skills/add-book/SKILL.md +32 -0
- package/kits/reading-tracker/skills/book-connections/SKILL.md +161 -0
- package/kits/reading-tracker/skills/kit-expertise/SKILL.md +72 -0
- package/kits/reading-tracker/skills/log-progress/SKILL.md +29 -0
- package/kits/reading-tracker/skills/reading-insights/SKILL.md +179 -0
- package/kits/reading-tracker/skills/save-quote/SKILL.md +30 -0
- package/kits/recipe-manager/kit.json +376 -0
- package/kits/recipe-manager/skills/add-recipe/SKILL.md +33 -0
- package/kits/recipe-manager/skills/generate-shopping-list/SKILL.md +27 -0
- package/kits/recipe-manager/skills/ingredient-substitutions/SKILL.md +157 -0
- package/kits/recipe-manager/skills/kit-expertise/SKILL.md +72 -0
- package/kits/recipe-manager/skills/meal-planning/SKILL.md +184 -0
- package/kits/recipe-manager/skills/plan-meal/SKILL.md +31 -0
- package/kits/recipe-manager/skills/scaling-recipes/SKILL.md +183 -0
- package/kits/saas-app/kit.json +405 -0
- package/kits/saas-app/skills/churn-analysis/SKILL.md +219 -0
- package/kits/saas-app/skills/onboarding-flow/SKILL.md +217 -0
- package/kits/saas-app/skills/pricing-model/SKILL.md +192 -0
- package/kits/saas-app/skills/saas-expertise/SKILL.md +95 -0
- package/kits/salon-barbershop/kit.json +1021 -0
- package/kits/screenplay-writing/kit.json +412 -0
- package/kits/screenplay-writing/skills/analyze-scene/SKILL.md +42 -0
- package/kits/screenplay-writing/skills/beat-sheet/SKILL.md +134 -0
- package/kits/screenplay-writing/skills/create-scene-card/SKILL.md +46 -0
- package/kits/screenplay-writing/skills/develop-character/SKILL.md +43 -0
- package/kits/screenplay-writing/skills/generate-beat-sheet/SKILL.md +49 -0
- package/kits/screenplay-writing/skills/kit-expertise/SKILL.md +90 -0
- package/kits/screenplay-writing/skills/scene-analysis/SKILL.md +164 -0
- package/kits/screenplay-writing/skills/screenplay-format/SKILL.md +108 -0
- package/kits/social-media-manager/kit.json +476 -0
- package/kits/teacher-lesson-plan/kit.json +410 -0
- package/kits/teacher-lesson-plan/skills/assessment-design/SKILL.md +162 -0
- package/kits/teacher-lesson-plan/skills/blooms-taxonomy/SKILL.md +139 -0
- package/kits/teacher-lesson-plan/skills/create-lesson/SKILL.md +34 -0
- package/kits/teacher-lesson-plan/skills/design-unit/SKILL.md +28 -0
- package/kits/teacher-lesson-plan/skills/differentiate-lesson/SKILL.md +28 -0
- package/kits/teacher-lesson-plan/skills/differentiation/SKILL.md +180 -0
- package/kits/teacher-lesson-plan/skills/kit-expertise/SKILL.md +96 -0
- package/kits/teacher-lesson-plan/skills/schedule-lesson/SKILL.md +31 -0
- package/kits/technical-specification/kit.json +369 -0
- package/kits/technical-specification/skills/architecture-decision/SKILL.md +42 -0
- package/kits/technical-specification/skills/architecture-decisions/SKILL.md +180 -0
- package/kits/technical-specification/skills/data-model-design/SKILL.md +43 -0
- package/kits/technical-specification/skills/data-modeling/SKILL.md +159 -0
- package/kits/technical-specification/skills/define-component/SKILL.md +43 -0
- package/kits/technical-specification/skills/kit-expertise/SKILL.md +81 -0
- package/kits/technical-specification/skills/requirements-analysis/SKILL.md +42 -0
- package/kits/technical-specification/skills/security-review/SKILL.md +170 -0
- package/kits/technical-specification/skills/spec-review/SKILL.md +39 -0
- package/kits/wanderlands/kit.json +399 -0
- package/kits/wanderlands/skills/kit-expertise/SKILL.md +376 -0
- package/kits/web-application/kit.json +257 -0
- package/kits/web-application/skills/kit-expertise/SKILL.md +211 -0
- package/kits/wicks-and-whiskers/kit.json +1267 -0
- package/kits/wicks-and-whiskers/skills/blog-draft/SKILL.md +145 -0
- package/kits/wicks-and-whiskers/skills/booking-digest/SKILL.md +142 -0
- package/kits/wicks-and-whiskers/skills/candle-expertise/SKILL.md +69 -0
- package/kits/wicks-and-whiskers/skills/customer-insights/SKILL.md +176 -0
- package/kits/wicks-and-whiskers/skills/demand-forecast/SKILL.md +159 -0
- package/kits/wicks-and-whiskers/skills/email-campaign/SKILL.md +131 -0
- package/kits/wicks-and-whiskers/skills/experience-copy/SKILL.md +135 -0
- package/kits/wicks-and-whiskers/skills/guest-letter/SKILL.md +154 -0
- package/kits/wicks-and-whiskers/skills/inventory-health/SKILL.md +185 -0
- package/kits/wicks-and-whiskers/skills/kitten-profile/SKILL.md +159 -0
- package/kits/wicks-and-whiskers/skills/memory-narrative/SKILL.md +71 -0
- package/kits/wicks-and-whiskers/skills/revenue-report/SKILL.md +197 -0
- package/kits/wicks-and-whiskers/skills/social-calendar/SKILL.md +161 -0
- package/kits/wicks-and-whiskers/skills/staff-briefing/SKILL.md +174 -0
- package/kits/wicks-and-whiskers/skills/venue-data-model/SKILL.md +228 -0
- package/kits/world-building/kit.json +497 -0
- package/kits/world-building/skills/consistency-check/SKILL.md +179 -0
- package/kits/world-building/skills/create-character/SKILL.md +44 -0
- package/kits/world-building/skills/create-faction/SKILL.md +44 -0
- package/kits/world-building/skills/create-location/SKILL.md +44 -0
- package/kits/world-building/skills/create-timeline/SKILL.md +39 -0
- package/kits/world-building/skills/culture-builder/SKILL.md +171 -0
- package/kits/world-building/skills/design-magic-system/SKILL.md +38 -0
- package/kits/world-building/skills/kit-expertise/SKILL.md +110 -0
- package/kits/world-building/skills/magic-systems/SKILL.md +161 -0
- package/kits/youtube-content-plan/kit.json +346 -0
- package/kits/youtube-content-plan/skills/analytics-insights/SKILL.md +166 -0
- package/kits/youtube-content-plan/skills/analyze-performance/SKILL.md +43 -0
- package/kits/youtube-content-plan/skills/develop-video-idea/SKILL.md +45 -0
- package/kits/youtube-content-plan/skills/generate-ideas/SKILL.md +42 -0
- package/kits/youtube-content-plan/skills/kit-expertise/SKILL.md +81 -0
- package/kits/youtube-content-plan/skills/optimize-metadata/SKILL.md +43 -0
- package/kits/youtube-content-plan/skills/script-writing/SKILL.md +180 -0
- package/kits/youtube-content-plan/skills/write-script/SKILL.md +44 -0
- package/kits/youtube-content-plan/skills/youtube-seo/SKILL.md +172 -0
- package/package.json +43 -0
- package/src/index.ts +35 -0
- package/src/kits/ai-content-studio.ts +377 -0
- package/src/kits/api-documentation.ts +352 -0
- package/src/kits/axe-house.ts +949 -0
- package/src/kits/blog-series.ts +357 -0
- package/src/kits/business-plan.ts +406 -0
- package/src/kits/canvas-and-corks.ts +928 -0
- package/src/kits/character-relationship-map.ts +368 -0
- package/src/kits/clay-and-co.ts +956 -0
- package/src/kits/concept-map.ts +354 -0
- package/src/kits/content-calendar.ts +399 -0
- package/src/kits/coworking-space.ts +1084 -0
- package/src/kits/escape-vault.ts +1046 -0
- package/src/kits/family-tree.ts +381 -0
- package/src/kits/farkle-dice-game.ts +318 -0
- package/src/kits/franchise-ops.ts +345 -0
- package/src/kits/freelance-portfolio.ts +453 -0
- package/src/kits/game-design-doc.ts +353 -0
- package/src/kits/gather-and-grill.ts +984 -0
- package/src/kits/gtd-productivity-system.ts +389 -0
- package/src/kits/gym-fitness.ts +1053 -0
- package/src/kits/index.ts +76 -0
- package/src/kits/interactive-fiction.ts +489 -0
- package/src/kits/invoice-generator.ts +484 -0
- package/src/kits/loyalty-program.ts +342 -0
- package/src/kits/marketing-plan.ts +398 -0
- package/src/kits/marketing-site.ts +248 -0
- package/src/kits/match-3-puzzle.ts +248 -0
- package/src/kits/mind-map.ts +356 -0
- package/src/kits/music-collection.ts +404 -0
- package/src/kits/music-venue.ts +1002 -0
- package/src/kits/novel-writing-system.ts +461 -0
- package/src/kits/organization-chart.ts +350 -0
- package/src/kits/paws-and-pour.ts +987 -0
- package/src/kits/persona-driven-strategy.ts +345 -0
- package/src/kits/personal-crm.ts +391 -0
- package/src/kits/personal-wiki.ts +323 -0
- package/src/kits/petal-press.ts +1014 -0
- package/src/kits/pitch-deck.ts +395 -0
- package/src/kits/podcast-series.ts +324 -0
- package/src/kits/pour-house.ts +930 -0
- package/src/kits/presentation.ts +276 -0
- package/src/kits/product-requirements-doc.ts +359 -0
- package/src/kits/project-timeline.ts +368 -0
- package/src/kits/reading-tracker.ts +368 -0
- package/src/kits/recipe-manager.ts +376 -0
- package/src/kits/saas-app.ts +423 -0
- package/src/kits/salon-barbershop.ts +1037 -0
- package/src/kits/screenplay-writing.ts +412 -0
- package/src/kits/social-media-manager.ts +494 -0
- package/src/kits/teacher-lesson-plan.ts +410 -0
- package/src/kits/technical-specification.ts +363 -0
- package/src/kits/wanderlands.ts +401 -0
- package/src/kits/web-application.ts +275 -0
- package/src/kits/wicks-and-whiskers.ts +1285 -0
- package/src/kits/world-building.ts +476 -0
- package/src/kits/youtube-content-plan.ts +339 -0
- package/src/registry.ts +60 -0
- package/src/skills/api-documentation/index.ts +47 -0
- package/src/skills/axe-house/index.ts +71 -0
- package/src/skills/blog-series/index.ts +43 -0
- package/src/skills/business-plan/index.ts +43 -0
- package/src/skills/canvas-and-corks/index.ts +75 -0
- package/src/skills/character-relationship-map/index.ts +23 -0
- package/src/skills/clay-and-co/index.ts +75 -0
- package/src/skills/concept-map/index.ts +43 -0
- package/src/skills/content-calendar/index.ts +43 -0
- package/src/skills/escape-vault/index.ts +75 -0
- package/src/skills/family-tree/index.ts +43 -0
- package/src/skills/farkle-dice-game/index.ts +15 -0
- package/src/skills/game-design-doc/index.ts +47 -0
- package/src/skills/gather-and-grill/index.ts +75 -0
- package/src/skills/gtd-productivity-system/index.ts +43 -0
- package/src/skills/index.ts +109 -0
- package/src/skills/marketing-plan/index.ts +43 -0
- package/src/skills/marketing-site/index.ts +39 -0
- package/src/skills/match-3-puzzle/index.ts +15 -0
- package/src/skills/mind-map/index.ts +43 -0
- package/src/skills/music-collection/index.ts +43 -0
- package/src/skills/novel-writing-system/index.ts +47 -0
- package/src/skills/organization-chart/index.ts +43 -0
- package/src/skills/paws-and-pour/index.ts +75 -0
- package/src/skills/persona-driven-strategy/index.ts +27 -0
- package/src/skills/personal-crm/index.ts +39 -0
- package/src/skills/personal-wiki/index.ts +23 -0
- package/src/skills/petal-press/index.ts +75 -0
- package/src/skills/pitch-deck/index.ts +39 -0
- package/src/skills/podcast-series/index.ts +47 -0
- package/src/skills/pour-house/index.ts +75 -0
- package/src/skills/product-requirements-doc/index.ts +47 -0
- package/src/skills/project-timeline/index.ts +43 -0
- package/src/skills/reading-tracker/index.ts +35 -0
- package/src/skills/recipe-manager/index.ts +39 -0
- package/src/skills/saas-app/index.ts +27 -0
- package/src/skills/screenplay-writing/index.ts +43 -0
- package/src/skills/teacher-lesson-plan/index.ts +43 -0
- package/src/skills/technical-specification/index.ts +47 -0
- package/src/skills/wanderlands/index.ts +15 -0
- package/src/skills/web-application/index.ts +15 -0
- package/src/skills/wicks-and-whiskers/index.ts +71 -0
- package/src/skills/world-building/index.ts +47 -0
- package/src/skills/youtube-content-plan/index.ts +47 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: guest-letter
|
|
3
|
+
name: Guest Follow-Up Letter
|
|
4
|
+
description: Writes a personalized 150–250 word post-session thank-you email referencing the guest's specific session type, best score, throw style, coach notes, and loyalty points earned — in the brand's energetic, coach-like voice.
|
|
5
|
+
type: invocable
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
requiresVision: false
|
|
8
|
+
requiresData: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Guest Follow-Up Letter
|
|
12
|
+
|
|
13
|
+
You write the post-session follow-up email that guests receive after completing a session at {{businessName}}. It is energetic, specific, and reads like a note from a coach who actually remembers them — because the session data behind it does. Every letter must reference real details from the session: throw style, best score, coach notes, team name for league guests.
|
|
14
|
+
|
|
15
|
+
## When to Trigger
|
|
16
|
+
|
|
17
|
+
Invoke this skill when:
|
|
18
|
+
|
|
19
|
+
- A booking is marked as completed / checked out
|
|
20
|
+
- A staff member asks: "Send a thank-you to [booking]"
|
|
21
|
+
- "Follow up with guests from [date]"
|
|
22
|
+
- "Post-session email for booking [number]"
|
|
23
|
+
- Any post-visit guest communication request
|
|
24
|
+
|
|
25
|
+
## Input Data
|
|
26
|
+
|
|
27
|
+
Pull these fields from the booking record and related entities. All filtered by `bookingId` and `locationId`.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Booking record
|
|
31
|
+
const booking = await brain.find({
|
|
32
|
+
type: 'Event',
|
|
33
|
+
where: [
|
|
34
|
+
{ field: 'metadata.entityType', value: 'booking' },
|
|
35
|
+
{ field: 'metadata.bookingNumber', value: BOOKING_NUMBER },
|
|
36
|
+
{ field: 'metadata.locationId', value: LOCATION_ID }
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
// booking.metadata: { guestCount, date, experienceSlug, totalInCents, checkedIn }
|
|
40
|
+
// booking.data: { partyNames, sessionAttributes, staffNotes }
|
|
41
|
+
|
|
42
|
+
// Session attributes (per-guest fields from session)
|
|
43
|
+
// booking.data.sessionAttributes as:
|
|
44
|
+
// [{ guestName, throwStyle, bestScore, laneNumber, teamName, leagueSeason,
|
|
45
|
+
// competitionFormat, coachNotes }, ...]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// Loyalty points earned on this session
|
|
50
|
+
const loyaltyTx = await brain.find({
|
|
51
|
+
type: 'Measurement',
|
|
52
|
+
where: [
|
|
53
|
+
{ field: 'metadata.entityType', value: 'loyalty-transaction' },
|
|
54
|
+
{ field: 'metadata.reason', value: 'earned' },
|
|
55
|
+
{ field: 'metadata.bookingId', value: booking.id }
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
// loyaltyTx.metadata: { points, customerId }
|
|
59
|
+
|
|
60
|
+
// Customer loyalty account for current tier
|
|
61
|
+
const loyaltyAccount = await brain.find({
|
|
62
|
+
type: 'Person',
|
|
63
|
+
where: [
|
|
64
|
+
{ field: 'metadata.entityType', value: 'loyalty-account' },
|
|
65
|
+
{ field: 'metadata.customerId', value: booking.metadata.customerId }
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
// loyaltyAccount.metadata: { pointsBalance, tier }
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Letter Structure
|
|
72
|
+
|
|
73
|
+
Write a **150–250 word** email. Follow this order of beats — but write it as a flowing letter, not a list. No section headers in the output.
|
|
74
|
+
|
|
75
|
+
### 1. Personalized Opener
|
|
76
|
+
|
|
77
|
+
Address the guest(s) by first name(s). Never "Dear Valued Customer" or "Hi there."
|
|
78
|
+
|
|
79
|
+
If multiple guests: use both first names (e.g., "Marcus and Jordan,").
|
|
80
|
+
If party size > 2 and names are available: use "Marcus, Jordan, and the whole crew —".
|
|
81
|
+
For league guests: reference the team name if available (e.g., "Iron Shoulders —").
|
|
82
|
+
|
|
83
|
+
### 2. Specific Session Callback
|
|
84
|
+
|
|
85
|
+
Reference exactly what happened in the session. Best score, throw style, a coaching breakthrough, competition result, or a memorable moment from coach notes.
|
|
86
|
+
|
|
87
|
+
Good: "That hatchet form in the second half of the session was genuinely impressive — from inconsistent sticks to four bullseyes in a row is a big jump for one hour."
|
|
88
|
+
Good for league: "Season 3, Week 5 — and Iron Shoulders just went 2-1 against a team that's been on a 4-week win streak. The standings are tighter than they look."
|
|
89
|
+
Bad: "We hope you enjoyed your time throwing axes with us."
|
|
90
|
+
|
|
91
|
+
If bestScore is available: "Hitting a [score] in that clutch call takes nerve. You called it, you stuck it."
|
|
92
|
+
|
|
93
|
+
If no session attribute data is available at all, write around it gracefully: "Whatever happened on Lane [number] Thursday night, the marks on the board tell a story."
|
|
94
|
+
|
|
95
|
+
### 3. Technique Note (if coach notes exist)
|
|
96
|
+
|
|
97
|
+
If `coachNotes` is present in session attributes, reference the specific coaching point — the thing they improved or the thing to work on next time. This is what makes the letter feel real.
|
|
98
|
+
|
|
99
|
+
Good: "Your coach noted that your release timing cleaned up significantly in the back half of the session — that's the single hardest adjustment for hatchet throwers. Come back and see if you can make it the default."
|
|
100
|
+
|
|
101
|
+
If no coach notes: skip this beat entirely.
|
|
102
|
+
|
|
103
|
+
### 4. Loyalty Points (if loyalty program active)
|
|
104
|
+
|
|
105
|
+
If points were earned, mention them with current balance and tier. One sentence, brief.
|
|
106
|
+
|
|
107
|
+
Example: "You earned 25 points on this visit, bringing your total to 180 — Bronze tier."
|
|
108
|
+
|
|
109
|
+
If no loyalty account or no points data, omit this beat entirely.
|
|
110
|
+
|
|
111
|
+
### 5. Return Invitation
|
|
112
|
+
|
|
113
|
+
One natural sentence that implies they'll be back, not that they should feel obligated. Match the session type:
|
|
114
|
+
|
|
115
|
+
- Open throw: "Whenever you want to work on that release timing, Lane [number] will be waiting."
|
|
116
|
+
- League: "Week 6 standings update coming {{leagueNights}} — we'll be watching Iron Shoulders."
|
|
117
|
+
- Private party: "If you want to do it again — or if your group wants a rematch — we can set up the same format."
|
|
118
|
+
- Axe 101: "You've got the foundation now. Come back and throw a full session — the difference will be obvious."
|
|
119
|
+
|
|
120
|
+
### 6. Social Share Invite
|
|
121
|
+
|
|
122
|
+
One line. Include the handle.
|
|
123
|
+
|
|
124
|
+
Example: "If you caught your bullseye on video, tag us @{{instagram}} — the good throws deserve an audience."
|
|
125
|
+
|
|
126
|
+
### 7. Sign-Off
|
|
127
|
+
|
|
128
|
+
From a named coach if available (use the staff member who ran the session, from booking or session data). Otherwise: "The {{businessName}} team."
|
|
129
|
+
|
|
130
|
+
## Tone Rules
|
|
131
|
+
|
|
132
|
+
The letter should feel like a note from a coach who actually ran the session and paid attention — not a CRM automation.
|
|
133
|
+
|
|
134
|
+
- Energetic and direct — not corporate, not overly casual
|
|
135
|
+
- Specific to the sport: use correct terminology (bullseye, clutch, hatchet, stick)
|
|
136
|
+
- Short paragraphs. Two to four sentences per beat.
|
|
137
|
+
- If coach notes include something exceptional (a guest who hit their first-ever bullseye, a team that came back from a big deficit, a corporate group where the expected performer got dominated by a quiet colleague), build the emotional center of the letter around it
|
|
138
|
+
- Match energy to the session: a league win letter is competitive and celebratory; a first-timer letter is encouraging; a corporate event letter can acknowledge the team dynamic
|
|
139
|
+
|
|
140
|
+
## Absolute Rules
|
|
141
|
+
|
|
142
|
+
- NEVER: "Dear Valued Customer"
|
|
143
|
+
- NEVER: Generic coaching praise ("great effort today!")
|
|
144
|
+
- NEVER: Hard sell language ("Book now for 10% off!")
|
|
145
|
+
- NEVER: Reference payment amounts or confirmation IDs
|
|
146
|
+
- NEVER: Describe throw style as "your style of throwing" — use the actual term (hatchet, big axe)
|
|
147
|
+
- NEVER: Make up scores or coaching details that aren't in the session data
|
|
148
|
+
|
|
149
|
+
## Example Output
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Marcus and Jordan,
|
|
153
|
+
|
|
154
|
+
That session was one of the better first-time showings we've had in a while. Jordan,
|
|
155
|
+
hitting a 38 on your last set — hatchet, two-hand grip, consistent release point from
|
|
156
|
+
throw 8 onward — that's not beginner form anymore. Marcus, the coach noted your stance
|
|
157
|
+
opened up nicely after the first 20 minutes. The fact that you were sticking 4s and 5s
|
|
158
|
+
by the end of the session is exactly what that adjustment is supposed to produce.
|
|
159
|
+
|
|
160
|
+
Come back with a score target: if Jordan's going to clear 40 in a set, it's going to
|
|
161
|
+
require a consistent clutch call strategy, not just landing rings.
|
|
162
|
+
|
|
163
|
+
You each earned 25 points this visit — 50 combined if you have a joint account.
|
|
164
|
+
Enough to start thinking about Silver.
|
|
165
|
+
|
|
166
|
+
Whenever you're ready to run it back, Lane 4 is open most weekday evenings.
|
|
167
|
+
|
|
168
|
+
If you got the bullseye on video, tag us @{{instagram}}.
|
|
169
|
+
|
|
170
|
+
— Coach Ryan and the {{businessName}} team
|
|
171
|
+
```
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: inventory-health
|
|
3
|
+
name: Inventory Health Check
|
|
4
|
+
description: Analyzes axe throwing venue stock levels with special logic for axe maintenance cycles, target board rotation schedules, and beverage par levels — producing tiered alerts and a prioritized action list.
|
|
5
|
+
type: invocable
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
requiresVision: false
|
|
8
|
+
requiresData: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Inventory Health Check
|
|
12
|
+
|
|
13
|
+
You analyze {{businessName}} inventory with context-specific logic for an axe throwing venue. Axes are not consumed — they are maintained. Targets are consumed over time. Beverages run on standard par logic. Safety equipment requires its own threshold. This skill handles all three models and produces a clear, tiered alert report.
|
|
14
|
+
|
|
15
|
+
## When to Trigger
|
|
16
|
+
|
|
17
|
+
Invoke this skill when someone asks:
|
|
18
|
+
|
|
19
|
+
- "Check inventory"
|
|
20
|
+
- "What needs restocking?"
|
|
21
|
+
- "Which axes are due for sharpening?"
|
|
22
|
+
- "Target board status"
|
|
23
|
+
- "What are we running low on?"
|
|
24
|
+
- "Inventory alert"
|
|
25
|
+
- Also runs automatically as section 4 of the Staff Briefing skill
|
|
26
|
+
|
|
27
|
+
## Inventory Categories at {{businessName}}
|
|
28
|
+
|
|
29
|
+
| Category ID | What It Covers | Tracking Model |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `hatchet` | Throwing hatchets — numbered by ID | Maintenance cycle (sharpen every 50 sessions) |
|
|
32
|
+
| `big-axe` | Big axes — numbered by ID | Maintenance cycle (sharpen every 30 sessions) |
|
|
33
|
+
| `targets` | Target boards (2×10 pine) and mounting hardware | Consumption cycle (flip at ~200 sessions, replace at ~400) |
|
|
34
|
+
| `lane-supplies` | Chalk, markers, scorecards, tape, lane barriers | Standard consumption |
|
|
35
|
+
| `safety` | Safety barriers, floor mats, warning signs, first aid | Count + condition check |
|
|
36
|
+
| `beverages` | Draft beer kegs, canned beverages, wine, non-alcoholic | Standard par level |
|
|
37
|
+
| `retail` | Branded merchandise, gift items | Standard par level |
|
|
38
|
+
| `maintenance` | Sharpening stones, axe oil, handle wrap, wood filler | Standard consumption |
|
|
39
|
+
|
|
40
|
+
## Step 1: Pull Current Stock
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
const inventoryItems = await brain.find({
|
|
44
|
+
type: 'Thing',
|
|
45
|
+
where: [
|
|
46
|
+
{ field: 'metadata.entityType', value: 'inventory-item' },
|
|
47
|
+
{ field: 'metadata.locationId', value: LOCATION_ID }
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
// Each item: { metadata: { name, category, quantity, reorderThreshold, costInCents,
|
|
51
|
+
// lastMaintenanceDate, sessionsSinceMaintenance, locationId } }
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Step 2: Axe Maintenance Logic
|
|
55
|
+
|
|
56
|
+
Axes are tracked individually by ID. They are not "consumed" — they rotate through a maintenance cycle.
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
const hatchets = inventoryItems.filter(i => i.metadata.category === 'hatchet');
|
|
60
|
+
const bigAxes = inventoryItems.filter(i => i.metadata.category === 'big-axe');
|
|
61
|
+
|
|
62
|
+
// Maintenance thresholds (from axe-expertise skill)
|
|
63
|
+
const HATCHET_SHARPEN_INTERVAL = 50; // sessions
|
|
64
|
+
const BIG_AXE_SHARPEN_INTERVAL = 30; // sessions
|
|
65
|
+
const HATCHET_FULL_SERVICE = 200; // sessions
|
|
66
|
+
const BIG_AXE_FULL_SERVICE = 150; // sessions
|
|
67
|
+
|
|
68
|
+
// Flag axes where sessionsSinceMaintenance >= threshold
|
|
69
|
+
const hatchetsDue = hatchets.filter(
|
|
70
|
+
i => (i.metadata.sessionsSinceMaintenance ?? 0) >= HATCHET_SHARPEN_INTERVAL
|
|
71
|
+
);
|
|
72
|
+
const bigAxesDue = bigAxes.filter(
|
|
73
|
+
i => (i.metadata.sessionsSinceMaintenance ?? 0) >= BIG_AXE_SHARPEN_INTERVAL
|
|
74
|
+
);
|
|
75
|
+
const hatchetsFullService = hatchets.filter(
|
|
76
|
+
i => (i.metadata.sessionsSinceMaintenance ?? 0) >= HATCHET_FULL_SERVICE
|
|
77
|
+
);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Axes flagged for maintenance should be pulled from rotation before the first session of the day, not after. Safety equipment past its maintenance threshold is a 🔴 CRITICAL alert.
|
|
81
|
+
|
|
82
|
+
## Step 3: Target Board Logic
|
|
83
|
+
|
|
84
|
+
Target boards are consumed over time through repeated axe impacts.
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const targetBoards = inventoryItems.filter(i => i.metadata.category === 'targets');
|
|
88
|
+
|
|
89
|
+
// Estimate based on session count metadata on each board item
|
|
90
|
+
const BOARD_FLIP_THRESHOLD = 200; // sessions — flip to reverse face
|
|
91
|
+
const BOARD_REPLACE_THRESHOLD = 400; // sessions — replace entirely
|
|
92
|
+
|
|
93
|
+
const boardsToFlip = targetBoards.filter(b => b.metadata.sessionCount >= BOARD_FLIP_THRESHOLD
|
|
94
|
+
&& b.metadata.sessionCount < BOARD_REPLACE_THRESHOLD);
|
|
95
|
+
const boardsToReplace = targetBoards.filter(b => b.metadata.sessionCount >= BOARD_REPLACE_THRESHOLD);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
If session count is not tracked per board, check `metadata.lastRotationDate` and estimate based on average sessions per week. Alert if any board has not been rotated in more than 4 weeks (assuming any operational venue runs 50+ sessions per week).
|
|
99
|
+
|
|
100
|
+
## Step 4: Standard Consumption Rate (Beverages, Lane Supplies, Retail)
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
brain.defineAggregate('weeklyConsumptionByCategory', {
|
|
104
|
+
source: {
|
|
105
|
+
type: 'Measurement',
|
|
106
|
+
where: [
|
|
107
|
+
{ field: 'metadata.entityType', value: 'transaction' },
|
|
108
|
+
{ field: 'metadata.type', value: 'expense' }
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
groupBy: [
|
|
112
|
+
{ field: 'metadata.category' },
|
|
113
|
+
{ field: 'metadata.date', window: 'week' }
|
|
114
|
+
],
|
|
115
|
+
metrics: {
|
|
116
|
+
weeklyCount: { op: 'COUNT' },
|
|
117
|
+
weeklySpend: { op: 'SUM', field: 'metadata.amountInCents' },
|
|
118
|
+
avgPerWeek: { op: 'AVG', field: 'metadata.amountInCents' }
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
const consumption = await brain.find({
|
|
123
|
+
aggregate: 'weeklyConsumptionByCategory',
|
|
124
|
+
where: [
|
|
125
|
+
{ field: 'metadata.locationId', value: LOCATION_ID },
|
|
126
|
+
{ field: 'metadata.date', value: { gte: FOUR_WEEKS_AGO, lte: TODAY } }
|
|
127
|
+
]
|
|
128
|
+
});
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Alert Tiers
|
|
132
|
+
|
|
133
|
+
| Tier | Condition | Action Required |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| 🔴 CRITICAL | Safety equipment below minimum count; axes past full service interval; boards past replace threshold; beverages at zero | Immediate action before opening |
|
|
136
|
+
| 🟡 LOW | Axes due for sharpening (not full service); boards approaching flip threshold; beverages below par; lane supplies running low | Action this week |
|
|
137
|
+
| 🟢 OK | All within safe thresholds | No action needed |
|
|
138
|
+
|
|
139
|
+
## Output Structure
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
### 1. Status Summary
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
Inventory Health — {{locationName}}
|
|
147
|
+
As of: [today's date]
|
|
148
|
+
─────────────────────────────────────────
|
|
149
|
+
🔴 CRITICAL: 1 item (action before opening)
|
|
150
|
+
🟡 LOW: 6 items (order or service this week)
|
|
151
|
+
🟢 OK: 28 items
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 2. Critical Items
|
|
155
|
+
|
|
156
|
+
Items requiring immediate action before any session begins:
|
|
157
|
+
|
|
158
|
+
| Item | Category | Issue | Action Required |
|
|
159
|
+
|---|---|---|---|
|
|
160
|
+
| Safety Mat — Lane 3 | safety | Torn edge — trip hazard | Replace before opening |
|
|
161
|
+
| Big Axe #4 | big-axe | 148 sessions — past full service interval | Pull from rotation immediately |
|
|
162
|
+
|
|
163
|
+
Safety category items are always CRITICAL regardless of days-until-empty logic.
|
|
164
|
+
|
|
165
|
+
### 3. Axe Maintenance Queue
|
|
166
|
+
|
|
167
|
+
List all axes due for sharpening (not yet critical) in order of urgency:
|
|
168
|
+
|
|
169
|
+
| Axe ID | Type | Sessions Since Last Maintenance | Threshold | Status |
|
|
170
|
+
|---|---|---|---|---|
|
|
171
|
+
| Hatchet #7 | Hatchet | 52 | 50 | 🟡 Due for sharpening |
|
|
172
|
+
| Hatchet #12 | Hatchet | 56 | 50 | 🟡 Due for sharpening |
|
|
173
|
+
| Big Axe #2 | Big Axe | 28 | 30 | 🟡 Due next week |
|
|
174
|
+
|
|
175
|
+
**Sharpening action**: Pull from rotation before the day's sessions begin. Return after sharpening is complete. Do not sharpen in-session — remove and replace with a spare.
|
|
176
|
+
|
|
177
|
+
If no axes are due: "All axes within maintenance thresholds."
|
|
178
|
+
|
|
179
|
+
### 4. Target Board Rotation Schedule
|
|
180
|
+
|
|
181
|
+
| Board / Lane | Sessions Used | Flip At | Replace At | Status | Action |
|
|
182
|
+
|---|---|---|---|---|---|
|
|
183
|
+
| Board — Lane 2 | 198 | 200 | 400 | 🟡 Flip this week | Schedule flip before next private party |
|
|
184
|
+
| Board — Lane 6 | 412 | 200 | 400 | 🔴 Replace immediately | Order replacement board |
|
|
185
|
+
| Board — Lane 1 | 87 | 200 | 400 | 🟢 OK | None |
|
|
186
|
+
|
|
187
|
+
If no boards need attention: "All target boards are within rotation thresholds."
|
|
188
|
+
|
|
189
|
+
### 5. Beverage Par Status
|
|
190
|
+
|
|
191
|
+
| Item | Category | In Stock | Par Level | Status |
|
|
192
|
+
|---|---|---|---|---|
|
|
193
|
+
| Pale Ale (1/6 bbl) | beverages | 1 keg | 3 kegs | 🟡 LOW — order this week |
|
|
194
|
+
| IPA (1/2 bbl) | beverages | 2 kegs | 2 kegs | 🟢 OK |
|
|
195
|
+
| Non-Alcoholic Cider | beverages | 4 cans | 24 cans | 🔴 CRITICAL |
|
|
196
|
+
|
|
197
|
+
### 6. Weekly Consumption Rates (Last 4 Weeks)
|
|
198
|
+
|
|
199
|
+
| Category | Avg Weekly Spend | Trend |
|
|
200
|
+
|---|---|---|
|
|
201
|
+
| beverages | $680 / week | +12% vs prior 4 wks |
|
|
202
|
+
| targets | $140 / week | stable |
|
|
203
|
+
| lane-supplies | $48 / week | stable |
|
|
204
|
+
| maintenance | $62 / week | +5% vs prior 4 wks |
|
|
205
|
+
| retail | $110 / week | -8% vs prior 4 wks |
|
|
206
|
+
|
|
207
|
+
A rising beverage trend with low stock is a compounding risk — flag it.
|
|
208
|
+
|
|
209
|
+
### 7. Recommended Action List
|
|
210
|
+
|
|
211
|
+
A consolidated prioritized list of all required actions:
|
|
212
|
+
|
|
213
|
+
| Priority | Item | Action | Urgency |
|
|
214
|
+
|---|---|---|---|
|
|
215
|
+
| 1 | Safety Mat — Lane 3 | Replace torn mat before opening | 🔴 NOW |
|
|
216
|
+
| 2 | Non-Alcoholic Cider | Reorder — stock at critical level | 🔴 TODAY |
|
|
217
|
+
| 3 | Hatchet #7, #12 | Pull from rotation; sharpen and return | 🟡 THIS SESSION |
|
|
218
|
+
| 4 | Board — Lane 6 | Order replacement 2×10 pine board | 🟡 THIS WEEK |
|
|
219
|
+
| 5 | Board — Lane 2 | Schedule flip — before next private party | 🟡 THIS WEEK |
|
|
220
|
+
| 6 | Pale Ale keg | Order 2 additional 1/6 bbl kegs | 🟡 THIS WEEK |
|
|
221
|
+
|
|
222
|
+
Suggested reorder quantities for consumable items: `(reorderThreshold × 2) − currentQuantity`, rounded up to nearest supplier unit.
|
|
223
|
+
|
|
224
|
+
### 8. Axe Count Check
|
|
225
|
+
|
|
226
|
+
Confirm operational readiness:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
Axe Availability Summary
|
|
230
|
+
Total Hatchets: [N] Available: [N-flagged] In Maintenance Queue: [N]
|
|
231
|
+
Total Big Axes: [N] Available: [N-flagged] In Maintenance Queue: [N]
|
|
232
|
+
|
|
233
|
+
Session Readiness: [status — e.g., "Sufficient for all scheduled sessions today" or "Warning: if both flagged hatchets are pulled, open throw capacity is reduced by 2 lanes"]
|
|
234
|
+
```
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: league-manager
|
|
3
|
+
name: League Manager
|
|
4
|
+
description: Manages axe throwing league operations — season scheduling, weekly standings calculation, player stat leaderboards, and playoff bracket generation — using session attribute data stored on League Night bookings.
|
|
5
|
+
type: invocable
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
requiresVision: false
|
|
8
|
+
requiresData: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# League Manager
|
|
12
|
+
|
|
13
|
+
You manage axe throwing league operations for {{businessName}}. When triggered, you pull league session data from Brainy, compute standings and player stats using WATL-style scoring logic, and produce formatted reports for staff, coaches, and league participants.
|
|
14
|
+
|
|
15
|
+
## When to Trigger
|
|
16
|
+
|
|
17
|
+
Invoke this skill when someone asks:
|
|
18
|
+
|
|
19
|
+
- "League standings"
|
|
20
|
+
- "Schedule for this season"
|
|
21
|
+
- "Playoff bracket"
|
|
22
|
+
- "How's our league doing?"
|
|
23
|
+
- "Player leaderboard"
|
|
24
|
+
- "Set up the new season schedule"
|
|
25
|
+
- "Which teams are in playoffs?"
|
|
26
|
+
- Any league management, standings, or scheduling request
|
|
27
|
+
|
|
28
|
+
## League Data Model
|
|
29
|
+
|
|
30
|
+
League data is stored across three entity types in Brainy:
|
|
31
|
+
|
|
32
|
+
### 1. Season Document
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// Each league season is stored as a Document entity
|
|
36
|
+
const season = await brain.find({
|
|
37
|
+
type: 'Document',
|
|
38
|
+
where: [
|
|
39
|
+
{ field: 'metadata.entityType', value: 'league-season' },
|
|
40
|
+
{ field: 'metadata.locationId', value: LOCATION_ID },
|
|
41
|
+
{ field: 'metadata.status', value: 'active' } // or 'completed'
|
|
42
|
+
]
|
|
43
|
+
});
|
|
44
|
+
// season.metadata: { seasonName, startDate, endDate, format, weekCount, teamCount }
|
|
45
|
+
// season.data: { teams: [{ teamName, playerIds: string[] }] }
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. Weekly Match Results
|
|
49
|
+
|
|
50
|
+
Match results are stored as session attributes on League Night booking records:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const leagueBookings = await brain.find({
|
|
54
|
+
type: 'Event',
|
|
55
|
+
where: [
|
|
56
|
+
{ field: 'metadata.entityType', value: 'booking' },
|
|
57
|
+
{ field: 'metadata.experienceSlug', value: 'league-night' },
|
|
58
|
+
{ field: 'metadata.locationId', value: LOCATION_ID },
|
|
59
|
+
{ field: 'metadata.date', value: { gte: season.metadata.startDate,
|
|
60
|
+
lte: season.metadata.endDate } }
|
|
61
|
+
],
|
|
62
|
+
orderBy: 'metadata.date',
|
|
63
|
+
order: 'asc'
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Each booking.data.sessionAttributes contains:
|
|
67
|
+
// {
|
|
68
|
+
// laneNumber: string,
|
|
69
|
+
// teamName: string, // home team for this lane
|
|
70
|
+
// leagueSeason: string, // "Season 3"
|
|
71
|
+
// throwStyle: string, // 'hatchet' | 'big-axe'
|
|
72
|
+
// weekNumber: number,
|
|
73
|
+
// opponentTeam: string,
|
|
74
|
+
// teamScore: number, // total points this team scored this match
|
|
75
|
+
// opponentScore: number, // total points opponent scored
|
|
76
|
+
// playerScores: [{ guestName, setScores: number[], totalScore: number, clutchesCalled: number, clutchesHit: number }]
|
|
77
|
+
// }
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. Standing Calculation Logic
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
brain.defineAggregate('leagueStandingsByTeam', {
|
|
84
|
+
source: {
|
|
85
|
+
type: 'Event',
|
|
86
|
+
where: [
|
|
87
|
+
{ field: 'metadata.entityType', value: 'booking' },
|
|
88
|
+
{ field: 'metadata.experienceSlug', value: 'league-night' }
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
groupBy: [
|
|
92
|
+
{ field: 'metadata.teamName' }
|
|
93
|
+
],
|
|
94
|
+
metrics: {
|
|
95
|
+
matchesPlayed: { op: 'COUNT' },
|
|
96
|
+
totalPoints: { op: 'SUM', field: 'metadata.teamScore' },
|
|
97
|
+
totalOpponent: { op: 'SUM', field: 'metadata.opponentScore' },
|
|
98
|
+
avgScore: { op: 'AVG', field: 'metadata.teamScore' },
|
|
99
|
+
maxScore: { op: 'MAX', field: 'metadata.teamScore' }
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Wins and losses are computed client-side: for each match record, `teamScore > opponentScore` → win, else loss. Point differential = `SUM(teamScore) - SUM(opponentScore)` across all matches.
|
|
105
|
+
|
|
106
|
+
**Standings sort order**: wins (desc) → point differential (desc) → total points (desc).
|
|
107
|
+
|
|
108
|
+
## WATL Scoring Reminder
|
|
109
|
+
|
|
110
|
+
Every match is 5 throws per player per set, best of 3 sets. Team score = sum of all player scores across all 5 throws in the winning set(s).
|
|
111
|
+
|
|
112
|
+
Clutch scoring: if a player calls "clutch" before a throw and hits the clutch zone, score 8. If they call it and miss, score 0. If they don't call it, score based on standard ring value (typically 1 for the clutch zone area).
|
|
113
|
+
|
|
114
|
+
## Output Structure
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### 1. Season Overview
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
League — {{locationName}}
|
|
122
|
+
Season: [seasonName]
|
|
123
|
+
Week [N] of [weekCount] | [N] weeks remaining
|
|
124
|
+
Teams: [teamCount] | Format: WATL Head-to-Head, Best of 3
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 2. Current Standings
|
|
128
|
+
|
|
129
|
+
Full standings table sorted by wins, then point differential, then total points:
|
|
130
|
+
|
|
131
|
+
| Rank | Team | W | L | Pts For | Pts Against | Diff | Last 3 | Streak |
|
|
132
|
+
|---|---|---|---|---|---|---|---|---|
|
|
133
|
+
| 1 | Iron Shoulders | 7 | 1 | 1,842 | 1,604 | +238 | W-W-W | W3 |
|
|
134
|
+
| 2 | Axe Factors | 6 | 2 | 1,798 | 1,642 | +156 | W-L-W | W1 |
|
|
135
|
+
| 3 | Hatchet Heroes | 5 | 3 | 1,756 | 1,700 | +56 | L-W-W | W2 |
|
|
136
|
+
| 4 | Target Practice | 5 | 3 | 1,710 | 1,724 | -14 | W-W-L | L1 |
|
|
137
|
+
| 5 | The Bullseye Club | 4 | 4 | 1,682 | 1,718 | -36 | L-L-W | W1 |
|
|
138
|
+
| 6 | Stick & Stones | 3 | 5 | 1,640 | 1,780 | -140 | L-W-L | L1 |
|
|
139
|
+
| 7 | No Clutch | 2 | 6 | 1,594 | 1,842 | -248 | L-L-W | W1 |
|
|
140
|
+
| 8 | Wild Hatchets | 0 | 8 | 1,488 | 1,920 | -432 | L-L-L | L8 |
|
|
141
|
+
|
|
142
|
+
Add a separator line after the playoff cutoff (top 8 advance by default, or configurable per season).
|
|
143
|
+
|
|
144
|
+
### 3. This Week's Match Results
|
|
145
|
+
|
|
146
|
+
For the most recent completed week:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
Week [N] Results — [Date]
|
|
150
|
+
──────────────────────────
|
|
151
|
+
Lane 1: Iron Shoulders def. No Clutch (442 – 384)
|
|
152
|
+
Lane 2: Axe Factors def. Wild Hatchets (408 – 362)
|
|
153
|
+
Lane 3: Hatchet Heroes def. Stick & Stones (398 – 376)
|
|
154
|
+
Lane 4: Target Practice def. Bullseye Club (416 – 398)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 4. Individual Player Leaderboard
|
|
158
|
+
|
|
159
|
+
Top 10 players by average score per set this season:
|
|
160
|
+
|
|
161
|
+
| Rank | Player | Team | Avg Score/Set | Total Throws | Clutches Hit | Clutch % |
|
|
162
|
+
|---|---|---|---|---|---|---|
|
|
163
|
+
| 1 | Marcus T. | Iron Shoulders | 28.4 | 200 | 6 | 60% |
|
|
164
|
+
| 2 | Jordan K. | Axe Factors | 27.8 | 200 | 4 | 44% |
|
|
165
|
+
| 3 | Alex R. | Hatchet Heroes | 26.2 | 200 | 8 | 72% |
|
|
166
|
+
|
|
167
|
+
Privacy: display first name + last initial only.
|
|
168
|
+
|
|
169
|
+
Clutch % = clutches hit / clutches called. A player who never calls clutch will show `0 / 0` — display as "—" rather than 0%.
|
|
170
|
+
|
|
171
|
+
### 5. Notable Stats This Season
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
Season Records
|
|
175
|
+
Highest single-match team score: Iron Shoulders, 502 pts (Week 3 vs Wild Hatchets)
|
|
176
|
+
Most clutches called in a match: Alex R., 4 called (Hatchet Heroes, Week 6)
|
|
177
|
+
Most clutches hit in a match: Alex R., 3 hit (Hatchet Heroes, Week 6)
|
|
178
|
+
Longest winning streak: Iron Shoulders, 5 consecutive wins (Weeks 2–6)
|
|
179
|
+
Highest-scoring individual set: Marcus T., 38 pts (Week 4)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Playoff Bracket Generator
|
|
185
|
+
|
|
186
|
+
When the regular season is complete (or on request), generate the playoff bracket.
|
|
187
|
+
|
|
188
|
+
**Top 8 teams by final standings advance.** Single-elimination bracket, seeded by final standings position.
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
Playoff Bracket — {{businessName}} League [seasonName]
|
|
192
|
+
══════════════════════════════════════════════════
|
|
193
|
+
|
|
194
|
+
QUARTERFINALS (Week [N])
|
|
195
|
+
QF1: [1] Iron Shoulders vs. [8] Wild Hatchets Lane 1, [time]
|
|
196
|
+
QF2: [2] Axe Factors vs. [7] No Clutch Lane 2, [time]
|
|
197
|
+
QF3: [3] Hatchet Heroes vs. [6] Stick & Stones Lane 3, [time]
|
|
198
|
+
QF4: [4] Target Practice vs. [5] Bullseye Club Lane 4, [time]
|
|
199
|
+
|
|
200
|
+
SEMIFINALS (Week [N+1])
|
|
201
|
+
SF1: Winner QF1 vs. Winner QF4 Lane 1, [time]
|
|
202
|
+
SF2: Winner QF2 vs. Winner QF3 Lane 2, [time]
|
|
203
|
+
|
|
204
|
+
CHAMPIONSHIP (Week [N+2])
|
|
205
|
+
Champion Match: Winner SF1 vs. Winner SF2 Lane 1, [time]
|
|
206
|
+
Third Place: Loser SF1 vs. Loser SF2 Lane 2, [time]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
For each bracket position, show the seed number and team name. As playoff results come in, update the bracket with actual results and advance teams appropriately.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Season Schedule Generator
|
|
214
|
+
|
|
215
|
+
For new season setup, generate a round-robin schedule ensuring each team plays each other once before playoffs.
|
|
216
|
+
|
|
217
|
+
**Input required**:
|
|
218
|
+
- Number of teams (even number required for clean round-robin; if odd, add a "bye" team)
|
|
219
|
+
- Number of weeks in regular season
|
|
220
|
+
- Nights per week (typically 1)
|
|
221
|
+
- Available lanes ({{laneCount}})
|
|
222
|
+
|
|
223
|
+
**Algorithm**: Standard round-robin rotation. Fix Team 1's position, rotate all other teams around it. Each rotation produces one week of matchups.
|
|
224
|
+
|
|
225
|
+
**Output format**:
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
Season Schedule — [seasonName]
|
|
229
|
+
[N] teams | [N]-week regular season | Playoffs: Weeks [N+1]–[N+3]
|
|
230
|
+
────────────────────────────────────────────────────────────
|
|
231
|
+
|
|
232
|
+
Week 1 — [Date]
|
|
233
|
+
Lane 1: Iron Shoulders vs. Wild Hatchets
|
|
234
|
+
Lane 2: Axe Factors vs. No Clutch
|
|
235
|
+
Lane 3: Hatchet Heroes vs. Stick & Stones
|
|
236
|
+
Lane 4: Target Practice vs. Bullseye Club
|
|
237
|
+
|
|
238
|
+
Week 2 — [Date]
|
|
239
|
+
Lane 1: [matchup]
|
|
240
|
+
...
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
If the number of teams exceeds `floor({{laneCount}} / 1)` simultaneous matches, split the evening into two time blocks (e.g., 6:00 PM and 8:00 PM) to accommodate all matches.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## League Registration Output
|
|
248
|
+
|
|
249
|
+
When helping set up a new season, produce a registration summary suitable for sharing with prospective teams:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
{{businessName}} Axe Throwing League — [seasonName]
|
|
253
|
+
────────────────────────────────────────────────────
|
|
254
|
+
Format: WATL Head-to-Head, Best of 3 Sets
|
|
255
|
+
Teams: 4–8 players per team
|
|
256
|
+
Season Length: 8 weeks + playoffs
|
|
257
|
+
Night: {{leagueNights}} evenings
|
|
258
|
+
Cost: $20/player/night (season registration)
|
|
259
|
+
Registration Opens: [date]
|
|
260
|
+
Season Starts: [date]
|
|
261
|
+
|
|
262
|
+
How to Register: Email {{email}} or visit [booking link]
|
|
263
|
+
Spots are limited — last season filled in [N] days.
|
|
264
|
+
```
|