Skip to main content

A privacy-first AI agent that learns your workflows and turns them into one-click Skills.

Project description

SkillCapture ๐Ÿง 

A privacy-first, local AI agent that watches your daily chats, automatically learns your repetitive workflows, and turns them into one-click Skills โ€” all stored safely on your own hard drive.

Built with FastMCP ยท Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.


How It Works

SkillCapture uses a two-tier pipeline inspired by how human memory consolidation works:

Day 1 โ€” Lightweight Draft (Cheap)

The AI scans your chat log and extracts potential workflows into a flat JSON cache. No heavy processing โ€” just keywords and action summaries.

Day 2 โ€” Heavy Promotion (Only on Match)

If you repeat a workflow, the system detects the keyword overlap and only then triggers the expensive generation: building a full, reusable Skill with named variables, step-by-step actions, and trigger phrases.

DISCOVERED โ†’ PENDING โ†’ PROMOTED โ†’ DEPRECATED
   (Day 1)    (Cache)   (Vault)    (30d unused)

The Storage Architecture

Layer Location Purpose
The Sandbox data/pending.json Lightweight Day 1 cache โ€” fast read/write
The Vault skills/*.md Promoted skills as human-readable Markdown with YAML frontmatter
The Index skills/index.json Ultra-light manifest so the AI never overloads its context window

Skills are stored as Markdown files โ€” you can read, edit, and version-control them with Git.


Quick Start

1. Install

Python (uvx / pipx) ๐Ÿ

uvx skill-capture-mcp
# or
pipx install skill-capture

2. Configure your LLM provider

cp .env.example .env
# Edit .env with your provider and API key

SkillCapture ships with three built-in providers. Set LLM_PROVIDER in .env:

Provider LLM_PROVIDER API Key Env Var Default Model
OpenAI openai OPENAI_API_KEY gpt-4o-mini
Anthropic anthropic ANTHROPIC_API_KEY claude-sonnet-4-20250514
Google Gemini gemini GOOGLE_API_KEY gemini-2.0-flash

Extensible: Need a different provider? Implement the LLMClient.chat() interface in core/providers.py.

3. Run the MCP Server

skill-capture-mcp
# (or `npx @YOUR_USERNAME/skill-capture-mcp`)

Then connect from Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

4. Connect to your MCP client

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "skill-capture": {
      "command": "python",
      "args": ["/absolute/path/to/skill-capture/server.py"],
      "env": { "LLM_PROVIDER": "openai", "OPENAI_API_KEY": "sk-..." }
    }
  }
}
Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "skill-capture": {
      "command": "skill-capture-mcp",
      "args": [],
      "env": { "LLM_PROVIDER": "openai", "OPENAI_API_KEY": "sk-..." }
    }
  }
}
Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "skill-capture": {
      "command": "skill-capture-mcp",
      "args": [],
      "env": { "LLM_PROVIDER": "openai", "OPENAI_API_KEY": "sk-..." }
    }
  }
}
Codex CLI

Run:

codex mcp add skill-capture -- skill-capture-mcp

Or add to ~/.codex/config.toml:

[mcp_servers.skill-capture]
type = "stdio"
command = "skill-capture-mcp"
args = []

[mcp_servers.skill-capture.env]
LLM_PROVIDER = "openai"
OPENAI_API_KEY = "sk-..."

CLI Mode

Don't need MCP? Use SkillCapture standalone from the terminal:

skill-capture-cli analyze           # Run the Day 1/Day 2 pipeline
skill-capture-cli list              # List all promoted skills
skill-capture-cli pending           # View pending drafts in the sandbox
skill-capture-cli run "Deploy App"  # Load and display a specific skill

MCP Tools

Once connected, your AI client has access to these tools:

Tool Description
list_skills() Browse all promoted skills (reads the lightweight index)
run_skill(name) Load the full content of a specific skill from the Vault
analyze_today() Manually trigger the Day 1/Day 2 pipeline
get_pending() View workflow drafts sitting in the sandbox

Project Structure

skill-capture/
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ pending.json          # The Sandbox
โ”œโ”€โ”€ skills/
โ”‚   โ”œโ”€โ”€ index.json            # The Index
โ”‚   โ””โ”€โ”€ *.md                  # The Vault
โ”œโ”€โ”€ logs/                     # Daily chat logs (input)
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ models.py             # Two-tier Pydantic schemas
โ”‚   โ”œโ”€โ”€ storage.py            # File-system I/O layer
โ”‚   โ”œโ”€โ”€ evaluator.py          # LLM client interface + evaluator logic
โ”‚   โ”œโ”€โ”€ providers.py          # OpenAI, Anthropic, Gemini clients
โ”‚   โ””โ”€โ”€ scheduler.py          # APScheduler nightly worker
โ”œโ”€โ”€ server.py                 # FastMCP server
โ”œโ”€โ”€ cli.py                    # Standalone CLI interface
โ””โ”€โ”€ requirements.txt

Tech Stack


Contributing

Contributions are welcome! Some ideas:

  • ๐Ÿ”Œ Add more LLM providers (Ollama, local models)
  • ๐ŸŽจ Build the web UI for skill management
  • ๐Ÿ“Š Add usage analytics and skill effectiveness tracking
  • ๐Ÿงช Improve the keyword matching with embeddings
  • ๐Ÿ“ Add support for more chat log formats

License

MIT License โ€” see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skill_capture-1.0.0.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skill_capture-1.0.0-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file skill_capture-1.0.0.tar.gz.

File metadata

  • Download URL: skill_capture-1.0.0.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for skill_capture-1.0.0.tar.gz
Algorithm Hash digest
SHA256 ed9bf8a593f3fb8d2cd937c9e8d4e997c53fb62f8019b611d2c622028ab070bc
MD5 4937ce649f087d398d6bb50d015a79ba
BLAKE2b-256 a08038db1e710fdece255d47ed252ac6fb1d4e12f9e560a142cecb6a5025f0df

See more details on using hashes here.

File details

Details for the file skill_capture-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: skill_capture-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for skill_capture-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e9f5caaeb9bffaf18994f844b9fb8bc0f5dd10ff1a24eee60432f19785112f8
MD5 60024575e777c48fa0dc5db3519d08ca
BLAKE2b-256 458d78bffaca65fe67a7447d3b676ac114f1eb8da4a720088b6cded88585f27b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page