open-index/open-npm huggingface dataset:
npm package: @jiaminghi/charts
Description: Lightweight charting
Author: JiaMing
Latest version: 0.2.18

[ENGLISH](./README_EN.md)

<h1 align="center">Charts</h1>

<p align="center">
    <a href="https://github.com/DataV-Team/charts/blob/master/LICENSE">
        <img src="https://img.shields.io/github/license/DataV-Team/charts.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/charts">
        <img src="https://img.shields.io/npm/v/@jiaminghi/charts.svg" alt="LICENSE" />
    </a>
</p>

### Charts是干什么的?

- 它是一个基于**canvas**的`轻量`图表库.

### 支持

* `折线图`
* `柱状图`
* `饼状图`
* `雷达图`
* `仪表盘`

### npm安装

```shell
$ npm install @jiaminghi/charts
```

### 使用

```javascript
import Charts from '@jiaminghi/charts'

const container = document.getElementById('container')

const myChart = new Charts(container)

myChart.setOption({
  title: 'My Chart',
  // ...otherConfig
})
```

详细文档及示例请移步[HomePage](http://charts.jiaminghi.com).

### 快速体验

```html
<!--资源位于个人服务器仅供体验和测试，请勿在生产环境使用-->
<!--调试版-->
<script src="http://lib.jiaminghi.com/charts/charts.map.js"></script>
<!--压缩版-->
<script src="http://lib.jiaminghi.com/charts/charts.min.js"></script>
<script>
  const Charts = window.Charts.default
  // do something
</script>
```
npm package: @jiaminghi/data-view
Description: Vue Large screen data display component library
Author: JiaMing
Latest version: 2.10.0

[ENGLISH](./README_EN.md)

<p align="center">
  <img src="./icon.png">
</p>
<h1 align="center">DataV</h1>
<p align="center">
    <a href="https://github.com/DataV-Team/datav/blob/master/LICENSE">
      <img src="https://img.shields.io/github/license/DataV-Team/datav.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/data-view">
      <img src="https://img.shields.io/npm/v/@jiaminghi/data-view.svg" alt="LICENSE" />
    </a>
</p>

## DataV是干什么的?

* DataV是一个基于**Vue**的数据可视化组件库（当然也有[React版本](https://github.com/DataV-Team/DataV-React)）
* 提供用于提升页面视觉效果的**SVG**边框和装饰
* 提供常用的**图表**如折线图等
* 飞线图/轮播表等其他组件

### npm安装

```shell
$ npm install @jiaminghi/data-view
```

### 使用

```js
import Vue from 'vue'
import DataV from '@jiaminghi/data-view'

Vue.use(DataV)

// 按需引入
import { borderBox1 } from '@jiaminghi/data-view'
Vue.use(borderBox1)
```

详细文档及示例请移步[HomePage](http://datav.jiaminghi.com).

### UMD版

`UMD`版可直接使用`script`标签引入，`UMD`版文件位于项目`dist`目录下，引入后将自动把所有组件注册为**Vue全局组件**，引入`DataV`前请确保已引入`Vue`。

[UMD版使用示例](./umdExample.html)

### TODO

* **地图组件**
* **TS**重构组件库底层依赖

### 致谢

组件库的开发基于个人学习和兴趣，由于技术水平及经验的限制，组件尚有许多不完善之处，如有BUG可及时提交[issue](https://github.com/DataV-Team/DataV/issues/new?template=bug_report.md)或添加反馈群进行反馈，也欢迎提供指正和建议，感谢各位的支持。

### 反馈
![Feedback](./QQGroup.png)

### Demo

Demo页面使用了全屏组件，请F11全屏后查看。

* [施工养护综合数据](http://datav.jiaminghi.com/demo/construction-data/index.html)

![construction-data](./demoImg/construction-data.jpg)

* [机电运维管理台](http://datav.jiaminghi.com/demo/manage-desk/index.html)

![manage-desk](./demoImg/manage-desk.jpg)

* [机电设备电子档案](http://datav.jiaminghi.com/demo/electronic-file/index.html)

![electronic-file](./demoImg/electronic-file.jpg)
npm package: @jiaminghi/data-view-react
Description: React Large screen data display component library
Author: Duan Yu
Latest version: 1.2.5

[ENGLISH](./README_EN.md)

<p align="center">
  <img src="./icon.png">
</p>
<h1 align="center">DataV-React</h1>
<p align="center">
    <a href="https://github.com/DataV-Team/Datav-React/blob/master/LICENSE">
      <img src="https://img.shields.io/github/license/DataV-Team/datav-react.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/data-view-react">
      <img src="https://img.shields.io/npm/v/@jiaminghi/data-view-react.svg" alt="LICENSE" />
    </a>
</p>

## DataV-React 是干什么的?

- DataV-React 是一个基于**React**的数据可视化组件库(当然也有[Vue 版本](https://github.com/DataV-Team/DataV))
- 提供用于提升页面视觉效果的**SVG**边框和装饰
- 提供常用的**图表**如折线图等
- 飞线图/轮播表等其他组件

### 注意事项

**使用了 React Hooks, 简化了许多内部工作。您需要 React 版本 16.8.0 及以上**

### npm 安装

```shell
$ npm install @jiaminghi/data-view-react
```

### 使用

```js
import * as datav from "@jiaminghi/data-view-react";

datav.BorderBox1;

// 或者
import { BorderBox1 } from "@jiaminghi/data-view-react";

// 按需引入
import BorderBox1 from "@jiaminghi/data-view-react/es/borderBox1";
```

详细文档及示例请移步[HomePage](http://datav-react.jiaminghi.com).

### UMD 版

`UMD`版可直接使用`script`标签引入，引入后通过**datav**命名空间使用对应的组件，引入`data-view-react`前请确保已引入`react 和 react-dom`。

[UMD 版使用示例](./umdExample.html)

### TODO

* **地图组件**
* **TS**重构组件库底层依赖

### 致谢

组件库的开发基于个人学习和兴趣，由于技术水平及经验的限制，组件尚有许多不完善之处，如有 BUG 可及时提交[issue](https://github.com/DataV-Team/DataV-React/issues/new?template=bug_report.md)或添加反馈群进行反馈，也欢迎提供指正和建议，感谢各位的支持。

### 反馈

![Feedback](./QQGroup.png)

### Demo

Demo 页面使用了全屏组件，请 F11 全屏后查看。

- [施工养护综合数据](http://datav-react.jiaminghi.com/demo/construction-data/index.html)

![construction-data](./demoImg/construction-data.jpg)

- [机电运维管理台](http://datav-react.jiaminghi.com/demo/manage-desk/index.html)

![manage-desk](./demoImg/manage-desk.jpg)

- [机电设备电子档案](http://datav-react.jiaminghi.com/demo/electronic-file/index.html)

![electronic-file](./demoImg/electronic-file.jpg)
npm package: @jiaminghi/fs
Description: Promise fs based on node.js fs
Author: JiaMing
Latest version: 0.1.1

[ENGLISH](./README_EN.md)

<h1 align="center">FS</h1>

<p align="center">
    <a href="https://github.com/jiaming743/FS/blob/master/LICENSE">
      <img src="https://img.shields.io/github/license/jiaming743/FS.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/fs">
      <img src="https://img.shields.io/npm/v/@jiaminghi/fs.svg" alt="LICENSE" />
    </a>
</p>

### 使用 Promise 封装了一些常用的文件系统方法（基于 Node.js 的 fs 文件系统）

- **[stat](#stat)**

  读取文件状态

- **[mkDir](#mkDir)**

  创建文件夹

- **[access](#access)**

  连接文件

- **[copyDir](#copyDir)**

  复制文件夹到指定位置，若文件夹已存在将被清空后进行复制操作

- **[readDir](#readDir)**

  读取文件夹

- **[clearDir](#clearDir)**

  递归清空文件夹，若文件夹不存在将被创建

- **[emptyDir](#emptyDir)**

  递归清空文件夹

- **[readFile](#readFile)**

  读取文件

- **[writeFile](#writeFile)**

  写入文件

- **[dirForEach](#dirForEach)**

  遍历文件夹

- **[fileForEach](#fileForEach)**

  递归遍历文件

- **[unlinkDirFileByExtname](#unlinkDirFileByExtname)**

  递归删除指定 extname 的文件

### npm 安装

```shell
$ npm install @jiaminghi/fs
```

### 使用

```javascript
import { readFile } from '@jiaminghi/fs'

// do something
```

<h3 align="center">示例</h3>

#### stat

```typescript
type stat = (
  path: fs.PathLike,
  options: fs.StatOptions = { bigint: false }
) => Promise<fs.Stats | fs.BigIntStats | false>
```

#### mkDir

```typescript
type mkDir = (path: fs.PathLike, options: fs.MakeDirectoryOptions = {}) => Promise<boolean>
```

#### access

```typescript
type access = (path: fs.PathLike, mode = fs.constants.F_OK) => Promise<boolean>
```

#### copyDir

```typescript
type copyDir = (path: fs.PathLike, dest: string) => Promise<boolean>
```

#### readDir

```typescript
type readDir = (path: fs.PathLike) => Promise<string[] | false>
```

#### clearDir

```typescript
type clearDir = (path: fs.PathLike) => Promise<boolean>
```

#### emptyDir

```typescript
type emptyDir = (path: fs.PathLike) => Promise<boolean>
```

#### readFile

```typescript
type readFile = (
  path: fs.PathLike,
  options: { encoding: string; flag?: string } = { encoding: 'utf8' }
) => Promise<string | false>
```

#### writeFile

```typescript
type writeFile = (
  path: fs.PathLike,
  data: any,
  option: fs.WriteFileOptions = 'utf8'
) => Promise<boolean>
```

#### dirForEach

```typescript
type dirForEach = (path: fs.PathLike, callback: (path: string) => any) => Promise<boolean>
```

#### fileForEach

```typescript
type fileForEach = (path: fs.PathLike, callback: (path: string) => any) => Promise<boolean>
```

#### unlinkDirFileByExtname

```typescript
type unlinkDirFileByExtname = (path: fs.PathLike, extnames: string[] = []) => Promise<boolean>
```
npm package: @jiaminghi/ftp
Description: Promisify FTP
Author: JiaMing
Latest version: 0.0.2

[ENGLISH](./README_EN.md)

<h1 align="center">FTP</h1>

<p align="center">
    <a href="https://github.com/jiaming743/ftp/blob/master/LICENSE">
      <img src="https://img.shields.io/github/license/jiaming743/ftp.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/ftp">
      <img src="https://img.shields.io/npm/v/@jiaminghi/ftp.svg" alt="LICENSE" />
    </a>
</p>

### 基于 FTP 封装的 Promisify FTP

- **[put](#put)**

- **[rmDir](#rmDir)**

- **[mkDir](#mkDir)**

- **[getList](#getList)**

- **[emptyDir](#emptyDir)**

- **[deleteFile](#deleteFile)**

### npm 安装

```shell
$ npm install @jiaminghi/ftp
```

### 使用

```typescript
import { put, mkDir } from '@jiaminghi/ftp'

// do something
```

<h3 align="center">示例</h3>

#### put

```typescript
type put = (ftp: Client, src: string, dest: string) => Promise<boolean>
```

#### rmDir

```typescript
type rmDir = (ftp: Client, src: string, recusive = true) => Promise<boolean>
```

#### mkDir

```typescript
type mkDir = (ftp: Client, src: string, recusive = true) => Promise<boolean>
```

#### getList

```typescript
type getList = (ftp: Client, src: string) => Promise<Client.ListingElement[] | false>
```

#### emptyDir

```typescript
type emptyDir = (ftp: Client, src: string, except: string[] = []) => Promise<boolean>
```

#### deleteFile

```typescript
type deleteFile = (ftp: Client, src: string) => Promise<boolean>
```
npm package: @jiaminghi/print
Description: Colorful console print for node.js
Author: JiaMing
Latest version: 0.2.0

[ENGLISH](./README_EN.md)

<h1 align="center">Print</h1>

<p align="center">
    <a href="https://github.com/jiaming743/print/blob/master/LICENSE">
      <img src="https://img.shields.io/github/license/jiaming743/print.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/print">
      <img src="https://img.shields.io/npm/v/@jiaminghi/print.svg" alt="LICENSE" />
    </a>
</p>

### node.js 彩色控制台输出

- **print.log**

- **print.warn**

- **print.error**

- **print.success**

- **print.tip**

- **print.red**

- **print.green**

- **print.white**

- **print.yellow**

- **print.clear**

### npm 安装

```shell
$ npm install @jiaminghi/print
```

### 使用

```typescript
import print from '@jiaminghi/print'

// do something
```
npm package: @jiaminghi/utils-node
Description: Node utils
Author: JiaMing
Latest version: 0.1.0

[ENGLISH](./README_EN.md)

<h1 align="center">Utils-Node</h1>

<p align="center">
    <a href="https://github.com/jiaming743/ftp/blob/master/LICENSE">
      <img src="https://img.shields.io/github/license/jiaming743/ftp.svg" alt="LICENSE" />
    </a>
    <a href="https://www.npmjs.com/package/@jiaminghi/ftp">
      <img src="https://img.shields.io/npm/v/@jiaminghi/ftp.svg" alt="LICENSE" />
    </a>
</p>

### Utils-Node

- **[getCmdParams](#getCmdParams)**

### npm 安装

```shell
$ npm install @jiaminghi/utils-node
```

### 使用

```typescript
import { getCmdParams } from '@jiaminghi/utils-node'

// do something
```

<h3 align="center">示例</h3>

#### getCmdParams

```typescript
type getNodeParams = () => any
```
npm package: @jianboy/vscode-web
Description: VS Code web for Gogs
Author: jianboy
Latest version: 1.70.2

# @jianboy/vscode-web

This is the companion NPM package to support Gogs1s. The NPM package is [@jianboy/vscode-web](https://www.npmjs.com/package/@jianboy/vscode-web).

## Commands

`yarn clone` - clone the official VS Code repo.

`yarn build` - build the VS Code with the custom code under `src`.

`yarn watch` - watch the code change under `src` directory and rebuild VS Code.

## Local development

There are two ways to do local development with GitHub1s. For feature development, you could use the `yarn watch-with-vscode` under the root directory.

To verify the NPM package content itself before publish. You need to install the [yalc](https://github.com/wclr/yalc) first (`yarn global add yalc`).

Then run the following commands:

```sh
cd gogs1s
yarn build:vscode # Build the VS Code
yarn yalc # Install local package via yalc

yarn build # Build the Gogs1s & other extensions
yarn serve
```

And visit the http://localhost:5000 to verify the change. Please revert any changes related to `yalc` before commit, i.e. the `package.json`, the `.yalc/` and `yalc.lock` files.

## Publish

To publish the NPM package, please make sure you have the right access via https://www.npmjs.com/ and run the following commands:

```sh
cd gogs1s
cd vscode-web-gogs1s
yarn build
# bump the `version` field in vscode-web-gogs1s/package.json file.
npm publish --access public
```
npm package: @jiancf/cf-cli
Description: 一个可发布到 npm 的 cf 命令行工具
Latest version: 1.0.5

# @jiancf/cf-cli

`@jiancf/cf-cli` 是一个发布到 npm 的命令行工具，安装后使用命令名 `cf`。

## 安装

```bash
npm install -g @jiancf/cf-cli
```

当前项目已经改成 scoped 包：

```bash
@jiancf/cf-cli
```


## 命令

```bash
cf help
cf version
cf update
cf update 1.0.0
cf web
```

## web 命令流程

1. 输入项目名称，默认值为 `my-app`
2. 选择模板：`uniapp`、`vue3-jsx` 或 `react`
3. 在当前目录下创建同名项目文件夹
4. 将模板安装到该项目文件夹中
5. 询问是否安装依赖，并选择包管理器

目录规则：

- 如果项目目录不存在，会自动创建
- 如果项目目录已存在且为空，会复用该目录
- 如果项目目录已存在且非空，会提示重新输入项目名称

其中：

- `uniapp` 会直接拉取 [shenohe/uni-template](https://github.com/shenohe/uni-template) 的最新内容
- `vue3-jsx` 会直接拉取 [shenohe/ve3-jsx-template](https://github.com/shenohe/ve3-jsx-template) 的最新内容
- `react` 会直接拉取 [shenohe/react-template](https://github.com/shenohe/react-template) 的最新内容

也支持非交互方式：

```bash
cf web --name my-app --template uniapp
cf web --name my-app --template vue3-jsx --force
cf web --name my-app --template react
cf web --name my-app --template uniapp --install pnpm
cf web --name my-app --template vue3-jsx --skip-install
```
npm package: @jiancodes/baileys
Description: WhatsApp Modified By jiancodes
Author: jiancodes
Latest version: 2.0.9

# Modified Whatsapp-API
<p align='center'>
  <img src="https://uploader.zenzxz.dpdns.org/uploads/1769165418349.jpeg" width="172">
</p>

--- 

## Usage
```json
"depencies": {
  "@whiskeysockets/baileys": "npm:@jiancodes/baileys"
}
Import
const {
  default:makeWASocket,
  // Other Options 
} = require('@whiskeysockets/baileys');
How To Connect To Whatsapp
With QR Code
const {
  default: makeWASocket
} = require('@whiskeysockets/baileys');

const client = makeWASocket({
  browser: ['Ubuntu', 'Chrome', '20.00.1'],
  printQRInTerminal: true
})
Connect With Number
const {
  default: makeWASocket,
  fetchLatestWAWebVersion
} = require('@whiskeysockets/baileys');

const client = makeWASocket({
  browser: ['Ubuntu', 'Chrome', '20.00.1'],
  printQRInTerminal: false,
  version: fetchLatestWAWebVersion()
  // Other options
});

const number = "628XXXXX";
const code = await client.requestPairingCode(number.trim) /* Use : (number, "YYYYYYYY") for custom-pairing */

console.log("Ur pairing code : " + code)
Sending messages
send orderMessage
const fs = require('fs');
const ZeppImg = fs.readFileSync('./ZeppImage');

await client.sendMessage(m.chat, {
  thumbnail: Jianimg,
  message: "Gotta get a grip",
  orderTitle: "jiancodes-Corporation",
  totalAmount1000: 72502,
  totalCurrencyCode: "IDR"
}, { quoted:m })
send pollResultSnapshotMessage
await client.sendMessage(m.chat, {
  pollResultMessage: {
    name: "jiancodes-Corporation",
    options: [
      {
        optionName: "poll 1"
      },
      {
        optionName: "poll 2"
      }
    ],
    newsletter: {
      newsletterName: "Faa About Infomation",
      newsletterJid: "1@newsletter"
    }
  }
})
send productMessage
await client.relayMessage(m.chat, {
  productMessage {
    title: "jiancodes.pdf",
    description: "Faa...",
    thumbnail: { url: "./JianImage" },
    productId: "EXAMPLE_TOKEN",
    retailerId: "EXAMPLE_RETAILER_ID",
    url: "https://t.me/jiancodes",
    body: "Nak Tido",
    footer: "Footer",
    buttons: [
      {
        name: "cta_url",
        buttonParamsJson: "{\"display_text\":\"jiancodes\",\"url\":\"https://t.me/jiancodes\"}"
      }
    ],
    priceAmount1000: 72502,
    currencyCode: "IDR"
  }
})
npm package: @jiang-liuer/teams_im_ui
Description: A react library developed with dumi
Latest version: 0.0.53

# @jiang-liuer/teams_im_ui

[![NPM version](https://img.shields.io/npm/v/@jiang-liuer/teams_im_ui.svg?style=flat)](https://npmjs.org/package/@jiang-liuer/teams_im_ui)
[![NPM downloads](http://img.shields.io/npm/dm/@jiang-liuer/teams_im_ui.svg?style=flat)](https://npmjs.org/package/@jiang-liuer/teams_im_ui)

A react library developed with dumi

## Usage

TODO

## Options

TODO

## Development

```bash
# install dependencies
$ pnpm install

# develop library by docs demo
$ pnpm start

# build library source code
$ pnpm run build

# build library source code in watch mode
$ pnpm run build:watch

# build docs
$ pnpm run docs:build

# check your project for potential problems
$ pnpm run doctor
```

## LICENSE

MIT
npm package: @jiang_he1/myfirstsdk
Description: 🛠 An SDK for building applications on top of Uniswap.
Latest version: 1.0.0

# Uniswap SDK

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![Actions Status](https://github.com/Uniswap/uniswap-sdk/workflows/CI/badge.svg)](https://github.com/Uniswap/uniswap-sdk)
[![npm version](https://img.shields.io/npm/v/@uniswap/sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/Uniswap/uniswap-sdk.git
```

Move into the uniswap-sdk working directory

```sh
cd uniswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @jiangding/usk-cli
Description: Command-line interface for Universal Skill Kit
Author: USK Team
Latest version: 0.3.0

# @jiangding/usk-cli

Command-line interface for Universal Skill Kit.

## Installation

```bash
npm install -g @jiangding/usk-cli
```

## Usage

### Convert a Skill

```bash
# Convert to Codex platform
usk convert my-skill/ -t codex -o ./output

# Convert to Claude platform
usk convert my-skill.md -t claude -o ./output

# Interactive mode
usk convert my-skill/ -t codex --interactive

# Verbose logging
usk convert my-skill/ -t codex --verbose
```

### Analyze Skill Quality

```bash
# Analyze skill
usk analyze my-skill/

# JSON output
usk analyze my-skill/ --json
```

### Batch Convert

```bash
# Convert all skills in directory
usk batch "skills/**/*.md" -t codex -o ./output

# With specific compression strategy
usk batch "skills/*/" -t codex -s aggressive

# Parallel processing (default)
usk batch "skills/*/" -t codex --parallel
```

## Features

- 🔄 **Smart Conversion** - Claude ↔ Codex bidirectional conversion
- ✅ **Automatic Validation** - Pre-conversion quality checks
- 📦 **Intelligent Compression** - 4 strategies for Codex 500-char limit
- 🎯 **Batch Processing** - Convert multiple skills with 80% speed boost
- 💡 **Quality Analysis** - Detailed scoring and suggestions
- 🌐 **Bilingual UI** - English & Chinese output

## Documentation

See the [main repository](https://github.com/JiangDing1990/universal-skill-kit#readme) for full documentation.

## License

MIT
npm package: @jiangding/usk-core
Description: Core conversion engine for Universal Skill Kit
Author: USK Team
Latest version: 0.2.0

# @jiangding/usk-core

Core conversion engine for Universal Skill Kit.

## Installation

```bash
npm install @jiangding/usk-core
```

## Usage

```typescript
import { SkillConverter, SkillValidator, SkillAnalyzer } from '@jiangding/usk-core'

// Validate Skill
const validator = new SkillValidator()
const validation = await validator.validate(skill, skillPath)

// Analyze Skill
const analyzer = new SkillAnalyzer()
const report = analyzer.analyze(skill)

// Convert Skill
const converter = new SkillConverter()
const result = await converter.convert(skillPath, {
  targetPlatform: 'codex',
  outputDir: './output',
  compressionStrategy: 'balanced'
})
```

## Features

- 🔄 **Skill Parser** - Parse Claude & Codex Skills
- 📦 **Description Compressor** - 4 compression strategies
- 🗺️ **Path Mapper** - Convert paths between platforms
- 📊 **Skill Analyzer** - Quality analysis and recommendations
- ✅ **Skill Validator** - Comprehensive validation
- 🔀 **Skill Converter** - Bidirectional conversion

## Documentation

See the [main repository](https://github.com/JiangDing1990/universal-skill-kit#readme) for full documentation.

## License

MIT
npm package: @jiangding/usk-utils
Description: Utility functions for Universal Skill Kit
Author: USK Team
Latest version: 0.1.0

# @usk/utils

Utility functions for Universal Skill Kit.

## Installation

```bash
npm install @usk/utils
```

## Usage

```typescript
import { PathMapper, getLogger } from '@usk/utils'

// Path mapping
const mapper = new PathMapper()
const result = mapper.mapPath('~/.claude/skills/my-skill', 'codex')
// → ~/.codex/skills/my-skill

// Logging
const logger = getLogger()
logger.setVerbose(true)
logger.debug('Debug message')
logger.info('Info message')
```

## Features

- 🗺️ **Path Mapper** - Convert paths between platforms
- 📝 **Logger** - 5-level structured logging
- 🛠️ **Utilities** - Common helper functions

## Documentation

See the [main repository](https://github.com/JiangDing1990/universal-skill-kit#readme) for full documentation.

## License

MIT
npm package: @jianger666/vue-to-react-mcp
Description: MCP server for Vue to React migration automation
Author: Chen Lujiang
Latest version: 1.0.7

# Vue to React MCP

一个用于自动化 Vue 到 React 迁移的 MCP (Model Context Protocol) 服务器。通过智能分析和学习，帮助您高效地将 Vue 项目迁移到 React。

## ✨ 功能特性

- 🚀 **智能迁移规划**: 自动分析 Vue 组件并生成详细的 React 迁移计划
- 📚 **持续学习优化**: 智能学习迁移模式，从用户修改中提炼最佳实践
- 🔄 **任务管理**: 支持大型项目分阶段迁移，可暂停和继续
- 📝 **知识积累**: 自动维护 MIGRATION_GUIDE.md 知识库，沉淀迁移经验
- 🎯 **通用设计**: 适用于任何 Vue 到 React 项目，无特定框架依赖
- 💾 **基准对比**: 保存 AI 生成的基准版本，支持代码修改学习

## 📦 安装

使用 npm 全局安装：

```bash
npm install -g @jianger666/vue-to-react-mcp
```

或者使用 npx 直接运行：

```bash
npx @jianger666/vue-to-react-mcp --vue-project /path/to/vue --react-project /path/to/react
```

## ⚙️ 配置

**重要说明**: 此 MCP 服务器需要在您的 React 项目中配置和使用。请确保您已经在 React 项目中设置了 MCP 服务器配置。

### Cursor 配置

在您的 React 项目中配置 MCP 服务器：

```json
{
  "mcpServers": {
    "vue-to-react": {
      "command": "npx",
      "args": [
        "@jianger666/vue-to-react-mcp",
        "--vue-project", "/path/to/vue/project",
        "--react-project", "/path/to/react/project"
      ]
    }
  }
}
```

### 参数说明

- `--vue-project`: Vue 项目的绝对路径
- `--react-project`: React 项目的绝对路径（目标项目）

## 🚀 使用方法

### 1. 开始迁移页面

通过自然语言告诉 AI 您想迁移的页面：

```
"帮我迁移用户管理页面"
"迁移 src/views/UserList.vue 到 React"
"将 Vue 的商品列表页面迁移到 React"
```

**AI 执行流程**：
1. 📊 获取项目信息和已有迁移指南
2. 🔍 分析 Vue 组件结构（模板、脚本、样式）
3. 📋 生成详细的迁移任务清单
4. ⚡ 逐步执行迁移任务
5. 💾 保存 AI 基准版本用于后续学习

### 2. 继续未完成的迁移

如果迁移过程中断，可以继续：

```
"继续之前的迁移任务"
"我想继续迁移"
```

### 3. 学习用户优化

当您完成代码优化后，让 AI 学习您的改动：

```
"我改好了代码，你学习一下吧"
"学习 src/pages/UserList 目录的改动"
"分析我对组件的修改并更新迁移指南"
```

**学习过程**：
1. 🔍 对比 AI 基准版本与用户修改版本
2. 📝 提炼通用的最佳实践和编码偏好
3. 📚 更新 MIGRATION_GUIDE.md 知识库
4. 🧠 为后续迁移提供更准确的指导

## 🔧 核心工具

| 工具名称 | 功能描述 |
|---------|---------|
| `get_from_application` | 获取项目信息，检查迁移任务状态 |
| `migrate_page` | 创建新的页面迁移任务 |
| `continue_migrate_page` | 继续执行未完成的迁移任务 |
| `save_ai_baseline` | 保存 AI 生成的代码基准版本 |
| `learn_from_changes` | 学习用户修改，更新迁移指南 |

## 📁 项目结构

迁移过程中会在 React 项目根目录创建以下文件：

```
your-react-project/
├── MIGRATION_GUIDE.md     # 迁移指南知识库
├── {文件名}_migrate_task.md # 当前迁移任务清单（按文件名区分）
└── .ai-baseline/          # AI 基准版本（自动清理）
    ├── 2024-01-15_14-30-25/
    └── 2024-01-15_15-45-12/
```

## 🎯 工作原理

```mermaid
graph TD
    A[用户发起迁移请求] --> B[获取项目信息]
    B --> C{检查任务文件}
    C -->|不存在| D[分析 Vue 组件]
    C -->|存在| E[继续未完成任务]
    D --> F[生成迁移计划]
    F --> G[执行迁移任务]
    E --> G
    G --> H[保存 AI 基准版本]
    H --> I[用户优化代码]
    I --> J[学习用户修改]
    J --> K[更新迁移指南]
    K --> L[知识积累完成]
```

## 🔍 最佳实践

1. **项目准备**: 确保 Vue 和 React 项目路径正确，React 项目已初始化
2. **分阶段迁移**: 大型项目建议按页面/模块逐步迁移
3. **及时学习**: 每次优化代码后让 AI 学习，提升后续迁移质量
4. **保持版本**: 重要节点建议手动备份，AI 基准版本会自动清理
5. **查看指南**: 定期查看 MIGRATION_GUIDE.md，了解积累的最佳实践

## 📊 版本信息

当前版本：**v1.0.6**

- ✅ 支持完整的 Vue 到 React 迁移流程
- ✅ 智能任务管理和续传功能
- ✅ 代码学习和知识积累
- ✅ 自动化构建和发布

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

- GitHub: https://github.com/jianger666/vue-to-react-mcp
- Issues: https://github.com/jianger666/vue-to-react-mcp/issues
npm package: @jianghe/sand-build
Description: sand库构建工具
Latest version: 2.1.5

### 调试 @jianghe/sand-build 库时.

文档：https://sand.zirupay.com/

由于 lerna 安装是将依赖安装至/packages/sand-build 目录下，导致在项目根目录下执行 sand-build 找不到依赖，可以将 sand-build 下的依赖在根目录中安装一遍，来解决这个问题,或者使用 lerna bootstrap --hoist 来提升依赖的安装位置。使用 npm 方式安装 sand-build 工具没有此问题。

### 调试方式

```
node ./packages/sand-build/bin/sand-build.js build --env production --watch --link
```
npm package: @jianghe/sand-core
Description: sand pc的核心功能
Latest version: 2.1.5

@jianghe/sand-core

sand-pc 脚手架核心功能,对外暴露
@jianghe/sand-core/react
@jianghe/sand-core/server
@jianghe/sand-core/react-dom
@jianghe/sand-core/react-redux
@jianghe/sand-core/router-dom
@jianghe/sand-core/router-config
@jianghe/sand-core/prop-types
@jianghe/sand-core/history

```
import {
  getDva, // 获取 dva 实例
  getStore, // 获取 store
  setModel, // 设置 model
  async, // 动态初始组件的方法
  renderRoutes, // 将路由配置转换为 react-router4 组件的方法
  sumRouter, // 将分割路由合并的方法
  setRoutes, // 设置路由配置
  getRoutes, // 获取路由配置
  matchRoutes,
  PropTypes,
  connect,
  Provider,
} from '@jianghe/sand-core'
```
npm package: @jianghe/sand-lint
Description: sand项目的lint统一规范
Latest version: 2.1.5

# sand 项目的 lint 统一规范.

## 简介

> 该包中提供了如下功能

- eslint
  - react(js)
  - react(js)+prettier
  - node(js)
  - node(js)+prettier
  - typescript
  - typescript+prettier
  - vue(TODO:)
- stylelint
- commitlint

## 使用

```
npm i @jianghe/sand-lint --save
```

### eslint

#### 1. react

- 安装依赖.

  1. eslint
  2. @jianghe/sand-lint

- 配置.eslintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/react'),
  rules: {},
};
```

#### 2. react + prettier

- 安装 Prettier Formatter for Visual Studio Code 插件

- 安装依赖

  1. eslint
  2. @jianghe/sand-lint

- 配置.eslintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/react/prettier'),
  rules: {},
};
```

- 配置.prettierrc.js

```
const prettierConfig = require('@jianghe/sand-lint/prettier');
// 代码格式化配置
module.exports = prettierConfig;
```

#### 3. typescript

- 安装依赖

  1. eslint
  2. @jianghe/sand-lint

- 配置.eslintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/typescript'),
  rules: {},
};
```

#### 4. typescript + prettier

- 安装 Prettier Formatter for Visual Studio Code 插件

- 安装依赖

  1. eslint
  2. @jianghe/sand-lint

- 配置.eslintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/typescript/prettier'),
  rules: {},
};
```

- 配置.prettierrc.js

```
const prettierConfig = require('@jianghe/sand-lint/prettier/typescript');
// 代码格式化配置
module.exports = prettierConfig;
```

#### 5.node

- 安装依赖

  1. eslint
  2. @jianghe/sand-lint

- 配置.eslintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/node'),
  rules: {},
};
```

#### 6. node + prettier

- 安装 Prettier Formatter for Visual Studio Code 插件

- 安装依赖

  1. eslint
  2. @jianghe/sand-lint

- 配置.eslintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/node/prettier'),
  rules: {},
};
```

- 配置.prettierrc.js

```
const prettierConfig = require('@jianghe/sand-lint/prettier');
// 代码格式化配置
module.exports = prettierConfig;
```

#### 7. vue 项目

TODO:

### stylelint

#### 配置

- 安装依赖

  1. stylelint
  2. @jianghe/sand-lint

- 配置 .stylelintrc.js

```
module.exports = {
  extends: require.resolve('@jianghe/sand-lint/style'),
  rules: {},
};
```

### commitlint

#### 配置

- 安装依赖

  1. @commitlint/cli
  2. husky
  3. @jianghe/sand-lint

- 配置 commitlint.config.js

```
module.exports = { extends: ['@jianghe/sand-lint/commitlint'] };
```

- 配置 package.json

```
{
  // ...
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
  // ...
}
```
npm package: @jianghe/sand-mystery
Description: 加解密工具
Latest version: 1.2.6-3

## 加解密工具包

### 加密 demo.

node ./bin/sand-mystery.js encrypt /Users/jianghe/Desktop/jianghe_ws/mergeFile/examples/input/image/3.png /Users/jianghe/Desktop/jianghe_ws/mergeFile/examples/input/file/project /Users/jianghe/Desktop/jianghe_ws/mergeFile/examples/output/encrypt/ss.png 1472583690zx -n jianghe

### 解密 demo.

node ./bin/sand-mystery.js decrypt /Users/jianghe/Desktop/jianghe_ws/mergeFile/examples/output/encrypt/ss.png /Users/jianghe/Desktop/jianghe_ws/mergeFile/examples/output/decrypt 1472583690zx 16110 -n jianghe
npm package: @jianghe/sand-noco
Description: node
Latest version: 2.1.5

node-core === noco 基于 koa 的扩展最佳实践.

@jianghe 每次脚手架修改完后，记得保持脚手架项目的干净，执行下 npm run clean 即可

### 日志中间件(loggerMiddleware)

日志有两种：一种是写到日志文件的 依赖 log4js 日志，一种是输入到控制台的 debug 日志。分别依赖 log4js 和 debug 库。sand-noco 库只对外输出基于 log4js 的一个中间件，该中间件执行后会将 logger 对象挂在到 ctx。debug 日志在具体的业务代码中自行使用。

日志分级：框架报错日志（不对外输出，sand-noco 中使用），通用日志，服务报错日志

1. 日志中间件中自定义框架自身的错误码。
2. 提供日志中间件，日志中间件会初始化 log4js ，包装后挂载到 ctx 上：commonLogger 和 errorLogger
3. ctx.commonLogger 和 ctx.errorLogger, 该对象有 log4j 提供的多种日志方式，debug，info，warn，error 等和 log4js 一致

#### 使用方式

```
const { loggerMiddleware, app } = require('sand-noco');
// app其实就是koa2实例
app.use(loggerMiddleware());

// 输出到日志文件的
ctx.commonLogger.info(msg)
ctx.commonLogger.error(new Error())
ctx.errorLogger.info(msg)
ctx.errorLogger.error(new Error())
```

### 错误处理中间件（errorHandlerMiddleware）

errorHandlerMiddleware 该中间件是默认第一个引入的中间件，主要兜底处理异常。用 trycatch 方法包裹 await next()，捕获到未处理的 throw 异常使用 logger 直接输出

### cors 中间件（corsMiddleware）

基于 koa2-cors 可自定义 cors 规则。

#### 使用方式

```
const { corsMiddleware, app } = require('sand-noco');
// app 其实就是 koa2 实例
app.use(corsMiddleware(getCors()));
```

### 视图中间件（viewMiddleware）

基于 koa-views 和 ejs

#### 使用方式

```
const { viewMiddleware, app } = require('sand-noco');
// app 其实就是 koa2 实例
app.use(viewMiddleware({
  // 传入视图路径
  viewsPath:'',
}));
```
npm package: @jianghe/sand-utils
Description: sand工具库
Latest version: 1.2.6-3

## @jianghe/sand-utils

> sand 工具类

### fetch 工具

基于 axios 的 http 请求工具

```javascript
import { fetch } from '@jianghe/sand-utils';

const { request, get, post } = fetch;

// 基础的请求方法
request('url', {
  method: 'POST',
  data: { ss: 111 },
  //...
});

// get请求
get('url', { ss: 111 }, { timeout: 5000 });

// post请求
post('url', { ss: 111 }, { timeout: 5000 });
```

### html encode/decode 工具

用于 html encode/decode

```javascript
import { decodeHtml } from '@jianghe/sand-utils';

const html = decodeHtml('111');
```

### debug 工具

用于 debug 日志输出，基于 debug 库

```javascript
import { debug } from '@jianghe/sand-utils';
```
npm package: @jianghe/sand-viewport
Description: sand视口设置库
Latest version: 1.2.6-3

## @jianghe/sand-viewport 用法.

> 执行 setViewport 会在 head 中增加一个 meta 标签

```javascript
import setViewport from '@jianghe/sand-viewport';

// 7.5rem === 100vw
const { htmlFontSize } = setViewport(7.5);

// htmlFontSize表示设置在body上的字体大小是多大
```
npm package: @jianghe/slate-react
Description: A set of React components for building completely customizable rich-text editors.
Latest version: 0.22.14

This package contains the React-specific logic for Slate. It's separated further into a series of directories:

* [**Components**](./src/components) — containing the React components for rendering Slate editors.
* [**Constants**](./src/constants) — containing a few private constants modules.
* [**Plugins**](./src/plugins) — containing the React-specific plugins for Slate editors.
* [**Utils**](./src/utils) — containing a few private convenience modules.

Feel free to poke around in each of them to learn more.
npm package: @jianghh/canvas-graffiti
Description: canvas涂鸦库，支持手写、笔写、鼠标，选中元素，并且移动、删除等功能。集成撤销重做操作。
Author: jianghh
Latest version: 1.0.0

## canvas 涂鸦画板
- 支持笔写、手写、鼠标绘图
- 目前支持钢笔、马克笔、对象橡皮擦
- 支持撤销与重做
- 支持选中单个或多个元素的导出图片
- 关键节点的钩子，支持灵活扩展

### 文档地址
[点击前往](http://121.41.53.237/docs/graffiti-docs/intro)

### 体验地址
[点击前往](http://121.41.53.237/jianghh/display/graffiti)