gooseworks 0.6.0-dev.77.f7d39aeb → 0.6.0-dev.79.b03f791c

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 (54) hide show
  1. package/.claude-plugin/marketplace.json +18 -4
  2. package/README.md +33 -18
  3. package/dist/commands/install.d.ts.map +1 -1
  4. package/dist/commands/install.js +17 -10
  5. package/dist/commands/install.js.map +1 -1
  6. package/dist/commands/login.d.ts.map +1 -1
  7. package/dist/commands/login.js +11 -9
  8. package/dist/commands/login.js.map +1 -1
  9. package/dist/commands/skills.d.ts +35 -16
  10. package/dist/commands/skills.d.ts.map +1 -1
  11. package/dist/commands/skills.js +52 -34
  12. package/dist/commands/skills.js.map +1 -1
  13. package/dist/commands/update.d.ts.map +1 -1
  14. package/dist/commands/update.js +15 -7
  15. package/dist/commands/update.js.map +1 -1
  16. package/dist/skills/installer.d.ts +51 -9
  17. package/dist/skills/installer.d.ts.map +1 -1
  18. package/dist/skills/installer.js +230 -35
  19. package/dist/skills/installer.js.map +1 -1
  20. package/dist/skills/names.d.ts +12 -6
  21. package/dist/skills/names.d.ts.map +1 -1
  22. package/dist/skills/names.js +21 -9
  23. package/dist/skills/names.js.map +1 -1
  24. package/dist/skills/releases.d.ts +8 -6
  25. package/dist/skills/releases.d.ts.map +1 -1
  26. package/dist/skills/releases.js +9 -78
  27. package/dist/skills/releases.js.map +1 -1
  28. package/dist/skills/standalone-packages.d.ts +2 -1
  29. package/dist/skills/standalone-packages.d.ts.map +1 -1
  30. package/dist/skills/standalone-packages.js +4 -1
  31. package/dist/skills/standalone-packages.js.map +1 -1
  32. package/package.json +4 -7
  33. package/.claude-plugin/plugin.json +0 -13
  34. package/.codex-plugin/plugin.json +0 -17
  35. package/dist/skills/master-skill.d.ts +0 -28
  36. package/dist/skills/master-skill.d.ts.map +0 -1
  37. package/dist/skills/master-skill.js +0 -225
  38. package/dist/skills/master-skill.js.map +0 -1
  39. package/dist/skills/routes.d.ts +0 -73
  40. package/dist/skills/routes.d.ts.map +0 -1
  41. package/dist/skills/routes.js +0 -147
  42. package/dist/skills/routes.js.map +0 -1
  43. package/dist/skills/server-entry-skills.d.ts +0 -14
  44. package/dist/skills/server-entry-skills.d.ts.map +0 -1
  45. package/dist/skills/server-entry-skills.js +0 -163
  46. package/dist/skills/server-entry-skills.js.map +0 -1
  47. package/skills/goose-ads/SKILL.md +0 -41
  48. package/skills/goose-product-photos/SKILL.md +0 -39
  49. package/skills/goose-video/SKILL.md +0 -42
  50. package/skills/goose-video-local/SKILL.md +0 -7
  51. package/skills/gooseworks/SKILL.md +0 -104
  52. package/skills/make-custom-video/SKILL.md +0 -55
  53. package/skills/manifest.json +0 -12
  54. package/skills/routes.json +0 -163
