open-index/open-npm huggingface dataset:
npm package: @mysticaldragon/logger
Description: Manage beautiful logs without making a mess
Latest version: 1.0.6

# @mysticaldragon/logger

Beautiful logs without making a mess.
Organize your logs by class names, hide the logs you won't need and send the important data to specific log files.

- [x] Beautiful logs with timestamp and classes
- [x] Pipe logs to files based on classes

```js
const { log } = require('@mysticaldragon/logger');

log("MAIN", "Hello world!");	
```
![Hello World!](https://i.ibb.co/0mxskz9/Sin-t-tulo.png)

Show, hide and pipe logs to files based on filters

```js
const Logger = require('@mysticaldragon/logger');
const { log } = new Logger({
	enabled: boolean, // Is logging activated? (Default, true)
	hidden: [{ class: "HIDDEN_LOG" }] // Hide logs based on class, Wildcard: * (Default, [])
	pipe: [{ // Store logs in file
		path: "logs/main.log", // File to write
		filter: { class: "MAIN" }
	}]
})

Logger.log("HIDDEN_LOG", "This message won't be shown.");
Logger.log("MAIN", "This log will be written at logs/main.log.");
```
npm package: @mysticaldragon/unete
Description: Unete is a microservice framework that exposes an HTTP & Socket.IO server based on native JS functions. Socket.IO server can be used to return observables that can be read in the @unete/io client.
Latest version: 1.0.9

# @mysticaldragon/unete

Unete is a microservice framework that exposes an HTTP & Socket.IO server based on native JS functions.
Socket.IO server can be used to return observables that can be read in the @unete/io client.

## Options

```js
{
    port: any;
    endpoints: any;
    responseType?: "object" | "raw"; // Default: "object", if = "raw", results won't be parsed as JSON

    ssl?: { // If != undefined, will expose the server as https:// & wss://
        key: string;
        cert: string;
        ca: string;
    }
}
```

## Usage Example

```js
import { Server } from "@mysticaldragon/unete";

new Server({
    port: 8080,
    endpoints: {
        helloWorld () {
            return "Hello World!";
        }
    }
}).listen();
```

Then enter http://localhost:8080/helloWorld

## Response

### If Options.responseType == "object"

If the function success, it will return 200 - { result }
If the function throws an exception, it will return 500 - { error }


### If Options.responseType == "raw"

If the function success, it will return 200 - result
If the function throws an exception, it will return 500 - error
npm package: @mysticwillz/html-to-string
Description: Lightweight utility to strip HTML tags from a string
Author: Eze Williams Ezebuilo
Latest version: 1.0.1

# html-to-string

> 🪼 A tiny utility that strips HTML tags from a string and returns clean text.

---

## ✨ Features

- 🩸 Lightweight – No dependencies
- ⚡ Fast and simple
- ✅ TypeScript support
- 💠 Ideal for frontend & backend use

---

## 📦 Installation

```bash
npm i @mysticwillz/html-to-string
```

or

```bash
yarn add @mysticwillz/html-to-string
```

---

## 🚀 Usage

### Basic Example

```ts
import { stripHTML } from "@mysticwillz/html-to-string";

const dirty = "<h1>Hello <em>World</em></h1>";
const clean = stripHTML(dirty);

console.log(clean); // "Hello World"
```

---

## 🧠 API

### `stripHTML(html: string): string`

| Param | Type   | Description                    |
| ----- | ------ | ------------------------------ |
| html  | string | String containing HTML content |
| →     | string | Clean string with tags removed |

---

## 🧪 Example Inputs

```ts
stripHTML("<p>This is <strong>important</strong></p>");
// → "This is important"

stripHTML('<div><a href="#">Link</a></div>');
// → "Link"

stripHTML("");
// → ""
```

---

## 📁 Project Structure

```
html-to-string/
├── src/
│   └── index.ts      # Main function
├── dist/             # Compiled output
├── test.js           # Example usage
├── package.json
└── README.md
```

---

## 📄 License

MIT © 2025 [Eze Williams Ezebuilo](https://github.com/mysticwillz)

---

## 💡 Inspiration

This package was built to provide a fast, minimalist solution to convert HTML into plain readable text without unnecessary complexity.

---

## 👌 Contributing

Pull requests, suggestions, and ideas are welcome! Open an issue or submit a PR.
npm package: @mystify/balancetext
Description: A ripoff of balancetext by Randy Edmunds to customize to my own needs
Author: David Gallant
Latest version: 1.0.3

Usage:

`import balanceText                  from "@mystify/balancetext";`

To have the library load all the elements with the "balance-text" class name call "balanceText" in the did mount. I found that I have to update the watched elements after the mount to make sure that it picks up and adjusts the elements after the first render

```
componentDidMount() {  
    balanceText();  
    requestAnimationFrame(()=>balanceText.updateWatched());  
}

render() {
    // add the class name "balance-text" to your component to make it work
    return <span className="balance-text">This is my text</span>

}
```
npm package: @mystify/dcontrols
Description: a collection of components I use for my own usage.
Author: David Gallant
Latest version: 0.0.19

This is a library of controls and components that I use if various projects.



### REMEMBER:

in your webpack you need to transpile this project with babel, so you need to do this:

`exclude  : /node_modules(?!([\/\\]@mystify)).*/,
`

examples:

```
const rules = [
  {
    test   : /\.(js|jsx)$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }, {
    test   : /[\/\\]+fonts[\/\\]+[\w\-\\\/]*[\w\-]+\.(ttf|eot|svg|woff|woff2?)$/i,
    exclude: /node_modules/,
  }, {
    test   : /\.css$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }, {
    test   : /\.less$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }
];

const plugins = [
  new HappyPack({
    loaders: [
      {
        loader   : 'babel-loader',
        'test'   : /\.(js|jsx)$/,
        exclude  : /node_modules(?!([\/\\]@mystify)).*/,
      }
    ],
  })
]
```
npm package: @mystify/dlib
Description: A collection of simple shortcut functions I use across various projects. Mainly for ES6, React, and NodeJS
Author: David Gallant
Latest version: 1.0.58

# dlib
A collection of short cut functions I use in various projects.


### REMEMBER:

in your webpack you need to transpile this project with babel, so you need to do this:

`exclude  : /node_modules(?!([\/\\]@mystify)).*/,
`

examples:

```
const rules = [
  {
    test   : /\.(js|jsx)$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }, {
    test   : /[\/\\]+fonts[\/\\]+[\w\-\\\/]*[\w\-]+\.(ttf|eot|svg|woff|woff2?)$/i,
    exclude: /node_modules/,
  }, {
    test   : /\.css$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }, {
    test   : /\.less$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }
];

const plugins = [
  new HappyPack({
    loaders: [
      {
        loader   : 'babel-loader',
        'test'   : /\.(js|jsx)$/,
        exclude  : /node_modules(?!([\/\\]@mystify)).*/,
      }
    ],
  })
]
```
npm package: @mystify/dlibrary
Description: a collection of material-ui components that I have customized for my own usage.
Author: David Gallant
Latest version: 0.0.97

DLibrary is a collection of material-ui components with extended functionality and with an default EduCode color style and theme. 

<a href="docs/readme.md">Docs</a>



### REMEMBER:

in your webpack you need to transpile this project with babel, so you need to do this:

`exclude  : /node_modules(?!([\/\\]@mystify)).*/,
`

examples:

```
const rules = [
  {
    test   : /\.(js|jsx)$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }, {
    test   : /[\/\\]+fonts[\/\\]+[\w\-\\\/]*[\w\-]+\.(ttf|eot|svg|woff|woff2?)$/i,
    exclude: /node_modules/,
  }, {
    test   : /\.css$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }, {
    test   : /\.less$/,
    exclude: /node_modules(?!([\/\\]@mystify)).*/,
  }
];

const plugins = [
  new HappyPack({
    loaders: [
      {
        loader   : 'babel-loader',
        'test'   : /\.(js|jsx)$/,
        exclude  : /node_modules(?!([\/\\]@mystify)).*/,
      }
    ],
  })
]
```
npm package: @mystify/mediaquerylist
Description: A simple class for media query lists that allows me to get around the addListener not supported on some browsers.
Author: David Gallant
Latest version: 1.0.13

usage:

`import MediaQueryList from "@mystify/mediaQueryList";`

```
componentDidMount() {
    this.mql = new MediaQueryList('(max-width: 960px)');
    this.mql.addListener(this.mediaQueryChanged);
}
```
```
mediaQueryChanged = e => {
    if (this.mql.matches) {
      // do something here
    }
    else {
      // do something else here
    }
  };
```
```
componentWillUnmount() {
    if (this.mql) this.mql.removeListener(this.mediaQueryChanged);
}
```
npm package: @mystroken/canvas
Description: Object oriented canvas 2D rendering in JavaScript.
Author: Mystro Ken
Latest version: 0.0.6

# Canvas

[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/mystroken/canvas/issues)

> :kiwi_fruit: Object oriented canvas 2D rendering in JavaScript.

<br>

## Installation

```bash
npm install @mystroken/canvas
```

<br>

## Usage

Look at the sources files for more information.

###### Import

```javascript

import Canvas from '@mystroken/canvas';
import Renderable from '@mystroken/canvas/Renderable'; 
```

###### Create a renderable.

```javascript
class Circle extends Renderable {

    render(ctx) {
        ctx.beginPath();
        ctx.arc(110, 110, 25, Math.PI * 2, false);
        ctx.closePath();

        ctx.stroke();
    }
}
```

###### Add renderables on the canvas.

```javascript
const canvas = new Canvas(document.querySelector('#canvas'));

// Get some renderables.
const circle = new Circle();
const rect = new Rectangle();

// Adds renderables to canvas.
canvas.add(circle);
canvas.add(rect);

// Render the canvas.
canvas.render();
```
npm package: @mystroken/drag
Description: Hold and drag library
Author: Mystro Ken
Latest version: 0.2.0

# :surfer: drag


[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/mystroken/drag/issues)
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=A%20lightweight%20utility%20to%20do%20%22hold%20and%20drag%22.&url=https://github.com/mystroken/drag&via=mystroken&hashtags=holdanddrag,slider,drag,js,creativecoding,developers)

<blockquote>
A lightweight JavaScript "hold and drag" utility. Vanilla JS - No dependencies.
<br>
Its size is ~619 B (minified and compressed).
</blockquote>

![](https://github.com/mystroken/drag/raw/master/screenshot.gif)

➝ [See the online demo (Advanced example)](https://mystroken.github.io/drag/)

## Usage

```npm install @mystroken/drag``` and start using the **hold and drag** system.

```javascript
import Drag from '@mystroken/drag';

// Elements to listen/move.
const slidable = document.querySelector('#slidable');
const container = document.querySelector('#container');

// Where to store the drag position.
let currentX = 0;
let currentY = 0;

// Initialize the library.
const options = {
  listener: container,
  multiplier: 2
};
const drag = new Drag(options);

// Store the cursor position on move.
drag.on(event => {
  currentX = event.X;
  currentY = event.Y;
});

// Use the cursor position to slide the slidable element.
const move = () => {
  slidable.style.transform = `translate3d(${currentX}px, ${currentY}px, 0px)`;
  requestAnimationFrame(move);
};
requestAnimationFrame(move);
```
npm package: @mystroken/g
Description: A garden of small JavaScript utilities.
Author: Mystro Ken
Latest version: 0.0.16

# G

![npm bundle size](https://img.shields.io/bundlephobia/minzip/@mystroken/g)
![npm](https://img.shields.io/npm/dw/@mystroken/g)
![npm](https://img.shields.io/npm/v/@mystroken/g)
![GitHub last commit](https://img.shields.io/github/last-commit/mystroken/g)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/mystroken/g/issues)

> :hibiscus::leaves: G is a garden of small JavaScript utilities.

<br>

## Installation

```bash
npm install @mystroken/g
```

<br>

## Usage

Look at the sources files for more information.

###### Import

```javascript
// Import the whole library.
import G from '@mystroken/g';

// OR import individual helper - like lodash he he ;-)
import Raf from '@mystroken/g/Raf'; 
```

###### Create a 60FPS loop.

```javascript
const rAF = new Raf(elapsed => console.log(elapsed));
rAF.run();
```

###### Call a func after a certain delay.

```javascript
const duration = 2000;
const callback = () => console.log(`Call me ${duration}ms later`);
const delay = new G.Delay(callback, duration);
delay.run();
```

###### Animate things

```javascript
const anim = animate({
    el: '#loader', // Select the element to animate.
    d: 2000, // Set the animation duration in ms.
    // Set properties to animate.
    p: {
        y: [100, 0], // Move the elements on y-axis from 100 to 0.
    }
});
anim.play();
```

[→ See more about the topic](https://github.com/mystroken/g/blob/master/ANIMATION.md)

###### Use an animations timeline.

```javascript
const tl = new Timeline();
tl
  .add(animate({ el: 'span', p: { y: [0, 100] }}))
  .add(animate({ el: 'span', p: { y: [100, 0] }}), 100)
  .add(animate({ el: 'span', p: { y: [0, 50] }}), '=-50');

// At anytime, run the animations timeline.
tl.play();
```

[→ More about timeline](https://github.com/mystroken/g/blob/master/TIMELINE.md)

## Credits

For this project, I read a lot of articles and source codes. Here are some of them:

[Gain Motion Superpowers with requestAnimationFrame](https://medium.com/@bdc/gain-motion-superpowers-with-requestanimationframe-ecc6d5b0d9a4)

[Lodash](https://github.com/lodash/lodash) repository.

[@ariiiman/r](https://github.com/ariiiman/r) repository.
npm package: @mystroken/garden
Description: 🌺🍃 A garden of small TypeScript utilities for frontend development.
Author: Mystro Ken
Latest version: 0.0.14

# garden

![npm](https://img.shields.io/npm/v/@mystroken/garden)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/@mystroken/garden)
[![codecov](https://codecov.io/github/mystroken/garden/graph/badge.svg?token=73I3TBC6EA)](https://codecov.io/github/mystroken/garden)
![npm](https://img.shields.io/npm/dw/@mystroken/garden)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/mystroken/garden/issues)

> :hibiscus::leaves: Garden is a garden of small JavaScript utilities.

<br>

## Installation

```bash
npm install @mystroken/garden
```

<br>

## Usage

Look at the sources files for more information.

###### Import

```javascript
// Import the whole library.
import * as G from '@mystroken/garden';

// OR import individual helper - like lodash he he ;-)
import { debounce, throttle } from '@mystroken/garden';
```
npm package: @mystroken/mouse-explorer
Description: Browse along a section clipped into a viewport using a mouse.
Author: Mystro Ken
Latest version: 0.0.1

# mouse-explorer

[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/mystroken/mouse-explorer/issues)

> :mouse2: Browse along a section clipped into a viewport using a mouse.

<br>

## Installation

```bash
npm install @mystroken/mouse-explorer
```

<br>

## Usage

Look at the sources files for more information.

```javascript
import createMouseExplorer from '@mystroken/mouse-explorer';

const viewport = document.querySelector('#viewport');
const section = document.querySelector('#container');
const explorer = createMouseExplorer({ viewport, section });

explorer.on(({ x, y }) => {
    section.style.transform = `translate3d(${x},${y},0)`;
});
```
npm package: @mystroken/s
Description: A custom scroll event library
Author: Mystro Ken
Latest version: 0.0.5

# :surfer: S

[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/mystroken/s/issues)

> S is a JavaScript library that allows you to implement custom scroll events.<br>This is a fork of Bartek Drozdz [VirtualScroll util](http://www.everyday3d.com/blog/index.php/2014/08/18/smooth-scrolling-with-virtualscroll/) and weighs ~1.5KB (minified and compressed).

<br>

### :tada: Goals of the fork
- Easier to add in a CommonJS environment
- Enable to create several distinct instances by using a prototype rather than a singleton

<br>

## Installation

```bash
npm install @mystroken/s
```

## Usage & API

- `new S(options)`
Return a new instance of S. See the options below.

- `instance.on(fn)`
Listen to the scroll event using the specified function (fn).

- `instance.off(fn)`
Remove the listener.

- `instance.destroy()`
Will remove all events and unbind the DOM listeners.

## Options
- **el**: the target element for mobile touch events. *Defaults to window.*
- **mouseMultiplier**: General multiplier for all mousewheel (including Firefox). *Default to 1.*
- **touchMultiplier**: Mutiply the touch action by this modifier to make scroll faster than finger movement. *Defaults to 2.*
- **firefoxMultiplier**: Firefox on Windows needs a boost, since scrolling is very slow. *Defaults to 15.*
- **keyStep**: How many pixels to move with each key press. *Defaults to 120.*
- **preventTouch**: If true, automatically call e.preventDefault on touchMove. Defaults to false.
npm package: @mytaptrack/get-ssl-certificate
Description: A micro-library that returns a website's SSL certificate
Author: John Crisostomo
Latest version: 2.3.4

# get-ssl-certificate

## A zero-dependency utility that returns a website's SSL certificate

[![Build Status](https://travis-ci.org/johncrisostomo/get-ssl-certificate.svg?branch=master)](https://travis-ci.org/johncrisostomo/get-ssl-certificate)
[![Coverage Status](https://coveralls.io/repos/github/johncrisostomo/get-ssl-certificate/badge.svg?branch=master)](https://coveralls.io/github/johncrisostomo/get-ssl-certificate?branch=master)
[![Code Climate](https://codeclimate.com/github/johncrisostomo/get-ssl-certificate/badges/gpa.svg)](https://codeclimate.com/github/johncrisostomo/get-ssl-certificate)
[![npm](https://img.shields.io/badge/npm-v2.3.3-blue.svg)](https://www.npmjs.com/package/get-ssl-certificate)

### Installation

```
npm install --save get-ssl-certificate
```

### Usage

#### Import package:

```
const sslCertificate = require('get-ssl-certificate')
```

#### Pass a url / domain name:

```
sslCertificate.get('nodejs.org').then(function (certificate) {
  console.log(certificate)
  // certificate is a JavaScript object

  console.log(certificate.issuer)
  // { C: 'GB',
  //   ST: 'Greater Manchester',
  //   L: 'Salford',
  //   O: 'COMODO CA Limited',
  //   CN: 'COMODO RSA Domain Validation Secure Server CA' }

  console.log(certificate.valid_from)
  // 'Aug  14 00:00:00 2017 GMT'

  console.log(certificate.valid_to)
  // 'Nov 20 23:59:59 2019 GMT'

  // If there was a certificate.raw attribute, then you can access certificate.pemEncoded
  console.log(certificate.pemEncoded)
  // -----BEGIN CERTIFICATE-----
  // ...
  // -----END CERTIFICATE-----
});
```

#### Optional parameters: Timeout (in ms), Protocol (Default is 'https:') and Port (Default is 443)

```
sslCertificate.get('nodejs.org', 250, 443, 'https:').then(function (certificate) {
  console.log(certificate)
  // certificate is a JavaScript object

  console.log(certificate.issuer)
  // { C: 'GB',
  //   ST: 'Greater Manchester',
  //   L: 'Salford',
  //   O: 'COMODO CA Limited',
  //   CN: 'COMODO RSA Domain Validation Secure Server CA' }

  console.log(certificate.valid_from)
  // 'Aug  14 00:00:00 2017 GMT'

  console.log(certificate.valid_to)
  // 'Nov 20 23:59:59 2019 GMT'

  // If there was a certificate.raw attribute, then you can access certificate.pemEncoded
  console.log(certificate.pemEncoded)
  // -----BEGIN CERTIFICATE-----
  // ...
  // -----END CERTIFICATE-----
});
```

## License

MIT
npm package: @mytechtoday/augment-extensions
Description: CLI tool for managing Augment Code AI extension modules
Author: Augment Extensions
Latest version: 3.1.0

# Augment Extensions

**Reusable augmentation modules for Augment Code AI**

[![Version](https://img.shields.io/badge/version-3.1.0-blue.svg)](https://github.com/mytech-today-now/augment-extensions)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
[![npm](https://img.shields.io/badge/npm-%40mytechtoday%2Faugment--extensions-red.svg)](https://www.npmjs.com/package/@mytechtoday/augment-extensions)

Augment Extensions provides domain-specific coding standards, design systems, and sales & marketing guidelines for teams using Augment Code AI.

## 🎯 Purpose

Augment Code AI limits `.augment/` to ~49,400 characters. This repository provides **2M+ characters** of guidelines across 30+ modules covering programming, design, and sales & marketing.

## 📦 Modules

### 💻 Programming — coding-standards/ (13 modules)

Language-specific coding standards for professional software development:

Bash · C · CSS · Go · HTML · JavaScript · Perl · PHP · PowerShell · Python · React · TypeScript · HTML+CSS+JS (collection)

### 🎨 Design — domain-rules/ & visual-design/

Domain rules and visual systems for building polished products:

API Design · Database · MCP · Security · Software Architecture · Visual Design · WordPress · WordPress Plugin

Includes ready-to-use examples: design patterns, Gutenberg blocks, REST API, WooCommerce.

### 📈 Sales & Marketing — domain-rules/seo-sales-marketing

Content and conversion strategy guidelines for revenue-focused teams:

SEO best practices · Copywriting · CTAs · Social proof · Content architecture

## 🚀 Quick Start

```bash
npm install -g @mytechtoday/augment-extensions
augx init
augx link coding-standards/typescript
augx list --linked
```

## 🔧 CLI Commands

| Command | Description |
|---------|-------------|
| `augx init` | Initialize in a project |
| `augx link <module>` | Link a module to the current project |
| `augx list` | List all available modules |
| `augx show <module>` | Display module content |
| `augx search <term>` | Search modules by keyword |
| `augx gui` | Interactive TUI module browser |
| `augx upgrade` | Upgrade linked modules to latest |
| `augx validate` | Validate module structure |

## 📄 License

MIT — see [LICENSE](./LICENSE)
npm package: @mytechtoday/filmbuff
Description: CLI tool for managing writing, prose, and screenplay extension modules
Author: Augment Extensions
Latest version: 1.0.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# FilmBuff

**AI-powered writing and screenplay tools — Creative Writing Edition**

[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/mytech-today-now/filmbuff)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
[![npm](https://img.shields.io/badge/npm-%40mytechtoday%2Ffilmbuff-red.svg)](https://www.npmjs.com/package/@mytechtoday/filmbuff)

FilmBuff provides comprehensive writing standards, screenplay tools, and AI-powered shot list generation for screenwriters and creative professionals.

## 🎯 Purpose

FilmBuff extends Augment Code AI with **1M+ characters** of writing guidelines, 60+ cinematic style guides, 18+ genre modules, and AI-powered production tools.

## 📦 Modules

### writing-standards/screenplay/

- **Core** — Universal formatting, narrative structures, character development, dialogue, continuity
- **13 Narrative Styles** — Linear, non-linear, ensemble, minimalist, epic, satirical, poetic, realistic, surreal, experimental, voice-over, flashback, dialogue-centric
- **60+ Cinematic Styles** — Director guides, franchise guides, comedy formats, narrative theory
- **18+ Genres** — Action, comedy, drama, fantasy, horror, mystery, romance, sci-fi, thriller, and more
- **Commercials** — Commercial writing rules with FTC compliance validation
- **Schemas** — Character profiles, beat sheets, plot outlines, trope inventories
- **Templates** — Genre, style, and theme templates

### writing-standards/literature/

- **Shakespeare** — Literary analysis module

### workflows/

- **Beads** — Task tracking workflow
- **Beads Integration** — Beads configuration and rules

## 🚀 Quick Start

```bash
npm install -g @mytechtoday/filmbuff
filmbuff --version
filmbuff init
filmbuff link writing-standards/screenplay
filmbuff generate-shot-list script.fountain
```

## 📥 Installation

Install FilmBuff globally with npm so the `filmbuff` command is added to your shell path:

```bash
npm install -g @mytechtoday/filmbuff
filmbuff --help
```

If your shell still does not recognize `filmbuff` immediately after install, open a new terminal so it reloads the global npm bin path.

## 🔧 CLI Commands

| Command | Description |
|---------|-------------|
| `filmbuff init` | Initialize in a project |
| `filmbuff link <module>` | Link writing modules |
| `filmbuff list` | List available modules |
| `filmbuff show <module>` | Display module content |
| `filmbuff search <term>` | Search for modules |
| `filmbuff generate-shot-list` | AI-powered shot list generation |
| `filmbuff generate-treatment` | AI-powered treatment generation |
| `filmbuff validate` | Validate module structure |
| `filmbuff upgrade` | Upgrade to latest version |

## 📄 License

MIT — see [LICENSE](./LICENSE)