Loading local sources

Updated May 06, 2026

Run load without a path to scan the current directory:

repo-local-tools load

The omitted-path scan loads every supported source it finds:

  • If SKILL.md exists in the current directory, the current directory is loaded as a skill. If the file has a frontmatter name, that name is used; otherwise, the current directory name is used. The fallback names skill and src are rejected because they are too ambiguous.
  • If mcp.json or mcpServers.json exists, each server under its top-level mcpServers object is loaded into the shared MCP registry.
  • Each .skill bundle in the current directory is loaded individually.
  • If a skill or skills subdirectory exists, each direct subdirectory under it is loaded as an individual skill directory.

Run load with a path to load one source or scan another directory:

repo-local-tools load path/to/SKILL.md
repo-local-tools load path/to/reviewer.skill
repo-local-tools load path/to/mcp.json
repo-local-tools load path/to/project

Path handling follows the same rules:

  • SKILL.md loads its enclosing directory as one skill.
  • .skill loads that archive as one skill.
  • mcp.json or mcpServers.json loads every server from its mcpServers object.
  • Any other directory is scanned as though load had been run from that directory.

MCP JSON input follows the interoperable MCP configuration shape used by FastMCP and many MCP clients:

{
  "mcpServers": {
    "echo": {
      "command": "python",
      "args": ["-m", "example"],
      "env": {
        "MODE": "test"
      }
    }
  }
}

Each loaded server is converted into a shared TOML definition under:

$XDG_DATA_HOME/repo-local-tools/mcp-servers/<name>.toml

Each loaded skill is copied under:

$XDG_DATA_HOME/repo-local-tools/skills/<name>/