open-index/open-npm huggingface dataset:
npm package: @openbook/overwrite
Description: Forget monkey-patching your dependencies. Completely rewrite any file in a third-party package/module on-the-fly!
Author: Luke Horvat
Latest version: 1.0.5

# overwrite [![NPM version](http://img.shields.io/npm/v/overwrite.svg?style=flat-square)](https://www.npmjs.org/package/overwrite)

Forget monkey-patching your dependencies. Completely _rewrite_ any file in a third-party package/module on-the-fly!

Works with NPM v3+; untested on earlier versions.

## Installation

Install the package with NPM:

```bash
$ npm install overwrite
```

## Usage

As an example, consider the following code:

```javascript
import isInteger from "is-integer";

console.log(isInteger(1)); // => true
console.log(isInteger(2)); // => true
```

If you wanted to modify/tweak the functionality of the third-party `is-integer` module (for some reason), you'd normally have three options:

1. Attempt to programmatically monkey-patch the module.
2. Fork the module, submit a patch to the original repository, and pray that it is merged.
3. Fork the module and publish your changes as a separate NPM package.

This package introduces a powerful _fourth_ option – overwrite specific files in the module on-the-fly at runtime! For example:

```javascript
import overwrite from "overwrite";

const isInteger = overwrite("is-integer", {
  "index.js": `
    module.exports = function(value) {
      return value === 1;
    }
  `
});

console.log(isInteger(1)); // => true
console.log(isInteger(2)); // => false
```

As can be seen, this package exposes a function that accepts a module name (string) as the first argument, and a mapping (object literal) of relative file paths to file contents as the second. The return value is the module itself (as if you called `require` or `import`), but with all of the overwrites applied. In this particular example, the `index.js` file in the third-party `is-integer` package is completely overwritten with new code that behaves very differently.

## Tip

Most of the time, you probably won't want to _completely_ overwrite the contents of a file, you'll just want to change a few lines here and there. You can easily do this by simply mapping the relative file path to a transformation function (instead of a string). Here's an example:

```javascript
import overwrite from "overwrite";

const isInteger = overwrite("is-integer", {
  "index.js": contents => {
    let lines = contents.split("\n");
    lines.splice(3, 1, `console.log("Hello!");`);
    return lines.join("\n");
  }
});
```
npm package: @openbooklet/mcp-server
Description: OpenBooklet MCP Server — Browse, search, and pull AI agent skills from any MCP-compatible client
Latest version: 0.2.0

# @openbooklet/mcp-server

MCP server for OpenBooklet — browse, search, and pull AI agent skills, workflows, and memory packs from any MCP-compatible client (Claude Code, Cursor, Windsurf, etc.).

## Tools

| Tool | Description |
|------|-------------|
| `search_skills` | Search the registry by keyword, category, and asset type |
| `get_skill` | Get full metadata for a specific skill |
| `pull_skill` | Pull raw skill content for injection into context |
| `trending_skills` | Get top trending assets this week (filterable by type) |
| `resolve_dependencies` | Resolve the full dependency tree for one or more skills |
| `pull_workflow` | Pull the raw instructions of a workflow |
| `pull_workflow_bundle` | Pull a workflow + ALL locked dependencies as a single bundle |
| `pull_memory_pack` | Pull a memory pack with subtype metadata |
| `get_workflow` | Get workflow details including dependency tree and lock status |
| `get_memory_pack` | Get memory pack details including subtype and compatible skills |
| `pull_directory` | Pull all assets in a public directory as a single bundle |

## Resources

| Resource | URI Pattern |
|----------|-------------|
| `skill` | `openbooklet://skills/{name}` |
| `workflow` | `openbooklet://workflows/{name}` |
| `workflow_bundle` | `openbooklet://workflows/{name}/bundle` |
| `memory_pack` | `openbooklet://memory-packs/{name}` |

## Install

### Claude Code

Add to your Claude Code settings:

```json
{
  "mcpServers": {
    "openbooklet": {
      "command": "npx",
      "args": ["-y", "@openbooklet/mcp-server"]
    }
  }
}
```

### Cursor

Add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "openbooklet": {
      "command": "npx",
      "args": ["-y", "@openbooklet/mcp-server"]
    }
  }
}
```

## Development

```bash
npm install
npm run dev
```

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `OPENBOOKLET_URL` | `https://openbooklet.com` | Base URL for API calls |