open-index/open-npm huggingface dataset:
npm package: @skilld/postcss-drupal-breakpoints
Description: PostCSS plugin to get drupal theme breakpoints in css variables
Author: iberdinsky-skilld
Latest version: 0.0.1

# PostCSS Drupal Breakpoints [![Build Status][ci-img]][ci]

[PostCSS] plugin to get drupal theme breakpoints in css variables.

[PostCSS]: https://github.com/postcss/postcss
[ci-img]:  https://travis-ci.org/iberdinsky-skilld/postcss-drupal-breakpoints.svg
[ci]:      https://travis-ci.org/iberdinsky-skilld/postcss-drupal-breakpoints

## Input

css
```css
@drupal-breakpoint wide_1x {
  .pager {
    display: none;
  }
}
```

THEMENAME.breakpoints.yml
```yml
THEMENAME.mobile:
  label: mobile
  mediaQuery: '(min-width: 0em)'
  weight: 0
  multipliers:
    - 1x
THEMENAME.wide:
  label: wide
  mediaQuery: 'screen and (min-width: 40em)'
  weight: 1
  multipliers:
    - 1x
```

postcss.config.js
```js
module.exports = ctx => ({
  plugins: [
    require('postcss-drupal-breakpoints')({
      importFrom: './THEMENAME.breakpoints.yml',
      themeName: 'THEMENAME'
    }),
  ]
});

```

## Output

```css
@media screen and (min-width: 40em) {
  .pager {
    display: none;
  }
}
```
npm package: @skilldepot/sdk
Description: Official JS/TS SDK for the SkillDepot AI Skills Marketplace
Author: SkillDepot
Latest version: 0.1.0

# SkillDepot TypeScript / Node SDK

