open-index/open-npm huggingface dataset:
npm package: @senso-ai/shipables
Description: CLI for installing, managing, and publishing AI agent skills from the Shipables registry
Latest version: 0.1.2

# shipables

CLI for installing, managing, and publishing AI agent skills from the [Shipables](https://shipables.dev) registry.

Shipables is an npm-style package manager for AI agent skills that follow the [Agent Skills](https://agentskills.io) open standard. It works with Claude Code, Cursor, Codex, Copilot, Gemini, and Cline.

## Install

```bash
npm install -g @senso-ai/shipables
```

## Quick Start

```bash
# Authenticate with GitHub
shipables login

# Search for skills
shipables search "code review"

# Install a skill
shipables install @org/my-skill

# List installed skills
shipables list
```

## Commands

| Command | Description |
|---------|-------------|
| `install <skill>` | Install a skill from the registry |
| `uninstall <skill>` | Remove a skill and its configuration |
| `search <query>` | Search the registry for skills |
| `info <skill>` | Show detailed information about a skill |
| `list` | List installed skills |
| `update [skill]` | Update installed skills to latest version |
| `publish` | Publish the skill in the current directory |
| `unpublish <skill@version>` | Yank a published version (within 72 hours) |
| `init` | Scaffold a new skill in the current directory |
| `login` | Authenticate with the Shipables registry via GitHub |
| `logout` | Remove stored credentials |
| `doctor` | Check health of installed skills and agent configurations |
| `config` | Manage CLI configuration (`set`, `get`, `list`) |
| `stats <skill>` | Show download statistics for a skill |
| `profile [username]` | Show user profile and published skills |

## Supported Agents

- [Claude Code](https://claude.ai)
- [Cursor](https://cursor.sh)
- [Codex](https://openai.com/codex)
- [Copilot](https://github.com/features/copilot)
- [Gemini](https://gemini.google.com)
- [Cline](https://cline.bot)

## License

MIT
npm package: @sensoq/prettier
Description: Shared Prettier configuration for Sensoq monorepo projects.
Author: Sensoq Team
Latest version: 0.0.21

<div align="center">
   <img src="https://img.shields.io/badge/Prettier-ff69b4?logo=prettier&logoColor=white&style=for-the-badge" alt="Prettier Badge" />
   <h1>@sensoq/prettier</h1>
   <p><strong>Elegant, innovative, and unified Prettier configuration for Sensoq monorepo projects.</strong></p>
</div>

---

## ✨ Features

- 🎨 Consistent code style for every project
- 🧩 Plugin-powered: supports JS, TS, JSON, XML, shell, JSDoc, and more
- 🔄 Automated sorting for imports, JSON keys, and package.json fields
- 🚀 Easy integration and customization

---

## 🚀 Quick Start

```sh
npm install --save-dev @sensoq/prettier prettier
```

Add to your config:

```js
// .prettierrc.js or prettier.config.js
module.exports = require("@sensoq/prettier");
```

Format your code:

```sh
npx prettier --write .
```

---

## 🧩 Plugins Included

| Plugin                           | Purpose                           |
| -------------------------------- | --------------------------------- |
| prettier-plugin-json-sort        | Sorts JSON keys                   |
| prettier-plugin-organize-imports | Organizes and sorts JS/TS imports |
| prettier-plugin-packagejson      | Sorts package.json fields         |
| @prettier/plugin-xml             | Formats XML and HTML              |
| prettier-plugin-jsdoc            | Formats JSDoc comments            |

---

## 🛠️ Customization

Extend or override any settings in your own Prettier config file for project-specific needs.

---

## 📄 License

MIT
npm package: @sensoreverywhere/sew-api-gateway
Description: simple api gateway library
Author: Juanjo Franco, Francesco Rivola
Latest version: 0.0.12
Deprecated: moved to @tribeca/api-gateway

# sew-api-gateway
Api Gateway library package

[ ![Npm Version](https://badge.fury.io/js/%40sensoreverywhere%2Fsew-api-gateway.svg)](https://www.npmjs.com/package/@sensoreverywhere/sew-api-gateway)
[ ![Codeship Status for SensorEveryWhere/sew-api-gateway](https://app.codeship.com/projects/9753ffc0-e720-0136-de2b-368d39e2d392/status?branch=master)](https://app.codeship.com/projects/319504)
[ ![CodeFactor](https://www.codefactor.io/repository/github/sensoreverywhere/sew-api-gateway/badge)](https://www.codefactor.io/repository/github/sensoreverywhere/sew-api-gateway)
[![codecov](https://codecov.io/gh/SensorEveryWhere/sew-api-gateway/branch/master/graph/badge.svg)](https://codecov.io/gh/SensorEveryWhere/sew-api-gateway) [![Greenkeeper badge](https://badges.greenkeeper.io/SensorEveryWhere/sew-api-gateway.svg)](https://greenkeeper.io/)
npm package: @sensoreverywhere/sew-parser
Description: Javascript parser for SEW Protocol
Author: juanjofp
Latest version: 0.0.7

# SewParser

This module can decode messages created with arduino-sewparser and create a Buffer from a SEW json object in order to send it to a device with arduino-sewparser.

## Decode Sample

```js
import { createSewParser } from '@sensoreverywhere/sew-parser';

const parser = createSewParser(data => {
    console.log('SewData>', data.sensorId, data.type, data.payload);
});

socket.on('data', parser);
```

```js
import { createSewParser } from '@sensoreverywhere/sew-parser';

const parser = createSewParser();

socket.on('data', (data: Buffer) => {
    const parsedFrames = parser(data);
    parsedFrames.map(frame => console.log('SewData>', frame.sensorId, frame.type, frame.payload);)
});
```

```js
import { decode } from '@sensoreverywhere/sew-parser';

socket.on('data', (error: Error, buffer: Buffer) => {
    const data = decode(buffer);
    console.log('SewData>', data.sensorId, data.type, data.payload);
});
```

## Encode Sample

```js
import { createSewFrames } from '@sensoreverywhere/sew-parser';

export const temperatureBuffer: Buffer = createSewFrames([
    {
        sensorId: 'sensorId1',
        type: 'TEMPERATURE',
        payload: 12
    },
    {
        sensorId: 'sensorId2',
        type: 'TEMPERATURE',
        payload: 18
    }
]);
```

```js
import { createSewFrames, DCMotor } from '@sensoreverywhere/sew-parser';

export const createDCMotor = (
    motorId: string,
    enabled: boolean = false,
    reverse: boolean = false,
    power: number = 0
): DCMotor => ({
    sensorId: motorId,
    type: 'DCMOTOR',
    payload: { enabled, reverse, power }
});

export const stopBuffer: Buffer = createSewFrames([
    createDCMotor('MotorLeftId'),
    createDCMotor('MotorRightId')
]);
```

```js
import { encode } from '@sensoreverywhere/sew-parser';

export const temperatureBuffer: Buffer = encode({
    sensorId: 'sensorId',
    type: 'TEMPERATURE',
    payload: 12
});
```

```js
import { encode } from '@sensoreverywhere/sew-parser';

export const gpsBuffer: Buffer = encode({
    sensorId: 'sensorId',
    type: 'GPS',
    payload: { latitude: 37.123, longitude: -1.567, altitude: 110 }
});
```
npm package: @sensorfactdev/draconarius
Description: Manage (feature)flags like a Roman soldier"
Author: Ramon Gebben
Latest version: 1.1.3

# Draconarius
[![Build Status](https://travis-ci.org/Sensorfactdev/draconarius.svg?branch=master)](https://travis-ci.org/Sensorfactdev/draconarius)
[![Coverage Status](https://coveralls.io/repos/github/Sensorfactdev/draconarius/badge.svg?branch=master)](https://coveralls.io/github/Sensorfactdev/draconarius?branch=master)

Manage (feature)flags like a Roman soldier

<img src="https://i.imgur.com/zbPPBek.png" />

## Install

```bash
yarn add @sensorfactdev/draconarius
```

## Basic usage

```javascript
const { Draconarius } = require('@sensorfactdev/draconarius');

const flags = {
  foo: true,
};

const draconarius = new Draconarius(flags);

const goodOldFn = () => console.log('old');
const newAmazingFn = () => console.log('new');

const operation = draconarius.isEnabled('foo')
  ? newAmazingFn
  : goodOldFn;

operation(); // => new
```

### Flags as functions

```javascript
const { pathOr } = require('ramda');
const { Draconarius } = require('@sensorfactdev/draconarius');

const flags = {
  hasOpenPayments: user => pathOr(false, ['metaData', 'hasOpenPayments'], user),
};

const draconarius = new Draconarius(flags);

const user = {
  metaData: { hasOpenPayments: false },
};

const navigation = draconarius.isEnabled('hasOpenPayments', user)
  ? browserHistory.replace('/new-payment/832763877832');
  : browserHistory.replace('/open-payment/98766789023')
```

### Updating flags

```javascript
const { Draconarius } = require('@sensorfactdev/draconarius');

const flags = {
  foo: true,
  bar: false
};

const draconarius = new Draconarius(flags);

// Update a signle flag
draconarius.updateFlag('foo', false);

// Update multiple flags and add one
draconarius.updateFlag({ foo: true, bar: true, fizz: f => !f });
```

### Getting all flags

```javascript
const { Draconarius } = require('@sensorfactdev/draconarius');
const { equals } = require('ramda');

const flags = { foo: true, bar: false };
const draconarius = new Draconarius(flags);

console.log(equals(draconarius.getAllFlags(), flags)) // true;
```

## Other resources

- [API Reference](API.md)
- [LICENSE](LICENSE)
- [Sensorfact](https://sensorfact.nl)
npm package: @sensorfactdev/ellipsisify
Description: Add ellipses to strings in JavaScript
Author: Ramon Gebben
Latest version: 1.0.0


<p style="text-align: center">
  <img src="https://i.imgur.com/KPPHVOL.png" alt="logo" />
</p>

# ellipsisify

[![npm version](https://badge.fury.io/js/%40sensorfactdev%2Fellipsisify.svg)](https://badge.fury.io/js/%40sensorfactdev%2Fellipsisify)
[![Build Status](https://travis-ci.org/Sensorfactdev/ellipsisify.svg?branch=master)](https://travis-ci.org/Sensorfactdev/ellipsisify)
[![Coverage Status](https://coveralls.io/repos/github/Sensorfactdev/ellipsisify/badge.svg?branch=master)](https://coveralls.io/github/Sensorfactdev/ellipsisify?branch=master)


Add ellipses to strings in JavaScript

> An ellipsis (plural ellipses; from the Ancient Greek: ἔλλειψις, élleipsis, 'omission' or 'falling short') is a series of dots (typically three, such as "…") that usually indicates an intentional omission of a word, sentence, or whole section from a text without altering its original meaning

## Usage

**ellipsis at the end**

Cutting of strings on provided length and adding ellipsis.

```javascript
const ellipsisify = require('@sensorfactdev/ellipsisify');
const ellipsisified = ellipsisify('short string', 10);
// => 'short stri...'

const ellipsisifiedWithCustomChars = ellipsisify('short string', 10, null, '…');
// => 'short stri…'
```

**ellipsis in a string**

Cutting of strings on provided length.

```javascript
const ellipsisify = require('@sensorfactdev/ellipsisify');
const ellipsisified = ellipsisify('longer string with ending', 10, 5)
// => 'longer str...nding'
```

## Other resources

- [API Reference](API.md)
- [LICENSE](LICENSE)
- [Sensorfact](https://sensorfact.nl)
npm package: @sensorfactdev/labelify
Description: A service for writing labels
Author: Ramon Gebben
Latest version: 1.3.0

# Labelify
This package can be used to print labels for bridges.

The labels are printed onto DYMO stickers of type 11354.

## Prerequisites
- node (> 8.0)
- npm

## Installation
### Install labelify
To install labelify, run the following command:
```
npm install -g @sensorfactdev/labelify
```
If you do not want to install it globally (default with the `-g` option), point to a home folder by
```
npm set prefix ~/.node_modules
```
install with the above command, then add it to `$PATH` in `.bashrc` if you want: `PATH=$PATH:~/.node_modules/bin`.

Test if labelify was installed properly:
```
labelify -V
```
### Install the DYMO printer
**MacOS**
- Connect the printer to your device.
- Add the printer in "Printers & Scanners". *<u>NOTE</u>: User experience is best if you set the name of the printer to **dymo** when adding the printer*
- Select the correct driver (DYMO Labelwriter 450). If this is not available, install the [DYMO Label software](http://www.dymo.com/nl-NL/labelwriter-450-label-printer).

**Fedora**
- Install drivers using ```sudo dnf install dymo-cups-drivers```
- Connect the printer to your device.
- Add the printer in "Printers". *<u>NOTE</u>: User experience is best if you set the name of the printer to **dymo** when adding the printer*
- After selecting the dymo printer, search for available drivers.

## Usage
### Verify printer status
```
verify-printer [printerName]
```
#### Arguments
| Name            | Required | Description                                                   | Format           | Default value |
|-----------------|----------|---------------------------------------------------------------|------------------|---------------|
| printerName     | no       | Printer installation name. Can be found in Printers&Scanners. | string           | dymo          |

#### Examples
Example if printer name is dymo:
```
verify-printer
```
Example if printer name is my-printer:
```
verify-printer my-printer
```
### Print a bridge label
```
print <bridgeId> [firmwareVersion] -p [printerName]
```
#### Arguments
| Name            | Required | Description                                                   | Format           | Default value |
|-----------------|----------|---------------------------------------------------------------|------------------|---------------|
| bridgeId        | yes      | Id for the bridge.                                            | hexadecimal      |               |
| firmwareVersion | no       | Bridge firmware version. Don't use a v or V prefix.           | semantic version |               |
| printerName     | no       | Printer installation name. Can be found in Printers&Scanners. | string           | dymo          |

#### Examples
Example for a label without version number on printer named dymo:
```
labelify print 8202
```
Example for a label with version number on printer named my-printer:
```
labelify print 8202 1.0.0 -p my-printer
```
npm package: @sensorfactdev/mock-node-nats
Description: A mock NATS client for Node.js 
Author: Alexandre Borrego
Latest version: 0.3.3

# `mock-node-nats`

This is a small mocking library aimed at facilitating tests of our NATS-connected services.

It exposes a `NATS` class based on the API provided by [`node-nats`](https://github.com/nats-io/node-nats). It maintains an in-memory "bus" shared accross the class' instances.

**NB**: This is very much a work in progress that fits our particular current needs. Additional development is needed to mock the `node-nats` API more faithfully, e.g. supporting options, completing the signatures of existing methods, etc.


## Installation

```
npm install @sensorfactdev/mock-node-nats
```

## Usage

```js
const NATS = require(@sensorfactdev/mock-node-nats);
const nats = NATS.connect();

// Simple Publisher
nats.publish('subject', 'message!');

// Simple Subscriber
nats.subscribe('subject', msg => {
  console.log(`Received a message: ${msg}`);
});

// Unsubscribing
const sid = nats.subscribe('subject', msg => {});
nats.unsubscribe(sid);

// Request
const sid = nats.request('request', res => {
  console.log(`Received a message: ${res}`););
});

// Access the list of subs (useful for testing)
const subs = nats.subs;

// Close connection
nats.close();

```
npm package: @sensorfactdev/nucleus
Description: Component library
Author: Ramon Gebben
Latest version: 8.0.3


# Installed Storybook Addons

- [Info](https://github.com/storybooks/storybook/tree/master/addons/info)
- [Actions](https://github.com/storybooks/storybook/tree/master/addons/actions)
- [Links](https://github.com/storybooks/storybook/tree/master/addons/links)
- [Centered](https://github.com/storybooks/storybook/tree/master/addons/centered)
- [Background](https://github.com/storybooks/storybook/tree/master/addons/backgrounds)
- [Jest](https://github.com/storybooks/storybook/tree/master/addons/jest)
- [Viewports](https://github.com/storybooks/storybook/tree/master/addons/viewport)


## Publish instructions

Increment the version of the package

```
npm version <version>
```

Build the source files first
```
npm run build
# or

yarn build
```
Change directory into dist folder
```
cd dist
```

Publish
```
npm publish
```
npm package: @sensorfactdev/qr-code-scanner
Description: Scan QR codes using the rear camera of a phone inside React
Author: Ramon Gebben
Latest version: 1.0.10

# QR Code Scanner

[![Build Status](https://travis-ci.org/Sensorfactdev/qr-code-scanner.svg?branch=master)](https://travis-ci.org/Sensorfactdev/qr-code-scanner)
[![Known Vulnerabilities](https://snyk.io/test/npm/@sensorfactdev/qr-code-scanner/badge.svg)](https://snyk.io/test/npm/@sensorfactdev/qr-code-scanner)
[![npm version](https://badge.fury.io/js/%40sensorfactdev%2Fqr-code-scanner.svg)](https://badge.fury.io/js/%40sensorfactdev%2Fqr-code-scanner)
[![Package Quality](http://npm.packagequality.com/badge/@sensorfactdev/qr-code-scanner.png)](http://packagequality.com/#?package=@sensorfactdev/qr-code-scanner)

## Usage

```javascript
import QrCodeScanner from '@sensorfactdev/qr-code-scanner';

const handleScanResult = result => {
  console.log(result);
  // {
  //   "result": "RESULT STRING VALUE",
  //   "points": [
  //     {
  //       "x": 171,
  //       "y": 445,
  //       "count": 2,
  //       "estimatedModuleSize": 3.857142857142857
  //     },
  //     // .... more points
  //   ]
  // }
}

const MyApp = () => (
  <div>
    <QrCodeScanner
      onQrCodeScanned={handleScanResult}
      width={window.innerWidth}
      height={window.innerHeight}
      showAimAssist // Defaults to true, disable to remove the aim assist
    />
  </div>
)
```

### Props

| Key             | Type     | Default Value        |
|:----------------|:---------|:---------------------|
| onQrCodeScanned | Function | `console.log`        |
| width           | Number   | `window.innerWidth`  |
| height          | Number   | `window.innerHeight` |

## Development

To start Storybook:
```
yarn start
```

To run the tests:
```
yarn test
```

To run tests in watch mode:
```
yarn test --watch
```

Building the module
```
yarn build
```