com um clique
flywheel-agent
Run a weekly customer acquisition flywheel sprint for founders.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Run a weekly customer acquisition flywheel sprint for founders.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
| name | flywheel-agent |
| description | Run a weekly customer acquisition flywheel sprint for founders. |
| version | 0.4.2 |
| platforms | ["linux","macos","windows"] |
| tags | ["gtm","growth","stripe","nvidia","hermes","startup"] |
Use when the user asks to:
Ask for missing fields only if they cannot be inferred:
You (the agent) do the research; the scripts do the deterministic work (scoring, formatting, approval gates, ledger). Run the scripts as tools from any directory — all paths anchor to the repo root, so there is no need to cd anywhere. Do not use --demo for a real user request.
One-command path: skills/flywheel-agent/scripts/flywheel.py wraps steps 1-8 below into a single call — flywheel.py run --demo for the no-keys demo, or flywheel.py run "Product: ... ICP: ..." for a real sprint (research-backed stages skip gracefully, producing a partial sprint, if no SERPER_API_KEY/--input/data/leads.csv is available). flywheel.py doctor checks Python version, script presence, and SERPER_API_KEY/STRIPE_API_KEY readiness before you run anything. The step-by-step commands below remain the way to run (or re-run) an individual stage.
Every script accepts:
--profile <path> — product profile JSON (default data/product_profile.json)--output-dir <path> — where artifacts go (default demo/demo-output)--input <path> — structured research JSON that you supply (see schemas below)--demo — explicitly allow the bundled ExampleAI sample fixtures (explicit demos only)Exit codes:
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Error |
| 2 | Research input required — a live run of backlink_hunter.py, lead_scorer.py, creator_campaign.py, or trend_scan.py was invoked without --input. Provide --input <research.json>, or pass --demo only if the user explicitly asked for a demo. |
--input schemas (JSON object with one key holding a list)| Script | Schema |
|---|---|
backlink_hunter.py | {"opportunities": [{id, type, source_url, title, description, why_relevant, estimated_effort, estimated_impact, recommended_action, outreach_template}]} |
lead_scorer.py | {"leads": [{name, title, company, bio, source, url, engagement_context}]} (also accepts --leads-csv / data/leads.csv) |
creator_campaign.py | {"creators": [...]} — same keys as the script's SAMPLE_CREATORS entries |
trend_scan.py | {"trends": [...]} — same keys as the script's SAMPLE_TRENDS entries |
Intake comes from founder-provided chat context (product, ICP, competitors, budget, focus):
python skills/flywheel-agent/scripts/flywheel_intake.py "Product: [name] ([url]) ICP: [buyer] Competitors: [2-5 names] Budget: [$ weekly] Focus: [priority]"
Creates or updates data/product_profile.json with normalized product context. Marketing-safe proof_points stay empty for real founders until research validates them; internal review_notes are kept separate. For explicit demos only: python skills/flywheel-agent/scripts/flywheel_intake.py --demo.
python skills/flywheel-agent/scripts/launch_plan.py
Generates launch-max plan for Product Hunt, HN, directories, communities.
Research where competitors are listed/mentioned using your own web/browser toolsets, normalize the findings to the opportunities schema, then:
python skills/flywheel-agent/scripts/backlink_hunter.py --input /path/to/backlink_research.json
Scores and formats the opportunities you found. Without --input (and without --demo) it exits 2 with an actionable message.
Headless alternative: for cron/unattended runs with no interactive agent, research.py --profile <profile> --for backlinks --output <path> can produce this --input JSON itself via a real Serper search (requires SERPER_API_KEY; exits 2 with the same actionable guidance if the key is missing).
Gather real leads (engagement, signups, community activity), normalize to the leads schema, then:
python skills/flywheel-agent/scripts/lead_scorer.py --input /path/to/leads.json
Scores leads and drafts personalized approval-gated messages. Also accepts --leads-csv or data/leads.csv.
Research niche creators relevant to the ICP, normalize to the creators schema, then:
python skills/flywheel-agent/scripts/creator_campaign.py --input /path/to/creators.json
Plans influencer partnerships with performance incentives and spend requests.
Scan current trends with your web toolset, normalize to the trends schema, then:
python skills/flywheel-agent/scripts/trend_scan.py --input /path/to/trends.json
Generates trend-based content and weekly social media drafts.
Headless alternative: research.py --profile <profile> --for trends --output <path> produces this --input JSON via a real Serper search (requires SERPER_API_KEY; exits 2 with actionable guidance if the key is missing).
python skills/flywheel-agent/scripts/mpp_spend_planner.py
Builds MPP-style spend cards and test receipts from the upstream artifacts. Uses real Stripe test-mode PaymentIntents (unconfirmed, no charge) when STRIPE_API_KEY is set to an sk_test_... key; otherwise every card and receipt is a clearly-labeled simulation ("simulated": true). Live keys (sk_live_...) are refused outright — this step never touches live money.
python skills/flywheel-agent/scripts/sprint_report.py
Compiles everything into demo/demo-output/weekly_flywheel_sprint.md (or the configured --output-dir).
When the sprint is triggered from Slack or Telegram:
start walkthrough when the user wants a sequential section-by-section review.review launch, review backlinks, review outbound, review content, review mpp spend, review budget, approve <section>, edit <section>: <change>, finalize sprint, revise <change>, and show approvals as source-thread control phrases.The chat control phrases are no longer prompt-only concepts — they are backed by a persisted approval state machine. Run approvals.py as a tool to turn each command into a real, durable state transition against data/sprint_state.json (which lives beside the profile). The safety model is enforced in code: a draft sprint cannot approve or execute anything, and only approved items can be executed.
Map each chat command to its subcommand (every call takes --profile <path>):
| Chat command | Tool call |
|---|---|
show approvals | approvals.py status |
finalize sprint | approvals.py finalize (draft → finalized; unlocks execution) |
approve <section> | approvals.py approve <section> (e.g. launch, backlinks, outbound, content, creator, mpp_spend) |
approve <id> / per-item approve | approvals.py approve <item_id> |
approve all | approvals.py approve all |
| `reject <id | section |
execute <id> / mark sent-posted-paid | approvals.py execute <item_id> |
execute approved | approvals.py execute approved |
The flow is: draft dashboard → review/edit → finalize sprint → approve <section>/approve <id> → execute. Execution stays code-locked until finalize sprint runs; approvals.py returns exit 0 on success and exit 1 when blocked (e.g. approving inside a draft), and you relay its message to the thread.
Learning loop: each sprint's approvals are recorded to data/sprint_history.jsonl when the next sprint is compiled. sprint_report.py reads that history and orders next week's focus by which sections the founder actually approved before — Flywheel proposes more of what gets greenlit and less of what gets rejected.
If a user says help, commands, capabilities, or what can you do?, respond with a compact menu before doing any sprint work:
I’m Flywheel — your GTM employee.
I can:
- Draft weekly acquisition sprints
- Find launch channels
- Find backlink/listing opportunities
- Score outbound targets and draft messages
- Plan creator campaigns and spend requests
- Draft trend-based content
- Walk you through a sprint before finalizing it
Start with:
Run a GTM sprint for <product>. ICP: <buyer>. Competitors: <names>. Budget: <$>. Focus: <channels>.
Review commands:
help | review launch | review backlinks | review outbound | review content | review mpp spend | review budget | start walkthrough | approve <section> | edit <section>: <change> | finalize sprint | show approvals
Safety: I won’t send, post, or spend without explicit approval.
After running the full sequence:
python skills/flywheel-agent/scripts/validate_outputs.py
Expected outputs:
data/product_profile.jsonRespond to these phrases by loading this skill:
User: "Start my acquisition flywheel for ExampleAI"
Flywheel: Runs intake → generates product profile → launch plan →
backlinks → outbound → creators → sprint report
User: Reviews recommendations and approves specific actions
Flywheel: Executes only approved items with safety gates
The final sprint report includes:
Critical Safety Rules:
Common Pitfalls:
--input → it exits 2 with an actionable message; supply --input <research.json> (or --demo only for explicit demos)Once skill is loaded, use these exact commands:
# Full sprint generation
"Run my weekly GTM sprint for [product name]"
# Individual loops
"Generate launch plan for [product]"
"Find backlink opportunities for [competitors]"
"Create creator campaign for [niche]"
"Draft warm outbound for [leads]"
# Validation
"Validate my flywheel outputs"
"Show me what needs approval"