gooseworks 0.6.0-dev.70.37e3826a → 0.6.0-dev.72.31ed8cb2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +33 -15
- package/dist/skills/master-skill.js.map +1 -1
- package/dist/skills/server-entry-skills.d.ts +4 -4
- package/dist/skills/server-entry-skills.d.ts.map +1 -1
- package/dist/skills/server-entry-skills.js +12 -10
- package/dist/skills/server-entry-skills.js.map +1 -1
- package/package.json +2 -2
- package/skills/goose-ads/SKILL.md +15 -10
- package/skills/goose-product-photos/SKILL.md +7 -5
- package/skills/gooseworks/SKILL.md +19 -8
- package/skills/manifest.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAS7C;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAS7C;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,IAAI,MAAM,CAwF9C;AAED,4CAA4C;AAC5C,wBAAgB,uBAAuB,IAAI,MAAM,CAsChD;AAED,6DAA6D;AAC7D,wBAAgB,iCAAiC,IAAI,MAAM,CAgC1D;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,qFAAqF;AACrF,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,iEAAiE;AACjE,wBAAgB,8BAA8B,IAAI,MAAM,CASvD"}
|
|
@@ -62,9 +62,11 @@ description: >
|
|
|
62
62
|
GooseWorks growth coworker and router. Research brands, customers, competitors, creators,
|
|
63
63
|
markets and prospects; make and study ads, product photos, graphics and video; search and
|
|
64
64
|
scrape public web and social data; find and enrich leads. The one GooseWorks entry point
|
|
65
|
-
for brand growth, B2B, sales, research and GTM work.
|
|
65
|
+
for brand growth, B2B, sales, research and GTM work. Also use it when the user mentions their
|
|
66
|
+
GooseWorks brand's offers, prices, rules, audience or bestsellers, or wants copy for it
|
|
67
|
+
(captions, posts, emails), so those facts reach its Marketing Brain.
|
|
66
68
|
category: general
|
|
67
|
-
version: 2.0
|
|
69
|
+
version: 2.1.0
|
|
68
70
|
author: GooseWorks
|
|
69
71
|
tags: [gooseworks, data, scraping, search, research, gtm, leads, prospecting, ads, video]
|
|
70
72
|
---
|
|
@@ -79,10 +81,19 @@ social data. Hand specialist work to its skill; do data work here.
|
|
|
79
81
|
1. Before the first task, call brand_setup with action status and follow only its next_step;
|
|
80
82
|
save each answer with brand_setup. Once an answer says setup is done, carry on their
|
|
81
83
|
request without asking again.
|
|
82
|
-
2.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
2. Before brand work, call brain_map for the brand and read its core (brand_read lists brands;
|
|
85
|
+
ask which only if there are several). Open the chapters the task needs with brain_open and
|
|
86
|
+
search gaps with brain_search. Pass what you read to the skill you route to, and never ask
|
|
87
|
+
what the customer already answered.
|
|
88
|
+
3. When the customer states a fact about their brand (an offer and its dates, a price, a rule
|
|
89
|
+
like "never say X", their audience or voice, a bestseller, a launch, a correction), save it
|
|
90
|
+
at once with brain_save in their words, even for a copy-only request; never in your own
|
|
91
|
+
memory or notes. Only what they state as true and lasting for their marketing: not a
|
|
92
|
+
question, an idea you're trying, this piece's wording or private business numbers. Confirm
|
|
93
|
+
in one line. If it waits for their yes, say it's waiting in Marketing Brain, under Waiting
|
|
94
|
+
on you.
|
|
95
|
+
4. Use brand_update for products, the kit and setup, not facts. A missing fact the task needs:
|
|
96
|
+
ask one question, then save the answer.
|
|
86
97
|
|
|
87
98
|
## Route to the right skill
|
|
88
99
|
|
|
@@ -137,9 +148,9 @@ function getGooseAdsSkillContent() {
|
|
|
137
148
|
return `---
|
|
138
149
|
name: goose-ads
|
|
139
150
|
slug: goose-ads
|
|
140
|
-
description:
|
|
151
|
+
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. Start brand work with brain_map and follow the next_step in every answer.
|
|
141
152
|
category: ads
|
|
142
|
-
version: 3.0
|
|
153
|
+
version: 3.2.0
|
|
143
154
|
author: GooseWorks
|
|
144
155
|
---
|
|
145
156
|
|
|
@@ -148,12 +159,17 @@ author: GooseWorks
|
|
|
148
159
|
Use GooseWorks to make and improve the customer's image ads, here in this chat. Recommend one
|
|
149
160
|
direction with a one-line reason and offer at most two others.
|
|
150
161
|
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
|
|
162
|
+
- A fact the customer states about the brand (an offer, a price, a rule, their audience): save
|
|
163
|
+
it with brain_save in their words, never in your own notes, and confirm in one line.
|
|
164
|
+
- New static or image ads, more like a winning ad, new words or a new font on an ad, a rejected
|
|
165
|
+
ad to fix, or a social graphic: use the make-static-ads skill (installed, or opened with
|
|
166
|
+
catalog_fetch) and follow it instead of this list.
|
|
167
|
+
- Only when make-static-ads is neither installed nor opened by catalog_fetch: pick a source from
|
|
168
|
+
the brand's own ads and templates, or find one with catalog_search and open it with
|
|
169
|
+
catalog_fetch. ads_generate makes the ads: get its price first, tell the customer the credit
|
|
170
|
+
total, and make them only after their yes.
|
|
154
171
|
- A batch on its way: job_get. Finished ads: ads_read.
|
|
155
|
-
- One ad:
|
|
156
|
-
with ads_edit.
|
|
172
|
+
- One finished ad: a new size, an animation, its tags or the customer's rating, all with ads_edit.
|
|
157
173
|
- The customer's own image as a template: ads_template_save. Their files: media_upload.
|
|
158
174
|
- Campaigns: campaign_read, campaign_save and campaign_ideas. campaign_generate plans and prices a
|
|
159
175
|
campaign's ads; ads_review makes them once the customer says yes to the total.
|
|
@@ -172,9 +188,9 @@ function getGooseProductPhotosSkillContent() {
|
|
|
172
188
|
return `---
|
|
173
189
|
name: goose-product-photos
|
|
174
190
|
slug: goose-product-photos
|
|
175
|
-
description: Make product photos (studio, lifestyle or on a model) of a brand's real products with GooseWorks in this chat. Start with
|
|
191
|
+
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.
|
|
176
192
|
category: ads
|
|
177
|
-
version: 1.0
|
|
193
|
+
version: 1.1.0
|
|
178
194
|
author: GooseWorks
|
|
179
195
|
---
|
|
180
196
|
|
|
@@ -183,6 +199,8 @@ author: GooseWorks
|
|
|
183
199
|
Use GooseWorks to photograph the customer's physical products, here in this chat. A software
|
|
184
200
|
screen or an app is not a product photo.
|
|
185
201
|
|
|
202
|
+
- A fact the customer states about the brand (a price, a rule, their audience): save it with
|
|
203
|
+
brain_save in their words, never in your own notes, and confirm in one line.
|
|
186
204
|
- Offer the brand's real products from brand_read; never describe one you can't see. A product
|
|
187
205
|
that isn't listed yet: brand_update adds it from its page. A photo the customer sends:
|
|
188
206
|
media_upload.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AAsCA,wCASC;AAGD,gDAEC;AAGD,
|
|
1
|
+
{"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AAsCA,wCASC;AAGD,gDAEC;AAGD,sDAwFC;AAGD,0DAsCC;AAGD,8EAgCC;AAGD,8DAEC;AAGD,wEAEC;AAGD,wEASC;AAjPD;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CP,IAAA,+BAAsB,GAAE;;;;;;;EAOxB,IAAA,+BAAsB,GAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCxB,8CAAwB,CAAC,GAAG;CAC7B,CAAC;AACF,CAAC;AAED,4CAA4C;AAC5C,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCP,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,5 +1,5 @@
|
|
|
1
1
|
/** The rulebook version of the unchanged shared rules snapshot. */
|
|
2
|
-
export declare const SERVER_RULEBOOK_VERSION = "1.3
|
|
2
|
+
export declare const SERVER_RULEBOOK_VERSION = "1.5.3";
|
|
3
3
|
export declare const SERVER_VIDEO_ENTRY_SKILLS: {
|
|
4
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
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";
|
|
@@ -7,8 +7,8 @@ export declare const SERVER_VIDEO_ENTRY_SKILLS: {
|
|
|
7
7
|
export type ServerVideoEntrySlug = keyof typeof SERVER_VIDEO_ENTRY_SKILLS;
|
|
8
8
|
/** renderEntrySkillRules(product) for the products the CLI's own entry skills cover. */
|
|
9
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
|
|
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
|
|
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
|
|
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 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- 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 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.";
|
|
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
13
|
};
|
|
14
14
|
//# sourceMappingURL=server-entry-skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-entry-skills.d.ts","sourceRoot":"","sources":["../../src/skills/server-entry-skills.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
// Standard/Best prices included) is copied whole from gooseworks-app akhil/custom-first-default @ 50472f801 (PR #2076).
|
|
15
15
|
// Actor/voice selection and format guidance backported from the custom entry companion PR (2026-10-19).
|
|
16
16
|
// Custom review wording keeps approvals in this chat.
|
|
17
|
-
//
|
|
17
|
+
// The rules blocks (gooseworks, goose-ads, goose-product-photos) are rulebook 1.5.3 from gooseworks-app
|
|
18
|
+
// dev @ f9d52a970 (renderEntrySkillRules), captured 2026-10-19: ads and photos start brand work with brain_map.
|
|
19
|
+
// Other entries retain the earlier source above.
|
|
18
20
|
// Video entries combine the recorded server snapshots above. The rules blocks are
|
|
19
21
|
// the rulebook's entry-skill rules for the skills the CLI writes itself
|
|
20
22
|
// (gooseworks, goose-ads, goose-product-photos), so no skill restates a rule
|
|
@@ -24,7 +26,7 @@
|
|
|
24
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
27
|
exports.SERVER_ENTRY_SKILL_RULES = exports.SERVER_VIDEO_ENTRY_SKILLS = exports.SERVER_RULEBOOK_VERSION = void 0;
|
|
26
28
|
/** The rulebook version of the unchanged shared rules snapshot. */
|
|
27
|
-
exports.SERVER_RULEBOOK_VERSION = '1.3
|
|
29
|
+
exports.SERVER_RULEBOOK_VERSION = '1.5.3';
|
|
28
30
|
exports.SERVER_VIDEO_ENTRY_SKILLS = {
|
|
29
31
|
'goose-video': `---
|
|
30
32
|
name: goose-video
|
|
@@ -129,8 +131,8 @@ Use plain words and returned credits. Never invent claims, approvals, assets or
|
|
|
129
131
|
/** renderEntrySkillRules(product) for the products the CLI's own entry skills cover. */
|
|
130
132
|
exports.SERVER_ENTRY_SKILL_RULES = {
|
|
131
133
|
all: `- Talk to marketers: what they get and decide, never how it's made.
|
|
132
|
-
- Never mention tools, ids, JSON, commands, software, vendors, models, timings
|
|
133
|
-
- 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
|
|
134
|
+
- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.
|
|
135
|
+
- 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.
|
|
134
136
|
- Money is a credit number exactly as an answer gives it: never dollars or your own math.
|
|
135
137
|
- Follow the next_step in every answer.
|
|
136
138
|
- 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.
|
|
@@ -138,23 +140,23 @@ exports.SERVER_ENTRY_SKILL_RULES = {
|
|
|
138
140
|
- Never invent an offer, a claim or proof.
|
|
139
141
|
- 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.`,
|
|
140
142
|
ads: `- Talk to marketers: what they get and decide, never how it's made.
|
|
141
|
-
- Never mention tools, ids, JSON, commands, software, vendors, models, timings
|
|
142
|
-
- 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
|
|
143
|
+
- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.
|
|
144
|
+
- 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.
|
|
143
145
|
- Money is a credit number exactly as an answer gives it: never dollars or your own math.
|
|
144
146
|
- Follow the next_step in every answer.
|
|
145
147
|
- 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.
|
|
146
148
|
- 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.
|
|
147
|
-
-
|
|
149
|
+
- Start brand work with brain_map and its core. Open the chapters the job needs; search gaps. Never guess unknown facts.
|
|
148
150
|
- Never invent an offer, a claim or proof.
|
|
149
151
|
- 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.`,
|
|
150
152
|
photos: `- Talk to marketers: what they get and decide, never how it's made.
|
|
151
|
-
- Never mention tools, ids, JSON, commands, software, vendors, models, timings
|
|
152
|
-
- 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
|
|
153
|
+
- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.
|
|
154
|
+
- 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.
|
|
153
155
|
- Money is a credit number exactly as an answer gives it: never dollars or your own math.
|
|
154
156
|
- Follow the next_step in every answer.
|
|
155
157
|
- 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.
|
|
156
158
|
- 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.
|
|
157
|
-
-
|
|
159
|
+
- Start brand work with brain_map and its core. Open the chapters the job needs; search gaps. Never guess unknown facts.
|
|
158
160
|
- Never invent an offer, a claim or proof.
|
|
159
161
|
- 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.`,
|
|
160
162
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-entry-skills.js","sourceRoot":"","sources":["../../src/skills/server-entry-skills.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uEAAuE;AACvE,8EAA8E;AAC9E,EAAE;AACF,uEAAuE;AACvE,mFAAmF;AACnF,uFAAuF;AACvF,EAAE;AACF,oEAAoE;AACpE,qGAAqG;AACrG,mIAAmI;AACnI,oHAAoH;AACpH,wHAAwH;AACxH,wGAAwG;AACxG,sDAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"server-entry-skills.js","sourceRoot":"","sources":["../../src/skills/server-entry-skills.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,uEAAuE;AACvE,8EAA8E;AAC9E,EAAE;AACF,uEAAuE;AACvE,mFAAmF;AACnF,uFAAuF;AACvF,EAAE;AACF,oEAAoE;AACpE,qGAAqG;AACrG,mIAAmI;AACnI,oHAAoH;AACpH,wHAAwH;AACxH,wGAAwG;AACxG,sDAAsD;AACtD,wGAAwG;AACxG,gHAAgH;AAChH,iDAAiD;AACjD,kFAAkF;AAClF,wEAAwE;AACxE,6EAA6E;AAC7E,6EAA6E;AAC7E,sEAAsE;AACtE,iEAAiE;;;AAEjE,mEAAmE;AACtD,QAAA,uBAAuB,GAAG,OAAO,CAAC;AAElC,QAAA,yBAAyB,GAAG;IACvC,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ChB;IACC,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDtB;CACS,CAAC;AAIX,wFAAwF;AAC3E,QAAA,wBAAwB,GAAG;IACtC,GAAG,EAAE;;;;;;;;mJAQ4I;IACjJ,GAAG,EAAE;;;;;;;;;mJAS4I;IACjJ,MAAM,EAAE;;;;;;;;;mJASyI;CACzI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gooseworks",
|
|
3
|
-
"version": "0.6.0-dev.
|
|
3
|
+
"version": "0.6.0-dev.72.31ed8cb2",
|
|
4
4
|
"description": "GooseWorks CLI — give your coding agent real data tools",
|
|
5
5
|
"bin": {
|
|
6
6
|
"gooseworks": "./dist/index.js"
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"homepage": "https://gooseworks.ai",
|
|
78
78
|
"author": "GooseWorks <help@gooseworks.ai>",
|
|
79
79
|
"gooseworksRelease": {
|
|
80
|
-
"commit": "
|
|
80
|
+
"commit": "31ed8cb27029fbc8542a9f08a4d2af62f6f7a0c9",
|
|
81
81
|
"branch": "dev"
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: goose-ads
|
|
3
3
|
slug: goose-ads
|
|
4
|
-
description:
|
|
4
|
+
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. Start brand work with brain_map and follow the next_step in every answer.
|
|
5
5
|
category: ads
|
|
6
|
-
version: 3.0
|
|
6
|
+
version: 3.2.0
|
|
7
7
|
author: GooseWorks
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -12,12 +12,17 @@ author: GooseWorks
|
|
|
12
12
|
Use GooseWorks to make and improve the customer's image ads, here in this chat. Recommend one
|
|
13
13
|
direction with a one-line reason and offer at most two others.
|
|
14
14
|
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
- A fact the customer states about the brand (an offer, a price, a rule, their audience): save
|
|
16
|
+
it with brain_save in their words, never in your own notes, and confirm in one line.
|
|
17
|
+
- New static or image ads, more like a winning ad, new words or a new font on an ad, a rejected
|
|
18
|
+
ad to fix, or a social graphic: use the make-static-ads skill (installed, or opened with
|
|
19
|
+
catalog_fetch) and follow it instead of this list.
|
|
20
|
+
- Only when make-static-ads is neither installed nor opened by catalog_fetch: pick a source from
|
|
21
|
+
the brand's own ads and templates, or find one with catalog_search and open it with
|
|
22
|
+
catalog_fetch. ads_generate makes the ads: get its price first, tell the customer the credit
|
|
23
|
+
total, and make them only after their yes.
|
|
18
24
|
- A batch on its way: job_get. Finished ads: ads_read.
|
|
19
|
-
- One ad:
|
|
20
|
-
with ads_edit.
|
|
25
|
+
- One finished ad: a new size, an animation, its tags or the customer's rating, all with ads_edit.
|
|
21
26
|
- The customer's own image as a template: ads_template_save. Their files: media_upload.
|
|
22
27
|
- Campaigns: campaign_read, campaign_save and campaign_ideas. campaign_generate plans and prices a
|
|
23
28
|
campaign's ads; ads_review makes them once the customer says yes to the total.
|
|
@@ -29,12 +34,12 @@ Then follow the next_step in every answer.
|
|
|
29
34
|
## Rules
|
|
30
35
|
|
|
31
36
|
- Talk to marketers: what they get and decide, never how it's made.
|
|
32
|
-
- Never mention tools, ids, JSON, commands, software, vendors, models, timings
|
|
33
|
-
- 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
|
|
37
|
+
- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.
|
|
38
|
+
- 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.
|
|
34
39
|
- Money is a credit number exactly as an answer gives it: never dollars or your own math.
|
|
35
40
|
- Follow the next_step in every answer.
|
|
36
41
|
- 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.
|
|
37
42
|
- 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.
|
|
38
|
-
-
|
|
43
|
+
- Start brand work with brain_map and its core. Open the chapters the job needs; search gaps. Never guess unknown facts.
|
|
39
44
|
- Never invent an offer, a claim or proof.
|
|
40
45
|
- 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.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: goose-product-photos
|
|
3
3
|
slug: goose-product-photos
|
|
4
|
-
description: Make product photos (studio, lifestyle or on a model) of a brand's real products with GooseWorks in this chat. Start with
|
|
4
|
+
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.
|
|
5
5
|
category: ads
|
|
6
|
-
version: 1.0
|
|
6
|
+
version: 1.1.0
|
|
7
7
|
author: GooseWorks
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -12,6 +12,8 @@ author: GooseWorks
|
|
|
12
12
|
Use GooseWorks to photograph the customer's physical products, here in this chat. A software
|
|
13
13
|
screen or an app is not a product photo.
|
|
14
14
|
|
|
15
|
+
- A fact the customer states about the brand (a price, a rule, their audience): save it with
|
|
16
|
+
brain_save in their words, never in your own notes, and confirm in one line.
|
|
15
17
|
- Offer the brand's real products from brand_read; never describe one you can't see. A product
|
|
16
18
|
that isn't listed yet: brand_update adds it from its page. A photo the customer sends:
|
|
17
19
|
media_upload.
|
|
@@ -26,12 +28,12 @@ Then follow the next_step in every answer.
|
|
|
26
28
|
## Rules
|
|
27
29
|
|
|
28
30
|
- Talk to marketers: what they get and decide, never how it's made.
|
|
29
|
-
- Never mention tools, ids, JSON, commands, software, vendors, models, timings
|
|
30
|
-
- 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
|
|
31
|
+
- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.
|
|
32
|
+
- 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.
|
|
31
33
|
- Money is a credit number exactly as an answer gives it: never dollars or your own math.
|
|
32
34
|
- Follow the next_step in every answer.
|
|
33
35
|
- 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.
|
|
34
36
|
- 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.
|
|
35
|
-
-
|
|
37
|
+
- Start brand work with brain_map and its core. Open the chapters the job needs; search gaps. Never guess unknown facts.
|
|
36
38
|
- Never invent an offer, a claim or proof.
|
|
37
39
|
- 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.
|
|
@@ -5,9 +5,11 @@ description: >
|
|
|
5
5
|
GooseWorks growth coworker and router. Research brands, customers, competitors, creators,
|
|
6
6
|
markets and prospects; make and study ads, product photos, graphics and video; search and
|
|
7
7
|
scrape public web and social data; find and enrich leads. The one GooseWorks entry point
|
|
8
|
-
for brand growth, B2B, sales, research and GTM work.
|
|
8
|
+
for brand growth, B2B, sales, research and GTM work. Also use it when the user mentions their
|
|
9
|
+
GooseWorks brand's offers, prices, rules, audience or bestsellers, or wants copy for it
|
|
10
|
+
(captions, posts, emails), so those facts reach its Marketing Brain.
|
|
9
11
|
category: general
|
|
10
|
-
version: 2.0
|
|
12
|
+
version: 2.1.0
|
|
11
13
|
author: GooseWorks
|
|
12
14
|
tags: [gooseworks, data, scraping, search, research, gtm, leads, prospecting, ads, video]
|
|
13
15
|
---
|
|
@@ -22,10 +24,19 @@ social data. Hand specialist work to its skill; do data work here.
|
|
|
22
24
|
1. Before the first task, call brand_setup with action status and follow only its next_step;
|
|
23
25
|
save each answer with brand_setup. Once an answer says setup is done, carry on their
|
|
24
26
|
request without asking again.
|
|
25
|
-
2.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
2. Before brand work, call brain_map for the brand and read its core (brand_read lists brands;
|
|
28
|
+
ask which only if there are several). Open the chapters the task needs with brain_open and
|
|
29
|
+
search gaps with brain_search. Pass what you read to the skill you route to, and never ask
|
|
30
|
+
what the customer already answered.
|
|
31
|
+
3. When the customer states a fact about their brand (an offer and its dates, a price, a rule
|
|
32
|
+
like "never say X", their audience or voice, a bestseller, a launch, a correction), save it
|
|
33
|
+
at once with brain_save in their words, even for a copy-only request; never in your own
|
|
34
|
+
memory or notes. Only what they state as true and lasting for their marketing: not a
|
|
35
|
+
question, an idea you're trying, this piece's wording or private business numbers. Confirm
|
|
36
|
+
in one line. If it waits for their yes, say it's waiting in Marketing Brain, under Waiting
|
|
37
|
+
on you.
|
|
38
|
+
4. Use brand_update for products, the kit and setup, not facts. A missing fact the task needs:
|
|
39
|
+
ask one question, then save the answer.
|
|
29
40
|
|
|
30
41
|
## Route to the right skill
|
|
31
42
|
|
|
@@ -90,8 +101,8 @@ for their yes. Each paid answer says what it charged.
|
|
|
90
101
|
## Rules
|
|
91
102
|
|
|
92
103
|
- Talk to marketers: what they get and decide, never how it's made.
|
|
93
|
-
- Never mention tools, ids, JSON, commands, software, vendors, models, timings
|
|
94
|
-
- 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
|
|
104
|
+
- Never mention tools, ids, JSON, commands, software, vendors, models, timings or retries; do say findings and cost.
|
|
105
|
+
- 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.
|
|
95
106
|
- Money is a credit number exactly as an answer gives it: never dollars or your own math.
|
|
96
107
|
- Follow the next_step in every answer.
|
|
97
108
|
- 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.
|
package/skills/manifest.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "gooseworks",
|
|
3
|
-
"version": "0.6.0-dev.
|
|
3
|
+
"version": "0.6.0-dev.72.31ed8cb2",
|
|
4
4
|
"entries": {
|
|
5
|
-
"gooseworks": "
|
|
6
|
-
"goose-ads": "
|
|
5
|
+
"gooseworks": "bfe2e3b4ba7115f627b7bead99273dfd608180f033538121e233c98ff688d7dc",
|
|
6
|
+
"goose-ads": "cec58f726db71c51173568320550d73afaa49e284f8a770ba8e964176d1af72a",
|
|
7
7
|
"goose-video": "3419174c9e984e974b7486a088df480b44fcc2004ad4dcadc9c50bce36d7fdf2",
|
|
8
8
|
"goose-video-local": "3c8c8aecbfe3d8e58e6393e28dc67dc36f9d4b8dcfb1603f8bc442786ce839ee",
|
|
9
9
|
"make-custom-video": "e2acbb5b920ed7e6ca6a990871a3b8734ed760bdfd00f7e89d7488dcb3b4c839",
|
|
10
|
-
"goose-product-photos": "
|
|
10
|
+
"goose-product-photos": "8ffbb7a9d61d6ab1a7c3710b0bf013c6abb479d1cc62cee38400ef39d4d116de"
|
|
11
11
|
}
|
|
12
12
|
}
|