open-index/open-npm huggingface dataset:
npm package: @mattli/dotmd
Description: Track changes to AI instruction files (CLAUDE.md, AGENTS.md, memory files)
Author: Matt Li
Latest version: 0.1.6

# dotmd

Track changes to your AI instruction files.

If you use Claude Code, Cursor, Codex, or similar tools, you've accumulated markdown files that control how AI behaves: `CLAUDE.md`, `AGENTS.md`, memory files, skill configs. These files live in scattered locations, get modified by both you and AI agents, and have no change history.

dotmd watches these files and keeps a local history of every change, with diffs. A web dashboard lets you see what changed, when, and across which projects.

![dotmd dashboard](https://raw.githubusercontent.com/mattli/dotmd/main/docs/screenshot.png)

## Install

```bash
npm install -g @mattli/dotmd
```

Requires Node.js 18+.

## Quick Start

```bash
dotmd init
```

This opens a setup wizard in your browser where you pick which folders and file patterns to track. Once you confirm, dotmd takes an initial snapshot of all discovered files.

To view your files and change history:

```bash
dotmd serve
```

This starts a local dashboard at `http://localhost:3333`.

## Commands

| Command | Description |
|---------|-------------|
| `dotmd init` | Launch the setup wizard |
| `dotmd status` | Scan for changes and show a summary in the terminal |
| `dotmd serve` | Start the web dashboard |

## What It Tracks

By default, dotmd looks for:

- `CLAUDE.md` (Claude Code)
- `AGENTS.md` (Codex)
- `MEMORY.md`
- `SKILL.md` (Codex skills)
- `.cursorrules` (Cursor)
- `.windsurfrules` (Windsurf)

You can add custom patterns and folders through the setup wizard or the settings page in the dashboard.

## How It Works

dotmd scans your configured folders for matching files and stores snapshots in a local SQLite database at `~/.dotmd/history.db`. When a file changes, it saves the new version and a diff. The dashboard rescans on every page load, so you always see current data.

All data stays on your machine. Nothing is sent anywhere.

## Configuration

Settings are managed through the dashboard's settings page. Config is stored at `~/.dotmd/config.yaml`.

## Uninstall

```bash
npm uninstall -g dotmd
rm -rf ~/.dotmd
```

## Feedback

Questions, suggestions, or bugs? [Open an issue](https://github.com/mattli/dotmd/issues).

## License

MIT
npm package: @mattman240/portfolio-sdk
Description: Server-side SDK for sending MM Labs portfolio events.
Latest version: 0.1.1

# `@mattman240/portfolio-sdk`

Tiny server-side SDK for sending MM Labs portfolio events from your apps.

## Install

```bash
npm install @mattman240/portfolio-sdk
```

## Usage

```ts
import { createPortfolioClient } from "@mattman240/portfolio-sdk";

const portfolio = createPortfolioClient({
  ingestKey: process.env.PORTFOLIO_INGEST_KEY!,
  businessSlug: process.env.PORTFOLIO_BUSINESS_SLUG!,
});

await portfolio.trackUserCreated({
  userId: "user_123",
  email: "founder@example.com",
  occurredAt: Date.now(),
});
```

## Methods

- `sendEvent(event)`
- `trackUserCreated(input)`
- `trackSubscriptionStarted(input)`
- `trackSubscriptionCanceled(input)`
- `trackRevenueRecorded(input)`

## Notes

- Use this server-side only.
- MM Labs currently prefers direct Stripe sync for billing truth.
- The SDK is best for app-originated events like account creation.
- By default, the SDK sends events to the MM Labs production ingest endpoint. You only need to pass `ingestUrl` if you want to override it for another environment.