Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
363 changes: 206 additions & 157 deletions .github/workflows/release.yml

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
dist/
node_modules/

mcp/.inspect/
mcp/.probe/
mcp/node_modules/
mcp/src/meting/meting.js
mcp/src/meting/providers/
5 changes: 2 additions & 3 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
*.md
*.yml
dist/
node_modules/

mcp/.inspect/
mcp/.probe/
mcp/node_modules/
mcp/src/meting/meting.js
mcp/src/meting/providers/
mcp/src/meting/
skills/meting-agent/scripts/meting/
3 changes: 2 additions & 1 deletion README.EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
- **Skill**: [skills/meting-agent](https://github.com/ELDment/Meting-Agent/releases)

<details>
<summary><b>Screenshot</b></summary>
<summary><b>Screenshot 🎨</b></summary>

![Meting-Agent Showcase](./SHOWCASE.OPENCLAW.png)
![Meting-Agent Showcase](./SHOWCASE.png)
</details>

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
- **Skill**:[skills/meting-agent](https://github.com/ELDment/Meting-Agent/releases)

<details>
<summary><b>运行截图</b></summary>
<summary><b>运行截图 🎨</b></summary>

![Meting-Agent Showcase](./SHOWCASE.OPENCLAW.png)
![Meting-Agent Showcase](./SHOWCASE.png)
</details>

Expand Down
3 changes: 2 additions & 1 deletion README.zh-Hant.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
- **Skill**:[skills/meting-agent](https://github.com/ELDment/Meting-Agent/releases)

<details>
<summary><b>執行截圖</b></summary>
<summary><b>執行截圖 🎨</b></summary>

![Meting-Agent Showcase](./SHOWCASE.OPENCLAW.png)
![Meting-Agent Showcase](./SHOWCASE.png)
</details>

Expand Down
Binary file added SHOWCASE.OPENCLAW.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 22 additions & 14 deletions docs/CONTRIBUTING.EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,43 @@

This repository uses a "shared source + generated copies" maintenance model. Before you submit changes, understand the sync relationships first, or it is easy to modify the wrong location.

## Why you cannot build immediately after cloning
## How generated copies are maintained

The repository keeps the shared source by default. It does not commit the skill release artifacts, and it does not permanently maintain every runtime copy from `shared/meting/` inside each target directory.
The repository uses `shared/meting/` as the source of truth. The generated runtime copies under `mcp/src/meting/` and `skills/meting-agent/scripts/meting/` are branch artifacts that GitHub Actions force-syncs after pushes to `main` and `dev`.

After a fresh clone, you will hit two practical constraints:
That means:

- The distributable skill artifacts live under `dist/skills/meting-agent/scripts/meting/`, and that directory is generated only after running the build script.
- The `mcp/` build runs `sync:core` automatically inside its npm scripts, but if you skip the sync prerequisite and debug generated files directly, you can easily reach the wrong conclusion.
- A later clone of `main` or `dev` should receive the latest synced copies after the workflow has pushed them back.
- You still should not treat those generated directories as hand-maintained source. Manual edits there can be overwritten by the next workflow sync.
- The `mcp/` build runs `sync:core` automatically inside its npm scripts, but if you debug only the generated files and ignore `shared/meting/`, you can easily reach the wrong conclusion.

The simplified mental model is: this repository does not keep a complete, static, directly maintained source copy inside every deliverable directory. You maintain `shared/meting/` first, then generate copies for `mcp/src/meting/` and the skill bundle.
The simplified mental model is: maintain `shared/meting/` first, sync the generated copies only for verification or release, and let GitHub Actions normalize the tracked copies on `main` and `dev`.

## Recommended workflow

1. Update core logic in `shared/meting/` first
2. Run the sync script to generate the `mcp` copy
3. Run the build script to generate the skill release bundle
4. Verify the `mcp` package and the skill artifacts separately
2. Run the sync scripts to generate the `mcp` and skill copies
3. Verify the `mcp` package and the skill runtime files locally if needed
4. Push to `main` or `dev`, then let GitHub Actions overwrite, commit, and publish the synced copies

## Common commands

Sync the shared core into `mcp/`:
Sync the shared core into both generated directories:

```powershell
node scripts/sync-mcp-core.mjs
npm run sync:all
```

Build the skill release bundle:
Sync only the `mcp/` copy:

```powershell
node scripts/build-skill-release.mjs
npm run sync:mcp
```

Sync only the skill copy:

```powershell
npm run sync:skill
```

Verify root-level document formatting:
Expand All @@ -55,6 +62,7 @@ npm run verify
## Pre-commit checklist

- Did the core change happen in `shared/meting/`?
- Did you regenerate the copies or artifacts that should be committed?
- Did you regenerate the local copies you needed for verification?
- Did you finish `mcp` verification?
- If you changed documents, did `npm run format:check` pass?
- Did you avoid treating generated copies as the primary edit target?
38 changes: 23 additions & 15 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,38 +4,45 @@

# CONTRIBUTING

本仓库采用“共享源码 + 生成副本”的维护方式。提交修改前,请先理解同步关系,否则很容易改到错误位置
本仓库采用“共享源码 + 生成副本”的维护方式。提交修改前,请先理解同步关系,否则很容易改错位置。

## 为什么刚克隆后不能直接编译
## 生成副本是怎么维护的

仓库默认只保留共享源码,不提交 skill release 产物,也不把 `shared/meting/` 的全部运行时副本长期维护在每个目标目录中
仓库把 `shared/meting/` 作为唯一真源。`mcp/src/meting/` 和 `skills/meting-agent/scripts/meting/` 这两个运行时副本,会在 `main` 和 `dev` 有新 push 后由 GitHub Actions 强制同步并回写到分支。

直接克隆后会遇到两个现实限制
这意味着

- skill 的可分发产物位于 `dist/skills/meting-agent/scripts/meting/`,这个目录需要运行构建脚本后才会生成
- `mcp/` 的构建虽然会在其 npm scripts 中自动执行 `sync:core`,但如果你跳过同步前置步骤,直接按生成文件视角排查问题,很容易得到错误结论
- 之后再 clone `main` 或 `dev`,理论上会拿到 workflow 回写后的最新副本。
- 但你仍然不应该把这两个生成目录当作手工维护源码。手改它们,下一次 workflow 同步时仍然可能被覆盖。
- `mcp/` 的 npm scripts 会自动执行 `sync:core`,但如果你跳过同步前置步骤,只盯着生成文件排查问题,很容易得到错误结论。

简化理解就是:这个仓库不是“每个交付物目录都自带完整、静态、可直接维护的源码副本”,而是先维护 `shared/meting/`,再生成给 `mcp/src/meting/` 和 skill 使用的副本
简化理解就是:先维护 `shared/meting/`,生成目录只用于验证与发布,而 `main/dev` 上的已跟踪副本由 GitHub Actions 负责归一化。

## 推荐修改流程

1. 先在 `shared/meting/` 修改核心逻辑
2. 运行同步脚本生成 `mcp` 副本
3. 运行构建脚本生成 skill release bundle
4. 分别验证 `mcp` 和 skill 产物
2. 运行同步脚本生成 `mcp` 和 skill 的本地副本
3. 按需验证 `mcp` 包与 skill 运行目录
4. push 到 `main` 或 `dev` 后,让 GitHub Actions 覆盖、提交并发布同步后的副本

## 常用命令

同步共享核心到 `mcp/`
同步两个生成目录

```powershell
node scripts/sync-mcp-core.mjs
npm run sync:all
```

构建 skill release bundle
只同步 `mcp/` 副本

```powershell
node scripts/build-skill-release.mjs
npm run sync:mcp
```

只同步 skill 副本:

```powershell
npm run sync:skill
```

验证根目录文档格式:
Expand All @@ -55,6 +62,7 @@ npm run verify
## 提交前检查

- 核心改动是否发生在 `shared/meting/`
- 是否重新生成了需要提交的副本或产物
- 是否按验证需要重新生成了本地副本
- 是否完成 `mcp` 验证
- 如果改了文档,是否通过 `npm run format:check`
- 是否避免把生成副本当作主要编辑目标
40 changes: 24 additions & 16 deletions docs/CONTRIBUTING.zh-Hant.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,48 @@
<p align="right"><a href="./CONTRIBUTING.md">简体中文</a> | <strong>繁體中文</strong> | <a href="./CONTRIBUTING.EN.md">English</a></p>

<p align="right"><a href="../README.md">⬅️ 返回首頁</a></p>
<p align="right"><a href="../README.md">⬅️ 返回主頁</a></p>

# CONTRIBUTING

本倉庫採用「共享原始碼 + 生成副本」的維護方式。提交修改前,請先理解同步關係,否則很容易改到錯誤位置
本倉庫採用「共享原始碼 + 生成副本」的維護方式。提交修改前,請先理解同步關係,否則很容易改錯位置。

## 為什麼剛 clone 後不能直接編譯
## 生成副本是怎麼維護的

倉庫預設只保留共享原始碼,不提交 skill release 產物,也不會把 `shared/meting/` 的全部執行時副本長期維護在每個目標目錄中
倉庫把 `shared/meting/` 視為唯一真源。`mcp/src/meting/` 和 `skills/meting-agent/scripts/meting/` 這兩個執行期副本,會在 `main` 和 `dev` 有新 push 後由 GitHub Actions 強制同步並回寫到分支。

直接 clone 後會遇到兩個現實限制
這表示

- skill 的可分發產物位於 `dist/skills/meting-agent/scripts/meting/`,這個目錄需要執行建構腳本後才會生成
- `mcp/` 的建構雖然會在其 npm scripts 中自動執行 `sync:core`,但如果你跳過同步前置步驟,直接從生成檔案視角排查問題,很容易得到錯誤結論
- 之後再 clone `main` 或 `dev`,理論上會拿到 workflow 回寫後的最新副本。
- 但你仍然不應該把這兩個生成目錄當作手動維護原始碼。手改它們,下一次 workflow 同步時仍可能被覆蓋。
- `mcp/` 的 npm scripts 會自動執行 `sync:core`,但如果你跳過同步前置步驟,只盯著生成檔案排查問題,很容易得到錯誤結論。

簡化理解就是:這個倉庫不是「每個交付物目錄都自帶完整、靜態、可直接維護的原始碼副本」,而是先維護 `shared/meting/`,再生成給 `mcp/src/meting/` 和 skill 使用的副本
簡化理解就是:先維護 `shared/meting/`,生成目錄只用於驗證與發佈,而 `main/dev` 上的已追蹤副本由 GitHub Actions 負責正規化。

## 推薦修改流程

1. 先在 `shared/meting/` 修改核心邏輯
2. 執行同步腳本生成 `mcp` 副本
3. 執行建構腳本生成 skill release bundle
4. 分別驗證 `mcp` 與 skill 產物
2. 執行同步腳本生成 `mcp` 和 skill 的本地副本
3. 視需要驗證 `mcp` 套件與 skill 執行目錄
4. push 到 `main` 或 `dev` 後,讓 GitHub Actions 覆蓋、提交並發佈同步後的副本

## 常用命令

同步共享核心到 `mcp/`
同步兩個生成目錄

```powershell
node scripts/sync-mcp-core.mjs
npm run sync:all
```

建構 skill release bundle
只同步 `mcp/` 副本

```powershell
node scripts/build-skill-release.mjs
npm run sync:mcp
```

只同步 skill 副本:

```powershell
npm run sync:skill
```

驗證根目錄文件格式:
Expand All @@ -55,6 +62,7 @@ npm run verify
## 提交前檢查

- 核心改動是否發生在 `shared/meting/`
- 是否重新生成了需要提交的副本或產物
- 是否按驗證需要重新生成了本地副本
- 是否完成 `mcp` 驗證
- 如果改了文件,是否通過 `npm run format:check`
- 是否避免把生成副本當作主要編輯目標
3 changes: 2 additions & 1 deletion mcp/README.EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
`Meting-Agent` is an MCP service built on top of **[metowolf/Meting](https://github.com/metowolf/Meting)**. It supports music platforms such as [NetEase Cloud Music](https://music.163.com/) (`netease`), [Tencent Music](https://y.qq.com/) (`tencent`), [Kugou Music](https://www.kugou.com/) (`kugou`), and [Kuwo Music](https://www.kuwo.cn/) (`kuwo`), and provides capabilities for search, songs, albums, artists, playlists, playback URLs, lyrics, and cover images.

<details>
<summary><b>Screenshot</b></summary>
<summary><b>Screenshot 🎨</b></summary>

![Meting-Agent Showcase](../SHOWCASE.OPENCLAW.png)
![Meting-Agent Showcase](../SHOWCASE.png)
</details>

Expand Down
3 changes: 2 additions & 1 deletion mcp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
`Meting-Agent` 是基于 **[metowolf/Meting](https://github.com/metowolf/Meting)** 构建的 MCP 服务,支持 [网易云音乐](https://music.163.com/)(`netease`)、[腾讯音乐](https://y.qq.com/)(`tencent`)、[酷狗音乐](https://www.kugou.com/)(`kugou`)、[酷我音乐](https://www.kuwo.cn/)(`kuwo`)等音乐平台,提供搜索、歌曲、专辑、歌手、歌单、播放链接、歌词、封面等能力

<details>
<summary><b>运行截图</b></summary>
<summary><b>运行截图 🎨</b></summary>

![Meting-Agent Showcase](../SHOWCASE.OPENCLAW.png)
![Meting-Agent Showcase](../SHOWCASE.png)
</details>

Expand Down
3 changes: 2 additions & 1 deletion mcp/README.zh-Hant.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
`Meting-Agent` 是基於 **[metowolf/Meting](https://github.com/metowolf/Meting)** 建構的 MCP 服務,支援 [網易雲音樂](https://music.163.com/)(`netease`)、[騰訊音樂](https://y.qq.com/)(`tencent`)、[酷狗音樂](https://www.kugou.com/)(`kugou`)、[酷我音樂](https://www.kuwo.cn/)(`kuwo`)等音樂平台,提供搜尋、歌曲、專輯、歌手、歌單、播放連結、歌詞、封面等能力

<details>
<summary><b>執行截圖</b></summary>
<summary><b>執行截圖 🎨</b></summary>

![Meting-Agent Showcase](../SHOWCASE.OPENCLAW.png)
![Meting-Agent Showcase](../SHOWCASE.png)
</details>

Expand Down
2 changes: 1 addition & 1 deletion mcp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"LICENSE"
],
"scripts": {
"sync:core": "node ../scripts/sync-mcp-core.mjs",
"sync:core": "node ../scripts/sync-generated.mjs sync mcp",
"start": "npm run sync:core && node src/index.js",
"lint": "npm run sync:core && node --check src/index.js && node --check src/mcp-server.js && node --check src/meting/meting.js && node --check src/meting/providers/index.js",
"build": "npm run sync:core && npm pack --dry-run",
Expand Down
Loading
Loading