@clearlysh/beehaven 0.8.30 → 0.8.32
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/agents-md-text.js +64 -0
- package/dist/browser-login.js +6 -1
- package/dist/build-channel.js +2 -2
- package/dist/cli.js +18 -0
- package/dist/commands/agents-md.js +118 -0
- package/dist/commands/help.js +21 -0
- package/dist/commands/self-update.js +32 -5
- package/dist/daemon.js +104 -30
- package/dist/dashboard.js +118 -6
- package/dist/ipc-server.js +11 -8
- package/dist/npm-update.js +138 -0
- package/dist/verb-surface.js +1 -0
- package/package.json +1 -1
- package/scripts/sync-skills.mjs +6 -0
- package/skills/agent-doodle-space/SKILL.md +1 -1
- package/skills/agent-home/SKILL.md +1 -1
- package/skills/brand-identity/SKILL.md +1 -0
- package/skills/clearly-agent/SKILL.md +1 -1
- package/skills/clearly-canvas/SKILL.md +1 -0
- package/skills/clearly-docs/SKILL.md +151 -0
- package/skills/clearly-init/SKILL.md +135 -0
- package/skills/clearly-workflows/SKILL.md +90 -0
- package/skills/clearly-workspace/SKILL.md +1 -1
- package/skills/codebase-map/SKILL.md +1 -1
- package/skills/index.json +43 -8
- package/skills/pair-on-canvas/SKILL.md +1 -1
- package/skills/sticker-pack/SKILL.md +132 -0
- package/skills/visualize/SKILL.md +188 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clearly-init
|
|
3
|
+
description: >-
|
|
4
|
+
Connect a Clearly workspace to Claude Code or Codex and prove both the MCP and
|
|
5
|
+
CLI paths work. Prefer browser OAuth for remote HTTP clients; when an agent-bound
|
|
6
|
+
bearer credential is required, mint and install it with the active `beehaven`
|
|
7
|
+
identity. Use FIRST whenever a Clearly tool is refused for auth, returns nothing
|
|
8
|
+
on a workspace that should have content, or the user has never connected.
|
|
9
|
+
Triggers: "connect Clearly", "set up Clearly", "sign in to Clearly",
|
|
10
|
+
"authenticate", "install the MCP", "add the MCP token", "it says unauthorized",
|
|
11
|
+
"the tools are not showing up", "/mcp shows nothing", "which workspace am I in".
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
> **Tool names below are written UNPREFIXED** (`clearly_read`). Your runtime may
|
|
15
|
+
> expose them with a server prefix — e.g.
|
|
16
|
+
> `mcp__plugin_clearly_clearly-staging__clearly_read`. **Match by suffix, not by
|
|
17
|
+
> exact name**: a skill written against the bare name resolves to nothing otherwise, and
|
|
18
|
+
> the failure looks like "the tool doesn't exist" rather than "the name is decorated".
|
|
19
|
+
>
|
|
20
|
+
> **If no such tool is callable at all**, the Clearly MCP server isn't authorised in this
|
|
21
|
+
> session — note that these skills still LIST when it isn't, so you find out by firing a
|
|
22
|
+
> dead call. Authorise it (`/mcp`, or `claude mcp`), or if you have a shell, use the
|
|
23
|
+
> `beehaven` CLI and its own `clearly-canvas` skill instead.
|
|
24
|
+
|
|
25
|
+
# `/clearly:init` — connect a Clearly workspace to Claude Code or Codex
|
|
26
|
+
|
|
27
|
+
Run this once per machine. The plugin's `.mcp.json` points at
|
|
28
|
+
`https://relay.clearly.sh/mcp`; complete authentication and verify the connection before doing
|
|
29
|
+
workspace work.
|
|
30
|
+
|
|
31
|
+
## Steps
|
|
32
|
+
|
|
33
|
+
### 1. Authenticate (OAuth — browser sign-in)
|
|
34
|
+
|
|
35
|
+
The plugin already wires the MCP server. Prefer browser OAuth:
|
|
36
|
+
|
|
37
|
+
- **In Claude Code (recommended)**: run `/mcp`, select `clearly`, and choose **Authenticate**. A browser window opens for sign-in; approve and it closes itself. No token.
|
|
38
|
+
- **From the shell**: `claude mcp login clearly` — same browser sign-in flow.
|
|
39
|
+
- **In Codex**: `codex mcp login clearly`. If the server was added outside the plugin first, run
|
|
40
|
+
`codex mcp add clearly --url https://relay.clearly.sh/mcp`, then log in.
|
|
41
|
+
|
|
42
|
+
The sign-in grants scoped access (`rpc:read` for search and read; add `rpc:write` to let the
|
|
43
|
+
agent write documents and create boards or tickets). Sign out or revoke with the client's MCP
|
|
44
|
+
logout command, or from Settings → **Developers** in the app.
|
|
45
|
+
|
|
46
|
+
### Agent-bound token path (CLI and automation)
|
|
47
|
+
|
|
48
|
+
Use this when the client cannot complete OAuth or when the credential must act as a specific agent
|
|
49
|
+
identity. Sign in and select the identity first:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
beehaven agent login <agent-name>
|
|
53
|
+
beehaven connect home
|
|
54
|
+
beehaven agent whoami
|
|
55
|
+
beehaven mcp install --client codex
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The installer writes through the client's own config command and never prints the token. Restart
|
|
59
|
+
the client afterward. A static token normally carries `rpc:read` and `rpc:write`; `agent:ask` is
|
|
60
|
+
OAuth-only and `rpc:admin` is reserved for configured platform admins. Never paste a bearer token
|
|
61
|
+
into a document, ticket, canvas, log, or chat response.
|
|
62
|
+
|
|
63
|
+
> **Working in more than one workspace?** A client stores one credential per server entry, so two
|
|
64
|
+
> workspaces behind a single entry collide. Use `https://relay.clearly.sh/mcp/w/<workspaceId>` as a
|
|
65
|
+
> second entry — see [the MCP docs](https://clearly.sh/docs/mcp).
|
|
66
|
+
|
|
67
|
+
### 2. Verify
|
|
68
|
+
|
|
69
|
+
Run `/mcp` in Claude Code, or `codex mcp list` in Codex. You should see `clearly` authenticated
|
|
70
|
+
with **7 tools**:
|
|
71
|
+
|
|
72
|
+
**Seven MCP tools, split by what they DO rather than by what they act on.** The four CRUD tools
|
|
73
|
+
cover every artifact type — document, canvas, sheet, deck, board, ticket, project — so the tool fixes
|
|
74
|
+
whether it reads or writes and `type` says what it touches.
|
|
75
|
+
|
|
76
|
+
- **`clearly_catalog`** — optional, lazy machine-readable schemas. Use `{ type, operation }` before a type-specific write/edit; omit both for the compact capability overview.
|
|
77
|
+
- **`clearly_read` / `clearly_create` / `clearly_edit` / `clearly_replace` / `clearly_delete`** — open one, make a new one, change part of one, overwrite one's whole body, archive one. Each takes a uniform same-operation `batch`.
|
|
78
|
+
- **`clearly_comment`** — comment on any item (with @mentions), or send and reply to messages.
|
|
79
|
+
- **`clearly_grep` / `clearly_glob`** — find by content, find by name. Both span notes and code.
|
|
80
|
+
|
|
81
|
+
Addressed by `target`: a path (`~/Q1/Plan.md`), a key (`CLR-42`) or an id. Folders are projects,
|
|
82
|
+
documents are `.md`, canvases are `.scene.json` — the extension names the type, and you pass `type`
|
|
83
|
+
when it does not.
|
|
84
|
+
|
|
85
|
+
**Everything else is the `beehaven` CLI**, by action name — the canvas, the Company Brain, skills,
|
|
86
|
+
scheduling, stickers, billing. `beehaven actions` lists them; `beehaven call <action> '<json>'` runs
|
|
87
|
+
one:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
beehaven call context-search '{"query":"per-seat billing","scope":"org"}'
|
|
91
|
+
beehaven call canvas-act '{"compositionId":"c_…","batch":[…]}'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
⚠ **That split is deliberate, not a gap.** A single tool that runs whatever action the caller names
|
|
95
|
+
spans safe and unsafe operations at once — a connector-directory rejection criterion, and one the
|
|
96
|
+
criteria explicitly refuse to let a description paper over. So the generic door is the shell, where
|
|
97
|
+
Claude Code already lives and where every call is attributed to your agent.
|
|
98
|
+
|
|
99
|
+
> ⚠ **Everything requires authentication.** There is no anonymous surface: as of 2026-09-11 both
|
|
100
|
+
> `tools/list` and `tools/call` resolve a credential first, and every credential is bound to an
|
|
101
|
+
> agent. A 401 carries an OAuth challenge, so a capable client can recover from it by itself —
|
|
102
|
+
> but a caller with no token sees no catalog, by design.
|
|
103
|
+
|
|
104
|
+
## Install the CLI — the other half of the surface
|
|
105
|
+
|
|
106
|
+
The seven MCP tools cover reading, writing and searching artifacts. **Everything else — the canvas,
|
|
107
|
+
the Company Brain, skills, stickers — is reached with `beehaven`**, and the skills in this plugin
|
|
108
|
+
assume it is on PATH. Claude Code has a shell, so this is one command:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
curl -fsSL https://clearly.sh/install.sh | sh
|
|
112
|
+
beehaven login # once, opens a browser
|
|
113
|
+
beehaven status # daemon + relay, both should read UP
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
⚠ **`beehaven: command not found` is the failure to expect**, and it does not look like a missing
|
|
117
|
+
install — it looks like the skill being wrong. If a `beehaven call …` line fails that way, install
|
|
118
|
+
it rather than reaching for an MCP tool that does not exist.
|
|
119
|
+
|
|
120
|
+
⚠ **Do not restart the user's daemon to fix something.** It is theirs; `beehaven status` tells you
|
|
121
|
+
what is wrong and the message says which command fixes it.
|
|
122
|
+
|
|
123
|
+
Then load the usage skill: it teaches the Company Brain + self-prompting loops — see `clearly-workflows`.
|
|
124
|
+
|
|
125
|
+
A quick functional test:
|
|
126
|
+
> "Map my Clearly workspace's brain using the clearly MCP."
|
|
127
|
+
|
|
128
|
+
If Claude calls `clearly_catalog` and gets back the artifact types with their capabilities, the connection is live. It is a connection check and schema lookup, not a required preflight for ordinary reads/deletes.
|
|
129
|
+
|
|
130
|
+
## Troubleshooting
|
|
131
|
+
|
|
132
|
+
- **`Missing scope "rpc:write"`** — the sign-in didn't grant write access. Run `claude mcp logout clearly`, then re-authenticate (`/mcp` → **Authenticate**) and approve the write scope.
|
|
133
|
+
- **`Not authenticated` / calls rejected** — the session expired or was revoked. Re-authenticate with `claude mcp login clearly` (or `/mcp` → **Authenticate**).
|
|
134
|
+
- **`clearly` shows in `/mcp` but as unauthenticated** — the endpoint is preconfigured by the plugin; you still need to complete the browser sign-in. Select `clearly` → **Authenticate**.
|
|
135
|
+
- **`Network error reaching ...`** — relay.clearly.sh might be down (rare); check https://clearly.sh status page.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clearly-workflows
|
|
3
|
+
description: >-
|
|
4
|
+
Best with the beehaven CLI (semantic search and write-back); with only the Clearly connector, search with clearly_grep and record decisions with clearly_create.
|
|
5
|
+
Use the Clearly workspace as a COMPANY BRAIN — search the org's accumulated
|
|
6
|
+
context (decisions, facts, prompts, docs), write conclusions back so the next
|
|
7
|
+
agent inherits them instead of re-deriving them, and inherit the team's
|
|
8
|
+
skills. Use when a question is about what this company already decided or
|
|
9
|
+
knows, and after you work something out that the next person would otherwise
|
|
10
|
+
rediscover. Triggers: "what did we decide", "why did we do it this way", "has
|
|
11
|
+
anyone looked at this", "remember this", "write that down", "what do we know
|
|
12
|
+
about X", "company context", "our decisions", "prior art", "institutional
|
|
13
|
+
knowledge", "so nobody has to work this out again".
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
> **Tool names below are written UNPREFIXED** (`clearly_read`). Your runtime may
|
|
17
|
+
> expose them with a server prefix — e.g.
|
|
18
|
+
> `mcp__plugin_clearly_clearly-staging__clearly_read`. **Match by suffix, not by
|
|
19
|
+
> exact name**: a skill written against the bare name resolves to nothing otherwise, and
|
|
20
|
+
> the failure looks like "the tool doesn't exist" rather than "the name is decorated".
|
|
21
|
+
>
|
|
22
|
+
> **If no such tool is callable at all**, the Clearly MCP server isn't authorised in this
|
|
23
|
+
> session — note that these skills still LIST when it isn't, so you find out by firing a
|
|
24
|
+
> dead call. Authorise it (`/mcp`, or `claude mcp`), or if you have a shell, use the
|
|
25
|
+
> `beehaven` CLI and its own `clearly-canvas` skill instead.
|
|
26
|
+
|
|
27
|
+
# Working a Clearly workspace (Company Brain)
|
|
28
|
+
|
|
29
|
+
Clearly is a **company brain over MCP**: every prompt + agent response is auto-cataloged into a searchable, ranked archive, with documents, decisions, and durable facts alongside. Treat it the way you'd treat a repo — read before you write, and write so the next agent inherits your work.
|
|
30
|
+
|
|
31
|
+
If the `clearly` server isn't connected yet, run the `clearly-init` skill first.
|
|
32
|
+
|
|
33
|
+
## 1. Orient before you act
|
|
34
|
+
|
|
35
|
+
Run `beehaven call context-map` once at the start. It returns the brain's size (prompts / responses / facts), the recurring topics, and the org/teams it can federate across. Use it to decide whether the answer already exists.
|
|
36
|
+
|
|
37
|
+
## 2. Retrieve context (don't re-derive it)
|
|
38
|
+
|
|
39
|
+
`beehaven call context-search '{ "query": …, "scope"?, "kinds"?, "limit"? }'` is ONE ranked search across prompts, agent responses, documents/PRDs, and facts — use it instead of guessing or asking the user what they already decided.
|
|
40
|
+
|
|
41
|
+
- `scope: "workspace"` (default) searches this workspace.
|
|
42
|
+
- `scope: "org"` **federates across every workspace in the org**, merges + re-ranks by relevance, and excludes private artifacts + personal facts. Use it for "what has anyone on the team decided/built about X".
|
|
43
|
+
- `kinds`: narrow to `["document"]`, `["prompt"]`, etc.
|
|
44
|
+
|
|
45
|
+
Each hit carries `kind`, `ref` (the id to fetch in full), `title`, `snippet`, `score`, and `meta` (intent, tags, `sourceWorkspace`).
|
|
46
|
+
|
|
47
|
+
**Always search before writing** — it prevents duplicate PRDs/decisions and surfaces prior context you'd otherwise miss.
|
|
48
|
+
|
|
49
|
+
## 3. Write context BACK so it compounds
|
|
50
|
+
|
|
51
|
+
When you produce something durable — a PRD, a decision, a spec, a research summary — file it with `context-write`:
|
|
52
|
+
|
|
53
|
+
```jsonc
|
|
54
|
+
beehaven call context-write '{
|
|
55
|
+
"title": "Per-seat billing decision",
|
|
56
|
+
"body": "We charge per seat; usage is per-seat with shared top-up overflow. Rationale: …",
|
|
57
|
+
"kind": "decision", // doc | note | decision | prd
|
|
58
|
+
"tags": ["billing","pricing"],
|
|
59
|
+
"fact": "Billing is per-seat with shared top-up", // optional one-line takeaway
|
|
60
|
+
"private": false // true → workspace-local, never federated across the org
|
|
61
|
+
}'
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
It creates the document AND files a searchable catalog entry, so the very next `context-search` finds it. Mark anything sensitive `private: true`.
|
|
65
|
+
|
|
66
|
+
⚠ **Why these are CLI calls and not MCP tools.** The MCP surface is seven tools split by what they do to an artifact (`clearly_catalog · _read · _write · _edit · _delete · _grep · _glob`); the Company Brain's verbs are workspace ACTIONS, reached by name through the shell. Once a document exists, `clearly_grep` and `clearly_read` open it like any other.
|
|
67
|
+
|
|
68
|
+
## 4. Inherit the team's skills
|
|
69
|
+
|
|
70
|
+
The workspace has its own skills (procedures the team grew). Before improvising a multi-step task, check whether one exists:
|
|
71
|
+
|
|
72
|
+
- `beehaven call skill-list '{"includeWorkspace":true}'` → the skill cards (name + when-to-use).
|
|
73
|
+
- `beehaven call skill-get '{"id":"…"}'` → the full step-by-step instructions for the one whose trigger matches.
|
|
74
|
+
|
|
75
|
+
Follow the loaded procedure rather than inventing your own — that's how you work *the way this workspace works*.
|
|
76
|
+
|
|
77
|
+
## Anything else
|
|
78
|
+
|
|
79
|
+
`beehaven actions` lists every workspace action with its description; `beehaven call <action> '<json>'` runs one. Reach for these when the seven MCP tools don't cover what you need — which is most things beyond reading, writing and searching artifacts.
|
|
80
|
+
|
|
81
|
+
## Rules of thumb
|
|
82
|
+
|
|
83
|
+
- **Read → act → write back.** Search first; file durable outcomes so they persist.
|
|
84
|
+
- **`scope:"org"`** for cross-team questions; **`private:true`** for sensitive writes.
|
|
85
|
+
|
|
86
|
+
<!-- A "Schedule your future self" section documenting `clearly_schedule_wake` was removed on
|
|
87
|
+
2026-08-02: the tool is in ZERO entries of mcp-server.ts's tool list and `schedule-wake` is
|
|
88
|
+
not a registered RPC, so every example here failed. Restore only when it is in tools/list. -->
|
|
89
|
+
|
|
90
|
+
- **Check `beehaven call skill-list`** before hand-rolling a known procedure.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: clearly-workspace
|
|
3
|
-
description: Understand and audit a Clearly workspace from the terminal — what it holds (documents, projects, boards, tickets, thoughts, files, agents), who authored what, and which known data defects are present. Run `survey.mjs` for the whole picture in one command. TRIGGER when the user asks "what is in this workspace", "how big is this workspace", "audit / survey / check the workspace", "what have my agents made", "is anything broken in here", "who created these", or before any cleanup, migration or backfill — the survey is what tells you whether a repair is needed and whether it worked. NOT for editing documents (use `document-*`) or drawing on a canvas (use clearly-canvas).
|
|
3
|
+
description: Needs a terminal with the beehaven CLI (Claude Code, Codex, Gemini CLI); in a chat with only the Clearly connector, say so and use the clearly_* tools instead. Understand and audit a Clearly workspace from the terminal — what it holds (documents, projects, boards, tickets, thoughts, files, agents), who authored what, and which known data defects are present. Run `survey.mjs` for the whole picture in one command. TRIGGER when the user asks "what is in this workspace", "how big is this workspace", "audit / survey / check the workspace", "what have my agents made", "is anything broken in here", "who created these", or before any cleanup, migration or backfill — the survey is what tells you whether a repair is needed and whether it worked. NOT for editing documents (use `document-*`) or drawing on a canvas (use clearly-canvas).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# clearly-workspace — know what you are standing in
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: codebase-map
|
|
3
|
-
description: Walk a code repository and draw a living ARCHITECTURE MAP of it on a Clearly spatial canvas — modules as frames (sized by LOC, colored by layer), key files as nodes, imports/dependencies as arrows — so the big pieces, how they depend on each other, and where the complexity sits all read at a glance. Load this when the user says "map / diagram / visualize this codebase / repo / architecture", "how is this project structured", "draw the dependency graph", "give me an architecture overview", or when you're onboarding to an unfamiliar repo and need to see its shape fast.
|
|
3
|
+
description: Needs a terminal with the beehaven CLI (Claude Code, Codex, Gemini CLI); in a chat with only the Clearly connector, say so and use the clearly_* tools instead. Walk a code repository and draw a living ARCHITECTURE MAP of it on a Clearly spatial canvas — modules as frames (sized by LOC, colored by layer), key files as nodes, imports/dependencies as arrows — so the big pieces, how they depend on each other, and where the complexity sits all read at a glance. Load this when the user says "map / diagram / visualize this codebase / repo / architecture", "how is this project structured", "draw the dependency graph", "give me an architecture overview", or when you're onboarding to an unfamiliar repo and need to see its shape fast.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **⚠ CANVAS WORK GOES THROUGH THE CLI, NOT AN MCP TOOL.** Anything written
|
package/skills/index.json
CHANGED
|
@@ -17,21 +17,21 @@
|
|
|
17
17
|
"project-plans.md",
|
|
18
18
|
"review.mjs"
|
|
19
19
|
],
|
|
20
|
-
"sha": "
|
|
20
|
+
"sha": "41327744a8cc0fe1"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"name": "agent-home",
|
|
24
24
|
"files": [
|
|
25
25
|
"SKILL.md"
|
|
26
26
|
],
|
|
27
|
-
"sha": "
|
|
27
|
+
"sha": "e1d18e7518ff4b65"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"name": "agent-doodle-space",
|
|
31
31
|
"files": [
|
|
32
32
|
"SKILL.md"
|
|
33
33
|
],
|
|
34
|
-
"sha": "
|
|
34
|
+
"sha": "1e1911e6d8784476"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"name": "design-craft",
|
|
@@ -53,21 +53,21 @@
|
|
|
53
53
|
"files": [
|
|
54
54
|
"SKILL.md"
|
|
55
55
|
],
|
|
56
|
-
"sha": "
|
|
56
|
+
"sha": "366139b11ff11b58"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"name": "pair-on-canvas",
|
|
60
60
|
"files": [
|
|
61
61
|
"SKILL.md"
|
|
62
62
|
],
|
|
63
|
-
"sha": "
|
|
63
|
+
"sha": "1d79147baa8c232d"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
"name": "codebase-map",
|
|
67
67
|
"files": [
|
|
68
68
|
"SKILL.md"
|
|
69
69
|
],
|
|
70
|
-
"sha": "
|
|
70
|
+
"sha": "4a4af2229b68827d"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"name": "clearly-workspace",
|
|
@@ -75,13 +75,48 @@
|
|
|
75
75
|
"SKILL.md",
|
|
76
76
|
"survey.mjs"
|
|
77
77
|
],
|
|
78
|
-
"sha": "
|
|
78
|
+
"sha": "3a3e6fa6e3cf8717"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"name": "clearly-agent",
|
|
82
82
|
"files": [
|
|
83
83
|
"SKILL.md"
|
|
84
84
|
],
|
|
85
|
-
"sha": "
|
|
85
|
+
"sha": "1c6425a2143e7901"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "visualize",
|
|
89
|
+
"files": [
|
|
90
|
+
"SKILL.md"
|
|
91
|
+
],
|
|
92
|
+
"sha": "88bb6e94fb37c337"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "sticker-pack",
|
|
96
|
+
"files": [
|
|
97
|
+
"SKILL.md"
|
|
98
|
+
],
|
|
99
|
+
"sha": "74af254817a134d6"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "clearly-docs",
|
|
103
|
+
"files": [
|
|
104
|
+
"SKILL.md"
|
|
105
|
+
],
|
|
106
|
+
"sha": "388be4de86f59eb4"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "clearly-init",
|
|
110
|
+
"files": [
|
|
111
|
+
"SKILL.md"
|
|
112
|
+
],
|
|
113
|
+
"sha": "d4dfdd76c7c0a108"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "clearly-workflows",
|
|
117
|
+
"files": [
|
|
118
|
+
"SKILL.md"
|
|
119
|
+
],
|
|
120
|
+
"sha": "b9622f21173bab0d"
|
|
86
121
|
}
|
|
87
122
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pair-on-canvas
|
|
3
|
-
description: Use a Clearly canvas as mission control for a coding task — read the spec the human placed on the board, do the work in the repo, and report progress, diffs, and next steps back as cards they steer by inking. Load this when the user says "work the task on my canvas", "take this from the board", "what's on my Clearly canvas", "pick up the spec", "let's pair on the canvas", or whenever a human is directing your coding work spatially instead of in a chat thread.
|
|
3
|
+
description: Needs a terminal with the beehaven CLI (Claude Code, Codex, Gemini CLI); in a chat with only the Clearly connector, say so and use the clearly_* tools instead. Use a Clearly canvas as mission control for a coding task — read the spec the human placed on the board, do the work in the repo, and report progress, diffs, and next steps back as cards they steer by inking. Load this when the user says "work the task on my canvas", "take this from the board", "what's on my Clearly canvas", "pick up the spec", "let's pair on the canvas", or whenever a human is directing your coding work spatially instead of in a chat thread.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **⚠ CANVAS WORK GOES THROUGH THE CLI, NOT AN MCP TOOL.** Anything written
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sticker-pack
|
|
3
|
+
description: Needs a terminal with the beehaven CLI (Claude Code, Codex, Gemini CLI); in a chat with only the Clearly connector, say so and use the clearly_* tools instead. Turn an idea into a printable, die-cut STICKER SHEET on a Clearly canvas — Clearly's own sticker-vending-machine pipeline surfaced as an agent skill. Generates a cohesive SET of transparent stickers, lays them out as a sheet (frame + gridded stickers + a vector kiss-cut cutline layer), and hands back a print-ready bundle. Load this when the user says "make me stickers / a sticker pack / a sticker sheet about X", "turn this into stickers", "design stickers for my brand / startup / cat", or "I want die-cut stickers". The fun, inherently-shareable corner of the canvas skill set.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **⚠ CANVAS AND STICKER WORK GO THROUGH THE CLI, NOT AN MCP TOOL.** Anything written
|
|
7
|
+
> `beehaven call <action>` below is a literal command. The MCP surface is seven tools split
|
|
8
|
+
> by operation; the ~1,000 workspace actions are reached by name through the shell.
|
|
9
|
+
|
|
10
|
+
# Sticker pack — idea → printable die-cut sheet
|
|
11
|
+
|
|
12
|
+
Stickers are the most organically viral thing Clearly makes: a generated die-cut pack someone actually prints and slaps on a laptop *is* the share. This skill drives Clearly's real sticker-vending pipeline — the same one behind the studio — straight onto a canvas.
|
|
13
|
+
|
|
14
|
+
Install the `beehaven` CLI, sign in as an agent, and connect the intended workspace first
|
|
15
|
+
(`clearly-init` handles setup). Then read `clearly-canvas` for the primitives and the
|
|
16
|
+
perceive→act→revise loop. This skill adds the **generation** step on top of it.
|
|
17
|
+
|
|
18
|
+
## The one core tool (and a heads-up)
|
|
19
|
+
|
|
20
|
+
The sticker pipeline runs through **`sticker-sheet-gen`**, a real workspace action. It is NOT (yet) a dedicated MCP tool, so you call it through the generic dispatcher:
|
|
21
|
+
|
|
22
|
+
```jsonc
|
|
23
|
+
beehaven call sticker-sheet-gen '{ … }'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
> ⚠ **This is a CLI action, not an MCP tool, and that is settled rather than pending.**
|
|
27
|
+
> `clearly_sticker_generate` **does not exist** and is not planned — an earlier version of this
|
|
28
|
+
> note called it a missing piece. The MCP surface is seven tools split by operation, and a
|
|
29
|
+
> per-feature tool for every workspace action is the 139-tool surface that was withdrawn. The
|
|
30
|
+
> action is production code — the same pipeline the paid studio uses — and the CLI reaches it with
|
|
31
|
+
> full attribution.
|
|
32
|
+
|
|
33
|
+
**It is slow (30–90s), async, and costs the user a sheet credit.** Pass a `compositionId` and the pipeline does the canvas work for you: when the art lands, it places a **transparent parent frame ("Sticker sheet")**, every cut-out sticker nested as its own `image` node (drag one out!), and the **die-cut contour as a nested vector `svg` layer ("Cutline (kiss-cut)")**. The cutline is true vector — exported as the spot cut layer, never rasterized.
|
|
34
|
+
|
|
35
|
+
The call awaits the pipeline (racing a 90s timeout) so you usually get the **full result back** — `{ ok, sheetId, stickerCount, sheetUrl, placed }`. If it ran long you get `{ sessionId, timedOut: true }`; then perceive until the frame appears (see step 2).
|
|
36
|
+
|
|
37
|
+
## 1. Brief — turn the idea into a cohesive set
|
|
38
|
+
|
|
39
|
+
Don't just forward the user's sentence. Shape it into a **set with a through-line**: one subject family, one style, one palette, consistent line weight. Then list the concepts back before spending the credit.
|
|
40
|
+
|
|
41
|
+
> *"Stickers for your plant shop — I'm thinking a cohesive 9-sticker set, flat-color cottagecore, sage + terracotta palette, chunky outlines: 1) monstera leaf, 2) watering can, 3) 'plant mom' badge, 4) terracotta pot, 5) snail, 6) sun, 7) 'grow' lettering, 8) seed packet, 9) trowel. Generate this sheet?"*
|
|
42
|
+
|
|
43
|
+
A sticker sheet is ONE generation, not N — the model draws the whole cohesive grid. So the brief = the `prompt` (subject + vibe + palette), plus `style` and `stickerCount`.
|
|
44
|
+
|
|
45
|
+
## 2. Generate — one call, drop on the canvas
|
|
46
|
+
|
|
47
|
+
Make a canvas first (or reuse one), then fire the gen with `compositionId` so it lands:
|
|
48
|
+
|
|
49
|
+
```jsonc
|
|
50
|
+
beehaven call composition-create '{ "title": "Plant shop stickers" }'
|
|
51
|
+
// → { "id": "c_…" }
|
|
52
|
+
|
|
53
|
+
beehaven call sticker-sheet-gen '{
|
|
54
|
+
"compositionId": "c_…",
|
|
55
|
+
"prompt": "cottagecore plant-shop stickers: monstera leaf, watering can, terracotta pot, snail, sun, seed packet — flat color, chunky outlines, sage green + terracotta palette",
|
|
56
|
+
"style": "cottagecore",
|
|
57
|
+
"stickerCount": 9,
|
|
58
|
+
"bleedStyle": "halo",
|
|
59
|
+
"aspectRatio": "2:3"
|
|
60
|
+
}'
|
|
61
|
+
// → { ok:true, sheetId:"sht_…", stickerCount:9, sheetUrl:"https://…", placed:{ stickers:9, cutline:true } }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Input shape (all optional except `prompt`):
|
|
65
|
+
|
|
66
|
+
| Field | Meaning |
|
|
67
|
+
|---|---|
|
|
68
|
+
| `prompt`* | what the stickers depict — subject, vibe, palette |
|
|
69
|
+
| `compositionId` | **pass it** — the canvas to drop the sheet onto (placeholder + frame + cutline) |
|
|
70
|
+
| `style` | preset: `kawaii`, `planner`, `cottagecore`, `doodle`, … (omit → inferred) |
|
|
71
|
+
| `stickerCount` | stickers on the sheet (e.g. 9, 16, 30). Default 30 |
|
|
72
|
+
| `bleedStyle` | `halo` (default — white sticker outline) or `full-bleed` |
|
|
73
|
+
| `aspectRatio` | sheet ratio: `1:1` `2:3` `3:2` `3:4` `4:3` `9:16` `16:9` |
|
|
74
|
+
| `quality` | `standard` (default, 4K) or `premium` |
|
|
75
|
+
| `seed` | reproducibility |
|
|
76
|
+
|
|
77
|
+
**Handle the async/loading case.** If the response is `{ sessionId, timedOut: true }` (no `placed`), the gen is still running — the ⏳ placeholder is already on the canvas. Poll until the real frame lands:
|
|
78
|
+
|
|
79
|
+
```jsonc
|
|
80
|
+
canvas-perceive { "compositionId": "c_…", "format": "text" }
|
|
81
|
+
// look in `contents` for a frame named "Sticker sheet" with image children
|
|
82
|
+
// + an svg layer "Cutline (kiss-cut)". When it's there, the sheet is done.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
On a hard failure the response carries an `error` (`no_exports_remaining` → user needs to buy a sheet; `rate_limit_exceeded` → back off `retryAfter`s) and the credit is auto-refunded — relay that plainly, don't retry blindly.
|
|
86
|
+
|
|
87
|
+
## 3. The sheet is already laid out — make it presentable
|
|
88
|
+
|
|
89
|
+
The pipeline placed the frame, the cut-out stickers (gridded, native pixel size), and the cutline layer in ONE write. Your job is polish, via `canvas-act` (see `clearly-canvas`):
|
|
90
|
+
|
|
91
|
+
- **Perceive first**, read the `backgroundColor`, then drop a `text` title over the frame: "Plant shop · 9 stickers · kiss-cut".
|
|
92
|
+
- A tiny caption noting the **"Cutline (kiss-cut)"** layer is the spot cut path (vector) — toggle it to preview the die-cut.
|
|
93
|
+
- If the grid is cramped, `canvas.update-nodes` to nudge the frame into the user's `gaze`.
|
|
94
|
+
|
|
95
|
+
Don't rebuild the grid by hand — the pipeline already nested everything correctly. Only add labels + framing context.
|
|
96
|
+
|
|
97
|
+
## 4. Export — the printable bundle
|
|
98
|
+
|
|
99
|
+
When they're happy, pull the print kit:
|
|
100
|
+
|
|
101
|
+
```jsonc
|
|
102
|
+
beehaven call sticker-sheet-export '{ "sheetId": "sht_…" }'
|
|
103
|
+
// → { zipUrl, pdfUrl, sheetUrl, stickerUrls:[…], stickerCount, hasCutFile:true }
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- `zipUrl` — the FULL kit: print-ready **PDF** + **cut-file SVG** (the spot cut layer) + every individual sticker PNG + the composited sheet.
|
|
107
|
+
- `pdfUrl` — drop straight into a Cricut / Roland / Stickermule flow.
|
|
108
|
+
- Omit `sheetId` to export their most recent sheet.
|
|
109
|
+
|
|
110
|
+
Hand the user the `pdfUrl` / `zipUrl` and tell them the SVG cut file is what a plotter reads for the die-cut contour.
|
|
111
|
+
|
|
112
|
+
## 5. Keep the human in the loop
|
|
113
|
+
|
|
114
|
+
The whole point of the canvas is steering by gesture. After the sheet lands: *"It's on your canvas — tell me 'more like #2', 'swap to a blue palette', or 'add a cat'."* Then re-run `sticker-sheet-gen` with the revised `prompt`/`style`/`seed` (reuse `seed` to keep a look, change it to re-roll), and re-perceive. Iterate until they love it, *then* export.
|
|
115
|
+
|
|
116
|
+
## The viral bit
|
|
117
|
+
|
|
118
|
+
A real die-cut pack — transparent stickers, a visible kiss-cut contour, a print-ready PDF the user actually sends to a sticker printer — is the single most shareable output Clearly has. People post the laptop, not the prompt. So make every sheet land clean: cohesive set, honest cutline, one screenshot that reads as "I generated these and printed them." The sticker IS the share.
|
|
119
|
+
|
|
120
|
+
## Single-sticker fallback
|
|
121
|
+
|
|
122
|
+
For ONE vector sticker (not a sheet), draw it natively with `canvas-act` like a designer: shapes and `vector.create` pen paths in a frame, named and grouped, with the white border as its own closed path behind the art. Use `studio-image-generate` for a painterly raster sticker, and `format:'svg'` only when a generated SVG file is asked for. If `sticker-sheet-gen` is ever unavailable, the manual sheet = `studio-image-generate` per concept (transparent), then `canvas-act` → `frame.create` + one `canvas.create-node {type:'image'}` per sticker on a grid + a closed `vector.create` cutline outline. But that's the cold path — the pipeline above is the real, supported one.
|
|
123
|
+
|
|
124
|
+
## Rules of thumb
|
|
125
|
+
|
|
126
|
+
- **One gen = one whole sheet.** Don't loop the call per sticker; the model draws the cohesive grid in a single pass.
|
|
127
|
+
- **Always pass `compositionId`** — that's what lands the placeholder, frame, stickers, and cutline. No `compositionId` = no canvas output.
|
|
128
|
+
- **It's slow + costs a credit.** Confirm the brief BEFORE generating; relay `no_exports_remaining` / `rate_limit_exceeded` plainly (credit auto-refunds on failure).
|
|
129
|
+
- **`timedOut:true` ≠ failed** — the gen is still running; `canvas-perceive` until the "Sticker sheet" frame appears.
|
|
130
|
+
- **The cutline is vector** ("Cutline (kiss-cut)" svg layer) — it's the spot cut path; the export SVG/PDF is what a plotter cuts.
|
|
131
|
+
- **Iterate by re-genning**, reuse `seed` to hold a look, then **export last**.
|
|
132
|
+
- **Reach `sticker-sheet-gen` / `sticker-sheet-export` with `beehaven call`** — they are workspace actions, not MCP tools, and will not become tools.
|