[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JFBYJDTHF6WBTY5KF3QRED":3,"skill-same:01M6JFBYJDTHF6WBTY5KF3QRED":259},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":33,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":69,"commitSha":70,"skillDirectory":71,"forksCount":72,"repositoryHtmlUrl":73,"repositoryHomepageUrl":74,"ownerHtmlUrl":75,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":76,"install":77,"resources":90},"01M6JFBYJDTHF6WBTY5KF3QRED","fitness-coaching",null,"Content, funnel, and communication workflows for personal trainers and fitness influencers.","S3YED\u002Fappie-kit","S3YED","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F62743867?v=4","01M6JBKBRRVP6KMS0VWZ27T3R6","01M6JBKBX0KG30284PW1DBYJT1",14,"MIT","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002FSKILL.md",[17,22,25,30],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":31,"categoryName":32,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000036","内容创作者",[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"fitness coaching","coaching","hermes","for","ticket","social","youtube","funnel","hermes agent","personal","Media","api","social-media","content","communication","humanizer","workflows","notion","2026-11-10 10:12:30",false,"---\nname: fitness-coaching\ndescription: \"Content, funnel, and communication workflows for personal trainers and fitness influencers.\"\nversion: 1.5.0\nauthor: Hermes Agent\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [fitness, coaching, content, funnel, influencer, social-media, giveaway, low-ticket]\n    related_skills: [humanizer, youtube-content, notion, typingmind-api]\n---\n\n# Fitness Coaching & Influencer Operations\n\nFor personal trainers, fitness coaches, and influencers who treat their digital presence as a business pipeline. Covers content creation, funnel optimisation, community management, giveaway campaigns, and recurring operational workflows.\n\n## Communication Style\n\n- **English ONLY.** Do not switch languages. If the client communicates in one language, stay there — do not mirror, do not offer alternatives.\n- **No em dashes.** Use commas, colons, or regular hyphens instead. User will flag em dashes.\n- **Concise and action-oriented.** Fitness audiences skim. Lead with the hook, deliver value fast, close with a CTA.\n- **Motivational but sharp.** Direct feedback. No corporate filler. No AI framing (\"as an AI\", \"I don't have access to...\").\n- **Short paragraphs.** One idea per paragraph. Let white space do the work.\n- **No AI disclaimers or meta-commentary.** Never say \"as an AI\" or \"I can't do X\". If something isn't possible, say why plainly in one sentence and offer the next best step.\n- **Hero headings max 2 lines.** On landing pages, keep the main headline short enough to fit 2 lines on mobile.\n\n## Content & Landing Page Rules\n\n### Landing Page Structure (High-Ticket Coaching)\n- VSL with autoplay muted → 90-second timer gate (sessionStorage persisted) → content unlocks\n- Sections: Hero → VSL → Timer Gate → Transformations (8 before\u002Fafter cards) → Testimonials (8 video cards) → FAQ → Typeform → Footer\n- Hero padding: `100px 20px 60px` (sits high on the page)\n- Flood social proof: 8 transformation cards + 8 testimonial videos minimum\n- Typeform embedded at the bottom with `data-tf-widget`\n\n### Low-Ticket Funnel (e.g. $99\u002Fmo group coaching)\n- Same layout as high-ticket BUT:\n  - No timer gate needed (lower commitment offer)\n  - Simplified Typeform: no budget\u002Finvestment question, no Calendly booking\n  - \"Does this look like what you're looking for?\" Yes\u002FNo gate in Typeform\n  - Yes → \"Why now?\" → contact info → payment redirect\n  - No → \"What's missing?\" → contact info → redirect to high-ticket page\n- FAQ copy changes: emphasise \"cancel anytime\", \"no contracts\", \"try for a month\"\n- Add pricing card section with monthly price\n\n### Giveaway Funnel (Lead Gen via Contest)\n- Prize structure: 1st = free coaching (e.g. 12 weeks, valued $5K), 2nd\u002F3rd = discount, everyone = exclusive offer\n\n**Typeform structure — two variants:**\n\n**Full version (high-intent traffic, ads\u002Femail):**\n- Welcome screen with prize value + deadline (14 days)\n- \"What made you join? Current situation?\" (long text)\n- \"How would your life change if you won?\" (long text — vision)\n- \"Why now? Cost of staying the same?\" (long text — urgency)\n- Commitment score (1-10 opinion scale) — winner ranked on seriousness\n- Contact info (name, email, phone)\n- Instagram handle\n- WhatsApp opt-in (yes\u002Fno)\n- Profession (for profiling)\n- Country (with DQ gate for Asia\u002FAfrica\u002FSouth America — but still capture contact info)\n- \"If you don't win, still interested at a discount?\" (pre-qualifies buyable leads)\n\n**Lightweight variant (Instagram stories, short attention span) — PROVEN HIGHER CONVERSION:**\n- 4 fields, 90 seconds max. No country gate, no Instagram, no profession, no welcome statement, no opinion scale.\n- Q1 (MC — hook\u002Fidentity): \"What's the real reason you're here?\"\n  - \"I'm disciplined everywhere else. This is the last piece.\"\n  - \"I know the blueprint. I just need someone to hold me to it.\"\n  - \"I want to look in the mirror and see the version I know I am.\"\n  - \"I'm tired of being my own biggest obstacle.\"\n  - \"I've built everything else. Now I'm building the body that carries it.\"\n- Q2 (long text — pain\u002Fdeep dive): \"What's the main struggle holding you back in your health? Why?\"\n- Q3 (short text — vision): \"In one line, what would transforming in 12 weeks do for you?\"\n- Q4 (contact_info): Name, Email, Phone only\n- **Psychology:** Face truth (EMC hook) → Admit struggle (pain) → Paint vision (future pull) → Give contact info (highest commitment, lowest perceived risk after investment)\n- **CRITICAL — 64% drop-off fix: First question MUST be ASPIRATIONAL, not shame-based.** This is a PROVEN improvement from a live giveaway form. The original Q1 asked \"What's really made you want to enter?\" with options like \"I keep starting over,\" \"I've let myself go,\" \"I'm sick of failing.\" It caused 64% drop-off on the very first screen. Switching to aspirational copy that speaks to the ICP's identity (successful person with untapped potential) fixed it. Rules:\n  - Never frame the first question around failure, shame, or \"starting over\"\n  - High-performer ICP sees themselves as UNLOCKED POTENTIAL, not broken\n  - Target the tension: \"I do hard things all day. Why can't I do this one for myself?\"\n  - Options should let the user SELECT an identity, not ADMIT a flaw\n  - Proven options (from live form, 64% drop-off fixed): \"I'm disciplined everywhere else. This is the last piece\" \u002F \"I know the blueprint. I just need someone to hold me to it\" \u002F \"I want to look in the mirror and see the version I know I am\" \u002F \"I'm tired of being my own biggest obstacle\" \u002F \"I've built everything else. Now I'm building the body that carries it\"\n- **No country gate** — country disqualification for giveaway leads was explicitly removed. All entries captured regardless of location.\n- **Use when:** promoted from Instagram, goal is lead volume, follow-up process (WhatsApp) handles deeper qualification\n- **Use full version when:** promoted via ads\u002Femail (higher intent), country restrictions critical, need Instagram handle for repurposing\n\n**Landing page structure (giveaway):**\n- Hero (badge + prize value) → VSL → How to Win (3 steps) → Prizes → Transformations → Testimonials → What's Included (3 pillars) → Features → Typeform\n- VSL placed BETWEEN hero and How to Win (proven layout)\n- Button text: \"Enter the Giveaway\" (not generic \"Enter Now\" or \"Enter the Challenge\")\n- Subtitle messaging: \"Your entry gets you access to a once in a lifetime offer. So there's nothing to lose.\"\n\n**Giveaway lead management (post-entry):**\\n- Commitment score determines priority tier and sequence speed\\n- Tier 1 (10\u002F10): Fast track — call invite Day 3-4, 2 value drops, final check Day 12-13\\n- Tier 2 (8-9\u002F10): Value first — check-in Day 3-4, call invite Day 5-6\\n- Tier 3 (7 and below): No calls — nurture only with value, pivot to low-ticket after giveaway\\n- VA handles WhatsApp messaging using scripts in Ibrahim's voice (\"I\" not \"Ibrahim will\")\\n- Create a clean PDF process doc for VA handoff with tiers, scripts by day, daily checklist, quick reference table\\n- Ibrahim handles all calls and closings — VA flags booked calls and strong answers\\n- See `references\u002Fgiveaway-lead-management.md` for the full process template\\n- **CRITICAL BOUNDARY:** VA sends WhatsApp messages ONLY. Do NOT write call scripts or sales pitches in the VA docs. Ibrahim explicitly rejected the phrase \"I can hold a spot for you after the giveaway\" as a first-call tactic. The VA doc must be purely operational: what message to send, when, and who to escalate. See `references\u002Fgiveaway-lead-management.md` for the full process template.\n- **WhatsApp from server (post-entry follow-up):** The `wacli` CLI tool can send follow-up messages to leads automatically from the server. Requires phone-linked auth via QR or pairing code. See `communication\u002Fwacli` skill for headless auth setup. **Proven headless auth method (July 2026):** Use `tmux new-session -d -s wacli-pair -x 500` then `tmux send-keys -t wacli-pair \"wacli auth --phone '+44...'\" Enter`. Wait 8s, capture code with `tmux capture-pane`. This avoids all background-terminal output-buffering issues. QR method (`--qr-format text`) also works but requires generating a PNG and sending via MEDIA: image — phone pairing is simpler for the user. If rate-limited (429), wipe session.db, wait 30-60 min, and retry. See `references\u002Fwhatsapp-wacli-setup.md` for the full rate-limit troubleshooting table.\n\n## Triage Call Qualification (Giveaway Leads)\n\nUsed for 15-min triage calls where the coach qualifies leads for a second sales call. Not a pitch — the coach is selecting who deserves to win.\n\n**Core frame:** *\"This is 15 minutes for me to hear your real story. Why you entered, what's going on, and why you think you should win. I'll shortlist the best fit.\"*\n\n**4 questions to qualify every lead:**\n1. **The Trigger** — \"What happened recently that made you realise you have to sort your health out now?\" (Specific event vs vague feeling)\n2. **The Life Audit** — \"What do you do for work? What does a normal day look like?\" (Income stability + schedule reality)\n3. **The Commitment Check** — \"Have you signed up for programs before and not followed through? What happened? What's different this time?\" (Self-awareness vs excuses)\n4. **The Belief** — \"Deep down, what's the one thing actually holding you back?\" (Internal vs external attribution)\n\n**Scoring:** 3 buckets — HOT (real trigger + stable life + takes responsibility), WARM (2 of 4), COLD (vague + no stability + blames everything). After each call: Name \u002F Score \u002F 1-line gut feel.\n\n**Triage call frame update (from live calls, July 2026):**\n- The coach opens with the giveaway frame: \"15 minutes to hear your real story and why you think you should win. I'll shortlist the best fit.\"\n- The close teases the three-tier prize structure: \"I've never done this before — even if you're not first, there's something special for second and third.\"\n- This framing makes it a **selection call**, not a sales call. Power dynamic is inverted — the coach is choosing who deserves it.\n- **Key insight:** Don't pitch. Don't sell. Just qualify. The second call is where the offer happens.\n**Recording workflow:** Ibrahim records all triage calls → sends recording or notes → agent transcribes → builds a lead profile → uses profile to prep the second call briefing.\n**Post-call reporting:** Ibrahim sends \"Name \u002F Score (H\u002FW\u002FC) \u002F 1-line gut feel\" for each call. Agent logs it.\n\n**Lead profiling notes (from live session, July 2026):** Ibrahim sends raw stream-of-consciousness notes. The agent structures them using this template:\n- Demographics (age, location, occupation, family) → current health state → medical context → why now trigger → past attempts → blockers (internal + external) → what they need from coaching → commitment level → financial reality → gut feel verdict with emoji tag\n- Style: short staccato sentences and fragments. Not full prose. Bullet-pointed insights.\n- See `references\u002Flead-profiling-notes.md` for templates and live examples.\n\n**Post-call workflow:** Record call → transcribe → build lead profile → tag by status → log to CRM → use profile to draft second-call follow-up.\n\n**7 common objections**\n\n**Post-call workflow:** Record call → transcribe → build lead profile → use profile to prep second\u002Fsales call.\n\nSee `references\u002Ftriage-call-qualification.md` for the full framework including exact question wording, objection scripts, and scoring rules.\n\n### WhatsApp Contact Management (via wacli)\n\nWhen managing giveaway leads through WhatsApp from the server:\n\n**Contact sync (name changes from phone):**\n- When Ibrahim renames contacts on his phone (e.g. adding \"Giveaway\" suffix), names sync to the wacli database but may lag\n- `wacli contacts refresh --account=creed` pulls latest names immediately (faster than a full message sync)\n- `wacli contacts search \u003Ckeyword>` — search contacts by name or phone (e.g. `wacli contacts search giveaway --account=creed`)\n- Account name is typically `creed`, NOT `default` — check with `wacli accounts list` first\n\n**Sending messages:**\n- `wacli send text --to \"\u003Cname-or-jid>\" --message \"...\" --account=creed` — send a WhatsApp message\n- `--to` accepts the contact name as shown in wacli (e.g. \"Abdullah Jordan Giveaway\") or JID\n- Can also send files (`send file`), voice notes (`send voice`), react (`send react`)\n\n**CRITICAL: Approval protocol — Do NOT fire messages without Ibrahim approving the exact wording first.**\n- Draft one message at a time\n- Present it for review with context (who it's going to, why this message)\n- Only send after he confirms\n- Do not batch-send multiple messages without per-message approval unless he explicitly says \"send them all\"\n\n**Lead status tags (for local roster tracking):**\nUse these emoji prefixes in the lead roster for quick scan:\n- ? **VERY HOT** — ready to buy, follow up aggressively\n- ? **HOT** — strong fit, needs one more touch\n- ? **WARM** — good potential, needs nurturing\n- ? **New** — not contacted yet\n- ❌ **Cold** — not ICP or can't afford\n\n### Call Funnel Tracking (No CRM API Available)\n\nGHL V1 API deprecated 31 Dec 2025. V2 requires OAuth\u002FJWT (pit- tokens from Company Settings don't work). The reliable lead-tracking approach is a **local JSON CRM** maintained by the agent.\n\n**Workflow:**\n1. Agent imports new leads from the lead database into `\u002Froot\u002Fcreed-crm.json`\n2. Agent sends Ibrahim morning status (who needs calls, who ghosted, new entries)\n3. Ibrahim reports back after calls: \"Called Ahmed, good fit. Called Sarah, not ready.\"\n4. Agent updates CRM and sends next-day priorities\n\n**Commands (run via `scripts\u002Fcreed-crm.py`):**\n- `python3 \u002Froot\u002Fcreed-crm.py import` — import new leads\n- `python3 \u002Froot\u002Fcreed-crm.py status` — full status + next actions\n- `python3 \u002Froot\u002Fcreed-crm.py update \"email\" \"triage_done\" \"Notes\"` — update a lead\n\nSee `references\u002Flead-crm-tracking.md` for full details and the daily summary format.\n\n### Landing Page Copy Preferences\n- Hero heading: 2 lines max. Keep tight: \"Win 12 Weeks 1:1 Coaching\". Do NOT include \"With Ibrahim Ramzy\" in the hero headline - it reads cleaner without it in bio context. Keep his name in body copy and testimonials.\n- No em dashes anywhere. Use regular hyphens instead.\n- CTA buttons: specific to action (\"Enter the Giveaway\", \"Join Health in Motion\", \"Reserve My Spot\")\n- All testimonials from the high-ticket page should be carried over (8 transformation cards + 8 video testimonial cards)\n\n## Technical Workflows\n\n### Typeform Creation (Two-Step Pattern)\nMany Typeform features (thankyou screens, logic with yes_no fields) can't be created in a single POST. Use the two-step pattern:\n1. POST to create the form with fields and settings only (no logic, no thankyou_screens)\n2. GET to retrieve the form (captures auto-generated IDs and thankyou screen refs)\n3. PUT to add logic and thankyou screens using the correct refs from step 2\n\nKey Typeform details:\n- Default thankyou screen ref is usually `default_tys`\n- yes_no field choice refs are NOT \"Yes\"\u002F\"No\" — use `multiple_choice` type with explicit refs instead\n- Country DQ: use `op: \"is\"` with `{type: \"field\", value: \"ref\"}`, `{type: \"choice\", value: \"ref\"}`\n- Profession DQ: use `op: \"equal\"` with `{type: \"constant\", value: \"Student, unemployed, inbetween jobs\"}`\n- Contact_info field uses nested `fields[]` array, not flat properties\n- Statement fields don't need `validations` block\n- Top-level `language` field not allowed (goes inside settings)\n- `thankyou_screens` go at top level, not inside settings\n\n### Vercel Video Hosting (Avoid 100MB File Limit)\nVercel's free plan has a **100MB per-file upload limit**. The CLI combines all files in the directory, so total deployment size can exceed 100MB. Strategy:\n- Deploy videos to ONE Vercel project (e.g. `thecreed-one.vercel.app` or `ibrahim-static.vercel.app`)\n- Reference them from other projects using the full URL: `src=\"https:\u002F\u002F\u003Cexisting-project>.vercel.app\u002Fvideos\u002Fvideo.mp4\"`\n- Only deploy poster images locally (small files, ~100KB total)\n- **If a video is over 100MB raw:** compress first with ffmpeg before deploying. Use `-crf 28` to balance quality\u002Fsize.\n  ```bash\n  ffmpeg -i input.mp4 -c:v libx264 -crf 28 -c:a aac -b:a 128k -movflags +faststart output.mp4\n  ```\n\n**VSL audio quality pitfall:** Aggressive compression (`-b:a 64k`) destroys voice clarity. Always use at least `-b:a 128k` for VSLs where the user is speaking directly to camera. 128kbps AAC is the floor for spoken-word quality.\n\n- **If you can't access the main project's source** (no cloned repo, no local copy): create a fresh minimal Vercel static project with just the video files, then reference from that new URL:\n  1. Create directory with `videos\u002Fvercel.json` + `videos\u002F` + `posters\u002F`\n  2. Run `vercel deploy --yes --token=$TOKEN --scope=creed-ramzy`\n  3. Run `vercel --prod --yes --token=$TOKEN --scope=creed-ramzy` to promote\n  4. Reference as `https:\u002F\u002F\u003Cnew-project>.vercel.app\u002Fvideos\u002Fsteven.mp4`\n\n### Vercel API + Static Site (Pitfall)\nIf a Vercel project uses `@vercel\u002Fstatic` as its build config (e.g. `{\"builds\": [{\"src\": \"\u002F*\", \"use\": \"@vercel\u002Fstatic\"}]}`), **API routes (`api\u002F*.js`) will not work** — Vercel treats everything as static files. Solutions:\n1. **No vercel.json at all** — Vercel auto-detects both static files and serverless functions. This is the simplest option.\n2. **Explicit build config** — List both static and node builds:\n   ```json\n   {\n     \"builds\": [\n       { \"src\": \"api\u002F*.js\", \"use\": \"@vercel\u002Fnode\" },\n       { \"src\": \"*.html\", \"use\": \"@vercel\u002Fstatic\" },\n       { \"src\": \"*.{mp4,png,jpg,webp}\", \"use\": \"@vercel\u002Fstatic\" }\n     ],\n     \"routes\": [\n       { \"src\": \"\u002Fapi\u002F(.*)\", \"dest\": \"\u002Fapi\u002F$1\" },\n       { \"src\": \"\u002F(.*)\", \"dest\": \"\u002F$1\" }\n     ]\n   }\n   ```\n3. **Auto-detect routes only:**\n   ```json\n   { \"version\": 2, \"routes\": [\n     { \"src\": \"\u002Fapi\u002F(.*)\", \"dest\": \"\u002Fapi\u002F$1\" },\n     { \"handle\": \"filesystem\" }\n   ]}\n   ```\n**Key rule:** If you add `builds` to vercel.json, you must include ALL file types. The `@vercel\u002Fstatic` build config overrides default auto-detection.\n\n### Media Embed Pattern: Match Existing First\n**CRITICAL RULE:** When adding media (video, image, embed) to an existing page, ALWAYS check what pattern the page already uses and match it exactly. Do not introduce a new embed method.\n- If all testimonials use native `\u003Cvideo controls>` tags → new testimonials get `\u003Cvideo>` tags, not iframes\n- If they use `\u003Cimg>` tags → new images get `\u003Cimg>` tags\n- Source the URL scheme the page already uses (relative paths or full URLs)\n- **Common Ibrahim page patterns:**\n  - Testimonials: inline `\u003Cvideo controls playsinline preload=\"metadata\" poster=\"...\" style=\"width:100%;border-radius:12px;margin-bottom:12px\">`\n  - Transformations: `\u003Cimg src=\"https:\u002F\u002Fthecreed-one.vercel.app\u002Ftransformations\u002Fname.jpg\">`\n  - Typeforms: `data-tf-live` attribute embed (not iframe)\n- If you're unsure, inspect the page source first. Never guess.\n- **Consequence of getting this wrong:** The embed looks different from everything else on the page, breaks the visual consistency, and frustrates the client who has to tell you to fix it.\n\n### OCR Fallback (When vision_analyze Unavailable)\nWhen the active model has no vision capability, use tesseract as fallback:\n```bash\ntesseract \u002Fpath\u002Fto\u002Fimage.jpg stdout 2>\u002Fdev\u002Fnull\n```\nCheck availability: `which tesseract`\n\n## Funnel Optimisation Principles\n\n- **ICP: Muslim high-performers (men AND women) 25-45 globally** — already fit but hitting plateaus, not beginners\n- **Ad copy: Number + Pain + Dream outcome** in one line. Test multiple hooks with same body copy\n- **Lead rescue over cold acquisition** — re-engage existing pipeline contacts before spending on new traffic\n- **Low-ticket as front-end** to high-ticket upsell. Not a standalone business line\n- **Giveaway leads: everyone gets contacted** — winner gets coaching, disqualified (wrong country) still get contacted for digital offers\n- **Qualification logic:** country + profession\u002Fstudent status both gate the high-ticket funnel; low-ticket needs only country gate\n","# Fitness Coaching & Influencer Operations\n\nFor personal trainers, fitness coaches, and influencers who treat their digital presence as a business pipeline. Covers content creation, funnel optimisation, community management, giveaway campaigns, and recurring operational workflows.\n\n## Communication Style\n\n- **English ONLY.** Do not switch languages. If the client communicates in one language, stay there — do not mirror, do not offer alternatives.\n- **No em dashes.** Use commas, colons, or regular hyphens instead. User will flag em dashes.\n- **Concise and action-oriented.** Fitness audiences skim. Lead with the hook, deliver value fast, close with a CTA.\n- **Motivational but sharp.** Direct feedback. No corporate filler. No AI framing (\"as an AI\", \"I don't have access to...\").\n- **Short paragraphs.** One idea per paragraph. Let white space do the work.\n- **No AI disclaimers or meta-commentary.** Never say \"as an AI\" or \"I can't do X\". If something isn't possible, say why plainly in one sentence and offer the next best step.\n- **Hero headings max 2 lines.** On landing pages, keep the main headline short enough to fit 2 lines on mobile.\n\n## Content & Landing Page Rules\n\n### Landing Page Structure (High-Ticket Coaching)\n- VSL with autoplay muted → 90-second timer gate (sessionStorage persisted) → content unlocks\n- Sections: Hero → VSL → Timer Gate → Transformations (8 before\u002Fafter cards) → Testimonials (8 video cards) → FAQ → Typeform → Footer\n- Hero padding: `100px 20px 60px` (sits high on the page)\n- Flood social proof: 8 transformation cards + 8 testimonial videos minimum\n- Typeform embedded at the bottom with `data-tf-widget`\n\n### Low-Ticket Funnel (e.g. $99\u002Fmo group coaching)\n- Same layout as high-ticket BUT:\n  - No timer gate needed (lower commitment offer)\n  - Simplified Typeform: no budget\u002Finvestment question, no Calendly booking\n  - \"Does this look like what you're looking for?\" Yes\u002FNo gate in Typeform\n  - Yes → \"Why now?\" → contact info → payment redirect\n  - No → \"What's missing?\" → contact info → redirect to high-ticket page\n- FAQ copy changes: emphasise \"cancel anytime\", \"no contracts\", \"try for a month\"\n- Add pricing card section with monthly price\n\n### Giveaway Funnel (Lead Gen via Contest)\n- Prize structure: 1st = free coaching (e.g. 12 weeks, valued $5K), 2nd\u002F3rd = discount, everyone = exclusive offer\n\n**Typeform structure — two variants:**\n\n**Full version (high-intent traffic, ads\u002Femail):**\n- Welcome screen with prize value + deadline (14 days)\n- \"What made you join? Current situation?\" (long text)\n- \"How would your life change if you won?\" (long text — vision)\n- \"Why now? Cost of staying the same?\" (long text — urgency)\n- Commitment score (1-10 opinion scale) — winner ranked on seriousness\n- Contact info (name, email, phone)\n- Instagram handle\n- WhatsApp opt-in (yes\u002Fno)\n- Profession (for profiling)\n- Country (with DQ gate for Asia\u002FAfrica\u002FSouth America — but still capture contact info)\n- \"If you don't win, still interested at a discount?\" (pre-qualifies buyable leads)\n\n**Lightweight variant (Instagram stories, short attention span) — PROVEN HIGHER CONVERSION:**\n- 4 fields, 90 seconds max. No country gate, no Instagram, no profession, no welcome statement, no opinion scale.\n- Q1 (MC — hook\u002Fidentity): \"What's the real reason you're here?\"\n  - \"I'm disciplined everywhere else. This is the last piece.\"\n  - \"I know the blueprint. I just need someone to hold me to it.\"\n  - \"I want to look in the mirror and see the version I know I am.\"\n  - \"I'm tired of being my own biggest obstacle.\"\n  - \"I've built everything else. Now I'm building the body that carries it.\"\n- Q2 (long text — pain\u002Fdeep dive): \"What's the main struggle holding you back in your health? Why?\"\n- Q3 (short text — vision): \"In one line, what would transforming in 12 weeks do for you?\"\n- Q4 (contact_info): Name, Email, Phone only\n- **Psychology:** Face truth (EMC hook) → Admit struggle (pain) → Paint vision (future pull) → Give contact info (highest commitment, lowest perceived risk after investment)\n- **CRITICAL — 64% drop-off fix: First question MUST be ASPIRATIONAL, not shame-based.** This is a PROVEN improvement from a live giveaway form. The original Q1 asked \"What's really made you want to enter?\" with options like \"I keep starting over,\" \"I've let myself go,\" \"I'm sick of failing.\" It caused 64% drop-off on the very first screen. Switching to aspirational copy that speaks to the ICP's identity (successful person with untapped potential) fixed it. Rules:\n  - Never frame the first question around failure, shame, or \"starting over\"\n  - High-performer ICP sees themselves as UNLOCKED POTENTIAL, not broken\n  - Target the tension: \"I do hard things all day. Why can't I do this one for myself?\"\n  - Options should let the user SELECT an identity, not ADMIT a flaw\n  - Proven options (from live form, 64% drop-off fixed): \"I'm disciplined everywhere else. This is the last piece\" \u002F \"I know the blueprint. I just need someone to hold me to it\" \u002F \"I want to look in the mirror and see the version I know I am\" \u002F \"I'm tired of being my own biggest obstacle\" \u002F \"I've built everything else. Now I'm building the body that carries it\"\n- **No country gate** — country disqualification for giveaway leads was explicitly removed. All entries captured regardless of location.\n- **Use when:** promoted from Instagram, goal is lead volume, follow-up process (WhatsApp) handles deeper qualification\n- **Use full version when:** promoted via ads\u002Femail (higher intent), country restrictions critical, need Instagram handle for repurposing\n\n**Landing page structure (giveaway):**\n- Hero (badge + prize value) → VSL → How to Win (3 steps) → Prizes → Transformations → Testimonials → What's Included (3 pillars) → Features → Typeform\n- VSL placed BETWEEN hero and How to Win (proven layout)\n- Button text: \"Enter the Giveaway\" (not generic \"Enter Now\" or \"Enter the Challenge\")\n- Subtitle messaging: \"Your entry gets you access to a once in a lifetime offer. So there's nothing to lose.\"\n\n**Giveaway lead management (post-entry):**\\n- Commitment score determines priority tier and sequence speed\\n- Tier 1 (10\u002F10): Fast track — call invite Day 3-4, 2 value drops, final check Day 12-13\\n- Tier 2 (8-9\u002F10): Value first — check-in Day 3-4, call invite Day 5-6\\n- Tier 3 (7 and below): No calls — nurture only with value, pivot to low-ticket after giveaway\\n- VA handles WhatsApp messaging using scripts in Ibrahim's voice (\"I\" not \"Ibrahim will\")\\n- Create a clean PDF process doc for VA handoff with tiers, scripts by day, daily checklist, quick reference table\\n- Ibrahim handles all calls and closings — VA flags booked calls and strong answers\\n- See `references\u002Fgiveaway-lead-management.md` for the full process template\\n- **CRITICAL BOUNDARY:** VA sends WhatsApp messages ONLY. Do NOT write call scripts or sales pitches in the VA docs. Ibrahim explicitly rejected the phrase \"I can hold a spot for you after the giveaway\" as a first-call tactic. The VA doc must be purely operational: what message to send, when, and who to escalate. See `references\u002Fgiveaway-lead-management.md` for the full process template.\n- **WhatsApp from server (post-entry follow-up):** The `wacli` CLI tool can send follow-up messages to leads automatically from the server. Requires phone-linked auth via QR or pairing code. See `communication\u002Fwacli` skill for headless auth setup. **Proven headless auth method (July 2026):** Use `tmux new-session -d -s wacli-pair -x 500` then `tmux send-keys -t wacli-pair \"wacli auth --phone '+44...'\" Enter`. Wait 8s, capture code with `tmux capture-pane`. This avoids all background-terminal output-buffering issues. QR method (`--qr-format text`) also works but requires generating a PNG and sending via MEDIA: image — phone pairing is simpler for the user. If rate-limited (429), wipe session.db, wait 30-60 min, and retry. See `references\u002Fwhatsapp-wacli-setup.md` for the full rate-limit troubleshooting table.\n\n## Triage Call Qualification (Giveaway Leads)\n\nUsed for 15-min triage calls where the coach qualifies leads for a second sales call. Not a pitch — the coach is selecting who deserves to win.\n\n**Core frame:** *\"This is 15 minutes for me to hear your real story. Why you entered, what's going on, and why you think you should win. I'll shortlist the best fit.\"*\n\n**4 questions to qualify every lead:**\n1. **The Trigger** — \"What happened recently that made you realise you have to sort your health out now?\" (Specific event vs vague feeling)\n2. **The Life Audit** — \"What do you do for work? What does a normal day look like?\" (Income stability + schedule reality)\n3. **The Commitment Check** — \"Have you signed up for programs before and not followed through? What happened? What's different this time?\" (Self-awareness vs excuses)\n4. **The Belief** — \"Deep down, what's the one thing actually holding you back?\" (Internal vs external attribution)\n\n**Scoring:** 3 buckets — HOT (real trigger + stable life + takes responsibility), WARM (2 of 4), COLD (vague + no stability + blames everything). After each call: Name \u002F Score \u002F 1-line gut feel.\n\n**Triage call frame update (from live calls, July 2026):**\n- The coach opens with the giveaway frame: \"15 minutes to hear your real story and why you think you should win. I'll shortlist the best fit.\"\n- The close teases the three-tier prize structure: \"I've never done this before — even if you're not first, there's something special for second and third.\"\n- This framing makes it a **selection call**, not a sales call. Power dynamic is inverted — the coach is choosing who deserves it.\n- **Key insight:** Don't pitch. Don't sell. Just qualify. The second call is where the offer happens.\n**Recording workflow:** Ibrahim records all triage calls → sends recording or notes → agent transcribes → builds a lead profile → uses profile to prep the second call briefing.\n**Post-call reporting:** Ibrahim sends \"Name \u002F Score (H\u002FW\u002FC) \u002F 1-line gut feel\" for each call. Agent logs it.\n\n**Lead profiling notes (from live session, July 2026):** Ibrahim sends raw stream-of-consciousness notes. The agent structures them using this template:\n- Demographics (age, location, occupation, family) → current health state → medical context → why now trigger → past attempts → blockers (internal + external) → what they need from coaching → commitment level → financial reality → gut feel verdict with emoji tag\n- Style: short staccato sentences and fragments. Not full prose. Bullet-pointed insights.\n- See `references\u002Flead-profiling-notes.md` for templates and live examples.\n\n**Post-call workflow:** Record call → transcribe → build lead profile → tag by status → log to CRM → use profile to draft second-call follow-up.\n\n**7 common objections**\n\n**Post-call workflow:** Record call → transcribe → build lead profile → use profile to prep second\u002Fsales call.\n\nSee `references\u002Ftriage-call-qualification.md` for the full framework including exact question wording, objection scripts, and scoring rules.\n\n### WhatsApp Contact Management (via wacli)\n\nWhen managing giveaway leads through WhatsApp from the server:\n\n**Contact sync (name changes from phone):**\n- When Ibrahim renames contacts on his phone (e.g. adding \"Giveaway\" suffix), names sync to the wacli database but may lag\n- `wacli contacts refresh --account=creed` pulls latest names immediately (faster than a full message sync)\n- `wacli contacts search \u003Ckeyword>` — search contacts by name or phone (e.g. `wacli contacts search giveaway --account=creed`)\n- Account name is typically `creed`, NOT `default` — check with `wacli accounts list` first\n\n**Sending messages:**\n- `wacli send text --to \"\u003Cname-or-jid>\" --message \"...\" --account=creed` — send a WhatsApp message\n- `--to` accepts the contact name as shown in wacli (e.g. \"Abdullah Jordan Giveaway\") or JID\n- Can also send files (`send file`), voice notes (`send voice`), react (`send react`)\n\n**CRITICAL: Approval protocol — Do NOT fire messages without Ibrahim approving the exact wording first.**\n- Draft one message at a time\n- Present it for review with context (who it's going to, why this message)\n- Only send after he confirms\n- Do not batch-send multiple messages without per-message approval unless he explicitly says \"send them all\"\n\n**Lead status tags (for local roster tracking):**\nUse these emoji prefixes in the lead roster for quick scan:\n- ? **VERY HOT** — ready to buy, follow up aggressively\n- ? **HOT** — strong fit, needs one more touch\n- ? **WARM** — good potential, needs nurturing\n- ? **New** — not contacted yet\n- ❌ **Cold** — not ICP or can't afford\n\n### Call Funnel Tracking (No CRM API Available)\n\nGHL V1 API deprecated 31 Dec 2025. V2 requires OAuth\u002FJWT (pit- tokens from Company Settings don't work). The reliable lead-tracking approach is a **local JSON CRM** maintained by the agent.\n\n**Workflow:**\n1. Agent imports new leads from the lead database into `\u002Froot\u002Fcreed-crm.json`\n2. Agent sends Ibrahim morning status (who needs calls, who ghosted, new entries)\n3. Ibrahim reports back after calls: \"Called Ahmed, good fit. Called Sarah, not ready.\"\n4. Agent updates CRM and sends next-day priorities\n\n**Commands (run via `scripts\u002Fcreed-crm.py`):**\n- `python3 \u002Froot\u002Fcreed-crm.py import` — import new leads\n- `python3 \u002Froot\u002Fcreed-crm.py status` — full status + next actions\n- `python3 \u002Froot\u002Fcreed-crm.py update \"email\" \"triage_done\" \"Notes\"` — update a lead\n\nSee `references\u002Flead-crm-tracking.md` for full details and the daily summary format.\n\n### Landing Page Copy Preferences\n- Hero heading: 2 lines max. Keep tight: \"Win 12 Weeks 1:1 Coaching\". Do NOT include \"With Ibrahim Ramzy\" in the hero headline - it reads cleaner without it in bio context. Keep his name in body copy and testimonials.\n- No em dashes anywhere. Use regular hyphens instead.\n- CTA buttons: specific to action (\"Enter the Giveaway\", \"Join Health in Motion\", \"Reserve My Spot\")\n- All testimonials from the high-ticket page should be carried over (8 transformation cards + 8 video testimonial cards)\n\n## Technical Workflows\n\n### Typeform Creation (Two-Step Pattern)\nMany Typeform features (thankyou screens, logic with yes_no fields) can't be created in a single POST. Use the two-step pattern:\n1. POST to create the form with fields and settings only (no logic, no thankyou_screens)\n2. GET to retrieve the form (captures auto-generated IDs and thankyou screen refs)\n3. PUT to add logic and thankyou screens using the correct refs from step 2\n\nKey Typeform details:\n- Default thankyou screen ref is usually `default_tys`\n- yes_no field choice refs are NOT \"Yes\"\u002F\"No\" — use `multiple_choice` type with explicit refs instead\n- Country DQ: use `op: \"is\"` with `{type: \"field\", value: \"ref\"}`, `{type: \"choice\", value: \"ref\"}`\n- Profession DQ: use `op: \"equal\"` with `{type: \"constant\", value: \"Student, unemployed, inbetween jobs\"}`\n- Contact_info field uses nested `fields[]` array, not flat properties\n- Statement fields don't need `validations` block\n- Top-level `language` field not allowed (goes inside settings)\n- `thankyou_screens` go at top level, not inside settings\n\n### Vercel Video Hosting (Avoid 100MB File Limit)\nVercel's free plan has a **100MB per-file upload limit**. The CLI combines all files in the directory, so total deployment size can exceed 100MB. Strategy:\n- Deploy videos to ONE Vercel project (e.g. `thecreed-one.vercel.app` or `ibrahim-static.vercel.app`)\n- Reference them from other projects using the full URL: `src=\"https:\u002F\u002F\u003Cexisting-project>.vercel.app\u002Fvideos\u002Fvideo.mp4\"`\n- Only deploy poster images locally (small files, ~100KB total)\n- **If a video is over 100MB raw:** compress first with ffmpeg before deploying. Use `-crf 28` to balance quality\u002Fsize.\n  ```bash\n  ffmpeg -i input.mp4 -c:v libx264 -crf 28 -c:a aac -b:a 128k -movflags +faststart output.mp4\n  ```\n\n**VSL audio quality pitfall:** Aggressive compression (`-b:a 64k`) destroys voice clarity. Always use at least `-b:a 128k` for VSLs where the user is speaking directly to camera. 128kbps AAC is the floor for spoken-word quality.\n\n- **If you can't access the main project's source** (no cloned repo, no local copy): create a fresh minimal Vercel static project with just the video files, then reference from that new URL:\n  1. Create directory with `videos\u002Fvercel.json` + `videos\u002F` + `posters\u002F`\n  2. Run `vercel deploy --yes --token=$TOKEN --scope=creed-ramzy`\n  3. Run `vercel --prod --yes --token=$TOKEN --scope=creed-ramzy` to promote\n  4. Reference as `https:\u002F\u002F\u003Cnew-project>.vercel.app\u002Fvideos\u002Fsteven.mp4`\n\n### Vercel API + Static Site (Pitfall)\nIf a Vercel project uses `@vercel\u002Fstatic` as its build config (e.g. `{\"builds\": [{\"src\": \"\u002F*\", \"use\": \"@vercel\u002Fstatic\"}]}`), **API routes (`api\u002F*.js`) will not work** — Vercel treats everything as static files. Solutions:\n1. **No vercel.json at all** — Vercel auto-detects both static files and serverless functions. This is the simplest option.\n2. **Explicit build config** — List both static and node builds:\n   ```json\n   {\n     \"builds\": [\n       { \"src\": \"api\u002F*.js\", \"use\": \"@vercel\u002Fnode\" },\n       { \"src\": \"*.html\", \"use\": \"@vercel\u002Fstatic\" },\n       { \"src\": \"*.{mp4,png,jpg,webp}\", \"use\": \"@vercel\u002Fstatic\" }\n     ],\n     \"routes\": [\n       { \"src\": \"\u002Fapi\u002F(.*)\", \"dest\": \"\u002Fapi\u002F$1\" },\n       { \"src\": \"\u002F(.*)\", \"dest\": \"\u002F$1\" }\n     ]\n   }\n   ```\n3. **Auto-detect routes only:**\n   ```json\n   { \"version\": 2, \"routes\": [\n     { \"src\": \"\u002Fapi\u002F(.*)\", \"dest\": \"\u002Fapi\u002F$1\" },\n     { \"handle\": \"filesystem\" }\n   ]}\n   ```\n**Key rule:** If you add `builds` to vercel.json, you must include ALL file types. The `@vercel\u002Fstatic` build config overrides default auto-detection.\n\n### Media Embed Pattern: Match Existing First\n**CRITICAL RULE:** When adding media (video, image, embed) to an existing page, ALWAYS check what pattern the page already uses and match it exactly. Do not introduce a new embed method.\n- If all testimonials use native `\u003Cvideo controls>` tags → new testimonials get `\u003Cvideo>` tags, not iframes\n- If they use `\u003Cimg>` tags → new images get `\u003Cimg>` tags\n- Source the URL scheme the page already uses (relative paths or full URLs)\n- **Common Ibrahim page patterns:**\n  - Testimonials: inline `\u003Cvideo controls playsinline preload=\"metadata\" poster=\"...\" style=\"width:100%;border-radius:12px;margin-bottom:12px\">`\n  - Transformations: `\u003Cimg src=\"https:\u002F\u002Fthecreed-one.vercel.app\u002Ftransformations\u002Fname.jpg\">`\n  - Typeforms: `data-tf-live` attribute embed (not iframe)\n- If you're unsure, inspect the page source first. Never guess.\n- **Consequence of getting this wrong:** The embed looks different from everything else on the page, breaks the visual consistency, and frustrates the client who has to tell you to fix it.\n\n### OCR Fallback (When vision_analyze Unavailable)\nWhen the active model has no vision capability, use tesseract as fallback:\n```bash\ntesseract \u002Fpath\u002Fto\u002Fimage.jpg stdout 2>\u002Fdev\u002Fnull\n```\nCheck availability: `which tesseract`\n\n## Funnel Optimisation Principles\n\n- **ICP: Muslim high-performers (men AND women) 25-45 globally** — already fit but hitting plateaus, not beginners\n- **Ad copy: Number + Pain + Dream outcome** in one line. Test multiple hooks with same body copy\n- **Lead rescue over cold acquisition** — re-engage existing pipeline contacts before spending on new traffic\n- **Low-ticket as front-end** to high-ticket upsell. Not a standalone business line\n- **Giveaway leads: everyone gets contacted** — winner gets coaching, disqualified (wrong country) still get contacted for digital offers\n- **Qualification logic:** country + profession\u002Fstudent status both gate the high-ticket funnel; low-ticket needs only country gate\n",{"name":5,"author":57,"license":14,"version":58,"metadata":59,"description":7},"Hermes Agent","1.5.0",{"hermes":60},{"tags":61,"related_skills":66},[62,35,47,41,63,46,64,65],"fitness","influencer","giveaway","low-ticket",[49,67,51,68],"youtube-content","typingmind-api","master","8ec37df6d71fb664ea19d32c079e7d3ff931a8e0","skills\u002Fsocial-media\u002Ffitness-coaching",3,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit","https:\u002F\u002Fweblyfe.ai","https:\u002F\u002Fgithub.com\u002FS3YED","2026-08-27 01:54:02",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":89},[79,82,85],{"tool":80,"command":81},"npx","npx skills add S3YED\u002Fappie-kit --skill fitness-coaching",{"tool":83,"command":84},"bunx","bunx skills add S3YED\u002Fappie-kit --skill fitness-coaching",{"tool":86,"command":87},"pnpm","pnpm dlx skills add S3YED\u002Fappie-kit --skill fitness-coaching","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002FSKILL.md",true,[91,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,251,255],{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002F1-week-funnel-build.md","REFERENCE","参考文档",5680,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002F1-week-funnel-build.md",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fcalendly-ghl-webhook-bridge.md",6433,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcalendly-ghl-webhook-bridge.md",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fcoaching-business-audit-framework.md",3682,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcoaching-business-audit-framework.md",{"path":106,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fcompetitor-ad-research.md",2706,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcompetitor-ad-research.md",{"path":110,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Fcompetitor-intel-june2026.md",6498,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcompetitor-intel-june2026.md",{"path":114,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fcompetitor-page-deconstruction.md",3660,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcompetitor-page-deconstruction.md",{"path":118,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":119,"sourceHtmlUrl":120},"references\u002Fcountry-icp-profiles-framework.md",4054,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcountry-icp-profiles-framework.md",{"path":122,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":123,"sourceHtmlUrl":124},"references\u002Fcreed-landing-vsl-gate.md",235,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fcreed-landing-vsl-gate.md",{"path":126,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":127,"sourceHtmlUrl":128},"references\u002Fdaily-stack-report-pattern.md",3113,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fdaily-stack-report-pattern.md",{"path":130,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":131,"sourceHtmlUrl":132},"references\u002Fgenerate-va-process-doc.md",1856,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fgenerate-va-process-doc.md",{"path":134,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":135,"sourceHtmlUrl":136},"references\u002Fghl-api-setup.md",5957,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fghl-api-setup.md",{"path":138,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":139,"sourceHtmlUrl":140},"references\u002Fghl-webhook-field-mapping.md",5227,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fghl-webhook-field-mapping.md",{"path":142,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":143,"sourceHtmlUrl":144},"references\u002Fgiveaway-lead-management.md",4693,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fgiveaway-lead-management.md",{"path":146,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":147,"sourceHtmlUrl":148},"references\u002Fhigh-ticket-funnel-architecture.md",1533,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fhigh-ticket-funnel-architecture.md",{"path":150,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":151,"sourceHtmlUrl":152},"references\u002Fibrahim-ramzy-brand-palette.md",4215,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fibrahim-ramzy-brand-palette.md",{"path":154,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":155,"sourceHtmlUrl":156},"references\u002Fibrahim-ramzy-icp.md",4126,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fibrahim-ramzy-icp.md",{"path":158,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":159,"sourceHtmlUrl":160},"references\u002Fibrahim-vsl-competitor-decons.md",5333,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fibrahim-vsl-competitor-decons.md",{"path":162,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":163,"sourceHtmlUrl":164},"references\u002Ficp-language-banks.md",4749,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Ficp-language-banks.md",{"path":166,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":167,"sourceHtmlUrl":168},"references\u002Flead-crm-tracking.md",2243,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Flead-crm-tracking.md",{"path":170,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":171,"sourceHtmlUrl":172},"references\u002Flead-profiling-notes.md",4091,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Flead-profiling-notes.md",{"path":174,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":175,"sourceHtmlUrl":176},"references\u002Flead-reactivation-wave.md",6492,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Flead-reactivation-wave.md",{"path":178,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":179,"sourceHtmlUrl":180},"references\u002Flow-ticket-funnel.md",3447,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Flow-ticket-funnel.md",{"path":182,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":183,"sourceHtmlUrl":184},"references\u002Flow-ticket-group-coaching-funnel.md",6587,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Flow-ticket-group-coaching-funnel.md",{"path":186,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":187,"sourceHtmlUrl":188},"references\u002Fobjection-handling-framework.md",2515,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fobjection-handling-framework.md",{"path":190,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":191,"sourceHtmlUrl":192},"references\u002Fsabri-suby-hook-formulas.md",5255,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fsabri-suby-hook-formulas.md",{"path":194,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":195,"sourceHtmlUrl":196},"references\u002Fscreenshot-distribution-workflow.md",7868,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fscreenshot-distribution-workflow.md",{"path":198,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":199,"sourceHtmlUrl":200},"references\u002Fslack-bot-setup.md",1408,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fslack-bot-setup.md",{"path":202,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":203,"sourceHtmlUrl":204},"references\u002Ftestimonial-pdf-template.html",13356,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Ftestimonial-pdf-template.html",{"path":206,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":207,"sourceHtmlUrl":208},"references\u002Ftestimonial-video-pipeline.md",11520,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Ftestimonial-video-pipeline.md",{"path":210,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":211,"sourceHtmlUrl":212},"references\u002Ftriage-call-qualification.md",5168,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Ftriage-call-qualification.md",{"path":214,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":215,"sourceHtmlUrl":216},"references\u002Ftypeform-funnel-patterns.md",4750,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Ftypeform-funnel-patterns.md",{"path":218,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":219,"sourceHtmlUrl":220},"references\u002Ftypeform-recreation-workflow.md",14728,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Ftypeform-recreation-workflow.md",{"path":222,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":223,"sourceHtmlUrl":224},"references\u002Fvideo-streaming-debug.md",3590,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fvideo-streaming-debug.md",{"path":226,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":227,"sourceHtmlUrl":228},"references\u002Fvsl-architecture.md",10368,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fvsl-architecture.md",{"path":230,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":231,"sourceHtmlUrl":232},"references\u002Fvsl-halo-research-example.md",6392,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fvsl-halo-research-example.md",{"path":234,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":235,"sourceHtmlUrl":236},"references\u002Fvsl-halo-strategy-research.md",5509,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fvsl-halo-strategy-research.md",{"path":238,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":239,"sourceHtmlUrl":240},"references\u002Fvsl-timer-gate-funnel.md",3442,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fvsl-timer-gate-funnel.md",{"path":242,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":243,"sourceHtmlUrl":244},"references\u002Fwhatsapp-wacli-setup.md",10816,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Freferences\u002Fwhatsapp-wacli-setup.md",{"path":246,"resourceType":247,"resourceTypeDesc":248,"sizeBytes":249,"sourceHtmlUrl":250},"scripts\u002Fcreate-icp-profile-doc.py","SCRIPT","脚本",2926,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Fscripts\u002Fcreate-icp-profile-doc.py",{"path":252,"resourceType":247,"resourceTypeDesc":248,"sizeBytes":253,"sourceHtmlUrl":254},"scripts\u002Fcreed-crm.py",3731,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Fscripts\u002Fcreed-crm.py",{"path":256,"resourceType":247,"resourceTypeDesc":248,"sizeBytes":257,"sourceHtmlUrl":258},"scripts\u002Fdaily-stack-report.py",5676,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsocial-media\u002Ffitness-coaching\u002Fscripts\u002Fdaily-stack-report.py",[260,289,322,348,378,401],{"skillNo":261,"name":262,"nameZh":6,"description":263,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":264,"categories":265,"keywords":273,"publishedAt":52},"01M6JFD4M6N4DSGC7TXEJ5R3J2","ai-music","AI music generation and audio tools: HeartMuLa lyrics-to-music generation, songwriting craft (+ Suno prompts), and audio spectrogram\u002Ffeature visualization.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fwethlete\u002Fai-music\u002FSKILL.md",[266,269,272],{"categoryNo":267,"categoryName":268,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":270,"categoryName":271,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[274,275,49,276,277,278,36,42,279,280,281,282,283,284,285,286,287,288],"music","ai music","visualization","Tools","Audio","songwriting","suno","lyrics","prompts","heartmula","craft","generation","feature","ai music generation","music generation",{"skillNo":290,"name":291,"nameZh":6,"description":292,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":293,"categories":294,"keywords":301,"publishedAt":52},"01M6JFCZE4XNFQFMNZDHKHT5V5","agentic-webdesign-design-system-ingestion","Use v0 Design Systems 2.0, Bolt Design System Agents, or Lovable to generate production UI from a client's real design system components — not generic Tailwind. Use when building a client website where brand consistency matters.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fweb-design\u002Fagentic-webdesign-design-system-ingestion\u002FSKILL.md",[295,298],{"categoryNo":296,"categoryName":297,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":299,"categoryName":300,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000032","设计师",[302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321],"design","agentic","design system","system","ingestion","webdesign","agentic webdesign design system ingestion","components","generate","design systems","website","ui","Tailwind","bolt","lovable","v0","design-system","wed","design system components","appie",{"skillNo":323,"name":324,"nameZh":6,"description":325,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":326,"categories":327,"keywords":330,"publishedAt":52},"01M6JFCVPX3913CFAS6QQJ33ZB","agentic-webdesign-agent-elements","Use 21st.dev Agent Elements — 25 shadcn\u002Fui components purpose-built for AI agent UIs. Tool cards (Bash, Edit, Search, Plan, Subagent, MCP), chat, input, streaming. Open source, shadcn-registry install, no runtime lock-in.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fweb-design\u002Fagentic-webdesign-agent-elements\u002FSKILL.md",[328,329],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":299,"categoryName":300,"taxonomyType":28,"taxonomyTypeDesc":29},[303,331,307,332,333,334,309,335,336,337,338,339,340,341,342,343,344,345,346,347],"elements","agentic webdesign agent elements","MCP","ai agent","registry","search","streaming","open source","open","Bash","plan","subagent","edit","install","input","lock","source",{"skillNo":349,"name":350,"nameZh":6,"description":351,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":352,"categories":353,"keywords":358,"publishedAt":52},"01M6JFCQC7H65M9QJ6TRE71BS1","vercel-deployment","Deploy static sites and frontends to Vercel — handles both CLI and REST API paths, including the CLI token sanitization workaround.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Fvercel-deployment\u002FSKILL.md",[354,357],{"categoryNo":355,"categoryName":356,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[359,360,361,362,363,364,365,366,367,368,45,369,370,371,372,373,374,375,376,377],"deployment","vercel deployment","vercel","macos","cli","linux","windows","deploy","vercel deploy","REST","site","deploy to vercel","token","rest api","host","sites","paths","sanitization","static site",{"skillNo":379,"name":380,"nameZh":6,"description":381,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":382,"categories":383,"keywords":385,"publishedAt":52},"01M6JFCM4SMTXBM5A01BK2YQG1","software-quality-workflows","Umbrella workflow for TDD, debugging, code simplification, spikes, pre-commit review, and debugger-assisted investigation.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Fsoftware-quality-workflows\u002FSKILL.md",[384],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[50,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,37],"quality","software","software quality workflows","review","tdd","workflow","commit","debugging","code","debugger","pre-commit","investigation","code simplification","user","simplification",{"skillNo":402,"name":403,"nameZh":6,"description":404,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":405,"categories":406,"keywords":414,"publishedAt":52},"01M6JFCGD0M6CEATY01W7YN6DB","react-component-refactoring","Safely refactor large React components into smaller, maintainable pieces using proven patterns","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Freact-component-refactoring\u002FSKILL.md",[407,410,413],{"categoryNo":408,"categoryName":409,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":411,"categoryName":412,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[415,416,417,418,419,420,421,422,362,423,424,309,425,365,426,394,427,428,429,430],"react","component","refactoring","component refactoring","react component","react component refactoring","frontend","writing","safe","typescript","react components","modular","refactor","simplify","patterns","test-driven-development"]