@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.
@@ -11,8 +11,8 @@
11
11
  {
12
12
  "name": "vatio",
13
13
  "source": "./",
14
- "description": "Vatio skills for Claude Code, Cursor and Codex: add an AI agent to the app you're building with /vatio-init, then improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze.",
15
- "version": "1.25.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.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: add an AI agent to the app you're building with /vatio-init, then improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze.",
4
- "version": "1.30.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.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, run `/vatio-init` (in Cursor or Codex, ask it to use
11
- vatio-init). It builds the agent from your project; [Vatio](https://vatio.ai)
12
- runs it with an inbox, human handoff and evaluation checks. You try the preview
13
- and approve publication.
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 prepares fixes, Vatio tests the reported
17
- cases, and you approve the update. You do not need to write code yourself; you
18
- need your app’s project on your computer and Node.js 20 or newer.
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 (a `vatio.yml` anywhere in the repository, the app's code) and recommends from it. With no agent yet, builds one: asks the owner what the code does not answer, writes `vatio.yml`, pushes it and hands over a link to try. With one, gets a developer who joined the project up to speed |
23
- | `vatio-improve` | Takes every reply your supervisors reported in the inbox in one session: reads `vatio test list`, fixes each cause, `vatio push`, proves it with `vatio test` (on Vatio's servers, in the background) and publishes with `vatio publish` after your approval |
24
- | `vatio-analyze` | Reads what people talked about with the agent between two dates, from `vatio chat export` (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 |
25
- | `vatio-share-session` | Sends the coding session to the Vatio team when you ask it to, or offers to when the others finish (send it, not now, or don't ask again), 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
+ | `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 when to reach for
28
- the Vatio CLI; the instructions themselves come from the platform when it runs
29
- `vatio docs` or `vatio test list`, so they are never out of date.
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. Run it again to update them.
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. Run
40
- these one at a time and follow the installation panel; the commands are then
41
- `/vatio:vatio-init` and `/vatio:vatio-improve`:
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, MCP servers
64
- or anything that runs by itself. What they have your agent run is one
65
- program, the [Vatio CLI](https://github.com/vatio-ai/cli)
66
- (`npx @vatio-ai/cli`, downloaded from npm), and it talks to one service,
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.** The first `vatio push` (or `vatio login`) opens vatio.ai in your
70
- browser; the token it gets back is saved in `~/.vatio/config.json`.
71
- - **Your agent's files.** `vatio check` and `vatio push` send the directory
72
- that holds `vatio.yml` (its tools and knowledge, never hidden files such as
73
- `.env` or `.git/`) to vatio.ai, which runs the agent. `vatio secrets set`
74
- sends a secret you name, stored encrypted.
75
- - **Conversations.** `vatio chat` sends what you type to your agent.
76
- `vatio test list`, `vatio chat show` and `vatio chat export` (redacted by Vatio
77
- before it leaves) bring your workspace's conversations to your terminal.
78
- `vatio docs` fetches the docs.
79
- - **How each command ended.** The CLI tells Vatio which command ran, its exit
80
- code, how long it took, which version of these skills the project has and,
81
- on failure, what it printed; never arguments, file contents, secrets or what
82
- a chat said. Installing these skills tells Vatio once, with their version
83
- and the coding agent. `VATIO_TELEMETRY=0` turns both off.
84
- - **Feedback.** `vatio feedback "..."` sends the text your agent writes about
85
- what got in its way.
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
- [Improve your agent from flags](https://vatio.ai/docs/improve) ·
96
- [CLI](https://vatio.ai/docs/cli/) · [Changelog](https://vatio.ai/docs/changelog)
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 can
117
- follow the same procedures. You can also use `npx skills add vatio-ai/skills`
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
- // Running it again overwrites the copies with this version's.
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
- PATH/.claude/skills. PATH defaults to the current directory.`;
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
- Ask your coding agent to build or improve a Vatio agent and it will use them.
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.30.1",
4
- "description": "Vatio skills for Claude Code, Cursor and Codex: add an AI agent to the app you're building with /vatio-init, then improve it daily with /vatio-improve and learn what people ask it with /vatio-analyze.",
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 agent's repository.
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
- `vatio chat export` prints what people said to the agent, and what they were
9
- answered, between two dates: one conversation per line as JSON. Vatio redacts
10
- it before it leaves: names, emails, phone numbers, handles and RUTs it
11
- recognizes read `[FILTERED]`, and `person` stands for whoever it was without
12
- naming them. Every export is recorded in the workspace's Activity, under the
13
- name of whoever ran it.
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.** The CLI reads it from the nearest `vatio.yml`. With
16
- none here, ask for the workspace's slug (the part after
17
- `inbox.vatio.ai/` in their inbox) and write a one-line one in a new folder
18
- outside any repository:
19
-
20
- ```bash
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. **Export.** Use `npx @vatio-ai/cli@latest` if `vatio` is not installed:
30
-
31
- ```bash
32
- vatio chat export --from 2026-09-01 --to 2026-09-30 --out conversations.jsonl
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 the export:
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 the export as the private conversations it is. Never try to work out
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 export
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 export or its docs left you guessing,
77
- `vatio feedback "what you were doing and what was missing"` tells the Vatio
78
- team.
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. Works in any directory with a vatio.yml.
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. Vatio keeps the
11
- instructions for working them on the platform, so they are never out of date
12
- here. Start by reading them:
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
- ```bash
15
- vatio test list
16
- ```
17
-
18
- Run it from the directory with the workspace's `vatio.yml` (or below it).
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 `vatio.yml`, knowledge or a tool's definition. **Vatio**: the model
31
- provider or Vatio failed and Vatio wrote the reply itself. Do not change
32
- the agent for those: tell the developer, who can remove the report, and
33
- if they keep happening, `vatio feedback`.
34
- `vatio test rm ID` removes a report and its test for everyone. It is the
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
- `vatio.yml`, a knowledge entry, a tool, or the developer's backend a tool
42
- calls. `vatio tools --env live` shows each tool's error rate, timeouts and
43
- latency, and the calls that failed with what the backend answered: a
44
- failing tool rarely gets reported, because the agent apologizes and moves
45
- on. Fix those too. After the reports come the tests that fail on preview
46
- (one the developer added for something the agent does not do yet, or a
47
- regression) and the tests the agent answers differently each time (the
48
- same version passes and fails them): work those too, as their sections
49
- say. For an unsteady one the agent is usually inconsistent and the fix is
50
- in `vatio.yml` or knowledge; when the note is what is vague, rewrite it;
51
- when it no longer applies, propose removing it to the developer. Never
52
- remove a test because it fails. Something the developer asks the agent to
53
- do that no report covers is a test first:
54
- `vatio test add "QUESTION" "WHAT IT SHOULD DO"` asks it on preview and
55
- says whether it passes now; then fix until it does.
56
- 3. `vatio push`. It updates preview and runs no tests. No branch or
57
- environment to set up: preview is the one. If it is refused because
58
- preview has changes made outside the files (someone edited the agent from
59
- the Vatio MCP in Claude or ChatGPT), run `vatio pull`, which writes them
60
- into `vatio.yml` and `tools/` (commit your work first: it wants a clean
61
- git tree), check `git diff` still carries your fix, and push again. Never
62
- `vatio push --force` over them unless the developer says so.
63
- 4. `vatio test` tests every report against preview, on Vatio's servers: it
64
- starts the runs, prints their ids and returns. `vatio test --wait` waits
65
- for the report (several minutes), so in Claude Code start that with the
66
- Bash tool's `run_in_background` and read the report when it finishes;
67
- `vatio test --show RUN_ID` prints a run so far. A case that did not pass
68
- comes with the `vatio chat show CHAT_ID` of its replay. Iterate (fix, push,
69
- test) until the reports pass and nothing that passes on live fails. A case
70
- marked "not tested (Vatio's side)" says nothing about your fix: run
71
- `vatio test --wait` again. One not tested because a tool needs a
72
- signed-in visitor replays signed in with `vatio test --as-subject ID`. Name reports by id (`F-7K2QX`).
73
- 5. Show the developer what passes now, and `vatio publish` once they agree:
74
- it changes what visitors get. In a draft (no conversation from outside
75
- the team yet) live already runs every push, and `vatio publish` says
76
- there is nothing to publish. If it is refused, follow its message: it
77
- says what to run. Never pass `--force` unless the developer explicitly
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
- If the fix needs more than the digest says, `vatio docs search TERM` prints
86
- the sections of the docs that mention something, with their page,
87
- `vatio docs PAGE` one page (`tools`, `knowledge`), and `vatio docs` the whole
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
- A command you hand the developer to run themselves, because a permission
99
- check refused it or it needs their own credentials, says
100
- `npx @vatio-ai/cli@latest`, never `vatio`: the `vatio` installed on their
101
- machine can be too old for Vatio to accept. When one command's output feeds
102
- another (a key into a secrets store), take it with `--json` and chain with
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 — a vatio.yml anywhere in the repository, the workspace on the platform, the app's own code — and recommends from it, then either builds a customer-facing AI agent (in the app first, through its web widget or mobile SDK, and on WhatsApp or Instagram when asked) 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.
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
- Look before you create: the project may already have an agent. Vatio keeps
9
- the contract and the procedures on the platform, so they are never out of
10
- date here. Read them first:
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
- ```bash
13
- npx @vatio-ai/cli docs
14
- ```
14
+ ## 0. The Vatio MCP
15
15
 
16
- Under **For coding agents**, **Starting a new agent** and **Joining an
17
- existing workspace** are the two procedures. Follow the one that fits; it
18
- takes precedence over the summary below. The rest of that output is the
19
- contract for `vatio.yml`, tools, knowledge and the CLI. To look something up
20
- again later, `npx @vatio-ai/cli docs search TERM` prints the sections that
21
- mention it, with their page, and `npx @vatio-ai/cli docs PAGE` one page
22
- (`tools`, `knowledge`, `cli/deploy`), rather than reading it all twice.
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
- - **An agent.** Every `vatio.yml`, at or above the current directory and
27
- anywhere in the repository (`git ls-files '*vatio.yml'`). Its
28
- `workspace:` line names the workspace.
29
- - **The app.** What the project does and for whom; the API an agent could
30
- call (routes, controllers, an OpenAPI file); how its users sign in; and the
31
- docs, FAQs or policies an agent could read as knowledge.
32
- - **This machine.** `vatio doctor`: whether it is signed in, and which
33
- workspace this directory resolves to.
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 user in a few lines what is there and what
38
- you recommend, and ask them to confirm.
39
-
40
- - **No `vatio.yml`: a new agent.** Propose what it could do from what you
41
- read: what it answers, which endpoints become tools, what becomes
42
- knowledge. Then follow **Starting a new agent**, in short:
43
- 1. Ask the owner only what the code does not answer: what the business
44
- does, what the agent must never say, when it hands off to a person,
45
- which of their systems it should read from. Do not invent business
46
- facts.
47
- 2. `vatio init SLUG` in the repository the agent belongs in, then write
48
- `vatio.yml` (and `tools/` for their APIs, with one that alerts their
49
- team when a person should take over: **Human in the loop** in the docs).
50
- 3. `vatio diff`, `vatio push`, then try it with `vatio chat`, including a
51
- conversation that should hand off. A tool that needs the visitor's
52
- phone or a team role runs with `vatio chat --as-phone me` (or a
53
- customer phone); an `access: private` one with `--as-subject ID`. When visitors
54
- will send files (a PDF, a photo), send one with `vatio chat --file PATH
55
- "question"`: it says how much of a PDF the agent got.
56
- 4. **Write down what it should do as tests.** For each question that
57
- matters, `vatio test add "what a visitor would ask" "what the answer has
58
- to do"`: it asks it on preview and says whether it passes now (add
59
- `--as-phone` or `--as-subject` as in `vatio chat`). Three or four is
60
- enough to start. This is
61
- the only thing that makes a later version's mistake visible: `vatio
62
- test` replays them on every push, and once the workspace is published
63
- `vatio publish` refuses a version that breaks one. A workspace with no
64
- tests publishes with nothing checked, which is how a fix for one
65
- question quietly breaks another.
66
- 5. Give them the link `vatio push` prints after `Try it:` (the inbox
67
- with Try the agent open: web chat, WhatsApp and Instagram) with what you
68
- tried. Until someone outside their team talks to the agent the
69
- workspace is a draft: `vatio push` is the deploy, so there is nothing to
70
- publish yet and you need not explain preview and live. Every push says
71
- which of the two states the workspace is in; once it says visitors still
72
- get an older version, publish with `vatio publish` only when they ask.
73
- - **A `vatio.yml`: the agent exists.** Never `vatio init` here: it writes a
74
- starter agent, and pushing that replaces the real one. Work from the
75
- directory of the `vatio.yml` and follow **Joining an existing workspace**:
76
- sign in with the address they were invited with, then
77
- `vatio diff --env live` and `vatio status`. Explain the agent from
78
- `vatio.yml` (what it is for, its tools, its knowledge, when it hands off)
79
- and recommend from what you see:
80
- - the folder differs from live: say so first, the repository may be behind;
81
- - `vatio status` lists changes made outside the files (from the Vatio MCP
82
- in Claude or ChatGPT): `vatio pull` writes them into `vatio.yml` and
83
- `tools/` before anything is pushed;
84
- - open reports in `vatio test list`: work them with the `vatio-improve` skill;
85
- - tool calls failing in `vatio tools`: the fix is in the backend they call;
86
- - `workspace_forbidden`: they are not in the workspace yet, and the owner
87
- invites them from **Team** in the inbox.
88
- - **A workspace slug but no `vatio.yml`.** Ask for the repository it lives
89
- in. If it was built from the Vatio MCP in Claude or ChatGPT, it has none
90
- yet: `vatio init SLUG` in the repository it should live in, then, before
91
- any push, `vatio pull --force` to replace the starter agent with the one
92
- Vatio runs. Otherwise do not `vatio init` one instead.
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 is pushed, check the project's
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 `Bash(vatio *)` rule, offer once to add the block in **Auto mode** on the
99
- docs' Claude Code page: it lets you run `vatio` without the auto mode
100
- classifier refusing it, and still asks the developer before `vatio publish`,
101
- `vatio rollback`, `vatio secrets` and `vatio keys`. Add it only with their
102
- yes, merged into what the file has, never replacing it, and add no other rule.
103
- It matches `vatio`, so it needs the CLI installed:
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
- 1. If an error or the docs left you guessing, say so:
112
- `vatio feedback "what you were doing and what was missing"`.
113
- 2. Last, in Claude Code, offer to send this session to the Vatio team, as
114
- the `vatio-share-session` skill says. It starts with
115
- `vatio share-session --should-ask`: if that prints `no`, say nothing.
116
-
117
- There are two ways to run the CLI, and the package name appears once in
118
- either: `vatio ARGS` when it is installed globally, and
119
- `npx @vatio-ai/cli@latest ARGS` when it is not. Pick one per command and
120
- leave it whole — `npx @vatio-ai/cli @vatio-ai/cli push` is the commonest way
121
- to get this wrong, and the CLI reads the second name as the command and
122
- fails. The first
123
- `vatio push` (or `vatio login`) signs the developer in: it opens the browser
124
- on their machine (if it doesn't, give them the link it prints). Tell them to
125
- sign in with email, Google or GitHub and check that the code on the page
126
- matches the one the terminal printed. If the command times out waiting, run
127
- it again after they have signed in: it picks up the same sign-in page.
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.