gooseworks 0.3.15 → 0.4.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.
Files changed (52) hide show
  1. package/README.md +58 -8
  2. package/dist/agents/claude.js +1 -1
  3. package/dist/agents/claude.js.map +1 -1
  4. package/dist/agents/codex.js +1 -1
  5. package/dist/agents/codex.js.map +1 -1
  6. package/dist/agents/skill-links.d.ts +7 -2
  7. package/dist/agents/skill-links.d.ts.map +1 -1
  8. package/dist/agents/skill-links.js +10 -5
  9. package/dist/agents/skill-links.js.map +1 -1
  10. package/dist/auth/attribution.d.ts +14 -0
  11. package/dist/auth/attribution.d.ts.map +1 -0
  12. package/dist/auth/attribution.js +37 -0
  13. package/dist/auth/attribution.js.map +1 -0
  14. package/dist/auth/oauth-server.d.ts +4 -4
  15. package/dist/auth/oauth-server.d.ts.map +1 -1
  16. package/dist/auth/oauth-server.js +8 -8
  17. package/dist/auth/oauth-server.js.map +1 -1
  18. package/dist/commands/call.d.ts.map +1 -1
  19. package/dist/commands/call.js +6 -5
  20. package/dist/commands/call.js.map +1 -1
  21. package/dist/commands/install.d.ts.map +1 -1
  22. package/dist/commands/install.js +11 -7
  23. package/dist/commands/install.js.map +1 -1
  24. package/dist/commands/login.d.ts +1 -1
  25. package/dist/commands/login.d.ts.map +1 -1
  26. package/dist/commands/login.js +13 -27
  27. package/dist/commands/login.js.map +1 -1
  28. package/dist/config.d.ts +1 -1
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js +6 -2
  31. package/dist/config.js.map +1 -1
  32. package/dist/skills/installer.d.ts +9 -0
  33. package/dist/skills/installer.d.ts.map +1 -1
  34. package/dist/skills/installer.js +20 -6
  35. package/dist/skills/installer.js.map +1 -1
  36. package/dist/skills/master-skill.d.ts +24 -22
  37. package/dist/skills/master-skill.d.ts.map +1 -1
  38. package/dist/skills/master-skill.js +392 -149
  39. package/dist/skills/master-skill.js.map +1 -1
  40. package/dist/skills/names.d.ts +53 -1
  41. package/dist/skills/names.d.ts.map +1 -1
  42. package/dist/skills/names.js +107 -7
  43. package/dist/skills/names.js.map +1 -1
  44. package/dist/skills/routes.d.ts +68 -0
  45. package/dist/skills/routes.d.ts.map +1 -0
  46. package/dist/skills/routes.js +124 -0
  47. package/dist/skills/routes.js.map +1 -0
  48. package/package.json +1 -1
  49. package/skills/goose-ads/SKILL.md +124 -104
  50. package/skills/goose-product-photos/SKILL.md +129 -0
  51. package/skills/gooseworks/SKILL.md +100 -41
  52. package/skills/routes.json +157 -0
@@ -2,12 +2,10 @@
2
2
  name: gooseworks
3
3
  slug: gooseworks
4
4
  description: >
5
- GooseWorks data toolkit. Search and scrape Twitter/X, Reddit, LinkedIn, websites, and the web.
6
- Find people, emails, and company info. Enrich contacts and companies.
7
- GTM tasks: lead generation, prospect research, ICP identification, competitor analysis, outbound list building.
8
- LinkedIn scraping: extract post engagers, commenters, profile data, and job postings.
9
- Reach for it when you need data at scale, sources behind auth, or a specific provider — not as
10
- a replacement for your built-in web search/fetch on quick, one-off lookups.
5
+ GooseWorks growth coworker and specialist-skill router. Research brands, customers, competitors,
6
+ creators, markets, and prospects; analyze ads and performance; create ads, product photos,
7
+ graphics, and video; search and scrape public web and social data; find and enrich leads.
8
+ Use it as the single GooseWorks entry point for brand growth, B2B, sales, research, and GTM work.
11
9
  category: general
