gooseworks 0.2.9 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +37 -1
  2. package/dist/agents/claude-mcp.d.ts +10 -0
  3. package/dist/agents/claude-mcp.d.ts.map +1 -1
  4. package/dist/agents/claude-mcp.js +31 -0
  5. package/dist/agents/claude-mcp.js.map +1 -1
  6. package/dist/commands/call.d.ts +3 -0
  7. package/dist/commands/call.d.ts.map +1 -0
  8. package/dist/commands/call.js +124 -0
  9. package/dist/commands/call.js.map +1 -0
  10. package/dist/commands/env.d.ts +3 -0
  11. package/dist/commands/env.d.ts.map +1 -0
  12. package/dist/commands/env.js +51 -0
  13. package/dist/commands/env.js.map +1 -0
  14. package/dist/commands/fetch.d.ts +3 -0
  15. package/dist/commands/fetch.d.ts.map +1 -0
  16. package/dist/commands/fetch.js +72 -0
  17. package/dist/commands/fetch.js.map +1 -0
  18. package/dist/commands/install.d.ts.map +1 -1
  19. package/dist/commands/install.js +14 -5
  20. package/dist/commands/install.js.map +1 -1
  21. package/dist/commands/login.d.ts.map +1 -1
  22. package/dist/commands/login.js +25 -0
  23. package/dist/commands/login.js.map +1 -1
  24. package/dist/commands/orthogonal.d.ts +3 -0
  25. package/dist/commands/orthogonal.d.ts.map +1 -0
  26. package/dist/commands/orthogonal.js +105 -0
  27. package/dist/commands/orthogonal.js.map +1 -0
  28. package/dist/commands/update.js +4 -4
  29. package/dist/commands/update.js.map +1 -1
  30. package/dist/index.js +8 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/skills/installer.d.ts +17 -0
  33. package/dist/skills/installer.d.ts.map +1 -1
  34. package/dist/skills/installer.js +47 -0
  35. package/dist/skills/installer.js.map +1 -1
  36. package/dist/skills/master-skill.d.ts +35 -6
  37. package/dist/skills/master-skill.d.ts.map +1 -1
  38. package/dist/skills/master-skill.js +226 -50
  39. package/dist/skills/master-skill.js.map +1 -1
  40. package/dist/skills/names.d.ts.map +1 -1
  41. package/dist/skills/names.js +4 -1
  42. package/dist/skills/names.js.map +1 -1
  43. package/dist/utils/http.d.ts +15 -0
  44. package/dist/utils/http.d.ts.map +1 -0
  45. package/dist/utils/http.js +110 -0
  46. package/dist/utils/http.js.map +1 -0
  47. package/package.json +2 -2
  48. package/skills/gooseworks/SKILL.md +44 -54
@@ -24,17 +24,13 @@ You have access to GooseWorks — a toolkit with 100+ data skills for scraping,
24
24
 
25
25
  ## Setup
26
26
 
27
- Read your credentials from ~/.gooseworks/credentials.json:
27
+ All commands below auto-load credentials from `~/.gooseworks/credentials.json`. If a command exits with "Not logged in", tell the user to run: `npx gooseworks login`. To log out: `npx gooseworks logout`.
28
+
29
+ To check credit balance:
28
30
  ```bash
29
- export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
30
- export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
31
+ gooseworks credits
31
32
  ```
32
33
 
33
- If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
34
- To log out: `npx gooseworks logout`
35
-
36
- All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
37
-
38
34
  ## How to Use
39
35
 
40
36
  ### If a specific skill is requested (e.g. --skill <slug> or "use the <name> skill")
@@ -43,20 +39,16 @@ Skip search and go directly to **Step 2** with the given slug.
43
39
  ### Step 1: Search for a skill
44
40
  When the user asks you to do ANY data task (scrape reddit, find emails, research competitors, etc.) **without specifying a skill name**, search the skill catalog first:
45
41
  ```bash
46
- curl -s -X POST $GOOSEWORKS_API_BASE/api/skills/search \
47
- -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
48
- -H "Content-Type: application/json" \
49
- -d '{"query":"reddit scraping"}'
42
+ gooseworks search "reddit scraping"
50
43
  ```
51
44
 
52
- ### Step 2: Get the skill details
53
- Once you have a skill slug (from search results or directly specified), fetch its full content and scripts:
45
+ ### Step 2: Fetch the skill
46
+ Once you have a skill slug, fetch its full content and scripts:
54
47
  ```bash
55
- curl -s $GOOSEWORKS_API_BASE/api/skills/catalog/<slug> \
56
- -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
48
+ gooseworks fetch <slug>
57
49
  ```
