Seshat AIDocumentation

Documentation / Concepts

Skills and MCP

Two ways to extend the agent: skills teach it your rules, MCP servers give it new tools.

SkillsMCP servers
What they addInstructionsTools, resources and prompts
What they areA Markdown fileA program or a remote service
Good forYour conventions, checklists, workflowsGitHub, databases, Slack, anything with an API

Skills

A skill is a Markdown file with an optional YAML header. The body is added to the agent’s instructions.

---
name: "summarise-pr"
description: "Summarise a GitHub pull request for the team."
when_to_use: "When asked to summarise a PR or code review."
allowed-tools:
  - bash
  - read
---

Read the diff from the bash tool and write a short Markdown summary:
- what changed and why
- possible risks
- a checklist for the reviewer

Where skills live

FolderScope
.seshat/skills/ in the projectShared with your team when committed
.claude/skills/ in the projectSame, using the folder other agent tools already use
~/.seshat/skills/user/Your personal skills
~/.seshat/skills/managed/Skills set by an administrator

A project skill overrides a personal skill with the same name.

Header fields

FieldPurpose
name, descriptionHow the skill is named and listed
when_to_useTells the agent when to use it by itself
arguments, argument-hintArguments the skill accepts
allowed-toolsRestrict the tools it may use. Leave it out to allow all
modelRun the skill on another model, for example a faster one
contextinline (default) shares the session; fork runs in an isolated sub-session
user-invocableSet to false for a background skill the user cannot call
shellCommands to run before and after (before, after, on_error, on_complete)

The official collection is seshat-skills. The complete field reference is in the skills guide.

MCP servers

Model Context Protocol is an open standard for connecting agents to tools. Seshat is an MCP client: connect a server and its tools appear next to the built-in ones.

TransportForConfigure with
stdioA local program (npx, Python, a binary)Command, Args, Env
SSEA remote serverURL
HTTP (streamable)A remote serverURL

In Go

client, _ := sdk.NewClient(&sdk.ClientConfig{
    MCPServers: []sdk.MCPServerConfig{
        {
            Name:    "github",
            Command: "npx",
            Args:    []string{"-y", "@modelcontextprotocol/server-github"},
            Env:     map[string]string{"GITHUB_PERSONAL_ACCESS_TOKEN": os.Getenv("GITHUB_TOKEN")},
        },
        {Name: "remote", URL: "https://my-mcp-server.example.com/sse"},
    },
})

What happens at runtime

  1. Seshat starts each stdio server as a subprocess, or connects to the remote URL.
  2. It fetches the server’s tools and merges them with the built-in ones.
  3. The agent sees one list of tools. Calls are routed to the right server.
  4. When the session ends, the subprocesses are stopped.

Updated on 2026-10-07