@@ -1,225 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEntrySkills = getEntrySkills;
4
- exports.getEntrySkillNames = getEntrySkillNames;
5
- exports.getMasterSkillContent = getMasterSkillContent;
6
- exports.getGooseAdsSkillContent = getGooseAdsSkillContent;
7
- exports.getGooseProductPhotosSkillContent = getGooseProductPhotosSkillContent;
8
- exports.getGooseVideoSkillContent = getGooseVideoSkillContent;
9
- exports.getMakeCustomVideoSkillContent = getMakeCustomVideoSkillContent;
10
- exports.getGooseVideoLocalSkillContent = getGooseVideoLocalSkillContent;
11
- /**
12
- * The entry skills the CLI installs into ~/.agents/skills/ and commits under
13
- * skills/ (the backend serves the published package's copies to chat apps):
14
- *
15
- * - `gooseworks` the router: hands specialist work to its skill and
16
- * does data work with the gooseworks commands.
17
- * - `goose-ads` image ads: make, edit and study them.
18
- * - `goose-product-photos` product photos.
19
- * - `goose-video`, `make-custom-video`
20
- * server-backed video snapshots with scoped updates
21
- * (server-entry-skills.ts). Every answer's next_step
22
- * carries the step for the video's stage.
23
- * - `goose-video-local` one line: a next_step that gives the kit's command
24
- * says who starts it. No skill spells out the
25
- * command or its version: each answer hands over
26
- * its own.
27
- *
28
- * Each skill names only the actions in the action contract, states no price,
29
- * asks for no install and stays within the rulebook's size limit; the rules
30
- * block of every skill comes from the rulebook (tests/skills/skill-lint.test.ts).
31
- * Recipe skills live in goose-skills and are fetched when needed.
32
- */
33
- const routes_1 = require("./routes");
34
- const server_entry_skills_1 = require("./server-entry-skills");
35
- /**
36
- * THE registry of entry skills (GOOSE-3190) — one list, four consumers:
37
- * - `gooseworks install` / `update` / login-refresh write exactly these dirs,
38
- * - `npm run generate:skills` regenerates exactly these `skills/<name>/SKILL.md`,
39
- * - `skills/names.ts` derives which dirs the CLI is allowed to delete,
40
- * - the backend fetches these paths from the published package for chat apps.
41
- */
42
- function getEntrySkills() {
43
- return [
44
- { name: 'gooseworks', content: getMasterSkillContent() },
45
- { name: 'goose-ads', content: getGooseAdsSkillContent() },
46
- { name: 'goose-video', content: getGooseVideoSkillContent() },
47
- { name: 'goose-video-local', content: getGooseVideoLocalSkillContent() },
48
- { name: 'make-custom-video', content: getMakeCustomVideoSkillContent() },
49
- { name: 'goose-product-photos', content: getGooseProductPhotosSkillContent() },
50
- ];
51
- }
52
- /** Just the directory names, for callers that don't need the bodies. */
53
- function getEntrySkillNames() {
54
- return getEntrySkills().map((s) => s.name);
55
- }
56
- /** The router (`gooseworks`): specialist routes, the video pointer and the terminal data commands. */
57
- function getMasterSkillContent() {
58
- return `---
59
- name: gooseworks
60
- slug: gooseworks
61
- description: >
62
- GooseWorks growth coworker and router for markets, competitors, audiences, creators,
63
- campaigns, ads, photos, graphics, video, content, email, SEO, social, leads and contacts.
64
- Use for brand facts or copy too, so offers, prices, rules, audience and bestsellers
65
- reach the brand's Marketing Brain.
66
- category: general
67
- version: 2.2.1
68
- author: GooseWorks
69
- tags: [gooseworks, data, scraping, search, research, gtm, leads, prospecting, ads, video]
70
- ---
71
-
72
- # GooseWorks
73
-
74
- Route specialist jobs to their skills; use GooseWorks for web and social data.
75
-
76
- ## First steps
77
-
78
- 1. Discover the listed setup/status action and read brand/task state. Complete missing facts;
79
- preserve the selected brand/task and continue once setup is done.
80
- 2. Read brand_read and advertised knowledge actions for rules/evidence; pass results to the
81
- playbook. Use legacy action names only when listed; ask only what remains ambiguous.
82
- 3. Save lasting human brand facts in their words through the listed typed knowledge action.
83
- Keep guesses and temporary creative choices as proposals; follow claim, rights and approval
84
- rules. Generic context is not approved product proof.
85
-
86
- ## Skill routes
87
-
88
- | If the user wants… | Route to | How |
89
- | --- | --- | --- |
90
- ${(0, routes_1.renderDomainRouteTable)()}
91
- | Anything else: find a skill or a single step | (stay here) | catalog_search, or \`gooseworks search\` in a terminal; see "Data work". |
92
-
93
- ## Marketing playbooks
94
-
95
- | Job | Playbook |
96
- | --- | --- |
97
- ${(0, routes_1.renderBrandGrowthTable)()}
98
-
99
- Fetch playbook, dependencies and brand context. Static creation requires make-static-ads;
100
- fetch it or stop. Its research and selection run even for one ad or finals only.
101
- Raw lists: marketing-data-access; voice: voice-card. Supplied surveys use ordinary report
102
- writing. Skip unrelated calendar/campaign intake.
103
-
104
- ## Data work
105
-
106
- In chat, catalog_search finds skills, catalog_fetch opens them, data_get/data_post run paid
107
- data calls and account_whoami shows credits.
108
-
109
- In a terminal:
110
-
111
- - \`gooseworks search "<task>"\` finds a skill; \`gooseworks fetch <slug>\` prints instructions and dependencies.
112
- - Save scripts/files under \`/tmp/gooseworks-scripts/<slug>/\` (files under \`tools/\` go to
113
- \`/tmp/gooseworks-scripts/tools/\`), never in the user's project.
114
- - \`gooseworks call <provider> <path>\` calls a provider through GooseWorks; \`--query\` and \`--body\`
115
- take JSON. Use it in place of any raw request a skill shows. A script that needs the GooseWorks
116
- settings gets them from \`gooseworks env\`.
117
- - When no skill fits, \`gooseworks orthogonal find "<task>"\` finds an API,
118
- \`gooseworks orthogonal describe <api> <path>\` shows its parameters and \`gooseworks call\` runs it.
119
- - \`gooseworks credits\` shows the balance. If a command says you are not signed in, run
120
- \`gooseworks login\` and let the customer finish signing in. In a cloud sandbox or over SSH,
121
- run \`gooseworks login --device --no-wait\`, show the customer its link and code, and run
122
- \`gooseworks login --device\` once they approve.
123
- - No GooseWorks actions here but a signed-in CLI? \`gooseworks tool --list\` lists them;
124
- \`gooseworks tool <name> '<json>'\` calls one.
125
- - Results go in \`~/Gooseworks/\` unless the customer names a place. Ask before saving, and never
126
- overwrite a file.
127
-
128
- Before paid calls, state the call count and total credits; wait for the customer's yes.
129
- Each paid answer reports its charge.
130
-
131
- ## Rules
132
-
133
- ${server_entry_skills_1.SERVER_ENTRY_SKILL_RULES.all}
134
- `;
135
- }
136
- /** Image ads: make, edit and study them. */
137
- function getGooseAdsSkillContent() {
138
- return `---
139
- name: goose-ads
140
- slug: goose-ads
141
- description: Edit, resize, animate and study image ads with GooseWorks in this chat. New static or image ads go to the make-static-ads skill when it is installed or catalog_fetch opens it. Read the brand and follow the active playbook, preserving factual prerequisites and approvals.
142
- category: ads
143
- version: 3.2.1
144
- author: GooseWorks
145
- ---
146
-
147
- # GooseWorks ads
148
-
149
- Use this entry for existing-ad operations and analysis. For new image ads, more ads, a winner's
150
- variations, copy/font changes, a rejected ad fix or a requested social graphic, fetch
151
- make-static-ads with catalog_fetch (or use the installed current package) and follow its
152
- research, selection, claims and quote gates. If it cannot be fetched, report that creation
153
- is unavailable on this connection and stop. The server generator is a different workflow,
154
- not a fallback for the missing playbook.
155
-
156
- - Save lasting human brand facts with the connection's listed knowledge action in their words.
157
- - A batch on its way: job_get. Finished ads: ads_read.
158
- - One finished ad: a new size, an animation, its tags or the customer's rating, all with ads_edit.
159
- - The customer's own image as a template: ads_template_save. Their files: media_upload.
160
- - Campaign planning/launch requests use their matching marketing playbook. Static creation for
161
- a campaign still uses make-static-ads; a campaign record is input, not a generation fallback.
162
- - How ads are doing: meta_read, or an analysis skill found with catalog_search, whose data comes
163
- through data_get and data_post.
164
-
165
- For these existing-ad actions, follow the actual execution next_step.
166
-
167
- ## Rules
168
-
169
- ${server_entry_skills_1.SERVER_ENTRY_SKILL_RULES.ads}
170
- `;
171
- }
172
- /** Product photos of the brand's real, physical products. */
173
- function getGooseProductPhotosSkillContent() {
174
- return `---
175
- name: goose-product-photos
176
- slug: goose-product-photos
177
- description: Make product photos (studio, lifestyle or on a model) of a brand's real products with GooseWorks in this chat. Start brand work with brain_map and follow the next_step in every answer.
178
- category: ads
179
- version: 1.1.0
180
- author: GooseWorks
181
- ---
182
-
183
- # GooseWorks product photos
184
-
185
- Use GooseWorks to photograph the customer's physical products, here in this chat. A software
186
- screen or an app is not a product photo.
187
-
188
- - A fact the customer states about the brand (a price, a rule, their audience): save it with
189
- brain_save in their words, never in your own notes, and confirm in one line.
190
- - Offer the brand's real products from brand_read; never describe one you can't see. A product
191
- that isn't listed yet: brand_update adds it from its page. A photo the customer sends:
192
- media_upload.
193
- - photos_generate makes the photos: get its price first, tell the customer the credit total, and
194
- make them only after their yes. Show a person only when the customer asks for one and confirms
195
- they have the rights.
196
- - Follow the photos with photos_read until they are ready.
197
- - Keep or drop photos with media_update. Only kept photos join the brand kit and reach ads.
198
-
199
- Then follow the next_step in every answer.
200
-
201
- ## Rules
202
-
203
- ${server_entry_skills_1.SERVER_ENTRY_SKILL_RULES.photos}
204
- `;
205
- }
206
- /** The reviewed goose-video snapshot, including its approval-only backport. */
207
- function getGooseVideoSkillContent() {
208
- return server_entry_skills_1.SERVER_VIDEO_ENTRY_SKILLS['goose-video'];
209
- }
210
- /** The reviewed make-custom-video snapshot, including its approval-only backport. */
211
- function getMakeCustomVideoSkillContent() {
212
- return server_entry_skills_1.SERVER_VIDEO_ENTRY_SKILLS['make-custom-video'];
213
- }
214
- /** One line: the kit makes the video when the server says so. */
215
- function getGooseVideoLocalSkillContent() {
216
- return `---
217
- name: goose-video-local
218
- description: Make an approved GooseWorks video when an answer's next_step gives its command.
219
- version: 1.0.3
220
- ---
221
-
222
- When an answer's next_step gives a command to make a video, its last line says who starts it and how: follow that line exactly, with the command exactly as given.
223
- `;
224
- }
225
- //# sourceMappingURL=master-skill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AAsCA,wCASC;AAGD,gDAEC;AAGD,sDA8EC;AAGD,0DAkCC;AAGD,8EAgCC;AAGD,8DAEC;AAGD,wEAEC;AAGD,wEASC;AAnOD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qCAA0E;AAC1E,+DAA4F;AAQ5F;;;;;;GAMG;AACH,SAAgB,cAAc;IAC5B,OAAO;QACL,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QACxD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE;QACzD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE;QAC7D,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,8BAA8B,EAAE,EAAE;QACxE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,8BAA8B,EAAE,EAAE;QACxE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE;KAC/E,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAgB,kBAAkB;IAChC,OAAO,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,sGAAsG;AACtG,SAAgB,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCP,IAAA,+BAAsB,GAAE;;;;;;;EAOxB,IAAA,+BAAsB,GAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCxB,8CAAwB,CAAC,GAAG;CAC7B,CAAC;AACF,CAAC;AAED,4CAA4C;AAC5C,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BP,8CAAwB,CAAC,GAAG;CAC7B,CAAC;AACF,CAAC;AAED,6DAA6D;AAC7D,SAAgB,iCAAiC;IAC/C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BP,8CAAwB,CAAC,MAAM;CAChC,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,SAAgB,yBAAyB;IACvC,OAAO,+CAAyB,CAAC,aAAa,CAAC,CAAC;AAClD,CAAC;AAED,qFAAqF;AACrF,SAAgB,8BAA8B;IAC5C,OAAO,+CAAyB,CAAC,mBAAmB,CAAC,CAAC;AACxD,CAAC;AAED,iEAAiE;AACjE,SAAgB,8BAA8B;IAC5C,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC"}
@@ -1,73 +0,0 @@
1
- /**
2
- * THE routing table for the GooseWorks skill family (GOOSE-3190).
3
- *
4
- * Routing used to be written out by hand in THREE places that drifted apart:
5
- * 1. this CLI's `gooseworks` router SKILL.md (`master-skill.ts`),
6
- * 2. the backend's entry-skill list
7
- * (`gooseworks-app/apps/api/src/services/entry-skills.ts`),
8
- * 3. the public skills repo's `collections/brand-growth`.
9
- *
10
- * This file is now the SINGLE SOURCE. `master-skill.ts` renders its markdown
11
- * tables from here (no hand-written route rows), `npm run generate:skills`
12
- * emits the machine-readable copy to `skills/routes.json` for the other two
13
- * repos to derive from, and `tests/skills/route-drift.test.ts` fails when any
14
- * of the three names a skill the others don't.
15
- *
16
- * The two consumers we cannot edit from this repo are represented by checked-in
17
- * snapshots under `tests/fixtures/`; each snapshot names the file to update when
18
- * the drift test fires.
19
- */
20
- /** How a routed skill reaches the agent. */
21
- export type RouteDelivery =
22
- /** Vendored by this CLI and installed to ~/.agents/skills/. */
23
- 'entry'
24
- /** Lives in goose-skills; fetched on demand with `gooseworks fetch <slug>`. */
25
- | 'fetch';
26
- export interface DomainRoute {
27
- /** The skill slug to route to. */
28
- skill: string;
29
- /** When this route applies — the left column of the router table. */
30
- when: string;
31
- /** How the agent gets the skill — the right column of the router table. */
32
- how: string;
33
- delivery: RouteDelivery;
34
- }
35
- export interface BrandGrowthRoute {
36
- /** The job to be done. */
37
- job: string;
38
- /** The skill slug(s) that do it, in order. */
39
- skills: string[];
40
- }
41
- /**
42
- * Domain routes — the "Route to the right skill FIRST" table. These are the
43
- * specialist skills the `gooseworks` router hands whole tasks to.
44
- */
45
- export declare const DOMAIN_ROUTES: DomainRoute[];
46
- /**
47
- * Entry skills the router does not route to. An app may still ask for them
48
- * by name, so the CLI keeps installing them.
49
- */
50
- export declare const UNROUTED_ENTRY_SKILLS: Readonly<Record<string, string>>;
51
- /**
52
- * Brand Growth routes — the marketing playbooks in the `brand-growth` collection,
53
- * one job and one playbook per row. Must stay in sync with
54
- * `goose-skills/collections/brand-growth/routes.json`, which is derived from this list.
55
- */
56
- export declare const BRAND_GROWTH_ROUTES: BrandGrowthRoute[];
57
- /** Every skill slug named by any route, deduped and sorted. */
58
- export declare function getRoutedSkillSlugs(): string[];
59
- /** Brand Growth slugs only (the ones the goose-skills collection must contain). */
60
- export declare function getBrandGrowthSkillSlugs(): string[];
61
- /** The machine-readable route table emitted to `skills/routes.json`. */
62
- export declare function getRouteManifest(): {
63
- $comment: string;
64
- version: number;
65
- domain_routes: DomainRoute[];
66
- brand_growth_routes: BrandGrowthRoute[];
67
- skills: string[];
68
- };
69
- /** Render the domain route table as the router SKILL.md markdown table body. */
70
- export declare function renderDomainRouteTable(): string;
71
- /** Render the Brand Growth job→skill table body. */
72
- export declare function renderBrandGrowthTable(): string;
73
- //# sourceMappingURL=routes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/skills/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,4CAA4C;AAC5C,MAAM,MAAM,aAAa;AACvB,+DAA+D;AAC7D,OAAO;AACT,+EAA+E;GAC7E,OAAO,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAiDtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAejD,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAK9C;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAInD;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,IAAI;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CASA;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C;AAED,oDAAoD;AACpD,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C"}
@@ -1,147 +0,0 @@
1
- "use strict";
2
- /**
3
- * THE routing table for the GooseWorks skill family (GOOSE-3190).
4
- *
5
- * Routing used to be written out by hand in THREE places that drifted apart:
6
- * 1. this CLI's `gooseworks` router SKILL.md (`master-skill.ts`),
7
- * 2. the backend's entry-skill list
8
- * (`gooseworks-app/apps/api/src/services/entry-skills.ts`),
9
- * 3. the public skills repo's `collections/brand-growth`.
10
- *
11
- * This file is now the SINGLE SOURCE. `master-skill.ts` renders its markdown
12
- * tables from here (no hand-written route rows), `npm run generate:skills`
13
- * emits the machine-readable copy to `skills/routes.json` for the other two
14
- * repos to derive from, and `tests/skills/route-drift.test.ts` fails when any
15
- * of the three names a skill the others don't.
16
- *
17
- * The two consumers we cannot edit from this repo are represented by checked-in
18
- * snapshots under `tests/fixtures/`; each snapshot names the file to update when
19
- * the drift test fires.
20
- */
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.BRAND_GROWTH_ROUTES = exports.UNROUTED_ENTRY_SKILLS = exports.DOMAIN_ROUTES = void 0;
23
- exports.getRoutedSkillSlugs = getRoutedSkillSlugs;
24
- exports.getBrandGrowthSkillSlugs = getBrandGrowthSkillSlugs;
25
- exports.getRouteManifest = getRouteManifest;
26
- exports.renderDomainRouteTable = renderDomainRouteTable;
27
- exports.renderBrandGrowthTable = renderBrandGrowthTable;
28
- /**
29
- * Domain routes — the "Route to the right skill FIRST" table. These are the
30
- * specialist skills the `gooseworks` router hands whole tasks to.
31
- */
32
- exports.DOMAIN_ROUTES = [
33
- {
34
- skill: 'marketing-data-access',
35
- when: 'Raw social post lists, engagement rankings or voices lists',
36
- how: 'Fetch marketing-data-access and follow focused-reads.md.',
37
- delivery: 'fetch',
38
- },
39
- {
40
- skill: 'voice-card',
41
- when: 'Learn a reusable brand or author voice from blog posts or social writing',
42
- how: 'Fetch it with catalog_fetch, or `gooseworks fetch voice-card` in a terminal.',
43
- delivery: 'fetch',
44
- },
45
- {
46
- skill: 'make-static-ads',
47
- when: 'Static/image ads, including campaigns, more ads, winner variants, copy/font changes or rejected-image fixes',
48
- how: 'Fetch with catalog_fetch or gooseworks fetch; follow selection/review/quote gates. Stop creation if unavailable.',
49
- delivery: 'fetch',
50
- },
51
- {
52
- skill: 'goose-ads',
53
- when: 'Change one ad already made in GooseWorks (an edit, a new size, its tags or rating), or save the customer\'s image as a template. New image ads: `make-static-ads`',
54
- how: 'Open it with catalog_fetch in a chat app, or the installed copy in a terminal.',
55
- delivery: 'entry',
56
- },
57
- {
58
- skill: 'goose-graphics',
59
- when: 'Charts, infographics, slides, social graphics, branded visual designs from a style or format',
60
- how: 'Fetch it with catalog_fetch, or `gooseworks fetch goose-graphics` in a terminal.',
61
- delivery: 'fetch',
62
- },
63
- {
64
- skill: 'goose-video',
65
- when: 'Any **video**: a video ad from a style, an original video from a brief or a reference video, or a video already started',
66
- how: 'Explicit custom skips the picker; otherwise watch the reference, read the brand and compare style constraints.',
67
- delivery: 'entry',
68
- },
69
- {
70
- skill: 'goose-product-photos',
71
- when: 'Make **product photos**: studio, lifestyle, marketplace, social or on a model',
72
- how: 'Open it with catalog_fetch in a chat app, or the installed copy in a terminal.',
73
- delivery: 'entry',
74
- },
75
- {
76
- skill: 'animate-image',
77
- when: 'Animate an approved static ad or product image',
78
- how: 'Fetch it with catalog_fetch, or `gooseworks fetch animate-image` in a terminal.',
79
- delivery: 'fetch',
80
- },
81
- ];
82
- /**
83
- * Entry skills the router does not route to. An app may still ask for them
84
- * by name, so the CLI keeps installing them.
85
- */
86
- exports.UNROUTED_ENTRY_SKILLS = {
87
- 'make-custom-video': 'Keeps an explicit custom choice without a picker, studies its reference and checks custom support; fetching this entry alone does not enable production.',
88
- 'goose-video-local': 'One line: a next_step that gives the kit command says who starts it.',
89
- };
90
- /**
91
- * Brand Growth routes — the marketing playbooks in the `brand-growth` collection,
92
- * one job and one playbook per row. Must stay in sync with
93
- * `goose-skills/collections/brand-growth/routes.json`, which is derived from this list.
94
- */
95
- exports.BRAND_GROWTH_ROUTES = [
96
- { job: 'Not sure what to do first', skills: ['where-to-start'] },
97
- { job: 'Market size, trends, brand watch and launch positioning', skills: ['research-market'] },
98
- { job: 'Competitor research, battlecards, landing-page tools and post engagers', skills: ['research-competitors'] },
99
- { job: 'Who buys and why; prospect lists, lead enrichment and work contacts', skills: ['research-audience'] },
100
- { job: 'Cold email and LinkedIn drafts, replies and an import file; you send', skills: ['write-outreach'] },
101
- { job: 'A campaign plan from a budget and a date', skills: ['plan-campaign'] },
102
- { job: 'New static image ads', skills: ['make-static-ads'] },
103
- { job: 'Launch, scale or pause paid ads', skills: ['run-paid-campaigns'] },
104
- { job: 'What worked; performance reports', skills: ['analyze-performance'] },
105
- { job: 'Subscriber email flows and broadcast drafts; you send', skills: ['email-lifecycle'] },
106
- { job: 'SEO audits, metrics, keyword gaps, topic clusters, page-set plans and AI visibility', skills: ['improve-search-visibility'] },
107
- { job: 'Influencers and UGC creators', skills: ['work-with-creators'] },
108
- { job: 'Posts, articles, newsletters and one or more content briefs', skills: ['make-content'] },
109
- { job: 'Organic social research, posts, voices, calendar and drafts', skills: ['run-organic-social'] },
110
- ];
111
- /** Every skill slug named by any route, deduped and sorted. */
112
- function getRoutedSkillSlugs() {
113
- const slugs = new Set();
114
- for (const r of exports.DOMAIN_ROUTES)
115
- slugs.add(r.skill);
116
- for (const r of exports.BRAND_GROWTH_ROUTES)
117
- for (const s of r.skills)
118
- slugs.add(s);
119
- return [...slugs].sort();
120
- }
121
- /** Brand Growth slugs only (the ones the goose-skills collection must contain). */
122
- function getBrandGrowthSkillSlugs() {
123
- const slugs = new Set();
124
- for (const r of exports.BRAND_GROWTH_ROUTES)
125
- for (const s of r.skills)
126
- slugs.add(s);
127
- return [...slugs].sort();
128
- }
129
- /** The machine-readable route table emitted to `skills/routes.json`. */
130
- function getRouteManifest() {
131
- return {
132
- $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.',
133
- version: 1,
134
- domain_routes: exports.DOMAIN_ROUTES,
135
- brand_growth_routes: exports.BRAND_GROWTH_ROUTES,
136
- skills: getRoutedSkillSlugs(),
137
- };
138
- }
139
- /** Render the domain route table as the router SKILL.md markdown table body. */
140
- function renderDomainRouteTable() {
141
- return exports.DOMAIN_ROUTES.map((r) => `| ${r.when} | **\`${r.skill}\`** | ${r.how} |`).join('\n');
142
- }
143
- /** Render the Brand Growth job→skill table body. */
144
- function renderBrandGrowthTable() {
145
- return exports.BRAND_GROWTH_ROUTES.map((r) => `| ${r.job} | ${r.skills.map((s) => `\`${s}\``).join(', ')} |`).join('\n');
146
- }
147
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/skills/routes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAiHH,kDAKC;AAGD,4DAIC;AAGD,4CAeC;AAGD,wDAIC;AAGD,wDAIC;AAnID;;;GAGG;AACU,QAAA,aAAa,GAAkB;IAC1C;QACE,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,4DAA4D;QAClE,GAAG,EAAE,0DAA0D;QAC/D,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,0EAA0E;QAChF,GAAG,EAAE,8EAA8E;QACnF,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,6GAA6G;QACnH,GAAG,EAAE,kHAAkH;QACvH,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,mKAAmK;QACzK,GAAG,EAAE,gFAAgF;QACrF,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,8FAA8F;QACpG,GAAG,EAAE,kFAAkF;QACvF,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,yHAAyH;QAC/H,GAAG,EAAE,gHAAgH;QACrH,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,+EAA+E;QACrF,GAAG,EAAE,gFAAgF;QACrF,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,gDAAgD;QACtD,GAAG,EAAE,iFAAiF;QACtF,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC;AAEF;;;GAGG;AACU,QAAA,qBAAqB,GAAqC;IACrE,mBAAmB,EAAE,0JAA0J;IAC/K,mBAAmB,EAAE,sEAAsE;CAC5F,CAAC;AAEF;;;;GAIG;AACU,QAAA,mBAAmB,GAAuB;IACrD,EAAE,GAAG,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;IAChE,EAAE,GAAG,EAAE,yDAAyD,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC/F,EAAE,GAAG,EAAE,wEAAwE,EAAE,MAAM,EAAE,CAAC,sBAAsB,CAAC,EAAE;IACnH,EAAE,GAAG,EAAE,qEAAqE,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE;IAC7G,EAAE,GAAG,EAAE,sEAAsE,EAAE,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE;IAC3G,EAAE,GAAG,EAAE,0CAA0C,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE;IAC9E,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC5D,EAAE,GAAG,EAAE,iCAAiC,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE;IAC1E,EAAE,GAAG,EAAE,kCAAkC,EAAE,MAAM,EAAE,CAAC,qBAAqB,CAAC,EAAE;IAC5E,EAAE,GAAG,EAAE,uDAAuD,EAAE,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE;IAC7F,EAAE,GAAG,EAAE,qFAAqF,EAAE,MAAM,EAAE,CAAC,2BAA2B,CAAC,EAAE;IACrI,EAAE,GAAG,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE;IACvE,EAAE,GAAG,EAAE,6DAA6D,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE;IAChG,EAAE,GAAG,EAAE,6DAA6D,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE;CACvG,CAAC;AAEF,+DAA+D;AAC/D,SAAgB,mBAAmB;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,qBAAa;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,2BAAmB;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,mFAAmF;AACnF,SAAgB,wBAAwB;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,2BAAmB;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,wEAAwE;AACxE,SAAgB,gBAAgB;IAO9B,OAAO;QACL,QAAQ,EACN,4NAA4N;QAC9N,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,qBAAa;QAC5B,mBAAmB,EAAE,2BAAmB;QACxC,MAAM,EAAE,mBAAmB,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAgB,sBAAsB;IACpC,OAAO,qBAAa,CAAC,GAAG,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,GAAG,IAAI,CACvD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,oDAAoD;AACpD,SAAgB,sBAAsB;IACpC,OAAO,2BAAmB,CAAC,GAAG,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,14 +0,0 @@
1
- /** The rulebook version of the unchanged shared rules snapshot. */
2
- export declare const SERVER_RULEBOOK_VERSION = "1.5.3";
3
- export declare const SERVER_VIDEO_ENTRY_SKILLS: {
4
- readonly 'goose-video': "---\nname: goose-video\ndescription: \"Make a video ad in this chat from a real reference ad, found or theirs; styles are the fallback. Follow every answer's next_step.\"\nversion: 4.5.0\n---\n\n# GooseWorks video\n\nFrom an installed entry, first catalog_fetch type skill goose-video on this same connection and follow that body. An entry already fetched in this run needs no repeat fetch.\n\nFor a video already started, call video_read and follow its next_step.\n\nNew videos default to a real reference ad remade for the brand (custom); ready-made styles are the fallback. Start with get_started (wants video, request). A card is not a pick or proof of viewing.\n\n1. The request. If they haven't said what the video is about, ask in one short question.\n2. The brand. Ask which brand only when brand_read lists several; with one, use it.\n3. The product. Named or none wanted: find its id with brand_read (sections: products), or use []. Otherwise the product card asks: say one line and wait. Without cards, ask which product by name; use the only one, or go on with none. Never ask again after a pick.\n4. Research. Read the kit, learnings and selected products with brand_read, then knowledge_search. Verify product size/use from facts and size-reference photos; resolve essential unknowns before planning. Note what to say and avoid.\n5. The reference. Their own video ad: video_create with style custom, request, products, its reference_url and a new UUID idempotency_key, then the custom rule. Otherwise, custom asked or not, video_references (action find) with the request and products ([] for none); it's free and reuses the brand's saved list unless they want new ideas (fresh: true). Show it as the answer says; they pick.\n6. The pick. video_references (action pick) with candidate_id, request, products and a new UUID idempotency_key starts the custom video. Then the custom rule.\n7. Styles, only if no found ad fits or they ask for a style or template: video_formats with the request and products; they pick. Card on screen: one line and wait; else print its table as it is. Then video_create with that style and the products.\n\n## A supplied video reference comes first\n\nWatch the whole video with sound before choosing a style or writing a custom plan, or use the server's measured reference profile. URLs, titles, thumbnails and frames are not viewing. Log the hook, scene order, pace, speech, framing, product interactions, text and ending with timestamps and gaps. Unreadable essentials need an accessible video or their brief-only choice; never claim a viewing.\nStyles vs a reference: fetch plausible templates and compare plan_note, scenes, duration, cast, sound and assets; titles and rankings prove no fit.\nCustom route (a picked or supplied reference, or explicit custom): catalog_fetch type skill make-custom-video on this connection before a project write and follow it: full harness, current schemas, two authenticated approvals, cumulative budgets, verified execution. Keep their mechanics and assets. If anything is unavailable, say so and keep the brief; never run a template's renderer as custom, import the reference as a finished video, use retired actions or switch environments. Fetching a skill proves no execution capability.\n\n## Rules\n\n- Talk to marketers: what they get and decide, never how it's made.\n- Never mention tools, ids, JSON, commands, software, vendors, models, timings, retries or your checks.\n- Everything happens here: never ask the customer to install anything or use a CLI, slash command or other app, except a video's make command when a next_step gives it; its last line says who starts it, and where this app does, never show it to them (original videos follow their own). Never give any other command, sign-in step or setting, and never ask them a technical question.\n- Money is a credit number exactly as an answer gives it: never dollars or your own math.\n- Follow the next_step in every answer.\n- Card on screen (display_hint \"widget\"): one short line at most, then the wait in its next_step or end your turn; never re-list it or open a question box.\n- Paid work needs the customer's yes to the credit total first, on the card or in chat at the price shown; never decide it for them, and pass on a yes only once they gave it to that total.\n- If you can run commands on the customer's computer, ask for the yes with the answer's own question: it says the video is then made on their computer, so that one yes covers starting it.\n- A yes is to the credit total the customer was shown: their press on the plan card, or their yes in chat sent with that total.\n- Every video approval, including a higher price or a priced fix, can happen in this chat. Show the plan and its price here when no card is visible; cards and websites are optional for approval.\n- Never invent an offer, a claim or proof.\n- GooseWorks holds every provider key and bills the work: never ask for a key, token, password or ad account id, and never call a vendor yourself.\n";
5
- readonly 'make-custom-video': "---\nname: make-custom-video\ndescription: \"Create a custom video with sourced product accuracy, explicit sound routing and exact-final audiovisual review.\"\nversion: 3.8.2\nrequires_skills: [video-production-harness]\nharness_binding: gooseworks/video-actions/v1\n---\n\n# Human version\n\nThe owner approves the script, then the actual ingredients and budget, in this chat; cards and Studio are optional. Production keeps the reference's format, the product and the sound. GooseWorks measures and judges the final itself.\n\n---\n\n# Agent version\n\n## Non-negotiables\n\n1. Watch every reference end to end with sound, or use the server's measured reference profile, and save the evidence before any script.\n2. Write the script with write-video-ad-script (catalog_fetch it; scripts without it are refused).\n3. Keep the reference's format: people stay people, demos stay demos, sound type stays. Otherwise list the change in changes_from_reference.\n4. The voice is the master clock. Never cut or retime sound apart from a talking face.\n5. Always real sound. No silent or tone tracks unless the owner asked for silence.\n6. Show the product correctly, at real size, from real photos.\n7. The review is listened or measured, never claimed.\n8. Under a deadline, deliver fewer correct videos. Never downgrade a format.\n\nRead one file per call; if output says truncated, re-read in parts. Fetch make-custom-video on this connection and read live schemas before writes. Keep this environment; no retired actions or reference-as-final import.\n\n## Load and resume\n\nFetch the complete video-production-harness with catalog_fetch delivery archive; read SKILL.md and its phase references and keep version/contentHash/files. Mixed or incomplete packages block work. Resume recorded jobs with video_read; never resend a batch instead of polling.\nCustom skips the style picker. With a supplied reference, create once with style custom, its reference_url and a UUID idempotency_key reused on retries. Without one, run video_references find with the request and products and show the list; the owner's pick goes to video_references pick, which creates the project. Never use a template's demo as the reference. Keep requested mechanics, assets, products and campaign. Resume the same project, plan_revision, approvals and production_manifest.\n\n## Reference, product and creative contract\n\nRead brand_read and knowledge_search. Source product geometry, colour, label, allowed use and scale; size-sensitive shots need dimensions or a known-scale photo. Never guess capacity or invent a real process.\nSave reference_observation bound to media_id/media_revision with duration, full coverage, audio_perception (listened, or measured from the server's sound profile), motion_perception and timed picture/audio findings. Skipping a reference needs the owner's brief-only user_quote.\nSave draft.creative_contract: speech_mode, soundtrack_modes, required_features, reference_map per scene (beat/action/proof/sound), sourced product_grounding, voice_plan and changes_from_reference. Native speech keeps source audio; external speech over a speaking face needs exact-audio lip sync. No detected words never authorizes mute.\nMatch capture/finish to the brief/reference; phone texture only for phone footage. Read harness references/talking-actor.md for speaking people: three actor options when needed, then playable voice choices beside the selected actor. Compare the generated voice with its audition.\n\n## Save and review twice\n\nvideo_change needs expected_revision and the current brand_context_digest; never author server context. Price paid requests free and read-only with data_price_provider (up to 20 per call; follow any price_unknown entry's next_step first). Save the shot_list with the script so the server prices Standard and Best, and put picture-upgrade money (about two pictures at high) in render_estimate.upgrade_allowance; it pays for no clip.\nShow the full saved script, then the actual playable ingredients and exact cumulative budget, here. At the script, show both approval_quote.tier_quotes totals as given, with no math of your own, and let the owner pick. Seedance is in neither total: offer each seedance_addons price, and only the owner's yes adds it. After the owner's explicit yes, call video_approve with the custom phase, review_token and total_credits from custom_review.approval_quote (with their quality_tier and its total when there are two), expected_revision and their words as user_quote. Never infer consent or approve yourself. Honor Stop.\n\n## Produce, assemble and deliver\n\nWith fitting parts, save the kit block and follow video_make after ingredient approval; otherwise run on the customer's verified shell, never a cloud sandbox. Report progress per paid piece.\nReview the first take and the riskiest product action before batching. Send every clip to clip_check; the final may use only checked bytes. Save full prompts/settings and source-byte clip reviews as custom production.\nBuild the source-linked assembly_timeline: native picture and audio ranges stay together, pauses and freezes are declared, real soundtrack cues. Edits invalidate affected evidence.\nReview the exact final at normal speed: listen, or rely on the server's final_measure and frame judge (measured). Save quality_report.content_review with final SHA-256, timeline and creative_contract revisions, reviewer, capabilities, full coverage and per-dimension findings. Serious defects block delivery.\nDirect builds also need the stored rebuild recipe (references/recipe-format.md). Complete with the confirmed same-project H.264/AAC MP4 URL and report complete again while server checks run. Kit uploads follow the saved review request. Pin only the checked version.\n\nUse plain words and returned credits. Never invent claims, approvals, assets or passing checks.\n";
6
- };
7
- export type ServerVideoEntrySlug = keyof typeof SERVER_VIDEO_ENTRY_SKILLS;
8
- /** renderEntrySkillRules(product) for the products the CLI's own entry skills cover. */
9
- export declare const SERVER_ENTRY_SKILL_RULES: {
10
- readonly all: "- Talk to marketers: what they get and decide, never how it's made.\n- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.\n- Everything happens here: never ask the customer to install anything or use a CLI, slash command or other app, except a video's make command when a next_step gives it; its last line says who starts it, and where this app does, never show it to them (original videos follow their own). Never give any other command, sign-in step or setting, and never ask them a technical question.\n- Money is a credit number exactly as an answer gives it: never dollars or your own math.\n- Follow next_step for factual setup, claim/rights restrictions, spend approval, execution, polling and publishing. A fetched playbook owns research, creative planning and review gates; generic speed/planning suggestions do not waive them.\n- A card for an unresolved choice: show it and wait as directed. Already completed setup and a selected task continue in the active playbook; preserve its required gates.\n- Paid work needs the customer's yes to the credit total first, on the card or in chat at the price shown; never decide it for them, and pass on a yes only once they gave it to that total.\n- Never invent an offer, a claim or proof.\n- GooseWorks holds every provider key and bills the work: never ask for a key, token, password or ad account id, and never call a vendor yourself.";
11
- readonly ads: "- Talk to marketers: what they get and decide, never how it's made.\n- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.\n- Everything happens here: never ask the customer to install anything or use a CLI, slash command or other app, except a video's make command when a next_step gives it; its last line says who starts it, and where this app does, never show it to them (original videos follow their own). Never give any other command, sign-in step or setting, and never ask them a technical question.\n- Money is a credit number exactly as an answer gives it: never dollars or your own math.\n- Follow next_step for factual setup, claim/rights restrictions, spend approval, execution, polling and publishing. A fetched playbook owns research, creative planning and review gates; generic speed/planning suggestions do not waive them.\n- A card for an unresolved choice: show it and wait as directed. Already completed setup and a selected task continue in the active playbook; preserve its required gates.\n- Paid work needs the customer's yes to the credit total first, on the card or in chat at the price shown; never decide it for them, and pass on a yes only once they gave it to that total.\n- Read the brand and its listed knowledge actions for core rules and task evidence. Never guess unknown facts.\n- Never invent an offer, a claim or proof.\n- GooseWorks holds every provider key and bills the work: never ask for a key, token, password or ad account id, and never call a vendor yourself.";
12
- readonly photos: "- Talk to marketers: what they get and decide, never how it's made.\n- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.\n- Everything happens here: never ask the customer to install anything or use a CLI, slash command or other app, except a video's make command when a next_step gives it; its last line says who starts it, and where this app does, never show it to them (original videos follow their own). Never give any other command, sign-in step or setting, and never ask them a technical question.\n- Money is a credit number exactly as an answer gives it: never dollars or your own math.\n- Follow the next_step in every answer.\n- Card on screen (display_hint \"widget\"): one short line at most, then the wait in its next_step or end your turn; never re-list it or open a question box.\n- Paid work needs the customer's yes to the credit total first, on the card or in chat at the price shown; never decide it for them, and pass on a yes only once they gave it to that total.\n- Start brand work with brain_map and its core. Open the chapters the job needs; search gaps. Never guess unknown facts.\n- Never invent an offer, a claim or proof.\n- GooseWorks holds every provider key and bills the work: never ask for a key, token, password or ad account id, and never call a vendor yourself.";
13
- };
14
- //# sourceMappingURL=server-entry-skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-entry-skills.d.ts","sourceRoot":"","sources":["../../src/skills/server-entry-skills.ts"],"names":[],"mappings":"AAyBA,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,eAAO,MAAM,yBAAyB;;;CAoG5B,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAE1E,wFAAwF;AACxF,eAAO,MAAM,wBAAwB;;;;CA8B3B,CAAC"}