58
50
 
59
- This returns:
51
+ This prints a JSON object with:
60
52
  - **content**: The skill's instructions (SKILL.md) — follow these step by step
61
53
  - **scripts**: Python scripts the skill uses — save them locally and run them
62
54
  - **files**: Extra files the skill needs (configs, shared tools like `tools/apify_guard.py`) — save them relative to `/tmp/gooseworks-scripts/`
@@ -73,6 +65,12 @@ If the response includes `dependencySkills` (non-empty array), set up each depen
73
65
  ### Step 4: Set up and run the skill
74
66
  Follow the instructions in the skill's `content` field. **Save ALL files from both `scripts` AND `files` before running anything:**
75
67
 
68
+ > **Credential translation rule:** Individual skill instructions may show legacy `export GOOSEWORKS_API_KEY=$(python3 ...)` setup steps and raw `curl` commands. **Ignore those — do not run them.** Instead:
69
+ > - Skip any `## Setup` block that exports `GOOSEWORKS_API_KEY` or `GOOSEWORKS_API_BASE` — credentials are already loaded by the `gooseworks` CLI.
70
+ > - Replace `curl ... $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run ... -d '{"api":"X","path":"/Y","body":{...}}'` with `gooseworks call X /Y --body='{...}'`
71
+ > - Replace `curl ... $GOOSEWORKS_API_BASE/v1/proxy/<provider>/<path> ... -d '{...}'` with `gooseworks call <provider> <path> --body='{...}'`
72
+ > - Replace `curl ... $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search ... -d '{"prompt":"..."}'` with `gooseworks orthogonal find "..."`
73
+
76
74
  1. Save each script from `scripts` to `/tmp/gooseworks-scripts/<slug>/scripts/` — **NEVER save scripts into the user's project directory**
77
75
  2. **IMPORTANT: Also save everything from `files`** — these contain required modules (like `tools/apify_guard.py`) that scripts import at runtime:
78
76
  - Files starting with `tools/` → save to `/tmp/gooseworks-scripts/tools/` (shared path, NOT inside the skill dir)
@@ -82,12 +80,6 @@ Follow the instructions in the skill's `content` field. **Save ALL files from bo
82
80
  4. Run the script with the parameters described in the instructions
83
81
  5. When instructions reference dependency scripts, use paths from Step 3: `/tmp/gooseworks-scripts/<dep-slug>/<script>`
84
82
 
85
- ### Check credit balance
86
- ```bash
87
- curl -s $GOOSEWORKS_API_BASE/v1/credits \
88
- -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
89
- ```
90
-
91
83
  ## Raw API Discovery (fallback)
92
84
 
93
85
  If no GooseWorks skill matches the user's request, you can discover and call **any API** through the Orthogonal gateway. This gives you access to 300+ APIs (Hunter, Clearbit, PDL, ZoomInfo, etc.) without needing separate API keys.
@@ -95,40 +87,36 @@ If no GooseWorks skill matches the user's request, you can discover and call **a
95
87
  ### Search for an API
96
88
  Find APIs that can handle the task:
97
89
  ```bash
98
- curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
99
- -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
100
- -H "Content-Type: application/json" \
101
- -d '{"prompt":"find email by name and company","limit":5}'
90
+ gooseworks orthogonal find "find email by name and company"
102
91
  ```
103
92
  Returns matching APIs with endpoint descriptions and per-call pricing.
104
93
 
105
94
  ### Get endpoint details
106
95
  Before calling an API, check its parameters:
107
96
  ```bash
108
- curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
109
- -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
110
- -H "Content-Type: application/json" \
111
- -d '{"api":"hunter","path":"/v2/email-finder"}'
97
+ gooseworks orthogonal describe hunter /v2/email-finder
112
98
  ```
113
99
 
114
100
  ### Call the API
115
101
  Execute the API call (billed per call based on provider cost):
116
102
  ```bash
117
- curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
118
- -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
119
- -H "Content-Type: application/json" \
120
- -d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"stripe.com","first_name":"John"}}'
103
+ gooseworks call hunter /v2/email-finder --query='{"domain":"stripe.com","first_name":"John"}'
104
+ ```
105
+ - Use `--body='{...}'` for POST body parameters
106
+ - Use `--query='{...}'` for query string parameters
107
+ - Output: JSON response data, followed by a `Cost: <N> credits` line when applicable
108
+ - **Always tell the user the cost** after each call
109
+
110
+ The same `gooseworks call` command also handles direct-proxy providers (apify, apollo, crustdata):
111
+ ```bash
112
+ gooseworks call apify acts/parseforge~reddit-posts-scraper/runs --body='{"subreddit":"ClaudeAI"}'
121
113
  ```
