Skip to main content

OmniSkill

DeepWiki Context7 Python 3.12+ License: Apache-2.0 PyPI

omni-skill

A super skill generator that turns CSV and Markdown datasets into ready-to-use Agentic-RAG skills with a single command.

Overview

OmniSkill analyzes your dataset directory and generates:

  • SKILL.md — Skill specification document that tells LLMs how to use the knowledge base
  • search.py — Standalone Python script for BM25-based retrieval against the dataset
  • datasets/ — Symlinked source data for the generated skill

It also provides a CLI for manually creating skill scaffolding and searching knowledge bases.

Installation

uv add omniskill

Using pip

pip install omniskill

From Source

git clone https://github.com/longcipher/omni-skill.git
cd omni-skill
uv sync --all-groups

Quick Start

Generate a Skill from a Dataset

Point OmniSkill at any directory containing CSV and/or Markdown files:

omniskill generate examples/backend-api-master

This analyzes the dataset files and produces a complete skill under skills/<dataset-name>/:

skills/backend-api-master/
  SKILL.md      # Skill specification for LLMs
  search.py     # Standalone search script
  datasets/     # Symlink to source data

Use the Generated Skill

The generated search.py can be run directly:

python skills/backend-api-master/search.py "API design best practices"

Or use the CLI:

omniskill search "API design best practices" --skill-dir skills/backend-api-master

Custom Options

# Custom skill name and output directory
omniskill generate my-datasets/ --name my-skill --output out/my-skill/

# Verbose mode shows dataset analysis details
omniskill generate my-datasets/ --verbose

Architecture

graph TD
    subgraph "1. Dataset Input"
        CSV[CSV Files] --> GEN[omniskill generate]
        MD[Markdown Files] --> GEN
    end

    subgraph "2. Generator"
        GEN --> ANALYZE[Analyze Dataset]
        ANALYZE --> GEN_SCRIPT[Generate search.py]
        ANALYZE --> GEN_MD[Generate SKILL.md]
        ANALYZE --> LINK[Symlink datasets/]
    end

    subgraph "3. Generated Skill"
        GEN_SCRIPT --> SEARCH_PY[search.py]
        GEN_MD --> SKILL_MD[SKILL.md]
        LINK --> DATASETS[datasets/]
    end

    subgraph "4. Runtime"
        SEARCH_PY --> ENGINE[SearchEngine]
        ENGINE --> INDEXER[CSV / MD Indexer]
        ENGINE --> BM25[BM25 Searcher]
        BM25 --> ASM[PromptAssembler]
        ASM --> |XML / Markdown / llms.txt| OUTPUT[Formatted Context]
    end

    SKILL_MD -. "instructs LLM" .-> SEARCH_PY

CLI Reference

generate — Generate a Skill from Datasets

omniskill generate <dataset-dir> [options]

Arguments:

  • dataset-dir — Path to a directory containing CSV and/or Markdown files

Options:

  • --name, -n — Skill name (defaults to the dataset directory name)
  • --output, -o — Output directory (defaults to skills/<skill-name>/)
  • --verbose, -v — Show dataset analysis details

Example:

omniskill generate data/api-specs/ --name api-assistant --output skills/api-assistant/

create — Create Skill Scaffolding

Create an empty skill directory with template files:

omniskill create <skill-name> [--force]

Options:

  • --force, -f — Overwrite existing skill directory

search — Search a Knowledge Base

omniskill search <query> --skill-dir <path> [options]

Options:

  • --skill-dir, -d — Path to the skill directory (required)
  • --format, -f — Output format: xml, markdown (default: xml)
  • --limit, -l — Maximum number of results (default: 10)
  • --type, -t — Filter by document type: csv, markdown
  • --tag — Filter by tag (AND logic, repeatable)
  • --metadata — Include BM25 scores in output
  • --verbose, -v — Enable verbose output

Python API

Generate a Skill Programmatically

from omniskill.core.generator import generate_skill

analysis = generate_skill(
    dataset_dir="data/my-datasets",
    skill_name="my-skill",
    output_dir="skills/my-skill",
)

print(f"Generated {analysis.skill_name} with {analysis.total_documents} documents")

SearchEngine

Index and search directories of CSV/Markdown files:

from omniskill.core.engine import SearchEngine
from omniskill.core.assembler import OutputFormat, PromptAssembler

engine = SearchEngine()
engine.index_directory("skills/my-skill/datasets")

results = engine.search("API design", limit=10)

assembler = PromptAssembler()
print(assembler.assemble(results, output_format=OutputFormat.XML))

Dataset Analysis

Analyze a dataset directory without generating files:

from omniskill.core.generator import analyze_dataset

analysis = analyze_dataset("data/my-datasets")
print(f"CSV files: {len(analysis.csv_files)}")
print(f"Markdown files: {len(analysis.markdown_files)}")
print(f"Total documents: ~{analysis.total_documents}")

Output Formats

OmniSkill supports three output formats for assembled search results:

Format CLI Flag Description
XML --format xml Structured <context_injection> with <rules> and <reference> sections
Markdown --format markdown Human-readable sections with source attribution
llms.txt (in generated scripts) Follows the llms.txt spec for LLM consumption

Contributing

Development Setup

git clone https://github.com/longcipher/omni-skill.git
cd omni-skill
uv sync --all-groups

Common Commands

just format      # Format code
just lint        # Run linter
just test        # Run unit tests
just bdd         # Run BDD tests
just test-all    # Run all tests
just build       # Build package
just typecheck   # Run type checker

Adding New Features

  1. Write a failing Gherkin scenario in features/*.feature
  2. Write a failing pytest test for the inner domain logic
  3. Implement the feature
  4. Re-run just test and just bdd to verify

License

Apache-2.0

Metadata

Release files for omniskill 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for omniskill 0.2.0
File Size Uploaded
omniskill-0.2.0.tar.gz 18.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for omniskill 0.2.0
File Interpreter ABI Platform
omniskill-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 43.4 kB

Release files / omniskill-0.2.0.tar.gz

Download URL omniskill-0.2.0.tar.gz
Size 18.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a72de38afaa392e7e26ed68dcf19c4863586d65321da514285d2fb611961fae0
BLAKE2b-256 checksum
How to use checksums
2f3c7a9f13f7450ed97c19aaa01bac0b905cf13c6663978090c0d5c66b141480
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / omniskill-0.2.0-py3-none-any.whl

Download URL omniskill-0.2.0-py3-none-any.whl
Size 25.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca337297d64cff70eeb23082e047b34eb0650ce5549cd2da6edc4bc58b45e73a
BLAKE2b-256 checksum
How to use checksums
ca86e4231464da2515a5e026907ab437a80b5370d2fe2a93bd72c4fb4afdd717
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page