Dicklesworthstone/meta_skill
Rust CLI for managing Claude Code skills: indexing, building, bundling, and sharing. Integrates with CASS for mining coding session history into reusable skills.
Deep Analysis
Local-first CLI tool for mining and managing Claude Code skills from CASS sessions, supporting dual persistence storage and hybrid search
Core Features
SQLite for fast queries, Git archive for audit trail
Combines BM25 full-text search and hash embedding semantic search using RRF fusion algorithm
Extract patterns from CASS-stored coding session history, compile into structured skill specs
Integrated ACIP v1.3 prompt injection protection with trust boundary classification
Supports base/org/project/user four-tier priority
Cross-device skill sync via Git remote repos
JSON output format for automation integration
Technical Implementation
- Fully local-first, zero cloud dependency
- Dual persistence design balances performance and traceability
- Hybrid search combines keyword and semantic understanding
- Built-in ACIP prompt injection protection
- Four-tier priority layered management
- Distill repetitive AI programming workflows into reusable skills
- Team sharing and syncing programming best practices
- Build personal or organizational programming knowledge base
- Safely process session data that may contain malicious prompts
- Some commands still stub implementations
- Requires source code compilation to install
- Requires Rust 1.85+ version
ms
Meta Skill (ms) is a local-first CLI that mines CASS sessions into durable, production-grade skills. It stores skills with dual persistence (SQLite + Git), supports hybrid search (BM25 + hash embeddings), and enforces safety boundaries during extraction.
Quick Install
# Build & install from source
cargo install --path .
Or run without installing:
cargo run -- <COMMAND>
Works on Linux, macOS, and Windows. Requires Rust 1.85+ (Edition 2024).
TL;DR
The Problem: Agent workflows get rediscovered repeatedly. CASS captures raw sessions, but there is no systematic way to distill them into reusable skills.
The Solution: ms extracts patterns, compiles them into structured skill specs, and stores them with provenance so they can be searched, loaded, and reused.
Why Use ms?
| Feature | What It Does |
|---|---|
| Dual Persistence | SQLite for fast queries + Git archive for auditability |
| Hybrid Search | BM25 full-text + hash embeddings fused with RRF |
| Robot Mode | JSON output for automation (--robot) |
| Safety Controls | ACIP prompt-injection quarantine + trust boundaries |
| Structured Skills | Deterministic SKILL.md β spec round-trip |
| Layering | Priority layers (base/org/project/user) |
| Local-First | All processing is local by default |
Quick Example
# Initialize a local ms root (.ms/)
ms init
# Configure a project skill path
ms config skill_paths.project '["./skills"]'
# Index SKILL.md files
ms index
# Search and inspect
ms search "error handling"
ms show rust-error-handling
Prepared Blurb for AGENTS.md Files
## ms β Meta Skill CLI
Local-first CLI for mining CASS sessions into production-grade skills. Maintains dual persistence (SQLite + Git), supports hybrid search (BM25 + hash embeddings via RRF), and enforces safety boundaries with ACIP prompt-injection quarantine.
### Core Workflow
```bash
# 1. Initialize in a project
ms init
# 2. Configure skill paths
ms config skill_paths.project '["./skills"]'
# 3. Index skills
ms index
# 4. Explore and search
ms list
ms search "error handling"
ms show rust-error-handling
```
### Key Flags
```
--robot # JSON output to stdout
--verbose # More logs
--config /path/to/config # Explicit config path
```
### Storage
- Local root: ./.ms (project) or ~/.local/share/ms (global)
- DB: <ms_root>/ms.db
- Git archive: <ms_root>/archive/
- Index: <ms_root>/index/
### Notes
- Some commands are implemented as stubs (build, load, requirements, prune, update).
- ACIP safety scanning is implemented under `ms security`.
Design Philosophy
ms is built around a few core principles:
Local-First and Auditable
- SQLite + Git: Fast queries and a full audit trail.
- No cloud dependency: CASS data stays local unless you explicitly sync it.
- Deterministic outputs: Skills can round-trip between spec and markdown.
Safety by Default
- Trust boundaries: User/assistant/tool/file content is classified before extraction.
- Quarantine: Prompt-injection signals are quarantined with safe excerpts.
- Auditability: ACIP decisions are stored with replay commands (opt-in).
Composition Over Ceremony
- JSON in robot mode for easy pipelines.
- Human-friendly output by default.
- Commands are designed to compose with Unix tooling.
How ms Compares
| Feature | ms | Manual Wiki | Raw CASS | Ad-hoc Notes |
|---|---|---|---|---|
| Structured skills | β | β οΈ Depends | β | β |
| Queryable | β SQLite + FTS | β οΈ Search only | β οΈ CLI grep | β |
| Audit trail | β Git archive | β οΈ If tracked | β | β |
| Safety filters | β ACIP | β | β | β |
| Hybrid search | β BM25 + semantic | β | β | β |
| CLI automation | β Robot mode | β οΈ | β οΈ | β |
Origins & Authors
Created by Jeffrey Emanuel to transform raw agent sessions into reusable, versioned skills. The goal is to preserve hard-won workflows with the same rigor we apply to production code.
Getting CASS Data Ready
ms build and related mining workflows require CASS sessions. CASS stores session history as JSONL and exposes a CLI (cass).
Quick Check
cass health
Typical Session Query
cass search "error handling" --robot --limit 5
Common Config
[cass]
auto_detect = true
cass_path = "/path/to/cass"
session_pattern = "*.jsonl"
Installation
From Source (Recommended)
git clone https://github.com/Dicklesworthstone/meta_skill.git
cd meta_skill
cargo build --release
cp target/release/ms ~/.local/bin/
Install via Cargo
cargo install --git https://github.com/Dicklesworthstone/meta_skill.git
Prebuilt binaries are not yet published. If/when they are, this README will be updated.
Quick Start
1. Initialize
ms init
2. Add Skill Paths
ms config skill_paths.project '["./skills"]'
3. Index
ms index
4. Search + Inspect
ms list
ms search "error handling"
ms show rust-error-handling
Commands
Global flags:
--robot # JSON output to stdout
--verbose # Increase logging verbosity
--quiet # Suppress non-error output
--config # Explicit config path
ms init
ms init
ms init --global
ms init --force
Creates:
.ms/ms.db(SQLite).ms/archive/(Git).ms/index/(search index).ms/config.toml
ms index
ms index
ms index ./skills /other/path
ms index --force
ms list
ms list
ms list --tags rust --layer project --limit 50
ms list --robot
ms show
ms show rust-error-handling
ms show rust-error-handling --full
ms show rust-error-handling --meta
ms search
ms search "error handling"
ms search "async" --search-type bm25
ms search "async" --search-type semantic
ms load
Loads skills with progressive disclosure and token budgets.
ms load rust-error-handling --level overview
ms load rust-error-handling --pack 2000
ms suggest
Captures context, computes a fingerprint, and returns suggestions with cooldown suppression.
ms suggest
ms suggest --cwd /path/to/project
ms feedback
Record or list skill feedback signals.
ms feedback add rust-error-handling --positive --comment "helpful"
ms feedback add rust-error-handling --rating 4
ms feedback list --limit 20
ms feedback list --skill rust-error-handling
ms outcome
Mark the latest usage of a skill as success or failure (implicit outcome signal).
ms outcome rust-error-handling --success
ms outcome rust-error-handling --failure
ms experiment
Create and list basic A/B experiment records.
ms experiment create rust-error-handling --variant control --variant concise
ms experiment create rust-error-handling --scope slice --scope-id intro --variant control --variant alt
ms experiment list
ms experiment list --skill rust-error-handling
ms remote
Manage multi-machine sync remotes. Git remotes are cloned into .ms/sync/remotes/<name> and
only fast-forward updates are allowed (non-fast-forward updates fail).
ms remote add origin /path/to/archive --type filesystem
ms remote add origin https://github.com/user/skills.git --type git --branch main --auth token --token-env GIT_TOKEN
ms remote add origin git@github.com:user/skills.git --type git --auth ssh --ssh-key ~/.ssh/id_rsa
# Optional: token username (defaults to x-access-token)
ms remote add origin https://github.com/user/skills.git --type git --auth token --token-env GIT_TOKEN --username git
# Optional: SSH passphrase env var (if key is encrypted)
ms remote add origin git@github.com:user/skills.git --type git --auth ssh --ssh-key ~/.ssh/id_rsa --ssh-passphrase-env SSH_KEY_PASSPHRASE
ms remote set-url origin https://github.com/user/skills.git --branch main --auth token --token-env GIT_TOKEN
ms remote set-url origin https://github.com/user/skills.git --clear-auth --clear-branch
ms remote list
ms remote disable origin
ms sync
Synchronize skills across remotes.
ms sync
ms sync origin --dry-run
ms sync --status
Robot mode status schema (example):
{
"status": "ok",
"machine": {
"id": "workstation-a1b2c3",
"name": "workstation",
"last_syncs": {
"origin": "2026-01-15T06:52:00Z"
}
},
"remotes": [
{
"name": "origin",
"type": "git",
"url": "https://github.com/user/skills.git",
"branch": "main",
"auth": {
"kind": "token",
"token_env": "GIT_TOKEN",
"username": "x-access-token"
},
"enabled": true,
"direction": "bidirectional",
"auto_sync": false,
"exclude_patterns": [],
"include_patterns": []
}
],
"last_full_sync": {
"origin": "2026-01-15T06:52:00Z"
},
"status_counts": {
"Synced": 42,
"Conflict": 1
}
}
ms machine
ms machine info
ms machine rename "dev-laptop"
ms conflicts
ms conflicts list
ms conflicts resolve rust-error-handling --strategy prefer-local --apply
ms shell
Print shell hook snippets for bash/zsh/fish to call ms suggest with rate limiting.
ms shell --shell bash
ms shell --shell zsh
ms shell --shell fish
ms edit
ms edit rust-erro