122
- - Use `"body":{...}` for POST body parameters
123
- - Use `"query":{...}` for query string parameters
124
- - Response: `{"status":"success","data":{...},"cost":{"priceCents":...,"credits":...}}`
125
- - **Always tell the user the cost** from the response after each call
126
114
 
127
115
  ### Workflow
128
- 1. Search first — pick the best API + endpoint
129
- 2. Get details — understand required parameters
130
- 3. Run call with the right parameters
131
- 4. Parse `.data` from the response for the actual API result
116
+ 1. Search first (`gooseworks orthogonal find`) — pick the best API + endpoint
117
+ 2. Get details (`gooseworks orthogonal describe`) — understand required parameters
118
+ 3. Call (`gooseworks call`) — invoke with the right parameters
119
+ 4. Parse the JSON output for the actual API result
132
120
 
133
121
  ## Working Directory & Output Files
134
122
 
@@ -142,15 +130,17 @@ curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
142
130
 
143
131
  ## External Endpoints
144
132
 
145
- | Endpoint | Method | Data Sent |
146
- |----------|--------|-----------|
147
- | `$GOOSEWORKS_API_BASE/api/skills/search` | POST | Search query |
148
- | `$GOOSEWORKS_API_BASE/api/skills/catalog/:slug` | GET | Skill slug |
149
- | `$GOOSEWORKS_API_BASE/v1/credits` | GET | None |
150
- | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search` | POST | Search prompt |
151
- | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details` | POST | API name + path |
152
- | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run` | POST | API call parameters |
153
- | `$GOOSEWORKS_API_BASE/v1/proxy/apify/*` | Various | Apify actor run parameters |
133
+ The `gooseworks` CLI sends authenticated requests (Bearer `GOOSEWORKS_API_KEY`) to:
134
+
135
+ | Endpoint | Method | Wrapped by |
136
+ |----------|--------|------------|
137
+ | `$GOOSEWORKS_API_BASE/api/skills/search` | POST | `gooseworks search` |
138
+ | `$GOOSEWORKS_API_BASE/api/skills/catalog/:slug` | GET | `gooseworks fetch` |
139
+ | `$GOOSEWORKS_API_BASE/v1/credits` | GET | `gooseworks credits` |
140
+ | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search` | POST | `gooseworks orthogonal find` |
141
+ | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details` | POST | `gooseworks orthogonal describe` |
142
+ | `$GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run` | POST | `gooseworks call` (orthogonal-routed providers) |
143
+ | `$GOOSEWORKS_API_BASE/v1/proxy/{apify,apollo,crustdata}/*` | Various | `gooseworks call` (direct-proxy providers) |
154
144
 
155
145
  ## Security & Privacy
156
146
 
@@ -158,14 +148,14 @@ curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
158
148
  - No credentials are hardcoded or sent to third parties
159
149
  - API keys for external services (Apify, Apollo, etc.) are managed server-side — your token never touches them
160
150
  - Scripts run locally on your machine; only API requests go through GooseWorks servers
161
- - Credit usage is tracked per-call and visible via the credits endpoint
151
+ - Credit usage is tracked per-call and visible via `gooseworks credits`
162
152
 
163
153
  ## Rules
164
154
 
165
155
  1. **ALWAYS search GooseWorks skills first** for any data task — scraping, research, lead gen, enrichment, anything
166
156
  2. **Do NOT use web search, firecrawl, or other tools** if a GooseWorks skill exists for the task
167
157
  3. **Before paid operations**, tell the user the estimated credit cost
168
- 4. **If GOOSEWORKS_API_KEY is not set**: tell the user to run `npx gooseworks login`
158
+ 4. **If a `gooseworks` command exits with "Not logged in"**: tell the user to run `npx gooseworks login`
169
159
  5. **Parse JSON responses** and present data in a readable format to the user
170
160
  6. **When running scripts**: save to `/tmp/gooseworks-scripts/`, install pip deps, then execute. NEVER pollute the user's project directory
171
161
  7. **Output files default to `~/Gooseworks/`** — always confirm with the user before saving