@zibby/skills 0.1.32 → 0.1.34
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/chat-memory.js +29 -27
- package/dist/chat-notify.js +3 -3
- package/dist/github.js +4 -3
- package/dist/gitlab.js +19 -0
- package/dist/index.js +141 -120
- package/dist/integrations.js +1 -1
- package/dist/jira.js +2 -2
- package/dist/lark.js +1 -1
- package/dist/linear.js +14 -14
- package/dist/llm-billing.js +1 -1
- package/dist/package.json +3 -1
- package/dist/plane.js +1 -1
- package/dist/sentry.js +2 -2
- package/dist/slack.js +1 -1
- package/dist/trackers/github-adapter.js +4 -3
- package/dist/trackers/index.js +13 -12
- package/dist/trackers/jira-adapter.js +1 -1
- package/dist/trackers/linear-adapter.js +16 -16
- package/docs/apps/agent-ops.md +6 -6
- package/docs/apps/deploy.md +1 -1
- package/docs/apps/index.md +45 -42
- package/docs/apps/managing.md +1 -1
- package/docs/cli-reference.md +67 -67
- package/docs/cloning-repositories.md +9 -9
- package/docs/cloud/bundles.md +8 -8
- package/docs/cloud/dedicated-egress.md +6 -6
- package/docs/cloud/env-vars.md +29 -29
- package/docs/cloud/limits.md +11 -11
- package/docs/cloud/triggering.md +16 -16
- package/docs/concepts/agents.md +4 -4
- package/docs/concepts/sessions.md +7 -7
- package/docs/concepts/state.md +1 -1
- package/docs/concepts/sub-graphs.md +9 -9
- package/docs/get-started/deploy.md +14 -14
- package/docs/get-started/install.md +5 -3
- package/docs/get-started/run-locally.md +12 -12
- package/docs/get-started/trigger-and-logs.md +14 -14
- package/docs/get-started/use-from-agents.md +17 -17
- package/docs/get-started/your-first-workflow.md +10 -7
- package/docs/integrations/gitlab.md +43 -0
- package/docs/integrations/lark.md +41 -0
- package/docs/integrations/linear.md +43 -0
- package/docs/integrations/notion.md +33 -0
- package/docs/integrations/plane.md +46 -0
- package/docs/integrations/sentry.md +42 -0
- package/docs/integrations/slack.md +33 -0
- package/docs/intro.md +16 -12
- package/docs/legacy/test-automation.md +2 -2
- package/docs/packages/cli.md +11 -11
- package/docs/packages/core.md +2 -2
- package/docs/packages/mcp-cli.md +18 -18
- package/docs/packages/skills.md +2 -2
- package/docs/packages/ui-memory.md +2 -2
- package/docs/recipes/bug-autofix.md +85 -0
- package/docs/recipes/github-ai-scout.md +61 -0
- package/docs/recipes/index.md +39 -34
- package/docs/recipes/pipeline-supervisor.md +57 -0
- package/docs/recipes/sentry-triage.md +7 -7
- package/docs/recipes/test.md +6 -6
- package/docs/skills/browser.md +2 -2
- package/docs/skills/chat-memory.md +40 -11
- package/docs/skills/core-tools.md +1 -1
- package/docs/skills/function-skill.md +1 -1
- package/docs/skills/github.md +2 -2
- package/docs/skills/index.md +4 -0
- package/docs/skills/jira.md +1 -1
- package/docs/skills/lark.md +1 -1
- package/docs/skills/memory.md +2 -2
- package/docs/skills/sentry.md +1 -1
- package/docs/skills/slack.md +2 -2
- package/package.json +3 -1
package/docs/packages/skills.md
CHANGED
|
@@ -17,7 +17,7 @@ npm install @zibby/skills
|
|
|
17
17
|
|
|
18
18
|
## What Are Skills?
|
|
19
19
|
|
|
20
|
-
A **skill** is a declarative description of an MCP (Model Context Protocol) server and the tools it exposes. Skills are the bridge between your
|
|
20
|
+
A **skill** is a declarative description of an MCP (Model Context Protocol) server and the tools it exposes. Skills are the bridge between your agent nodes and external capabilities like browser automation, Jira, GitHub, Slack, and test memory.
|
|
21
21
|
|
|
22
22
|
Skills are **agent-agnostic** — the same skill definition works across Cursor, Claude, and Codex. The framework resolves the skill into the right MCP configuration for whichever agent is active.
|
|
23
23
|
|
|
@@ -46,7 +46,7 @@ export const executeLiveNode = {
|
|
|
46
46
|
};
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
When the
|
|
49
|
+
When the agent runs:
|
|
50
50
|
1. The framework reads the node's `skills` array
|
|
51
51
|
2. For each skill, calls `skill.resolve()` to get the MCP server config
|
|
52
52
|
3. Injects the resolved MCP server into the agent's environment
|
|
@@ -13,7 +13,7 @@ npm install @zibby/ui-memory
|
|
|
13
13
|
|
|
14
14
|
Current version: **1.1.0**
|
|
15
15
|
|
|
16
|
-
> Renamed from `@zibby/memory` to make the per-domain UI focus explicit.
|
|
16
|
+
> Renamed from `@zibby/memory` to make the per-domain UI focus explicit. This package is the **UI test-memory** store (Dolt-backed, per-domain). For chat-style agent memory — facts, decisions, task history — see the [Chat memory skill](../skills/chat-memory.md), which defaults to a **mem0** semantic backend (with automatic fallback to Dolt) and can be pinned to Dolt explicitly.
|
|
17
17
|
|
|
18
18
|
## Why memory
|
|
19
19
|
|
|
@@ -51,7 +51,7 @@ zibby memory init
|
|
|
51
51
|
|
|
52
52
|
Creates `.zibby/memory/.dolt/` with the schema for runs, selectors, page model, navigation, and insights.
|
|
53
53
|
|
|
54
|
-
### 3. Enable memory in your
|
|
54
|
+
### 3. Enable memory in your agent
|
|
55
55
|
|
|
56
56
|
Add `SKILLS.MEMORY` to any node that should have memory access:
|
|
57
57
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 4
|
|
3
|
+
title: Bug-autofix agent
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `bug-autofix` — ticket → fix PR → tracker writeback
|
|
7
|
+
|
|
8
|
+
The flagship orchestrator agent. It polls a tracker for new bugs, classifies each one, opens a fix PR for the autofixable ones, and writes the result back to the tracker — chaining three reusable building-block agents via **sub-graph dispatch**.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
poll (this graph)
|
|
12
|
+
↓ found a ticket?
|
|
13
|
+
triage → sub-graph: ticket-triage → { severity, shouldAutofix, summary }
|
|
14
|
+
↓ severity ≥ AUTOFIX_MIN_SEVERITY AND shouldAutofix AND repo configured?
|
|
15
|
+
├─ yes → code_fix → sub-graph: code-fix → { pr_url, branch }
|
|
16
|
+
│ ↓
|
|
17
|
+
└─ no ───────────────────────────────────────────┐
|
|
18
|
+
↓
|
|
19
|
+
writeback → sub-graph: tracker-writeback (runs on BOTH branches)
|
|
20
|
+
↓
|
|
21
|
+
END
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
High-severity, concrete, autofixable bugs get a fix PR opened and the Jira ticket moved to *In Review*. Everything else (noise, vague, too-big, below threshold, or no repo configured) is triaged and a human is notified — no PR.
|
|
25
|
+
|
|
26
|
+
## The three building-block agents
|
|
27
|
+
|
|
28
|
+
`bug-autofix` is an orchestrator: each step is a separate, independently deployable agent it dispatches as a sub-graph. Deploy all four in the same project.
|
|
29
|
+
|
|
30
|
+
| Step | Building block | Input | Output |
|
|
31
|
+
|---|---|---|---|
|
|
32
|
+
| `triage` | `ticket-triage` | `{ ticket }` | severity (`CRITICAL…NOISE`), `shouldAutofix`, summary |
|
|
33
|
+
| `code_fix` | `code-fix` | `{ ticket, repo }` | `{ pr_url, branch }` — clones, fixes with an inline test-gate, opens a PR |
|
|
34
|
+
| `writeback` | `tracker-writeback` | `{ ticket, pr_url?, branch?, result }` | transitions the issue, comments the PR link, posts to Slack/Lark |
|
|
35
|
+
|
|
36
|
+
Each block is usable on its own — `ticket-triage` is a fine standalone classifier; `code-fix` is a standalone clone→fix→PR agent.
|
|
37
|
+
|
|
38
|
+
## Sub-graph dispatch
|
|
39
|
+
|
|
40
|
+
A child step is declared with `{ workflow }` on the node:
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
graph.addNode('triage', {
|
|
44
|
+
workflow: 'ticket-triage', // child deploy slug
|
|
45
|
+
input: (state) => ({ ticket: state.poll.ticket }),
|
|
46
|
+
output: 'classify', // dot-path on the child's final state
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The engine spawns the child as a **separate execution** (its own run row + Fargate task, or in-process when runtime tags match), links it to the parent for the Activity-tab tree and cancellation cascade, polls until terminal, and extracts `output` back into the parent state under the node name.
|
|
51
|
+
|
|
52
|
+
## Trigger
|
|
53
|
+
|
|
54
|
+
Cron poll (default) or per-ticket webhook. Each run processes ONE ticket; the next tick/webhook handles the next.
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{ "jql": "issuetype = Bug AND statusCategory != Done ORDER BY updated DESC" } // cron
|
|
58
|
+
{ "ticketKey": "PROJ-123" } // webhook
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Config (ENV tab)
|
|
62
|
+
|
|
63
|
+
| Var | Meaning |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `REPO_URL` | Repo the fix targets. Unset → no autofix, notify-only. |
|
|
66
|
+
| `REPO_NAME` | Short repo name (default: derived from `REPO_URL`). |
|
|
67
|
+
| `REPO_BRANCH` | Base branch (default `main`). |
|
|
68
|
+
| `AUTOFIX_MIN_SEVERITY` | Routing floor for code-fix (default `MEDIUM`). |
|
|
69
|
+
|
|
70
|
+
Plus the children's own config: Jira connected (triage/poll/writeback), GitHub connected (code-fix), and `SLACK_CHANNEL` / `LARK_RECEIVE_ID` (writeback).
|
|
71
|
+
|
|
72
|
+
## Scope (v1)
|
|
73
|
+
|
|
74
|
+
- **In:** poll → triage → (autofix?) → code-fix → writeback, end-to-end to "PR opened + Jira written back".
|
|
75
|
+
- **Out:** deploy / verify / rollback; an auto re-dispatch loop; in-engine approval. The open PR is the human gate.
|
|
76
|
+
- **Tracker seam:** Jira is implemented; GitHub / Linear are extension points in the child templates.
|
|
77
|
+
|
|
78
|
+
## Deploy
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
zibby agent templates # browse the marketplace
|
|
82
|
+
zibby agent new bug-autofix -t bug-autofix # scaffold the orchestrator
|
|
83
|
+
# ...also scaffold + deploy ticket-triage, code-fix, tracker-writeback in the same project
|
|
84
|
+
zibby agent deploy bug-autofix
|
|
85
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 5
|
|
3
|
+
title: GitHub AI scout
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `github-ai-scout` — daily AI-project radar
|
|
7
|
+
|
|
8
|
+
A daily scout agent that finds **new/trending AI projects on GitHub**, scores them against **your** rubric with an LLM, and posts a shortlist to Slack for a human to review. It proposes — it never stars, forks, or adds anything.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
scan (this graph) → GitHub search REST API: your query + created:> + stars:>=
|
|
12
|
+
↓
|
|
13
|
+
score (LLM) → rank + filter candidates against your rubric → shortlist
|
|
14
|
+
↓
|
|
15
|
+
digest (this graph) → render a report-object → sub-graph: notify-slack
|
|
16
|
+
↓
|
|
17
|
+
END
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Everything that defines *what* it scouts is a deploy-time input — the search query, the recency/star thresholds, and the scoring rubric. Point it at a different topic and a different rubric and it scouts that domain instead.
|
|
21
|
+
|
|
22
|
+
## Inputs
|
|
23
|
+
|
|
24
|
+
| Input | Default | What it does |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `query` | `topic:ai topic:llm topic:agents topic:rag` | GitHub search query, WITHOUT date/stars filters (scan appends those). |
|
|
27
|
+
| `daysBack` | `30` | Only repos created within this many days. |
|
|
28
|
+
| `minStars` | `30` | Minimum stars. |
|
|
29
|
+
| `maxCandidates` | `30` | How many repos to fetch (max 100). |
|
|
30
|
+
| `shortlistSize` | `8` | How many to surface in Slack. |
|
|
31
|
+
| `rubric` | generic quality rubric | Plain-English scoring instruction — describe *your* taste. |
|
|
32
|
+
| `excludeRepos` | `[]` | `owner/repo` names to skip — dedup against repos you already track. |
|
|
33
|
+
| `slackChannel` | **required** | Channel id (`C012345`) or `#name` where the shortlist lands. |
|
|
34
|
+
|
|
35
|
+
## GitHub auth (optional)
|
|
36
|
+
|
|
37
|
+
The scan works **unauthenticated** for public search. To raise the rate limit, set a `GITHUB_TOKEN` env var on the project — the scan sends it as a Bearer token. No scopes needed; public read is enough.
|
|
38
|
+
|
|
39
|
+
## Slack setup
|
|
40
|
+
|
|
41
|
+
The digest dispatches to the **notify-slack** building-block agent (in-process sub-graph), which renders the shortlist as a native Block-Kit card. Deploy `notify-slack` in the same project, connect Slack, and set `slackChannel`.
|
|
42
|
+
|
|
43
|
+
## Trigger
|
|
44
|
+
|
|
45
|
+
Cron — typically **daily**. Each run is a fresh scan over the trailing `daysBack` window; use `excludeRepos` to keep the shortlist to NEW finds.
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{ "slackChannel": "#ai-radar" }
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## What it does NOT do
|
|
52
|
+
|
|
53
|
+
It **proposes a shortlist for human review — never auto-adds.** No starring, no forking, no writing anywhere except the Slack post. A person decides what to do with each find.
|
|
54
|
+
|
|
55
|
+
## Deploy
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
zibby agent templates # browse the marketplace
|
|
59
|
+
zibby agent new github-ai-scout -t github-ai-scout # scaffold (also deploy notify-slack)
|
|
60
|
+
zibby agent deploy github-ai-scout
|
|
61
|
+
```
|
package/docs/recipes/index.md
CHANGED
|
@@ -1,63 +1,68 @@
|
|
|
1
1
|
---
|
|
2
2
|
sidebar_position: 1
|
|
3
|
-
title:
|
|
3
|
+
title: Agent Marketplace
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Agent Marketplace
|
|
7
7
|
|
|
8
|
-
Zibby ships
|
|
8
|
+
Zibby ships a set of **ready-made agents** — production-ready automations you can deploy today. Each one is a real Zibby agent, eating its own dog food. Browse them, deploy with one command, and tune them to your project.
|
|
9
|
+
|
|
10
|
+
> An **Agent** is a deployed automation built on coding-agent CLIs. Build and ship one with the `zibby agent` CLI.
|
|
9
11
|
|
|
10
12
|
```
|
|
11
|
-
|
|
12
|
-
┌──────────────────►│ zibby
|
|
13
|
-
│ │ zibby
|
|
14
|
-
│
|
|
13
|
+
┌──────────────────┐
|
|
14
|
+
┌──────────────────►│ zibby agent new │ ◄── Build your own
|
|
15
|
+
│ │ zibby agent ... │
|
|
16
|
+
│ └──────────────────┘
|
|
15
17
|
│ ▲
|
|
16
18
|
│ │ uses the same primitives
|
|
17
19
|
│ │
|
|
18
|
-
│
|
|
19
|
-
│
|
|
20
|
-
│
|
|
21
|
-
│
|
|
22
|
-
│
|
|
23
|
-
│
|
|
20
|
+
│ ┌──────────────────────┐
|
|
21
|
+
│ Marketplace ────►│ bug-autofix │ ◄── Ticket → fix PR → writeback
|
|
22
|
+
│ agents built │ github-ai-scout │ ◄── Daily AI-project radar
|
|
23
|
+
│ on top of the │ pipeline-supervisor │ ◄── Zibby managing Zibby
|
|
24
|
+
│ same platform │ sentry-triage │ ◄── Incident routing
|
|
25
|
+
│ │ zibby test │ ◄── Browser testing
|
|
26
|
+
│ └──────────────────────┘
|
|
24
27
|
```
|
|
25
28
|
|
|
26
|
-
You don't have to use the
|
|
29
|
+
You don't have to use the marketplace. You can build whatever agent you want with `zibby agent new`. The marketplace just saves you from writing the obvious starter graphs for common cases.
|
|
27
30
|
|
|
28
|
-
## Available
|
|
31
|
+
## Available agents
|
|
29
32
|
|
|
30
|
-
|
|
|
33
|
+
| Agent | What it does | Best for |
|
|
31
34
|
|---|---|---|
|
|
35
|
+
| [Bug-autofix](./bug-autofix) | Polls a tracker, triages each bug, opens a fix PR for autofixable ones, writes the result back. Chains three reusable building-block agents (`ticket-triage` → `code-fix` → `tracker-writeback`). | End-to-end bug SDLC, automated remediation |
|
|
36
|
+
| [GitHub AI scout](./github-ai-scout) | Daily scan of new/trending AI projects on GitHub, LLM-scored against your rubric, shortlist posted to Slack | Tracking a fast-moving space without manual triage |
|
|
37
|
+
| [Pipeline supervisor](./pipeline-supervisor) | Watches the project's *other* agents, flags failing/slow ones, posts an improvement proposal to Slack/Lark | Zibby managing Zibby — agent fleet health |
|
|
38
|
+
| [Sentry triage](./sentry-triage) | Hourly: fetch unresolved Sentry issues, classify by severity, route via Slack/Lark (author DM + usergroup mention) | Automated incident routing without a human triager |
|
|
32
39
|
| [`zibby test`](./test) | Drives a browser via Cursor or Claude, runs assertions, generates a Playwright script + verification video | E2E test generation from plain-English specs |
|
|
33
|
-
| [Sentry Triage](./sentry-triage) | Hourly: fetch unresolved Sentry issues, classify by severity, route via Slack/Lark — author DM + usergroup mention | Automated incident routing without a human triager |
|
|
34
|
-
| `zibby analyze` | Reads a Jira/Linear ticket, walks the codebase, produces an implementation plan | Pre-implementation planning, ticket triage |
|
|
35
|
-
| `zibby generate` | Generates test specs from a ticket + codebase | Backfilling test coverage on legacy projects |
|
|
36
|
-
| `zibby video` | Re-records or organizes verification videos for an existing test | Producing demos, regenerating after code changes |
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
Plus reusable **building-block agents** that the orchestrators compose via sub-graph dispatch — `ticket-triage`, `code-fix`, `tracker-writeback`, `notify-slack`, `notify-lark`, `notify-notion`. Each is independently deployable and usable on its own.
|
|
42
|
+
|
|
43
|
+
## Why a marketplace
|
|
39
44
|
|
|
40
|
-
Three reasons we ship
|
|
45
|
+
Three reasons we ship ready-made agents alongside the platform:
|
|
41
46
|
|
|
42
|
-
1. **Proof of concept** — every
|
|
43
|
-
2. **Faster onboarding** — you don't need to design a full graph on day one.
|
|
44
|
-
3. **
|
|
47
|
+
1. **Proof of concept** — every marketplace agent IS a Zibby agent. If `bug-autofix` works, the platform works. You can see the actual graph definition and adapt it.
|
|
48
|
+
2. **Faster onboarding** — you don't need to design a full graph on day one. Deploy an agent, see the output, then build your own.
|
|
49
|
+
3. **Composable** — the orchestrators (`bug-autofix`) are built from smaller building-block agents dispatched as sub-graphs, so you can reuse the pieces in your own agents.
|
|
45
50
|
|
|
46
|
-
## Building your own
|
|
51
|
+
## Building your own agent
|
|
47
52
|
|
|
48
|
-
If you have
|
|
53
|
+
If you have an agent you'd want shipped as a built-in:
|
|
49
54
|
|
|
50
55
|
```bash
|
|
51
|
-
zibby
|
|
56
|
+
zibby agent new my-agent # scaffold
|
|
52
57
|
# ... build it out ...
|
|
53
|
-
zibby
|
|
54
|
-
zibby
|
|
58
|
+
zibby agent run my-agent # test locally
|
|
59
|
+
zibby agent deploy my-agent # ship to your cloud account
|
|
55
60
|
```
|
|
56
61
|
|
|
57
|
-
If it's broadly useful, we may pull it into the official
|
|
62
|
+
If it's broadly useful, we may pull it into the official marketplace. Open an issue or PR.
|
|
58
63
|
|
|
59
64
|
## Next
|
|
60
65
|
|
|
61
|
-
- **[
|
|
62
|
-
- **[Build your own
|
|
63
|
-
- **[Concepts: graph](../concepts/graph)** — the primitives every
|
|
66
|
+
- **[Bug-autofix agent](./bug-autofix)** — the flagship orchestrator, walked through end-to-end
|
|
67
|
+
- **[Build your own agent](../get-started/your-first-workflow)** — scaffold and customize
|
|
68
|
+
- **[Concepts: graph](../concepts/graph)** — the primitives every agent is built on
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 6
|
|
3
|
+
title: Pipeline supervisor
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `pipeline-supervisor` — Zibby managing Zibby
|
|
7
|
+
|
|
8
|
+
A scheduled supervisor agent that watches the project's *other* agents, finds the ones that are failing or slow, and posts a human-reviewable improvement proposal to Slack or Lark.
|
|
9
|
+
|
|
10
|
+
v1 is strictly **READ → PROPOSE → NOTIFY**. It never edits another agent's graph — that's the safe starting point. The auto-PATCH step is a deliberate TODO, not implemented.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
scan_pipelines (deterministic + Zibby REST API, PAT-authed)
|
|
14
|
+
→ propose_improvements (LLM — one proposal per flagged agent)
|
|
15
|
+
→ notify (LLM + SKILLS.CHAT_NOTIFY — one review card)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
If `scan_pipelines` flags nothing, the graph short-circuits straight to `notify` (which posts/skips without an LLM call on the proposer).
|
|
19
|
+
|
|
20
|
+
## How it reads other agents
|
|
21
|
+
|
|
22
|
+
A direct authed `GET /executions?projectId=<id>&limit=200` against the Zibby REST API (the same route the dashboard and remote MCP server use), carrying a **user personal access token** in `Authorization: Bearer`.
|
|
23
|
+
|
|
24
|
+
It must be a USER PAT (`zby_pat_…`), **not** the Fargate-injected `PROJECT_API_TOKEN`: every cross-agent read route requires a `userId` from the authorizer, and a project token carries none — so it 401s.
|
|
25
|
+
|
|
26
|
+
## Config (ENV tab)
|
|
27
|
+
|
|
28
|
+
Required:
|
|
29
|
+
|
|
30
|
+
- `ZIBBY_PAT` — user personal access token the supervisor reads executions with.
|
|
31
|
+
- `SLACK_CHANNEL` **or** `LARK_RECEIVE_ID` — where the review card goes.
|
|
32
|
+
|
|
33
|
+
Optional:
|
|
34
|
+
|
|
35
|
+
- `SUPERVISOR_PROJECT_ID` — project to supervise (defaults to the running project).
|
|
36
|
+
- `SLACK_MENTIONS` / `LARK_MENTIONS` — JSON array of mentions on the card.
|
|
37
|
+
|
|
38
|
+
## Input (per-run dials)
|
|
39
|
+
|
|
40
|
+
| Field | Default | Meaning |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `lookbackHours` | 24 | Hours of execution history to scan |
|
|
43
|
+
| `minFailRate` | 0.4 | Flag an agent failing ≥ this fraction of recent runs |
|
|
44
|
+
| `targetWorkflowTypes` | — | Optional name filter (case-insensitive substring) |
|
|
45
|
+
| `maxPipelines` | 25 | Cap on distinct agents analyzed per run |
|
|
46
|
+
|
|
47
|
+
## Trigger
|
|
48
|
+
|
|
49
|
+
Cron — typically daily or hourly, depending on how active the supervised project is.
|
|
50
|
+
|
|
51
|
+
## Deploy
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
zibby agent templates # browse the marketplace
|
|
55
|
+
zibby agent new pipeline-supervisor -t pipeline-supervisor # scaffold
|
|
56
|
+
zibby agent deploy pipeline-supervisor
|
|
57
|
+
```
|
|
@@ -5,7 +5,7 @@ title: Sentry triage recipe
|
|
|
5
5
|
|
|
6
6
|
# `sentry-triage` — agent-driven Sentry triage
|
|
7
7
|
|
|
8
|
-
An hourly Sentry triage
|
|
8
|
+
An hourly Sentry triage agent that fetches unresolved issues, classifies them by severity, and **routes them to the right human**. Three nodes, end-to-end agent-driven, deployed from the marketplace in one click.
|
|
9
9
|
|
|
10
10
|
```
|
|
11
11
|
fetch_issues → classify → dispatch_alerts
|
|
@@ -27,12 +27,12 @@ The agent uses [`slack_lookup_user_by_email`](../skills/slack), [`slack_list_use
|
|
|
27
27
|
## Deploy from the marketplace
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
zibby
|
|
30
|
+
zibby agent templates deploy sentry-triage --project <project-id>
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Or via the dashboard: `/marketplace/workflows` → Sentry Triage → Deploy.
|
|
34
34
|
|
|
35
|
-
After deploy, configure ENV (Apps →
|
|
35
|
+
After deploy, configure ENV (Apps → agent → ENV tab):
|
|
36
36
|
|
|
37
37
|
| Env var | Required? | Default | What it does |
|
|
38
38
|
|---|---|---|---|
|
|
@@ -79,15 +79,15 @@ If you deployed your backend with `RELEASE_SHA` Sentry release-tracking on, susp
|
|
|
79
79
|
Each node's prompt lives in its own module — fork the template, edit, redeploy:
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
zibby
|
|
82
|
+
zibby agent download <uuid>
|
|
83
83
|
# edit nodes/dispatch-node.js
|
|
84
|
-
zibby
|
|
84
|
+
zibby agent deploy ./sentry-triage # same UUID, new version
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
Or fork the whole template repo if you want long-term divergence — it's just a `@zibby/workflow-templates/sentry-triage/` directory in the published package.
|
|
88
88
|
|
|
89
89
|
## Cadence
|
|
90
90
|
|
|
91
|
-
Default: hourly cron, fires `sinceMinutes=60`. Change in the trigger config (Apps →
|
|
91
|
+
Default: hourly cron, fires `sinceMinutes=60`. Change in the trigger config (Apps → agent → Triggers) — keep the SQL safe `since` between 5 and 1440 minutes (`inputSchema` enforces this).
|
|
92
92
|
|
|
93
|
-
→ Next: [`zibby test`](./test) (the browser-testing recipe) or [Build your own
|
|
93
|
+
→ Next: [`zibby test`](./test) (the browser-testing recipe) or [Build your own agent](../get-started/your-first-workflow).
|
package/docs/recipes/test.md
CHANGED
|
@@ -7,7 +7,7 @@ title: Browser test recipe (zibby test)
|
|
|
7
7
|
|
|
8
8
|
The browser-test recipe takes a plain-English spec, drives a real browser via a coding agent (Cursor / Claude / Codex / Gemini), runs the assertions, and produces a Playwright script + verification video.
|
|
9
9
|
|
|
10
|
-
It's a worked example of what the Zibby platform does — every step is a regular
|
|
10
|
+
It's a worked example of what the Zibby platform does — every step is a regular agent node with Zod-validated handoff. You can read the source, fork it, or build your own variation.
|
|
11
11
|
|
|
12
12
|
## Quick start
|
|
13
13
|
|
|
@@ -38,7 +38,7 @@ zibby test test-specs/checkout.txt --agent claude
|
|
|
38
38
|
|
|
39
39
|
Open the session in [Zibby Studio](https://zibby.app/studio) to scrub through the run, swap the prompt, re-execute any node.
|
|
40
40
|
|
|
41
|
-
## The graph (this is just a Zibby
|
|
41
|
+
## The graph (this is just a Zibby agent)
|
|
42
42
|
|
|
43
43
|
Under the hood, `zibby test` is a 3-node graph:
|
|
44
44
|
|
|
@@ -115,10 +115,10 @@ Auto-pull on test start, auto-push on test pass. Failing runs don't pollute team
|
|
|
115
115
|
|
|
116
116
|
## Forking the recipe
|
|
117
117
|
|
|
118
|
-
If the built-in recipe doesn't fit your case, scaffold a custom
|
|
118
|
+
If the built-in recipe doesn't fit your case, scaffold a custom agent and copy the structure:
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
|
-
zibby
|
|
121
|
+
zibby agent new my-test-agent
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
Then in `graph.mjs`, define your own nodes:
|
|
@@ -170,7 +170,7 @@ That's the platform. The recipe is just a starter.
|
|
|
170
170
|
npx @zibby/cli test test-specs/checkout.txt --headless
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
For
|
|
173
|
+
For agents triggered remotely (rather than per-CI-run), use [`agent trigger`](../cloud/triggering) on a deployed graph.
|
|
174
174
|
|
|
175
175
|
## Why this is different from Playwright codegen / a basic LLM script
|
|
176
176
|
|
|
@@ -187,4 +187,4 @@ For workflows triggered remotely (rather than per-CI-run), use [`workflow trigge
|
|
|
187
187
|
|
|
188
188
|
- [Recipes overview](./)
|
|
189
189
|
- [Concepts: graph](../concepts/graph) — the primitives this recipe uses
|
|
190
|
-
- [Cloud triggering](../cloud/triggering) — fire
|
|
190
|
+
- [Cloud triggering](../cloud/triggering) — fire agents from CI/CD
|
package/docs/skills/browser.md
CHANGED
|
@@ -5,7 +5,7 @@ title: Browser
|
|
|
5
5
|
|
|
6
6
|
# Browser skill
|
|
7
7
|
|
|
8
|
-
Playwright-driven browser automation. Click, type, navigate, snapshot, record video. Used by `zibby test` and by any
|
|
8
|
+
Playwright-driven browser automation. Click, type, navigate, snapshot, record video. Used by `zibby test` and by any agent node that needs to drive a web UI.
|
|
9
9
|
|
|
10
10
|
- **ID:** `browser`
|
|
11
11
|
- **MCP server:** `playwright` (tools exposed as `mcp__playwright__*`)
|
|
@@ -45,7 +45,7 @@ npm install @zibby/mcp-browser
|
|
|
45
45
|
|
|
46
46
|
Override the bin path with `MCP_BROWSER_PATH` if you need to point at a local checkout.
|
|
47
47
|
|
|
48
|
-
## Use in
|
|
48
|
+
## Use in an agent
|
|
49
49
|
|
|
50
50
|
```js
|
|
51
51
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
|
@@ -5,7 +5,7 @@ title: Chat memory
|
|
|
5
5
|
|
|
6
6
|
# Chat memory skill
|
|
7
7
|
|
|
8
|
-
Persistent agent memory across sessions — facts, decisions, preferences, task history.
|
|
8
|
+
Persistent agent memory across sessions — facts, decisions, preferences, task history. **mem0-backed by default** (embedding-based semantic recall, persists across cloud tasks); falls back to the self-contained Dolt backend automatically when the embedding proxy isn't available, or set `dolt` explicitly.
|
|
9
9
|
|
|
10
10
|
- **ID:** `chat-memory`
|
|
11
11
|
- **Runs in-process** — no MCP spawn
|
|
@@ -16,7 +16,7 @@ For test-run history (selectors, page models, prior runs) see [Memory](./memory.
|
|
|
16
16
|
|
|
17
17
|
| Tool | What it does |
|
|
18
18
|
|---|---|
|
|
19
|
-
| `memory_store` | Save a fact/decision/preference. Categories: `fact`, `decision`, `context`, `insight`, `preference`, `credential`, `url`, `error`, `workaround`. Tiers: `short` (24h), `mid` (default), `long` (permanent). Optional `memoryKey` for upserts |
|
|
19
|
+
| `memory_store` | Save a fact/decision/preference. Categories: `fact`, `decision`, `context`, `insight`, `preference`, `credential`, `url`, `error`, `workaround`. Tiers: `short` (24h), `mid` (default), `long` (permanent). Optional `memoryKey` for upserts. Optional `infer` (mem0 only — see [the `infer` toggle](#the-infer-toggle)) |
|
|
20
20
|
| `memory_recall` | Search by `query`, `category`, `ticketKey`, or `tier`. Ranked by relevance × recency |
|
|
21
21
|
| `memory_brief` | Compact briefing — recent sessions + top long/mid-tier memories. Call at conversation start |
|
|
22
22
|
| `memory_end_session` | Save a session summary + key facts (semicolon-separated) for future recall |
|
|
@@ -25,13 +25,7 @@ For test-run history (selectors, page models, prior runs) see [Memory](./memory.
|
|
|
25
25
|
|
|
26
26
|
## Setup
|
|
27
27
|
|
|
28
|
-
**
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
brew install dolt
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**mem0 (optional).** Set `ZIBBY_MEMORY_BACKEND=mem0` (or `memory.backend: 'mem0'` in `.zibby.config.mjs`) and `npm install mem0ai` in your workspace. Configure with:
|
|
28
|
+
**mem0 (default).** `zibby init` configures mem0 out of the box and writes the right deps (`mem0ai@npm:@zibby/mem0ai@^3.0.5` + `better-sqlite3`) into your project. In Zibby cloud runs the embedding/LLM calls are proxied and billed through the agent run — no OpenAI key of your own needed. For local runs, point it at any OpenAI-compatible endpoint:
|
|
35
29
|
|
|
36
30
|
```bash
|
|
37
31
|
ZIBBY_MEM0_OPENAI_BASE_URL=https://api.openai.com/v1
|
|
@@ -41,9 +35,44 @@ ZIBBY_MEM0_EMBEDDER_MODEL=text-embedding-3-small
|
|
|
41
35
|
ZIBBY_MEM0_EMBEDDING_DIMS=1536
|
|
42
36
|
```
|
|
43
37
|
|
|
44
|
-
mem0 mode
|
|
38
|
+
mem0 mode uses embedding search for `memory_store` / `memory_recall`; `memory_end_session`, `task_log`, and `task_history` still write to Dolt for cross-session continuity. mem0's SQLite vector store lives under `.zibby/memory/mem0/` and is carried across ephemeral cloud tasks by the tenant-scoped memory tarball sync.
|
|
39
|
+
|
|
40
|
+
**Graceful degradation.** If the embedding proxy is unreachable (or a local run has no `ZIBBY_MEM0_API_KEY`), memory ops automatically fall back to the Dolt backend per-op rather than failing the run — you get structured memory instead of an error.
|
|
41
|
+
|
|
42
|
+
**Dolt (self-contained, no embedding dependency).** Set `ZIBBY_MEMORY_BACKEND=dolt` (or `memory.backend: 'dolt'`, or `zibby init --memory-backend dolt`) to opt out of mem0 entirely. Install Dolt; the skill auto-creates `.zibby/memory/` on first use:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
brew install dolt
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### The `infer` toggle
|
|
49
|
+
|
|
50
|
+
mem0 can either store memories raw (embed-only, free) or run an LLM fact-extraction pass that distills and dedupes facts before storing (~7.7k tokens per call, costs money). This is the `infer` flag, and it **defaults to `false`** (embed-only).
|
|
51
|
+
|
|
52
|
+
Resolution precedence (first match wins):
|
|
53
|
+
|
|
54
|
+
1. **Per-call tool arg** — pass `infer: true` to `memory_store`
|
|
55
|
+
2. **Env toggle** — `ZIBBY_MEM0_INFER=true`
|
|
56
|
+
3. **Project config** — `memory.infer: true` in `.zibby.config.mjs`
|
|
57
|
+
4. Default — `false` (embed-only, no LLM call)
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
// .zibby.config.mjs
|
|
61
|
+
export default {
|
|
62
|
+
memory: {
|
|
63
|
+
backend: 'mem0',
|
|
64
|
+
infer: false, // default — store raw + embed, never call the LLM
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Turn `infer` on when you want mem0 to consolidate noisy inputs into clean facts; leave it off (the default) for free, deterministic embed-and-store.
|
|
70
|
+
|
|
71
|
+
### Cloud persistence
|
|
72
|
+
|
|
73
|
+
On Zibby Cloud, mem0 state **persists across Fargate tasks**. mem0's SQLite vector + history stores are rooted under the workspace's tenant-scoped `.zibby/memory/` tree, which is tarball-synced between executions — so a memory written in one run is recallable in the next, even though each run is a fresh, ephemeral container. mem0 user IDs are workspace-scoped (`workspace:<name>`, overridable via `ZIBBY_MEMORY_USER_ID`), keeping each project's memory isolated.
|
|
45
74
|
|
|
46
|
-
## Use in
|
|
75
|
+
## Use in an agent
|
|
47
76
|
|
|
48
77
|
```js
|
|
49
78
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
|
@@ -27,7 +27,7 @@ Most Claude/Cursor/Codex nodes get these tools by default from their agent strat
|
|
|
27
27
|
|
|
28
28
|
None. The skill has no env keys, no auth, no external dependencies.
|
|
29
29
|
|
|
30
|
-
## Use in
|
|
30
|
+
## Use in an agent
|
|
31
31
|
|
|
32
32
|
```js
|
|
33
33
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
|
@@ -34,7 +34,7 @@ export const myTool = skill('my_tool', {
|
|
|
34
34
|
|
|
35
35
|
Calling `skill()` both creates and **registers** the skill in the global registry, so just importing the module is enough to make it available.
|
|
36
36
|
|
|
37
|
-
## Use in
|
|
37
|
+
## Use in an agent
|
|
38
38
|
|
|
39
39
|
Once registered, reference by id:
|
|
40
40
|
|
package/docs/skills/github.md
CHANGED
|
@@ -37,11 +37,11 @@ Two options:
|
|
|
37
37
|
|
|
38
38
|
**GitHub App (recommended).** In **Settings → Integrations**, click **Connect GitHub**, install the Zibby GitHub App on the orgs/repos you want, and authorize. Tokens auto-refresh; you don't manage them. See the [GitHub Integration page](../integrations/github.md) for the full app permissions list.
|
|
39
39
|
|
|
40
|
-
**Personal access token.** Set `GITHUB_TOKEN` in your
|
|
40
|
+
**Personal access token.** Set `GITHUB_TOKEN` in your agent's env (locally) or via **Cloud → Env vars** (cloud runs). Scope `repo` for private read+write, `public_repo` for public-only.
|
|
41
41
|
|
|
42
42
|
The skill reads `envKeys: ['GITHUB_TOKEN']` and the official `@modelcontextprotocol/server-github` consumes it directly.
|
|
43
43
|
|
|
44
|
-
## Use in
|
|
44
|
+
## Use in an agent
|
|
45
45
|
|
|
46
46
|
```js
|
|
47
47
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
package/docs/skills/index.md
CHANGED
|
@@ -15,8 +15,12 @@ Per-skill reference for everything shipped in `@zibby/skills`. For the mental mo
|
|
|
15
15
|
| [Sentry](./sentry.md) | `sentry` | `sentry_list_projects`, `sentry_list_issues`, `sentry_get_issue` | OAuth (PKCE) |
|
|
16
16
|
| [Lark](./lark.md) | `lark` | `lark_send_message`, `lark_reply`, `lark_list_chats`, `lark_get_chat_history` | App ID + App Secret |
|
|
17
17
|
| [GitHub](./github.md) | `github` | Repos, PRs, issues, commits, file reads, clone | GitHub App or `GITHUB_TOKEN` |
|
|
18
|
+
| GitLab | `gitlab` | Repos, MRs, issues, pipelines (self-hosted or SaaS) | `GITLAB_TOKEN` (+ base URL) |
|
|
18
19
|
| [Slack](./slack.md) | `slack` | Channels, post/reply, reactions, history, users | Bot token + team ID |
|
|
19
20
|
| [Jira](./jira.md) | `jira` | Issues, sprints, comments, transitions | Atlassian OAuth |
|
|
21
|
+
| Linear | `linear` | `linear_list_issues`, `linear_get_issue`, `linear_add_comment`, `linear_update_state`, `linear_list_teams/states/labels` | `LINEAR_API_KEY` |
|
|
22
|
+
| Plane | `plane` | Projects, work items, cycles, modules, epics, comments (official MCP) | `PLANE_API_KEY` (+ `PLANE_WORKSPACE_SLUG`, `PLANE_BASE_URL`) |
|
|
23
|
+
| Notion | n/a | Not an attachable MCP skill — a [connectable integration](../integrations/notion.md). Agents publish a `report` object to Notion blocks (`reportToNotionBlocks`), e.g. the `notify-notion` template | OAuth (dashboard) / `NOTION_API_KEY` (SDK) |
|
|
20
24
|
| [Memory](./memory.md) | `memory` | Test history, selectors, page model (Dolt) | `zibby init --mem` |
|
|
21
25
|
| [Chat memory](./chat-memory.md) | `chat-memory` | `memory_store`, `memory_recall`, `memory_brief`, `task_log`, `task_history` | None (Dolt or mem0) |
|
|
22
26
|
| [Core tools](./core-tools.md) | `core-tools` | `read_file`, `write_file`, `list_directory`, `run_command`, `open_url`, `wait` | None |
|
package/docs/skills/jira.md
CHANGED
|
@@ -40,7 +40,7 @@ See the [Jira Integration page](../integrations/jira.md) for the user-facing set
|
|
|
40
40
|
|
|
41
41
|
Under the hood the bin reads `ATLASSIAN_ACCESS_TOKEN` + `ATLASSIAN_CLOUD_ID` (and optional `ATLASSIAN_INSTANCE_URL`), which the backend supplies through `resolveIntegrationToken('jira')`.
|
|
42
42
|
|
|
43
|
-
## Use in
|
|
43
|
+
## Use in an agent
|
|
44
44
|
|
|
45
45
|
```js
|
|
46
46
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
package/docs/skills/lark.md
CHANGED
|
@@ -30,7 +30,7 @@ Lark bots authenticate with App ID + App Secret. The bot needs `im:message` and
|
|
|
30
30
|
|
|
31
31
|
For self-hosted Lark deployments, set `host` on the integration config; the default is the standard Feishu host.
|
|
32
32
|
|
|
33
|
-
## Use in
|
|
33
|
+
## Use in an agent
|
|
34
34
|
|
|
35
35
|
```js
|
|
36
36
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
package/docs/skills/memory.md
CHANGED
|
@@ -30,7 +30,7 @@ Requires [Dolt](https://docs.dolthub.com/introduction/installation) and an initi
|
|
|
30
30
|
```bash
|
|
31
31
|
# macOS
|
|
32
32
|
brew install dolt
|
|
33
|
-
# then, in your
|
|
33
|
+
# then, in your agent workspace:
|
|
34
34
|
zibby init --mem
|
|
35
35
|
```
|
|
36
36
|
|
|
@@ -40,7 +40,7 @@ Override the bin location for development with `MCP_MEMORY_PATH`.
|
|
|
40
40
|
|
|
41
41
|
See [Tests → Memory](../tests/memory.md) for the full memory lifecycle.
|
|
42
42
|
|
|
43
|
-
## Use in
|
|
43
|
+
## Use in an agent
|
|
44
44
|
|
|
45
45
|
```js
|
|
46
46
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|
package/docs/skills/sentry.md
CHANGED
|
@@ -29,7 +29,7 @@ Sentry uses OAuth 2.0 with PKCE (public client — no client secret).
|
|
|
29
29
|
|
|
30
30
|
The backend (`/integrations/sentry/connect` and `/integrations/sentry/callback`) handles the PKCE exchange. Tokens auto-refresh on use; if refresh fails, click **Reconnect** in the same settings panel.
|
|
31
31
|
|
|
32
|
-
## Use in
|
|
32
|
+
## Use in an agent
|
|
33
33
|
|
|
34
34
|
```js
|
|
35
35
|
import { WorkflowAgent, WorkflowGraph } from '@zibby/core';
|