@vatio-ai/skills 1.30.1 → 2.1.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +8 -2
- package/README.md +56 -47
- package/bin/install.mjs +47 -6
- package/package.json +2 -2
- package/skills/vatio-analyze/SKILL.md +26 -35
- package/skills/vatio-improve/SKILL.md +79 -86
- package/skills/vatio-init/SKILL.md +180 -123
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
{
|
|
12
12
|
"name": "vatio",
|
|
13
13
|
"source": "./",
|
|
14
|
-
"description": "Vatio skills for Claude Code, Cursor and Codex:
|
|
15
|
-
"version": "1.
|
|
14
|
+
"description": "Vatio skills and MCP for Claude Code, Cursor and Codex: build and test an AI agent for the app you're building with /vatio-init, improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze. Vatio holds the agent; no config files in your repo.",
|
|
15
|
+
"version": "2.1.0",
|
|
16
16
|
"homepage": "https://vatio.ai/docs/integrations/claude-code",
|
|
17
17
|
"category": "development",
|
|
18
18
|
"keywords": [
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vatio",
|
|
3
|
-
"description": "Vatio skills for Claude Code, Cursor and Codex:
|
|
4
|
-
"version": "1.
|
|
3
|
+
"description": "Vatio skills and MCP for Claude Code, Cursor and Codex: build and test an AI agent for the app you're building with /vatio-init, improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze. Vatio holds the agent; no config files in your repo.",
|
|
4
|
+
"version": "2.1.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Vatio",
|
|
7
7
|
"url": "https://vatio.ai"
|
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
"homepage": "https://vatio.ai/docs/integrations/claude-code",
|
|
10
10
|
"repository": "https://github.com/vatio-ai/skills",
|
|
11
11
|
"license": "MIT",
|
|
12
|
+
"mcpServers": {
|
|
13
|
+
"vatio": {
|
|
14
|
+
"type": "http",
|
|
15
|
+
"url": "https://vatio.ai/mcp"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
12
18
|
"keywords": [
|
|
13
19
|
"vatio",
|
|
14
20
|
"ai-agent",
|
package/README.md
CHANGED
|
@@ -7,38 +7,47 @@ the app and its users. In your app’s project:
|
|
|
7
7
|
npx @vatio-ai/skills
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
Then, in Claude Code,
|
|
11
|
-
vatio-init
|
|
12
|
-
|
|
13
|
-
and
|
|
10
|
+
Then, in Claude Code, approve the **vatio** MCP server it asks about, sign in
|
|
11
|
+
to Vatio, and run `/vatio-init` (in Cursor or Codex, ask it to use
|
|
12
|
+
vatio-init). It builds the agent from your project, writes its tests and puts
|
|
13
|
+
it in your app; [Vatio](https://vatio.ai) holds and runs it, with an inbox,
|
|
14
|
+
human handoff and the tests checked before every change reaches your users.
|
|
15
|
+
There are no config files to keep in your repository: the agent lives on
|
|
16
|
+
Vatio and your coding agent changes it through the Vatio MCP.
|
|
14
17
|
|
|
15
18
|
After launch, report mistakes in the inbox and make `/vatio-improve` your
|
|
16
|
-
daily routine.
|
|
17
|
-
cases
|
|
18
|
-
|
|
19
|
+
daily routine. You approve each fix, your coding agent makes it, and Vatio
|
|
20
|
+
replays the reported cases and your tests: the fix reaches your users once
|
|
21
|
+
nothing that worked breaks. You do not need to write code yourself; you need
|
|
22
|
+
your app’s project on your computer and Node.js 20 or newer.
|
|
19
23
|
|
|
20
24
|
| Skill | What it does |
|
|
21
25
|
|---|---|
|
|
22
|
-
| `vatio-init` | The first one in a project: looks at what is already there (
|
|
23
|
-
| `vatio-improve` | Takes every reply your supervisors reported in the inbox in one session: reads `
|
|
24
|
-
| `vatio-analyze` | Reads what people talked about with the agent between two dates, from `
|
|
25
|
-
| `vatio-share-session` | Sends the coding session to the Vatio team when you ask it to,
|
|
26
|
+
| `vatio-init` | The first one in a project: looks at what is already there (the workspaces your account reaches, the app's code) and recommends from it. With no agent yet, builds one through the MCP: asks the owner what the code does not answer, writes its instructions, knowledge and tools, tries it, writes its tests, puts the widget or SDK in your app and hands over a link to try. With one, gets a developer who joined the project up to speed |
|
|
27
|
+
| `vatio-improve` | Takes every reply your supervisors reported in the inbox in one session: reads `list_reports`, fixes each cause after your approval and proves it with `run_tests` (on Vatio's servers); the fix reaches your users once the tests that pass today pass on it |
|
|
28
|
+
| `vatio-analyze` | Reads what people talked about with the agent between two dates, from `list_conversations` (redacted by Vatio before it leaves): topics with their counts, the questions it could not answer and the words people use, in a report for writing content, FAQs or knowledge. Anyone on the workspace's team can run it, viewers included |
|
|
29
|
+
| `vatio-share-session` | Sends the coding session to the Vatio team when you ask it to, after showing you what goes (images left out, anything that looks like a secret redacted), with your feedback if you want to add some |
|
|
26
30
|
|
|
27
|
-
The skills are short on purpose. They tell your coding agent
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
The skills are short on purpose. They tell your coding agent which of the
|
|
32
|
+
Vatio MCP's tools to reach for; the instructions for working reports and tests
|
|
33
|
+
come from the platform when it reads them, so they are never out of date.
|
|
30
34
|
|
|
31
35
|
## Install
|
|
32
36
|
|
|
33
37
|
`npx @vatio-ai/skills` copies the skills into `.claude/skills/`, where Claude
|
|
34
38
|
Code reads them, and `.agents/skills/`, where Codex, Cursor, Gemini CLI,
|
|
35
|
-
GitHub Copilot and most other coding agents do.
|
|
39
|
+
GitHub Copilot and most other coding agents do. It also adds the Vatio MCP
|
|
40
|
+
(`https://vatio.ai/mcp`) to the project's `.mcp.json` and, when the project
|
|
41
|
+
has a `.cursor/`, to `.cursor/mcp.json`; `--no-mcp` leaves those alone. Run it
|
|
42
|
+
again to update the skills. Elsewhere, connect `https://vatio.ai/mcp` as your
|
|
43
|
+
coding agent's docs say ([Vatio in Claude and ChatGPT](https://vatio.ai/docs/mcp)).
|
|
36
44
|
|
|
37
45
|
### As a Claude Code plugin
|
|
38
46
|
|
|
39
|
-
In Claude Code the same skills come as a plugin that can update itself
|
|
40
|
-
these one at a time and follow the
|
|
41
|
-
`/vatio:vatio-init` and
|
|
47
|
+
In Claude Code the same skills come as a plugin that can update itself, and
|
|
48
|
+
brings the Vatio MCP with it. Run these one at a time and follow the
|
|
49
|
+
installation panel; the commands are then `/vatio:vatio-init` and
|
|
50
|
+
`/vatio:vatio-improve`:
|
|
42
51
|
|
|
43
52
|
```text
|
|
44
53
|
/plugin marketplace add vatio-ai/skills
|
|
@@ -55,34 +64,33 @@ Vatio, or you can call them by
|
|
|
55
64
|
name: `/vatio-init`, `/vatio-improve`, `/vatio-analyze` and `/vatio-share-session`, or
|
|
56
65
|
`/vatio:vatio-init` and so on from the plugin.
|
|
57
66
|
|
|
58
|
-
`vatio init` also writes a pointer to `vatio test list` into the workspace's
|
|
59
|
-
`AGENTS.md`, which most coding agents read without installing anything.
|
|
60
|
-
|
|
61
67
|
## What it runs and sends
|
|
62
68
|
|
|
63
|
-
The skills are instructions for your coding agent, with no hooks
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
(
|
|
69
|
+
The skills are instructions for your coding agent, with no hooks or anything
|
|
70
|
+
that runs by itself. They work through one MCP server,
|
|
71
|
+
[vatio.ai/mcp](https://vatio.ai/docs/mcp), and for sharing a session when you
|
|
72
|
+
ask, the [Vatio CLI](https://github.com/vatio-ai/cli)
|
|
73
|
+
(`npx @vatio-ai/cli`, downloaded from npm). Both talk to one service,
|
|
67
74
|
[vatio.ai](https://vatio.ai):
|
|
68
75
|
|
|
69
|
-
- **Sign-in.**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
sends a secret you name, stored encrypted
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
and the coding agent. `VATIO_TELEMETRY=0`
|
|
84
|
-
- **Feedback.** `vatio
|
|
85
|
-
|
|
76
|
+
- **Sign-in.** Your coding agent's MCP client opens vatio.ai to sign you in,
|
|
77
|
+
and keeps the token it gets back. You see the connection under
|
|
78
|
+
**Account → Sessions** in the inbox and can end it there.
|
|
79
|
+
- **Your agent.** The MCP's tools send what your coding agent writes (the
|
|
80
|
+
agent's instructions, knowledge, tools and tests) to vatio.ai, which runs
|
|
81
|
+
the agent. `set_secret` sends a secret you name, stored encrypted and never
|
|
82
|
+
shown again.
|
|
83
|
+
- **Conversations.** `chat_with_agent` sends what your coding agent types to
|
|
84
|
+
your agent. `list_reports`, `get_conversation` and `list_conversations`
|
|
85
|
+
(redacted by Vatio before it leaves) bring your workspace's conversations to
|
|
86
|
+
it, and each read is recorded in the workspace's Activity.
|
|
87
|
+
- **How each tool call ended.** Vatio records which tool ran, whether it ended
|
|
88
|
+
in an error, how long it took and which app made the call; never what a tool
|
|
89
|
+
was given or returned. Installing these skills tells Vatio once, with their
|
|
90
|
+
version and the coding agent. `VATIO_TELEMETRY=0` skips that.
|
|
91
|
+
- **Feedback.** At the end of `vatio-init` and `vatio-improve`, your agent
|
|
92
|
+
sends the Vatio team a few sentences with the MCP's `send_feedback`: which
|
|
93
|
+
step took the most work, and why.
|
|
86
94
|
- **Your coding session, only if you say yes.** `vatio-share-session` shows
|
|
87
95
|
you what would go (images left out, anything that looks like a secret
|
|
88
96
|
redacted) and sends it to the Vatio team only after you agree.
|
|
@@ -92,8 +100,9 @@ What Vatio keeps and for how long is in its
|
|
|
92
100
|
|
|
93
101
|
## Docs
|
|
94
102
|
|
|
95
|
-
[
|
|
96
|
-
[
|
|
103
|
+
[Vatio MCP](https://vatio.ai/docs/mcp) ·
|
|
104
|
+
[Improve your agent from reports](https://vatio.ai/docs/improve) ·
|
|
105
|
+
[Changelog](https://vatio.ai/docs/changelog)
|
|
97
106
|
|
|
98
107
|
## Issues
|
|
99
108
|
|
|
@@ -113,6 +122,6 @@ npx @vatio-ai/skills
|
|
|
113
122
|
```
|
|
114
123
|
|
|
115
124
|
This copies the skills into `.agents/skills/` and `.claude/skills/`.
|
|
116
|
-
Run it again to update them. Any coding agent that reads those skills
|
|
117
|
-
follow the same procedures. You can also
|
|
118
|
-
with the [skills CLI](https://skills.sh).
|
|
125
|
+
Run it again to update them. Any coding agent that reads those skills, and
|
|
126
|
+
connects `https://vatio.ai/mcp`, can follow the same procedures. You can also
|
|
127
|
+
use `npx skills add vatio-ai/skills` with the [skills CLI](https://skills.sh).
|
package/bin/install.mjs
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
// runs in, for every coding agent at once:
|
|
4
4
|
// .agents/skills/ Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, Cline, Amp
|
|
5
5
|
// .claude/skills/ Claude Code, which does not read .agents/
|
|
6
|
-
//
|
|
6
|
+
// and connects the Vatio MCP the skills build and test the agent with:
|
|
7
|
+
// .mcp.json Claude Code, which asks before using a project's server
|
|
8
|
+
// .cursor/mcp.json Cursor, when the project has a .cursor/
|
|
9
|
+
// Running it again overwrites the copies with this version's; an MCP entry
|
|
10
|
+
// already there is left as it is.
|
|
7
11
|
import { spawnSync } from "node:child_process";
|
|
8
12
|
import { randomUUID } from "node:crypto";
|
|
9
13
|
import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
@@ -11,19 +15,24 @@ import { homedir, platform } from "node:os";
|
|
|
11
15
|
import { basename, dirname, join, relative, resolve } from "node:path";
|
|
12
16
|
import { fileURLToPath } from "node:url";
|
|
13
17
|
|
|
14
|
-
const usage = `usage: npx @vatio-ai/skills [--dir PATH]
|
|
18
|
+
const usage = `usage: npx @vatio-ai/skills [--dir PATH] [--no-mcp]
|
|
15
19
|
|
|
16
20
|
Copies the Vatio skills (vatio-init, vatio-improve, vatio-analyze,
|
|
17
|
-
vatio-share-session) into PATH/.agents/skills and
|
|
18
|
-
|
|
21
|
+
vatio-share-session) into PATH/.agents/skills and PATH/.claude/skills,
|
|
22
|
+
and adds the Vatio MCP (https://vatio.ai/mcp) to PATH/.mcp.json and,
|
|
23
|
+
when there is a PATH/.cursor, PATH/.cursor/mcp.json. --no-mcp leaves
|
|
24
|
+
those alone. PATH defaults to the current directory.`;
|
|
19
25
|
|
|
20
26
|
const args = process.argv.slice(2);
|
|
21
27
|
let root = process.cwd();
|
|
28
|
+
let mcp = true;
|
|
22
29
|
for (let i = 0; i < args.length; i++) {
|
|
23
30
|
const arg = args[i];
|
|
24
31
|
if (arg === "-h" || arg === "--help") {
|
|
25
32
|
console.log(usage);
|
|
26
33
|
process.exit(0);
|
|
34
|
+
} else if (arg === "--no-mcp") {
|
|
35
|
+
mcp = false;
|
|
27
36
|
} else if (arg === "--dir" && args[i + 1]) {
|
|
28
37
|
root = args[++i];
|
|
29
38
|
} else {
|
|
@@ -72,8 +81,41 @@ function installedByUs(dir, name) {
|
|
|
72
81
|
}
|
|
73
82
|
}
|
|
74
83
|
|
|
84
|
+
const base = String(process.env.VATIO_BASE_URL ?? "").trim().replace(/\/+$/, "") || "https://vatio.ai";
|
|
85
|
+
const mcpUrl = `${base}/mcp`;
|
|
86
|
+
if (mcp) {
|
|
87
|
+
addServer(join(root, ".mcp.json"), { type: "http", url: mcpUrl });
|
|
88
|
+
if (existsSync(join(root, ".cursor"))) addServer(join(root, ".cursor", "mcp.json"), { url: mcpUrl });
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Adds `vatio` to an MCP config's servers, keeping everything else in it. A
|
|
92
|
+
// file that is not JSON is the developer's to fix, not ours to replace.
|
|
93
|
+
function addServer(file, server) {
|
|
94
|
+
const shown = relative(process.cwd(), file) || file;
|
|
95
|
+
let config = {};
|
|
96
|
+
if (existsSync(file)) {
|
|
97
|
+
try {
|
|
98
|
+
config = JSON.parse(readFileSync(file, "utf8"));
|
|
99
|
+
} catch {
|
|
100
|
+
console.log(` ${shown} is not valid JSON: left alone. Add the Vatio MCP (${mcpUrl}) to it yourself.`);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
config.mcpServers ??= {};
|
|
105
|
+
if (config.mcpServers.vatio) {
|
|
106
|
+
console.log(` ${shown} already has the Vatio MCP`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
config.mcpServers.vatio = server;
|
|
110
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
111
|
+
writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
|
|
112
|
+
console.log(` ${shown}: the Vatio MCP (${mcpUrl})`);
|
|
113
|
+
}
|
|
114
|
+
|
|
75
115
|
console.log(`
|
|
76
|
-
|
|
116
|
+
Then, in Claude Code, approve the vatio server it asks about (or run /mcp) and
|
|
117
|
+
sign in to Vatio; in another coding agent, connect ${mcpUrl}. Ask it to build or
|
|
118
|
+
improve a Vatio agent, or run /vatio-init, and it will use them.
|
|
77
119
|
Docs: https://vatio.ai/docs/integrations/claude-code`);
|
|
78
120
|
|
|
79
121
|
await reportInstall();
|
|
@@ -88,7 +130,6 @@ async function reportInstall() {
|
|
|
88
130
|
if (off) return;
|
|
89
131
|
|
|
90
132
|
console.log("Letting Vatio know these skills were installed (their version and the coding agent, nothing else).\nVATIO_TELEMETRY=0 skips it.");
|
|
91
|
-
const base = String(process.env.VATIO_BASE_URL ?? "").trim().replace(/\/+$/, "") || "https://vatio.ai";
|
|
92
133
|
try {
|
|
93
134
|
await fetch(`${base}/api/developer/v1/cli/events`, {
|
|
94
135
|
method: "POST",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vatio-ai/skills",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Vatio skills for Claude Code, Cursor and Codex:
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Vatio skills and MCP for Claude Code, Cursor and Codex: build and test an AI agent for the app you're building with /vatio-init, improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze. Vatio holds the agent; no config files in your repo.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vatio",
|
|
7
7
|
"ai-agent",
|
|
@@ -1,44 +1,35 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vatio-analyze
|
|
3
|
-
description: Analyze what people talk about with a Vatio agent, from its real conversations between two dates — topics, frequent questions, questions it could not answer, and the words people use — to write content, FAQs or knowledge, or to report on it. Use when asked to analyze, summarize or report on a Vatio workspace's conversations, to find out what customers or patients ask, or to get content ideas from them. Works for anyone on the workspace's team, viewers included, with or without the
|
|
3
|
+
description: Analyze what people talk about with a Vatio agent, from its real conversations between two dates — topics, frequent questions, questions it could not answer, and the words people use — to write content, FAQs or knowledge, or to report on it. Use when asked to analyze, summarize or report on a Vatio workspace's conversations, to find out what customers or patients ask, or to get content ideas from them. Works for anyone on the workspace's team, viewers included, through the Vatio MCP, with or without the app's repository.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Analyze a Vatio agent's conversations
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
answered, between two dates
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
The Vatio MCP's `list_conversations` returns what people said to the agent,
|
|
9
|
+
and what they were answered, between two dates. Vatio redacts it before it
|
|
10
|
+
leaves: names, emails, phone numbers, handles and RUTs it recognizes read
|
|
11
|
+
`[FILTERED]`, and `person` stands for whoever it was without naming them.
|
|
12
|
+
Every read is recorded in the workspace's Activity, under the name of whoever
|
|
13
|
+
made it. If you do not have the MCP's tools, connect it as the `vatio-init`
|
|
14
|
+
skill's step 0 says.
|
|
14
15
|
|
|
15
|
-
1. **Find the workspace.**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
mkdir vatio-conversations && cd vatio-conversations
|
|
22
|
-
echo "workspace: SLUG" > vatio.yml
|
|
23
|
-
```
|
|
16
|
+
1. **Find the workspace.** `list_workspaces` lists the ones this account
|
|
17
|
+
reaches, with its role in each: any role works, viewers included. If the
|
|
18
|
+
one they mean is not there, the owner invites them from **Team** in the
|
|
19
|
+
inbox, with the email they signed in with. A workspace that requires
|
|
20
|
+
two-step verification needs it turned on in **Account** in the inbox
|
|
21
|
+
first.
|
|
24
22
|
|
|
25
23
|
2. **Ask what the analysis is for,** if they have not said: content for a
|
|
26
24
|
website or a search engine, FAQs, gaps in the agent's knowledge, a report.
|
|
27
25
|
Ask for the dates too, or use the last 30 days and say so.
|
|
28
26
|
|
|
29
|
-
3. **
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
`--channel whatsapp` (or `instagram`, `web`, `widget`, `ios`, `android`)
|
|
36
|
-
narrows it, and `vatio chat help` explains the rest. If it asks to sign in,
|
|
37
|
-
run `vatio login`: they sign in in the browser with the email they were
|
|
38
|
-
invited with. `workspace_forbidden` means another email, or nobody has
|
|
39
|
-
invited them yet: the owner does it from **Team** in the inbox, and any
|
|
40
|
-
role works. `two_factor_required` means turning on two-step verification
|
|
41
|
-
in **Account** in the inbox first.
|
|
27
|
+
3. **Fetch it all.** `list_conversations` with `from` and `to` (dates or
|
|
28
|
+
ISO 8601 times), `limit: 100` and, for each next page, `after` set to the
|
|
29
|
+
`next_after` the last page returned, until there is none. `channel`
|
|
30
|
+
(`whatsapp`, `instagram`, `web`, `widget`, `ios`, `android`) narrows it.
|
|
31
|
+
Write each page to a file as it arrives (`conversations.jsonl`, outside
|
|
32
|
+
git), one conversation per line, rather than holding them in your head.
|
|
42
33
|
|
|
43
34
|
4. **Count before reading.** In a script (`jq`, Python or Node), get the number
|
|
44
35
|
of conversations and messages, conversations per channel and per week, and
|
|
@@ -54,7 +45,7 @@ name of whoever ran it.
|
|
|
54
45
|
batches, in parallel if you can run subagents, and keep the tally in a
|
|
55
46
|
file, not in your head.
|
|
56
47
|
|
|
57
|
-
6. **Report,** in the user's language, in a markdown file next to
|
|
48
|
+
6. **Report,** in the user's language, in a markdown file next to `conversations.jsonl`:
|
|
58
49
|
- the dates, channels and number of conversations it covers;
|
|
59
50
|
- the topics, largest first, each with its count and share and two or
|
|
60
51
|
three short questions as people wrote them, spelling and all: they are
|
|
@@ -67,12 +58,12 @@ name of whoever ran it.
|
|
|
67
58
|
Say what the numbers cannot tell: a sample, a short window, a channel left
|
|
68
59
|
out.
|
|
69
60
|
|
|
70
|
-
Treat
|
|
61
|
+
Treat `conversations.jsonl` as the private conversations it is. Never try to work out
|
|
71
62
|
who someone is, and if something identifying slipped past the redaction (a
|
|
72
|
-
third person's name, an address), leave it out of the report. Keep the
|
|
63
|
+
third person's name, an address), leave it out of the report. Keep the file
|
|
73
64
|
out of git, and ask whether to delete it when you are done. Do not offer
|
|
74
65
|
`vatio-share-session` after this skill: the session holds those conversations.
|
|
75
66
|
|
|
76
|
-
If the
|
|
77
|
-
`
|
|
78
|
-
|
|
67
|
+
If the conversations or the docs left you guessing, the MCP's
|
|
68
|
+
`send_feedback` tells the Vatio team: what you were doing and what got in the
|
|
69
|
+
way, without quoting the conversations.
|
|
@@ -1,106 +1,99 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vatio-improve
|
|
3
|
-
description: Improve a Vatio agent from what its supervisors reported. Use when asked to improve, fix or debug a Vatio agent, to work through reported or flagged replies or wrong answers in production, or when the daily Vatio email says there are open reports.
|
|
3
|
+
description: Improve a Vatio agent from what its supervisors reported, through the Vatio MCP. Use when asked to improve, fix or debug a Vatio agent, to work through reported or flagged replies or wrong answers in production, or when the daily Vatio email says there are open reports. Needs the Vatio MCP, not a vatio.yml.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Improve a Vatio agent from its reports
|
|
7
7
|
|
|
8
8
|
Supervisors report wrong replies in the Vatio inbox and write what it should
|
|
9
9
|
have said: a different answer, an action, or a tool the agent should have
|
|
10
|
-
used or does not have. One session takes every open report.
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
used or does not have. One session takes every open report. You work through
|
|
11
|
+
the Vatio MCP's tools; if you do not have them (`list_reports`,
|
|
12
|
+
`update_agent`, `run_tests`…), connect it as the `vatio-init` skill's step 0
|
|
13
|
+
says, and stop until they are there.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
the
|
|
21
|
-
|
|
22
|
-
every test last. Follow those instructions; they take precedence over
|
|
23
|
-
anything below.
|
|
15
|
+
Vatio keeps the instructions for working the reports on the platform, so they
|
|
16
|
+
are never out of date here. Start by reading them: `list_workspaces` for the
|
|
17
|
+
slug (or the one the app names), then `list_reports`. It returns every open
|
|
18
|
+
report (the conversation, each tool call with what the backend answered, and
|
|
19
|
+
the supervisor's note), then the tests that fail on the newest version and
|
|
20
|
+
the ones the agent answers differently each time, with how to work them at
|
|
21
|
+
the top, and every test last. Follow those instructions; they take
|
|
22
|
+
precedence over anything below.
|
|
24
23
|
|
|
25
24
|
In short:
|
|
26
25
|
|
|
27
26
|
1. Read each report's **Diagnosis** first: it says whose it is to fix, from
|
|
28
27
|
what that turn did. **Your backend**: a tool call to it failed. **Your
|
|
29
28
|
agent**: everything answered and the reply was still wrong, so the fix is
|
|
30
|
-
in
|
|
31
|
-
provider or Vatio failed and Vatio wrote the reply
|
|
32
|
-
the agent for those: tell the developer, who can
|
|
33
|
-
if they keep happening,
|
|
34
|
-
`vatio
|
|
29
|
+
in the agent's instructions, its knowledge or a tool's definition.
|
|
30
|
+
**Vatio**: the model provider or Vatio failed and Vatio wrote the reply
|
|
31
|
+
itself. Do not change the agent for those: tell the developer, who can
|
|
32
|
+
remove the report, and if they keep happening,
|
|
33
|
+
`npx @vatio-ai/cli@latest feedback "…"`.
|
|
34
|
+
`remove_test` removes a report and its test for everyone. It is the
|
|
35
35
|
developer's call: propose it (a report Vatio caused, one that asks for
|
|
36
36
|
something the agent must not do, one whose fix is in but the tests cannot
|
|
37
|
-
reproduce) and run it only when they say so.
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
reproduce) and run it only when they say so. A note someone on the team
|
|
38
|
+
left on one of their own conversations has no test: fix it from its
|
|
39
|
+
conversation and try it again with `chat_with_agent`; the next change
|
|
40
|
+
closes it.
|
|
40
41
|
2. Group the reports by cause, and fix each cause where it lives:
|
|
41
|
-
`
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
`
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
`
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
42
|
+
`update_agent` (instructions, tools, knowledge, links),
|
|
43
|
+
`write_knowledge_entry`, `set_tool`, or the app's backend a tool calls
|
|
44
|
+
(that code is in the app's repository). `get_tool_health` shows each tool's
|
|
45
|
+
error rate, timeouts and latency, and the calls that failed with what the
|
|
46
|
+
backend answered: a failing tool rarely gets reported, because the agent
|
|
47
|
+
apologizes and moves on. Fix those too. After the reports come the tests
|
|
48
|
+
that fail on the newest version and the ones the agent answers differently
|
|
49
|
+
each time: work those too, as their sections say. Never remove a test
|
|
50
|
+
because it fails. Something the developer asks the agent to do that no
|
|
51
|
+
report covers is a test first: `add_test` with `question` and `should`
|
|
52
|
+
asks it in a new conversation, and `get_test` with the `chat_id` it
|
|
53
|
+
answers with says whether it passes now; then fix until it does.
|
|
54
|
+
3. Reports come from people who talk to the agent, so show the developer
|
|
55
|
+
each fix first and change the agent (`update_agent`,
|
|
56
|
+
`write_knowledge_entry`, `set_tool`) once they agree. There is nothing to
|
|
57
|
+
publish: each change reaches the team at once (`chat_with_agent` talks to
|
|
58
|
+
it) and everyone a few minutes later, once the tests that pass today pass
|
|
59
|
+
on it. `get_agent` reads the agent whole before you change it.
|
|
60
|
+
4. `run_tests` replays every report and test against the newest version on
|
|
61
|
+
Vatio's servers and returns the run ids; `get_test_results` with each id
|
|
62
|
+
shows the report so far. It takes a few minutes: ask again until it has
|
|
63
|
+
finished. A case that did not pass names the conversation of its replay
|
|
64
|
+
(`get_conversation`). Iterate (fix, `run_tests`) until the reports pass
|
|
65
|
+
and nothing that passed before fails. A case marked "not tested (Vatio's
|
|
66
|
+
side)" says nothing about your fix: run the tests again. One not tested
|
|
67
|
+
because a tool needs a signed-in visitor replays signed in with
|
|
68
|
+
`run_tests` and a `visitor_token`
|
|
69
|
+
(https://vatio.ai/docs/authentication/tools.md#test-a-private-tool).
|
|
70
|
+
Name reports by id (`F-7K2QX`).
|
|
71
|
+
5. `get_status` says whether the fix reached everyone, in `shipping.state`:
|
|
72
|
+
`live` when everyone has it, `testing` while Vatio replays the tests that
|
|
73
|
+
pass today on it (`testing.expected_by` says until about when), and `held`
|
|
74
|
+
when one of them fails on it in every attempt. Held, the team keeps it,
|
|
75
|
+
everyone else keeps the version before, and whoever made the change gets
|
|
76
|
+
an email; `shipping.held.tests` names each test, with the `chat_id` of its
|
|
77
|
+
replay. Another change that fixes it moves it on, as does `remove_test`
|
|
78
|
+
for a test the change made obsolete (the developer's call) or a
|
|
79
|
+
`run_tests` run that passes; there is no way to force it. Once the fix
|
|
80
|
+
reaches everyone, the reports it passes are marked resolved in the inbox.
|
|
81
|
+
Tell the developer what passes now and where the change stands.
|
|
82
|
+
`rollback` undoes the last change for everyone, the team included: only
|
|
83
|
+
when they ask.
|
|
84
|
+
6. Last, tell the Vatio team how it went, with the MCP's `send_feedback`
|
|
85
|
+
(and the workspace's slug): which step of fixing the reports took the most
|
|
86
|
+
work, and why (a report that left you guessing, a test that would not
|
|
87
|
+
reproduce, a tool or an error that got in the way). A few sentences, with no
|
|
88
|
+
secrets or visitors' words, and tell the developer in one line that you
|
|
89
|
+
sent it.
|
|
84
90
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
contract (manifest, tools, knowledge, CLI). There are two ways to run the CLI,
|
|
89
|
-
and the package name appears once in either: `vatio ARGS` when it is
|
|
90
|
-
installed globally, and `npx @vatio-ai/cli@latest ARGS` when it is not. Pick
|
|
91
|
-
one per command and leave it whole — `npx @vatio-ai/cli @vatio-ai/cli flags`
|
|
92
|
-
is the commonest way to get this wrong, and the CLI reads the second name as
|
|
93
|
-
the command and fails. If it says to log in, run `vatio login`: it
|
|
94
|
-
opens the browser on the developer's machine (if it doesn't, give them the
|
|
95
|
-
link it prints), and they sign in and check the code matches. If it times
|
|
96
|
-
out, run it again after they have signed in.
|
|
91
|
+
The reports hold real visitors' conversations. Keep them out of commits,
|
|
92
|
+
issues and logs: refer to a report by its id and describe the cause, never
|
|
93
|
+
quote what the visitor or the backend said.
|
|
97
94
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
`npx @vatio-ai/cli@latest
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
`&&`, never through `grep`, so a failure stops there instead of passing on an
|
|
104
|
-
empty value. If Claude Code's auto mode refused a `vatio` command and the
|
|
105
|
-
project's `.claude/settings.json` has no `Bash(vatio *)` rule, also mention
|
|
106
|
-
**Auto mode** on the docs' Claude Code page.
|
|
95
|
+
When a fix needs more than the reports say,
|
|
96
|
+
`npx @vatio-ai/cli@latest docs search TERM` prints the sections of the docs
|
|
97
|
+
that mention it, with their page, and `npx @vatio-ai/cli@latest docs PAGE`
|
|
98
|
+
one page (`tools`, `knowledge`); neither needs a workspace or a sign-in.
|
|
99
|
+
https://vatio.ai/docs/llms.txt indexes every page as markdown.
|
|
@@ -1,144 +1,201 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vatio-init
|
|
3
|
-
description: The first Vatio skill in a project. Looks at what is already there —
|
|
3
|
+
description: The first Vatio skill in a project. Looks at what is already there — the workspaces the Vatio MCP reaches, the app's own code — and recommends from it, then either builds a customer-facing AI agent through the Vatio MCP (in the app first, through its web widget or mobile SDK, and on WhatsApp or Instagram when asked), writes its tests and gets it to Try the agent in the Vatio inbox, or gets a developer who joined a project that already has one up to speed. Use when asked to create, set up, start or ship a Vatio agent, a chatbot or a support/sales assistant on Vatio, to get started on or onboard onto a project that uses Vatio, or when the user pastes the prompt from vatio.ai.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Start with Vatio in this project
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
the
|
|
10
|
-
|
|
8
|
+
Vatio holds the agent: its instructions, knowledge, tools, secrets and tests
|
|
9
|
+
live on the platform, and you build and test it with the Vatio MCP's tools.
|
|
10
|
+
Nothing about the agent goes into the app's repository. What does is what
|
|
11
|
+
puts it in front of people (the widget or SDK) and any endpoint of the app
|
|
12
|
+
the agent calls.
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
npx @vatio-ai/cli docs
|
|
14
|
-
```
|
|
14
|
+
## 0. The Vatio MCP
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
(
|
|
16
|
+
Its tools are `list_workspaces`, `update_agent`, `chat_with_agent`,
|
|
17
|
+
`add_test` and the rest. If you do not have them:
|
|
18
|
+
|
|
19
|
+
- **Claude Code:** `npx @vatio-ai/skills` added the server to this project's
|
|
20
|
+
`.mcp.json`. If it is not there, `claude mcp add --transport http vatio
|
|
21
|
+
https://vatio.ai/mcp`. Then the person runs `/mcp`, picks **vatio** and
|
|
22
|
+
signs in (email, Google or GitHub): only they can. A server added during a
|
|
23
|
+
session loads when Claude Code starts again, so say so and stop until its
|
|
24
|
+
tools are there.
|
|
25
|
+
- **Cursor, Codex and the rest:** add an MCP server at `https://vatio.ai/mcp`
|
|
26
|
+
(Streamable HTTP, OAuth), as https://vatio.ai/docs/mcp.md says.
|
|
27
|
+
|
|
28
|
+
Never work around a missing MCP by writing a `vatio.yml` or running
|
|
29
|
+
`vatio push`.
|
|
23
30
|
|
|
24
31
|
## 1. Look at what is there
|
|
25
32
|
|
|
26
|
-
- **
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
- **The account.** `list_workspaces`: every workspace the person reaches and
|
|
34
|
+
their role in it.
|
|
35
|
+
- **The app.** What it does and for whom; the API an agent could call
|
|
36
|
+
(routes, controllers, an OpenAPI file); how its users sign in; the docs,
|
|
37
|
+
FAQs or policies an agent could read as knowledge; and whether Vatio is
|
|
38
|
+
already in it (`cdn.vatio.ai`, `@vatio-ai/widget`, `data-workspace`, an
|
|
39
|
+
SDK's setup), which names its workspace.
|
|
40
|
+
- **A `vatio.yml`** anywhere in the repository (`git ls-files
|
|
41
|
+
'*vatio.yml'`) means a team kept the agent as files. The agent is still
|
|
42
|
+
the one on Vatio, under its `workspace:` slug.
|
|
34
43
|
|
|
35
44
|
## 2. Say what you found, and recommend
|
|
36
45
|
|
|
37
|
-
Before changing anything, tell the
|
|
38
|
-
you recommend, and ask them to confirm.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
46
|
+
Before changing anything, tell the person in a few lines what is there and
|
|
47
|
+
what you recommend, and ask them to confirm.
|
|
48
|
+
|
|
49
|
+
### No workspace for this app: a new agent
|
|
50
|
+
|
|
51
|
+
Propose what it could do from what you read: what it answers, which
|
|
52
|
+
endpoints become tools, what becomes knowledge. Then:
|
|
53
|
+
|
|
54
|
+
1. **Ask the owner only what the code does not answer:** what the business
|
|
55
|
+
does and who writes in, what the agent must never say or promise, when it
|
|
56
|
+
hands the conversation to a person, which of their systems it should read
|
|
57
|
+
from. Do not invent business facts.
|
|
58
|
+
2. **Create it.** `create_workspace` (a slug from the app's name), then
|
|
59
|
+
`update_agent`: `instructions` from the answers, with the never-say rules
|
|
60
|
+
as explicit rules, a `name` and a `personality`. Anything long the agent
|
|
61
|
+
should read rather than memorize is knowledge: `create_knowledge_base`,
|
|
62
|
+
one `write_knowledge_entry` per topic, and the base in the agent's
|
|
63
|
+
`knowledge` (`update_agent`).
|
|
64
|
+
3. **Connect the app's backend.** `set_secret` for its URL and credential,
|
|
65
|
+
taking the values from the app's `.env` (never repeat one back or write
|
|
66
|
+
it into a file); `set_backend` with `base_url` and `headers` that read them
|
|
67
|
+
as `$env.KEY`; then one `set_tool` per endpoint, after reading
|
|
68
|
+
https://vatio.ai/docs/tools.md. Give it a tool that alerts the team when a
|
|
69
|
+
person should take over (https://vatio.ai/docs/handoff.md). An endpoint the
|
|
70
|
+
app does not have yet is yours to write in the app. A tool that writes (an
|
|
71
|
+
order, a booking) needs a test value (`set_secret` with `tests: true`, a
|
|
72
|
+
staging API), which your team's conversations and every test use, so they
|
|
73
|
+
never write to production.
|
|
74
|
+
4. **Try it** with `chat_with_agent`: a few representative conversations,
|
|
75
|
+
including one that should hand off and one that asks for something it must
|
|
76
|
+
not say. Read the tools each reply called and what the backend answered;
|
|
77
|
+
`get_conversation` shows a whole turn. A tool that needs the visitor's
|
|
78
|
+
phone or a team role runs with `as_phone: "me"` (or a customer phone); an
|
|
79
|
+
`access: private` one with `visitor_token`, a JWT for a test user signed
|
|
80
|
+
with the private key from step 6
|
|
81
|
+
(https://vatio.ai/docs/authentication/tools.md#test-a-private-tool).
|
|
82
|
+
When visitors will send files (a PDF, a photo, a voice note), send one
|
|
83
|
+
too: run the curl command `prepare_file` returns, then pass the id it
|
|
84
|
+
answers in `chat_with_agent`'s `files`.
|
|
85
|
+
5. **Write down what it should do as tests.** For each question that
|
|
86
|
+
matters, `add_test` with `question` (what a visitor would ask) and
|
|
87
|
+
`should` (what the answer has to do). It asks it in a new conversation and
|
|
88
|
+
answers at once with a `chat_id` and how many seconds to wait: add the
|
|
89
|
+
other tests meanwhile, then `get_test` with each `chat_id` shows the test
|
|
90
|
+
and whether it passes now (while it is still being made, it says when to
|
|
91
|
+
ask again). A reply you already have becomes one with `chat_id` or
|
|
92
|
+
`message_id`. Three or four is enough to start, including the hand-off and
|
|
93
|
+
something it must not say. This is the only thing that makes a later
|
|
94
|
+
change's mistake visible: Vatio replays the tests that pass today on every
|
|
95
|
+
change, and one that breaks a test reaches your team but not everyone
|
|
96
|
+
else. A workspace with no tests gets every change at once with nothing
|
|
97
|
+
checked, which is how a fix for one question quietly breaks another. Fix
|
|
98
|
+
and `add_test` again until they pass; `run_tests` then `get_test_results`
|
|
99
|
+
checks them all together.
|
|
100
|
+
6. **Put it in the app.** `get_status` returns `put_in_the_app`: the
|
|
101
|
+
publishable key and the widget's script tag. It is one key for
|
|
102
|
+
development and production alike, and works from any site or app.
|
|
103
|
+
Add the widget (the tag, or `@vatio-ai/widget`) or the iOS, Android or
|
|
104
|
+
Flutter SDK where the app's users are, in the app's style:
|
|
105
|
+
https://vatio.ai/docs/channels/widget.md, https://vatio.ai/docs/sdk/ios.md,
|
|
106
|
+
https://vatio.ai/docs/sdk/android.md, https://vatio.ai/docs/sdk/flutter.md.
|
|
107
|
+
When the agent must know who is signed in (their orders, their account),
|
|
108
|
+
the app's backend signs a JWT: make a keypair (`openssl genpkey -algorithm
|
|
109
|
+
RSA -pkeyopt rsa_keygen_bits:2048 -out vatio-private.pem`, then `openssl
|
|
110
|
+
pkey -in vatio-private.pem -pubout`), keep the private key in the backend's
|
|
111
|
+
secrets (never in the frontend, never committed), `set_auth` with the
|
|
112
|
+
public key, and follow https://vatio.ai/docs/authentication.md.
|
|
113
|
+
7. **Hand over.** `get_status` gives `try_it`: the inbox with Try the agent
|
|
114
|
+
open (web chat, WhatsApp and Instagram). Give it with what you tried and
|
|
115
|
+
the tests. There is nothing to publish: every change reaches the app on
|
|
116
|
+
its own, as **How a change reaches people** below says. Until people talk
|
|
117
|
+
to the agent you need not ask before each change; once they do, ask
|
|
118
|
+
first.
|
|
119
|
+
|
|
120
|
+
### A workspace already exists
|
|
121
|
+
|
|
122
|
+
The app names one, `list_workspaces` shows it, or a `vatio.yml` does. Never
|
|
123
|
+
create another. `get_agent` and `get_status`, then explain the agent from them
|
|
124
|
+
(what it is for, its tools, its knowledge, when it hands off) and recommend
|
|
125
|
+
from what you see:
|
|
126
|
+
|
|
127
|
+
- open reports in `list_reports`: work them with the `vatio-improve` skill;
|
|
128
|
+
- a change held back from everyone (`shipping.state` is `held` in
|
|
129
|
+
`get_status`): `shipping.held.tests` says which test it breaks, and **How a
|
|
130
|
+
change reaches people** below what moves it on;
|
|
131
|
+
- tools failing in `get_tool_health`: the fix is in the backend they call;
|
|
132
|
+
- few or no tests (`list_reports` lists them last): offer to `add_test` what
|
|
133
|
+
matters most;
|
|
134
|
+
- the workspace is not in `list_workspaces`: the owner invites them from
|
|
135
|
+
**Team** in the inbox, with the email they signed in with.
|
|
136
|
+
|
|
137
|
+
If there is a `vatio.yml`, the agent on Vatio is the one that counts and you
|
|
138
|
+
change it through the MCP from now on. Recommend removing `vatio.yml`,
|
|
139
|
+
`tools/` and `identity.pub` from the repository, so nobody pushes an old copy
|
|
140
|
+
over it, and do it only with their yes.
|
|
141
|
+
|
|
142
|
+
## How a change reaches people
|
|
143
|
+
|
|
144
|
+
The agent is one, and there is nothing to publish. Every change
|
|
145
|
+
(`update_agent`, `set_tool`, `set_backend`, `set_auth`, the knowledge tools)
|
|
146
|
+
reaches your team at once (`chat_with_agent`, Try the agent in the inbox,
|
|
147
|
+
Vatio's shared WhatsApp number and Instagram account) and everyone a few
|
|
148
|
+
minutes later, once the tests that pass today pass on it. With no tests,
|
|
149
|
+
everyone gets it at once.
|
|
150
|
+
|
|
151
|
+
1. **Ask first when people already talk to the agent** (`impact` in
|
|
152
|
+
`get_status` counts its replies to them, or the person says so): say what
|
|
153
|
+
you will change and change it only with their yes. On a new agent nobody
|
|
154
|
+
talks to yet, there is no need to ask for each change.
|
|
155
|
+
2. **Make the change, then try it** with `chat_with_agent`, which talks to
|
|
156
|
+
the newest version, and `add_test` what it must keep doing.
|
|
157
|
+
3. **`get_status` says where it stands**, in `shipping.state`: `live` when
|
|
158
|
+
everyone has it, `testing` while Vatio replays the tests on it
|
|
159
|
+
(`testing.expected_by` says until about when), and `held` when a test that
|
|
160
|
+
passes today fails on it in every attempt. Held, your team keeps it,
|
|
161
|
+
everyone else keeps the version before, and whoever made the change gets
|
|
162
|
+
an email. `shipping.held.tests` names each test, with the `chat_id` of its
|
|
163
|
+
replay for `get_conversation` (with none, `shipping.held.reason` and
|
|
164
|
+
`message` say why). Another change that fixes it moves it on, as does
|
|
165
|
+
`remove_test` for a test the change made obsolete (their call) or a
|
|
166
|
+
`run_tests` run that passes. There is no way to force it.
|
|
167
|
+
4. **`rollback` undoes the last change** for everyone, your team included.
|
|
168
|
+
|
|
169
|
+
A note someone on the team left on one of their own conversations is for
|
|
170
|
+
whoever changes the agent next, and the next change closes it.
|
|
93
171
|
|
|
94
172
|
## Claude Code permissions
|
|
95
173
|
|
|
96
|
-
In Claude Code, once the agent
|
|
174
|
+
In Claude Code, once the agent works, check the project's
|
|
97
175
|
`.claude/settings.json` (in the folder Claude Code was opened in). If it has
|
|
98
|
-
no `
|
|
99
|
-
docs
|
|
100
|
-
|
|
101
|
-
`
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
`npm install -g @vatio-ai/cli`, also only with their yes. Run each `vatio`
|
|
105
|
-
command on its own, not in a pipe or after `cd … &&`, so the rule matches.
|
|
106
|
-
Never edit `~/.claude/settings.json`; for `vatio share-session` point them to
|
|
107
|
-
that same section.
|
|
176
|
+
no `mcp__vatio` rule, offer once to add the block in **Auto mode** on
|
|
177
|
+
https://vatio.ai/docs/integrations/claude-code.md: it lets you call the Vatio
|
|
178
|
+
tools without a prompt each time, and still asks the developer before
|
|
179
|
+
`rollback`, `set_secret` and the like. Add it only with their yes,
|
|
180
|
+
merged into what the file has, never replacing it, and add no other rule.
|
|
181
|
+
Never edit `~/.claude/settings.json`.
|
|
108
182
|
|
|
109
183
|
## 3. Before you finish
|
|
110
184
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
A command you hand the developer to run themselves, because a permission
|
|
130
|
-
check refused it or it needs their own credentials, says
|
|
131
|
-
`npx @vatio-ai/cli@latest`, never `vatio`: the `vatio` installed on their
|
|
132
|
-
machine can be too old for Vatio to accept. When one command's output feeds
|
|
133
|
-
another (a key into a secrets store), take it with `--json` and chain with
|
|
134
|
-
`&&`, never through `grep`, so a failure stops there instead of passing on an
|
|
135
|
-
empty value. If Claude Code's auto mode refused a `vatio` command and the
|
|
136
|
-
project's `.claude/settings.json` has no `Bash(vatio *)` rule, also mention
|
|
137
|
-
**Auto mode** on the docs' Claude Code page.
|
|
138
|
-
|
|
139
|
-
A **secret** is not one of those commands, as long as you do not read it.
|
|
140
|
-
`vatio secrets set KEY --from-env` takes the value from their shell or the
|
|
141
|
-
`.env` beside the `vatio.yml` and sends it without printing it, so run that
|
|
142
|
-
yourself rather than stopping to ask. Ask them only for a value that is not
|
|
143
|
-
there yet, and never echo one back, put one in a file you write, or read a
|
|
144
|
-
`.env` to quote it.
|
|
185
|
+
Tell the Vatio team how building it went, with the MCP's `send_feedback`
|
|
186
|
+
(and the workspace's slug). Ask yourself which step of setting up the agent
|
|
187
|
+
took the most work, and why: a tool that refused something, an error that left
|
|
188
|
+
you guessing, docs that were missing, a step you had to work around. Answer
|
|
189
|
+
from what happened in this session, in a few sentences, with no secrets, keys
|
|
190
|
+
or anyone's personal data. Do it every time, even when it all went smoothly
|
|
191
|
+
(then say which step took longest), and tell the developer in one line that
|
|
192
|
+
you sent it.
|
|
193
|
+
|
|
194
|
+
To look something up in the docs, `npx @vatio-ai/cli@latest docs search
|
|
195
|
+
TERM` prints the sections that mention it, with their page, and
|
|
196
|
+
`npx @vatio-ai/cli@latest docs PAGE` one page (`tools`, `knowledge`); neither
|
|
197
|
+
needs a workspace or a sign-in.
|
|
198
|
+
|
|
199
|
+
A tool that refuses says what to do next: follow it. A change to an agent
|
|
200
|
+
people already talk to, `rollback`, `remove_test`, `erase_contact` and
|
|
201
|
+
turning WhatsApp live on are the person's call: ask first.
|