open-index/open-npm huggingface dataset:
npm package: @summa-ledger/cli
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2

# @summa-ledger/cli

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Command-line interface for the Summa ledger.

## Installation

```bash
npm install -g @summa-ledger/cli
```

## Usage

```bash
# Initialize a new Summa project
summa init

# Generate migrations and types
summa generate

# Run database migrations
summa migrate

# Check ledger status
summa status

# Verify ledger integrity
summa verify

# Show environment info
summa info

# Manage secrets
summa secret

# Toggle anonymous telemetry
summa telemetry on|off
```

### Options

```bash
summa --cwd <dir>          # Set working directory
summa -c, --config <path>  # Path to summa config file
summa -v, --version        # Show version
```

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/client
Description: Type-safe client SDK for the Summa ledger API
Latest version: 0.2.2

# @summa-ledger/client

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Type-safe HTTP client SDK for the Summa ledger API.

## Installation

```bash
npm install @summa-ledger/client
```

## Usage

```ts
import { createSummaClient } from "@summa-ledger/client";

const client = createSummaClient({
  baseURL: "http://localhost:3000/api/ledger",
  headers: { Authorization: "Bearer token" },
});

const account = await client.accounts.create({
  holderId: "user_123",
  holderType: "individual",
});

const balance = await client.accounts.getBalance("user_123");
```

### Framework Integrations

```ts
// React
import { createSummaClient } from "@summa-ledger/client/react";

// Vue
import { createSummaClient } from "@summa-ledger/client/vue";

// Svelte
import { createSummaClient } from "@summa-ledger/client/svelte";
```

### Proxy Client

```ts
import { createSummaProxyClient } from "@summa-ledger/client/proxy";
```

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/core
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2

# @summa-ledger/core

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Shared types, error system, and utilities for the Summa ledger ecosystem.

## Installation

```bash
npm install @summa-ledger/core
```

## Usage

```ts
import { SummaError, createErrorCodes } from "@summa-ledger/core";
import type { Account, LedgerTransaction, SummaOptions } from "@summa-ledger/core";
```

### Error System

```ts
import { SummaError, BASE_ERROR_CODES } from "@summa-ledger/core";

throw new SummaError("ACCOUNT_NOT_FOUND", "No account for holder");
```

### Sub-path Exports

| Export             | Description                          |
| ------------------ | ------------------------------------ |
| `@summa-ledger/core`      | Core types and error classes         |
| `@summa-ledger/core/db`   | Database adapter interfaces, `SqlExecutor`, pool types, read replicas |
| `@summa-ledger/core/error` | Error codes and `SummaError`        |
| `@summa-ledger/core/logger` | Logger interface                   |
| `@summa-ledger/core/utils` | Internal utilities                  |

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/drizzle-adapter
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2

# @summa-ledger/drizzle-adapter

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Drizzle ORM database adapter for the Summa ledger.

## Installation

```bash
npm install @summa-ledger/drizzle-adapter drizzle-orm
```

## Usage

```ts
import { createSumma } from "@summa-ledger/summa";
import { drizzleAdapter } from "@summa-ledger/drizzle-adapter";
import { drizzle } from "drizzle-orm/node-postgres";

const db = drizzle(process.env.DATABASE_URL);

const summa = createSumma({
  database: drizzleAdapter(db),
  currency: "USD",
  systemAccounts: { world: "@World" },
});
```

### Schema Export

The package also exports the Drizzle table schema:

```ts
import { schema } from "@summa-ledger/drizzle-adapter/schema";
```

### Peer Dependencies

- `drizzle-orm` >= 0.41.0
- `pg` ^8.0.0 (optional)

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/kysely-adapter
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2

# @summa-ledger/kysely-adapter

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Kysely database adapter for the Summa ledger.

## Installation

```bash
npm install @summa-ledger/kysely-adapter kysely
```

## Usage

```ts
import { createSumma } from "@summa-ledger/summa";
import { kyselyAdapter } from "@summa-ledger/kysely-adapter";
import { Kysely, PostgresDialect } from "kysely";
import { Pool } from "pg";

const db = new Kysely({
  dialect: new PostgresDialect({ pool: new Pool() }),
});

const summa = createSumma({
  database: kyselyAdapter(db),
  currency: "USD",
  systemAccounts: { world: "@World" },
});
```

### Connection Pooling

The package exports `createPooledAdapter` and `RECOMMENDED_POOL_CONFIG` for production-ready pool management:

