@vatio-ai/skills 1.4.0 → 1.6.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.
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "name": "vatio",
7
7
  "source": "./",
8
- "description": "Build a Vatio agent from your coding agent, then fix what supervisors flag and prove it with evals."
8
+ "description": "Build a Vatio agent from your coding agent, then fix what supervisors report and prove it with evals."
9
9
  }
10
10
  ]
11
11
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vatio",
3
- "description": "Build a Vatio agent from your coding agent, then fix what supervisors flag and prove it with evals.",
4
- "version": "1.4.0",
3
+ "description": "Build a Vatio agent from your coding agent, then fix what supervisors report and prove it with evals.",
4
+ "version": "1.6.0",
5
5
  "author": { "name": "Vatio", "url": "https://vatio.ai" },
6
6
  "homepage": "https://vatio.ai/docs",
7
7
  "repository": "https://github.com/vatio-ai/skills",
package/README.md CHANGED
@@ -4,8 +4,9 @@ Skills for the coding agent working on your [Vatio](https://vatio.ai) agent.
4
4
 
5
5
  | Skill | What it does |
6
6
  |---|---|
7
- | `vatio-new` | Builds a customer-facing agent from scratch: asks the owner what it needs to know, writes `vatio.yml`, pushes it and hands over a link to try |
8
- | `vatio-improve` | Works through the replies your supervisors flagged in the inbox: reads `vatio flags`, fixes each cause on a branch, proves it with `vatio eval`, and opens a pull request |
7
+ | `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 |
8
+ | `vatio-improve` | Takes every reply your supervisors reported in the inbox in one session: reads `vatio flags`, fixes each cause, `vatio push`, proves it with `vatio eval` (in the background in Claude Code) and publishes with `vatio publish` |
9
+ | `vatio-share-session` | Sends the Claude Code session to the Vatio team when you ask it to, or offers to when the other two 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 |
9
10
 
10
11
  The skills are short on purpose. They tell your coding agent when to reach for
11
12
  the Vatio CLI; the instructions themselves come from the platform when it runs
@@ -19,7 +20,7 @@ Any coding agent, from the root of your project:
19
20
  npx @vatio-ai/skills
20
21
  ```
21
22
 
22
- It copies both skills into `.agents/skills/` (Codex, Cursor, Gemini CLI,
23
+ It copies the skills into `.agents/skills/` (Codex, Cursor, Gemini CLI,
23
24
  GitHub Copilot, OpenCode and others) and `.claude/skills/` (Claude Code). Run
24
25
  it again to update them.
25
26
 
@@ -38,8 +39,9 @@ Or in Claude Code, as a plugin:
38
39
  ```
39
40
 
40
41
  Your agent then uses them on its own when you ask it to build, improve or fix
41
- a Vatio agent, or you can call them by name: `/vatio-new` and `/vatio-improve`,
42
- or `/vatio:vatio-new` and `/vatio:vatio-improve` from the plugin.
42
+ a Vatio agent, or to send the session to Vatio, or you can call them by name:
43
+ `/vatio-init`, `/vatio-improve` and `/vatio-share-session`, or
44
+ `/vatio:vatio-init` and so on from the plugin.
43
45
 
44
46
  `vatio init` also writes a pointer to `vatio flags` into the workspace's
45
47
  `AGENTS.md`, which most coding agents read without installing anything.
package/bin/install.mjs CHANGED
@@ -4,14 +4,15 @@
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
  // Running it again overwrites the copies with this version's.
7
- import { cpSync, existsSync, readdirSync } from "node:fs";
7
+ import { cpSync, existsSync, readFileSync, readdirSync, rmSync } from "node:fs";
8
8
  import { dirname, join, relative } from "node:path";
9
9
  import { fileURLToPath } from "node:url";
10
10
 
11
11
  const usage = `usage: npx @vatio-ai/skills [--dir PATH]
12
12
 
13
- Copies the Vatio skills (vatio-new, vatio-improve) into PATH/.agents/skills and
14
- PATH/.claude/skills. PATH defaults to the current directory.`;
13
+ Copies the Vatio skills (vatio-init, vatio-improve, vatio-share-session) into
14
+ PATH/.agents/skills and PATH/.claude/skills. PATH defaults to the current
15
+ directory.`;
15
16
 
16
17
  const args = process.argv.slice(2);
17
18
  let root = process.cwd();
@@ -34,6 +35,9 @@ if (!existsSync(root)) {
34
35
  }
35
36
 
36
37
  const source = join(dirname(fileURLToPath(import.meta.url)), "..", "skills");
38
+ // Skills this package used to ship under another name. Left in place, the old
39
+ // copy would answer the same requests as the new one.
40
+ const RENAMED = { "vatio-new": "vatio-init" };
37
41
  const skills = readdirSync(source, { withFileTypes: true })
38
42
  .filter((entry) => entry.isDirectory())
39
43
  .map((entry) => entry.name);
@@ -44,6 +48,20 @@ for (const target of [".agents/skills", ".claude/skills"]) {
44
48
  cpSync(join(source, skill), dest, { recursive: true, force: true });
45
49
  console.log(` ${relative(process.cwd(), join(dest, "SKILL.md")) || dest}`);
46
50
  }
51
+ for (const [old, current] of Object.entries(RENAMED)) {
52
+ const dest = join(root, target, old);
53
+ if (!installedByUs(dest, old)) continue;
54
+ rmSync(dest, { recursive: true, force: true });
55
+ console.log(` removed ${relative(process.cwd(), dest) || dest} (now ${current})`);
56
+ }
57
+ }
58
+
59
+ function installedByUs(dir, name) {
60
+ try {
61
+ return readFileSync(join(dir, "SKILL.md"), "utf8").includes(`\nname: ${name}\n`);
62
+ } catch {
63
+ return false;
64
+ }
47
65
  }
48
66
 
49
67
  console.log(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vatio-ai/skills",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Agent skills for building and improving a Vatio agent from your coding agent: Claude Code, Codex, Cursor, Gemini CLI, Copilot and any agent that reads SKILL.md",
5
5
  "keywords": [
6
6
  "vatio",
@@ -1,46 +1,49 @@
1
1
  ---
2
2
  name: vatio-improve
3
- description: Improve a Vatio agent from what its supervisors flagged. Use when asked to improve, fix or debug a Vatio agent, to work through flagged replies or wrong answers in production, or when a GitHub issue labelled vatio-flags arrives. Works in any directory with a vatio.yml.
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.
4
4
  ---
5
5
 
6
- # Improve a Vatio agent from its flags
6
+ # Improve a Vatio agent from its reports
7
7
 
8
- Supervisors flag wrong replies in the Vatio inbox and write what should have
9
- happened: a different answer, an action, or a tool the agent should have used
10
- or does not have. Vatio keeps the instructions for working them on the
11
- platform, so they are never out of date here. Start by reading them:
8
+ Supervisors report wrong replies in the Vatio inbox and write what it should
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:
12
13
 
13
14
  ```bash
14
15
  vatio flags
15
16
  ```
16
17
 
17
18
  Run it from the directory with the workspace's `vatio.yml` (or below it). It
18
- prints every open flag — the conversation, each tool call with what the
19
+ prints every open report — the conversation, each tool call with what the
19
20
  backend answered, and the supervisor's note — with how to work them at the
20
21
  top. Follow those instructions; they take precedence over anything below.
21
22
 
22
23
  In short:
23
24
 
24
- 1. Group the flags by cause, and fix each cause where it lives: `vatio.yml`,
25
- a knowledge entry, a tool, or the backend a tool calls. `vatio tools --env
26
- live` shows each tool's error rate, timeouts and latency across every
27
- conversation, and the calls that failed with what the backend answered: a
28
- failing tool rarely gets flagged, because the agent apologizes and moves
25
+ 1. Group the reports by cause, and fix each cause where it lives:
26
+ `vatio.yml`, a knowledge entry, a tool, or the developer's backend a tool
27
+ calls. `vatio tools --env live` shows each tool's error rate, timeouts and
28
+ latency, and the calls that failed with what the backend answered: a
29
+ failing tool rarely gets reported, because the agent apologizes and moves
29
30
  on. Fix those too.
30
- 2. Work on a git branch. `vatio push` deploys it to the branch's own
31
- environment, never to live.
32
- 3. Prove it with `vatio eval`: every flag made on live, or before the first publish, is an eval case, replayed against
33
- the branch and judged. The report counts the open flags apart from the
34
- regression cases. A fix is done when its flags pass and nothing that
35
- passed on live now fails.
36
- 4. Open a pull request with what you changed and the eval result. Name flags
37
- by id (`F-7K2QX`), and report the open flags and the
38
- regression cases as two counts, never one total. With no GitHub
39
- repository connected, `vatio propose --env <branch> --title "…"
40
- --summary-file why.md` instead: the workspace's owner accepts it from the
41
- inbox, which publishes it. Never `vatio publish` it yourself.
31
+ 2. `vatio push`. It updates preview and runs no tests. No branch or
32
+ environment to set up: preview is the one.
33
+ 3. `vatio eval` tests every report against preview. It can take several
34
+ minutes, so in Claude Code start it with the Bash tool's
35
+ `run_in_background` and read its report when it finishes. Iterate (fix,
36
+ push, eval) until the reports pass and nothing that passes on live fails.
37
+ Name reports by id (`F-7K2QX`).
38
+ 4. Show the developer what passes now, and `vatio publish` once they agree:
39
+ it changes what visitors get. If it is refused, follow its message: it
40
+ says what to run. Never pass `--force` unless the developer explicitly
41
+ asks for it.
42
42
  5. If the digest, an error or the docs left you guessing, say so:
43
43
  `vatio feedback "what you were doing and what was missing"`.
44
+ 6. Last, in Claude Code, offer to send this session to the Vatio team, as
45
+ the `vatio-share-session` skill says. It starts with
46
+ `vatio share-session --should-ask`: if that prints `no`, say nothing.
44
47
 
45
48
  `vatio docs` prints the whole contract (manifest, tools, knowledge, CLI) if
46
49
  the fix needs more than the digest says. If `vatio` is not installed, use
@@ -0,0 +1,80 @@
1
+ ---
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 (for WhatsApp, Instagram, a website widget or an app) and gets it to the console's Test screen, 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
+ ---
5
+
6
+ # Start with Vatio in this project
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:
11
+
12
+ ```bash
13
+ npx @vatio-ai/cli docs
14
+ ```
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.
20
+
21
+ ## 1. Look at what is there
22
+
23
+ - **An agent.** Every `vatio.yml`, at or above the current directory and
24
+ anywhere in the repository (`git ls-files '*vatio.yml'`). Its
25
+ `workspace:` line names the workspace.
26
+ - **The app.** What the project does and for whom; the API an agent could
27
+ call (routes, controllers, an OpenAPI file); how its users sign in; and the
28
+ docs, FAQs or policies an agent could read as knowledge.
29
+ - **This machine.** `vatio doctor`: whether it is signed in, and which
30
+ workspace this directory resolves to.
31
+
32
+ ## 2. Say what you found, and recommend
33
+
34
+ Before changing anything, tell the user in a few lines what is there and what
35
+ you recommend, and ask them to confirm.
36
+
37
+ - **No `vatio.yml`: a new agent.** Propose what it could do from what you
38
+ read: what it answers, which endpoints become tools, what becomes
39
+ knowledge. Then follow **Starting a new agent**, in short:
40
+ 1. Ask the owner only what the code does not answer: what the business
41
+ does, what the agent must never say, when it hands off to a person,
42
+ which of their systems it should read from. Do not invent business
43
+ facts.
44
+ 2. `vatio init SLUG` in the repository the agent belongs in, then write
45
+ `vatio.yml` (and `tools/` for their APIs).
46
+ 3. `vatio diff`, `vatio push`, then try it with `vatio chat`, including a
47
+ conversation that should hand off.
48
+ 4. Give them the link `vatio push` prints after `Try it:` (the console's
49
+ Test screen, with web chat, WhatsApp and Instagram) with what you
50
+ tried. Publish with `vatio publish` only when they ask.
51
+ - **A `vatio.yml`: the agent exists.** Never `vatio init` here: it writes a
52
+ starter agent, and pushing that replaces the real one. Work from the
53
+ directory of the `vatio.yml` and follow **Joining an existing workspace**:
54
+ sign in with the address they were invited with, then
55
+ `vatio diff --env live` and `vatio status`. Explain the agent from
56
+ `vatio.yml` (what it is for, its tools, its knowledge, when it hands off)
57
+ and recommend from what you see:
58
+ - the folder differs from live: say so first, the repository may be behind;
59
+ - open reports in `vatio flags`: work them with the `vatio-improve` skill;
60
+ - tool calls failing in `vatio tools`: the fix is in the backend they call;
61
+ - `workspace_forbidden`: they are not in the workspace yet, and the owner
62
+ invites them from **Team** in the console.
63
+ - **A workspace slug but no `vatio.yml`.** Ask for the repository it lives
64
+ in: Vatio keeps what was deployed, not the files it came from. Do not
65
+ `vatio init` one instead.
66
+
67
+ ## 3. Before you finish
68
+
69
+ 1. If an error or the docs left you guessing, say so:
70
+ `vatio feedback "what you were doing and what was missing"`.
71
+ 2. Last, in Claude Code, offer to send this session to the Vatio team, as
72
+ the `vatio-share-session` skill says. It starts with
73
+ `vatio share-session --should-ask`: if that prints `no`, say nothing.
74
+
75
+ `vatio` is `npx @vatio-ai/cli` when it is not installed globally. The first
76
+ `vatio push` (or `vatio login`) signs the developer in: it opens the browser
77
+ on their machine (if it doesn't, give them the link it prints). Tell them to
78
+ sign in with email, Google or GitHub and check that the code on the page
79
+ matches the one the terminal printed. If the command times out waiting, run
80
+ it again after they have signed in: it picks up the same sign-in page.
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: vatio-share-session
3
+ description: Send this coding session to the Vatio team, so they can see where building or improving a Vatio agent got stuck. Use when the user asks to share, send or report this session (or "the conversation", "what we did") to Vatio, when the Vatio team asked them for it, when Vatio itself got in the way and they want the team to see exactly how, or when vatio-init or vatio-improve finish and say to offer it.
4
+ ---
5
+
6
+ # Send this session to the Vatio team
7
+
8
+ `vatio share-session` sends the Claude Code session you are running in: what
9
+ the user asked, what you read and ran, and what came back. It leaves out
10
+ images, replaces anything that looks like a key, token or password with
11
+ `[REDACTED]`, and the home directory with `~`. Only the Vatio team reads it,
12
+ to see where Vatio got in the way and fix it.
13
+
14
+ It is sent in one of two ways: the user asked for it, or you offer it because
15
+ `vatio-init` or `vatio-improve` just finished.
16
+
17
+ 1. **Only when you are offering it**, ask the CLI first:
18
+
19
+ ```bash
20
+ npx @vatio-ai/cli@latest share-session --should-ask
21
+ ```
22
+
23
+ If it prints `no`, stop here and do not mention it: the developer said not
24
+ to ask again, or was asked recently. If it prints `yes`, go on.
25
+
26
+ 2. Show the user what would go, without sending anything:
27
+
28
+ ```bash
29
+ npx @vatio-ai/cli@latest share-session --save /tmp/vatio-session.jsonl
30
+ ```
31
+
32
+ Tell them which session it is (the summary it prints), that it is the
33
+ whole conversation, and that the file is there if they want to read it.
34
+
35
+ 3. Ask whether to send it, once. It is their conversation: never send it on
36
+ your own, even when the task seems to call for it.
37
+
38
+ When you are offering it, ask with three answers (in Claude Code, as a
39
+ multiple-choice question), for example: "Do you want to send this session
40
+ to the Vatio team, so they can see where Vatio got in the way and improve
41
+ it?"
42
+
43
+ - **Send it**
44
+ - **Not now**: do nothing more. It will not be offered again for a week.
45
+ - **Don't ask again**: run
46
+ `npx @vatio-ai/cli@latest share-session --never`.
47
+
48
+ In the same question, suggest they add feedback: what got in the way, what
49
+ they expected Vatio to do, or anything else they want the team to know.
50
+ It is optional — the session is what matters, and it goes fine on its own.
51
+ A no is a fine answer: do not insist.
52
+
53
+ 4. If they say to send it, send it. With their feedback, in their words, as
54
+ they gave it:
55
+
56
+ ```bash
57
+ npx @vatio-ai/cli@latest share-session --yes "their feedback"
58
+ ```
59
+
60
+ Without it, just the session:
61
+
62
+ ```bash
63
+ npx @vatio-ai/cli@latest share-session --yes
64
+ ```
65
+
66
+ Never write feedback for them: a summary of the session in your words adds
67
+ nothing the session does not already say.
68
+
69
+ The first time it may ask to sign in: it opens the browser (if it doesn't,
70
+ give them the link it prints). Tell them it was sent and the number it
71
+ printed.
72
+
73
+ Only Claude Code sessions can be sent. In any other coding agent, do not offer
74
+ it; when the user asks, write what happened instead:
75
+ `npx @vatio-ai/cli@latest feedback "…"`.
@@ -1,41 +0,0 @@
1
- ---
2
- name: vatio-new
3
- description: Build someone a customer-facing AI agent on Vatio and get it to the console's Test screen, where they can try it — for WhatsApp, Instagram, a website widget or an app. Use when asked to create, set up, start or ship a Vatio agent, a chatbot or a support/sales assistant on Vatio, or when the user pastes the prompt from vatio.ai.
4
- ---
5
-
6
- # Start a Vatio agent
7
-
8
- Vatio keeps the contract and the procedure on the platform, so they are never
9
- out of date here. Read them first:
10
-
11
- ```bash
12
- npx @vatio-ai/cli docs
13
- ```
14
-
15
- The section **For coding agents → Starting a new agent** is the procedure;
16
- follow it, it takes precedence over the summary below. The rest of that
17
- output is the contract for `vatio.yml`, tools, knowledge and the CLI.
18
-
19
- In short:
20
-
21
- 1. If a `vatio.yml` exists at or above the current directory, work in that
22
- workspace and keep its slug.
23
- 2. Before writing anything, ask the owner briefly: what the business does,
24
- what the agent must never say, when it must hand off to a person, and which
25
- of their systems it should read from. Do not invent business facts.
26
- 3. `vatio init SLUG` in the repository the agent belongs in, then write
27
- `vatio.yml` (and `tools/` for their APIs).
28
- 4. `vatio diff`, `vatio push`, then try it with `vatio chat` —
29
- including a conversation that should hand off.
30
- 5. Give them the link `vatio push` prints after `Try it:` — the console's
31
- Test screen, with web chat, WhatsApp and Instagram — with what you tried.
32
- Publish with `vatio publish` only when they ask.
33
- 6. If an error or the docs left you guessing, say so before you finish:
34
- `vatio feedback "what you were doing and what was missing"`.
35
-
36
- `vatio` is `npx @vatio-ai/cli` when it is not installed globally. The first
37
- `vatio push` signs the developer in: it opens the browser on their machine
38
- (if it doesn't, give them the link it prints). Tell them to sign in with
39
- email, Google or GitHub and check that the code on the page matches the one
40
- the terminal printed. If the command times out waiting, run it again after
41
- they have signed in: it picks up the same sign-in page.