Official JavaScript/TypeScript client for the [SkillDepot](https://skilldepot.dev) marketplace.

## Installation

```bash
npm install skilldepot
```

## Usage

```typescript
import { SkillDepot } from "skilldepot";

const client = new SkillDepot({ apiKey: "your_api_key_here" });

async function main() {
  // List skills
  const skills = await client.listSkills({ category: "NLP", limit: 10 });
  for (const skill of skills.data) {
    console.log(`Skill: ${skill.name} — ${skill.rating}★`);
  }

  // Get skill & its markdown content
  const details = await client.getSkill("sentiment-analyzer", true);
  console.log(details.data.content);

  // Iterate over all skills
  for await (const skill of client.iterSkills({ free: true })) {
    console.log("Free skill:", skill.name);
  }
}

main().catch(console.error);
```
npm package: @skilled-apps/audio-toolkit
Description: Cross-platform audio library for React Native, forked from @react-native-community/audio-toolkit
Latest version: 2.0.7

![banner](/banner.png)

[![npm version](https://badge.fury.io/js/%40react-native-community%2Faudio-toolkit.svg)](https://badge.fury.io/js/%40react-native-community%2Faudio-toolkit)

This is a cross-platform (Android and iOS) audio library for React Native.
Both audio playback and recording is supported. In addition to basic
functionality, many useful features are implemented such as seeking,
looping and streaming audio files over the network.

An example how to use this library is included in the [ExampleApp](/ExampleApp)
directory. The demo showcases most of the functionality that is available, with
documentation under [docs](/docs). In the simplest case, playing media is as
easy as:

```js
new Player('filename.mp4').play();
```

and recording media to filename.mp4 similarly
```js
new Recorder(‘filename.mp4’).record();
```

How to get this stuff running?
------------------------------

* For a quick test drive, check out the [demo application](/ExampleApp)
* [Include the library](/docs/SETUP.md) in your project

Documentation
-------------

* Find the API documentation [here](/docs/API.md)
* Examples on playback from various [media sources](/docs/SOURCES.md)
* Notes on [developing the library itself](/docs/DEVELOPING.md)
* Rough [state diagram](/docs/state_diagram.svg) of the [Player](src/Player.js)
* View the [changelog](/CHANGELOG.md)

License
-------

All JavaScript, Android and iOS code licensed under MIT license, see LICENSE
file. Some of the files are from React Native templates and are licensed
accordingly.
npm package: @skilled-apps/react-native-video-with-subtitles
Description: Editting controls and subtitle of awesome-react-native-video-controls and improve its functionality. Forked https://github.com/VictorFlm31/react-native-video-controls
Author: Victor
Latest version: 1.0.1

# react-native-video-controls-subtitle
This package is forked from awesome-react-native-video-controls.
Enhance functionality for react native video Controls available at [react-native-video-controls](https://github.com/react-native-community/react-native-video-controls)
## Features
**SUBTITLE SUPPORT ADDED**
In This package, you can pass a function as 'toggleFullscreen' prop to component to control the functionality of toggle fullscreen button.

You can find other features in [react-native-video-controls] (https://github.com/react-native-community/react-native-video-controls)
and [react-native-video](https://github.com/react-native-community/react-native-video) pages.

## Installation
Run `npm install --save react-native-video @skilled-apps/react-native-video-with-subtitles`

If you are using RN<0.59
Then run `react-native link react-native-video`

##SUBTITLE
In order to use subtitles you should follow the below instructions :
First if your subtitle format is srt you should convert it to JSON(use websites like : http://multiverso.me/srtToJSON/)
Then when you got the array of JSONs, you can pass this array to VideoPlayer as below :
```javascript
<VideoPlayer
   subtitle={this.props.subtitle}
/>
```

##SUBTITLE STYLES
In order to use custom styles :
```javascript
<VideoPlayer
   subtitleContainerStyle={this.props.subtitleContainerStyle}
   subtitleStyle={this.props.subtitleStyle}
/>
```

The subtitle prop expects the JSON to have the following key-value format:
```javascript
[{
   "startTime": "00:00:04,123", //hh:mm:ss,SSS
   "endTime": "00:00:05,001",
   "text": "When you convert your subtitle file, you might need to modify your JSON"
},
{
   "startTime": "00:00:08,008",
   "endTime": "00:00:09,876",
   "text": "Before passing it to the VidePlayer component"
}]
```

## OTHER FEATURES AND USAGE
The `<VideoPlayer>` component can take a number of inputs to customize it as needed. They are outlined below:
The `<VideoPlayer>` component follows the API of the `<Video>` component at [react-native-video](https://github.com/react-native-community/react-native-video) and [react-native-video-controls](https://github.com/react-native-community/react-native-video-controls)

take a number of inputs to customize it as needed. They are outlined below:

```javascript
// At the top where our imports are...
import VideoPlayer from '@skilled-apps/react-native-video-with-subtitles';

// in the component's render() function
<VideoPlayer
    source={{ uri: 'https://vjs.zencdn.net/v/oceans.mp4' }}
    navigator={ this.props.navigator }
    toggleFullscreen={YourCustomizedFunction}
    subtitle={this.props.subtitle}
/>
```
npm package: @skillful/eslint-config
Description: Skillful's ESLint config.
Latest version: 1.3.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @skillful/eslint-config

> Skillful's ESLint config

## Getting Started

```sh
npm install --save-dev @skillful/eslint-config
```

To use the ESLint config, follow [the instructions in the ESLint docs](https://eslint.org/docs/developer-guide/shareable-configs#using-a-shareable-config).
npm package: @skillfulai/agents
Description: Official SDK for Skillful AI Agents
Author: Skillful AI
Latest version: 1.0.2

# Skillful AI Agents SDK

The official SDK for integrating Skillful AI agents into your JavaScript applications.

## Installation

```bash
npm install @skillfulai/agents
```

## Quick Start

```javascript
const { SkillfulClient } = require('@skillfulai/agents');

// Initialize the client
const client = new SkillfulClient({
    apiKey: 'your-api-key'
});

// Example usage
async function example() {
    try {
        // Get available agents
        const agents = await client.getAgents();
        
        // Select an agent
        await client.setAgent('Wojak');
        
        // Send a message and get response
        const response = await client.sendMessage('Hello!');
        console.log(response.text);
    } catch (error) {
        console.error('Error:', error.message);
    }
}

example();
```

## Response Structure

When sending messages, you'll receive a structured response:

```javascript
{
    text: "The agent's response text",
    events: [...],     // Event metadata
    tools: [...],      // Tools used in response
    sources: [...]     // Source references
}
```

## Features

- Easy agent selection and management
- Conversation history tracking
- Real-time AI interactions
- Structured response handling

## Documentation

For full documentation, visit [docs.skillfulai.io](https://docs.gaming.skillfulai.io)

## Support

For support, join our [Discord community](https://discord.gg/WhAYqkXYkg)
npm package: @skillfulai/discord-template
Description: Simple Discord bot template for Skillful AI agents
Author: Skillful AI
Latest version: 1.0.7

# @skillfulai/discord-template

A Discord bot integration for Skillful AI agents with intelligent conversation engagement.

## Quick Start

```bash
npm install @skillfulai/discord-template
```

```javascript
const SkillfulDiscordBot = require('@skillfulai/discord-template');

// Basic usage
const bot = new SkillfulDiscordBot({
    discordToken: 'your_discord_token',
    skillfulApiKey: 'your_skillful_api_key'
});

// Start the bot
bot.start()
    .then(() => console.log('Bot started'))
    .catch(console.error);

// Handle graceful shutdown
process.on('SIGINT', async () => {
    await bot.stop();
    process.exit(0);
});
```

## Features

- 🤖 Easy Discord bot setup
- 💬 Intelligent conversation engagement
- 👥 User mention handling
- 📊 Activity-based response system

## Configuration

```javascript
const bot = new SkillfulDiscordBot({
    // Required
    discordToken: 'your_discord_token',
    skillfulApiKey: 'your_skillful_api_key',

    // Optional
    agentName: 'Wojak',          // Default: 'Wojak'
    debug: false,                // Default: false
    proactive: false,           // Default: false
    proactiveThreshold: 50      // Default: 50
});
```

## Proactive Mode

Enable intelligent conversation engagement:

```javascript
const bot = new SkillfulDiscordBot({
    discordToken: 'your_discord_token',
    skillfulApiKey: 'your_skillful_api_key',
    proactive: true,
    proactiveThreshold: 50  // Engagement threshold (0-100)
});
```

## Prerequisites

1. Discord Bot Token
   - Create at [Discord Developer Portal](https://discord.com/developers/applications)
   - Enable required intents:
     - MESSAGE CONTENT INTENT
     - SERVER MEMBERS INTENT
     - PRESENCE INTENT

2. Skillful AI API Key
   - Reach out [here](https://discord.gg/WhAYqkXYkg)

## Documentation

For detailed documentation, visit:
- [Installation Guide](https://docs.gaming.skillfulai.io)

## Support

- Discord: [Join Our Community](https://discord.gg/WhAYqkXYkg)
npm package: @skillfulai/express-template
Description: Express server template for Skillful AI agents
Author: Skillful AI
Latest version: 1.0.1

# Skillful AI Express Server Template

A ready-to-use Express server template for Skillful AI agents with configurable rate limiting, logging, and endpoints for all core functionalities.

## Quick Start

```bash
# Create your project
mkdir my-skillful-server
cd my-skillful-server
npm init -y

# Install the package
npm install @skillfulai/express-template
```

Create an `index.js` file:
```javascript
const SkillfulServer = require('@skillfulai/express-template');

// Initialize with default options
const server = new SkillfulServer();
server.initialize();
```

Create a `.env` file:
```env
SKILLFUL_API_KEY=your_skillful_api_key
AGENT_NAME=Wojak
PORT=3000
```

## Configuration Options

```javascript
const server = new SkillfulServer({
    // Enable/disable features
    enableRateLimiting: true,
    enableLogging: true,

    // Rate limiting configuration
    rateLimits: {
        global: {
            windowMs: 15 * 60 * 1000, // 15 minutes
            max: 100 // requests per window
        },
        chat: {
            windowMs: 60 * 1000, // 1 minute
            max: 10 // requests per minute
        }
    },

    // Logging options
    logger: {
        requests: true,
        responses: false,
        errors: true,
        format: 'short' // or 'detailed'
    },

    // Server configuration
    port: 3000
});
```

## Available Endpoints

### Agent Management
- `GET /health` - Check server health
- `GET /agent/info` - Get current agent information
- `GET /agent/skills` - Get categorized list of agent skills
- `GET /agents` - List all available agents
- `POST /agent/switch` - Switch to a different agent

### Chat
- `POST /chat` - Send message to agent
- `GET /chat/history` - Get conversation history
- `POST /chat/clear` - Clear conversation history

## Extending the Server

Create a custom server by extending the base class:

```javascript
class CustomServer extends SkillfulServer {
    constructor(options) {
        super(options);
        // Add custom initialization
    }

    setupRoutes() {
        super.setupRoutes();
        // Add custom routes
        this.app.get('/custom', (req, res) => {
            res.json({ message: 'Custom endpoint' });
        });
    }
}

const server = new CustomServer({
    enableRateLimiting: true,
    enableLogging: true
});
```

## Features
- Express server with core Skillful AI integration
- Configurable rate limiting
- Customizable logging
- Easy agent switching
- Conversation management
- Skills categorization
- Built-in error handling
- Extensible architecture

## Requirements
- Node.js 14 or higher
- npm or yarn
- Skillful AI API key
- Environment variables configuration

## Support

For support with Skillful AI:
- Documentation: [docs.skillfulai.io](https://docs.gaming.skillfulai.io)
- Discord: [discord.gg/skillfulai](https://discord.gg/WhAYqkXYkg)
npm package: @skillfulai/telegram-template
Description: Simple Telegram bot template for Skillful AI agents
Author: Skillful AI
Latest version: 1.0.3

# Skillful AI Telegram Bot Template

A ready-to-use template for creating Telegram bots powered by Skillful AI agents. This template provides a simple way to create intelligent, conversational bots with rich features.

## Features

- Full Skillful AI Agent integration
- Rich message formatting
- Conversation memory
- Built-in commands

## Installation

```bash
npm install @skillfulai/telegram-template
```

## Quick Start

1. Create a `.env` file with your credentials:
```env
TELEGRAM_TOKEN=your_telegram_bot_token
SKILLFUL_API_KEY=your_skillful_api_key
AGENT_NAME=Wojak
```

2. Create your bot:
```javascript
const SkillfulTelegramBot = require('@skillfulai/telegram-template');
const bot = new SkillfulTelegramBot();

bot.initialize().then(() => {
    console.log('Bot is running...');
}).catch(error => {
    console.error('Failed to start bot:', error);
});
```

## Available Commands

Your bot comes with several built-in commands:

- `/start` - Welcome message and command overview
- `/info` - Detailed agent information
- `/skills` - List all available capabilities
- `/clear` - Reset conversation history
- `/status` - Check bot's operational status
- `/help` - Display command help

## Getting Started with Telegram

1. Message @BotFather on Telegram
2. Use the `/newbot` command
3. Choose a name and username for your bot
4. Copy the provided token to your `.env` file

## Support

For support with Skillful AI:
- Documentation: [docs.skillfulai.io](https://docs.gaming.skillfulai.io)
- Discord: [discord.gg/skillfulai](https://discord.gg/WhAYqkXYkg)

## Requirements

- Node.js 14 or higher
- npm or yarn
- Telegram Bot Token
- Skillful AI API Key
npm package: @skillhq/concierge
Description: Personal AI concierge for contact lookup, availability checks, and autonomous phone calls
Latest version: 1.18.3

# Concierge

Personal AI concierge for contact lookup, availability checks, and autonomous phone calls.

## Installation

```bash
skill install @skillhq/concierge
```

## Features

- **Contact Extraction**: Find phone, email, WhatsApp, and social media contacts from listings and businesses (Airbnb, Booking.com, VRBO, Expedia)
- **AI Phone Calls**: Place autonomous phone calls with a goal-driven AI agent that handles the conversation until the goal is achieved

## System Dependencies (AI Calls)

AI calls require local binaries in addition to API keys:

- `ffmpeg` (must include MP3 decode support)
- `ngrok` (used when `call` auto-starts infrastructure)

Install examples:

```bash
# macOS
brew install ffmpeg ngrok

# Ubuntu/Debian (including ARM VPS)
sudo apt-get update
sudo apt-get install -y ffmpeg
# install ngrok from ngrok docs, then verify `ngrok version`
```

Verify locally:

```bash
ffmpeg -version
ffmpeg -decoders | rg -i mp3
ngrok version
```

The call preflight now fails fast with a clear error if these dependencies are missing or if ffmpeg cannot decode MP3.

## Quick Start

### Find contacts for a listing

```bash
concierge find-contact "https://www.airbnb.com/rooms/12345"
```

### Place an AI booking call

```bash
concierge call "+1-555-123-4567" \
  --goal "Book a room for March 12-14" \
  --name "John Smith" \
  --email "john@example.com" \
  --customer-phone "+1-555-000-1111"
```

## Configuration

Configuration is stored in `~/.config/concierge/config.json5`.

### For contact lookup (optional)

```bash
concierge config set googlePlacesApiKey "your-key"
```

### For AI phone calls (required)

```bash
concierge config set twilioAccountSid "<sid>"
concierge config set twilioAuthToken "<token>"
concierge config set twilioPhoneNumber "+14155551234"
concierge config set deepgramApiKey "<key>"
concierge config set elevenLabsApiKey "<key>"
concierge config set elevenLabsVoiceId "EXAVITQu4vr4xnSDxMaL"
concierge config set anthropicApiKey "<key>"
```

## Documentation

See [SKILL.md](./SKILL.md) and [CALL-SETUP.md](./CALL-SETUP.md) for full setup and troubleshooting.

## License

MIT
npm package: @skillhq/hubspot
Description: HubSpot CRM CLI for managing contacts, companies, deals, and engagements
Author: Derek Rein
Latest version: 0.3.2

# HubSpot CLI

A fast, focused CLI for HubSpot CRM operations.

## Installation

```bash
npm install -g @cyberdrk/hs
```

Or from source:
```bash
git clone https://github.com/cyberdrk305/hubspot.git
cd hubspot
npm install
npm run build
npm link
```

## Quick Start

1. Create a Private App in HubSpot:
   - Go to Settings > Integrations > Private Apps (under "Legacy Apps")
   - Create app with required scopes (see below)
   - Copy the access token (starts with `pat-`)

2. Configure the CLI:
   ```bash
   hs auth
   ```

3. Verify connection:
   ```bash
   hs check
   ```

## Required Scopes

When creating your Private App, grant these scopes:

**CRM:**
- `crm.objects.contacts.read` / `crm.objects.contacts.write`
- `crm.objects.companies.read` / `crm.objects.companies.write`
- `crm.objects.deals.read` / `crm.objects.deals.write`
- `crm.objects.owners.read`
- `crm.schemas.contacts.read` (for custom properties)
- `crm.schemas.companies.read`
- `crm.schemas.deals.read`

**Tickets:**
- `tickets` (read/write)

**Settings:**
- `account-info.security.read` (for portal info)

## Usage

### Contacts
```bash
hs contacts                              # List contacts
hs contact <id>                          # Get contact
hs contact-search "query"                # Search
hs contact-create --email user@example.com --firstname John
hs contact-update <id> --lastname Smith
```

### Companies
```bash
hs companies                             # List companies
hs company <id>                          # Get company
hs company-search "query"                # Search
```

### Deals
```bash
hs deals                                 # List deals
hs deal <id>                             # Get deal
hs deal-search "query"                   # Search
hs pipelines                             # List pipelines
```

### Tickets
```bash
hs tickets                               # List tickets
hs ticket <id>                           # Get ticket
hs ticket-search "query"                 # Search
```

### Notes & Tasks
```bash
hs notes <objectType> <id>               # List notes
hs note-create <objectType> <id> "body"  # Create note
hs tasks                                 # List tasks
hs task <id>                             # Get task
hs task-create --subject "Task" --due "2024-12-31"
```

### Associations
```bash
hs associations <from> <id> <to>         # List associations
hs associate <from> <id1> <to> <id2>     # Create association
```

## Output Formats

- Default: Colored terminal output
- `--json`: JSON for scripting
- `--markdown`: Markdown tables

## Configuration

Config stored at `~/.config/hs/config.json5`:
```json5
{
  accessToken: "pat-xxx",
  portalId: "12345678",
  defaultFormat: "plain",
  defaultLimit: 20
}
```

## License

MIT
npm package: @skillhq/linkedin
Description: LinkedIn CLI for reading feed, profiles, connections, search results, and messages
Author: Derek Rein
Latest version: 0.1.0

# LinkedIn CLI

A CLI tool for reading LinkedIn feed, profiles, connections, search results, and messages.

## Installation

```bash
npm install -g @skillhq/linkedin
```

Or clone and build from source:

```bash
git clone https://github.com/skillhq/linkedin.git
cd linkedin
npm install
npm run build
npm link
```

## Authentication

The CLI uses cookie-based authentication with LinkedIn's Voyager API. You'll need your `li_at` and `JSESSIONID` cookies from an active LinkedIn session.

### Automatic Cookie Extraction

The CLI can automatically extract cookies from your browser using [@steipete/sweet-cookie](https://github.com/nicola/sweet-cookie):

```bash
linkedin check                    # Auto-extract from default browser
linkedin check --cookie-source chrome
linkedin check --chrome-profile "Profile 1"
```

### Manual Cookie Setup

1. Open Chrome DevTools (F12) on linkedin.com
2. Go to: Application → Cookies → linkedin.com
3. Copy `li_at` and `JSESSIONID` values
4. Run: `linkedin setup --li-at "VALUE" --jsessionid "VALUE"`

## Commands

### Authentication

```bash
linkedin check                    # Verify credentials are valid
linkedin whoami                   # Show logged-in user info
linkedin setup                    # Show setup instructions
```

### Reading Data

```bash
linkedin feed [-n 20]             # Get home feed posts
linkedin profile <username>       # View a profile by username or URL
linkedin connections [-n 50]      # List your connections
linkedin search "query" [-t type] # Search people, jobs, companies, posts
linkedin inbox [-n 20]            # List message conversations
linkedin read <conversation-id>   # Read messages from a conversation
```

### Options

```bash
--json                           # Output in JSON format
--li-at <token>                  # Provide li_at cookie directly
--jsessionid <token>             # Provide JSESSIONID cookie directly
--cookie-source <browser>        # Browser to extract cookies from
--chrome-profile <name>          # Chrome profile name
--timeout <ms>                   # Request timeout in milliseconds
```

## Browser Automation Alternative

LinkedIn aggressively invalidates API sessions. For more reliable access, use browser automation with the Claude chrome extension. See [SKILL.md](./SKILL.md) for details.

## Development

```bash
npm run build    # Build TypeScript
npm run dev      # Watch mode
npm run clean    # Clean dist folder
```

## License

MIT
npm package: @skillhq/travel-concierge
Description: Find contact details for accommodation listings (Airbnb, Booking.com, VRBO, Expedia)
Latest version: 1.4.0

# Travel Concierge

Find accommodation contact details and place AI-powered booking calls.

## Installation

```bash
skill install @skillhq/travel-concierge
```

## Features

- **Contact Extraction**: Find phone, email, WhatsApp, and social media contacts from Airbnb, Booking.com, VRBO, and Expedia listings
- **AI Phone Calls**: Place autonomous phone calls with a goal-driven AI agent that handles the conversation until the goal is achieved

## System Dependencies (AI Calls)

AI calls require local binaries in addition to API keys:

- `ffmpeg` (must include MP3 decode support)
- `ngrok` (used when `call` auto-starts infrastructure)

Install examples:

```bash
# macOS
brew install ffmpeg ngrok

# Ubuntu/Debian (including ARM VPS)
sudo apt-get update
sudo apt-get install -y ffmpeg
# install ngrok from ngrok docs, then verify `ngrok version`
```

Verify locally:

```bash
ffmpeg -version
ffmpeg -decoders | rg -i mp3
ngrok version
```

The call preflight now fails fast with a clear error if these dependencies are missing or if ffmpeg cannot decode MP3.

## Quick Start

### Find contacts for a listing

```bash
travel-concierge find-contact "https://www.airbnb.com/rooms/12345"
```

### Place an AI booking call

```bash
travel-concierge call "+1-555-123-4567" \
  --goal "Book a room for March 12-14" \
  --name "John Smith" \
  --email "john@example.com" \
  --customer-phone "+1-555-000-1111"
```

## Configuration

Configuration is stored in `~/.config/travel-concierge/config.json5`.

### For contact lookup (optional)

```bash
travel-concierge config set googlePlacesApiKey "your-key"
```

### For AI phone calls (required)

```bash
travel-concierge config set twilioAccountSid "<sid>"
travel-concierge config set twilioAuthToken "<token>"
travel-concierge config set twilioPhoneNumber "+14155551234"
travel-concierge config set deepgramApiKey "<key>"
travel-concierge config set elevenLabsApiKey "<key>"
travel-concierge config set elevenLabsVoiceId "EXAVITQu4vr4xnSDxMaL"
travel-concierge config set anthropicApiKey "<key>"
```

## Documentation

See [SKILL.md](./SKILL.md) and [CALL-SETUP.md](./CALL-SETUP.md) for full setup and troubleshooting.

## License

MIT
npm package: @skilljack/mcp
Description: MCP server that discovers and serves Agent Skills. I know kung fu.
Author: Ola Hungerford
Latest version: 0.9.0

# Skilljack MCP

An MCP server that jacks [Agent Skills](https://agentskills.io) directly into your LLM's brain.

## Installation

```bash
npm install @skilljack/mcp
```

Or run directly with npx:

```bash
npx @skilljack/mcp /path/to/skills
```

### From Source

```bash
git clone https://github.com/olaservo/skilljack-mcp.git
cd skilljack-mcp
npm install
npm run build
```

## Usage

```bash
# Single directory
skilljack-mcp /path/to/skills

# Multiple directories
skilljack-mcp /path/to/skills /path/to/more/skills

# Using environment variable
SKILLS_DIR=/path/to/skills skilljack-mcp

# Static mode (no file watching)
skilljack-mcp --static /path/to/skills
```

## Configuration and Skills Display UI

This server comes along with a [MCP Apps](https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/)-based UI for clients that support it.  Instead of fiddling with config files or environment variables, you can just configure your skills locations and skill visiblity directly in your chat window.

(Screenshots below are from Claude Desktop in dark mode.)

![Skills Configuration UI](docs/images/skills-config-ui.png)

![Skill Display UI](docs/images/skill-display-ui.png)

## Documentation

For complete documentation, just ask your assistant:

> "how do I use skilljack?" or "how does skilljack work behind the scenes?"

This loads the [full reference](https://github.com/olaservo/skilljack-mcp/blob/main/skills/skilljack-docs/SKILL.md) including tools, prompts, resources, configuration options, and architecture details.

## Related

- [Agent Skills Specification](https://agentskills.io)
- [Skills Over MCP Interest Group repository](https://github.com/modelcontextprotocol/experimental-ext-skills)
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
- [Example MCP Clients](https://modelcontextprotocol.io/clients)
npm package: @skillkit-llm/adapters
Description: Detect tech stacks and generate project-specific skills from templates
Latest version: 0.6.0

# @skillkit/adapters

Detect tech stacks and generate project-specific skills from templates. Scans package.json, pyproject.toml, Cargo.toml, go.mod and detects 15+ frameworks, styling, testing, and build tools.

## Usage

```ts
import { detectStack, adaptTemplate } from '@skillkit/adapters';

const stack = await detectStack('.');
console.log(stack.framework, stack.testing, stack.styling);
```

Or via CLI: `npx @skillkit/cli adapt component`

Part of the [skillkit](https://github.com/sakhilchawla/skillkit) monorepo.
npm package: @skillkit-llm/benchmarks
Description: Benchmark scoring, comparison, and regression tracking for Agent Skills
Latest version: 0.6.0

# @skillkit/benchmarks

Precision/recall/F1 scoring for Agent Skills. Score skill output against ground truth, A/B compare skill versions, track regressions. Supports mock and real mode with keyword + regex matching.

## Usage

```ts
import { runBenchmark } from '@skillkit/benchmarks';

const result = await runBenchmark(config, { mock: false, invoker: { provider: 'claude-code' } });
console.log(result.scores.f1);
```

Or via CLI: `npx @skillkit/cli bench config.yaml --real --provider claude-code`

Part of the [skillkit](https://github.com/sakhilchawla/skillkit) monorepo.
npm package: @skillkit-llm/cli
Description: CLI for building, testing, and linting Agent Skills
Latest version: 0.6.0

# @skillkit/cli

CLI for building, testing, linting, and benchmarking Agent Skills across 27+ AI coding tools.

## Install

```bash
npm install -g @skillkit/cli
```

## Usage

```bash
skillkit lint .                                    # Lint all SKILL.md files
skillkit lint . --preset research                  # Lint with research preset
skillkit test .                                    # Run tests (mock mode)
skillkit test . --real --provider claude-code       # Run tests (real AI execution)
skillkit bench config.yaml                         # Benchmark (mock mode)
skillkit bench config.yaml --real --provider claude-code  # Benchmark (real AI)
skillkit init my-skill                             # Scaffold a new skill
skillkit adapt component                           # Generate project-specific skill
```

## Documentation

See the full [skillkit documentation](https://github.com/sakhilchawla/skillkit).
npm package: @skillkit-llm/core
Description: Core parser and types for Agent Skills
Latest version: 0.6.0

# @skillkit/core

Core parser and types for [Agent Skills](https://github.com/sakhilchawla/skillkit). Parses SKILL.md files (YAML frontmatter + markdown body) into structured `SkillDefinition` objects.

## Usage

```ts
import { parseSkill, parseSkillFile } from '@skillkit/core';

const result = await parseSkillFile('./SKILL.md');
console.log(result.skill.frontmatter.name);
console.log(result.skill.body);
console.log(result.metadata.estimatedTokens);
```

Part of the [skillkit](https://github.com/sakhilchawla/skillkit) monorepo.
npm package: @skillkit-llm/linter
Description: Lint and validate Agent Skills against the spec and best practices
Latest version: 0.6.0

# @skillkit/linter

Lint and validate Agent Skills against the spec and best practices. 20 rules across 5 categories, 4 presets (strict, recommended, minimal, research).

## Usage

```ts
import { LintEngine } from '@skillkit/linter';

const engine = new LintEngine({ preset: 'recommended' });
const report = await engine.lintFile('./SKILL.md');
console.log(report.errorCount, report.warnCount);
```

Or via CLI: `npx @skillkit/cli lint .`

Part of the [skillkit](https://github.com/sakhilchawla/skillkit) monorepo.
npm package: @skillkit-llm/test-harness
Description: Test harness for Agent Skills — YAML-driven scenario testing
Latest version: 0.6.0

# @skillkit/test-harness

YAML-driven test framework for Agent Skills. Mock mode for fast iteration, real mode for actual AI provider invocation. 8 assertion types, fixture system, multi-provider support.

## Usage

```ts
import { runTests } from '@skillkit/test-harness';

const report = await runTests('./review.test.yaml');
console.log(report.passed, report.passCount, report.failCount);
```

Or via CLI: `npx @skillkit/cli test . --real --provider claude-code`

Part of the [skillkit](https://github.com/sakhilchawla/skillkit) monorepo.