diff --git a/README.md b/README.md index 38a23de4..d55f1404 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,8 @@ Codex 插件页的大标题按 marketplace 来源分组,不是按插件 `categ 部分插件依赖特定运行环境。`$updating-gitea-repositories` 面向 Gitea HTTPS、GCM 和 PAT 工作流;`$etunel-role-collaboration` 仅在 Etunel 提供角色、成员、Hook 和任务上下文时使用。安装前应查看插件详情并确认运行前置条件。 +`etunel-role-collaboration` 的插件版本对应上游正式 release 的版本号。更新插件不会自动修改 Etunel 的 Hook 配置或迁移在途项目;实际项目仍需按已确认的流程基线使用。 + `caveman` 插件中的大多数工作流可直接使用。可选的 `$caveman-compress` 需要 Python 3.10,以及 `ANTHROPIC_API_KEY` 或已登录的 Claude CLI;仅在用户明确指定文件后执行,并会把该文件内容发送给 Anthropic。该插件不包含 Claude Code 专用统计 hooks、statusline、Caveman CLI、代理或 MCP shrink。 如果插件刚安装到当前 Codex 会话中,启动新的 Codex thread 或新的 Codex 调用后再依赖新增 skills/hooks/MCP/app 配置。 diff --git a/config/external-sources.json b/config/external-sources.json index b1d12cad..5d41c782 100644 --- a/config/external-sources.json +++ b/config/external-sources.json @@ -749,7 +749,8 @@ { "id": "etunel-role-collaboration", "repo": "https://git.playones.com/chenmingxuan/EP-Hub-Skill.git", - "ref": "main", + "releaseChannel": "latest-stable", + "releaseProvider": "gitea", "adapter": "claude-skill", "pluginName": "etunel-role-collaboration", "category": "Business & Operations", @@ -759,7 +760,6 @@ ], "brandColor": "#0F766E", "manifestOverrides": { - "version": "0.1.0", "description": "Etunel 多 Agent 项目的角色识别、Hub 中介、依赖任务波次、成果交接和消息流程协作规范。", "author": { "name": "chenmingxuan", diff --git a/config/external-sources.lock.json b/config/external-sources.lock.json index 54beb141..7ecb1838 100644 --- a/config/external-sources.lock.json +++ b/config/external-sources.lock.json @@ -126,15 +126,6 @@ "commit": "3a0b288dfa4df0657dc63c0fd424069432016595", "syncedAt": "2026-09-03T09:20:38Z" }, - { - "id": "etunel-role-collaboration", - "pluginName": "etunel-role-collaboration", - "repo": "https://git.playones.com/chenmingxuan/EP-Hub-Skill.git", - "ref": "main", - "adapter": "claude-skill", - "commit": "4f9efd175d165153b99a4a0767afb00b0f066142", - "syncedAt": "2026-09-08T16:00:01Z" - }, { "id": "next-skills", "pluginName": "next-skills", @@ -152,6 +143,15 @@ "adapter": "claude-skill", "commit": "d2d0ce27da295581c3cf87a30ab65deb7d0ddfb8", "syncedAt": "2026-09-03T02:45:43Z" + }, + { + "id": "etunel-role-collaboration", + "pluginName": "etunel-role-collaboration", + "repo": "https://git.playones.com/chenmingxuan/EP-Hub-Skill.git", + "ref": "v1.0.1", + "adapter": "claude-skill", + "commit": "4f9efd175d165153b99a4a0767afb00b0f066142", + "syncedAt": "2026-09-09T03:10:50Z" } ] } diff --git a/plugins/codex/plugins/etunel-role-collaboration/.codex-plugin/plugin.json b/plugins/codex/plugins/etunel-role-collaboration/.codex-plugin/plugin.json index f57c4fa0..040caf4d 100644 --- a/plugins/codex/plugins/etunel-role-collaboration/.codex-plugin/plugin.json +++ b/plugins/codex/plugins/etunel-role-collaboration/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "etunel-role-collaboration", - "version": "0.1.0", + "version": "1.0.1", "description": "Etunel 多 Agent 项目的角色识别、Hub 中介、依赖任务波次、成果交接和消息流程协作规范。", "author": { "name": "chenmingxuan", diff --git a/plugins/codex/plugins/etunel-role-collaboration/THIRD_PARTY_SOURCE.json b/plugins/codex/plugins/etunel-role-collaboration/THIRD_PARTY_SOURCE.json index c3e9dacc..07e13788 100644 --- a/plugins/codex/plugins/etunel-role-collaboration/THIRD_PARTY_SOURCE.json +++ b/plugins/codex/plugins/etunel-role-collaboration/THIRD_PARTY_SOURCE.json @@ -1,9 +1,9 @@ { "sourceId": "etunel-role-collaboration", "repo": "https://git.playones.com/chenmingxuan/EP-Hub-Skill.git", - "ref": "main", + "ref": "v1.0.1", "commit": "4f9efd175d165153b99a4a0767afb00b0f066142", "adapter": "claude-skill", "sourcePath": "etunel-role-collaboration", - "syncedAt": "2026-09-08T16:00:01Z" + "syncedAt": "2026-09-09T03:10:50Z" } diff --git a/scripts/sync_external_plugins.ps1 b/scripts/sync_external_plugins.ps1 index 0e86f782..0651f99b 100644 --- a/scripts/sync_external_plugins.ps1 +++ b/scripts/sync_external_plugins.ps1 @@ -683,10 +683,15 @@ function Get-Clone { [string]$CloneRoot ) if ($Source.PSObject.Properties.Name -contains "releaseChannel" -and $Source.releaseChannel) { - if ($Source.releaseChannel -ne "latest-stable" -or $Source.repo -notmatch '^https://github\.com/([\w-]+)/([\w.-]+?)(?:\.git)?$') { - throw "releaseChannel requires latest-stable and a GitHub HTTPS repository" + $provider = "github" + if ($Source.PSObject.Properties.Name -contains "releaseProvider") { $provider = $Source.releaseProvider } + if ($Source.releaseChannel -ne "latest-stable" -or $provider -notin @("github", "gitea") -or $Source.repo -notmatch '^https://([A-Za-z0-9.-]+(?::[0-9]+)?)/([\w-]+)/([\w.-]+?)(?:\.git)?$') { + throw "Stable releases require a GitHub or Gitea HTTPS repository" } - $release = Invoke-RestMethod -Uri "https://api.github.com/repos/$($Matches[1])/$($Matches[2])/releases/latest" -Headers @{ Accept = "application/vnd.github+json"; "User-Agent" = "skill-market" } -TimeoutSec 30 + $repoHost, $owner, $repoName = $Matches[1], $Matches[2], $Matches[3] + if ($provider -eq "github" -and $repoHost -ne "github.com") { throw "GitHub releases require github.com; specify releaseProvider for Gitea" } + $apiRoot = if ($provider -eq "github") { "https://api.github.com" } else { "https://$repoHost/api/v1" } + $release = Invoke-RestMethod -Uri "$apiRoot/repos/$owner/$repoName/releases/latest" -Headers @{ Accept = "application/json"; "User-Agent" = "skill-market" } -TimeoutSec 30 $tag = [string]$release.tag_name if ($release.draft -or $release.prerelease -or $tag -notmatch '^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$') { throw "Invalid stable release tag: $tag"