sproutkit-code 0.3.1 → 0.5.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.
- package/dist/index.js +671 -273
- package/dist/skill/SKILL.md +87 -0
- package/package.json +1 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sproutkit
|
|
3
|
+
description: Find local businesses without websites, build them demo sites, and prepare outreach — by driving the `sproutkit` CLI. Use whenever the user wants to find leads/prospects, build or regenerate a demo website for a business, or send/prepare outreach messages.
|
|
4
|
+
allowed-tools: Bash(sproutkit *)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Sproutkit
|
|
8
|
+
|
|
9
|
+
You operate Sproutkit — a tool for finding local businesses that have no website,
|
|
10
|
+
building them demo sites, and running outreach — by calling the `sproutkit`
|
|
11
|
+
command-line tool with the Bash tool. The user talks to you in plain English;
|
|
12
|
+
you translate that into `sproutkit` commands, run them, read the output, and
|
|
13
|
+
report back conversationally.
|
|
14
|
+
|
|
15
|
+
Generation runs on the user's own Claude subscription (or their API key), so you
|
|
16
|
+
do not need any API key yourself — just run the commands.
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
All commands accept `--json` for structured output. **Always pass `--json`** so
|
|
21
|
+
you can parse results reliably, then summarise them for the user in prose.
|
|
22
|
+
|
|
23
|
+
- **Find leads** — `sproutkit find "<area>" --categories "<type>,<type>" --json`
|
|
24
|
+
- Searches Google Places for businesses of the given categories in the area,
|
|
25
|
+
filters out any that already have a website (per Google's data), and saves
|
|
26
|
+
the rest as leads.
|
|
27
|
+
- Example: `sproutkit find "Shoreditch, London" --categories "barber shop,cafe" --json`
|
|
28
|
+
- Optional: `--max 25`, `--radius 3000`.
|
|
29
|
+
|
|
30
|
+
- **List leads** — `sproutkit list --json` (optional `--status site_built`, `--city London`, `--limit 25`)
|
|
31
|
+
- Returns id, name, status, type, city, phone, site_url. Use this to get lead
|
|
32
|
+
**ids** before building or to report the pipeline.
|
|
33
|
+
|
|
34
|
+
- **Build a demo site** — `sproutkit build <leadId> --json`
|
|
35
|
+
- Generates and deploys a demo website for that lead. Optional:
|
|
36
|
+
`--instructions "make it dark and premium, expand the menu"` to tailor it,
|
|
37
|
+
`--cms` to include the editable CMS.
|
|
38
|
+
- Returns the live `url`. If the lead already has a site, it returns
|
|
39
|
+
`{"ok":false,...}` — tell the user and offer to regenerate.
|
|
40
|
+
|
|
41
|
+
- **Build MANY sites at once** — `sproutkit build-all --json` (optional `--ids 3,5,9`, `--concurrency 3`)
|
|
42
|
+
- Builds several sites in parallel using its own concurrency pool and shows a
|
|
43
|
+
live per-site board. With no `--ids`, it builds every lead that has no site.
|
|
44
|
+
- **Use this for any bulk request** ("build them all", "build the best 5",
|
|
45
|
+
"build sites for leads 1-10"). Do NOT spawn your own subagents to run
|
|
46
|
+
`sproutkit build` many times in parallel — `build-all` owns the
|
|
47
|
+
parallelism, keeps it within the user's subscription rate limits, and
|
|
48
|
+
renders the progress. One `sproutkit build-all` call is correct; N parallel
|
|
49
|
+
`sproutkit build` calls via subagents is not.
|
|
50
|
+
|
|
51
|
+
- **Prepare outreach** — `sproutkit outreach --json` (optional `--ids 3,5,9`)
|
|
52
|
+
- Fills the message template, moves the leads to Contacted, and returns a
|
|
53
|
+
link per lead to open in WhatsApp/SMS. It does NOT auto-send — give the user
|
|
54
|
+
the links and tell them to click each. With no `--ids`, it targets every
|
|
55
|
+
lead that has a built site.
|
|
56
|
+
|
|
57
|
+
## How to work
|
|
58
|
+
|
|
59
|
+
Chain commands to fulfil what the user asked, one step at a time:
|
|
60
|
+
|
|
61
|
+
- "Find barbers in Leeds" → `sproutkit find "Leeds" --categories "barber shop" --json`, then summarise how many were found/saved (mention any skipped because they already had a website).
|
|
62
|
+
- "Find cafes in Peckham and build the best two" → find, then `sproutkit list --json` to see what came back, then `sproutkit build <id> --json` for the two highest-scoring.
|
|
63
|
+
- "Build a site for The Oak Café" → `sproutkit list --json`, find the matching lead's id, then `sproutkit build <id> --json`.
|
|
64
|
+
- "Message everyone I've built sites for" → `sproutkit outreach --json`, then list the links for the user to open.
|
|
65
|
+
- "Find 20 cafes in Bristol, build them all, and prep outreach" → find, then `sproutkit build-all --json` (NOT twenty separate build calls), then `sproutkit outreach --json`.
|
|
66
|
+
|
|
67
|
+
Rules:
|
|
68
|
+
|
|
69
|
+
- **Get ids from `sproutkit list --json`** before building or outreach — never guess an id.
|
|
70
|
+
- Building a site and sending outreach spend money / act on the user's behalf.
|
|
71
|
+
In an interactive session the Bash tool already asks the user to approve each
|
|
72
|
+
command — that IS the confirmation step. Don't invent your own extra prompts;
|
|
73
|
+
just run the command and let the approval flow handle it.
|
|
74
|
+
- After each command, tell the user what happened in plain English and what
|
|
75
|
+
you'd do next. Lead with the outcome (how many found, the live URL, etc.).
|
|
76
|
+
- If a command returns `{"ok":false,"error":...}`, read the error and explain it
|
|
77
|
+
— e.g. "already has a website" → offer to regenerate; "no active licence" →
|
|
78
|
+
tell them to run `sproutkit setup`.
|
|
79
|
+
- Only do what the user asked. Don't build sites or send outreach they didn't
|
|
80
|
+
request just because you can.
|
|
81
|
+
|
|
82
|
+
## What you can't do
|
|
83
|
+
|
|
84
|
+
`sproutkit` covers finding leads, building/regenerating sites (with optional CMS
|
|
85
|
+
and booking), and preparing outreach. It can't run ads, post to social media,
|
|
86
|
+
phone people, or take payment — if asked, say so and offer the closest thing you
|
|
87
|
+
can do.
|