@vatio-ai/skills 1.30.1 → 2.0.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 +61 -82
- package/skills/vatio-init/SKILL.md +145 -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": "
|
|
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.0.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": "
|
|
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.0.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 publish. There are no config
|
|
15
|
+
files to keep in your repository: the agent lives on Vatio and your coding
|
|
16
|
+
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. Your coding agent
|
|
17
|
-
cases, and you approve the update. You do not need to write
|
|
18
|
-
need your app’s project on your computer and Node.js 20 or
|
|
19
|
+
daily routine. Your coding agent fixes the agent, Vatio replays the reported
|
|
20
|
+
cases and your tests, and you approve the update. You do not need to write
|
|
21
|
+
code yourself; you need your app’s project on your computer and Node.js 20 or
|
|
22
|
+
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, proves it with `run_tests` (on Vatio's servers) and publishes after your approval |
|
|
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": "
|
|
4
|
-
"description": "Vatio skills for Claude Code, Cursor and Codex:
|
|
3
|
+
"version": "2.0.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,23 +1,22 @@
|
|
|
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
|
-
It prints every open report — the conversation, each tool call with what
|
|
20
|
-
the backend answered, and the supervisor's note — then the tests that fail on preview and the ones the
|
|
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 preview and the ones the
|
|
21
20
|
agent answers differently each time, with how to work them at the top, and
|
|
22
21
|
every test last. Follow those instructions; they take precedence over
|
|
23
22
|
anything below.
|
|
@@ -27,80 +26,60 @@ In short:
|
|
|
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
37
|
reproduce) and run it only when they say so.
|
|
38
|
-
Vatio changes nothing on preview by itself: every open report is yours to
|
|
39
|
-
fix.
|
|
40
38
|
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
|
-
asks for it.
|
|
79
|
-
6. If the digest, an error or the docs left you guessing, say so:
|
|
80
|
-
`vatio feedback "what you were doing and what was missing"`.
|
|
81
|
-
7. Last, in Claude Code, offer to send this session to the Vatio team, as
|
|
82
|
-
the `vatio-share-session` skill says. It starts with
|
|
83
|
-
`vatio share-session --should-ask`: if that prints `no`, say nothing.
|
|
39
|
+
`update_agent` (instructions, tools, knowledge, links),
|
|
40
|
+
`write_knowledge_entry`, `set_tool`, or the app's backend a tool calls
|
|
41
|
+
(that code is in the app's repository). `get_tool_health` shows each tool's
|
|
42
|
+
error rate, timeouts and latency, and the calls that failed with what the
|
|
43
|
+
backend answered: a failing tool rarely gets reported, because the agent
|
|
44
|
+
apologizes and moves on. Fix those too. After the reports come the tests
|
|
45
|
+
that fail on preview and the ones the agent answers differently each time:
|
|
46
|
+
work those too, as their sections say. Never remove a test because it
|
|
47
|
+
fails. Something the developer asks the agent to do that no report covers
|
|
48
|
+
is a test first: `add_test` with `question` and `should` asks it on preview,
|
|
49
|
+
and `get_test` with the `chat_id` it answers with says whether it passes
|
|
50
|
+
now; then fix until it does.
|
|
51
|
+
3. Each change lands on preview at once and runs no tests. `get_agent` reads
|
|
52
|
+
the agent whole before you change it.
|
|
53
|
+
4. `run_tests` replays every report and test against preview on Vatio's
|
|
54
|
+
servers and returns the run ids; `get_test_results` with each id shows the
|
|
55
|
+
report so far. It takes a few minutes: ask again until it has finished. A
|
|
56
|
+
case that did not pass names the conversation of its replay
|
|
57
|
+
(`get_conversation`). Iterate (fix, `run_tests`) until the reports pass
|
|
58
|
+
and nothing that passes on live fails. A case marked "not tested (Vatio's
|
|
59
|
+
side)" says nothing about your fix: run the tests again. One not tested
|
|
60
|
+
because a tool needs a signed-in visitor replays signed in with
|
|
61
|
+
`run_tests` and a `visitor_token`
|
|
62
|
+
(https://vatio.ai/docs/authentication/tools.md#test-a-private-tool).
|
|
63
|
+
Name reports by id (`F-7K2QX`).
|
|
64
|
+
5. Show the developer what passes now, and `publish` once they agree: it
|
|
65
|
+
changes what visitors get. In a draft (no conversation from outside the
|
|
66
|
+
team yet) live already runs every change, and `publish` says there is
|
|
67
|
+
nothing to publish. If it is refused, follow its message. Never pass
|
|
68
|
+
`force` unless the developer explicitly asks for it; `rollback` undoes a
|
|
69
|
+
publish.
|
|
70
|
+
6. Last, tell the Vatio team how it went, with the MCP's `send_feedback`
|
|
71
|
+
(and the workspace's slug): which step of fixing the reports took the most
|
|
72
|
+
work, and why (a report that left you guessing, a test that would not
|
|
73
|
+
reproduce, a tool or an error that got in the way). A few sentences, with no
|
|
74
|
+
secrets or visitors' words, and tell the developer in one line that you
|
|
75
|
+
sent it.
|
|
84
76
|
|
|
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.
|
|
77
|
+
The reports hold real visitors' conversations. Keep them out of commits,
|
|
78
|
+
issues and logs: refer to a report by its id and describe the cause, never
|
|
79
|
+
quote what the visitor or the backend said.
|
|
97
80
|
|
|
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.
|
|
81
|
+
When a fix needs more than the reports say,
|
|
82
|
+
`npx @vatio-ai/cli@latest docs search TERM` prints the sections of the docs
|
|
83
|
+
that mention it, with their page, and `npx @vatio-ai/cli@latest docs PAGE`
|
|
84
|
+
one page (`tools`, `knowledge`); neither needs a workspace or a sign-in.
|
|
85
|
+
https://vatio.ai/docs/llms.txt indexes every page as markdown.
|
|
@@ -1,144 +1,166 @@
|
|
|
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) so tests never write to production.
|
|
73
|
+
4. **Try it** with `chat_with_agent`: a few representative conversations,
|
|
74
|
+
including one that should hand off and one that asks for something it must
|
|
75
|
+
not say. Read the tools each reply called and what the backend answered;
|
|
76
|
+
`get_conversation` shows a whole turn. A tool that needs the visitor's
|
|
77
|
+
phone or a team role runs with `as_phone: "me"` (or a customer phone); an
|
|
78
|
+
`access: private` one with `visitor_token`, a JWT for a test user signed
|
|
79
|
+
with the private key from step 6
|
|
80
|
+
(https://vatio.ai/docs/authentication/tools.md#test-a-private-tool).
|
|
81
|
+
When visitors will send files (a PDF, a photo, a voice note), send one
|
|
82
|
+
too: run the curl command `prepare_file` returns, then pass the id it
|
|
83
|
+
answers in `chat_with_agent`'s `files`.
|
|
84
|
+
5. **Write down what it should do as tests.** For each question that
|
|
85
|
+
matters, `add_test` with `question` (what a visitor would ask) and
|
|
86
|
+
`should` (what the answer has to do). It asks it on preview and answers
|
|
87
|
+
at once with a `chat_id` and how many seconds to wait: add the other tests
|
|
88
|
+
meanwhile, then `get_test` with each `chat_id` shows the test and whether
|
|
89
|
+
it passes now (while it is still being made, it says when to ask again).
|
|
90
|
+
A reply you already have becomes one with `chat_id` or `message_id`. Three or four is enough to start, including the
|
|
91
|
+
hand-off and something it must not say. This is the only thing that makes
|
|
92
|
+
a later version's mistake visible: `run_tests` replays them all, and once
|
|
93
|
+
the workspace is published `publish` refuses a version that breaks one. A
|
|
94
|
+
workspace with no tests publishes with nothing checked, which is how a fix
|
|
95
|
+
for one question quietly breaks another. Fix and `add_test` again until
|
|
96
|
+
they pass; `run_tests` then `get_test_results` checks them all together.
|
|
97
|
+
6. **Put it in the app.** `get_status` returns `put_in_the_app`: the
|
|
98
|
+
publishable key and the widget's script tag, which work from any site
|
|
99
|
+
(local and production alike), and `preview_key` to try preview locally.
|
|
100
|
+
Add the widget (the tag, or `@vatio-ai/widget`) or the iOS, Android or
|
|
101
|
+
Flutter SDK where the app's users are, in the app's style:
|
|
102
|
+
https://vatio.ai/docs/channels/widget.md, https://vatio.ai/docs/sdk/ios.md,
|
|
103
|
+
https://vatio.ai/docs/sdk/android.md, https://vatio.ai/docs/sdk/flutter.md.
|
|
104
|
+
When the agent must know who is signed in (their orders, their account),
|
|
105
|
+
the app's backend signs a JWT: make a keypair (`openssl genpkey -algorithm
|
|
106
|
+
RSA -pkeyopt rsa_keygen_bits:2048 -out vatio-private.pem`, then `openssl
|
|
107
|
+
pkey -in vatio-private.pem -pubout`), keep the private key in the backend's
|
|
108
|
+
secrets (never in the frontend, never committed), `set_auth` with the
|
|
109
|
+
public key, and follow https://vatio.ai/docs/authentication.md.
|
|
110
|
+
7. **Hand over.** `get_status` gives `try_preview`: the inbox with Try the
|
|
111
|
+
agent open (web chat, WhatsApp and Instagram). Give it with what you tried
|
|
112
|
+
and the tests. Until someone outside the team talks to the agent the
|
|
113
|
+
workspace is a draft: every change reaches the app at once and there is
|
|
114
|
+
nothing to publish, so you need not explain preview and live. Once
|
|
115
|
+
`get_status` says it is no longer a draft, changes wait in preview:
|
|
116
|
+
`publish` only when they ask.
|
|
117
|
+
|
|
118
|
+
### A workspace already exists
|
|
119
|
+
|
|
120
|
+
The app names one, `list_workspaces` shows it, or a `vatio.yml` does. Never
|
|
121
|
+
create another. `get_agent` and `get_status`, then explain the agent from them
|
|
122
|
+
(what it is for, its tools, its knowledge, when it hands off) and recommend
|
|
123
|
+
from what you see:
|
|
124
|
+
|
|
125
|
+
- open reports in `list_reports`: work them with the `vatio-improve` skill;
|
|
126
|
+
- tools failing in `get_tool_health`: the fix is in the backend they call;
|
|
127
|
+
- few or no tests (`list_reports` lists them last): offer to `add_test` what
|
|
128
|
+
matters most;
|
|
129
|
+
- the workspace is not in `list_workspaces`: the owner invites them from
|
|
130
|
+
**Team** in the inbox, with the email they signed in with.
|
|
131
|
+
|
|
132
|
+
If there is a `vatio.yml`, the agent on Vatio is the one that counts and you
|
|
133
|
+
change it through the MCP from now on. Recommend removing `vatio.yml`,
|
|
134
|
+
`tools/` and `identity.pub` from the repository, so nobody pushes an old copy
|
|
135
|
+
over it, and do it only with their yes.
|
|
93
136
|
|
|
94
137
|
## Claude Code permissions
|
|
95
138
|
|
|
96
|
-
In Claude Code, once the agent
|
|
139
|
+
In Claude Code, once the agent works, check the project's
|
|
97
140
|
`.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.
|
|
141
|
+
no `mcp__vatio` rule, offer once to add the block in **Auto mode** on
|
|
142
|
+
https://vatio.ai/docs/integrations/claude-code.md: it lets you call the Vatio
|
|
143
|
+
tools without a prompt each time, and still asks the developer before
|
|
144
|
+
`publish`, `rollback`, `set_secret` and the like. Add it only with their yes,
|
|
145
|
+
merged into what the file has, never replacing it, and add no other rule.
|
|
146
|
+
Never edit `~/.claude/settings.json`.
|
|
108
147
|
|
|
109
148
|
## 3. Before you finish
|
|
110
149
|
|
|
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.
|
|
150
|
+
Tell the Vatio team how building it went, with the MCP's `send_feedback`
|
|
151
|
+
(and the workspace's slug). Ask yourself which step of setting up the agent
|
|
152
|
+
took the most work, and why: a tool that refused something, an error that left
|
|
153
|
+
you guessing, docs that were missing, a step you had to work around. Answer
|
|
154
|
+
from what happened in this session, in a few sentences, with no secrets, keys
|
|
155
|
+
or anyone's personal data. Do it every time, even when it all went smoothly
|
|
156
|
+
(then say which step took longest), and tell the developer in one line that
|
|
157
|
+
you sent it.
|
|
158
|
+
|
|
159
|
+
To look something up in the docs, `npx @vatio-ai/cli@latest docs search
|
|
160
|
+
TERM` prints the sections that mention it, with their page, and
|
|
161
|
+
`npx @vatio-ai/cli@latest docs PAGE` one page (`tools`, `knowledge`); neither
|
|
162
|
+
needs a workspace or a sign-in.
|
|
163
|
+
|
|
164
|
+
A tool that refuses says what to do next: follow it. `publish` with `force`,
|
|
165
|
+
`rollback`, `remove_test`, `erase_contact` and anything that reaches real
|
|
166
|
+
people (a chat on live, WhatsApp live on) are the person's call: ask first.
|