12
10
  version: 1.0.0
13
11
  author: GooseWorks
@@ -16,79 +14,137 @@ tags: [gooseworks, data, scraping, search, reddit, twitter, linkedin, email, peo
16
14
 
17
15
  # GooseWorks
18
16
 
19
- You have access to GooseWorks — a toolkit with 100+ data skills for scraping, research, lead generation, enrichment, and more. Reach for a GooseWorks skill when it's the right tool: data at scale, sources behind auth, or specific providers (Twitter/X, Reddit, LinkedIn, people/company enrichment).
17
+ You have access to GooseWorks — an AI coworker with specialist skills for research, analysis, creative work, lead generation, enrichment, and public web/social data. Use the right specialist when the request needs brand context, a managed creative workflow, data at scale, a source behind authentication, or a specific provider.
20
18
 
21
19
  This skill is also the **parent router** for the GooseWorks family. Data/GTM work you handle here (see "How to Use"); specialized work you hand off to a dedicated `goose-*` skill.
22
20
 
23
21
  ## Route to the right skill FIRST
24
22
 
25
- Before anything else, check whether the request belongs to a specialized domain. If so, **switch to that skill** instead of the data flow below:
23
+ First apply the **Common company onboarding** gate below. Preserve the user's original request while onboarding, then continue with it as soon as onboarding is complete. Then load the brand context (**"Load the brand context FIRST"**, immediately below). After that, check whether the request belongs to a specialized domain. If so, **switch to that skill** instead of the data flow below:
26
24
 
27
25
  | If the user wants… | Route to | How |
28
26
  | --- | --- | --- |
29
27
  | Remix/make an ad, research a brand for ads, OR analyze ad performance — Meta/Google ad campaigns, creative fatigue, CAC/lead quality, competitor ad intel, ad angles & hooks | **`goose-ads`** | Installed locally as an entry skill. Just use it. If unavailable, run `gooseworks install --claude`. |
30
28
  | Charts, infographics, slides, social graphics, branded visual designs from a style/format | **`goose-graphics`** | If installed locally, use it. Otherwise `gooseworks fetch goose-graphics` (or `gooseworks install --claude --with goose-graphics`). |
31
29
  | Make a **video** ad — remix a video ad template (e.g. iMessage chat-reveal), or "make the video for project <id>" | **`goose-video`** | Installed locally as an entry skill. Just use it. If unavailable, run `gooseworks install --claude`. |
30
+ | Make **product photos** — studio, lifestyle, marketplace, social, or on-model product photography | **`goose-product-photos`** | Installed locally as an entry skill. Just use it. If unavailable, run `gooseworks install --claude`. |
31
+ | Animate an approved static ad or product image | **`animate-image`** | Fetch with `gooseworks fetch animate-image` and follow its GooseWorks MCP workflow. |
32
32
  | Anything else — scraping, research, lead gen, enrichment, any data lookup | (stay here) | Follow "How to Use" below. |
33
33
 
34
34
  Examples — all of these route to `goose-ads`, not the data flow: "remix this ad with project id 123", "make an ad for my product", "research my brand", "why is my Meta campaign underperforming", "which creatives should I cut".
35
35
 
36
+ ## Load the brand context FIRST (mandatory — before you route, and before you ask anything)
37
+
38
+ **Call `brand_get_context` before the first substantive step of ANY task**, and before you route to a specialist skill. It is a cheap, read-only call that returns the brand's canonical facts:
39
+
40
+ | It returns | Use it for |
41
+ | --- | --- |
42
+ | **voice** — tone, style, banned phrasing | Any copy, script, caption, hook, or headline. Don't ask "what tone?" |
43
+ | **products** — names, descriptions, pricing, links, imagery | Picking the product to feature. Don't ask "which product?" — offer the list. |
44
+ | **audience** — segments, demographics, jobs-to-be-done | Targeting, angles, creator fit. Don't ask "who is this for?" |
45
+ | **positioning** — category, value props, proof points, tagline | Angles, offers, competitive framing. Don't ask "what makes you different?" |
46
+ | **research status** — whether the brand's research pass has completed | Whether the facts are trustworthy yet, or still being filled in. |
47
+
48
+ Then:
49
+
50
+ 1. **Pass what it returned INTO the routed skill.** When you hand off to `goose-ads`, `goose-video`, `goose-product-photos`, `goose-graphics`, or a fetched Brand Growth recipe, carry the voice / products / audience / positioning with you. Do **not** make the routed skill re-derive them, and do **not** re-run brand research when the context is already there.
51
+ 2. **Never re-ask the user for something the brand context already answers.** If a routed skill's own prose asks a question the context answers, the context wins — answer it yourself and move on. Ask only for what is genuinely missing or ambiguous.
52
+ 3. **If research status is not complete**, say so in one line, use what you have, and continue. Only run brand research when the context comes back empty or the user asks for it.
53
+ 4. **If `brand_get_context` is unavailable** (no MCP connection), fall back to `get_brand_kit` for the selected brand and treat its fields the same way. If neither is available, tell the user the GooseWorks MCP connection is needed rather than guessing brand facts.
54
+ 5. **Treat it as read-only.** Writing brand facts back is the reconciliation flow in `goose-ads` (ask first, then `update_brand_kit`) — not something this router does.
55
+
56
+ Never invent a brand fact. If it isn't in the brand context and the user hasn't said it, ask.
57
+
36
58
  ## Setup
37
59
 
38
60
  All commands below auto-load credentials from `~/.gooseworks/credentials.json`. If a command exits with "Not logged in", tell the user to run: `npx gooseworks login`. To log out: `npx gooseworks logout`.
39
61
 
40
- ### CLI-free environments (cowork / headless)
62
+ ### Choose the available runtime — MCP first, then CLI
41
63
 
42
- If the `gooseworks` CLI binary isn't available (e.g. Anthropic cowork) but the
43
- `mcp__gooseworks__*` tools are connected, use the MCP equivalents instead of shelling out:
64
+ Skills may describe a managed provider request as an environment-neutral operation with
65
+ `provider`, `method`, `path`, and optional `query` or `body`. Execute the operation through
66
+ the first available runtime:
67
+
68
+ 1. If the matching GooseWorks MCP tool is registered, use it. For ScrapeCreators, pass the
69
+ operation directly to `call_data_provider`. This is the preferred path in ChatGPT, Cowork,
70
+ and other terminal-free clients. Do not shell out and do not ask for a separate provider key.
71
+ 2. Otherwise, if a local terminal and the `gooseworks` CLI are available, translate the same
72
+ operation into `gooseworks call <provider> <path>` with its method, query, and body options.
73
+ 3. Otherwise, follow the provider dependency's direct-key path only when the user has supplied
74
+ their own key. If no runtime is available, explain what connection is missing; never pretend
75
+ the provider call ran.
76
+
77
+ The same selection applies to catalog and account operations. When the CLI is unavailable but the
78
+ `mcp__gooseworks__*` tools are connected, use these equivalents:
44
79
  - `gooseworks search <q>` → the **`search_skills`** MCP tool.
45
80
  - `gooseworks fetch <slug>` → the **`fetch_skill`** MCP tool (same content/scripts/files/deps).
46
81
  - `gooseworks credits` → the **`get_ad_credits`** MCP tool.
47
82
 
48
- Discovery and fetching a skill's instructions work fully CLI-free this way. Note: the paid data
49
- proxy (`gooseworks call <provider> <path>`) still requires the CLI for now — if a task needs it
50
- and no CLI is present, tell the user that step must run where the `gooseworks` CLI is installed.
83
+ Discovery, skill fetching, and ScrapeCreators-backed Brand Growth workflows work fully CLI-free
84
+ this way. Task skills own the endpoint and analysis workflow; this runtime rule owns how the same
85
+ provider operation is executed.
51
86
 
52
87
  To check credit balance:
53
88
  ```bash
54
89
  gooseworks credits
55
90
  ```
56
91
 
57
- ## User Context (onboarding)
92
+ ## Common company onboarding
93
+
94
+ Onboarding happens inside the current agent and is the first-run gate for every GooseWorks task. It uses the exact same saved state and step order as the web onboarding. The user does not need to type **`/gooseworks onboard me`**; that explicit command only starts or resumes the same flow.
95
+
96
+ Keep the user's original task pending. Call **`brand_onboarding { action: "status" }`** before routing or executing it, then:
97
+
98
+ - follow only the returned `next_step`;
99
+ - save each answer immediately with `brand_onboarding` so web, Claude, Codex, ChatGPT, and Cowork can resume one another;
100
+ - continue the original request immediately when `onboarding_completed` is true.
101
+
102
+ If `brand_onboarding` is unavailable, explain that the GooseWorks MCP connection must be enabled. Do not write a parallel local profile and do not run the retired role / discovery-source / ad-owner questionnaire.
58
103
 
59
- You have two MCP tools for the user's onboarding CONTEXT — who they are and what they want GooseWorks for. It's stored server-side (org-scoped), separate from the ads brand kit.
104
+ When onboarding returns a review link, show that single link and ask the user to review the creatives and reply `done`. When they reply `done`, do not restart onboarding: continue the task they originally asked for. If there was no earlier task, ask: **“Let’s start your next campaign. What are you promoting, and what result do you want?”** Use the same preserved-task-or-campaign handoff if onboarding completes while the creatives are still being prepared or could not be generated.
60
105
 
61
- - `get_user_context` — read it. **At the START of a session, call this once** and use what you learn (company, role, the use-cases they picked, their goals, freeform notes) to tailor which skills/APIs you reach for. Best-effort: if the `mcp__gooseworks__*` tools aren't connected, skip silently and carry on.
62
- - `update_user_context` — save it (partial update; only the fields you pass are touched).
106
+ ### Shared flow
63
107
 
64
- ### Running "onboard me" (or a first run with empty context)
108
+ Use the host's native question controls. Ask one short group at a time and rely on the live tool schema for accepted values.
65
109
 
66
- If the user says "onboard me" — or `get_user_context` returns `onboarded: false` and they're starting fresh — run a short, friendly interview, then save the answers. Open with this framing:
110
+ 1. **Start** — If status returns `start`, ask for the company website or Apple App Store URL. Also offer the optional hero product URL and “Where do you do your work?” choices: Slack, WhatsApp, iMessage, Claude Code, Claude, Codex, and ChatGPT. Call `action: "start"`; server-side research begins immediately. If status returns `select_brand`, ask which company/client to use. Otherwise reuse the only brand automatically.
111
+ 2. **Your coworker** — Ask what they want to name their Growth Coworker. A text-only client may keep the default avatar; do not block on an image. Save with `action: "save_coworker"`.
112
+ 3. **Your company** — Use the returned `company_draft` as the starting point and ask the user to verify or edit: what they sell (`marketCategory`), where people buy (`appPlatforms`), primary customer, customer problem, promised outcome, and optional differentiator. Save with `action: "save_company"`.
113
+ 4. **Your taste** — In a terminal or CLI host, use the returned `taste_url`: open it when the host supports opening links and always show one clickable **Choose your taste in GooseWorks** link. Ask the user to heart or skip ads on that page, click **Continue** or **Skip this**, return to the agent, and reply `done`. Do not print, enumerate, or summarize `taste_deck` in the terminal. After `done`, call `brand_onboarding { action: "status" }` again and follow the refreshed `next_step`. In a chat host that renders images, show only the one image attached by the tool and save each Love/Skip decision with `action: "save_taste"`; send `complete: true` after three hearts or an explicit skip.
114
+ 5. **First campaign** — Ask **“What’s happening right now?”**: launch `launch`, promotion `promo`, seasonal moment `seasonal`, or nothing special `nothing`, plus an optional note. Call `action: "propose_campaign"`, show the returned editable card (name, objective, offer, audience, 2–3 angles, CTA, and product URL), and save edits with `action: "save_campaign"`. Send `accept: true` only after approval; acceptance can start the complimentary first creatives.
115
+ 6. **Where you are** — Ask monthly ad spend (`none`, `under_1k`, `1k_5k`, `5k_25k`, `25k_plus`), annual revenue (`under_1m`, `1m_10m`, `10m_100m`, `100m_plus`), the 90-day goal, current channels (an empty list is a valid “nothing yet”), and at least one channel they are willing to use. Channel values: `paid_social`, `search_ads`, `content`, `creators`, `seo`, `communities`, `referrals`, `partnerships`, `outbound`, `app_stores`, `other`. Save with `action: "save_progress"`.
116
+ 7. **Review** — Show the returned founder, researched, and inferred facts with their provenance. The user may correct positioning, audience, voice, value propositions, proof points, or competitors through `action: "review_research"`. Complete the review even when research is still running, failed, or sparse; never trap the user waiting for it.
117
+ 8. **Channels** — If `channel_connected` is already true, this is complete automatically. Otherwise ask whether they want to connect Slack, WhatsApp, or iMessage later, or skip for now. An explicit skip is valid; call `action: "complete_channels"`.
67
118
 
68
- > Gooseworks gives your AI agent access to skills and APIs for growth and marketing work. For example: making ad creatives, finding influencers, scraping social profiles and posts from X/LinkedIn, scraping ads from Meta/LinkedIn, scraping reddit, and finding leads to target and their emails — and much more. Visit skills.gooseworks.ai to see the full library of skills.
119
+ Do not ask for role, discovery source, who makes creatives, who manages ads, or a separate “what do you want to do first?” menu. Those belonged to the retired CLI questionnaire. The task the user already asked for is their first task.
69
120
 
70
- Then ask (a few at a time is fine — don't interrogate):
71
- 1. **What's your company's website?** → `company_website`
72
- 2. **What's your role?** → `role`
73
- 3. **What are you hoping to use Goose skills for?** (multi-select — pick any): generate ad creatives · research and run ads end-to-end · finding influencers · data scraping (social / ads / reddit) · finding leads & emails · something else → `use_cases` (array)
74
- 4. **What high-priority growth / marketing tasks would you like help with right now?** The more context they share, the better you can help. → `goals`
121
+ ## Brand Growth discovery
75
122
 
76
- **Save** with `update_user_context { company_website, role, use_cases, goals, context_md }` — put any extra detail you learned into `context_md` as a short summary.
123
+ Brand Growth is a collection inside the normal skill catalog, not a command or installable pack. Use these known routes when relevant, while preserving all existing B2B, sales, research, lead-generation, and data behavior:
77
124
 
78
- **Then recommend REAL next steps — grounded, not from memory. This is the WHOLE POINT of onboarding; do not skip it or wing a generic playbook:**
79
- 1. **Route each answer to the RIGHT tool first — don't blindly search one catalog. Match their use-cases to domains (same routing as "Route to the right skill FIRST" above):**
80
- - **Make / edit / analyze ADS** (generate ad creatives, research & run ads) → the **`goose-ads`** skill (brand research + template remix). Do NOT `gooseworks search` for these — ad creation is NOT in the data catalog.
81
- - **VIDEO ads** → **`goose-video`**. **Charts / slides / graphics** → **`goose-graphics`**.
82
- - **GTM / DATA** (finding leads & emails, influencers, scraping social / ads / reddit, enrichment, competitor intel) → run `gooseworks search "<that task>"` (free) and recommend the REAL skill slugs it returns.
83
- Recommend specific, real things BY NAME — never a from-memory playbook, never a skill you assume exists; if a GTM search returns nothing relevant, say so.
84
- 2. **Ground it in THEIR business.** If they gave a company website, read it with your web tools to infer their actual product + ICP, so suggestions are about their company — not a template. (For ad work, prefer `goose-ads`'s own brand research over a raw read.)
85
- 3. **Be honest about cost.** Data / lead / enrichment / ad-generation skills bill GooseWorks credits — say so, and estimate before running anything (`gooseworks credits` to check balance).
86
- 4. **Offer to start ONE concrete play** built from the ROUTED skill (`goose-ads` for ads, a real searched skill for GTM) and ask for the one or two inputs it needs.
125
+ | Job | Skill |
126
+ | --- | --- |
127
+ | Brand foundation | `brand-research` |
128
+ | Competitor ads | `competitor-ad-intelligence` |
129
+ | Customer language and angles | `comment-mining`, `ad-angle-miner` |
130
+ | Competitor social content | `competitor-social-research` |
131
+ | Audience definition | `audience-research` |
132
+ | Creator discovery and evaluation | `influencer-prospecting`, `creator-profile-teardown` |
133
+ | Trends and outlier posts | `trend-discovery`, `outlier-post-finder` |
134
+ | Social listening and product demand | `social-listening-brief`, `product-demand-research` |
135
+ | Long-form source material (calls, podcasts, videos) | `transcript-intelligence` |
136
+ | Meta performance, policy, and landing-page match | `meta-ads-analyzer`, `meta-ad-policy-checker`, `ad-to-landing-page-auditor` |
137
+ | Static ads | `goose-ads`, `remix-graphic-ad-from-reference` |
138
+ | Product photos | `goose-product-photos`, `product-photoshoot` |
139
+ | Written content and repurposing | `content-repurposing` |
140
+ | Graphics and animation | `goose-graphics`, `animate-image` |
87
141
 
88
- A suggestion is only "grounded" if it came from routing to the right domain skill (`goose-ads` / `goose-video` / `goose-graphics`) or from `gooseworks search` (a real GTM skill) — plus, ideally, reading their site. Do that BEFORE you suggest; never present a from-memory capability list as if you'd checked.
142
+ Fetch the named public skill before following it. You already called `brand_get_context` — hand the brand's voice, products, audience, and positioning to the fetched skill instead of letting it re-derive or re-ask them. Provider helpers such as `scrapecreators-api` and `transcript-intelligence` are dependencies, not user-facing results.
89
143
 
90
- ### Update as needed
91
- Whenever the user reveals durable context mid-session (their company, role, what they're trying to accomplish), persist it with `update_user_context` so future sessions start smarter.
144
+ For a multi-part request, repeat this routing check before each new job. Fetch and follow the
145
+ closest outcome skill first (for example, `comment-mining`, `creator-profile-teardown`, or
146
+ `content-repurposing`) before calling provider APIs or improvising a workflow. Provider calls
147
+ collect inputs for the outcome skill; they do not replace it.
92
148
 
93
149
  ## How to Use
94
150
 
@@ -128,6 +184,7 @@ Follow the instructions in the skill's `content` field. **Save ALL files from bo
128
184
  > - **Credentials (only needed before running Python scripts, NOT before gooseworks commands):** replace the python one-liner exports with `eval $(gooseworks env)`. Skip entirely if you are only using `gooseworks call` — it loads credentials automatically.
129
185
  > - **Orthogonal run:** replace `curl ... /v1/proxy/orthogonal/run ... -d '{"api":"X","path":"/Y","body":{...}}'` with `gooseworks call X /Y --body='{...}'`
130
186
  > - **Direct proxy:** replace `curl ... /v1/proxy/<provider>/<path> ... -d '{...}'` with `gooseworks call <provider> <path> --body='{...}'`
187
+ > - **ScrapeCreators:** call its first-party GooseWorks proxy directly with `gooseworks call scrapecreators <path> --query='{...}'`. Use ScrapeCreators' official OpenAPI for endpoint parameters; do not use Orthogonal as its endpoint catalog. GET is the default; add `--method POST --body='{...}'` only for an official POST operation.
131
188
  > - **Orthogonal search:** replace `curl ... /v1/proxy/orthogonal/search ... -d '{"prompt":"..."}'` with `gooseworks orthogonal find "..."`
132
189
 
133
190
  1. Save each script from `scripts` to `/tmp/gooseworks-scripts/<slug>/scripts/` — **NEVER save scripts into the user's project directory**
@@ -166,9 +223,10 @@ gooseworks call hunter /v2/email-finder --query='{"domain":"stripe.com","first_n
166
223
  - Output: JSON response data, followed by a `Cost: <N> credits` line when applicable
167
224
  - **Always tell the user the cost** after each call
168
225
 
169
- The same `gooseworks call` command also handles direct-proxy providers (apify, apollo, crustdata):
226
+ The same `gooseworks call` command also handles direct-proxy providers (apify, apollo, crustdata, scrapecreators):
170
227
  ```bash
171
228
  gooseworks call apify acts/parseforge~reddit-posts-scraper/runs --body='{"subreddit":"ClaudeAI"}'
229
+ gooseworks call scrapecreators /v2/instagram/post/comments --query='{"url":"https://www.instagram.com/p/POST_ID/"}'
172
230
  ```
173
231
 
174
232
  ### Workflow
@@ -199,7 +257,7 @@ The `gooseworks` CLI sends authenticated requests (Bearer `GOOSEWORKS_API_KEY`)
199
257
  | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search` | POST | `gooseworks orthogonal find` |
200
258
  | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details` | POST | `gooseworks orthogonal describe` |
201
259
  | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run` | POST | `gooseworks call` (orthogonal-routed providers) |
202
- | `$GOOSEWORKS_API_BASE/v1/proxy/{apify,apollo,crustdata}/*` | Various | `gooseworks call` (direct-proxy providers) |
260
+ | `$GOOSEWORKS_API_BASE/v1/proxy/{apify,apollo,crustdata,scrapecreators}/*` | Various | `gooseworks call` (direct-proxy providers; ScrapeCreators uses its managed first-party key) |
203
261
 
204
262
  ## Security & Privacy
205
263
 
@@ -211,6 +269,7 @@ The `gooseworks` CLI sends authenticated requests (Bearer `GOOSEWORKS_API_KEY`)
211
269
 
212
270
  ## Rules
213
271
 
272
+ 0. **Call `brand_get_context` before anything else**, pass what it returns into whatever skill you route to, and never re-ask the user for a fact it already answers (see "Load the brand context FIRST").
214
273
  1. **Consider a GooseWorks skill when it fits the task** — scraping, research, lead gen, enrichment, especially at scale, behind auth, or from a specific source. For a quick lookup your built-in tools are fine; use your judgement and pick the best tool for the user.
215
274
  2. **Before paid operations**, tell the user the estimated credit cost
216
275
  3. **If a `gooseworks` command exits with "Not logged in"**: tell the user to run `npx gooseworks login`
@@ -0,0 +1,157 @@
1
+ {
2
+ "$comment": "Generated by `npm run generate:skills` from gooseworks/src/skills/routes.ts — the single source for GooseWorks skill routing (GOOSE-3190). Do not hand-edit. Consumers: goose-skills/collections/brand-growth/routes.json and gooseworks-app/backend/src/app-mcp-server/lib/ads-skill.ts.",
3
+ "version": 1,
4
+ "domain_routes": [
5
+ {
6
+ "skill": "goose-ads",
7
+ "when": "Remix/make an ad, research a brand for ads, OR analyze ad performance — Meta/Google ad campaigns, creative fatigue, CAC/lead quality, competitor ad intel, ad angles & hooks",
8
+ "how": "Installed locally as an entry skill. Just use it. If unavailable, run `gooseworks install --claude`.",
9
+ "delivery": "entry"
10
+ },
11
+ {
12
+ "skill": "goose-graphics",
13
+ "when": "Charts, infographics, slides, social graphics, branded visual designs from a style/format",
14
+ "how": "If installed locally, use it. Otherwise `gooseworks fetch goose-graphics` (or `gooseworks install --claude --with goose-graphics`).",
15
+ "delivery": "fetch"
16
+ },
17
+ {
18
+ "skill": "goose-video",
19
+ "when": "Make a **video** ad — remix a video ad template (e.g. iMessage chat-reveal), or \"make the video for project <id>\"",
20
+ "how": "Installed locally as an entry skill. Just use it. If unavailable, run `gooseworks install --claude`.",
21
+ "delivery": "entry"
22
+ },
23
+ {
24
+ "skill": "goose-product-photos",
25
+ "when": "Make **product photos** — studio, lifestyle, marketplace, social, or on-model product photography",
26
+ "how": "Installed locally as an entry skill. Just use it. If unavailable, run `gooseworks install --claude`.",
27
+ "delivery": "entry"
28
+ },
29
+ {
30
+ "skill": "animate-image",
31
+ "when": "Animate an approved static ad or product image",
32
+ "how": "Fetch with `gooseworks fetch animate-image` and follow its GooseWorks MCP workflow.",
33
+ "delivery": "fetch"
34
+ }
35
+ ],
36
+ "brand_growth_routes": [
37
+ {
38
+ "job": "Brand foundation",
39
+ "skills": [
40
+ "brand-research"
41
+ ]
42
+ },
43
+ {
44
+ "job": "Competitor ads",
45
+ "skills": [
46
+ "competitor-ad-intelligence"
47
+ ]
48
+ },
49
+ {
50
+ "job": "Customer language and angles",
51
+ "skills": [
52
+ "comment-mining",
53
+ "ad-angle-miner"
54
+ ]
55
+ },
56
+ {
57
+ "job": "Competitor social content",
58
+ "skills": [
59
+ "competitor-social-research"
60
+ ]
61
+ },
62
+ {
63
+ "job": "Audience definition",
64
+ "skills": [
65
+ "audience-research"
66
+ ]
67
+ },
68
+ {
69
+ "job": "Creator discovery and evaluation",
70
+ "skills": [
71
+ "influencer-prospecting",
72
+ "creator-profile-teardown"
73
+ ]
74
+ },
75
+ {
76
+ "job": "Trends and outlier posts",
77
+ "skills": [
78
+ "trend-discovery",
79
+ "outlier-post-finder"
80
+ ]
81
+ },
82
+ {
83
+ "job": "Social listening and product demand",
84
+ "skills": [
85
+ "social-listening-brief",
86
+ "product-demand-research"
87
+ ]
88
+ },
89
+ {
90
+ "job": "Long-form source material (calls, podcasts, videos)",
91
+ "skills": [
92
+ "transcript-intelligence"
93
+ ]
94
+ },
95
+ {
96
+ "job": "Meta performance, policy, and landing-page match",
97
+ "skills": [
98
+ "meta-ads-analyzer",
99
+ "meta-ad-policy-checker",
100
+ "ad-to-landing-page-auditor"
101
+ ]
102
+ },
103
+ {
104
+ "job": "Static ads",
105
+ "skills": [
106
+ "goose-ads",
107
+ "remix-graphic-ad-from-reference"
108
+ ]
109
+ },
110
+ {
111
+ "job": "Product photos",
112
+ "skills": [
113
+ "goose-product-photos",
114
+ "product-photoshoot"
115
+ ]
116
+ },
117
+ {
118
+ "job": "Written content and repurposing",
119
+ "skills": [
120
+ "content-repurposing"
121
+ ]
122
+ },
123
+ {
124
+ "job": "Graphics and animation",
125
+ "skills": [
126
+ "goose-graphics",
127
+ "animate-image"
128
+ ]
129
+ }
130
+ ],
131
+ "skills": [
132
+ "ad-angle-miner",
133
+ "ad-to-landing-page-auditor",
134
+ "animate-image",
135
+ "audience-research",
136
+ "brand-research",
137
+ "comment-mining",
138
+ "competitor-ad-intelligence",
139
+ "competitor-social-research",
140
+ "content-repurposing",
141
+ "creator-profile-teardown",
142
+ "goose-ads",
143
+ "goose-graphics",
144
+ "goose-product-photos",
145
+ "goose-video",
146
+ "influencer-prospecting",
147
+ "meta-ad-policy-checker",
148
+ "meta-ads-analyzer",
149
+ "outlier-post-finder",
150
+ "product-demand-research",
151
+ "product-photoshoot",
152
+ "remix-graphic-ad-from-reference",
153
+ "social-listening-brief",
154
+ "transcript-intelligence",
155
+ "trend-discovery"
156
+ ]
157
+ }