```ts
import {
  createPooledAdapter,
  RECOMMENDED_POOL_CONFIG,
} from "@summa-ledger/kysely-adapter";
```

### Peer Dependencies

- `kysely` ^0.27.0 || ^0.28.0

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/memory-adapter
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2
Deprecated: The memory adapter does not support raw SQL queries used by Summa managers. Use @summa-ledger/drizzle-adapter with a real PostgreSQL instance for testing.

# @summa-ledger/memory-adapter

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

In-memory database adapter for the Summa ledger. Designed for unit testing -- no external database required.

## Installation

```bash
npm install @summa-ledger/memory-adapter
```

## Usage

```ts
import { createSumma } from "@summa-ledger/summa";
import { memoryAdapter } from "@summa-ledger/memory-adapter";

const summa = createSumma({
  database: memoryAdapter(),
  currency: "USD",
  systemAccounts: { world: "@World" },
});
```

### With @summa-ledger/test-utils

```ts
import { getTestInstance } from "@summa-ledger/test-utils";
import { memoryAdapter } from "@summa-ledger/memory-adapter";

const { summa, cleanup } = await getTestInstance({
  adapter: memoryAdapter(),
});

// ... run tests ...

await cleanup();
```

**Note:** This adapter stores all data in memory and is not suitable for production use.

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/prisma-adapter
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2

# @summa-ledger/prisma-adapter

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Prisma Client database adapter for the Summa ledger.

## Installation

```bash
npm install @summa-ledger/prisma-adapter @prisma/client
```

## Usage

```ts
import { createSumma } from "@summa-ledger/summa";
import { prismaAdapter } from "@summa-ledger/prisma-adapter";
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

const summa = createSumma({
  database: prismaAdapter(prisma),
  currency: "USD",
  systemAccounts: { world: "@World" },
});
```

### Peer Dependencies

- `@prisma/client` ^5.0.0 || ^6.0.0

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/summa
Description: Event-sourced double-entry financial ledger for TypeScript — EXPERIMENTAL, not yet production-ready
Latest version: 0.2.2

# summa

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Event-sourced double-entry financial ledger for TypeScript.

## Installation

```bash
npm install @summa-ledger/summa
```

## Usage

```ts
import { createSumma } from "@summa-ledger/summa";
import { drizzleAdapter } from "@summa-ledger/drizzle-adapter";

const summa = createSumma({
  database: drizzleAdapter(db),
  currency: "USD",
  systemAccounts: { world: "@World" },
});

// Create an account
const account = await summa.accounts.create({
  holderId: "user_123",
  holderType: "individual",
});

// Post a transaction
const tx = await summa.transactions.create({
  type: "deposit",
  amount: 5000,
  destinationId: "user_123",
});
```

### Sub-path Exports

| Export              | Description                          |
| ------------------- | ------------------------------------ |
| `summa`             | `createSumma` and core re-exports   |
| `summa/plugins`     | Plugin system                        |
| `summa/types`       | Type definitions                     |
| `summa/api`         | API handler utilities                |
| `summa/api/hono`    | Hono framework integration           |
| `summa/api/express` | Express framework integration        |
| `summa/api/fetch`   | Fetch-based handler                  |
| `summa/api/next`    | Next.js integration                  |
| `summa/api/fastify` | Fastify framework integration        |
| `summa/webhooks`    | Webhook support                      |

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/telemetry
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.2.2

# @summa-ledger/telemetry

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Anonymous usage analytics for the Summa CLI.

## Installation

```bash
npm install @summa-ledger/telemetry
```

## Usage

```ts
import { createTelemetry } from "@summa-ledger/telemetry";

const telemetry = createTelemetry({ version: "0.1.0" });

telemetry.track("cli.command", { command: "migrate" });
```

### Telemetry State

Telemetry is opt-in and disabled by default. Users can enable it via `summa telemetry on`.

```ts
import { isTelemetryEnabled, readTelemetryState, writeTelemetryState } from "@summa-ledger/telemetry";

if (isTelemetryEnabled()) {
  // telemetry is active
}
```

Events are fire-and-forget -- they never block the CLI or throw errors.

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summa-ledger/test-utils
Description: > **Warning** > This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.
Latest version: 0.1.0

# @summa-ledger/test-utils

> **Warning**
> This package is under active development and in a **highly experimental stage**. APIs may change without notice. Extensive testing is still pending — **do not use in production** until a stable release is announced.

