gooseworks 0.3.1 → 0.3.3
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/README.md +12 -0
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +11 -1
- package/dist/commands/env.js.map +1 -1
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +22 -14
- package/dist/skills/master-skill.js.map +1 -1
- package/package.json +2 -2
- package/skills/gooseworks/SKILL.md +7 -8
package/README.md
CHANGED
|
@@ -134,6 +134,18 @@ npx gooseworks update
|
|
|
134
134
|
|
|
135
135
|
Standalone skills installed with `--with` skip the catalog search step. After `npx gooseworks install --claude --with goose-graphics`, you can invoke `/goose-graphics ...` directly from Claude Code.
|
|
136
136
|
|
|
137
|
+
## Security & data handling
|
|
138
|
+
|
|
139
|
+
We'd rather you know exactly what this CLI does before you run it:
|
|
140
|
+
|
|
141
|
+
- **Skill scripts are open source and fetched at runtime.** `gooseworks fetch <slug>` (and the skills that call it) download skill content and Python scripts from the GooseWorks catalog on demand, save them under `/tmp/gooseworks-scripts/`, and run them on your machine. Every skill and its scripts live in the public, open-source [goose-skills repo](https://github.com/gooseworks-ai/goose-skills/tree/main/skills) — the catalog is synced from there — so the code is the same maintained, auditable source you can read on GitHub. They're served from the catalog (kept current) rather than pinned to the installed CLI version, so you always get the latest version of a skill.
|
|
142
|
+
- **The MCP server is opt-in.** It's only registered when you pass `--mcp` (or `--all`). When you do, the CLI adds a `gooseworks` entry to `~/.claude.json` (Claude Code) or `~/.codex/config.toml` (Codex) that includes your bearer token in an `Authorization` header — this is how every HTTP MCP server authenticates. Skip `--mcp` if you don't want the server registered as a live tool provider; ads creation is the only feature that requires it.
|
|
143
|
+
- **Credentials are stored locally.** Your API key lives in `~/.gooseworks/credentials.json`, written with `0600` permissions in a `0700` directory. `gooseworks logout` deletes it.
|
|
144
|
+
- **`gooseworks env` exposes your key.** `eval $(gooseworks env)` exports `GOOSEWORKS_API_KEY` into your shell environment, where any process you run can read it. Most commands (e.g. `gooseworks call`) load credentials on their own — only use `env` when a script genuinely needs the environment variable.
|
|
145
|
+
- **No install hooks.** `npm install` only downloads files; nothing executes on install. The CLI has four dependencies (chalk, commander, open, ora), uses standard OAuth with CSRF protection, and makes all network calls over HTTPS.
|
|
146
|
+
|
|
147
|
+
Source for the CLI and skills lives at [github.com/gooseworks-ai/gooseworks](https://github.com/gooseworks-ai/gooseworks).
|
|
148
|
+
|
|
137
149
|
## What's Included
|
|
138
150
|
|
|
139
151
|
100+ skills across these categories:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,UAAU,SAoBnB,CAAC"}
|
package/dist/commands/env.js
CHANGED
|
@@ -32,19 +32,29 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.envCommand = void 0;
|
|
37
40
|
const commander_1 = require("commander");
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
38
42
|
const credentials_1 = require("../auth/credentials");
|
|
39
43
|
const logger = __importStar(require("../utils/logger"));
|
|
40
44
|
exports.envCommand = new commander_1.Command('env')
|
|
41
|
-
.description('Print shell export commands for GooseWorks credentials (use: eval $(gooseworks env))'
|
|
45
|
+
.description('Print shell export commands for GooseWorks credentials (use: eval $(gooseworks env)). ' +
|
|
46
|
+
'Note: this exposes your API key in the shell environment, where any process you run can read it. ' +
|
|
47
|
+
'Most commands (e.g. "gooseworks call") load credentials on their own — you usually do not need this.')
|
|
42
48
|
.action(() => {
|
|
43
49
|
const creds = (0, credentials_1.getCredentials)();
|
|
44
50
|
if (!creds) {
|
|
45
51
|
logger.error('Not logged in. Run "gooseworks login" first.');
|
|
46
52
|
process.exit(1);
|
|
47
53
|
}
|
|
54
|
+
// Warning goes to stderr so it never pollutes `eval $(gooseworks env)` (which captures stdout only).
|
|
55
|
+
console.error(chalk_1.default.yellow(' ⚠') +
|
|
56
|
+
' This exports your GOOSEWORKS_API_KEY into the shell environment, where any process you run can read it.\n' +
|
|
57
|
+
' Prefer commands that load credentials directly (e.g. "gooseworks call"); only export when a script truly needs the env var.');
|
|
48
58
|
console.log(`export GOOSEWORKS_API_KEY="${creds.api_key}"`);
|
|
49
59
|
console.log(`export GOOSEWORKS_API_BASE="${creds.api_base}"`);
|
|
50
60
|
});
|
package/dist/commands/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,qDAAqD;AACrD,wDAA0C;AAE7B,QAAA,UAAU,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CACV,wFAAwF;IACtF,mGAAmG;IACnG,sGAAsG,CACzG;KACA,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,KAAK,GAAG,IAAA,4BAAc,GAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,qGAAqG;IACrG,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,4GAA4G;QAC5G,mIAAmI,CACtI,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAK7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAK7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAuJ9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAsLhD"}
|
|
@@ -37,7 +37,7 @@ tags: [gooseworks, data, scraping, search, reddit, twitter, linkedin, email, peo
|
|
|
37
37
|
|
|
38
38
|
# GooseWorks
|
|
39
39
|
|
|
40
|
-
You have access to GooseWorks — a toolkit with 100+ data skills for scraping, research, lead generation, enrichment, and more.
|
|
40
|
+
You have access to GooseWorks — a toolkit with 100+ data skills for scraping, research, lead generation, enrichment, and more. Reach for a GooseWorks skill when it's the right tool: data at scale, sources behind auth, or specific providers (Twitter/X, Reddit, LinkedIn, people/company enrichment).
|
|
41
41
|
|
|
42
42
|
This skill is also the **parent router** for the GooseWorks family. Data/GTM work you handle here (see "How to Use"); specialized work you hand off to a dedicated \`goose-*\` skill.
|
|
43
43
|
|
|
@@ -162,14 +162,13 @@ gooseworks call apify acts/parseforge~reddit-posts-scraper/runs --body='{"subred
|
|
|
162
162
|
|
|
163
163
|
## Rules
|
|
164
164
|
|
|
165
|
-
1. **
|
|
166
|
-
2. **
|
|
167
|
-
3. **
|
|
168
|
-
4. **
|
|
169
|
-
5. **
|
|
170
|
-
6. **
|
|
171
|
-
7. **
|
|
172
|
-
8. **Prefer \`gooseworks call\` over raw curl** — if it returns an error, first fix the parameters (check types, required fields, format) and retry. Only fall back to raw curl if you have strong reason to believe it is a CLI bug, not a parameter issue.
|
|
165
|
+
1. **Consider a GooseWorks skill when it fits the task** — scraping, research, lead gen, enrichment, especially at scale, behind auth, or from a specific source. For a quick lookup your built-in tools are fine; use your judgement and pick the best tool for the user.
|
|
166
|
+
2. **Before paid operations**, tell the user the estimated credit cost
|
|
167
|
+
3. **If a \`gooseworks\` command exits with "Not logged in"**: tell the user to run \`npx gooseworks login\`
|
|
168
|
+
4. **Parse JSON responses** and present data in a readable format to the user
|
|
169
|
+
5. **When running scripts**: save to \`/tmp/gooseworks-scripts/\`, install pip deps, then execute. NEVER pollute the user's project directory
|
|
170
|
+
6. **Output files default to \`~/Gooseworks/\`** — always confirm with the user before saving
|
|
171
|
+
7. **Prefer \`gooseworks call\` over raw curl** — if it returns an error, first fix the parameters (check types, required fields, format) and retry. Only fall back to raw curl if you have strong reason to believe it is a CLI bug, not a parameter issue.
|
|
173
172
|
`;
|
|
174
173
|
}
|
|
175
174
|
/**
|
|
@@ -261,10 +260,15 @@ decide — fine, but prefer sending the app defaults for predictable parity.
|
|
|
261
260
|
research isn't finished yet the batch comes back \`status: "queued"\` — it auto-runs the moment
|
|
262
261
|
research completes; tell the user it'll appear shortly, don't error.
|
|
263
262
|
- \`estimate_remix_batch { items, engine?, quality? }\` — cost preview (images, credits_per_image,
|
|
264
|
-
total_credits, available_credits).
|
|
263
|
+
total_credits, available_credits). \`template_id\` accepts a uuid OR a slug. Reserves nothing. Use
|
|
264
|
+
to quote the cost first. Check \`unknown_template_ids\` in the response — any token there didn't
|
|
265
|
+
resolve (submit would 404 on it); don't quote a cost that silently dropped a bad id.
|
|
265
266
|
- \`get_remix_batch { batch_id }\` — poll status. Returns each creative with its renders and
|
|
266
|
-
\`completed\`/\`failed\`/\`pending\` counts, plus \`links\`. A creative is done when its
|
|
267
|
-
\`current_render_url\` is set
|
|
267
|
+
\`completed\`/\`failed\`/\`pending\` counts, plus \`links\`. A creative is done when its \`pending\` is 0
|
|
268
|
+
— NOT when \`current_render_url\` is set (during a regenerate that field still points at the prior
|
|
269
|
+
image). Each render carries \`age_seconds\` (since queued) and \`elapsed_seconds\` (time generating):
|
|
270
|
+
use them to tell a slow-but-healthy render from a stuck one. A render only failed when its
|
|
271
|
+
\`status\` is \`"failed"\` — never assume a stall and re-submit, that double-bills.
|
|
268
272
|
- \`list_brand_creatives { brand_id, limit?, offset? }\` — the brand's gallery feed (newest
|
|
269
273
|
first) + \`brand_url\`. Alternative poll target; also use to show everything made for a brand.
|
|
270
274
|
- \`regenerate_creative { project_id, mode?, prompt?, source_render_id?, ... }\` — **edit / re-roll
|
|
@@ -278,7 +282,9 @@ decide — fine, but prefer sending the app defaults for predictable parity.
|
|
|
278
282
|
- \`get_brand_kit { brand_id }\` — the CANONICAL brand context (name, description, audience,
|
|
279
283
|
voice, brandType, valueProps, colors, typography, logoUrl, \`products[]\`, presigned
|
|
280
284
|
\`referenceImages[]\`). Read this to choose \`product_name\` and any \`reference_image_urls\`.
|
|
281
|
-
- \`list_ad_brands\` / \`get_ad_brand { brand_id }\` — find/fetch a brand
|
|
285
|
+
- \`list_ad_brands { query? }\` / \`get_ad_brand { brand_id }\` — find/fetch a brand. Pass \`query\` to
|
|
286
|
+
filter by name (case-insensitive) instead of listing every brand; rows are lean (no \`brand_kit\` —
|
|
287
|
+
read \`get_brand_kit\` for the full kit).
|
|
282
288
|
- \`get_static_ad_template { template_id }\` — resolve a template (slug OR uuid; public catalog
|
|
283
289
|
AND your org's private templates). Confirms it exists before you submit.
|
|
284
290
|
- \`remix_community_ad { community_id }\` — a **Community** ad id is an \`ad_project\` id, not a
|
|
@@ -304,7 +310,9 @@ decide — fine, but prefer sending the app defaults for predictable parity.
|
|
|
304
310
|
quality, preserve_source_styling }\` using the app defaults above. Keep the returned \`batch_id\`
|
|
305
311
|
and \`links\`.
|
|
306
312
|
6. **Poll until done.** \`get_remix_batch { batch_id }\` (or \`list_brand_creatives\`) every ~20-30s
|
|
307
|
-
until every creative's \`pending\` is 0.
|
|
313
|
+
until every creative's \`pending\` is 0. Most images finish in a few minutes; text-heavy templates
|
|
314
|
+
and \`quality: high\` take longer. Read each render's \`elapsed_seconds\` rather than guessing — a
|
|
315
|
+
render that's still \`running\` is healthy; do NOT re-submit thinking it stalled (that double-bills).
|
|
308
316
|
7. **Hand back the links** from the batch's \`links\` block — \`brand_url\` (gallery) and each
|
|
309
317
|
creative's \`app_url\` — copied verbatim. Never end on just "done" or a file path.
|
|
310
318
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AA0BA,wCAKC;AAWD,
|
|
1
|
+
{"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AA0BA,wCAKC;AAWD,sDAuJC;AAiBD,0DAsLC;AA/WD,oDAAoD;AACpD,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;KAC1D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqJR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoLR,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gooseworks",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "GooseWorks CLI — give your coding agent real data tools",
|
|
5
5
|
"bin": {
|
|
6
6
|
"gooseworks": "./dist/index.js"
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"license": "MIT",
|
|
48
48
|
"repository": {
|
|
49
49
|
"type": "git",
|
|
50
|
-
"url": "https://github.com/gooseworks-ai/gooseworks
|
|
50
|
+
"url": "https://github.com/gooseworks-ai/gooseworks"
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://gooseworks.ai",
|
|
53
53
|
"author": "GooseWorks <help@gooseworks.ai>"
|
|
@@ -20,7 +20,7 @@ metadata:
|
|
|
20
20
|
|
|
21
21
|
# GooseWorks
|
|
22
22
|
|
|
23
|
-
You have access to GooseWorks — a toolkit with 100+ data skills for scraping, research, lead generation, enrichment, and more.
|
|
23
|
+
You have access to GooseWorks — a toolkit with 100+ data skills for scraping, research, lead generation, enrichment, and more. Reach for a GooseWorks skill when it's the right tool: data at scale, sources behind auth, or specific providers (Twitter/X, Reddit, LinkedIn, people/company enrichment).
|
|
24
24
|
|
|
25
25
|
This skill is also the **parent router** for the GooseWorks family. Data/GTM work you handle here (see "How to Use"); specialized work you hand off to a dedicated `goose-*` skill.
|
|
26
26
|
|
|
@@ -167,10 +167,9 @@ The `gooseworks` CLI sends authenticated requests (Bearer `GOOSEWORKS_API_KEY`)
|
|
|
167
167
|
|
|
168
168
|
## Rules
|
|
169
169
|
|
|
170
|
-
1. **
|
|
171
|
-
2. **
|
|
172
|
-
3. **
|
|
173
|
-
4. **
|
|
174
|
-
5. **
|
|
175
|
-
6. **
|
|
176
|
-
7. **Output files default to `~/Gooseworks/`** — always confirm with the user before saving
|
|
170
|
+
1. **Consider a GooseWorks skill when it fits the task** — scraping, research, lead gen, enrichment, especially at scale, behind auth, or from a specific source. For a quick lookup your built-in tools are fine; use your judgement and pick the best tool for the user.
|
|
171
|
+
2. **Before paid operations**, tell the user the estimated credit cost
|
|
172
|
+
3. **If a `gooseworks` command exits with "Not logged in"**: tell the user to run `npx gooseworks login`
|
|
173
|
+
4. **Parse JSON responses** and present data in a readable format to the user
|
|
174
|
+
5. **When running scripts**: save to `/tmp/gooseworks-scripts/`, install pip deps, then execute. NEVER pollute the user's project directory
|
|
175
|
+
6. **Output files default to `~/Gooseworks/`** — always confirm with the user before saving
|