kaushal कौशल
skills for AI agents

kaushal

कौशल · “skill”

Every skill and tool, in every AI agent: Claude Code on every account, Codex, opencode, Gemini CLI, in every session.

v0.2.0 latest2 releases7 decisions recordedMIT license

Kaushal (कौशल) is Sanskrit for "skill": what you teach once, every agent knows.

You use more than one AI agent: Claude Code (maybe on several accounts), Codex, opencode, Gemini CLI. Each keeps its own skills, its own MCP servers and its own global instructions, in its own format and folder. Teach one agent a job and the others don't know it; add a tool to one and the others can't use it; log in to a second Claude account and it has none of them.

kaushal keeps your skills and tools in one place and puts them into every agent it finds, so whichever agent you open, in whichever account, has all of them:

It's part of Vayu, and ships Vayu's skills and tools, but works on its own: standard library Python, no dependencies.

#How it works

kaushal sync gives the skills and MCP servers in one store to every agent

  1. One store. Skills and MCP servers are kept in one place: Vayu's in this repository, yours in ~/.config/kaushal/.
  2. Written into each agent's own config. kaushal sync puts them where each agent already looks, in its own format: skills are linked (so editing one takes effect everywhere at once), servers registered, and agents that don't read skill folders get a short index of the skills in their instructions file. Nothing runs between an agent and its tools: each loads them the way it always does, however it's started (ADR 2).
  3. Only its own. It records what it added and never changes anything else (ADR 4).
  4. Always current. It syncs at every login and whenever kaushal is installed or updated, so a new agent, account or tool is covered without asking (ADR 5).

Why it's built this way: the decision records.

#Install

curl -fsSL https://raw.githubusercontent.com/Theyashsawarkar/kaushal/main/install.sh | bash
systemctl --user enable kaushal     # sync at every login

On Vayu, kosha install kaushal does both (Vayu starts the unit at login). It needs Python 3.11 or newer and git.

#The app

kaushal ui: every skill, which agents have it, its files and settings

kaushal ui shows every skill, tool and agent in one place, in three tabs:

The top bar says whether every agent is in sync; s syncs, d runs the doctor, both without leaving the app. On Vayu it's a tmux popup on prefix A, and in the app launcher.

The Tools tab: every MCP server, in which agents The Agents tab: every agent, up to date or not

KeyWhat it does
1 2 3, Tab Shift+TabSkills, Tools, Agents; next, previous tab
j k (↓ ↑), g Gmove; first, last
Enterread the skill / test the tool / open the agent's folder
eedit the skill (one of Vayu's: your own copy first)
cedit the skill's settings (~/.config/kaushal/NAME.toml, from its example)
na new skill of your own, opened in your editor
xturn the skill or tool off for every agent (again: back on)
ttest the tool
utake back what kaushal added to the agent (asks)
ssync every agent
ddoctor
/filter the list (Esc clears)
rreload
?every key
q Escquit

#Use

CommandWhat it does
kaushallists the skills, MCP servers and agents it found
kaushal uithe app (above)
kaushal syncgives every agent all of it (-n: only say what would change)
kaushal doctorchecks every agent has everything; exit 1 if not
kaushal off NAMEturns a skill or tool off for every agent (kaushal on NAME turns it back on); kept in ~/.config/kaushal/off.toml
kaushal unsynctakes back everything kaushal added
kaushal new NAMEstarts a skill of your own in ~/.config/kaushal/skills/NAME
kaushal path [NAME]where the skills (or one skill) live

#Where each agent gets them

An agent counts when its command is on your PATH or its folder exists.

AgentSkillsMCP serversInstructions
Claude Codelinked into ~/.claude/skills (reads them itself)~/.claude.json, and every vesha account's profile(none needed)
Codexlinked into ~/.codex/skillsa marked block in ~/.codex/config.tomlindex in ~/.codex/AGENTS.md
opencodereads ~/.agents/skills itself~/.config/opencode/opencode.jsontools in its AGENTS.md
Gemini CLIindex in ~/.gemini/GEMINI.md~/.gemini/settings.jsonindex in GEMINI.md
any agentlinked into ~/.agents/skills, the convention's shared folder

The index is a short block listing the tools and each skill's description with the path of its SKILL.md; agents that don't read skill folders themselves read it, and open a skill's file when a task matches.

It never touches what isn't its own. kaushal records what it added (~/.local/state/kaushal/state.json) and changes only that and its marked blocks; your other settings, servers and lines stay as they are, files are written atomically and keep their permissions, and a TOML file is checked before it's written. A skill folder or server of yours with the same name wins (sync says so). Remove a skill or server from kaushal and the next sync removes it from the agents; kaushal unsync takes everything back.

#Your own skills and tools

kaushal new standup          # ~/.config/kaushal/skills/standup/SKILL.md
$EDITOR ~/.config/kaushal/skills/standup/SKILL.md
kaushal sync

A skill's description is what agents choose it by: say what it does and when to use it. Your skills stay on your machine; a skill of yours with the same name as one of Vayu's replaces it.

Tools go in ~/.config/kaushal/mcp.toml, in the same form as mcp.toml:

[servers.mytool]
description = "What it gives agents"
command = "mytool"
args = ["mcp"]
env = { MYTOOL_AGENT = "{agent}" }   # {agent}: claude, codex, gemini, opencode

[servers.sangam]
enabled = false                      # leave one of Vayu's out

Only servers whose command is installed are registered.

#Vayu's skills

1 skill, with its full instructions on the [Skills page](https://theyashsawarkar.github.io/kaushal/skills/):
SkillWhat it does, and when an agent uses it
dsrWrite and send the user's Daily Status Report (DSR), the end-of-day email with a Time | Tasks table, for any date. Reconstructs the day from the user's git commits, matches the format of their past DSRs, checks the timetable (start and end time, lunch break, no gaps) and sends it as a real HTML table through sandesh, as a reply-all in their DSR thread. Use when the user asks for a DSR, daily status report, daily report, status mail or end-of-day update, or to send or backfill one for a date.

Settings for a skill stay on your machine, in ~/.config/kaushal/ (the dsr skill's in dsr.toml, example).

#Vayu's tools

ServerWhat it gives agents
anumatiroot commands, run only after you approve each one
ekatvayour phone: status, ring, lock, SMS and calls (asks you first), clipboard, files
prasarposts to your X and LinkedIn: check, draft, propose (every post asks you first)
sandeshyour Gmail and Google Chat (sends ask you first)
sangamyour GitHub pull requests (comments, reviews and merges ask you first)

#In Vayu

On Vayu, kaushal is part of the desktop: every AI agent you start, from a terminal, tmux, an editor or the launcher, has Vayu's skills and tools from its first message.

#License

MIT