open-index/open-npm huggingface dataset:
npm package: @shipers-dev/factory
Description: A TypeScript library
Latest version: 0.0.4

# @shipers/factory

A TypeScript library built with [Bun](https://bun.com).

## Installation

```bash
npm install @shipers/factory
# or
yarn add @shipers/factory
# or
pnpm add @shipers/factory
# or
bun add @shipers/factory
```

## Usage

```typescript
import { /* your exports */ } from '@shipers/factory';

// Your usage examples here
```

## Development

### Install dependencies

```bash
bun install
```

### Build the library

```bash
bun run build
```

This will compile TypeScript files and generate type declarations in the `dist/` folder.

### Run tests

```bash
bun test
```

## Project Structure

```
.
├── src/           # Source files
│   └── index.ts   # Main entry point
├── dist/          # Compiled output (generated)
├── package.json
├── tsconfig.json
└── README.md
```

## Publishing

Before publishing, make sure to:

1. Update the version in `package.json`
2. Fill in the `author`, `keywords`, and `repository` fields
3. Run `bun run build` to ensure everything compiles
4. Run `npm publish` (or `bun publish`)

The `prepublishOnly` script will automatically build the library before publishing.

## License

MIT
npm package: @shipfox/biome
Description: Opinionated wrapper around Biome for formatting and linting across Shipfox repos. Ships platform binaries and a unified CLI.
Latest version: 1.8.0

# @shipfox/biome

Opinionated wrapper around Biome for formatting and linting across Shipfox repos. Ships platform binaries and a unified CLI.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- Unified `biome` CLI for lint/format in CI and locally
- Consistent configuration baked into Shipfox toolchain
- Cross‑platform support via bundled Biome binaries
npm package: @shipfox/config
Description: This is a utility library handling configuration used by other packages for [Shipfox](https://www.shipfox.io/) projects.
Latest version: 1.2.0

# Shipfox config

This is a utility library handling configuration used by other packages for [Shipfox](https://www.shipfox.io/) projects.

## What it does

Typed, validated environment configuration built on top of `envalid`.

- **createConfig(schema)**: Validates `process.env` against your schema and returns a strongly-typed config object.
- **Re-exports common validators**: `str`, `num`, `bool`, `email`, `host`, `port`, `url` (from `envalid`).
- **Fail-fast**: Throws at startup if required variables are missing/invalid.

## Installation

```bash
pnpm add @shipfox/config
# or
yarn add @shipfox/config
# or
npm install @shipfox/config
```

## Usage

```ts
import { createConfig, str, num, bool } from "@shipfox/config";

const config = createConfig({
  NODE_ENV: str({ choices: ["development", "test", "production"] }),
  PORT: num({ default: 3000 }),
  DEBUG: bool({ default: false }),
});

// Typed access
config.PORT; // number
config.DEBUG; // boolean
```
npm package: @shipfox/docker
Description: Small utilities to build images and manage multi-arch manifests consistently in Shipfox repos.
Latest version: 1.2.1

# @shipfox/docker

Small utilities to build images and manage multi-arch manifests consistently in Shipfox repos.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- `docker-build`: opinionated image builds (used locally and in CI)
- `docker-manifest`: create/push multi-arch manifests
- Works well with other @shipfox tooling
npm package: @shipfox/node-clickhouse
Description: A thin wrapper around `@clickhouse/client` with sane defaults, environment-based configuration, and convenient helpers for lifecycle and health checks. It should be used with other packages from [Shipfox](https://www.shipfox.io/).
Latest version: 0.0.3

# Shipfox ClickHouse

A thin wrapper around `@clickhouse/client` with sane defaults, environment-based configuration, and convenient helpers for lifecycle and health checks. It should be used with other packages from [Shipfox](https://www.shipfox.io/).

## What it does

- **createClickHouseClient(options?)**: Creates and stores a singleton `ClickHouseClient` configured from environment variables and safe defaults.
- **chClient()**: Returns the previously created client instance; throws if not initialized.
- **closeClickHouseClient()**: Closes and clears the stored client instance.
- **isClickhouseHealthy()**: Pings the server and returns a boolean for simple readiness checks.
- **Re-exports all types/exports from `@clickhouse/client`** for direct usage.

Environment variables (with defaults):

- `CLICKHOUSE_URL` (default: `http://localhost:8123`)
- `CLICKHOUSE_USERNAME` (default: `shipfox`)
- `CLICKHOUSE_PASSWORD` (default: `password`)
- `CLICKHOUSE_DATABASE` (default: `api`)

## Installation

```bash
pnpm add @shipfox/node-clickhouse
# or
yarn add @shipfox/node-clickhouse
# or
npm install @shipfox/node-clickhouse
```

## Usage

```ts
import {
  createClickHouseClient,
  chClient,
  closeClickHouseClient,
  isClickhouseHealthy,
  type ClickHouseClient,
} from "@shipfox/node-clickhouse";

// 1) Create the client at startup (optionally pass @clickhouse/client options)
const client: ClickHouseClient = createClickHouseClient({
  // Overrides are optional; env-driven base config is applied automatically
  // request_timeout: 30_000,
});

// 2) Use the client elsewhere without passing it around
async function getRowCount() {
  const ch = chClient();
  const result = await ch.query({
    query: "SELECT count() AS c FROM system.tables",
    format: "JSONEachRow",
  });
  const rows = await result.json<{ c: number }>();
  return rows[0]?.c ?? 0;
}

// 3) Simple health check (e.g., in a readiness endpoint)
async function ready() {
  return await isClickhouseHealthy();
}

// 4) Clean shutdown
async function shutdown() {
  await closeClickHouseClient();
}
```

If you need to customize the connection, you can set environment variables before starting your app:

```bash
export CLICKHOUSE_URL="https://example-clickhouse:8443"
export CLICKHOUSE_USERNAME="service_user"
export CLICKHOUSE_PASSWORD="supersecret"
export CLICKHOUSE_DATABASE="analytics"
```
npm package: @shipfox/node-feature-flag
Description: A thin wrapper around LaunchDarkly's Node SDK that standardizes initialization, context mapping, and flag access across [Shipfox](https://www.shipfox.io/) Node services.
Latest version: 0.7.0

# Shipfox Feature Flag

A thin wrapper around LaunchDarkly's Node SDK that standardizes initialization, context mapping, and flag access across [Shipfox](https://www.shipfox.io/) Node services.

## What it does

- **initFeatureFlagging()**: Initializes a singleton LaunchDarkly client from environment variables and resolves when ready.
- **Typed context helpers**: `BlankContext`, `OrganizationContext`, `UserContext` mapped to LaunchDarkly `LDContext`.
- **Flag getters**: `getBooleanFeatureFlag`, `getStringFeatureFlag`, `getNumberFeatureFlag`, `getJsonFeatureFlag<T>`.
- **Subscriptions**: `onFeatureFlagChange(key, callback)` listens for live updates of a specific flag.
- **Bulk fetch**: `getAllFeatureFlags(context)` returns a list of flag names and values for a context.

Environment variables:

- `LAUNCH_DARKLY_SDK_KEY` (required)
- `LAUNCH_DARKLY_BASE_URI` (optional; overrides `baseUri`, `streamUri`, and `eventsUri`)

## Installation

```bash
pnpm add @shipfox/node-feature-flag
# or
yarn add @shipfox/node-feature-flag
# or
npm install @shipfox/node-feature-flag
```

## Usage

```ts
import {
  initFeatureFlagging,
  getBooleanFeatureFlag,
  getStringFeatureFlag,
  getNumberFeatureFlag,
  getJsonFeatureFlag,
  onFeatureFlagChange,
  getAllFeatureFlags,
  type Context,
} from "@shipfox/node-feature-flag";

// 1) Initialize once at startup (resolves when the SDK is ready)
await initFeatureFlagging();

// 2) Build a context. Supported shapes:
// - BlankContext: { kind: 'blank' }
// - OrganizationContext: { kind: 'organization', id: string }
// - UserContext: { kind: 'user', id: string, organizationId: string }
const context: Context = {
  kind: "user",
  id: "user-123",
  organizationId: "org-456",
};

// 3) Read flags with sensible typed defaults
const enabled = await getBooleanFeatureFlag("new-dashboard", context, false);
const theme = await getStringFeatureFlag("theme", context, "light");
const sampleRate = await getNumberFeatureFlag("ingest-sample-rate", context, 1);
const payload = await getJsonFeatureFlag<{ variant: string }>(
  "experiment",
  context,
  { variant: "control" }
);

// 4) Subscribe to a single flag's updates
onFeatureFlagChange("new-dashboard", async () => {
  const latest = await getBooleanFeatureFlag("new-dashboard", context, false);
  // react to change
});

// 5) Fetch all flags for a context (excluding LD metadata)
const flags = await getAllFeatureFlags(context);
// -> [{ name: 'flag-key', value: true | 'str' | 123 | {} | null }, ...]
```

Configure via environment variables before starting your app:

```bash
export LAUNCH_DARKLY_SDK_KEY="sdk-123"
# Optional self-hosted / relay proxy base URL
export LAUNCH_DARKLY_BASE_URI="https://ld-relay.internal"
```
npm package: @shipfox/node-log
Description: Typed logging for Node services built on top of `pino`, with consistent defaults, environment-driven configuration, and convenient helpers. It should be used with other packages from [Shipfox](https://www.shipfox.io/).
Latest version: 0.3.1

# Shipfox Log

Typed logging for Node services built on top of `pino`, with consistent defaults, environment-driven configuration, and convenient helpers. It should be used with other packages from [Shipfox](https://www.shipfox.io/).

## What it does

- **log**: Ready-to-use logger with levels `trace`, `debug`, `info`, `warn`, `error`, `fatal`.
- **createLogger(options)**: Create a new `pino` logger merging your options with Shipfox defaults.
- **settings**: The default `pino` configuration used to build `log` (handy for extending).
- **Types re-exported**: `Level`, `LogFn`, and `Logger` for strong typing.

Defaults include:

- ISO timestamps
- Uppercased level labels (e.g., `INFO`, `ERROR`)
- Standard serializers for `err`, `error`, `errors`, `req`, `res`
- Output formatting controlled via env: pretty printing or file output

Environment variables (via `@shipfox/config`):

- `LOG_LEVEL` (default: `info`)
- `LOG_PRETTY` (default: `false`) — pretty print to stdout via `pino-pretty`
- `LOG_FILE` (default: `undefined`) — if set, logs to file using `pino/file` (creates directory if needed)

## Installation

```bash
pnpm add @shipfox/node-log
# or
yarn add @shipfox/node-log
# or
npm install @shipfox/node-log
```

## Usage

```ts
import { log, createLogger, settings, type Level } from "@shipfox/node-log";

// 1) Use the shared logger
log.info({ service: "billing" }, "Service started");
log.error({ err: new Error("boom") }, "Failed to process event");

// 2) Create a custom logger inheriting defaults
const moduleLogger = createLogger({
  level: (process.env.LOG_LEVEL as Level) ?? settings.level,
  base: { module: "payments" },
});

moduleLogger.debug({ eventId: "evt_123" }, "Processing payment event");

// 3) Environment-driven outputs
// - LOG_PRETTY=true prints colorized logs to stdout
// - LOG_FILE=/var/log/app.log writes JSON logs to a file
```

You can combine `LOG_PRETTY` and `LOG_LEVEL` during development for readability.
npm package: @shipfox/node-pg
Description: Thin wrapper around `pg` that centralizes connection config via environment variables and exposes a simple lifecycle API for shared pool usage.
Latest version: 0.3.1

# Shipfox Postgres

Thin wrapper around `pg` that centralizes connection config via environment variables and exposes a simple lifecycle API for shared pool usage.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

## What it does

- **createPostgresClient(options?)**: Creates and stores a singleton `pg.Pool` configured from environment variables and optional overrides.
- **pgClient()**: Returns the previously created pool; throws if not initialized.
- **closePostgresClient()**: Closes and clears the pool.
- **isPostgresHealthy()**: Executes a lightweight `SELECT 1` to report readiness.
- **Re-exports all types/exports from `pg`** for direct usage.

Environment variables (with defaults):

- `POSTGRES_HOST` (default: `localhost`)
- `POSTGRES_PORT` (default: `5432`)
- `POSTGRES_USERNAME` (default: `shipfox`)
- `POSTGRES_PASSWORD` (default: `password`)
- `POSTGRES_DATABASE` (default: `api`)

## Installation

```bash
pnpm add @shipfox/node-pg
# or
yarn add @shipfox/node-pg
# or
npm install @shipfox/node-pg
```

## Usage

```ts
import {
  createPostgresClient,
  pgClient,
  closePostgresClient,
  isPostgresHealthy,
  type Pool,
} from "@shipfox/node-pg";

// 1) Create the pool at startup (optionally pass pg.PoolConfig overrides)
const pool: Pool = createPostgresClient({
  // connectionTimeoutMillis: 5000,
  // max: 10,
});

// 2) Use the pool elsewhere without passing it around
async function getServerTime() {
  const client = await pgClient().connect();
  try {
    const res = await client.query("SELECT NOW() AS now");
    return res.rows[0]?.now;
  } finally {
    client.release();
  }
}

// 3) Health check
async function ready() {
  return await isPostgresHealthy();
}

// 4) Clean shutdown
async function shutdown() {
  await closePostgresClient();
}
```

Configure via environment variables before starting your app:

```bash
export POSTGRES_HOST="127.0.0.1"
export POSTGRES_PORT="5432"
export POSTGRES_USERNAME="service_user"
export POSTGRES_PASSWORD="supersecret"
export POSTGRES_DATABASE="appdb"
```
npm package: @shipfox/node-redis
Description: Thin wrapper around `ioredis` that centralizes connection config via environment variables and exposes a simple lifecycle API.
Latest version: 0.0.2

# Shipfox Redis

Thin wrapper around `ioredis` that centralizes connection config via environment variables and exposes a simple lifecycle API.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

## What it does

- **createRedisClient(options)**: Creates and stores a singleton `ioredis` client configured from environment variables and optional overrides.
- **redisClient()**: Returns the previously created client; throws if not initialized.
- **closeRedisClient()**: Disconnects and clears the client.
- **isRedisHealthy()**: Performs a `PING` and returns a boolean.
- **Re-exports all types/exports from `ioredis`** for direct usage.

Environment variables (with defaults):

- `REDIS_HOST` (default: `localhost`)
- `REDIS_PORT` (default: `6379`)
- `REDIS_PASSWORD` (default: `password`)
- `REDIS_DATABASE` (default: `0`)

## Installation

```bash
pnpm add @shipfox/node-redis
# or
yarn add @shipfox/node-redis
# or
npm install @shipfox/node-redis
```

## Usage

```ts
import {
  createRedisClient,
  redisClient,
  closeRedisClient,
  isRedisHealthy,
  type Redis,
} from "@shipfox/node-redis";

// 1) Create the client at startup (pass any ioredis options to override env-driven defaults)
const client: Redis = createRedisClient({
  // keyPrefix: "app:",
});

// 2) Use the client elsewhere without passing it around
async function cacheExample() {
  const redis = redisClient();
  await redis.set("greeting", "hello", "EX", 60);
  return await redis.get("greeting");
}

// 3) Health check
async function ready() {
  return await isRedisHealthy();
}

// 4) Clean shutdown
async function shutdown() {
  await closeRedisClient();
}
```

Configure via environment variables before starting your app:

```bash
export REDIS_HOST="127.0.0.1"
export REDIS_PORT="6379"
export REDIS_PASSWORD="supersecret"
export REDIS_DATABASE="0"
```
npm package: @shipfox/react-ui
Description: The Shipfox Design System is the core of the [Shipfox](https://www.shipfox.io/) UI grammar. It contains all the React components which are the building blocks of our front-end projects.
Latest version: 0.33.1

# Shipfox Design System

The Shipfox Design System is the core of the [Shipfox](https://www.shipfox.io/) UI grammar. It contains all the React components which are the building blocks of our front-end projects.

## Installation

### Installation

```bash
pnpm add @shipfox/react-ui
# or
yarn add @shipfox/react-ui
# or
npm install @shipfox/react-ui
```

### CSS Styles

This package includes a pre-built, minified CSS bundle with all Tailwind CSS styles and design tokens. Import it in your application:

```typescript
import "@shipfox/react-ui/dist/styles.css"
```

Or in your HTML:

```html
<link rel="stylesheet" href="node_modules/@shipfox/react-ui/dist/styles.css" />
```

The CSS bundle is self-contained and includes all design tokens, so you don't need to configure Tailwind CSS in your consuming project.

## Storybook

The storybook is [publicly accessible online](https://react-ui.shipfox.vercel.app).

You can also launch it locally by running `pnpm storybook` from within this package's directory.

## Visual Testing with Argos

This library uses [Argos](https://argos-ci.com/) for automated visual regression testing. Argos captures screenshots of all Storybook stories and compares them across pull requests to detect unintended visual changes.

### How it works

1. On every pull request, GitHub Actions builds Storybook and uploads screenshots to Argos
2. Argos compares the screenshots with the baseline from the main branch
3. If visual differences are detected, they are highlighted in the Argos dashboard
4. Reviewers can approve or reject changes directly from the PR

### Running Argos locally

To upload screenshots to Argos from your local machine:

```bash
# Build Storybook
pnpm storybook:build

# Upload to Argos (requires ARGOS_TOKEN environment variable)
pnpm argos
```

### Configuration

Argos configuration is located in `argos.config.ts`. You can customize:

- Screenshot capture settings
- Ignored patterns
- Comparison threshold
- Reference branch

### Setting up Argos

1. Create an account on [Argos](https://argos-ci.com/)
2. Connect your GitHub repository
3. Add the `ARGOS_TOKEN` secret to your GitHub repository settings
4. Argos will automatically run on all pull requests
npm package: @shipfox/skopeo
Description: Thin wrapper for common `skopeo` workflows, focused on copying/mirroring container images.
Latest version: 1.1.2

# @shipfox/skopeo

Thin wrapper for common `skopeo` workflows, focused on copying/mirroring container images.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- `skopeo-copy`: opinionated copy/mirror command for CI pipelines
- Simplifies auth/flags by using Shipfox conventions
npm package: @shipfox/swc
Description: Opinionated build wrapper around SWC for Shipfox TypeScript packages.
Latest version: 1.2.5

# @shipfox/swc

Opinionated build wrapper around SWC for Shipfox TypeScript packages.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- Single `swc` CLI for fast builds
- Path alias resolution via `tsc-alias` after emit
- Repo-friendly defaults for output structure
npm package: @shipfox/tool-utils
Description: Small utilities used by Shipfox CLI tools (logging, paths, shell helpers, etc.).
Latest version: 1.1.2

# @shipfox/tool-utils

Small utilities used by Shipfox CLI tools (logging, paths, shell helpers, etc.).

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- Common helpers shared by @shipfox tool packages
- Keeps individual tool CLIs small and focused
npm package: @shipfox/ts-config
Description: Shared TypeScript configuration used across Shipfox packages.
Latest version: 1.3.5

# @shipfox/ts-config

Shared TypeScript configuration used across Shipfox packages.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- Provides a base `tsconfig.json` to extend
- Ensures consistent compiler options and path settings
npm package: @shipfox/typescript
Description: Thin wrappers around TypeScript tooling for consistent repo workflows.
Latest version: 1.1.4

# @shipfox/typescript

Thin wrappers around TypeScript tooling for consistent repo workflows.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- `tsc-check`: type-check only (no emit)
- `tsc-emit`: emit JavaScript with path alias rewriting
- Designed to work with `@shipfox/ts-config`
npm package: @shipfox/vite
Description: Opinionated Vite wrappers for dev and build with repo-friendly defaults.
Latest version: 1.2.2

# @shipfox/vite

Opinionated Vite wrappers for dev and build with repo-friendly defaults.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- `vite-dev`: start dev server with tsconfig paths
- `vite-build`: build with consistent options for Shipfox packages
npm package: @shipfox/vitest
Description: Lightweight wrapper to run Vitest with Shipfox defaults.
Latest version: 1.2.0

# @shipfox/vitest

Lightweight wrapper to run Vitest with Shipfox defaults.

It should be used with other packages from [Shipfox](https://www.shipfox.io/).

- `vitest-run`: run tests with sensible defaults and tsconfig paths
- Integrates smoothly with other @shipfox tooling
npm package: @shiphub/eslint-config
Description: Shiphub's ESLint config.
Author: Christopher Szatmary
Latest version: 0.0.4

# @shiphub/eslint-config

Shiphub's ESLint configuration. This config assumes TypeScript.

## Usage

Install with pnpm:

```sh
pnpm add @shiphub/eslint-config @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-import-resolver-typescript eslint-plugin-import --dev
```

Then add it to your eslint config's `extends`:

```json
{
    "extends": ["@shiphub"]
}
```
npm package: @shipitdotpage/cli
Description: The official CLI for shipit.page. Deploy your sites from the terminal or let AI build them for you.
Author: shipit.page
Latest version: 1.0.2

# @shipitdotpage/cli 🚀

The official command-line tool for [shipit.page](https://shipit.page)! 

Easily deploy your chaotic creations directly from your terminal, or hand the keys over to our AI to generate a brutalist, retro masterpiece and push it live automatically.

## Installation

Install the CLI globally via NPM:
```bash
npm install -g @shipitdotpage/cli
```

## Commands

### 🔑 Login
Save your Personal Access Token locally so you don't have to keep pasting it.
```bash
shipit login <your_token>
```

### 🚀 Deploy
Got your `index.html` ready? Ship it straight to your subdomain.
```bash
shipit deploy
```
*(By default, this looks for an `index.html` in your current directory. You can also specify a path like `shipit deploy dist/index.html`)*

### 🤖 Generate (AI)
Feeling lazy? Just tell the CLI what vibe you want, and it will construct raw HTML/CSS and pipeline it directly to your live site.
```bash
shipit generate "A cyber-goth hacker club landing page with neon green text on a black background"
```

---
*Built with ❤️ for the JoeCities/shipit.page ecosystem.*
npm package: @shipitsquirrel/mcp-server
Description: MCP server for Ship It Squirrel - deploy, monitor, and fix your Rails apps
Author: Ship It Squirrel
Latest version: 1.2.1

# Ship It Squirrel MCP Server

Connect Claude Code to your Ship It Squirrel apps to deploy, monitor, debug, and fix your Rails apps from the terminal.

## Installation

### 1. Get your API Token

1. Go to [shipitsquirrel.com/settings/api](https://shipitsquirrel.com/settings/api)
2. Create a new API token
3. Copy the token

### 2. Add to Claude Code

The easiest way is to use the CLI:

```bash
claude mcp add -e "SHIPITSQUIRREL_API_TOKEN=your-api-token-here" -s user shipitsquirrel -- npx -y @shipitsquirrel/mcp-server
```

Or manually add this to your `~/.claude.json` file:

```json
{
  "mcpServers": {
    "shipitsquirrel": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@shipitsquirrel/mcp-server"],
      "env": {
        "SHIPITSQUIRREL_API_TOKEN": "your-api-token-here"
      }
    }
  }
}
```

### 3. Restart Claude Code

Restart Claude Code to load the new MCP server. Verify it's connected with `/mcp`.

## Available Tools

### Servers

| Tool | Description |
|------|-------------|
| `list_servers` | List all your servers with IPs and status |
| `get_server` | Get detailed server info including apps |

### Apps

| Tool | Description |
|------|-------------|
| `list_apps` | List all your apps with status and bug counts |
| `get_app` | Get detailed info about a specific app |

### Deployments & Operations

| Tool | Description |
|------|-------------|
| `list_deployments` | List recent deployments for an app |
| `get_deployment` | Get deployment details including full log |
| `deploy_app` | Trigger a new deployment |
| `restart_app` | Restart the application (Puma) |
| `rollback_app` | Rollback to previous successful deployment |
| `get_app_logs` | Get recent application logs from the server |

### Bug Tracking

| Tool | Description |
|------|-------------|
| `list_bugs` | List bugs for an app (filter by status) |
| `get_bug` | Get full bug details including backtrace |
| `resolve_bug` | Mark a bug as resolved |
| `ignore_bug` | Mark a bug as ignored |
| `reopen_bug` | Reopen a resolved/ignored bug |

## Example Usage

Once connected, you can ask Claude things like:

- "List my Ship It Squirrel servers"
- "Show me open bugs for my-app"
- "Get details on bug abc123 and fix the code"
- "Deploy my-app"
- "Show me the last 200 lines of logs for my-app"
- "Rollback my-app to the previous version"
- "Restart my-app"
- "Resolve bug xyz789 with notes 'Fixed in commit abc'"

### Full Bug Fix Workflow

Claude can handle the entire cycle: see a bug, read the backtrace, find the relevant code, fix it, deploy the fix, then mark the bug as resolved.

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `SHIPITSQUIRREL_API_TOKEN` | Yes | Your API token from shipitsquirrel.com |
| `SHIPITSQUIRREL_URL` | No | API base URL (default: https://shipitsquirrel.com) |

## Development

```bash
npm install
SHIPITSQUIRREL_API_TOKEN=your-token npm start
```

## License

MIT
npm package: @shiplab/vessels
Description: Library for conceptual ship design with an object-oriented paradigm
Author: NTNU
Latest version: 0.0.14

# vesseljs

**Vessel.js** is a JavaScript library for conceptual ship design with an object-oriented paradigm. Vessel.js represents the vessel as an object, which is used to simulate different functionalities and behaviors. Currently, the library includes methods for hydrostatic and stability calculations.

The library is developed by **Ship Design and Operation Lab** at Norwegian University of Science and Technology (**NTNU**) in Ålesund. For documentation and other resources, visit our [wiki](https://github.com/shiplab/vesseljs/wiki).

## Contributing

When contributing, fork the repository and send pull requests with your commits. If your modifications are only to files related to examples and you have pull request authorization, you can approve them by yourself. If not, then wait for review and approval by the development team.

You are also welcome to create [issues](https://github.com/shiplab/vesseljs/issues) reporting bugs or suggesting improvements and features for development.
npm package: @shipless/highlight
Description: <p align="center">   <a href="https://github.com/shipless/highlight">     <img alt="shipless" src="https://res.cloudinary.com/muhrusdi/image/upload/v1627215311/shipless-high.png" width="100%" />   </a> </p>
Latest version: 0.0.5

<p align="center">
  <a href="https://github.com/shipless/highlight">
    <img alt="shipless" src="https://res.cloudinary.com/muhrusdi/image/upload/v1627215311/shipless-high.png" width="100%" />
  </a>
</p>

# Shipless Highlight

Shipless Highlight is a Renders highlighted Prism output to React 

[![npm (scoped)](https://img.shields.io/npm/v/@shipless/highlight?style=for-the-badge)](https://www.npmjs.com/package/@shipless/highlight)
[![npm](https://img.shields.io/npm/dt/@shipless/highlight?label=Download&style=for-the-badge)](https://www.npmjs.com/package/@shipless/highlight)
![NPM](https://img.shields.io/npm/l/@shipless/highlight?style=for-the-badge)
![npm bundle size](https://img.shields.io/bundlephobia/min/@shipless/highlight?style=for-the-badge)
### Installation

Use the package manager `yarn` or `npm` to install this package.

```bash
yarn add @shipless/highlight
# or
npm install @shipless/highlight
```

### Usage

`import` @shipless/highlight package suck as the following:

```js
import Highlight from "@shipless/highlight"

const codeSnippet = `module.exports = {
  ...
  plugins: [
    ...
    {
      resolve: "gatsby-source-filesystem", // highlight-line
      options: {
        // highlight-remove-start
        name: "cheatsheets",
        path: "\${__dirname}/src/data/cheatsheets",
        // highlight-remove-end
        // highlight-add-start
        name: "blogs",
        path: "\${__dirname}/src/data/blogs",
        // highlight-add-end
      },
    },
    ...
  ],
}`

<Highlight code={codeSnippet} lang="js"/>
```

 Then you must import style on your css file:
 ```css
 @import url("@shipless/highlight/dist/style.css");
 ```

 ### Demo

 [Example](https://shipless-highlight.netlify.app/)

 ### Showcase

 - [Membuat blog menggunakan Gatsbyjs](https://muhrusdi.github.io/blog/membuat-personal-blog-menggunakan-gatsbyjs) - muhrusdi

 ### API

|      Props       |                          description                       |   default                                | required |
| :--------------: | :--------------------------------------------------------: | :--------------------------------------: | :------: |
|        lang        |             languange that your code             |                                          |   true  |
|  code            |            Initial code to be displayed                    |                                          |   true   |

### Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

### License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @shipless/play
Description: <p align="center">   <a href="https://github.com/shipless/play">     <img alt="shipless" src="https://res.cloudinary.com/muhrusdi/image/upload/v1627215232/shipless-play.png" width="100%" />   </a> </p>
Latest version: 0.0.21

<p align="center">
  <a href="https://github.com/shipless/play">
    <img alt="shipless" src="https://res.cloudinary.com/muhrusdi/image/upload/v1627215232/shipless-play.png" width="100%" />
  </a>
</p>

# Shipless Play

Shipless Play is a React simple playground for HTML, CSS and JavaScript

[![npm (scoped)](https://img.shields.io/npm/v/@shipless/play?style=for-the-badge)](https://www.npmjs.com/package/@shipless/play)
[![npm](https://img.shields.io/npm/dt/@shipless/play?label=Download&style=for-the-badge)](https://www.npmjs.com/package/@shipless/play)
![NPM](https://img.shields.io/npm/l/@shipless/highlight?style=for-the-badge)
![npm bundle size](https://img.shields.io/bundlephobia/min/@shipless/play?style=for-the-badge)

### Features
- ✅ Realtime preview
- ⬜️ Support SCSS
- ⬜️ Support React
- ⬜️ Custom theme

### Installation

Use the package manager `yarn` or `npm` to install this package.

```bash
yarn add @shipless/play
# or
npm install @shipless/play
```

### Usage

`import` @shipless/play package suck as the following:

```js
import ShiplessPlay from "@shipless/play"

const value = {
  html: `
<div class="section">
  <div>
    <h1>Welcome to Playground</h1>
    <p> A simple playground for HTML, CSS and JavaScript</p>
    <a href="https://github.com/shipless/drafteditor">Github</a>
  </div>
</div>
  `,
  css: `
body {
  background: #97a2a9;
  display: flex;
  justify-content: center;
  align-items: center;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  position: absolute;
}
  `,
  javascript: `
console.log("your js")  
`
}

<ShiplessPlay defaultValue={value}>
```

 Then you must import style on your css file:
 ```css
 @import url("@shipless/play/dist/style.css");
 ```

 ### Format for initial snippet

```js
{
  html: `<h1>Title</h1>`,
  css: `h1 { color: red }`,
  javascript: `console.log("this")`
}
```

 ### Demo

 [Example](https://shipless-play.netlify.app/)

 ### Showcase

 - [Custom scrollbar di css](https://muhrusdi.github.io/blog/custom-scrollbar-di-css) - murusdi

 ### API

|      Props       |                          description                       |   default                                | required |
| :--------------: | :--------------------------------------------------------: | :--------------------------------------: | :------: |
|        id        |             a unique identifier for the iFrame             |                                          |   false  |
|  defaultValue    |            Initial code to be displayed                    |                                          |   false   |

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)