Testing utilities and assertions for the Summa ledger.

## Installation

```bash
npm install -D @summa-ledger/test-utils @summa-ledger/memory-adapter
```

## Usage

```ts
import { getTestInstance, assertDoubleEntryBalance } from "@summa-ledger/test-utils";
import { memoryAdapter } from "@summa-ledger/memory-adapter";

const { summa, cleanup } = await getTestInstance({
  adapter: memoryAdapter(),
});

// Create accounts and transactions...
const account = await summa.accounts.create({
  holderId: "user_1",
  holderType: "individual",
});

// Assert the double-entry invariant (all balances sum to zero)
await assertDoubleEntryBalance(summa);

// Cleanup after tests
await cleanup();
```

### Assertions

| Function                     | Description                                     |
| ---------------------------- | ----------------------------------------------- |
| `assertDoubleEntryBalance`   | Verifies all account balances sum to zero        |
| `assertAccountBalance`       | Checks a specific account's expected balance     |
| `assertHashChainValid`       | Validates the event store hash chain integrity   |

### Peer Dependencies

- `vitest` >= 2.0.0 (optional)

## Documentation

Full documentation available at [https://summa.dev](https://summa.dev).

## License

MIT
npm package: @summalytics/js
Description: Privacy-first analytics SDK for JavaScript and TypeScript
Latest version: 0.1.5

# @summalytics/js

Privacy-first analytics SDK for JavaScript and TypeScript. Works in any browser environment — no cookies, no PII.

## Install

```bash
npm install @summalytics/js
```

## Usage

```ts
import { createSummalytics } from '@summalytics/js'

const analytics = createSummalytics({
  writeKey: 'YOUR_WRITE_KEY',
  // endpoint defaults to https://summalytics.ai/api/ingest
})

// Track a custom event
analytics.track('signup_completed', { value: 1 })

// Track a pageview manually
analytics.pageview({ path: '/pricing' })

// Track a tagged landing URL
analytics.pageview({ path: '/?utm_source=quizgeniusai&utm_medium=referral&utm_campaign=footer' })
```

## Server-side crawler capture (Next.js middleware / edge)

Track pageviews from server/edge requests so crawler traffic is captured even when bots do not execute JavaScript.

```ts
// middleware.ts
import { NextResponse, type NextRequest } from 'next/server'
import { isAiCrawlerUserAgent, trackServerPageview } from '@summalytics/js'

export async function middleware(request: NextRequest) {
  const ua = request.headers.get('user-agent')

  if (isAiCrawlerUserAgent(ua)) {
    // fire-and-forget to avoid impacting response latency
    void trackServerPageview(
      {
        writeKey: process.env.NEXT_PUBLIC_SUMMALYTICS_KEY!,
        endpoint: 'https://summalytics.ai/api/ingest',
      },
      {
        url: request.url,
        userAgent: ua,
        referrer: request.headers.get('referer'),
        ip: request.headers.get('x-forwarded-for'),
        country: request.headers.get('x-vercel-ip-country'),
        city: request.headers.get('x-vercel-ip-city'),
        onlyIfAiCrawler: true,
      },
    )
  }

  return NextResponse.next()
}
```

`trackServerPageview` forwards:
- `x-summalytics-origin` (for domain allow-list validation)
- original `user-agent` (for crawler classification)
- optional IP/country/city headers for geo enrichment

By default, one pageview is fired automatically on `createSummalytics()` in browser environments using `pathname + search` (query string included). Disable it with `autoPageview: false`.

```ts
const analytics = createSummalytics({
  writeKey: 'YOUR_WRITE_KEY',
  autoPageview: false,
})
```

## Config

| Option | Type | Default | Description |
|---|---|---|---|
| `writeKey` | `string` | required | Your project write key |
| `endpoint` | `string` | `https://summalytics.ai/api/ingest` | Ingest endpoint |
| `autoPageview` | `boolean` | `true` | Fire a pageview on init |

Additional exports:
- `isAiCrawlerUserAgent(userAgent)` — checks UA against known AI crawler signatures
- `trackServerPageview(config, payload)` — sends pageviews from server/edge environments

## Self-hosting

If you run your own Summalytics instance, pass your endpoint:

```ts
const analytics = createSummalytics({
  writeKey: 'YOUR_WRITE_KEY',
  endpoint: 'https://yourapp.com/api/ingest',
})
```

## License

MIT
npm package: @summalytics/react
Description: Privacy-first analytics SDK for React and Next.js
Latest version: 0.1.4

# @summalytics/react

Privacy-first analytics for React and Next.js. No cookies, no PII. Full TypeScript support.

## Install

```bash
npm install @summalytics/react
```

## Setup

Wrap your app with `SummalyticsProvider`:

```tsx
// app/layout.tsx (Next.js App Router)
import { SummalyticsProvider } from '@summalytics/react'

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html>
      <body>
        <SummalyticsProvider config={{ writeKey: 'YOUR_WRITE_KEY' }}>
          {children}
        </SummalyticsProvider>
      </body>
    </html>
  )
}
```

## Track pageviews (Next.js App Router)

Use `useAutoPageview` in a client component that receives the current pathname:

```tsx
// components/analytics.tsx
'use client'

import { useAutoPageview } from '@summalytics/react'
import { usePathname, useSearchParams } from 'next/navigation'

export function Analytics() {
  const pathname = usePathname()
  const search = useSearchParams().toString()

  useAutoPageview(pathname, search)
  return null
}
```

Then render it inside your layout (inside the provider):

```tsx
<SummalyticsProvider config={{ writeKey: 'YOUR_WRITE_KEY' }}>
  <Analytics />
  {children}
</SummalyticsProvider>
```

## Track custom events

```tsx
'use client'

import { useSummalytics } from '@summalytics/react'

export function SignupButton() {
  const { track } = useSummalytics()

  return (
    <button onClick={() => track('signup_completed', { value: 1 })}>
      Sign up
    </button>
  )
}
```

## API

### `SummalyticsProvider`

| Prop | Type | Description |
|---|---|---|
| `config.writeKey` | `string` | Your project write key |
| `config.endpoint` | `string` | Optional. Defaults to `https://summalytics.ai/api/ingest` |
| `config.autoPageview` | `boolean` | Optional. Pass `false` to disable the initial pageview |

### `useSummalytics()`

Returns `{ track, pageview }`.

- `track(eventName, payload?)` — fire a custom event
- `pageview(payload?)` — fire a pageview manually

### `useAutoPageview(pathname?, search?)`

Fires a pageview whenever `pathname` or `search` changes. Deduplicates consecutive calls to the same path.

## License

MIT
npm package: @summary.shop/react-tab
Description: [![CircleCI](https://circleci.com/gh/nju33/react-tab.svg?style=svg&circle-token=9c6b0217483ac8aca3220b42a652f08e0b36cfa4)](https://circleci.com/gh/nju33/react-tab) [![nju33/react-tab](https://img.shields.io/npm/v/nju33/react-tab.svg)](https://www.npmjs.co
Latest version: 0.0.1

# @summary.shop/react-tab

[![CircleCI](https://circleci.com/gh/nju33/react-tab.svg?style=svg&circle-token=9c6b0217483ac8aca3220b42a652f08e0b36cfa4)](https://circleci.com/gh/nju33/react-tab)
[![nju33/react-tab](https://img.shields.io/npm/v/nju33/react-tab.svg)](https://www.npmjs.com/package/nju33/react-tab)
[![style: styled-components](https://img.shields.io/badge/style-%F0%9F%92%85%20styled--components-orange.svg?colorB=daa357&colorA=db748e)](https://github.com/styled-components/styled-components)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

## Install

```bash
yarn add @summary.shop/react-tab react styled-components
```
npm package: @summary.shop/react-top-menu
Description: [![CircleCI](https://circleci.com/gh/nju33/react-top-menu.svg?style=svg&circle-token=9c6b0217483ac8aca3220b42a652f08e0b36cfa4)](https://circleci.com/gh/nju33/react-top-menu) [![nju33/react-top-menu](https://img.shields.io/npm/v/nju33/react-top-menu.svg)](
Latest version: 0.0.1

# @summary.shop/react-top-menu

[![CircleCI](https://circleci.com/gh/nju33/react-top-menu.svg?style=svg&circle-token=9c6b0217483ac8aca3220b42a652f08e0b36cfa4)](https://circleci.com/gh/nju33/react-top-menu)
[![nju33/react-top-menu](https://img.shields.io/npm/v/nju33/react-top-menu.svg)](https://www.npmjs.com/package/nju33/react-top-menu)
[![style: styled-components](https://img.shields.io/badge/style-%F0%9F%92%85%20styled--components-orange.svg?colorB=daa357&colorA=db748e)](https://github.com/styled-components/styled-components)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

## Install

```bash
yarn add @summary.shop/react-top-menu react styled-components
```
npm package: @summer-health/linear-cli
Description: CLI tool for interacting with Linear
Author: John Dockery
Latest version: 1.0.3

# Linear CLI

A command-line interface for interacting with Linear.

## Installation

```bash
npm install -g @summer-health/linear-cli
```

## Configuration

You can provide your Linear API key in several ways (in order of priority):

1. Command-line argument:

```bash
linear --api-key your_api_key_here list-teams
```

2. Environment variable:

```bash
export LINEAR_API_KEY=your_api_key_here
linear list-teams
```

3. Configuration file (recommended):

```bash
linear init --api-key your_api_key_here
```

This will save your API key in `~/.linear-cli` for future use.

You can get your API key from Linear by going to Settings > API > Create Key.

## Usage

### Initialize Configuration

```bash
linear init --api-key your_api_key_here
```

### List Teams

```bash
linear list-teams [--json]
```

### List Projects

```bash
linear list-projects [--json] [--team <teamId>]
```

### Create Issue

```bash
linear create-issue -t "Issue title" -p <projectId> --team-id <teamId> [options]

Options:
  -d, --description <description>  Issue description
  -s, --state-id <stateId>        State ID
  --labels <labels>               Comma-separated list of label IDs
  --assignee <assigneeId>         Assignee user ID
  --priority <priority>           Issue priority (0-4)
```

### Update Issue

```bash
linear update-issue -i <issueId> [options]

Options:
  -t, --title <title>            New title
  -d, --description <description> New description
  -s, --state-id <stateId>       New state ID
  --labels <labels>              Comma-separated list of label IDs
  --assignee <assigneeId>        Assignee user ID
  --priority <priority>          Issue priority (0-4)
```

### Get Issue Details

```bash
linear get-issue -i <issueId> [--json]
```

## Examples

Initialize configuration:

```bash
linear init --api-key lin_api_xxxxxxxxxxxx
```

List all teams:

```bash
linear list-teams
```

Create a new issue:

```bash
linear create-issue -t "Fix login bug" -p proj_123 --team-id team_456 -d "Users can't login on Safari" --priority 2
```

Get issue details:

```bash
linear get-issue -i issue_789
```

## License

ISC
npm package: @summer_dream_lab/sdl-design
Description: Company-level design skills for SDL: design router + project-specific skills (Generation-AI, HSYLC-Web). For designers and front-end devs to generate design drafts or code that matches project design systems.
Latest version: 1.0.0

# sdl-design

SDL 公司级设计规范 Skill，用于 Cursor / AI 助手：根据项目设计规范生成设计稿或符合项目风格的页面代码。

## 适用用户

- **设计师**：无项目代码时，可依据各项目 skill 内的设计规范与页面示例，自动生成符合该项目的设计稿。
- **前端开发**：可依据当前项目的设计说明与示例，在没有设计稿的情况下自动生成符合项目风格的页面与组件。

## 包含内容

- **sdl-design 路由**（根目录 `SKILL.md`）：识别项目（generation-ai / hsylc-web 等），并引导使用对应项目 skill。
- **generation-ai**：Generation-AI（ai）项目设计规范与页面示例。
- **hsylc-web**：峰会官网（峰会 / hsylc）设计规范与页面示例，表单以 FormRe 为准。

## 安装

```bash
npm install @summer_dream_lab/sdl-design
```

## 使用（Cursor Skills）

安装后，将本包中的 skill 目录接入 Cursor 的 skills 配置即可使用：

1. 找到本包所在目录（如 `node_modules/@summer_dream_lab/sdl-design`）。
2. 将该目录**整体**复制或链接到你的 Cursor skills 目录下，例如：
   - 全局：`~/.cursor/skills/sdl-design`
   - 或你当前使用的同步/配置目录中的 `skills/sdl-design`。
3. 确保目录内包含根级 `SKILL.md` 以及子目录 `generation-ai`、`hsylc-web`（含各自 `SKILL.md` 与 `examples/` 等）。

接入后，在 Cursor 中提及「generation-ai / ai 设计」「峰会 / hsylc 设计」等，即可由对应 skill 提供设计规范与示例。

## 版本与发布

- 版本号见 `package.json` 的 `version`。
- 发布到 npm：在 `sdl-design` 目录下执行 `npm publish`（需已 `npm login` 且对包名有权限）。

## License

MIT