mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-10-21 07:24:00 +08:00
fix: 修复上游健康巡检并同步已审查的市场引用 (#207)
Upstream health checks could select a different branch ending in `main`, index internal skills or lowercase reference documents, treat a valid pinned path as broken after an upstream move, and close the tracking issue while unpinned or unknown entries remained. Resolve exact refs and tracked filenames, compare the installed snapshot, and drive issue decisions from structured results. Refresh 26 reviewed pointers, pin DingTalk and Matt Pocock collections, remove the deleted merge-conflict skill, and add the six new public children with reviewed translations. Synchronize sidecars, observed release facts, license evidence and external dependency disclosures. Identical-tree Agent pins and their versions remain unchanged. The per-entry review is recorded in `docs/upstream-health-189-remediation.md`. Validation: 99 unit tests pass; all nine pinned collections reproduce; catalog/i18n and translation-freshness checks pass; online health checks all 41 external entries with zero broken, actionable or unknown results. Existing catalog warnings decrease from 123 to 105 with no new warning groups. Python/workflow shell syntax and whitespace checks pass. Closes #189.
This commit is contained in:
18
.github/workflows/upstream-health.yml
vendored
18
.github/workflows/upstream-health.yml
vendored
@@ -34,25 +34,27 @@ jobs:
|
|||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
set +e
|
set +e
|
||||||
uv run --quiet scripts/catalog/check_upstream_health.py --format markdown > report.md
|
uv run --quiet scripts/catalog/check_upstream_health.py --format markdown --summary-file summary.json > report.md
|
||||||
code=$?
|
code=$?
|
||||||
set -e
|
set -e
|
||||||
if [ "$code" -gt 1 ]; then
|
if [ "$code" -gt 1 ]; then
|
||||||
echo "health check crashed with exit code $code" >&2
|
echo "health check crashed with exit code $code" >&2
|
||||||
exit "$code"
|
exit "$code"
|
||||||
fi
|
fi
|
||||||
echo "broken=$([ "$code" = 1 ] && echo true || echo false)" >> "$GITHUB_OUTPUT"
|
python3 - <<'PY' >> "$GITHUB_OUTPUT"
|
||||||
if grep -qE '^### (Broken|Undeclared upstream skills|Updates available) ' report.md; then
|
import json
|
||||||
echo "actionable=true" >> "$GITHUB_OUTPUT"
|
from pathlib import Path
|
||||||
else
|
summary = json.loads(Path("summary.json").read_text())
|
||||||
echo "actionable=false" >> "$GITHUB_OUTPUT"
|
for key in ("broken", "actionable", "unknown"):
|
||||||
fi
|
print(f"{key}={str(summary[key]).lower()}")
|
||||||
|
PY
|
||||||
cat report.md >> "$GITHUB_STEP_SUMMARY"
|
cat report.md >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
|
||||||
- name: Update tracking issue
|
- name: Update tracking issue
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
ACTIONABLE: ${{ steps.check.outputs.actionable }}
|
ACTIONABLE: ${{ steps.check.outputs.actionable }}
|
||||||
|
UNKNOWN: ${{ steps.check.outputs.unknown }}
|
||||||
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
@@ -69,7 +71,7 @@ jobs:
|
|||||||
} > body.md
|
} > body.md
|
||||||
|
|
||||||
issue=$(gh issue list --label "$label" --state open --limit 1 --json number --jq '.[0].number // empty')
|
issue=$(gh issue list --label "$label" --state open --limit 1 --json number --jq '.[0].number // empty')
|
||||||
if [ "$ACTIONABLE" = "true" ]; then
|
if [ "$ACTIONABLE" = "true" ] || [ "$UNKNOWN" = "true" ]; then
|
||||||
if [ -n "$issue" ]; then
|
if [ -n "$issue" ]; then
|
||||||
gh issue edit "$issue" --body-file body.md
|
gh issue edit "$issue" --body-file body.md
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ A collection groups multiple upstream skills under one listing, with a declared
|
|||||||
|
|
||||||
See the [Lark Suite CLI entry](skills/larksuite-cli/entry.json) and [sidecar](skills/larksuite-cli/catalog-metadata.v1.json). The [collection generator](scripts/gen-collection-children.py) derives children from upstream `SKILL.md` files; its `--check` mode verifies reproducible, pinned collections without rewriting entries.
|
See the [Lark Suite CLI entry](skills/larksuite-cli/entry.json) and [sidecar](skills/larksuite-cli/catalog-metadata.v1.json). The [collection generator](scripts/gen-collection-children.py) derives children from upstream `SKILL.md` files; its `--check` mode verifies reproducible, pinned collections without rewriting entries.
|
||||||
|
|
||||||
|
Discovery uses exact Git filenames, excludes fixtures, symlinks and skills marked `metadata.internal: true`, and requires a frontmatter name. Reviewed translations may be stored in a fixed `collection-child-overrides.json` beside the entry: map child IDs to `i18n` summaries for `en-US` and `zh-CN`. Overrides cannot change an upstream ID, path or version, or retain a child removed upstream. Both generation and `--check` apply these translations.
|
||||||
|
|
||||||
### Agents
|
### Agents
|
||||||
|
|
||||||
An agent directory must contain exactly one primary file: `agent.json` for inline metadata **or** `entry.json` for an external pointer, plus `catalog-metadata.v1.json`. Neither a missing primary file nor both files together is valid.
|
An agent directory must contain exactly one primary file: `agent.json` for inline metadata **or** `entry.json` for an external pointer, plus `catalog-metadata.v1.json`. Neither a missing primary file nor both files together is valid.
|
||||||
@@ -232,6 +234,8 @@ Collection checking requires Git and network access. Mutable collections are rep
|
|||||||
|
|
||||||
The upstream health check is read-only and exits non-zero when an entry is `gone` or has a `bad-branch`, `bad-ref`, or `bad-path`. `unreachable` is a network error, not a confirmed failure. The [upstream health workflow](.github/workflows/upstream-health.yml) runs it weekly and keeps one `upstream-health` issue current; fixes and `source.ref` bumps still go through reviewed PRs.
|
The upstream health check is read-only and exits non-zero when an entry is `gone` or has a `bad-branch`, `bad-ref`, or `bad-path`. `unreachable` is a network error, not a confirmed failure. The [upstream health workflow](.github/workflows/upstream-health.yml) runs it weekly and keeps one `upstream-health` issue current; fixes and `source.ref` bumps still go through reviewed PRs.
|
||||||
|
|
||||||
|
Paths are checked at the installed snapshot. A path removed only at branch head is reported as `upstream-path-change` while a valid pin remains usable. `outdated` means the snapshot content differs, not that a new release version exists; commits with identical trees do not trigger it. For single-skill subtree pointers, comparison covers `source.path` and root license/notice files, so unrelated feed or website updates do not trigger repins. `--summary-file <path>` writes the workflow's `broken`, `actionable` and `unknown` decisions as JSON. Unpinned entries remain actionable, and network uncertainty keeps the tracking issue open.
|
||||||
|
|
||||||
The [validation workflow](.github/workflows/i18n-validate.yml) is the source of truth for CI. It detects relevant paths and can skip catalog validation for documentation-only changes. A green skipped job is not evidence that Markdown links or bilingual documentation were checked; review those separately.
|
The [validation workflow](.github/workflows/i18n-validate.yml) is the source of truth for CI. It detects relevant paths and can skip catalog validation for documentation-only changes. A green skipped job is not evidence that Markdown links or bilingual documentation were checked; review those separately.
|
||||||
|
|
||||||
## Security and trust
|
## Security and trust
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ uv run scripts/i18n/validate-i18n.py
|
|||||||
|
|
||||||
参考[飞书 CLI 条目](skills/larksuite-cli/entry.json)及其 [sidecar](skills/larksuite-cli/catalog-metadata.v1.json)。[集合生成器](scripts/gen-collection-children.py)从上游 `SKILL.md` 提取子技能,`--check` 模式只验证固定版本、可复现的集合,不重写条目。
|
参考[飞书 CLI 条目](skills/larksuite-cli/entry.json)及其 [sidecar](skills/larksuite-cli/catalog-metadata.v1.json)。[集合生成器](scripts/gen-collection-children.py)从上游 `SKILL.md` 提取子技能,`--check` 模式只验证固定版本、可复现的集合,不重写条目。
|
||||||
|
|
||||||
|
发现过程使用 Git 中的精确文件名,排除测试样例、符号链接和标记为 `metadata.internal: true` 的技能,并要求 frontmatter 声明名称。经过审阅的翻译可放在条目旁的固定文件 `collection-child-overrides.json`:按子技能 ID 声明 `en-US` 和 `zh-CN` 的 `i18n` 简介。该文件不能修改上游 ID、路径或版本,也不能保留上游已删除的子技能;生成和 `--check` 都会应用这些翻译。
|
||||||
|
|
||||||
### 智能体
|
### 智能体
|
||||||
|
|
||||||
智能体目录必须包含一个主文件:内联元数据 `agent.json` **或**外部指针 `entry.json`,并同时提供 `catalog-metadata.v1.json`。主文件缺失或两种主文件同时存在均不合法。
|
智能体目录必须包含一个主文件:内联元数据 `agent.json` **或**外部指针 `entry.json`,并同时提供 `catalog-metadata.v1.json`。主文件缺失或两种主文件同时存在均不合法。
|
||||||
@@ -232,6 +234,8 @@ uv run scripts/catalog/check_upstream_health.py
|
|||||||
|
|
||||||
上游健康检查只读,不改写条目;出现 `gone`、`bad-branch`、`bad-ref` 或 `bad-path` 时以非零状态退出。`unreachable` 表示网络错误,不等于确认失效。[上游健康工作流](.github/workflows/upstream-health.yml)每周运行一次,并维护唯一一个 `upstream-health` Issue;修复条目和更新 `source.ref` 仍需通过经过评审的 PR。
|
上游健康检查只读,不改写条目;出现 `gone`、`bad-branch`、`bad-ref` 或 `bad-path` 时以非零状态退出。`unreachable` 表示网络错误,不等于确认失效。[上游健康工作流](.github/workflows/upstream-health.yml)每周运行一次,并维护唯一一个 `upstream-health` Issue;修复条目和更新 `source.ref` 仍需通过经过评审的 PR。
|
||||||
|
|
||||||
|
路径检查以实际安装的快照为准。只有分支头删除路径、固定版本仍可用时,报告 `upstream-path-change`。`outdated` 表示快照内容不同,不表示一定发布了新版本;文件树完全相同的提交不会触发更新提醒。单技能子目录指针比较 `source.path` 和仓库根的许可证、声明文件,不因无关的资讯数据或网站更新反复要求改动固定提交。`--summary-file <路径>` 将工作流使用的 `broken`、`actionable` 和 `unknown` 判定写入 JSON。未固定版本仍属于待处理事项;网络状态未知时保留跟踪 Issue。
|
||||||
|
|
||||||
[校验工作流](.github/workflows/i18n-validate.yml)是 CI 行为的权威来源。它会检测相关路径,纯文档改动可能跳过目录校验。跳过后显示成功的任务,不代表 Markdown 链接或中英文文档已被检查;这些内容仍需单独审查。
|
[校验工作流](.github/workflows/i18n-validate.yml)是 CI 行为的权威来源。它会检测相关路径,纯文档改动可能跳过目录校验。跳过后显示成功的任务,不代表 Markdown 链接或中英文文档已被检查;这些内容仍需单独审查。
|
||||||
|
|
||||||
## 安全与信任边界
|
## 安全与信任边界
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
@@ -46,18 +46,20 @@
|
|||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/desirecore-agent/dingtalk-workspace.git",
|
"url": "https://github.com/desirecore-agent/dingtalk-workspace.git",
|
||||||
"ref": "746d011a64db4061a68e512f3e5aaa4c0ec5abe5"
|
"ref": "186d850da13edbaceab5bb9cccffe5ff7cff6a12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -80,9 +82,9 @@
|
|||||||
"compliance": {
|
"compliance": {
|
||||||
"licenseEvidencePath": "LICENSE",
|
"licenseEvidencePath": "LICENSE",
|
||||||
"noticePath": "NOTICE",
|
"noticePath": "NOTICE",
|
||||||
"reviewedRef": "746d011a64db4061a68e512f3e5aaa4c0ec5abe5",
|
"reviewedRef": "186d850da13edbaceab5bb9cccffe5ff7cff6a12",
|
||||||
"reviewedAt": "2026-09-30",
|
"reviewedAt": "2026-10-05",
|
||||||
"reviewedBy": "Codex",
|
"reviewedBy": "Market upstream maintenance",
|
||||||
"upstreamEndorsed": true
|
"upstreamEndorsed": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -38,6 +38,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/desirecore-agent/dingtalk-workspace.git",
|
"repoUrl": "https://github.com/desirecore-agent/dingtalk-workspace.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "746d011a64db4061a68e512f3e5aaa4c0ec5abe5"
|
"ref": "186d850da13edbaceab5bb9cccffe5ff7cff6a12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
@@ -46,20 +46,20 @@
|
|||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-06T00:00:00Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/desirecore-agent/feishu-orchestrator.git",
|
"url": "https://github.com/desirecore-agent/feishu-orchestrator.git",
|
||||||
"ref": "8f1d8102f4b934c8b7f0999c325a59a4e7b3b86c"
|
"ref": "3b22436d4c0a98124946fe935f816fde1b49fa4f"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -87,9 +87,9 @@
|
|||||||
"compliance": {
|
"compliance": {
|
||||||
"licenseEvidencePath": "LICENSE",
|
"licenseEvidencePath": "LICENSE",
|
||||||
"noticePath": "NOTICE",
|
"noticePath": "NOTICE",
|
||||||
"reviewedRef": "8f1d8102f4b934c8b7f0999c325a59a4e7b3b86c",
|
"reviewedRef": "3b22436d4c0a98124946fe935f816fde1b49fa4f",
|
||||||
"reviewedAt": "2026-09-30",
|
"reviewedAt": "2026-10-05",
|
||||||
"reviewedBy": "Codex",
|
"reviewedBy": "Market upstream maintenance",
|
||||||
"upstreamEndorsed": true
|
"upstreamEndorsed": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -39,6 +39,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/desirecore-agent/feishu-orchestrator.git",
|
"repoUrl": "https://github.com/desirecore-agent/feishu-orchestrator.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "8f1d8102f4b934c8b7f0999c325a59a4e7b3b86c"
|
"ref": "3b22436d4c0a98124946fe935f816fde1b49fa4f"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
@@ -46,20 +46,20 @@
|
|||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-29T00:00:00Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/desirecore-agent/invoice-organizer.git",
|
"url": "https://github.com/desirecore-agent/invoice-organizer.git",
|
||||||
"ref": "4970adebc906d83dd35953ea00aa941eb3dcfed5"
|
"ref": "d22395a0c9387b283ab5b86d6a66a47d48e29f75"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -77,9 +77,9 @@
|
|||||||
},
|
},
|
||||||
"compliance": {
|
"compliance": {
|
||||||
"licenseEvidencePath": "LICENSE",
|
"licenseEvidencePath": "LICENSE",
|
||||||
"reviewedRef": "4970adebc906d83dd35953ea00aa941eb3dcfed5",
|
"reviewedRef": "d22395a0c9387b283ab5b86d6a66a47d48e29f75",
|
||||||
"reviewedAt": "2026-09-30",
|
"reviewedAt": "2026-10-05",
|
||||||
"reviewedBy": "Codex",
|
"reviewedBy": "Market upstream maintenance",
|
||||||
"upstreamEndorsed": true
|
"upstreamEndorsed": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -38,6 +38,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/desirecore-agent/invoice-organizer.git",
|
"repoUrl": "https://github.com/desirecore-agent/invoice-organizer.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "4970adebc906d83dd35953ea00aa941eb3dcfed5"
|
"ref": "d22395a0c9387b283ab5b86d6a66a47d48e29f75"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
@@ -46,12 +46,12 @@
|
|||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-30",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-13",
|
"value": "2026-10-05",
|
||||||
"precision": "day"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/desirecore-agent/mimo-model-quota-monitor.git",
|
"url": "https://github.com/desirecore-agent/mimo-model-quota-monitor.git",
|
||||||
"ref": "0abbfc28f4fe3fffd6da0708a361a9c0a1fe15b9"
|
"ref": "5e68bab7afacb54705f7cc99c337ec3b6d4ebb84"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -77,9 +77,9 @@
|
|||||||
},
|
},
|
||||||
"compliance": {
|
"compliance": {
|
||||||
"licenseEvidencePath": "LICENSE",
|
"licenseEvidencePath": "LICENSE",
|
||||||
"reviewedRef": "0abbfc28f4fe3fffd6da0708a361a9c0a1fe15b9",
|
"reviewedRef": "5e68bab7afacb54705f7cc99c337ec3b6d4ebb84",
|
||||||
"reviewedAt": "2026-09-30",
|
"reviewedAt": "2026-10-05",
|
||||||
"reviewedBy": "Codex",
|
"reviewedBy": "Market upstream maintenance",
|
||||||
"upstreamEndorsed": true
|
"upstreamEndorsed": true
|
||||||
},
|
},
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/desirecore-agent/mimo-model-quota-monitor.git",
|
"repoUrl": "https://github.com/desirecore-agent/mimo-model-quota-monitor.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "0abbfc28f4fe3fffd6da0708a361a9c0a1fe15b9"
|
"ref": "5e68bab7afacb54705f7cc99c337ec3b6d4ebb84"
|
||||||
},
|
},
|
||||||
"requiredClientVersion": "10.0.156"
|
"requiredClientVersion": "10.0.156"
|
||||||
}
|
}
|
||||||
|
|||||||
59
docs/upstream-health-189-remediation.md
Normal file
59
docs/upstream-health-189-remediation.md
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# Upstream health report 189 remediation
|
||||||
|
|
||||||
|
Reviewed on 2026-10-05 against Market baseline `04042d44bff2503095840597696450a9fcdeb4f8`.
|
||||||
|
|
||||||
|
Tracking issue: [market#189](https://github.com/desirecore/market/issues/189). This review updates 26 pointers, pins both previously mutable collections, and leaves two identical-tree Agent pins unchanged. Top-level inventory remains 7 Agents, 2 Teams and 73 Skills; the nine collections contain 181 children.
|
||||||
|
|
||||||
|
## Detector repairs
|
||||||
|
|
||||||
|
- Resolve exact branch refs so `changeset-release/main` cannot be selected as `main`.
|
||||||
|
- Discover exact tracked `SKILL.md` files; exclude symlinks, fixtures, missing frontmatter names and `metadata.internal: true`.
|
||||||
|
- Check installed paths at the pin; report branch-head moves separately when the installed pin still resolves.
|
||||||
|
- Ignore identical Git trees and unrelated single-skill subtree feed/site changes, while retaining root license/notice review.
|
||||||
|
- Treat transient fetch failures as unknown. JSON workflow decisions keep unpinned and unknown entries visible.
|
||||||
|
- Apply reviewed child translations from fixed presentation-only overrides; reject missing IDs or attempts to override source facts.
|
||||||
|
|
||||||
|
## Snapshot decisions
|
||||||
|
|
||||||
|
| Entry | Reviewed snapshot or diff | Decision |
|
||||||
|
|---|---|---|
|
||||||
|
| agent/dingtalk-workspace | [746d011 → 186d850](https://github.com/desirecore-agent/dingtalk-workspace/compare/746d011a64db4061a68e512f3e5aaa4c0ec5abe5...186d850da13edbaceab5bb9cccffe5ff7cff6a12) | AGENTS.md/CLAUDE.md update-delivery documentation only; Agent version remains 1.0.1. |
|
||||||
|
| agent/feishu-orchestrator | [8f1d810 → 3b22436](https://github.com/desirecore-agent/feishu-orchestrator/compare/8f1d8102f4b934c8b7f0999c325a59a4e7b3b86c...3b22436d4c0a98124946fe935f816fde1b49fa4f) | AGENTS.md/CLAUDE.md update/fork documentation only; Agent version remains 1.0.1. |
|
||||||
|
| agent/invoice-organizer | [4970ade → d22395a](https://github.com/desirecore-agent/invoice-organizer/compare/4970adebc906d83dd35953ea00aa941eb3dcfed5...d22395a0c9387b283ab5b86d6a66a47d48e29f75) | AGENTS.md/CLAUDE.md update-delivery documentation only; Agent version remains 1.1.2. |
|
||||||
|
| agent/mimo-model-quota-monitor | [0abbfc2 → 5e68bab](https://github.com/desirecore-agent/mimo-model-quota-monitor/compare/0abbfc28f4fe3fffd6da0708a361a9c0a1fe15b9...5e68bab7afacb54705f7cc99c337ec3b6d4ebb84) | AGENTS.md/CLAUDE.md update-delivery documentation only; Agent version remains 1.0.1. |
|
||||||
|
| agent/tender-review-assistant | [d58ed0a → 5bc9ebf](https://github.com/desirecore-agent/tender-review-assistant/compare/d58ed0a0de03628357e8d9fd166ba929c2c275ba...5bc9ebf036be63c0c9e01f04658e84dde2836807) | Identical Git tree: retain the reviewed pin and version. |
|
||||||
|
| agent/wecom-assistant | [d08336c → 4e040ea](https://github.com/desirecore-agent/wecom-assistant/compare/d08336c6080e40f178a33d11b811b91a98f48ce9...4e040eab6c2198babcfaa15b764a373d261b4a7c) | Identical Git tree: retain the reviewed pin and version. Merge metadata alone no longer triggers an update. |
|
||||||
|
| skill/agent-reach | [e825f67 → a19a171](https://github.com/Panniantong/agent-reach/compare/e825f6740d24c6c315c3b0dc41907e6c87ff39a5...a19a171fa980a0785849596492e0af4db800c82f) | Channel/browser and credential handling reviewed; needs operator-installed CLIs and authorized platform sessions. |
|
||||||
|
| skill/ai-news-radar | [f23ce28 → 6893951](https://github.com/LearnPrompt/ai-news-radar/compare/f23ce289695aaf8808f4c19b0b815b51b20730a9...689395109cc962a27c369bdd6fa50d1e090eb319) | Opt-in QQ Agent Mail adapter reviewed. Generated news-feed refreshes do not change the installed skill subtree. |
|
||||||
|
| skill/archify | [c1443b3 → 7158026](https://github.com/tt-a1i/archify/compare/c1443b31b496eebf4a68bf83151816c955ddb796...7158026e852f3aa6578c741e673b46d7878c92c1) | Preserves upstream version 3.0 as an opaque identifier; Node/browser prerequisites and verification boundaries disclosed. |
|
||||||
|
| skill/baoyu-skills | [6b7a2e4 → 1567581](https://github.com/JimLiu/baoyu-skills/compare/6b7a2e417500561a5ecdd0b168332f4142584617...1567581c26ec29f4216c6e6835415bf30343b0e3) | 21 public children retained; baoyu-image-gen 2.2.0 and provider guidance updated. External API entitlements remain separate. |
|
||||||
|
| skill/dingtalk-cli | [pin 3f0fc94](https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli/tree/3f0fc94111b1f9cd34e47468980b1f1a723ca69a) | Pins exact main; 15 to 16 public children, adds dingtalk-aicard. Internal mono and lowercase reference documents excluded; bilingual summaries retained. |
|
||||||
|
| skill/flyai-skill | [54277b2 → 86fe2cc](https://github.com/alibaba-flyai/flyai-skill/compare/54277b27b68e53741954c08541faedba1d45cc7b...86fe2cc3e25464d0e0bd6a769b27b5f9f3b04128) | README/support and notification workflow only; skill version remains 1.0.15. |
|
||||||
|
| skill/follow-builders | [239227d → ec5b50e](https://github.com/zarazhangrui/follow-builders/compare/239227ddea46dfb9db6ed23e5864a5fabb9cee83...ec5b50e3127ba9cc5e9c54ea7bf409b0654c7f39) | Public feed and delivery references reviewed; optional delivery needs operator credentials and authorization. License evidence remains unknown. |
|
||||||
|
| skill/humanizer | [523374d → 225a6f3](https://github.com/blader/humanizer/compare/523374dee72d67c7b2b5f858ea0094ffda49c3ac...225a6f39ac85f76ee48dbad772ea4abe4ed6c9d8) | Skill 3.1.0; editing preserves factual content and treats supplied text as material. |
|
||||||
|
| skill/humanizer-zh | [91f3d39 → f4518a8](https://github.com/op7418/Humanizer-zh/compare/91f3d394db8419c20d67ebe22a96cf8fee0a404b...f4518a8eab97b8bfebc66a89d34320a89bef6930) | Editing rules preserve facts and author voice; supplied text remains data. No upstream release version is declared. |
|
||||||
|
| skill/ian-xiaohei-illustrations | [91b5608 → 4102eb8](https://github.com/helloianneo/ian-xiaohei-illustrations/compare/91b560849e8f883922cc2fa8a358a668caa94105...4102eb807f03bcb6e538a16e8b31b41db8b5b954) | README punctuation only; skill content unchanged. Image-provider prerequisites disclosed. |
|
||||||
|
| skill/impeccable | [e4ab5e2 → 6e802bd](https://github.com/pbakaus/impeccable/compare/e4ab5e24bdf5321b72163d2fbcbe6fa985c848ba...6e802bd0ed99f53180e2359fddab6da8d97970d9) | Skill 4.5.0; standalone binary launcher and its first-run download/fallback disclosed. |
|
||||||
|
| skill/khazix-skills | [d4e43c9 → 322346d](https://github.com/KKKKhazix/khazix-skills/compare/d4e43c91f16dcd859748c1d71ec7d8aa1ebb4694...322346ded8129436b3f64707789a73e732ae24d9) | 5 to 6 children; adds leader. AIHOT service/data terms are distinct from the MIT license on skill files. |
|
||||||
|
| skill/larksuite-cli | [a257fcb → 7beffb0](https://github.com/larksuite/cli/compare/a257fcbaf9f07787b6c170d9265e9ef273b0c579...7beffb086d7fa3c5b843d8affa7c089f49cfc65e) | 28 children retained; lark-base 1.2.23 and lark-sheets 3.5.2. Separate CLI, account scopes and product entitlements disclosed. |
|
||||||
|
| skill/last30days | [a218eda → 5103ba4](https://github.com/mvanhorn/last30days-skill/compare/a218edadbc3361672f5e5e2cd72a8212b0b3fbb8...5103ba478b380552207a3754b74c7655d64208cd) | Skill 3.26.0; source outcomes, optional API accounts and browser-consent requirements reviewed. |
|
||||||
|
| skill/marketingskills | [7868cb9 → dda3841](https://github.com/coreyhaines31/marketingskills/compare/7868cb9251fad80a73d26e488a5ad5f6c4a9f335...dda3841f0b294e01e93b1541486beefbfab0915e) | 49 to 50 children; adds events. Updated marketing guidance and optional paid-tool prerequisites disclosed. |
|
||||||
|
| skill/mattpocock-skills | [pin 24fe0ef](https://github.com/mattpocock/skills/tree/24fe0ef7737efae15c87225755e9f6f5965e4888) | Pins exact main; 35 to 37 children. Removes resolving-merge-conflicts; adds implement-spec, pr and retro at skills/engineering/. |
|
||||||
|
| skill/mt-paotui-for-client | [dc5cc22 → 05ead23](https://github.com/meituan/MT-Paotui-For-Client/compare/dc5cc223a010c2fe4377088affc2fbe4c6c6473d...05ead232ae2b94b9b55b2a1e126e039a1cb6db00) | Order/authentication flow reviewed; account authorization, real-order confirmation and separate charges disclosed. License evidence remains unknown. |
|
||||||
|
| skill/nuwa-skill | [27642f5 → fe03746](https://github.com/alchaincyf/nuwa-skill/compare/27642f5bfed2dc1bbf8ee59a2c1ee602a626bbd7...fe0374687037c4cc51a65c1e0c145afe2981dc69) | Adds a bounded update notice; updating remains the user's decision. |
|
||||||
|
| skill/taste-skill | [ccbc156 → ce26fc2](https://github.com/Leonxlnx/taste-skill/compare/ccbc15639c97057cbfcf32ecebc38ef716e4bb37...ce26fc25c0e5e8cab638f883de62d9a86ee5e45b) | README sponsorship changes only; installed skill content unchanged. |
|
||||||
|
| skill/watchless | [a09c0ed → 34e2fa8](https://github.com/chenzixin1/watchless/compare/a09c0edc6c3121c05e9824ef556256441d291d4f...34e2fa861a2e31bb4197e9e0a7b8d90e76ebeb6b) | Default ASR changes to Tencent Cloud; separate credentials, billing and audio-transfer permission disclosed. |
|
||||||
|
| skill/wechatpay-skills | [8573bdc → 9df6ba4](https://github.com/wechatpay-apiv3/wechatpay-skills/compare/8573bdc38b86fa67a42acfc422d6b4dbca4ada21...9df6ba49f6f394f47ca1ee68bf9517d000b2c9d9) | Preserves upstream version 1.2 as an opaque identifier; merchant authorization is separate from document lookup. |
|
||||||
|
| skill/wecom-cli | [78c514b → c4b9b66](https://github.com/WecomTeam/wecom-cli/compare/78c514b2afee7c0d3d7be715628478421f37ee63...c4b9b6610c7ca2854441bfa336a5b458daeeb707) | 14 children retained; minimum CLI 1.2.1 and python-docx/openpyxl generation prerequisites disclosed. |
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
- 99 unit tests pass across i18n, catalog, collection-generator and upstream-health suites.
|
||||||
|
- Catalog coverage, i18n validation and translation freshness pass.
|
||||||
|
- All nine pinned collection inventories pass the read-only generation check.
|
||||||
|
- Online health reports 41 checked entries, no broken pointers, no actionable findings and no unknown results.
|
||||||
|
- Python and workflow shell syntax, plus `git diff --check`, pass.
|
||||||
|
|
||||||
|
Catalog validation retains 105 earlier warnings, down from 123, with no new warning groups. They concern existing license/review/provenance gaps and untranslated child summaries outside the new reviewed translations. This change does not claim to resolve those separate catalog-wide gaps.
|
||||||
|
|
||||||
|
Validation covers catalog contracts, source retrieval, pinned paths and reproducible inventories. Third-party programs and live account services were not executed; their availability is not implied by a healthy pointer.
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "DesireCore Official Market",
|
"name": "DesireCore Official Market",
|
||||||
"version": "1.5.9",
|
"version": "1.5.10",
|
||||||
"schemaVersion": "1.1.0",
|
"schemaVersion": "1.1.0",
|
||||||
"supportedLocales": [
|
"supportedLocales": [
|
||||||
"zh-CN",
|
"zh-CN",
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"totalAgents": 7,
|
"totalAgents": 7,
|
||||||
"totalTeams": 2,
|
"totalTeams": 2,
|
||||||
"totalSkills": 73,
|
"totalSkills": 73,
|
||||||
"lastUpdated": "2026-10-04"
|
"lastUpdated": "2026-10-05"
|
||||||
},
|
},
|
||||||
"features": [
|
"features": [
|
||||||
"curated-index",
|
"curated-index",
|
||||||
|
|||||||
@@ -14,17 +14,17 @@ script looks at each upstream and reports, without rewriting anything:
|
|||||||
bad-branch source.repoBranch no longer exists upstream
|
bad-branch source.repoBranch no longer exists upstream
|
||||||
bad-ref pinned source.ref can no longer be fetched (history rewritten)
|
bad-ref pinned source.ref can no longer be fetched (history rewritten)
|
||||||
bad-path source.path, the root SKILL.md, or a declared child path is missing at
|
bad-path source.path, the root SKILL.md, or a declared child path is missing at
|
||||||
branch head
|
the installed snapshot (source.ref, or branch head when unpinned)
|
||||||
unreachable network error other than "not found"; treated as unknown, not broken
|
unreachable network error other than "not found"; treated as unknown, not broken
|
||||||
new-skill branch head has collection children that `children` does not declare
|
new-skill branch head has collection children that `children` does not declare
|
||||||
(same discovery rules as scripts/gen-collection-children.py)
|
(same discovery rules as scripts/gen-collection-children.py)
|
||||||
outdated pinned source.ref is behind branch head; an update is available
|
upstream-path-change a declared path moved at branch head but the pin still works
|
||||||
|
outdated pinned content differs from branch head; review before updating
|
||||||
unpinned entry follows a moving branch without source.ref
|
unpinned entry follows a moving branch without source.ref
|
||||||
ok nothing to report
|
ok nothing to report
|
||||||
|
|
||||||
Path checks run against branch head: they answer "will this pointer still work
|
Path checks distinguish the installed snapshot from changes at branch head.
|
||||||
after the next ref bump", while `bad-ref` answers "does the pinned ref still
|
Only skills get path checks; agents and teams are AgentFS repositories.
|
||||||
resolve". Only skills get path checks; agents and teams are AgentFS repositories.
|
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
uv run scripts/catalog/check_upstream_health.py # text table
|
uv run scripts/catalog/check_upstream_health.py # text table
|
||||||
@@ -55,7 +55,8 @@ REPO_ROOT = Path(__file__).resolve().parents[2]
|
|||||||
KINDS = ("skills", "agents", "teams")
|
KINDS = ("skills", "agents", "teams")
|
||||||
|
|
||||||
BROKEN = ("gone", "bad-branch", "bad-ref", "bad-path")
|
BROKEN = ("gone", "bad-branch", "bad-ref", "bad-path")
|
||||||
ORDER = (*BROKEN, "unreachable", "new-skill", "outdated", "unpinned", "ok")
|
ACTIONABLE = (*BROKEN, "upstream-path-change", "new-skill", "outdated", "unpinned")
|
||||||
|
ORDER = (*BROKEN, "unreachable", "upstream-path-change", "new-skill", "outdated", "unpinned", "ok")
|
||||||
|
|
||||||
# Git asks for credentials when a public repository disappears; never prompt.
|
# Git asks for credentials when a public repository disappears; never prompt.
|
||||||
GIT_ENV = {**os.environ, "GIT_TERMINAL_PROMPT": "0", "GCM_INTERACTIVE": "never"}
|
GIT_ENV = {**os.environ, "GIT_TERMINAL_PROMPT": "0", "GCM_INTERACTIVE": "never"}
|
||||||
@@ -100,12 +101,14 @@ def check_git(entry: dict, kind: str) -> list[tuple[str, str]]:
|
|||||||
ref = source.get("ref")
|
ref = source.get("ref")
|
||||||
issues: list[tuple[str, str]] = []
|
issues: list[tuple[str, str]] = []
|
||||||
|
|
||||||
query = ["--heads", url, branch] if branch else [url, "HEAD"]
|
advertised_ref = f"refs/heads/{branch}" if branch else "HEAD"
|
||||||
|
query = ["--heads", url, advertised_ref] if branch else [url, "HEAD"]
|
||||||
remote = git("ls-remote", *query, timeout=90)
|
remote = git("ls-remote", *query, timeout=90)
|
||||||
if remote.returncode != 0:
|
if remote.returncode != 0:
|
||||||
detail = last_line(remote.stderr)
|
detail = last_line(remote.stderr)
|
||||||
return [("gone" if NOT_FOUND.search(remote.stderr) else "unreachable", detail)]
|
return [("gone" if NOT_FOUND.search(remote.stderr) else "unreachable", detail)]
|
||||||
heads = [line.split()[0] for line in remote.stdout.splitlines() if line.strip()]
|
heads = [line.split()[0] for line in remote.stdout.splitlines()
|
||||||
|
if len(line.split()) == 2 and line.split()[1] == advertised_ref]
|
||||||
if branch and not heads:
|
if branch and not heads:
|
||||||
return [("bad-branch", f"branch '{branch}' not found upstream")]
|
return [("bad-branch", f"branch '{branch}' not found upstream")]
|
||||||
if not heads:
|
if not heads:
|
||||||
@@ -121,30 +124,55 @@ def check_git(entry: dict, kind: str) -> list[tuple[str, str]]:
|
|||||||
if cloned.returncode != 0:
|
if cloned.returncode != 0:
|
||||||
return [("unreachable", f"clone failed: {last_line(cloned.stderr)}")]
|
return [("unreachable", f"clone failed: {last_line(cloned.stderr)}")]
|
||||||
|
|
||||||
|
# The branch can advance between advertisement and clone. Inspect the
|
||||||
|
# actual cloned snapshot throughout this check.
|
||||||
|
cloned_head = git("rev-parse", "HEAD", cwd=repo)
|
||||||
|
if cloned_head.returncode != 0:
|
||||||
|
return [("unreachable", f"cannot resolve clone: {last_line(cloned_head.stderr)}")]
|
||||||
|
head = cloned_head.stdout.strip()
|
||||||
|
|
||||||
if ref and ref != head:
|
if ref and ref != head:
|
||||||
fetched = git("fetch", "--quiet", "--depth", "1", "origin", ref, cwd=repo, timeout=180)
|
fetched = git("fetch", "--quiet", "--depth", "1", "origin", ref, cwd=repo, timeout=180)
|
||||||
if fetched.returncode != 0:
|
if fetched.returncode != 0:
|
||||||
issues.append(("bad-ref", f"pinned {ref[:12]} is no longer fetchable"))
|
missing = re.search(r"not our ref|couldn't find remote ref|unadvertised object|not found",
|
||||||
|
fetched.stderr, re.IGNORECASE)
|
||||||
|
status = "bad-ref" if missing else "unreachable"
|
||||||
|
return [(status, f"cannot fetch pinned {ref[:12]}: {last_line(fetched.stderr)}")]
|
||||||
|
|
||||||
|
try:
|
||||||
if kind == "skills":
|
if kind == "skills":
|
||||||
issues += check_skill_paths(entry, repo)
|
if ref and ref != head:
|
||||||
|
issues += check_skill_paths(entry, repo, ref, discover=False)
|
||||||
|
upstream = check_skill_paths(entry, repo, head)
|
||||||
|
issues += [("upstream-path-change" if status == "bad-path" else status, detail)
|
||||||
|
for status, detail in upstream
|
||||||
|
if status != "bad-path" or ("bad-path", detail) not in issues]
|
||||||
|
else:
|
||||||
|
issues += check_skill_paths(entry, repo, head)
|
||||||
|
except RuntimeError as err:
|
||||||
|
return [("unreachable", str(err)[:300])]
|
||||||
|
|
||||||
if ref and ref != head:
|
if ref and ref != head:
|
||||||
|
# A single-skill pointer installs only source.path. Upstream feeds,
|
||||||
|
# site builds and unrelated skills must not cause endless repins.
|
||||||
|
# Root licensing changes still need review even for a subtree.
|
||||||
|
path = (source.get("path") or "").strip("/")
|
||||||
|
scope = ["--", path, ":(top,glob)LICENSE*", ":(top,glob)NOTICE*", ":(top,glob)COPYING*"] \
|
||||||
|
if kind == "skills" and path else []
|
||||||
|
difference = git("diff", "--quiet", ref, head, *scope, cwd=repo)
|
||||||
|
if difference.returncode == 1:
|
||||||
issues.append(("outdated", f"{ref[:7]} -> {head[:7]}"))
|
issues.append(("outdated", f"{ref[:7]} -> {head[:7]}"))
|
||||||
|
elif difference.returncode != 0:
|
||||||
|
issues.append(("unreachable", f"cannot compare snapshots: {last_line(difference.stderr)}"))
|
||||||
|
|
||||||
if not ref:
|
if not ref:
|
||||||
issues.append(("unpinned", f"follows '{branch or 'HEAD'}' at {head[:7]}"))
|
issues.append(("unpinned", f"follows '{branch or 'HEAD'}' at {head[:7]}"))
|
||||||
return issues
|
return issues
|
||||||
|
|
||||||
|
|
||||||
def check_skill_paths(entry: dict, repo: Path) -> list[tuple[str, str]]:
|
def check_skill_paths(entry: dict, repo: Path, revision: str = "HEAD", *,
|
||||||
# Materialise only SKILL.md files; the generator reads their frontmatter.
|
discover: bool = True) -> list[tuple[str, str]]:
|
||||||
git("sparse-checkout", "set", "--no-cone", "SKILL.md", cwd=repo)
|
skill_dirs = {Path(path).parent.as_posix() for path in GENERATOR.skill_paths(repo, revision)}
|
||||||
checkout = git("checkout", "--quiet", "HEAD", cwd=repo, timeout=300)
|
|
||||||
if checkout.returncode != 0:
|
|
||||||
return [("unreachable", f"checkout failed: {last_line(checkout.stderr)}")]
|
|
||||||
|
|
||||||
skill_dirs = {p.parent.relative_to(repo).as_posix() for p in repo.rglob("SKILL.md")
|
|
||||||
if ".git" not in p.parts}
|
|
||||||
skill_dirs = {"" if d == "." else d for d in skill_dirs}
|
skill_dirs = {"" if d == "." else d for d in skill_dirs}
|
||||||
issues: list[tuple[str, str]] = []
|
issues: list[tuple[str, str]] = []
|
||||||
children = entry.get("children") or []
|
children = entry.get("children") or []
|
||||||
@@ -154,7 +182,8 @@ def check_skill_paths(entry: dict, repo: Path) -> list[tuple[str, str]]:
|
|||||||
for child in children:
|
for child in children:
|
||||||
if child["path"].strip("/") not in skill_dirs:
|
if child["path"].strip("/") not in skill_dirs:
|
||||||
issues.append(("bad-path", f"child '{child['id']}' -> '{child['path']}' has no SKILL.md"))
|
issues.append(("bad-path", f"child '{child['id']}' -> '{child['path']}' has no SKILL.md"))
|
||||||
discovered = [c for c in GENERATOR.discover_children(repo) if c["path"] not in declared]
|
discovered = [c for c in GENERATOR.discover_children(repo, revision)
|
||||||
|
if c["path"] not in declared] if discover else []
|
||||||
declared_ids = {c["id"] for c in children}
|
declared_ids = {c["id"] for c in children}
|
||||||
extra = [c["path"] for c in discovered if c["id"] not in declared_ids]
|
extra = [c["path"] for c in discovered if c["id"] not in declared_ids]
|
||||||
if extra:
|
if extra:
|
||||||
@@ -216,6 +245,7 @@ def render_markdown(results: list[dict]) -> str:
|
|||||||
sections = [
|
sections = [
|
||||||
("Broken — installation fails", BROKEN),
|
("Broken — installation fails", BROKEN),
|
||||||
("Unreachable — network error, status unknown", ("unreachable",)),
|
("Unreachable — network error, status unknown", ("unreachable",)),
|
||||||
|
("Upstream path changes — pinned installation still resolves", ("upstream-path-change",)),
|
||||||
("Undeclared upstream skills", ("new-skill",)),
|
("Undeclared upstream skills", ("new-skill",)),
|
||||||
("Updates available", ("outdated",)),
|
("Updates available", ("outdated",)),
|
||||||
("Unpinned", ("unpinned",)),
|
("Unpinned", ("unpinned",)),
|
||||||
@@ -235,11 +265,22 @@ def render_markdown(results: list[dict]) -> str:
|
|||||||
return "\n".join(out)
|
return "\n".join(out)
|
||||||
|
|
||||||
|
|
||||||
|
def summarize(results: list[dict]) -> dict:
|
||||||
|
statuses = {issue["status"] for result in results for issue in result["issues"]}
|
||||||
|
return {
|
||||||
|
"checked": len(results),
|
||||||
|
"broken": bool(statuses.intersection(BROKEN)),
|
||||||
|
"actionable": bool(statuses.intersection(ACTIONABLE)),
|
||||||
|
"unknown": "unreachable" in statuses,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def main(argv: list[str] | None = None) -> int:
|
def main(argv: list[str] | None = None) -> int:
|
||||||
parser = argparse.ArgumentParser(description=__doc__.splitlines()[0])
|
parser = argparse.ArgumentParser(description=__doc__.splitlines()[0])
|
||||||
parser.add_argument("ids", nargs="*", help="entry IDs to check (default: every external entry)")
|
parser.add_argument("ids", nargs="*", help="entry IDs to check (default: every external entry)")
|
||||||
parser.add_argument("--format", choices=("text", "markdown", "json"), default="text")
|
parser.add_argument("--format", choices=("text", "markdown", "json"), default="text")
|
||||||
parser.add_argument("--jobs", type=int, default=8, help="parallel upstream checks")
|
parser.add_argument("--jobs", type=int, default=8, help="parallel upstream checks")
|
||||||
|
parser.add_argument("--summary-file", type=Path, help="write machine-readable workflow decisions")
|
||||||
args = parser.parse_args(argv)
|
args = parser.parse_args(argv)
|
||||||
|
|
||||||
paths = [p for kind in KINDS for p in sorted((REPO_ROOT / kind).glob("*/entry.json"))]
|
paths = [p for kind in KINDS for p in sorted((REPO_ROOT / kind).glob("*/entry.json"))]
|
||||||
@@ -253,13 +294,16 @@ def main(argv: list[str] | None = None) -> int:
|
|||||||
with ThreadPoolExecutor(max_workers=max(1, args.jobs)) as pool:
|
with ThreadPoolExecutor(max_workers=max(1, args.jobs)) as pool:
|
||||||
results = list(pool.map(check_entry, paths))
|
results = list(pool.map(check_entry, paths))
|
||||||
|
|
||||||
|
if args.summary_file:
|
||||||
|
args.summary_file.write_text(json.dumps(summarize(results), indent=2) + "\n", encoding="utf-8")
|
||||||
|
|
||||||
if args.format == "json":
|
if args.format == "json":
|
||||||
print(json.dumps(results, ensure_ascii=False, indent=2))
|
print(json.dumps(results, ensure_ascii=False, indent=2))
|
||||||
elif args.format == "markdown":
|
elif args.format == "markdown":
|
||||||
print(render_markdown(results))
|
print(render_markdown(results))
|
||||||
else:
|
else:
|
||||||
print(render_text(results))
|
print(render_text(results))
|
||||||
return 1 if any(i["status"] in BROKEN for r in results for i in r["issues"]) else 0
|
return 1 if summarize(results)["broken"] else 0
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import sys
|
|||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
|
||||||
CHECKER_PATH = Path(__file__).with_name("check_upstream_health.py")
|
CHECKER_PATH = Path(__file__).with_name("check_upstream_health.py")
|
||||||
@@ -86,11 +87,19 @@ class UpstreamHealthTests(unittest.TestCase):
|
|||||||
self.assertIn("bad-path", result)
|
self.assertIn("bad-path", result)
|
||||||
|
|
||||||
def test_newer_head_is_outdated(self) -> None:
|
def test_newer_head_is_outdated(self) -> None:
|
||||||
self.commit({"README.md": "x"})
|
self.commit({"skills/alpha/SKILL.md": "---\nname: alpha\ndescription: Updated.\n---\n"})
|
||||||
result = self.statuses(self.entry(ref=self.first, path="skills/alpha"))
|
result = self.statuses(self.entry(ref=self.first, path="skills/alpha"))
|
||||||
self.assertIn("outdated", result)
|
self.assertIn("outdated", result)
|
||||||
self.assertNotIn("bad-ref", result)
|
self.assertNotIn("bad-ref", result)
|
||||||
|
|
||||||
|
def test_unrelated_feed_refresh_does_not_offer_a_skill_update(self) -> None:
|
||||||
|
self.commit({"data/latest.json": '{"updated": true}', "README.md": "Updated website.\n"})
|
||||||
|
self.assertEqual(self.statuses(self.entry(ref=self.first, path="skills/alpha")), {"ok": ""})
|
||||||
|
|
||||||
|
def test_root_license_change_still_needs_review_for_a_subtree(self) -> None:
|
||||||
|
self.commit({"LICENSE": "New licensing terms.\n"})
|
||||||
|
self.assertIn("outdated", self.statuses(self.entry(ref=self.first, path="skills/alpha")))
|
||||||
|
|
||||||
def test_unfetchable_ref_is_bad_ref(self) -> None:
|
def test_unfetchable_ref_is_bad_ref(self) -> None:
|
||||||
result = self.statuses(self.entry(ref="0" * 40, path="skills/alpha"))
|
result = self.statuses(self.entry(ref="0" * 40, path="skills/alpha"))
|
||||||
self.assertIn("bad-ref", result)
|
self.assertIn("bad-ref", result)
|
||||||
@@ -99,6 +108,62 @@ class UpstreamHealthTests(unittest.TestCase):
|
|||||||
result = self.statuses(self.entry(path="skills/alpha"))
|
result = self.statuses(self.entry(path="skills/alpha"))
|
||||||
self.assertIn("unpinned", result)
|
self.assertIn("unpinned", result)
|
||||||
|
|
||||||
|
def test_branch_suffix_is_not_the_requested_branch(self) -> None:
|
||||||
|
sh("git", "branch", "-m", "changeset-release/main", cwd=self.upstream)
|
||||||
|
self.assertIn("bad-branch", self.statuses(self.entry(ref=self.first, path="skills/alpha")))
|
||||||
|
|
||||||
|
def test_exact_branch_ignores_another_main_suffix(self) -> None:
|
||||||
|
sh("git", "branch", "changeset-release/main", cwd=self.upstream)
|
||||||
|
head = self.commit({"README.md": "New content.\n"})
|
||||||
|
self.assertEqual(self.statuses(self.entry(ref=head, path="skills/alpha")), {"ok": ""})
|
||||||
|
|
||||||
|
def test_identical_tree_does_not_offer_an_update(self) -> None:
|
||||||
|
sh("git", "commit", "--quiet", "--allow-empty", "-m", "merge metadata", cwd=self.upstream)
|
||||||
|
self.assertEqual(self.statuses(self.entry(ref=self.first, path="skills/alpha")), {"ok": ""})
|
||||||
|
|
||||||
|
def test_moved_upstream_path_does_not_break_valid_pin(self) -> None:
|
||||||
|
(self.upstream / "skills/alpha/SKILL.md").unlink()
|
||||||
|
self.commit({"skills/beta/SKILL.md": "---\nname: beta\ndescription: B.\n---\n"})
|
||||||
|
result = self.statuses(self.entry(ref=self.first, path="skills/alpha"))
|
||||||
|
self.assertIn("upstream-path-change", result)
|
||||||
|
self.assertNotIn("bad-path", result)
|
||||||
|
self.assertIn("bad-path", self.statuses(self.entry(path="skills/alpha")))
|
||||||
|
|
||||||
|
def test_lowercase_reference_is_not_a_skill(self) -> None:
|
||||||
|
head = self.commit({"skills/beta/skill.md": "Reference documentation.\n"})
|
||||||
|
self.assertIn("bad-path", self.statuses(self.entry(ref=head, path="skills/beta")))
|
||||||
|
|
||||||
|
def test_fetch_network_error_is_unknown(self) -> None:
|
||||||
|
self.commit({"README.md": "New content.\n"})
|
||||||
|
real_git = CHECKER.git
|
||||||
|
|
||||||
|
def failing_fetch(*args, **kwargs):
|
||||||
|
if args[0] == "fetch":
|
||||||
|
return subprocess.CompletedProcess(args, 128, "", "Connection reset by peer")
|
||||||
|
return real_git(*args, **kwargs)
|
||||||
|
|
||||||
|
with patch.object(CHECKER, "git", side_effect=failing_fetch):
|
||||||
|
result = self.statuses(self.entry(ref=self.first, path="skills/alpha"))
|
||||||
|
self.assertIn("unreachable", result)
|
||||||
|
self.assertNotIn("bad-ref", result)
|
||||||
|
|
||||||
|
def test_internal_child_is_not_offered(self) -> None:
|
||||||
|
head = self.commit({"skills/mono/SKILL.md": "---\nname: dws\nmetadata:\n internal: true\n---\n"})
|
||||||
|
result = self.statuses(self.entry(ref=head, children=[{"id": "alpha", "path": "skills/alpha"}]))
|
||||||
|
self.assertEqual(result, {"ok": ""})
|
||||||
|
|
||||||
|
def test_summary_keeps_unpinned_and_unknown_entries_visible(self) -> None:
|
||||||
|
def results(status):
|
||||||
|
return [{"id": "a", "issues": [{"status": status, "detail": ""}]}]
|
||||||
|
|
||||||
|
self.assertEqual(CHECKER.summarize(results("unpinned")),
|
||||||
|
{"checked": 1, "broken": False, "actionable": True, "unknown": False})
|
||||||
|
self.assertEqual(CHECKER.summarize(results("upstream-path-change"))["actionable"], True)
|
||||||
|
self.assertEqual(CHECKER.summarize(results("unreachable")),
|
||||||
|
{"checked": 1, "broken": False, "actionable": False, "unknown": True})
|
||||||
|
self.assertEqual(CHECKER.summarize(results("ok")),
|
||||||
|
{"checked": 1, "broken": False, "actionable": False, "unknown": False})
|
||||||
|
|
||||||
def test_collection_reports_missing_and_new_children(self) -> None:
|
def test_collection_reports_missing_and_new_children(self) -> None:
|
||||||
head = self.commit({"skills/beta/SKILL.md": "---\nname: beta\ndescription: B.\n---\n"})
|
head = self.commit({"skills/beta/SKILL.md": "---\nname: beta\ndescription: B.\n---\n"})
|
||||||
children = [{"id": "alpha", "path": "skills/alpha"}, {"id": "gamma", "path": "skills/gamma"}]
|
children = [{"id": "alpha", "path": "skills/alpha"}, {"id": "gamma", "path": "skills/gamma"}]
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import importlib.util
|
import importlib.util
|
||||||
import json
|
import json
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
@@ -76,9 +77,65 @@ class CollectionGeneratorCheckTests(unittest.TestCase):
|
|||||||
[{"id": "child-one", "path": "skills/child-one"}],
|
[{"id": "child-one", "path": "skills/child-one"}],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_discovery_excludes_internal_and_reference_documents(self) -> None:
|
||||||
|
repo = Path(self.tempdir.name) / "repo"
|
||||||
|
files = {
|
||||||
|
"skills/public/SKILL.md": "---\nname: public\nmetadata:\n internal: false\n---\n",
|
||||||
|
"skills/mono/SKILL.md": "---\nname: dws\nmetadata:\n internal: true\n---\n",
|
||||||
|
"skills/public/references/skill.md": "Reference documentation.\n",
|
||||||
|
"skills/invalid/SKILL.md": "Not a skill frontmatter.\n",
|
||||||
|
}
|
||||||
|
for path, text in files.items():
|
||||||
|
target = repo / path
|
||||||
|
target.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
target.write_text(text, encoding="utf-8")
|
||||||
|
expected = [{"id": "public", "path": "skills/public"}]
|
||||||
|
self.assertEqual(GENERATOR.discover_children(repo), expected)
|
||||||
|
|
||||||
|
for args in (("init", "--quiet"), ("add", "."),
|
||||||
|
("-c", "user.name=t", "-c", "user.email=t@example.com",
|
||||||
|
"commit", "--quiet", "-m", "fixture")):
|
||||||
|
subprocess.run(["git", *args], cwd=repo, check=True, capture_output=True)
|
||||||
|
self.assertEqual(GENERATOR.discover_children(repo), expected)
|
||||||
|
|
||||||
|
def test_discovery_excludes_symlink_skills(self) -> None:
|
||||||
|
repo = Path(self.tempdir.name) / "repo"
|
||||||
|
real = repo / "skills/public/SKILL.md"
|
||||||
|
real.parent.mkdir(parents=True)
|
||||||
|
real.write_text("---\nname: public\n---\n", encoding="utf-8")
|
||||||
|
linked = repo / "skills/link/SKILL.md"
|
||||||
|
linked.parent.mkdir()
|
||||||
|
linked.symlink_to(real)
|
||||||
|
self.assertEqual(GENERATOR.discover_children(repo), [{"id": "public", "path": "skills/public"}])
|
||||||
|
|
||||||
|
def test_child_order_preserves_directory_sorting(self) -> None:
|
||||||
|
repo = Path(self.tempdir.name) / "repo"
|
||||||
|
for child in ("alpha-extra", "alpha"):
|
||||||
|
path = repo / "skills" / child / "SKILL.md"
|
||||||
|
path.parent.mkdir(parents=True)
|
||||||
|
path.write_text(f"---\nname: {child}\n---\n", encoding="utf-8")
|
||||||
|
self.assertEqual([c["id"] for c in GENERATOR.discover_children(repo)], ["alpha", "alpha-extra"])
|
||||||
|
|
||||||
def test_check_accepts_current_children_without_writing(self) -> None:
|
def test_check_accepts_current_children_without_writing(self) -> None:
|
||||||
self.assertTrue(self.run_check(self.children))
|
self.assertTrue(self.run_check(self.children))
|
||||||
|
|
||||||
|
def test_reviewed_translation_is_reproducible(self) -> None:
|
||||||
|
overrides = {"child-one": {"i18n": {"zh-CN": {"shortDesc": "已审阅的中文说明。"},
|
||||||
|
"en-US": {"shortDesc": "Reviewed summary."}}}}
|
||||||
|
(self.entry_path.parent / "collection-child-overrides.json").write_text(json.dumps(overrides))
|
||||||
|
expected = [{**self.children[0], **overrides["child-one"]}]
|
||||||
|
self.write_entry(expected)
|
||||||
|
self.assertTrue(self.run_check(self.children))
|
||||||
|
|
||||||
|
def test_overrides_cannot_hide_missing_child_or_change_source_facts(self) -> None:
|
||||||
|
path = self.entry_path.parent / "collection-child-overrides.json"
|
||||||
|
for overrides in ({"missing": {"i18n": {}}}, {"child-one": {"path": "elsewhere"}},
|
||||||
|
{"child-one": {"version": "9.0.0"}},
|
||||||
|
{"child-one": {"i18n": {"en-US": {"shortDesc": ""}}}}):
|
||||||
|
with self.subTest(overrides=overrides):
|
||||||
|
path.write_text(json.dumps(overrides))
|
||||||
|
self.assertFalse(self.run_check(self.children))
|
||||||
|
|
||||||
def test_check_rejects_stale_children_without_writing(self) -> None:
|
def test_check_rejects_stale_children_without_writing(self) -> None:
|
||||||
self.assertFalse(self.run_check([{"id": "child-two", "path": "skills/child-two"}]))
|
self.assertFalse(self.run_check([{"id": "child-two", "path": "skills/child-two"}]))
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
@@ -53,7 +54,11 @@ MAX_SHORT_DESC = 160
|
|||||||
|
|
||||||
|
|
||||||
def run(cmd: list[str], cwd: Path | None = None) -> subprocess.CompletedProcess:
|
def run(cmd: list[str], cwd: Path | None = None) -> subprocess.CompletedProcess:
|
||||||
return subprocess.run(cmd, cwd=cwd, capture_output=True, text=True)
|
try:
|
||||||
|
return subprocess.run(cmd, cwd=cwd, capture_output=True, text=True, timeout=300,
|
||||||
|
env={**os.environ, "GIT_TERMINAL_PROMPT": "0", "GCM_INTERACTIVE": "never"})
|
||||||
|
except subprocess.TimeoutExpired:
|
||||||
|
return subprocess.CompletedProcess(cmd, 124, "", "timed out")
|
||||||
|
|
||||||
|
|
||||||
def clone_pinned(repo_url: str, branch: str, ref: str | None, dest: Path) -> None:
|
def clone_pinned(repo_url: str, branch: str, ref: str | None, dest: Path) -> None:
|
||||||
@@ -86,7 +91,11 @@ def parse_frontmatter(path: Path) -> dict:
|
|||||||
text = path.read_text(encoding="utf-8", errors="replace")
|
text = path.read_text(encoding="utf-8", errors="replace")
|
||||||
except OSError:
|
except OSError:
|
||||||
return {}
|
return {}
|
||||||
match = re.match(r"^---\n(.*?)\n---", text, re.S)
|
return parse_frontmatter_text(text)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_frontmatter_text(text: str) -> dict:
|
||||||
|
match = re.match(r"^---\r?\n(.*?)\r?\n---", text, re.S)
|
||||||
if not match:
|
if not match:
|
||||||
return {}
|
return {}
|
||||||
try:
|
try:
|
||||||
@@ -96,6 +105,42 @@ def parse_frontmatter(path: Path) -> dict:
|
|||||||
return data if isinstance(data, dict) else {}
|
return data if isinstance(data, dict) else {}
|
||||||
|
|
||||||
|
|
||||||
|
def skill_paths(repo_dir: Path, revision: str = "HEAD") -> list[str]:
|
||||||
|
"""Use Git's exact filenames, independent of filesystem case folding."""
|
||||||
|
if (repo_dir / ".git").exists():
|
||||||
|
result = run(["git", "ls-tree", "-rz", "--full-tree", revision], cwd=repo_dir)
|
||||||
|
if result.returncode:
|
||||||
|
raise RuntimeError(f"cannot list skill files: {result.stderr.strip()[:300]}")
|
||||||
|
paths = []
|
||||||
|
for record in result.stdout.split("\0"):
|
||||||
|
if not record:
|
||||||
|
continue
|
||||||
|
info, path = record.split("\t", 1)
|
||||||
|
mode, kind, _ = info.split()
|
||||||
|
if kind == "blob" and mode != "120000" and path.split("/")[-1] == "SKILL.md":
|
||||||
|
paths.append(path)
|
||||||
|
return sorted(paths, key=lambda path: tuple(path.split("/")))
|
||||||
|
|
||||||
|
# Support local authoring fixtures without a Git repository. os.walk yields
|
||||||
|
# actual directory entries; glob("SKILL.md") can match lowercase skill.md.
|
||||||
|
return sorted(
|
||||||
|
((Path(directory) / name).relative_to(repo_dir).as_posix()
|
||||||
|
for directory, _, names in os.walk(repo_dir)
|
||||||
|
for name in names
|
||||||
|
if name == "SKILL.md" and not (Path(directory) / name).is_symlink()),
|
||||||
|
key=lambda path: tuple(path.split("/")),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def skill_frontmatter(repo_dir: Path, path: str, revision: str = "HEAD") -> dict:
|
||||||
|
if (repo_dir / ".git").exists():
|
||||||
|
result = run(["git", "show", f"{revision}:{path}"], cwd=repo_dir)
|
||||||
|
if result.returncode:
|
||||||
|
raise RuntimeError(f"cannot read {path}: {result.stderr.strip()[:300]}")
|
||||||
|
return parse_frontmatter_text(result.stdout)
|
||||||
|
return parse_frontmatter(repo_dir / path)
|
||||||
|
|
||||||
|
|
||||||
def first_sentence(text: str) -> str:
|
def first_sentence(text: str) -> str:
|
||||||
flat = " ".join(str(text).split())
|
flat = " ".join(str(text).split())
|
||||||
match = re.search(r"^(.{1,%d}?[。.!?!?])\s" % MAX_SHORT_DESC, flat + " ")
|
match = re.search(r"^(.{1,%d}?[。.!?!?])\s" % MAX_SHORT_DESC, flat + " ")
|
||||||
@@ -117,7 +162,7 @@ def normalize_version(raw) -> str | None:
|
|||||||
return f"{int(major)}.{int(minor or 0)}.{int(patch or 0)}"
|
return f"{int(major)}.{int(minor or 0)}.{int(patch or 0)}"
|
||||||
|
|
||||||
|
|
||||||
def discover_children(repo_dir: Path) -> list[dict]:
|
def discover_children(repo_dir: Path, revision: str = "HEAD") -> list[dict]:
|
||||||
children: list[dict] = []
|
children: list[dict] = []
|
||||||
seen: dict[str, str] = {}
|
seen: dict[str, str] = {}
|
||||||
|
|
||||||
@@ -125,26 +170,33 @@ def discover_children(repo_dir: Path) -> list[dict]:
|
|||||||
# the published set. Scanning the whole tree instead picks up decoys such as
|
# the published set. Scanning the whole tree instead picks up decoys such as
|
||||||
# larksuite/cli's internal/qualitygate/skillscan/testdata/skills/lark-demo,
|
# larksuite/cli's internal/qualitygate/skillscan/testdata/skills/lark-demo,
|
||||||
# which is a linter fixture, not a shippable skill.
|
# which is a linter fixture, not a shippable skill.
|
||||||
scan_root = repo_dir / "skills" if (repo_dir / "skills").is_dir() else repo_dir
|
paths = skill_paths(repo_dir, revision)
|
||||||
|
has_skills = any(path.startswith("skills/") for path in paths)
|
||||||
|
|
||||||
for skill_md in sorted(scan_root.rglob("SKILL.md")):
|
for path in paths:
|
||||||
rel = skill_md.relative_to(repo_dir)
|
if has_skills and not path.startswith("skills/"):
|
||||||
|
continue
|
||||||
|
rel = Path(path)
|
||||||
segments = [s.lower() for s in rel.parts[:-1]]
|
segments = [s.lower() for s in rel.parts[:-1]]
|
||||||
if any(seg in EXCLUDED_SEGMENTS for seg in segments):
|
if any(seg in EXCLUDED_SEGMENTS for seg in segments):
|
||||||
continue
|
continue
|
||||||
if not segments:
|
if not segments:
|
||||||
continue # repo root itself is a single skill, not a collection
|
continue # repo root itself is a single skill, not a collection
|
||||||
|
|
||||||
|
fm = skill_frontmatter(repo_dir, path, revision)
|
||||||
|
metadata = fm.get("metadata")
|
||||||
|
if not fm.get("name") or (isinstance(metadata, dict) and metadata.get("internal") is True):
|
||||||
|
continue
|
||||||
|
|
||||||
child_id = rel.parts[-2]
|
child_id = rel.parts[-2]
|
||||||
if not re.match(r"^[a-z0-9-]+$", child_id):
|
if not re.match(r"^[a-z0-9-]+$", child_id):
|
||||||
print(f" ! skipped {rel.parent}: directory name is not a valid skill id")
|
print(f" ! skipped {rel.parent}: directory name is not a valid skill id", file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
if child_id in seen:
|
if child_id in seen:
|
||||||
print(f" ! skipped {rel.parent}: id '{child_id}' already taken by {seen[child_id]}")
|
print(f" ! skipped {rel.parent}: id '{child_id}' already taken by {seen[child_id]}", file=sys.stderr)
|
||||||
continue
|
continue
|
||||||
seen[child_id] = str(rel.parent)
|
seen[child_id] = str(rel.parent)
|
||||||
|
|
||||||
fm = parse_frontmatter(skill_md)
|
|
||||||
# Git catalog paths use POSIX separators on every contributor platform.
|
# Git catalog paths use POSIX separators on every contributor platform.
|
||||||
child: dict = {"id": child_id, "path": rel.parent.as_posix()}
|
child: dict = {"id": child_id, "path": rel.parent.as_posix()}
|
||||||
name = fm.get("display_name") or fm.get("name")
|
name = fm.get("display_name") or fm.get("name")
|
||||||
@@ -164,6 +216,32 @@ def discover_children(repo_dir: Path) -> list[dict]:
|
|||||||
return children
|
return children
|
||||||
|
|
||||||
|
|
||||||
|
def apply_presentation_overrides(entry_id: str, children: list[dict]) -> list[dict]:
|
||||||
|
"""Keep reviewed translations reproducible without overriding source facts."""
|
||||||
|
path = SKILLS_DIR / entry_id / "collection-child-overrides.json"
|
||||||
|
if not path.exists():
|
||||||
|
return children
|
||||||
|
overrides = json.loads(path.read_text(encoding="utf-8"))
|
||||||
|
if not isinstance(overrides, dict):
|
||||||
|
raise RuntimeError("child presentation overrides must be an object")
|
||||||
|
by_id = {child["id"]: child for child in children}
|
||||||
|
for child_id, override in overrides.items():
|
||||||
|
if child_id not in by_id:
|
||||||
|
raise RuntimeError(f"presentation override names missing upstream child '{child_id}'")
|
||||||
|
if not isinstance(override, dict) or set(override) != {"i18n"}:
|
||||||
|
raise RuntimeError(f"presentation override for '{child_id}' may only contain i18n")
|
||||||
|
locales = override["i18n"]
|
||||||
|
if not isinstance(locales, dict) or not locales:
|
||||||
|
raise RuntimeError(f"presentation override for '{child_id}' must declare locales")
|
||||||
|
for locale, payload in locales.items():
|
||||||
|
if locale not in {"en-US", "zh-CN"} or not isinstance(payload, dict) or set(payload) != {"shortDesc"}:
|
||||||
|
raise RuntimeError(f"invalid presentation override locale for '{child_id}'")
|
||||||
|
if not isinstance(payload["shortDesc"], str) or not payload["shortDesc"].strip():
|
||||||
|
raise RuntimeError(f"presentation override for '{child_id}' needs a non-empty summary")
|
||||||
|
by_id[child_id]["i18n"] = locales
|
||||||
|
return children
|
||||||
|
|
||||||
|
|
||||||
def process(entry_id: str, *, check: bool = False) -> bool:
|
def process(entry_id: str, *, check: bool = False) -> bool:
|
||||||
entry_path = SKILLS_DIR / entry_id / "entry.json"
|
entry_path = SKILLS_DIR / entry_id / "entry.json"
|
||||||
if not entry_path.exists():
|
if not entry_path.exists():
|
||||||
@@ -193,7 +271,11 @@ def process(entry_id: str, *, check: bool = False) -> bool:
|
|||||||
except RuntimeError as err:
|
except RuntimeError as err:
|
||||||
print(f"{entry_id}: {err}")
|
print(f"{entry_id}: {err}")
|
||||||
return False
|
return False
|
||||||
children = discover_children(repo_dir)
|
try:
|
||||||
|
children = apply_presentation_overrides(entry_id, discover_children(repo_dir))
|
||||||
|
except (RuntimeError, ValueError) as err:
|
||||||
|
print(f"{entry_id}: {err}")
|
||||||
|
return False
|
||||||
|
|
||||||
if not children:
|
if not children:
|
||||||
print(f"{entry_id}: no sub-skills found — not a collection?")
|
print(f"{entry_id}: no sub-skills found — not a collection?")
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Agent Reach",
|
"name": "Agent Reach",
|
||||||
"summary": "Web research and social search across Xiaohongshu, X/Twitter, Bilibili, Reddit, YouTube and more"
|
"summary": "Web research and social search across Xiaohongshu, X/Twitter, Bilibili, Reddit, YouTube and more. Install Agent Reach and required third-party CLIs separately, and authorize the relevant platform accounts."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Agent Reach",
|
"name": "Agent Reach",
|
||||||
"summary": "全网调研与社媒搜索:覆盖小红书、X/Twitter、B 站、Reddit、YouTube 等平台的内容检索与信息聚合"
|
"summary": "全网调研与社媒搜索:覆盖小红书、X/Twitter、B 站、Reddit、YouTube 等平台的内容检索与信息聚合。需自行安装 Agent Reach 及所需第三方 CLI,并授权对应平台账号。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "research",
|
"category": "research",
|
||||||
@@ -35,19 +35,21 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-19T06:37:19Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-09T13:37:59Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -55,14 +57,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/Panniantong/agent-reach.git",
|
"url": "https://github.com/Panniantong/agent-reach.git",
|
||||||
"path": "agent_reach/skill",
|
"path": "agent_reach/skill",
|
||||||
"ref": "e825f6740d24c6c315c3b0dc41907e6c87ff39a5"
|
"ref": "a19a171fa980a0785849596492e0af4db800c82f"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -74,7 +78,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "User-installed Agent Reach and the platform CLIs required by the chosen channel. Browser-based channels require a user-controlled browser session; no fixed conda environment is assumed."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "The operator authorizes platform accounts and any cookie or browser-session access. Platform restrictions and optional service costs apply separately; stop when authorization or a channel is unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Agent Reach",
|
"name": "Agent Reach",
|
||||||
"shortDesc": "全网调研与社媒搜索:覆盖小红书、X/Twitter、B 站、Reddit、YouTube 等平台的内容检索与信息聚合"
|
"shortDesc": "全网调研与社媒搜索:覆盖小红书、X/Twitter、B 站、Reddit、YouTube 等平台的内容检索与信息聚合。需自行安装 Agent Reach 及所需第三方 CLI,并授权对应平台账号。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Agent Reach",
|
"name": "Agent Reach",
|
||||||
"shortDesc": "Web research and social search across Xiaohongshu, X/Twitter, Bilibili, Reddit, YouTube and more"
|
"shortDesc": "Web research and social search across Xiaohongshu, X/Twitter, Bilibili, Reddit, YouTube and more. Install Agent Reach and required third-party CLIs separately, and authorize the relevant platform accounts."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -28,6 +28,6 @@
|
|||||||
"repoUrl": "https://github.com/Panniantong/agent-reach.git",
|
"repoUrl": "https://github.com/Panniantong/agent-reach.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"path": "agent_reach/skill",
|
"path": "agent_reach/skill",
|
||||||
"ref": "e825f6740d24c6c315c3b0dc41907e6c87ff39a5"
|
"ref": "a19a171fa980a0785849596492e0af4db800c82f"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "AI News Radar",
|
"name": "AI News Radar",
|
||||||
"summary": "24/7 AI news radar that curates multiple sources into storylines and delivers daily headlines with three flavors of commentary"
|
"summary": "24/7 AI news radar that curates multiple sources into storylines and delivers daily headlines with three flavors of commentary. Requires a separately configured Python environment and sources; mail access requires separate authorization."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "AI 资讯雷达",
|
"name": "AI 资讯雷达",
|
||||||
"summary": "24 小时 AI 资讯雷达:从多信源筛选要闻、合并成故事线,并用三种口味锐评每日头条"
|
"summary": "24 小时 AI 资讯雷达:从多信源筛选要闻、合并成故事线,并用三种口味锐评每日头条。需自行配置 Python 运行环境与信源;邮件接入须另行授权。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
@@ -30,19 +30,21 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -50,14 +52,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/LearnPrompt/ai-news-radar.git",
|
"url": "https://github.com/LearnPrompt/ai-news-radar.git",
|
||||||
"path": "skills/ai-news-radar",
|
"path": "skills/ai-news-radar",
|
||||||
"ref": "f23ce289695aaf8808f4c19b0b815b51b20730a9"
|
"ref": "689395109cc962a27c369bdd6fa50d1e090eb319"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -69,7 +73,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "A user-configured Python environment and the dependencies declared by AI News Radar."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "connection",
|
||||||
|
"value": "Access to the chosen public feeds. Optional mail adapters require separate credentials and explicit authorization; private message bodies must not be published or persisted as public feed content."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -11,11 +11,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "AI 资讯雷达",
|
"name": "AI 资讯雷达",
|
||||||
"shortDesc": "24 小时 AI 资讯雷达:从多信源筛选要闻、合并成故事线,并用三种口味锐评每日头条"
|
"shortDesc": "24 小时 AI 资讯雷达:从多信源筛选要闻、合并成故事线,并用三种口味锐评每日头条。需自行配置 Python 运行环境与信源;邮件接入须另行授权。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "AI News Radar",
|
"name": "AI News Radar",
|
||||||
"shortDesc": "24/7 AI news radar that curates multiple sources into storylines and delivers daily headlines with three flavors of commentary"
|
"shortDesc": "24/7 AI news radar that curates multiple sources into storylines and delivers daily headlines with three flavors of commentary. Requires a separately configured Python environment and sources; mail access requires separate authorization."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -32,6 +32,6 @@
|
|||||||
"repoUrl": "https://github.com/LearnPrompt/ai-news-radar.git",
|
"repoUrl": "https://github.com/LearnPrompt/ai-news-radar.git",
|
||||||
"repoBranch": "master",
|
"repoBranch": "master",
|
||||||
"path": "skills/ai-news-radar",
|
"path": "skills/ai-news-radar",
|
||||||
"ref": "f23ce289695aaf8808f4c19b0b815b51b20730a9"
|
"ref": "689395109cc962a27c369bdd6fa50d1e090eb319"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Archify",
|
"name": "Archify",
|
||||||
"summary": "Compile a codebase or system description into interactive, verifiable architecture/workflow/sequence/data-flow/lifecycle diagrams — self-contained HTML/SVG with motion and crisp export, for Claude Code, Codex and Cursor"
|
"summary": "Compile a codebase or system description into interactive, verifiable architecture/workflow/sequence/data-flow/lifecycle diagrams — self-contained HTML/SVG with motion and crisp export, for Claude Code, Codex and Cursor. Requires Node.js and the upstream browser verification/export prerequisites."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Archify",
|
"name": "Archify",
|
||||||
"summary": "把代码库或系统描述编译成可交互的系统架构图(架构/流程/时序/数据流/生命周期),产出自带动效、可校验、可导出的单文件 HTML/SVG,适配 Claude Code、Codex、Cursor"
|
"summary": "把代码库或系统描述编译成可交互的系统架构图(架构/流程/时序/数据流/生命周期),产出自带动效、可校验、可导出的单文件 HTML/SVG,适配 Claude Code、Codex、Cursor。需可用的 Node.js 环境;浏览器验证和导出须满足上游运行要求。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "development",
|
"category": "development",
|
||||||
@@ -26,24 +26,28 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"version": "3.0",
|
||||||
|
"versionScheme": "opaque"
|
||||||
},
|
},
|
||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-12T02:26:16Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-12T02:26:16Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -51,7 +55,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/tt-a1i/archify.git",
|
"url": "https://github.com/tt-a1i/archify.git",
|
||||||
"path": "archify",
|
"path": "archify",
|
||||||
"ref": "c1443b31b496eebf4a68bf83151816c955ddb796"
|
"ref": "7158026e852f3aa6578c741e673b46d7878c92c1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -72,7 +76,13 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "Node.js and the browser dependencies required by the included Archify renderer and verifier. The operator supplies and maintains the runtime; stop before rendering when prerequisites are unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -12,11 +12,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Archify",
|
"name": "Archify",
|
||||||
"shortDesc": "把代码库或系统描述编译成可交互的系统架构图(架构/流程/时序/数据流/生命周期),产出自带动效、可校验、可导出的单文件 HTML/SVG,适配 Claude Code、Codex、Cursor"
|
"shortDesc": "把代码库或系统描述编译成可交互的系统架构图(架构/流程/时序/数据流/生命周期),产出自带动效、可校验、可导出的单文件 HTML/SVG,适配 Claude Code、Codex、Cursor。需可用的 Node.js 环境;浏览器验证和导出须满足上游运行要求。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Archify",
|
"name": "Archify",
|
||||||
"shortDesc": "Compile a codebase or system description into interactive, verifiable architecture/workflow/sequence/data-flow/lifecycle diagrams — self-contained HTML/SVG with motion and crisp export, for Claude Code, Codex and Cursor"
|
"shortDesc": "Compile a codebase or system description into interactive, verifiable architecture/workflow/sequence/data-flow/lifecycle diagrams — self-contained HTML/SVG with motion and crisp export, for Claude Code, Codex and Cursor. Requires Node.js and the upstream browser verification/export prerequisites."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -32,7 +32,8 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/tt-a1i/archify.git",
|
"repoUrl": "https://github.com/tt-a1i/archify.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "c1443b31b496eebf4a68bf83151816c955ddb796",
|
"ref": "7158026e852f3aa6578c741e673b46d7878c92c1",
|
||||||
"path": "archify"
|
"path": "archify"
|
||||||
}
|
},
|
||||||
|
"latestVersion": "3.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Baoyu Skills",
|
"name": "Baoyu Skills",
|
||||||
"summary": "Baoyu's 20+ content-creation skills — cover images, illustrations, WeChat publishing, translation and slide decks, for Claude Code and Codex"
|
"summary": "Baoyu's 20+ content-creation skills — cover images, illustrations, WeChat publishing, translation and slide decks, for Claude Code and Codex. External generation services require separately configured accounts, API keys and billing."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "宝玉 Skills",
|
"name": "宝玉 Skills",
|
||||||
"summary": "宝玉分享的 AI Agent 技能集,20+ 技能覆盖封面图、插图、公众号发布、翻译、幻灯片等,适配 Claude Code、Codex 等"
|
"summary": "宝玉分享的 AI Agent 技能集,20+ 技能覆盖封面图、插图、公众号发布、翻译、幻灯片等,适配 Claude Code、Codex 等。外部生成服务的账号、API 密钥和费用须自行配置。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "creative",
|
"category": "creative",
|
||||||
@@ -32,33 +32,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-07T15:54:03Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/JimLiu/baoyu-skills.git",
|
"url": "https://github.com/JimLiu/baoyu-skills.git",
|
||||||
"ref": "6b7a2e417500561a5ecdd0b168332f4142584617"
|
"ref": "1567581c26ec29f4216c6e6835415bf30343b0e3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -70,7 +74,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "The selected child may require Bun/Node.js or another runtime named in its execution instructions; the operator installs these separately."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Image, video, speech and publication integrations require the operator's own provider accounts, API credentials and any applicable paid entitlements. DesireCore does not provide or pay for these services; unavailable providers must be reported before calling them."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -333,18 +347,18 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "baoyu-image-gen",
|
"name": "baoyu-image-gen",
|
||||||
"summary": "AI image generation with OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
"summary": "AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "baoyu-image-gen",
|
"name": "baoyu-image-gen",
|
||||||
"summary": "AI image generation with OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
"summary": "AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"version": "2.1.0",
|
"version": "2.2.0",
|
||||||
"versionScheme": "semver"
|
"versionScheme": "semver"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -13,11 +13,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "宝玉 Skills",
|
"name": "宝玉 Skills",
|
||||||
"shortDesc": "宝玉分享的 AI Agent 技能集,20+ 技能覆盖封面图、插图、公众号发布、翻译、幻灯片等,适配 Claude Code、Codex 等"
|
"shortDesc": "宝玉分享的 AI Agent 技能集,20+ 技能覆盖封面图、插图、公众号发布、翻译、幻灯片等,适配 Claude Code、Codex 等。外部生成服务的账号、API 密钥和费用须自行配置。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Baoyu Skills",
|
"name": "Baoyu Skills",
|
||||||
"shortDesc": "Baoyu's 20+ content-creation skills — cover images, illustrations, WeChat publishing, translation and slide decks, for Claude Code and Codex"
|
"shortDesc": "Baoyu's 20+ content-creation skills — cover images, illustrations, WeChat publishing, translation and slide decks, for Claude Code and Codex. External generation services require separately configured accounts, API keys and billing."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/JimLiu/baoyu-skills.git",
|
"repoUrl": "https://github.com/JimLiu/baoyu-skills.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "6b7a2e417500561a5ecdd0b168332f4142584617"
|
"ref": "1567581c26ec29f4216c6e6835415bf30343b0e3"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
@@ -156,13 +156,13 @@
|
|||||||
{
|
{
|
||||||
"id": "baoyu-image-gen",
|
"id": "baoyu-image-gen",
|
||||||
"path": "skills/baoyu-image-gen",
|
"path": "skills/baoyu-image-gen",
|
||||||
"version": "2.1.0",
|
"version": "2.2.0",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "AI image generation with OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
"shortDesc": "AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "AI image generation with OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
"shortDesc": "AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -28,25 +28,28 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-25T07:48:53Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-09-23T10:09:22Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli.git"
|
"url": "https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli.git",
|
||||||
|
"ref": "3f0fc94111b1f9cd34e47468980b1f1a723ca69a"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -54,7 +57,8 @@
|
|||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "Apache-2.0"
|
"value": "Apache-2.0",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "verify-package-terms",
|
"redistribution": "verify-package-terms",
|
||||||
"branding": {
|
"branding": {
|
||||||
@@ -101,8 +105,33 @@
|
|||||||
"riskLevel": "high",
|
"riskLevel": "high",
|
||||||
"collection": {
|
"collection": {
|
||||||
"role": "parent",
|
"role": "parent",
|
||||||
"childCount": 15,
|
"childCount": 16,
|
||||||
"children": [
|
"children": [
|
||||||
|
{
|
||||||
|
"identity": {
|
||||||
|
"kind": "skill",
|
||||||
|
"id": "dingtalk-aicard",
|
||||||
|
"parentId": "dingtalk-cli"
|
||||||
|
},
|
||||||
|
"path": "skills/multi/dingtalk-aicard",
|
||||||
|
"presentation": {
|
||||||
|
"defaultLocale": "en-US",
|
||||||
|
"i18n": {
|
||||||
|
"en-US": {
|
||||||
|
"name": "dingtalk-aicard",
|
||||||
|
"summary": "Create, edit and validate DingTalk AI Card (A2UI) JSON through DWS; send a card only when the user requests a preview."
|
||||||
|
},
|
||||||
|
"zh-CN": {
|
||||||
|
"name": "dingtalk-aicard",
|
||||||
|
"summary": "通过 DWS 创建、编辑和校验钉钉 AI 卡片(A2UI)JSON;用户明确请求预览时才发送卡片。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"state": "unknown"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
|
|||||||
162
skills/dingtalk-cli/collection-child-overrides.json
Normal file
162
skills/dingtalk-cli/collection-child-overrides.json
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
{
|
||||||
|
"dingtalk-aisearch": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "AI 搜问:按姓名、工号、部门、职责或上下级线索找人,并跨文档、消息、邮件与听记检索。命令前缀 dws aisearch。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "AI Search: find people by name, staff ID, department, duty or reporting line, and search across documents, messages, mail and AI minutes. Command prefix: dws aisearch."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-aitable": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉 AI 表格(多维表):建表、字段与记录增删改查、筛选排序、批量导入导出、仪表盘图表与数据源同步。命令前缀 dws aitable。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk AI Table (multi-dimensional base): create tables, manage fields and records, filter and sort, bulk import and export, dashboards and data-source sync. Command prefix: dws aitable."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-calendar": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉日历与会议室:查询日程、创建或改期会议、预订会议室、查闲忙与共同空闲、增删参会人。命令前缀 dws calendar。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk calendar and meeting rooms: list events, create or reschedule meetings, book rooms, check free/busy and shared availability, and manage attendees. Command prefix: dws calendar."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-chat": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉群聊与消息:收发、编辑与撤回消息,建群与群成员管理,话题回复,搜索聊天记录,机器人与 Webhook 通知。命令前缀 dws chat。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk chats and messages: send, edit and recall messages, create and manage groups, threaded replies, chat history search, bots and webhook notices. Command prefix: dws chat."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-contact": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉通讯录精确查询:按 userId 查用户详情、部门、职位与邮箱,按完整手机号反查用户,查询本人、部门成员与角色。命令前缀 dws contact。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Precise DingTalk directory lookups: user detail, department, title and email by userId, reverse lookup by full phone number, own profile, department members and roles. Command prefix: dws contact."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-doc": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉在线文档:查找、创建、读取与编辑正文和块,评论、附件、版本、模板、协作者权限与分享,以及 docx/markdown/pdf 导出。命令前缀 dws doc。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk online documents: find, create, read and edit content and blocks; comments, attachments, versions, templates, collaborator permissions, sharing and docx/markdown/pdf export. Command prefix: dws doc."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-drive": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉文件管理(钉盘与文档空间):查找、上传下载、复制移动、重命名删除、回收站、权限与评论,以及本地目录比较与同步。命令前缀 dws drive。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk file storage (DingDrive and document spaces): find, upload, download, copy, move, rename, delete, recycle bin, permissions, comments, and local folder compare and sync. Command prefix: dws drive."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-event": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉事件长连接监听:个人 IM 消息、已读与撤回、表情回应、群成员与群状态变化,以及 OA 审批任务与实例事件。命令前缀 dws event。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Long-lived DingTalk event streaming: personal IM messages, read receipts, recalls, reactions, group membership and state changes, plus OA approval task and instance events. Command prefix: dws event."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-mail": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉邮箱:撰写发送、查阅、搜索、回复与转发邮件,处理未读邮件与附件;收件人先由 dingtalk-contact 解析确认。命令前缀 dws mail。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk Mail: compose, send, read, search, reply to and forward mail, and handle unread items and attachments; resolve recipients with dingtalk-contact first. Command prefix: dws mail."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-minutes": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉 AI 听记:查询或修改摘要、逐字稿、关键词、行动项与录音,上传音频、生成思维导图、查看发言人洞察与分享权限。命令前缀 dws minutes。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk AI Minutes: read or edit summaries, transcripts, keywords, action items and recordings; upload audio, build mind maps, and review speaker insights and sharing permissions. Command prefix: dws minutes."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-misc": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "长尾产品集合:OA 审批、考勤、日志日报、DING 紧急消息、直播、招聘、目标管理、电子表格、白板、原生 Markdown 与 OpenAPI 逃生舱。命令前缀见技能内产品索引表。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Long-tail product bundle: OA approvals, attendance, work reports, urgent DING messages, live streams, recruiting, goal management, sheets, whiteboards, native Markdown and a raw OpenAPI escape hatch. Command prefixes come from the skill's own product index."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-shared": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉 MultiSkill 的轻量共享入口:提供全局执行契约、URL 类型预检与产品边界消歧,适用于泛称 DWS 操作或跨产品编排。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Lightweight shared entry point for the DingTalk MultiSkill set: global execution contract, URL type pre-checks and product-boundary disambiguation for generic or cross-product requests."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-tag": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉数字员工的自然语言创建、查询、修改、发布、删除、能力资源、执行状态、本地 Profile 落盘与 DSH 接入。命令前缀 dws dingtalk-tag。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Create, query, update, publish and delete DingTalk digital employees in natural language, manage their skills and MCP resources, check execution status, save local profiles and connect a local DSH. Command prefix: dws dingtalk-tag."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-todo": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉待办:创建、指派、批量新建与循环待办,标记完成,查询待办、紧急待办与逾期待办。命令前缀 dws todo。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk To-Do: create, assign, batch-create and repeat tasks, mark them complete, and query open, urgent and overdue items. Command prefix: dws todo."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-wiki": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "钉钉知识库与空间管理:创建与查找知识库、管理成员,以及库内节点的创建、列举、搜索、复制、移动、删除与动态查询。命令前缀 dws wiki。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "DingTalk Wiki and space management: create and find knowledge bases, manage space members, and create, list, search, copy, move, delete and track nodes. Command prefix: dws wiki."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dingtalk-aicard": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "通过 DWS 创建、编辑和校验钉钉 AI 卡片(A2UI)JSON;用户明确请求预览时才发送卡片。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Create, edit and validate DingTalk AI Card (A2UI) JSON through DWS; send a card only when the user requests a preview."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,9 +29,22 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli.git",
|
"repoUrl": "https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli.git",
|
||||||
"repoBranch": "main"
|
"repoBranch": "main",
|
||||||
|
"ref": "3f0fc94111b1f9cd34e47468980b1f1a723ca69a"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "dingtalk-aicard",
|
||||||
|
"path": "skills/multi/dingtalk-aicard",
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "通过 DWS 创建、编辑和校验钉钉 AI 卡片(A2UI)JSON;用户明确请求预览时才发送卡片。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Create, edit and validate DingTalk AI Card (A2UI) JSON through DWS; send a card only when the user requests a preview."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "dingtalk-aisearch",
|
"id": "dingtalk-aisearch",
|
||||||
"path": "skills/multi/dingtalk-aisearch",
|
"path": "skills/multi/dingtalk-aisearch",
|
||||||
|
|||||||
@@ -30,19 +30,21 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-18T16:45:05Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-18T16:45:05Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -50,14 +52,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/alibaba-flyai/flyai-skill.git",
|
"url": "https://github.com/alibaba-flyai/flyai-skill.git",
|
||||||
"path": "skills/flyai",
|
"path": "skills/flyai",
|
||||||
"ref": "54277b27b68e53741954c08541faedba1d45cc7b"
|
"ref": "86fe2cc3e25464d0e0bd6a769b27b5f9f3b04128"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "partner",
|
"stewardship": "partner",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/alibaba-flyai/flyai-skill.git",
|
"repoUrl": "https://github.com/alibaba-flyai/flyai-skill.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "54277b27b68e53741954c08541faedba1d45cc7b",
|
"ref": "86fe2cc3e25464d0e0bd6a769b27b5f9f3b04128",
|
||||||
"path": "skills/flyai"
|
"path": "skills/flyai"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Follow Builders",
|
"name": "Follow Builders",
|
||||||
"summary": "Tracks top AI builders across podcasts, X/Twitter and company blogs, delivering curated daily or weekly digests"
|
"summary": "Tracks top AI builders across podcasts, X/Twitter and company blogs, delivering curated daily or weekly digests. Depends on a third-party public feed; Telegram or mail delivery requires separate setup and explicit authorization."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Follow Builders",
|
"name": "Follow Builders",
|
||||||
"summary": "追踪 AI 领域真正在造东西的开发者、研究者与创始人,把播客、X/Twitter 与官方博客的动态汇成每日/每周摘要推送"
|
"summary": "追踪 AI 领域真正在造东西的开发者、研究者与创始人,把播客、X/Twitter 与官方博客的动态汇成每日/每周摘要推送。依赖第三方公共信源;Telegram 或邮件推送须自行配置并明确授权。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
@@ -28,26 +28,28 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/zarazhangrui/follow-builders.git",
|
"url": "https://github.com/zarazhangrui/follow-builders.git",
|
||||||
"ref": "239227ddea46dfb9db6ed23e5864a5fabb9cee83"
|
"ref": "ec5b50e3127ba9cc5e9c54ea7bf409b0654c7f39"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -66,7 +68,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "connection",
|
||||||
|
"value": "Access to the upstream public digest feed. Feed availability and data licensing are governed by its operator."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "Node.js is required by the included digest and delivery scripts. Optional Telegram/email delivery requires the operator's own account credentials and explicit sending/scheduling authorization."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Follow Builders",
|
"name": "Follow Builders",
|
||||||
"shortDesc": "追踪 AI 领域真正在造东西的开发者、研究者与创始人,把播客、X/Twitter 与官方博客的动态汇成每日/每周摘要推送"
|
"shortDesc": "追踪 AI 领域真正在造东西的开发者、研究者与创始人,把播客、X/Twitter 与官方博客的动态汇成每日/每周摘要推送。依赖第三方公共信源;Telegram 或邮件推送须自行配置并明确授权。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Follow Builders",
|
"name": "Follow Builders",
|
||||||
"shortDesc": "Tracks top AI builders across podcasts, X/Twitter and company blogs, delivering curated daily or weekly digests"
|
"shortDesc": "Tracks top AI builders across podcasts, X/Twitter and company blogs, delivering curated daily or weekly digests. Depends on a third-party public feed; Telegram or mail delivery requires separate setup and explicit authorization."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -29,6 +29,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/zarazhangrui/follow-builders.git",
|
"repoUrl": "https://github.com/zarazhangrui/follow-builders.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "239227ddea46dfb9db6ed23e5864a5fabb9cee83"
|
"ref": "ec5b50e3127ba9cc5e9c54ea7bf409b0654c7f39"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,33 +32,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T10:14:38Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T10:14:38Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/op7418/Humanizer-zh.git",
|
"url": "https://github.com/op7418/Humanizer-zh.git",
|
||||||
"ref": "91f3d394db8419c20d67ebe22a96cf8fee0a404b"
|
"ref": "f4518a8eab97b8bfebc66a89d34320a89bef6930"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
|
|||||||
@@ -27,6 +27,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/op7418/Humanizer-zh.git",
|
"repoUrl": "https://github.com/op7418/Humanizer-zh.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "91f3d394db8419c20d67ebe22a96cf8fee0a404b"
|
"ref": "f4518a8eab97b8bfebc66a89d34320a89bef6930"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,38 +27,44 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"version": "3.1.0",
|
||||||
|
"versionScheme": "semver"
|
||||||
},
|
},
|
||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T10:14:38Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T10:14:38Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/blader/humanizer.git",
|
"url": "https://github.com/blader/humanizer.git",
|
||||||
"ref": "523374dee72d67c7b2b5f858ea0094ffda49c3ac"
|
"ref": "225a6f39ac85f76ee48dbad772ea4abe4ed6c9d8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/blader/humanizer.git",
|
"repoUrl": "https://github.com/blader/humanizer.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "523374dee72d67c7b2b5f858ea0094ffda49c3ac"
|
"ref": "225a6f39ac85f76ee48dbad772ea4abe4ed6c9d8"
|
||||||
}
|
},
|
||||||
|
"latestVersion": "3.1.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Ian Xiaohei Illustrations",
|
"name": "Ian Xiaohei Illustrations",
|
||||||
"summary": "Generate Ian \"Xiaohei\" style illustrations for Chinese articles, turning ideas and processes into clean, whimsical 16:9 hand-drawn visuals"
|
"summary": "Generate Ian \"Xiaohei\" style illustrations for Chinese articles, turning ideas and processes into clean, whimsical 16:9 hand-drawn visuals. Image generation requires separately configured image capabilities and service entitlements."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Ian 小黑怪诞正文配图",
|
"name": "Ian 小黑怪诞正文配图",
|
||||||
"summary": "生成 Ian「小黑」风格的中文正文配图,把文章观点、流程与隐喻转成清爽怪诞的 16:9 手绘解释图"
|
"summary": "生成 Ian「小黑」风格的中文正文配图,把文章观点、流程与隐喻转成清爽怪诞的 16:9 手绘解释图。生成图片需要另行配置可用的图像生成能力及相关服务权益。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "media",
|
"category": "media",
|
||||||
@@ -31,19 +31,21 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-19T06:37:19Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-09T13:37:59Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -51,14 +53,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/helloianneo/ian-xiaohei-illustrations.git",
|
"url": "https://github.com/helloianneo/ian-xiaohei-illustrations.git",
|
||||||
"path": "ian-xiaohei-illustrations",
|
"path": "ian-xiaohei-illustrations",
|
||||||
"ref": "91b560849e8f883922cc2fa8a358a668caa94105"
|
"ref": "4102eb807f03bcb6e538a16e8b31b41db8b5b954"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -70,7 +74,13 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "A separately available image-generation capability supported by the host. Any remote provider requires the operator's own account, credentials and billing; the skill instructions do not include that service."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Ian 小黑怪诞正文配图",
|
"name": "Ian 小黑怪诞正文配图",
|
||||||
"shortDesc": "生成 Ian「小黑」风格的中文正文配图,把文章观点、流程与隐喻转成清爽怪诞的 16:9 手绘解释图"
|
"shortDesc": "生成 Ian「小黑」风格的中文正文配图,把文章观点、流程与隐喻转成清爽怪诞的 16:9 手绘解释图。生成图片需要另行配置可用的图像生成能力及相关服务权益。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Ian Xiaohei Illustrations",
|
"name": "Ian Xiaohei Illustrations",
|
||||||
"shortDesc": "Generate Ian \"Xiaohei\" style illustrations for Chinese articles, turning ideas and processes into clean, whimsical 16:9 hand-drawn visuals"
|
"shortDesc": "Generate Ian \"Xiaohei\" style illustrations for Chinese articles, turning ideas and processes into clean, whimsical 16:9 hand-drawn visuals. Image generation requires separately configured image capabilities and service entitlements."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -28,6 +28,6 @@
|
|||||||
"repoUrl": "https://github.com/helloianneo/ian-xiaohei-illustrations.git",
|
"repoUrl": "https://github.com/helloianneo/ian-xiaohei-illustrations.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"path": "ian-xiaohei-illustrations",
|
"path": "ian-xiaohei-illustrations",
|
||||||
"ref": "91b560849e8f883922cc2fa8a358a668caa94105"
|
"ref": "4102eb807f03bcb6e538a16e8b31b41db8b5b954"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Impeccable",
|
"name": "Impeccable",
|
||||||
"summary": "A design language that makes AI better at frontend: UX review, visual hierarchy, accessibility, typography, color, motion and reusable design systems"
|
"summary": "A design language that makes AI better at frontend: UX review, visual hierarchy, accessibility, typography, color, motion and reusable design systems. Uses an upstream standalone binary launcher that may download on first run; platform and execution permissions must be supplied separately."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Impeccable",
|
"name": "Impeccable",
|
||||||
"summary": "让 AI 更懂设计的前端设计语言:覆盖 UX 审查、视觉层级、可访问性、排版、配色、动效与可复用设计系统,把界面打磨到生产级"
|
"summary": "让 AI 更懂设计的前端设计语言:覆盖 UX 审查、视觉层级、可访问性、排版、配色、动效与可复用设计系统,把界面打磨到生产级。新版本使用上游独立二进制启动器,可能在首次运行时下载;需自行满足平台与运行权限。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "design",
|
"category": "design",
|
||||||
@@ -27,25 +27,27 @@
|
|||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"version": "3.9.1",
|
"version": "4.5.0",
|
||||||
"versionScheme": "semver"
|
"versionScheme": "semver"
|
||||||
},
|
},
|
||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-19T11:19:33Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -53,14 +55,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/pbakaus/impeccable.git",
|
"url": "https://github.com/pbakaus/impeccable.git",
|
||||||
"path": "plugin/skills/impeccable",
|
"path": "plugin/skills/impeccable",
|
||||||
"ref": "e4ab5e24bdf5321b72163d2fbcbe6fa985c848ba"
|
"ref": "6e802bd0ed99f53180e2359fddab6da8d97970d9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "Apache-2.0",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -72,7 +76,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "Impeccable 4.5.0 uses its standalone launcher/binary. The operator must permit the upstream binary to run and, if it is absent, authorize its first-run download. Windows uses the upstream .cmd launcher where sh is unavailable. DesireCore does not install or operate the binary."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "connection",
|
||||||
|
"value": "A first-run binary download requires network access to upstream distribution. If the launcher is unavailable, follow the upstream documented direct-context fallback and report that the launcher did not run."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -12,11 +12,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Impeccable",
|
"name": "Impeccable",
|
||||||
"shortDesc": "让 AI 更懂设计的前端设计语言:覆盖 UX 审查、视觉层级、可访问性、排版、配色、动效与可复用设计系统,把界面打磨到生产级"
|
"shortDesc": "让 AI 更懂设计的前端设计语言:覆盖 UX 审查、视觉层级、可访问性、排版、配色、动效与可复用设计系统,把界面打磨到生产级。新版本使用上游独立二进制启动器,可能在首次运行时下载;需自行满足平台与运行权限。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Impeccable",
|
"name": "Impeccable",
|
||||||
"shortDesc": "A design language that makes AI better at frontend: UX review, visual hierarchy, accessibility, typography, color, motion and reusable design systems"
|
"shortDesc": "A design language that makes AI better at frontend: UX review, visual hierarchy, accessibility, typography, color, motion and reusable design systems. Uses an upstream standalone binary launcher that may download on first run; platform and execution permissions must be supplied separately."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"repoUrl": "https://github.com/pbakaus/impeccable.git",
|
"repoUrl": "https://github.com/pbakaus/impeccable.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"path": "plugin/skills/impeccable",
|
"path": "plugin/skills/impeccable",
|
||||||
"ref": "e4ab5e24bdf5321b72163d2fbcbe6fa985c848ba"
|
"ref": "6e802bd0ed99f53180e2359fddab6da8d97970d9"
|
||||||
},
|
},
|
||||||
"latestVersion": "3.9.1"
|
"latestVersion": "4.5.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Khazix Skills",
|
"name": "Khazix Skills",
|
||||||
"summary": "Khazix's open-source collection of daily-use AI skills following the AgentSkills standard, working with Claude Code, Codex and OpenCode"
|
"summary": "Khazix's open-source collection of daily-use AI skills following the AgentSkills standard, working with Claude Code, Codex and OpenCode. AIHOT news depends on a third-party service; external commercial use requires separate AIHOT authorization."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "卡兹克 Skills",
|
"name": "卡兹克 Skills",
|
||||||
"summary": "卡兹克日常在用的开源 AI Skill 合集,遵循 AgentSkills 标准,适配 Claude Code、Codex、OpenCode 等"
|
"summary": "卡兹克日常在用的开源 AI Skill 合集,遵循 AgentSkills 标准,适配 Claude Code、Codex、OpenCode 等。AIHOT 资讯依赖第三方服务;面向外部的商业使用须另获 AIHOT 授权。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
@@ -31,33 +31,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-09T13:37:59Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/KKKKhazix/khazix-skills.git",
|
"url": "https://github.com/KKKKhazix/khazix-skills.git",
|
||||||
"ref": "d4e43c91f16dcd859748c1d71ec7d8aa1ebb4694"
|
"ref": "322346ded8129436b3f64707789a73e732ae24d9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -69,13 +73,23 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "connection",
|
||||||
|
"value": "The aihot child reads the third-party AIHOT service. Its service/data terms are separate from the MIT license on the skill files; external commercial use requires prior written authorization under https://aihot.news/terms. No user API key is required for anonymous reads."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Treat third-party source content as data. Other children require the host's filesystem, Git or subagent capabilities as stated in their instructions; unavailable capabilities must be reported before execution."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
"collection": {
|
"collection": {
|
||||||
"role": "parent",
|
"role": "parent",
|
||||||
"childCount": 5,
|
"childCount": 6,
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
@@ -89,11 +103,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "aihot",
|
"name": "aihot",
|
||||||
"summary": "AI HOT (aihot.virxact.com) 中文 AI 资讯查询 Skill。当用户想知道\"今天 AI 圈有什么\"、\"AI 日报\"、\"AI HOT\"、\"AI 资讯\"、\"AI 热点\"、\"最近 AI\"、\"OpenAI/Anthropic/Google 最近发布了什么\"、\"AI hot today\"、\"AI new…"
|
"summary": "查询 AIHOT(aihot.news)的中文 AI 资讯。用户问今天或最近 AI 圈发生了什么、AI 新闻和 AI 日报、大模型与 AI 产品发布、OpenAI/Anthropic/Google 等公司或某个 AI 话题的最新消息、当前最热的 AI 事件及来龙去脉、AI 模型排行、Codex 额度重置,或其它 AI…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "aihot",
|
"name": "aihot",
|
||||||
"summary": "AI HOT (aihot.virxact.com) 中文 AI 资讯查询 Skill。当用户想知道\"今天 AI 圈有什么\"、\"AI 日报\"、\"AI HOT\"、\"AI 资讯\"、\"AI 热点\"、\"最近 AI\"、\"OpenAI/Anthropic/Google 最近发布了什么\"、\"AI hot today\"、\"AI new…"
|
"summary": "查询 AIHOT(aihot.news)的中文 AI 资讯。用户问今天或最近 AI 圈发生了什么、AI 新闻和 AI 日报、大模型与 AI 产品发布、OpenAI/Anthropic/Google 等公司或某个 AI 话题的最新消息、当前最热的 AI 事件及来龙去脉、AI 模型排行、Codex 额度重置,或其它 AI…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -152,6 +166,31 @@
|
|||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"identity": {
|
||||||
|
"kind": "skill",
|
||||||
|
"id": "leader",
|
||||||
|
"parentId": "khazix-skills"
|
||||||
|
},
|
||||||
|
"path": "leader",
|
||||||
|
"presentation": {
|
||||||
|
"defaultLocale": "en-US",
|
||||||
|
"i18n": {
|
||||||
|
"en-US": {
|
||||||
|
"name": "leader",
|
||||||
|
"summary": "Turn an idea into an executable agent brief with research evidence, scope, acceptance criteria and recovery steps."
|
||||||
|
},
|
||||||
|
"zh-CN": {
|
||||||
|
"name": "leader",
|
||||||
|
"summary": "将想法整理成可执行的 Agent 任务书,包含调研证据、范围、验收要求和恢复安排。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"state": "unknown"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -164,11 +203,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "neat-freak",
|
"name": "neat-freak",
|
||||||
"summary": "End-of-session knowledge cleanup with OCD-level rigor — reconciles project docs (CLAUDE.md, README.md, docs/) and agent memory against the code, and audits whet…"
|
"summary": "Knowledge and governance closeout: reconcile project docs, rule files (CLAUDE.md/AGENTS.md), authorized agent memory, and workspace residue with what the code a…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "neat-freak",
|
"name": "neat-freak",
|
||||||
"summary": "End-of-session knowledge cleanup with OCD-level rigor — reconciles project docs (CLAUDE.md, README.md, docs/) and agent memory against the code, and audits whet…"
|
"summary": "Knowledge and governance closeout: reconcile project docs, rule files (CLAUDE.md/AGENTS.md), authorized agent memory, and workspace residue with what the code a…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
|
|||||||
12
skills/khazix-skills/collection-child-overrides.json
Normal file
12
skills/khazix-skills/collection-child-overrides.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"leader": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "将想法整理成可执行的 Agent 任务书,包含调研证据、范围、验收要求和恢复安排。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Turn an idea into an executable agent brief with research evidence, scope, acceptance criteria and recovery steps."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,11 +12,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "卡兹克 Skills",
|
"name": "卡兹克 Skills",
|
||||||
"shortDesc": "卡兹克日常在用的开源 AI Skill 合集,遵循 AgentSkills 标准,适配 Claude Code、Codex、OpenCode 等"
|
"shortDesc": "卡兹克日常在用的开源 AI Skill 合集,遵循 AgentSkills 标准,适配 Claude Code、Codex、OpenCode 等。AIHOT 资讯依赖第三方服务;面向外部的商业使用须另获 AIHOT 授权。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Khazix Skills",
|
"name": "Khazix Skills",
|
||||||
"shortDesc": "Khazix's open-source collection of daily-use AI skills following the AgentSkills standard, working with Claude Code, Codex and OpenCode"
|
"shortDesc": "Khazix's open-source collection of daily-use AI skills following the AgentSkills standard, working with Claude Code, Codex and OpenCode. AIHOT news depends on a third-party service; external commercial use requires separate AIHOT authorization."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/KKKKhazix/khazix-skills.git",
|
"repoUrl": "https://github.com/KKKKhazix/khazix-skills.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "d4e43c91f16dcd859748c1d71ec7d8aa1ebb4694"
|
"ref": "322346ded8129436b3f64707789a73e732ae24d9"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
@@ -40,10 +40,10 @@
|
|||||||
"path": "aihot",
|
"path": "aihot",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "AI HOT (aihot.virxact.com) 中文 AI 资讯查询 Skill。当用户想知道\"今天 AI 圈有什么\"、\"AI 日报\"、\"AI HOT\"、\"AI 资讯\"、\"AI 热点\"、\"最近 AI\"、\"OpenAI/Anthropic/Google 最近发布了什么\"、\"AI hot today\"、\"AI new…"
|
"shortDesc": "查询 AIHOT(aihot.news)的中文 AI 资讯。用户问今天或最近 AI 圈发生了什么、AI 新闻和 AI 日报、大模型与 AI 产品发布、OpenAI/Anthropic/Google 等公司或某个 AI 话题的最新消息、当前最热的 AI 事件及来龙去脉、AI 模型排行、Codex 额度重置,或其它 AI…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "AI HOT (aihot.virxact.com) 中文 AI 资讯查询 Skill。当用户想知道\"今天 AI 圈有什么\"、\"AI 日报\"、\"AI HOT\"、\"AI 资讯\"、\"AI 热点\"、\"最近 AI\"、\"OpenAI/Anthropic/Google 最近发布了什么\"、\"AI hot today\"、\"AI new…"
|
"shortDesc": "查询 AIHOT(aihot.news)的中文 AI 资讯。用户问今天或最近 AI 圈发生了什么、AI 新闻和 AI 日报、大模型与 AI 产品发布、OpenAI/Anthropic/Google 等公司或某个 AI 话题的最新消息、当前最热的 AI 事件及来龙去脉、AI 模型排行、Codex 额度重置,或其它 AI…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -71,15 +71,27 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "leader",
|
||||||
|
"path": "leader",
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "将想法整理成可执行的 Agent 任务书,包含调研证据、范围、验收要求和恢复安排。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Turn an idea into an executable agent brief with research evidence, scope, acceptance criteria and recovery steps."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "neat-freak",
|
"id": "neat-freak",
|
||||||
"path": "neat-freak",
|
"path": "neat-freak",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "End-of-session knowledge cleanup with OCD-level rigor — reconciles project docs (CLAUDE.md, README.md, docs/) and agent memory against the code, and audits whet…"
|
"shortDesc": "Knowledge and governance closeout: reconcile project docs, rule files (CLAUDE.md/AGENTS.md), authorized agent memory, and workspace residue with what the code a…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "End-of-session knowledge cleanup with OCD-level rigor — reconciles project docs (CLAUDE.md, README.md, docs/) and agent memory against the code, and audits whet…"
|
"shortDesc": "Knowledge and governance closeout: reconcile project docs, rule files (CLAUDE.md/AGENTS.md), authorized agent memory, and workspace residue with what the code a…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Lark Suite CLI",
|
"name": "Lark Suite CLI",
|
||||||
"summary": "Official Lark/Feishu CLI for humans and AI agents, spanning Messenger, Docs, Base, Calendar and 18 domains with 200+ commands"
|
"summary": "Official Lark/Feishu CLI for humans and AI agents, spanning Messenger, Docs, Base, Calendar and 18 domains with 200+ commands. Install third-party lark-cli separately and authorize a Feishu/Lark account; product entitlements and costs are separate."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "飞书 CLI",
|
"name": "飞书 CLI",
|
||||||
"summary": "飞书/Lark 官方命令行工具,面向人与 AI Agent,覆盖消息、文档、多维表格、日历、邮件等 18 个业务域、200+ 命令"
|
"summary": "飞书/Lark 官方命令行工具,面向人与 AI Agent,覆盖消息、文档、多维表格、日历、邮件等 18 个业务域、200+ 命令。需自行安装第三方 lark-cli,并完成飞书/Lark 账号授权;产品权益和费用另计。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "communication",
|
"category": "communication",
|
||||||
@@ -28,33 +28,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-31T12:36:39Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-31T12:36:39Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/larksuite/cli.git",
|
"url": "https://github.com/larksuite/cli.git",
|
||||||
"ref": "a257fcbaf9f07787b6c170d9265e9ef273b0c579"
|
"ref": "7beffb086d7fa3c5b843d8affa7c089f49cfc65e"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "partner",
|
"stewardship": "partner",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -66,7 +70,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "A separately installed Lark Suite CLI (lark-cli), with the runtime prerequisites documented upstream. DesireCore does not bundle, install, license, pay for or operate the CLI or Feishu/Lark products."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "The operator authorizes their own Feishu/Lark identity and required OAuth scopes. Capabilities depend on tenant product entitlements and network access; stop before calls when installation, authorization or permissions are unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -84,11 +98,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-approval",
|
"name": "lark-approval",
|
||||||
"summary": "飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。"
|
"summary": "飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-approval",
|
"name": "lark-approval",
|
||||||
"summary": "飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。"
|
"summary": "飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。"
|
||||||
}
|
}
|
||||||
@@ -111,11 +125,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-apps",
|
"name": "lark-apps",
|
||||||
"summary": "妙搭(Spark/Miaoda)应用开发与托管:应用创建、本地全栈开发、云端生成迭代、创意设计(UI mockup / 可交互原型 / 线框图 / 落地页 / 仪表盘 / 幻灯片 deck / 视觉探索)、AI相关能力和飞书平台能力或者其他外部能力集成、日志/Trace/监控指标/PV/UV 查询、环境变量管理、应用协…"
|
"summary": "妙搭(Spark/Miaoda)应用开发与托管:应用创建、本地全栈开发、云端生成迭代、创意设计(UI mockup / 可交互原型 / 线框图 / 落地页 / 仪表盘 / 幻灯片 deck / 视觉探索)、AI相关能力和飞书平台能力或者其他外部能力集成、日志/Trace/监控指标/PV/UV 查询、环境变量管理、应用协…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-apps",
|
"name": "lark-apps",
|
||||||
"summary": "妙搭(Spark/Miaoda)应用开发与托管:应用创建、本地全栈开发、云端生成迭代、创意设计(UI mockup / 可交互原型 / 线框图 / 落地页 / 仪表盘 / 幻灯片 deck / 视觉探索)、AI相关能力和飞书平台能力或者其他外部能力集成、日志/Trace/监控指标/PV/UV 查询、环境变量管理、应用协…"
|
"summary": "妙搭(Spark/Miaoda)应用开发与托管:应用创建、本地全栈开发、云端生成迭代、创意设计(UI mockup / 可交互原型 / 线框图 / 落地页 / 仪表盘 / 幻灯片 deck / 视觉探索)、AI相关能力和飞书平台能力或者其他外部能力集成、日志/Trace/监控指标/PV/UV 查询、环境变量管理、应用协…"
|
||||||
}
|
}
|
||||||
@@ -138,11 +152,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-attendance",
|
"name": "lark-attendance",
|
||||||
"summary": "飞书考勤打卡:查询自己的考勤打卡记录"
|
"summary": "飞书考勤打卡:查询自己的考勤打卡记录"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-attendance",
|
"name": "lark-attendance",
|
||||||
"summary": "飞书考勤打卡:查询自己的考勤打卡记录"
|
"summary": "飞书考勤打卡:查询自己的考勤打卡记录"
|
||||||
}
|
}
|
||||||
@@ -165,11 +179,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-base",
|
"name": "lark-base",
|
||||||
"summary": "飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、…"
|
"summary": "飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-base",
|
"name": "lark-base",
|
||||||
"summary": "飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、…"
|
"summary": "飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、…"
|
||||||
}
|
}
|
||||||
@@ -178,7 +192,7 @@
|
|||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"version": "1.2.21",
|
"version": "1.2.23",
|
||||||
"versionScheme": "semver"
|
"versionScheme": "semver"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -192,11 +206,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-calendar",
|
"name": "lark-calendar",
|
||||||
"summary": "飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-meeting)、待办任务(走 lark-task)。"
|
"summary": "飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-meeting)、待办任务(走 lark-task)。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-calendar",
|
"name": "lark-calendar",
|
||||||
"summary": "飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-meeting)、待办任务(走 lark-task)。"
|
"summary": "飞书日历:管理日历日程和会议室。查看/搜索日程、创建/更新日程、管理参会人、查询忙闲和推荐时段、预定会议室。当用户需要查看日程安排、创建/修改会议、查询/预定会议室时使用。不负责:查询过去的视频会议记录(走 lark-meeting)、待办任务(走 lark-task)。"
|
||||||
}
|
}
|
||||||
@@ -219,11 +233,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-contact",
|
"name": "lark-contact",
|
||||||
"summary": "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部…"
|
"summary": "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-contact",
|
"name": "lark-contact",
|
||||||
"summary": "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部…"
|
"summary": "飞书 / Lark 通讯录:按姓名 / 邮箱解析成 open_id,或按 open_id 反查姓名 / 部门 / 邮箱 / 联系方式 / 个人状态 / 签名,以及按关键词搜索当前用户可见的机器人 / 智能体(agent)。当用户提到一个名字要下一步发消息 / 排日程,或拿到 open_id 想查具体信息时使用。不负责部…"
|
||||||
}
|
}
|
||||||
@@ -246,11 +260,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-doc",
|
"name": "lark-doc",
|
||||||
"summary": "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-d…"
|
"summary": "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-d…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-doc",
|
"name": "lark-doc",
|
||||||
"summary": "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-d…"
|
"summary": "飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-d…"
|
||||||
}
|
}
|
||||||
@@ -271,11 +285,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-drive",
|
"name": "lark-drive",
|
||||||
"summary": "飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,…"
|
"summary": "飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-drive",
|
"name": "lark-drive",
|
||||||
"summary": "飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,…"
|
"summary": "飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,…"
|
||||||
}
|
}
|
||||||
@@ -298,11 +312,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-event",
|
"name": "lark-event",
|
||||||
"summary": "Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/c…"
|
"summary": "Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/c…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-event",
|
"name": "lark-event",
|
||||||
"summary": "Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/c…"
|
"summary": "Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/c…"
|
||||||
}
|
}
|
||||||
@@ -325,11 +339,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-im",
|
"name": "lark-im",
|
||||||
"summary": "飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成…"
|
"summary": "飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-im",
|
"name": "lark-im",
|
||||||
"summary": "飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成…"
|
"summary": "飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成…"
|
||||||
}
|
}
|
||||||
@@ -352,11 +366,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-mail",
|
"name": "lark-mail",
|
||||||
"summary": "飞书邮箱:Use when user mentions 起草邮件、写邮件、草稿、发送/回复/转发邮件、查阅邮件、看邮件、搜索邮件、邮件文件夹、邮件标签、邮件联系人、监听新邮件、邮件收信规则等;use for mail/email intent only."
|
"summary": "飞书邮箱:Use when user mentions 起草邮件、写邮件、草稿、发送/回复/转发邮件、查阅邮件、看邮件、搜索邮件、邮件文件夹、邮件标签、邮件联系人、监听新邮件、邮件收信规则等;use for mail/email intent only."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-mail",
|
"name": "lark-mail",
|
||||||
"summary": "飞书邮箱:Use when user mentions 起草邮件、写邮件、草稿、发送/回复/转发邮件、查阅邮件、看邮件、搜索邮件、邮件文件夹、邮件标签、邮件联系人、监听新邮件、邮件收信规则等;use for mail/email intent only."
|
"summary": "飞书邮箱:Use when user mentions 起草邮件、写邮件、草稿、发送/回复/转发邮件、查阅邮件、看邮件、搜索邮件、邮件文件夹、邮件标签、邮件联系人、监听新邮件、邮件收信规则等;use for mail/email intent only."
|
||||||
}
|
}
|
||||||
@@ -379,11 +393,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-markdown",
|
"name": "lark-markdown",
|
||||||
"summary": "飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管…"
|
"summary": "飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-markdown",
|
"name": "lark-markdown",
|
||||||
"summary": "飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管…"
|
"summary": "飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管…"
|
||||||
}
|
}
|
||||||
@@ -406,11 +420,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-meeting",
|
"name": "lark-meeting",
|
||||||
"summary": "飞书视频会议:查询会议记录与会议产物(纪要/逐字稿/妙记)、妙记搜索/上传/下载/编辑、机器人参与会议;查询进行中的会议、实时会议内容(发言/聊天/共享文档)问答(会上/会里)、发送会中聊天/表情;基于 meeting_id、meeting_no、event_id、note_id、minute_token、vc-nod…"
|
"summary": "飞书视频会议:查询会议记录与会议产物(纪要/逐字稿/妙记)、妙记搜索/上传/下载/编辑、机器人参与会议;查询进行中的会议、实时会议内容(发言/聊天/共享文档)问答(会上/会里)、发送会中聊天/表情;基于 meeting_id、meeting_no、event_id、note_id、minute_token、vc-nod…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-meeting",
|
"name": "lark-meeting",
|
||||||
"summary": "飞书视频会议:查询会议记录与会议产物(纪要/逐字稿/妙记)、妙记搜索/上传/下载/编辑、机器人参与会议;查询进行中的会议、实时会议内容(发言/聊天/共享文档)问答(会上/会里)、发送会中聊天/表情;基于 meeting_id、meeting_no、event_id、note_id、minute_token、vc-nod…"
|
"summary": "飞书视频会议:查询会议记录与会议产物(纪要/逐字稿/妙记)、妙记搜索/上传/下载/编辑、机器人参与会议;查询进行中的会议、实时会议内容(发言/聊天/共享文档)问答(会上/会里)、发送会中聊天/表情;基于 meeting_id、meeting_no、event_id、note_id、minute_token、vc-nod…"
|
||||||
}
|
}
|
||||||
@@ -433,11 +447,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-minutes",
|
"name": "lark-minutes",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-minutes 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-minutes 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-minutes",
|
"name": "lark-minutes",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-minutes 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-minutes 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
}
|
}
|
||||||
@@ -460,11 +474,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-note",
|
"name": "lark-note",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-note 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-note 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-note",
|
"name": "lark-note",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-note 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-note 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
}
|
}
|
||||||
@@ -487,11 +501,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-okr",
|
"name": "lark-okr",
|
||||||
"summary": "飞书 OKR:管理目标与关键结果。查看和编辑 OKR 周期、目标、关键结果、对齐关系、量化指标和进展记录。当用户需要查看或创建 OKR、管理目标和关键结果、查看对齐关系时使用。不负责:待办任务管理(lark-task)、日程/会议安排(lark-calendar)、绩效评估"
|
"summary": "飞书 OKR:管理目标与关键结果。查看和编辑 OKR 周期、目标、关键结果、对齐关系、量化指标和进展记录。当用户需要查看或创建 OKR、管理目标和关键结果、查看对齐关系时使用。不负责:待办任务管理(lark-task)、日程/会议安排(lark-calendar)、绩效评估"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-okr",
|
"name": "lark-okr",
|
||||||
"summary": "飞书 OKR:管理目标与关键结果。查看和编辑 OKR 周期、目标、关键结果、对齐关系、量化指标和进展记录。当用户需要查看或创建 OKR、管理目标和关键结果、查看对齐关系时使用。不负责:待办任务管理(lark-task)、日程/会议安排(lark-calendar)、绩效评估"
|
"summary": "飞书 OKR:管理目标与关键结果。查看和编辑 OKR 周期、目标、关键结果、对齐关系、量化指标和进展记录。当用户需要查看或创建 OKR、管理目标和关键结果、查看对齐关系时使用。不负责:待办任务管理(lark-task)、日程/会议安排(lark-calendar)、绩效评估"
|
||||||
}
|
}
|
||||||
@@ -514,11 +528,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-openapi-explorer",
|
"name": "lark-openapi-explorer",
|
||||||
"summary": "飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。"
|
"summary": "飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-openapi-explorer",
|
"name": "lark-openapi-explorer",
|
||||||
"summary": "飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。"
|
"summary": "飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。"
|
||||||
}
|
}
|
||||||
@@ -541,11 +555,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-shared",
|
"name": "lark-shared",
|
||||||
"summary": "Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing sco…"
|
"summary": "Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing sco…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-shared",
|
"name": "lark-shared",
|
||||||
"summary": "Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing sco…"
|
"summary": "Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing sco…"
|
||||||
}
|
}
|
||||||
@@ -568,20 +582,20 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
|
||||||
"name": "lark-sheets",
|
|
||||||
"summary": "飞书电子表格:创建和操作电子表格。支持创建表格、管理工作表与行列结构(增删/合并/调整尺寸/隐藏/冻结)、读写单元格(值/公式/样式/批注/单元格图片)、查找替换、多操作批量更新,以及图表、透视表、条件格式、筛选器、迷你图、浮动图片等对象的创建与维护。当用户需要创建电子表格、管理工作表、批量读写或编辑数据、统计汇总与可…"
|
|
||||||
},
|
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "lark-sheets",
|
"name": "lark-sheets",
|
||||||
"summary": "飞书电子表格:创建和操作电子表格。支持创建表格、管理工作表与行列结构(增删/合并/调整尺寸/隐藏/冻结)、读写单元格(值/公式/样式/批注/单元格图片)、查找替换、多操作批量更新,以及图表、透视表、条件格式、筛选器、迷你图、浮动图片等对象的创建与维护。当用户需要创建电子表格、管理工作表、批量读写或编辑数据、统计汇总与可…"
|
"summary": "飞书电子表格:创建和操作电子表格。支持工作表与行列结构(增删/合并/尺寸/隐藏/冻结/分组)、单元格读写(值/公式/样式/批注/单元格图片)、区域复制移动排序填充、查找替换、批量更新,图表、透视表、条件格式、筛选器与筛选视图、下拉列表、迷你图、浮动图片等对象的创建与维护,以及公式校验、历史版本回滚、本地 Excel/C…"
|
||||||
|
},
|
||||||
|
"zh-CN": {
|
||||||
|
"name": "lark-sheets",
|
||||||
|
"summary": "飞书电子表格:创建和操作电子表格。支持工作表与行列结构(增删/合并/尺寸/隐藏/冻结/分组)、单元格读写(值/公式/样式/批注/单元格图片)、区域复制移动排序填充、查找替换、批量更新,图表、透视表、条件格式、筛选器与筛选视图、下拉列表、迷你图、浮动图片等对象的创建与维护,以及公式校验、历史版本回滚、本地 Excel/C…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"version": "3.1.8",
|
"version": "3.5.2",
|
||||||
"versionScheme": "semver"
|
"versionScheme": "semver"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -595,11 +609,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-skill-maker",
|
"name": "lark-skill-maker",
|
||||||
"summary": "创建 lark-cli 的自定义 Skill。当用户需要把飞书 API 操作封装成可复用的 Skill(包装原子 API 或编排多步流程)时使用。"
|
"summary": "创建 lark-cli 的自定义 Skill。当用户需要把飞书 API 操作封装成可复用的 Skill(包装原子 API 或编排多步流程)时使用。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-skill-maker",
|
"name": "lark-skill-maker",
|
||||||
"summary": "创建 lark-cli 的自定义 Skill。当用户需要把飞书 API 操作封装成可复用的 Skill(包装原子 API 或编排多步流程)时使用。"
|
"summary": "创建 lark-cli 的自定义 Skill。当用户需要把飞书 API 操作封装成可复用的 Skill(包装原子 API 或编排多步流程)时使用。"
|
||||||
}
|
}
|
||||||
@@ -622,11 +636,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-slides",
|
"name": "lark-slides",
|
||||||
"summary": "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由…"
|
"summary": "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-slides",
|
"name": "lark-slides",
|
||||||
"summary": "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由…"
|
"summary": "飞书幻灯片:创建和编辑幻灯片。创建演示文稿、读取幻灯片内容、管理幻灯片页面(创建、删除、读取、局部替换)。当用户需要创建或编辑幻灯片、读取或修改单个页面时使用。当用户给出 doubao.com 的 /slides/ URL/token 时,也应直接使用本 skill,不要因为域名不是飞书而回退到 WebFetch;路由…"
|
||||||
}
|
}
|
||||||
@@ -649,11 +663,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-task",
|
"name": "lark-task",
|
||||||
"summary": "飞书任务:管理任务、清单和任务智能体。创建待办任务、查看和更新任务状态、拆分子任务、组织任务清单、分配协作成员、上传任务附件、注册或注销任务智能体、更新任务智能体的主页数据、写入智能体任务记录。当用户需要创建待办事项、查看任务列表、跟踪任务进度、管理项目清单或给他人分配任务、为任务上传附件文件、注册注销任务智能体、更新…"
|
"summary": "飞书任务:管理任务、清单和任务智能体。创建待办任务、查看和更新任务状态、拆分子任务、组织任务清单、分配协作成员、上传任务附件、注册或注销任务智能体、更新任务智能体的主页数据、写入智能体任务记录。当用户需要创建待办事项、查看任务列表、跟踪任务进度、管理项目清单或给他人分配任务、为任务上传附件文件、注册注销任务智能体、更新…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-task",
|
"name": "lark-task",
|
||||||
"summary": "飞书任务:管理任务、清单和任务智能体。创建待办任务、查看和更新任务状态、拆分子任务、组织任务清单、分配协作成员、上传任务附件、注册或注销任务智能体、更新任务智能体的主页数据、写入智能体任务记录。当用户需要创建待办事项、查看任务列表、跟踪任务进度、管理项目清单或给他人分配任务、为任务上传附件文件、注册注销任务智能体、更新…"
|
"summary": "飞书任务:管理任务、清单和任务智能体。创建待办任务、查看和更新任务状态、拆分子任务、组织任务清单、分配协作成员、上传任务附件、注册或注销任务智能体、更新任务智能体的主页数据、写入智能体任务记录。当用户需要创建待办事项、查看任务列表、跟踪任务进度、管理项目清单或给他人分配任务、为任务上传附件文件、注册注销任务智能体、更新…"
|
||||||
}
|
}
|
||||||
@@ -676,11 +690,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-vc",
|
"name": "lark-vc",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-vc 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-vc 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-vc",
|
"name": "lark-vc",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-vc 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-vc 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
}
|
}
|
||||||
@@ -703,11 +717,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-vc-agent",
|
"name": "lark-vc-agent",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-vc-agent 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-vc-agent 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-vc-agent",
|
"name": "lark-vc-agent",
|
||||||
"summary": "仅当用户或上游配置显式指定 lark-vc-agent 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
"summary": "仅当用户或上游配置显式指定 lark-vc-agent 时使用,相关请求统一交由 lark-meeting 技能处理。"
|
||||||
}
|
}
|
||||||
@@ -730,11 +744,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-whiteboard",
|
"name": "lark-whiteboard",
|
||||||
"summary": "飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。"
|
"summary": "飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-whiteboard",
|
"name": "lark-whiteboard",
|
||||||
"summary": "飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。"
|
"summary": "飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。"
|
||||||
}
|
}
|
||||||
@@ -757,11 +771,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-wiki",
|
"name": "lark-wiki",
|
||||||
"summary": "飞书知识库:管理知识空间、空间成员和文档节点。创建和查询知识空间、查看和管理空间成员、管理节点层级结构、在知识库中组织文档和快捷方式。当用户需要在知识库中查找或创建文档、浏览知识空间结构、查看或管理空间成员、移动或复制节点时使用。当用户给出 doubao.com 的 /wiki/ URL/token 时,也应直接使用本…"
|
"summary": "飞书知识库:管理知识空间、空间成员和文档节点。创建和查询知识空间、查看和管理空间成员、管理节点层级结构、在知识库中组织文档和快捷方式。当用户需要在知识库中查找或创建文档、浏览知识空间结构、查看或管理空间成员、移动或复制节点时使用。当用户给出 doubao.com 的 /wiki/ URL/token 时,也应直接使用本…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-wiki",
|
"name": "lark-wiki",
|
||||||
"summary": "飞书知识库:管理知识空间、空间成员和文档节点。创建和查询知识空间、查看和管理空间成员、管理节点层级结构、在知识库中组织文档和快捷方式。当用户需要在知识库中查找或创建文档、浏览知识空间结构、查看或管理空间成员、移动或复制节点时使用。当用户给出 doubao.com 的 /wiki/ URL/token 时,也应直接使用本…"
|
"summary": "飞书知识库:管理知识空间、空间成员和文档节点。创建和查询知识空间、查看和管理空间成员、管理节点层级结构、在知识库中组织文档和快捷方式。当用户需要在知识库中查找或创建文档、浏览知识空间结构、查看或管理空间成员、移动或复制节点时使用。当用户给出 doubao.com 的 /wiki/ URL/token 时,也应直接使用本…"
|
||||||
}
|
}
|
||||||
@@ -784,11 +798,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-workflow-meeting-summary",
|
"name": "lark-workflow-meeting-summary",
|
||||||
"summary": "会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。"
|
"summary": "会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-workflow-meeting-summary",
|
"name": "lark-workflow-meeting-summary",
|
||||||
"summary": "会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。"
|
"summary": "会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。"
|
||||||
}
|
}
|
||||||
@@ -811,11 +825,11 @@
|
|||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"en-US": {
|
||||||
"name": "lark-workflow-standup-report",
|
"name": "lark-workflow-standup-report",
|
||||||
"summary": "日程待办摘要:编排 calendar +agenda 和 task +get-my-tasks,生成指定日期的日程与未完成任务摘要。适用于了解今天/明天/本周的安排。"
|
"summary": "日程待办摘要:编排 calendar +agenda 和 task +get-my-tasks,生成指定日期的日程与未完成任务摘要。适用于了解今天/明天/本周的安排。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"zh-CN": {
|
||||||
"name": "lark-workflow-standup-report",
|
"name": "lark-workflow-standup-report",
|
||||||
"summary": "日程待办摘要:编排 calendar +agenda 和 task +get-my-tasks,生成指定日期的日程与未完成任务摘要。适用于了解今天/明天/本周的安排。"
|
"summary": "日程待办摘要:编排 calendar +agenda 和 task +get-my-tasks,生成指定日期的日程与未完成任务摘要。适用于了解今天/明天/本周的安排。"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "飞书 CLI",
|
"name": "飞书 CLI",
|
||||||
"shortDesc": "飞书/Lark 官方命令行工具,面向人与 AI Agent,覆盖消息、文档、多维表格、日历、邮件等 18 个业务域、200+ 命令"
|
"shortDesc": "飞书/Lark 官方命令行工具,面向人与 AI Agent,覆盖消息、文档、多维表格、日历、邮件等 18 个业务域、200+ 命令。需自行安装第三方 lark-cli,并完成飞书/Lark 账号授权;产品权益和费用另计。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Lark Suite CLI",
|
"name": "Lark Suite CLI",
|
||||||
"shortDesc": "Official Lark/Feishu CLI for humans and AI agents, spanning Messenger, Docs, Base, Calendar and 18 domains with 200+ commands"
|
"shortDesc": "Official Lark/Feishu CLI for humans and AI agents, spanning Messenger, Docs, Base, Calendar and 18 domains with 200+ commands. Install third-party lark-cli separately and authorize a Feishu/Lark account; product entitlements and costs are separate."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/larksuite/cli.git",
|
"repoUrl": "https://github.com/larksuite/cli.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "a257fcbaf9f07787b6c170d9265e9ef273b0c579"
|
"ref": "7beffb086d7fa3c5b843d8affa7c089f49cfc65e"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
{
|
{
|
||||||
"id": "lark-base",
|
"id": "lark-base",
|
||||||
"path": "skills/lark-base",
|
"path": "skills/lark-base",
|
||||||
"version": "1.2.21",
|
"version": "1.2.23",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、…"
|
"shortDesc": "飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、…"
|
||||||
@@ -268,13 +268,13 @@
|
|||||||
{
|
{
|
||||||
"id": "lark-sheets",
|
"id": "lark-sheets",
|
||||||
"path": "skills/lark-sheets",
|
"path": "skills/lark-sheets",
|
||||||
"version": "3.1.8",
|
"version": "3.5.2",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "飞书电子表格:创建和操作电子表格。支持创建表格、管理工作表与行列结构(增删/合并/调整尺寸/隐藏/冻结)、读写单元格(值/公式/样式/批注/单元格图片)、查找替换、多操作批量更新,以及图表、透视表、条件格式、筛选器、迷你图、浮动图片等对象的创建与维护。当用户需要创建电子表格、管理工作表、批量读写或编辑数据、统计汇总与可…"
|
"shortDesc": "飞书电子表格:创建和操作电子表格。支持工作表与行列结构(增删/合并/尺寸/隐藏/冻结/分组)、单元格读写(值/公式/样式/批注/单元格图片)、区域复制移动排序填充、查找替换、批量更新,图表、透视表、条件格式、筛选器与筛选视图、下拉列表、迷你图、浮动图片等对象的创建与维护,以及公式校验、历史版本回滚、本地 Excel/C…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "飞书电子表格:创建和操作电子表格。支持创建表格、管理工作表与行列结构(增删/合并/调整尺寸/隐藏/冻结)、读写单元格(值/公式/样式/批注/单元格图片)、查找替换、多操作批量更新,以及图表、透视表、条件格式、筛选器、迷你图、浮动图片等对象的创建与维护。当用户需要创建电子表格、管理工作表、批量读写或编辑数据、统计汇总与可…"
|
"shortDesc": "飞书电子表格:创建和操作电子表格。支持工作表与行列结构(增删/合并/尺寸/隐藏/冻结/分组)、单元格读写(值/公式/样式/批注/单元格图片)、区域复制移动排序填充、查找替换、批量更新,图表、透视表、条件格式、筛选器与筛选视图、下拉列表、迷你图、浮动图片等对象的创建与维护,以及公式校验、历史版本回滚、本地 Excel/C…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Last 30 Days",
|
"name": "Last 30 Days",
|
||||||
"summary": "Research what people actually say about any topic in the last 30 days across Reddit, X, YouTube, HN and more"
|
"summary": "Research what people actually say about any topic in the last 30 days across Reddit, X, YouTube, HN and more. Requires Python and the selected source tools; paid APIs, accounts and optional browser sessions need separate setup and authorization."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "近 30 天研究",
|
"name": "近 30 天研究",
|
||||||
"summary": "调研任意话题近 30 天的真实讨论,聚合 Reddit、X、YouTube、HN、Polymarket、GitHub 等来源的热帖与观点"
|
"summary": "调研任意话题近 30 天的真实讨论,聚合 Reddit、X、YouTube、HN、Polymarket、GitHub 等来源的热帖与观点。需 Python 与所选信源工具;付费 API、账号和可选浏览器会话须自行配置并授权。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "research",
|
"category": "research",
|
||||||
@@ -29,25 +29,27 @@
|
|||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"version": "3.21.1",
|
"version": "3.26.0",
|
||||||
"versionScheme": "semver"
|
"versionScheme": "semver"
|
||||||
},
|
},
|
||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -55,14 +57,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/mvanhorn/last30days-skill.git",
|
"url": "https://github.com/mvanhorn/last30days-skill.git",
|
||||||
"path": "skills/last30days",
|
"path": "skills/last30days",
|
||||||
"ref": "a218edadbc3361672f5e5e2cd72a8212b0b3fbb8"
|
"ref": "5103ba478b380552207a3754b74c7655d64208cd"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -74,7 +78,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "Python 3 and the third-party source CLIs required by the selected research channels. Setup may install additional tools; the operator authorizes installation separately."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Optional X/platform tokens, paid API services and browser-cookie access require the operator's own credentials, entitlements and explicit consent. Declining browser access must leave a cookie-free research path. Any remote API endpoint is operator-configured; missing or failed sources must be reported honestly."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -11,15 +11,15 @@
|
|||||||
"hacker-news",
|
"hacker-news",
|
||||||
"web"
|
"web"
|
||||||
],
|
],
|
||||||
"latestVersion": "3.21.1",
|
"latestVersion": "3.26.0",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "近 30 天研究",
|
"name": "近 30 天研究",
|
||||||
"shortDesc": "调研任意话题近 30 天的真实讨论,聚合 Reddit、X、YouTube、HN、Polymarket、GitHub 等来源的热帖与观点"
|
"shortDesc": "调研任意话题近 30 天的真实讨论,聚合 Reddit、X、YouTube、HN、Polymarket、GitHub 等来源的热帖与观点。需 Python 与所选信源工具;付费 API、账号和可选浏览器会话须自行配置并授权。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Last 30 Days",
|
"name": "Last 30 Days",
|
||||||
"shortDesc": "Research what people actually say about any topic in the last 30 days across Reddit, X, YouTube, HN and more"
|
"shortDesc": "Research what people actually say about any topic in the last 30 days across Reddit, X, YouTube, HN and more. Requires Python and the selected source tools; paid APIs, accounts and optional browser sessions need separate setup and authorization."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -36,6 +36,6 @@
|
|||||||
"repoUrl": "https://github.com/mvanhorn/last30days-skill.git",
|
"repoUrl": "https://github.com/mvanhorn/last30days-skill.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"path": "skills/last30days",
|
"path": "skills/last30days",
|
||||||
"ref": "a218edadbc3361672f5e5e2cd72a8212b0b3fbb8"
|
"ref": "5103ba478b380552207a3754b74c7655d64208cd"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Marketing Skills",
|
"name": "Marketing Skills",
|
||||||
"summary": "Marketing skills for technical marketers and founders — CRO, copywriting, SEO, analytics and growth engineering, for Claude Code and Cursor"
|
"summary": "Marketing skills for technical marketers and founders — CRO, copywriting, SEO, analytics and growth engineering, for Claude Code and Cursor. Third-party marketing, advertising and analytics tools require separate accounts, authorization and billing."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Marketing Skills",
|
"name": "Marketing Skills",
|
||||||
"summary": "面向技术型营销人与创始人的 AI Agent 技能集,涵盖转化率优化、文案、SEO、数据分析与增长工程,适配 Claude Code、Cursor 等"
|
"summary": "面向技术型营销人与创始人的 AI Agent 技能集,涵盖转化率优化、文案、SEO、数据分析与增长工程,适配 Claude Code、Cursor 等。第三方营销、广告与分析工具需自行开通;账号、授权和费用另计。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "business",
|
"category": "business",
|
||||||
@@ -32,33 +32,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-07T15:54:03Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/coreyhaines31/marketingskills.git",
|
"url": "https://github.com/coreyhaines31/marketingskills.git",
|
||||||
"ref": "7868cb9251fad80a73d26e488a5ad5f6c4a9f335"
|
"ref": "dda3841f0b294e01e93b1541486beefbfab0915e"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -70,13 +74,19 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Optional advertising, analytics, email, CRM and image/video integrations require the operator's own separately licensed services, accounts, access permissions and billing. The skills supply guidance, not those products; request missing evidence or report unavailable integrations before external calls."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
"collection": {
|
"collection": {
|
||||||
"role": "parent",
|
"role": "parent",
|
||||||
"childCount": 49,
|
"childCount": 50,
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
@@ -390,11 +400,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "competitors",
|
"name": "competitors",
|
||||||
"summary": "When the user wants to create competitor comparison or alternative pages for SEO and sales enablement."
|
"summary": "When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "competitors",
|
"name": "competitors",
|
||||||
"summary": "When the user wants to create competitor comparison or alternative pages for SEO and sales enablement."
|
"summary": "When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -465,11 +475,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "copywriting",
|
"name": "copywriting",
|
||||||
"summary": "When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
"summary": "When the user wants to write, rewrite, or improve marketing copy for any page, including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "copywriting",
|
"name": "copywriting",
|
||||||
"summary": "When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
"summary": "When the user wants to write, rewrite, or improve marketing copy for any page, including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -578,6 +588,31 @@
|
|||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"identity": {
|
||||||
|
"kind": "skill",
|
||||||
|
"id": "events",
|
||||||
|
"parentId": "marketingskills"
|
||||||
|
},
|
||||||
|
"path": "skills/events",
|
||||||
|
"presentation": {
|
||||||
|
"defaultLocale": "en-US",
|
||||||
|
"i18n": {
|
||||||
|
"en-US": {
|
||||||
|
"name": "events",
|
||||||
|
"summary": "Plan online or in-person marketing events, including goals, budget, promotion, execution and follow-up."
|
||||||
|
},
|
||||||
|
"zh-CN": {
|
||||||
|
"name": "events",
|
||||||
|
"summary": "规划线上或线下营销活动,包括目标、预算、推广、执行与会后跟进。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"state": "unknown"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -1240,11 +1275,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "sms",
|
"name": "sms",
|
||||||
"summary": "When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends…"
|
"summary": "When the user wants to plan, build, or optimize SMS, MMS, or WhatsApp marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promot…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "sms",
|
"name": "sms",
|
||||||
"summary": "When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends…"
|
"summary": "When the user wants to plan, build, or optimize SMS, MMS, or WhatsApp marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promot…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -1265,11 +1300,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "social",
|
"name": "social",
|
||||||
"summary": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms, or w…"
|
"summary": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "social",
|
"name": "social",
|
||||||
"summary": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms, or w…"
|
"summary": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
|
|||||||
12
skills/marketingskills/collection-child-overrides.json
Normal file
12
skills/marketingskills/collection-child-overrides.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"events": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "规划线上或线下营销活动,包括目标、预算、推广、执行与会后跟进。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Plan online or in-person marketing events, including goals, budget, promotion, execution and follow-up."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,11 +13,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Marketing Skills",
|
"name": "Marketing Skills",
|
||||||
"shortDesc": "面向技术型营销人与创始人的 AI Agent 技能集,涵盖转化率优化、文案、SEO、数据分析与增长工程,适配 Claude Code、Cursor 等"
|
"shortDesc": "面向技术型营销人与创始人的 AI Agent 技能集,涵盖转化率优化、文案、SEO、数据分析与增长工程,适配 Claude Code、Cursor 等。第三方营销、广告与分析工具需自行开通;账号、授权和费用另计。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Marketing Skills",
|
"name": "Marketing Skills",
|
||||||
"shortDesc": "Marketing skills for technical marketers and founders — CRO, copywriting, SEO, analytics and growth engineering, for Claude Code and Cursor"
|
"shortDesc": "Marketing skills for technical marketers and founders — CRO, copywriting, SEO, analytics and growth engineering, for Claude Code and Cursor. Third-party marketing, advertising and analytics tools require separate accounts, authorization and billing."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/coreyhaines31/marketingskills.git",
|
"repoUrl": "https://github.com/coreyhaines31/marketingskills.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "7868cb9251fad80a73d26e488a5ad5f6c4a9f335"
|
"ref": "dda3841f0b294e01e93b1541486beefbfab0915e"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
@@ -185,10 +185,10 @@
|
|||||||
"path": "skills/competitors",
|
"path": "skills/competitors",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "When the user wants to create competitor comparison or alternative pages for SEO and sales enablement."
|
"shortDesc": "When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "When the user wants to create competitor comparison or alternative pages for SEO and sales enablement."
|
"shortDesc": "When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -221,10 +221,10 @@
|
|||||||
"path": "skills/copywriting",
|
"path": "skills/copywriting",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
"shortDesc": "When the user wants to write, rewrite, or improve marketing copy for any page, including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
"shortDesc": "When the user wants to write, rewrite, or improve marketing copy for any page, including homepage, landing pages, pricing pages, feature pages, about pages, or…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -276,6 +276,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "events",
|
||||||
|
"path": "skills/events",
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "规划线上或线下营销活动,包括目标、预算、推广、执行与会后跟进。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Plan online or in-person marketing events, including goals, budget, promotion, execution and follow-up."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "free-tools",
|
"id": "free-tools",
|
||||||
"path": "skills/free-tools",
|
"path": "skills/free-tools",
|
||||||
@@ -593,10 +605,10 @@
|
|||||||
"path": "skills/sms",
|
"path": "skills/sms",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends…"
|
"shortDesc": "When the user wants to plan, build, or optimize SMS, MMS, or WhatsApp marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promot…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promotional sends…"
|
"shortDesc": "When the user wants to plan, build, or optimize SMS, MMS, or WhatsApp marketing — including welcome flows, abandoned cart texts, post-purchase, win-back, promot…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -605,10 +617,10 @@
|
|||||||
"path": "skills/social",
|
"path": "skills/social",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms, or w…"
|
"shortDesc": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms, or w…"
|
"shortDesc": "When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Matt Pocock Skills",
|
"name": "Matt Pocock Skills",
|
||||||
"summary": "Matt Pocock's collection of small, composable engineering skills for real application development across any model"
|
"summary": "Matt Pocock's collection of small, composable engineering skills for real application development across any model. Some workflows require host subagents, Git and a separately authorized issue tracker."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Matt Pocock Skills",
|
"name": "Matt Pocock Skills",
|
||||||
"summary": "Matt Pocock 的真实工程 AI Skill 合集,小巧、易改、可组合,适配任意模型做实际开发而非 vibe coding"
|
"summary": "Matt Pocock 的真实工程 AI Skill 合集,小巧、易改、可组合,适配任意模型做实际开发而非 vibe coding。部分流程需要宿主支持子 Agent、Git 和另行授权的任务跟踪工具。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "development",
|
"category": "development",
|
||||||
@@ -30,30 +30,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/mattpocock/skills.git"
|
"url": "https://github.com/mattpocock/skills.git",
|
||||||
|
"ref": "24fe0ef7737efae15c87225755e9f6f5965e4888"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -65,13 +72,23 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "The implement-spec workflow requires host support for subagents and Git worktrees/branches. Other workflows use the issue tracker selected by the operator (GitHub, Linear or local files). No tracker account or host capability is provided by this listing."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "The operator authorizes access and writes to the chosen issue tracker. Manual-only upstream skills retain their explicit invocation requirement; stop and explain when a required host capability is unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
"collection": {
|
"collection": {
|
||||||
"role": "parent",
|
"role": "parent",
|
||||||
"childCount": 35,
|
"childCount": 37,
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
@@ -110,11 +127,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "code-review",
|
"name": "code-review",
|
||||||
"summary": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding stand…"
|
"summary": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standa…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "code-review",
|
"name": "code-review",
|
||||||
"summary": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding stand…"
|
"summary": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standa…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -248,6 +265,31 @@
|
|||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"identity": {
|
||||||
|
"kind": "skill",
|
||||||
|
"id": "implement-spec",
|
||||||
|
"parentId": "mattpocock-skills"
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/implement-spec",
|
||||||
|
"presentation": {
|
||||||
|
"defaultLocale": "en-US",
|
||||||
|
"i18n": {
|
||||||
|
"en-US": {
|
||||||
|
"name": "implement-spec",
|
||||||
|
"summary": "Implement a specification and its task graph; requires host subagents, Git branches and the chosen issue tracker."
|
||||||
|
},
|
||||||
|
"zh-CN": {
|
||||||
|
"name": "implement-spec",
|
||||||
|
"summary": "按规格和任务依赖图实现功能;需要宿主支持子 Agent、Git 分支及所选任务跟踪工具。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"state": "unknown"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -273,6 +315,31 @@
|
|||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"identity": {
|
||||||
|
"kind": "skill",
|
||||||
|
"id": "pr",
|
||||||
|
"parentId": "mattpocock-skills"
|
||||||
|
},
|
||||||
|
"path": "skills/engineering/pr",
|
||||||
|
"presentation": {
|
||||||
|
"defaultLocale": "en-US",
|
||||||
|
"i18n": {
|
||||||
|
"en-US": {
|
||||||
|
"name": "pr",
|
||||||
|
"summary": "Write pull request descriptions covering changes, validation evidence and merge impact."
|
||||||
|
},
|
||||||
|
"zh-CN": {
|
||||||
|
"name": "pr",
|
||||||
|
"summary": "为拉取请求撰写说明,交代修改内容、验证证据和合并影响。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"state": "unknown"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -326,20 +393,20 @@
|
|||||||
{
|
{
|
||||||
"identity": {
|
"identity": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
"id": "resolving-merge-conflicts",
|
"id": "retro",
|
||||||
"parentId": "mattpocock-skills"
|
"parentId": "mattpocock-skills"
|
||||||
},
|
},
|
||||||
"path": "skills/engineering/resolving-merge-conflicts",
|
"path": "skills/engineering/retro",
|
||||||
"presentation": {
|
"presentation": {
|
||||||
"defaultLocale": "en-US",
|
"defaultLocale": "en-US",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "resolving-merge-conflicts",
|
"name": "retro",
|
||||||
"summary": "Use when you need to resolve an in-progress git merge/rebase conflict."
|
"summary": "Review a coding session using logs and existing checks to improve the development environment and working rules."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "resolving-merge-conflicts",
|
"name": "retro",
|
||||||
"summary": "Use when you need to resolve an in-progress git merge/rebase conflict."
|
"summary": "回顾编程会话,依据日志与现有检查改进开发环境和工作规则。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -360,11 +427,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "setup-matt-pocock-skills",
|
"name": "setup-matt-pocock-skills",
|
||||||
"summary": "Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout."
|
"summary": "Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "setup-matt-pocock-skills",
|
"name": "setup-matt-pocock-skills",
|
||||||
"summary": "Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout."
|
"summary": "Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -410,11 +477,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "to-spec",
|
"name": "to-spec",
|
||||||
"summary": "Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed."
|
"summary": "Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "to-spec",
|
"name": "to-spec",
|
||||||
"summary": "Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed."
|
"summary": "Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -435,11 +502,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "to-tickets",
|
"name": "to-tickets",
|
||||||
"summary": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — ed…"
|
"summary": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edg…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "to-tickets",
|
"name": "to-tickets",
|
||||||
"summary": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — ed…"
|
"summary": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edg…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -460,11 +527,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "triage",
|
"name": "triage",
|
||||||
"summary": "Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs."
|
"summary": "Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "triage",
|
"name": "triage",
|
||||||
"summary": "Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs."
|
"summary": "Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -485,11 +552,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "wayfinder",
|
"name": "wayfinder",
|
||||||
"summary": "Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time unt…"
|
"summary": "Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "wayfinder",
|
"name": "wayfinder",
|
||||||
"summary": "Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time unt…"
|
"summary": "Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -585,11 +652,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "setup-ts-deep-modules",
|
"name": "setup-ts-deep-modules",
|
||||||
"summary": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point fi…"
|
"summary": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module, with implementation hidden in subfolders and reachable only through its entry-p…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "setup-ts-deep-modules",
|
"name": "setup-ts-deep-modules",
|
||||||
"summary": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point fi…"
|
"summary": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module, with implementation hidden in subfolders and reachable only through its entry-p…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -610,11 +677,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "writing-beats",
|
"name": "writing-beats",
|
||||||
"summary": "Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
"summary": "Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "writing-beats",
|
"name": "writing-beats",
|
||||||
"summary": "Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
"summary": "Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -635,11 +702,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "writing-fragments",
|
"name": "writing-fragments",
|
||||||
"summary": "Writing, explore — mine raw fragments, no structure yet."
|
"summary": "Writing, explore: mine raw fragments, no structure yet."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "writing-fragments",
|
"name": "writing-fragments",
|
||||||
"summary": "Writing, explore — mine raw fragments, no structure yet."
|
"summary": "Writing, explore: mine raw fragments, no structure yet."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -660,11 +727,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "writing-shape",
|
"name": "writing-shape",
|
||||||
"summary": "Writing, exploit — shape raw material into an article, paragraph by paragraph."
|
"summary": "Writing, exploit: shape raw material into an article, paragraph by paragraph."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "writing-shape",
|
"name": "writing-shape",
|
||||||
"summary": "Writing, exploit — shape raw material into an article, paragraph by paragraph."
|
"summary": "Writing, exploit: shape raw material into an article, paragraph by paragraph."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
|
|||||||
32
skills/mattpocock-skills/collection-child-overrides.json
Normal file
32
skills/mattpocock-skills/collection-child-overrides.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"implement-spec": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "按规格和任务依赖图实现功能;需要宿主支持子 Agent、Git 分支及所选任务跟踪工具。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Implement a specification and its task graph; requires host subagents, Git branches and the chosen issue tracker."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pr": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "为拉取请求撰写说明,交代修改内容、验证证据和合并影响。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Write pull request descriptions covering changes, validation evidence and merge impact."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"retro": {
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "回顾编程会话,依据日志与现有检查改进开发环境和工作规则。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Review a coding session using logs and existing checks to improve the development environment and working rules."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,11 +11,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Matt Pocock Skills",
|
"name": "Matt Pocock Skills",
|
||||||
"shortDesc": "Matt Pocock 的真实工程 AI Skill 合集,小巧、易改、可组合,适配任意模型做实际开发而非 vibe coding"
|
"shortDesc": "Matt Pocock 的真实工程 AI Skill 合集,小巧、易改、可组合,适配任意模型做实际开发而非 vibe coding。部分流程需要宿主支持子 Agent、Git 和另行授权的任务跟踪工具。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Matt Pocock Skills",
|
"name": "Matt Pocock Skills",
|
||||||
"shortDesc": "Matt Pocock's collection of small, composable engineering skills for real application development across any model"
|
"shortDesc": "Matt Pocock's collection of small, composable engineering skills for real application development across any model. Some workflows require host subagents, Git and a separately authorized issue tracker."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -30,7 +30,8 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/mattpocock/skills.git",
|
"repoUrl": "https://github.com/mattpocock/skills.git",
|
||||||
"repoBranch": "main"
|
"repoBranch": "main",
|
||||||
|
"ref": "24fe0ef7737efae15c87225755e9f6f5965e4888"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
@@ -50,10 +51,10 @@
|
|||||||
"path": "skills/engineering/code-review",
|
"path": "skills/engineering/code-review",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding stand…"
|
"shortDesc": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standa…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding stand…"
|
"shortDesc": "Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standa…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -117,6 +118,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "implement-spec",
|
||||||
|
"path": "skills/engineering/implement-spec",
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "按规格和任务依赖图实现功能;需要宿主支持子 Agent、Git 分支及所选任务跟踪工具。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Implement a specification and its task graph; requires host subagents, Git branches and the chosen issue tracker."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "improve-codebase-architecture",
|
"id": "improve-codebase-architecture",
|
||||||
"path": "skills/engineering/improve-codebase-architecture",
|
"path": "skills/engineering/improve-codebase-architecture",
|
||||||
@@ -129,6 +142,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "pr",
|
||||||
|
"path": "skills/engineering/pr",
|
||||||
|
"i18n": {
|
||||||
|
"zh-CN": {
|
||||||
|
"shortDesc": "为拉取请求撰写说明,交代修改内容、验证证据和合并影响。"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"shortDesc": "Write pull request descriptions covering changes, validation evidence and merge impact."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "prototype",
|
"id": "prototype",
|
||||||
"path": "skills/engineering/prototype",
|
"path": "skills/engineering/prototype",
|
||||||
@@ -154,14 +179,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "resolving-merge-conflicts",
|
"id": "retro",
|
||||||
"path": "skills/engineering/resolving-merge-conflicts",
|
"path": "skills/engineering/retro",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Use when you need to resolve an in-progress git merge/rebase conflict."
|
"shortDesc": "回顾编程会话,依据日志与现有检查改进开发环境和工作规则。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Use when you need to resolve an in-progress git merge/rebase conflict."
|
"shortDesc": "Review a coding session using logs and existing checks to improve the development environment and working rules."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -170,10 +195,10 @@
|
|||||||
"path": "skills/engineering/setup-matt-pocock-skills",
|
"path": "skills/engineering/setup-matt-pocock-skills",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout."
|
"shortDesc": "Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout."
|
"shortDesc": "Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -194,10 +219,10 @@
|
|||||||
"path": "skills/engineering/to-spec",
|
"path": "skills/engineering/to-spec",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed."
|
"shortDesc": "Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed."
|
"shortDesc": "Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -206,10 +231,10 @@
|
|||||||
"path": "skills/engineering/to-tickets",
|
"path": "skills/engineering/to-tickets",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — ed…"
|
"shortDesc": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edg…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — ed…"
|
"shortDesc": "Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker (edg…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -218,10 +243,10 @@
|
|||||||
"path": "skills/engineering/triage",
|
"path": "skills/engineering/triage",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs."
|
"shortDesc": "Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs."
|
"shortDesc": "Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -230,10 +255,10 @@
|
|||||||
"path": "skills/engineering/wayfinder",
|
"path": "skills/engineering/wayfinder",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time unt…"
|
"shortDesc": "Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time unt…"
|
"shortDesc": "Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -278,10 +303,10 @@
|
|||||||
"path": "skills/in-progress/setup-ts-deep-modules",
|
"path": "skills/in-progress/setup-ts-deep-modules",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point fi…"
|
"shortDesc": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module, with implementation hidden in subfolders and reachable only through its entry-p…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point fi…"
|
"shortDesc": "Wire dependency-cruiser into a TypeScript repo so each package is a deep module, with implementation hidden in subfolders and reachable only through its entry-p…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -290,10 +315,10 @@
|
|||||||
"path": "skills/in-progress/writing-beats",
|
"path": "skills/in-progress/writing-beats",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
"shortDesc": "Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
"shortDesc": "Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -302,10 +327,10 @@
|
|||||||
"path": "skills/in-progress/writing-fragments",
|
"path": "skills/in-progress/writing-fragments",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Writing, explore — mine raw fragments, no structure yet."
|
"shortDesc": "Writing, explore: mine raw fragments, no structure yet."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Writing, explore — mine raw fragments, no structure yet."
|
"shortDesc": "Writing, explore: mine raw fragments, no structure yet."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -314,10 +339,10 @@
|
|||||||
"path": "skills/in-progress/writing-shape",
|
"path": "skills/in-progress/writing-shape",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "Writing, exploit — shape raw material into an article, paragraph by paragraph."
|
"shortDesc": "Writing, exploit: shape raw material into an article, paragraph by paragraph."
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "Writing, exploit — shape raw material into an article, paragraph by paragraph."
|
"shortDesc": "Writing, exploit: shape raw material into an article, paragraph by paragraph."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Meituan Paotui Client",
|
"name": "Meituan Paotui Client",
|
||||||
"summary": "Meituan Paotui ordering assistant for pickup-delivery, errands and shopping, with address search and two-step cost confirmation"
|
"summary": "Meituan Paotui ordering assistant for pickup-delivery, errands and shopping, with address search and two-step cost confirmation. Requires a Meituan account and the upstream authorization tool; real orders and delivery charges require user confirmation."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "美团跑腿下单助手",
|
"name": "美团跑腿下单助手",
|
||||||
"summary": "美团跑腿下单助手:帮取送、帮忙(取号/搬装)、帮买全流程下单,含地址搜索与两步费用确认"
|
"summary": "美团跑腿下单助手:帮取送、帮忙(取号/搬装)、帮买全流程下单,含地址搜索与两步费用确认。需美团账号与上游授权工具;真实订单和配送费用须由用户确认。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "business",
|
"category": "business",
|
||||||
@@ -28,26 +28,28 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-19T06:37:19Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-06-28T13:06:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/meituan/MT-Paotui-For-Client.git",
|
"url": "https://github.com/meituan/MT-Paotui-For-Client.git",
|
||||||
"ref": "dc5cc223a010c2fe4377088affc2fbe4c6c6473d"
|
"ref": "05ead232ae2b94b9b55b2a1e126e039a1cb6db00"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
@@ -66,7 +68,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "The upstream pt-passport authorization tool and the runtime prerequisites of the included order scripts. The operator separately authorizes installation and their own Meituan account."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Meituan delivery/order services and fees are separate from the skill. Preview the actual order and fees, obtain explicit user confirmation, and stop before submission if authorization, required details or the service are unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "美团跑腿下单助手",
|
"name": "美团跑腿下单助手",
|
||||||
"shortDesc": "美团跑腿下单助手:帮取送、帮忙(取号/搬装)、帮买全流程下单,含地址搜索与两步费用确认"
|
"shortDesc": "美团跑腿下单助手:帮取送、帮忙(取号/搬装)、帮买全流程下单,含地址搜索与两步费用确认。需美团账号与上游授权工具;真实订单和配送费用须由用户确认。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Meituan Paotui Client",
|
"name": "Meituan Paotui Client",
|
||||||
"shortDesc": "Meituan Paotui ordering assistant for pickup-delivery, errands and shopping, with address search and two-step cost confirmation"
|
"shortDesc": "Meituan Paotui ordering assistant for pickup-delivery, errands and shopping, with address search and two-step cost confirmation. Requires a Meituan account and the upstream authorization tool; real orders and delivery charges require user confirmation."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -29,6 +29,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/meituan/MT-Paotui-For-Client.git",
|
"repoUrl": "https://github.com/meituan/MT-Paotui-For-Client.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "dc5cc223a010c2fe4377088affc2fbe4c6c6473d"
|
"ref": "05ead232ae2b94b9b55b2a1e126e039a1cb6db00"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,33 +32,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T10:14:38Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T10:14:38Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/alchaincyf/nuwa-skill.git",
|
"url": "https://github.com/alchaincyf/nuwa-skill.git",
|
||||||
"ref": "27642f5bfed2dc1bbf8ee59a2c1ee602a626bbd7"
|
"ref": "fe0374687037c4cc51a65c1e0c145afe2981dc69"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
|
|||||||
@@ -27,6 +27,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/alchaincyf/nuwa-skill.git",
|
"repoUrl": "https://github.com/alchaincyf/nuwa-skill.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "27642f5bfed2dc1bbf8ee59a2c1ee602a626bbd7"
|
"ref": "fe0374687037c4cc51a65c1e0c145afe2981dc69"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,19 +30,21 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-30T18:00:09Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -50,14 +52,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/Leonxlnx/taste-skill.git",
|
"url": "https://github.com/Leonxlnx/taste-skill.git",
|
||||||
"path": "skills/taste-skill",
|
"path": "skills/taste-skill",
|
||||||
"ref": "ccbc15639c97057cbfcf32ecebc38ef716e4bb37"
|
"ref": "ce26fc25c0e5e8cab638f883de62d9a86ee5e45b"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
|
|||||||
@@ -32,6 +32,6 @@
|
|||||||
"repoUrl": "https://github.com/Leonxlnx/taste-skill.git",
|
"repoUrl": "https://github.com/Leonxlnx/taste-skill.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"path": "skills/taste-skill",
|
"path": "skills/taste-skill",
|
||||||
"ref": "ccbc15639c97057cbfcf32ecebc38ef716e4bb37"
|
"ref": "ce26fc25c0e5e8cab638f883de62d9a86ee5e45b"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Watchless",
|
"name": "Watchless",
|
||||||
"summary": "Turns a video into a complete keyframe-led visual document with faithful transcript-based notes, exported as HTML, PDF or a shareable ZIP"
|
"summary": "Turns a video into a complete keyframe-led visual document with faithful transcript-based notes, exported as HTML, PDF or a shareable ZIP. Defaults to Tencent Cloud ASR, with separate account authorization and billing; configure Python, ffmpeg and other prerequisites separately."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Watchless",
|
"name": "Watchless",
|
||||||
"summary": "把视频转成以关键帧截图为主线的完整视觉文档:转写为事实来源、截图保留画面证据,输出 HTML/PDF/ZIP,读者无需再看原视频"
|
"summary": "把视频转成以关键帧截图为主线的完整视觉文档:转写为事实来源、截图保留画面证据,输出 HTML/PDF/ZIP,读者无需再看原视频。默认使用腾讯云 ASR,需自行开通账号、授权与计费;Python、ffmpeg 等运行依赖另行配置。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "media",
|
"category": "media",
|
||||||
@@ -31,33 +31,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-19T11:19:33Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-07-19T11:19:33Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/chenzixin1/watchless.git",
|
"url": "https://github.com/chenzixin1/watchless.git",
|
||||||
"ref": "a09c0edc6c3121c05e9824ef556256441d291d4f"
|
"ref": "34e2fa861a2e31bb4197e9e0a7b8d90e76ebeb6b"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -69,7 +73,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "The operator configures the Python environment, ffmpeg and other upstream video-processing dependencies."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Tencent Cloud ASR is the default cloud transcription provider; its account, credentials, service authorization and fees are separate. Other providers require explicit selection. Obtain permission before transferring non-public audio; use an explicitly requested local option or stop if authorization is unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -12,11 +12,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "Watchless",
|
"name": "Watchless",
|
||||||
"shortDesc": "把视频转成以关键帧截图为主线的完整视觉文档:转写为事实来源、截图保留画面证据,输出 HTML/PDF/ZIP,读者无需再看原视频"
|
"shortDesc": "把视频转成以关键帧截图为主线的完整视觉文档:转写为事实来源、截图保留画面证据,输出 HTML/PDF/ZIP,读者无需再看原视频。默认使用腾讯云 ASR,需自行开通账号、授权与计费;Python、ffmpeg 等运行依赖另行配置。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "Watchless",
|
"name": "Watchless",
|
||||||
"shortDesc": "Turns a video into a complete keyframe-led visual document with faithful transcript-based notes, exported as HTML, PDF or a shareable ZIP"
|
"shortDesc": "Turns a video into a complete keyframe-led visual document with faithful transcript-based notes, exported as HTML, PDF or a shareable ZIP. Defaults to Tencent Cloud ASR, with separate account authorization and billing; configure Python, ffmpeg and other prerequisites separately."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -32,6 +32,6 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/chenzixin1/watchless.git",
|
"repoUrl": "https://github.com/chenzixin1/watchless.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "a09c0edc6c3121c05e9824ef556256441d291d4f"
|
"ref": "34e2fa861a2e31bb4197e9e0a7b8d90e76ebeb6b"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "WeChat Pay Skills",
|
"name": "WeChat Pay Skills",
|
||||||
"summary": "Official WeChat Pay integration skills: product selection, sample code, integration quality review and troubleshooting"
|
"summary": "Official WeChat Pay integration skills: product selection, sample code, integration quality review and troubleshooting. Live transaction queries require the operator's own WeChat Pay merchant authorization and credentials."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "微信支付 Skills",
|
"name": "微信支付 Skills",
|
||||||
"summary": "微信支付官方接入技能包:产品选型、官方示例代码、接入质量评估与答疑排障"
|
"summary": "微信支付官方接入技能包:产品选型、官方示例代码、接入质量评估与答疑排障。实际查单需要用户自己的微信支付商户授权和凭据。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "business",
|
"category": "business",
|
||||||
@@ -24,25 +24,27 @@
|
|||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"version": "1.0",
|
"version": "1.2",
|
||||||
"versionScheme": "opaque"
|
"versionScheme": "opaque"
|
||||||
},
|
},
|
||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-06-28T13:06:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
@@ -50,14 +52,16 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/wechatpay-apiv3/wechatpay-skills.git",
|
"url": "https://github.com/wechatpay-apiv3/wechatpay-skills.git",
|
||||||
"path": "wechatpay-payment-integration",
|
"path": "wechatpay-payment-integration",
|
||||||
"ref": "8573bdc38b86fa67a42acfc422d6b4dbca4ada21"
|
"ref": "9df6ba49f6f394f47ca1ee68bf9517d000b2c9d9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "partner",
|
"stewardship": "partner",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE.md"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -69,7 +73,13 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "Official document lookup is distinct from live merchant API calls. Live payment/refund queries require the operator's own authorized WeChat Pay merchant account and protected API credentials; service terms and charges remain separate. Never send a live request when authorization or credentials are unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill"
|
"kind": "skill"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "wechatpay-skills",
|
"id": "wechatpay-skills",
|
||||||
"latestVersion": "1.0",
|
"latestVersion": "1.2",
|
||||||
"name": "WeChat Pay Skills",
|
"name": "WeChat Pay Skills",
|
||||||
"category": "business",
|
"category": "business",
|
||||||
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M4 10h16m-8 4h4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><circle cx=\"8\" cy=\"14\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
|
"icon": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"4\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\" stroke=\"#2563EB\" stroke-width=\"1.7\"/><path d=\"M4 10h16m-8 4h4\" stroke=\"#2563EB\" stroke-width=\"1.7\" stroke-linecap=\"round\"/><circle cx=\"8\" cy=\"14\" r=\"1.5\" fill=\"#2563EB\"/></svg>",
|
||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "微信支付 Skills",
|
"name": "微信支付 Skills",
|
||||||
"shortDesc": "微信支付官方接入技能包:产品选型、官方示例代码、接入质量评估与答疑排障"
|
"shortDesc": "微信支付官方接入技能包:产品选型、官方示例代码、接入质量评估与答疑排障。实际查单需要用户自己的微信支付商户授权和凭据。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "WeChat Pay Skills",
|
"name": "WeChat Pay Skills",
|
||||||
"shortDesc": "Official WeChat Pay integration skills: product selection, sample code, integration quality review and troubleshooting"
|
"shortDesc": "Official WeChat Pay integration skills: product selection, sample code, integration quality review and troubleshooting. Live transaction queries require the operator's own WeChat Pay merchant authorization and credentials."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -31,6 +31,6 @@
|
|||||||
"repoUrl": "https://github.com/wechatpay-apiv3/wechatpay-skills.git",
|
"repoUrl": "https://github.com/wechatpay-apiv3/wechatpay-skills.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"path": "wechatpay-payment-integration",
|
"path": "wechatpay-payment-integration",
|
||||||
"ref": "8573bdc38b86fa67a42acfc422d6b4dbca4ada21"
|
"ref": "9df6ba49f6f394f47ca1ee68bf9517d000b2c9d9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "WeCom CLI",
|
"name": "WeCom CLI",
|
||||||
"summary": "Official WeCom (Enterprise WeChat) CLI for humans and AI agents to operate docs, smart sheets and messaging in the terminal"
|
"summary": "Official WeCom (Enterprise WeChat) CLI for humans and AI agents to operate docs, smart sheets and messaging in the terminal. Requires separately installed wecom-cli 1.2.1+ and account authorization; document/sheet generation needs additional Python dependencies."
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "企业微信 CLI",
|
"name": "企业微信 CLI",
|
||||||
"summary": "企业微信官方命令行工具,让人与 AI Agent 在终端操作企业微信文档、智能表格、消息等核心业务"
|
"summary": "企业微信官方命令行工具,让人与 AI Agent 在终端操作企业微信文档、智能表格、消息等核心业务。需自行安装 wecom-cli 1.2.1 及以上版本并授权;文档和表格生成另需 Python 依赖。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"category": "communication",
|
"category": "communication",
|
||||||
@@ -28,33 +28,37 @@
|
|||||||
"timestamps": {
|
"timestamps": {
|
||||||
"catalogUpdatedAt": {
|
"catalogUpdatedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-09T08:25:20Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"releasePublishedAt": {
|
"releasePublishedAt": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
},
|
},
|
||||||
"reviewedAt": {
|
"reviewedAt": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "2026-10-05",
|
||||||
|
"precision": "day"
|
||||||
},
|
},
|
||||||
"upstreamObservedAt": {
|
"upstreamObservedAt": {
|
||||||
"state": "known",
|
"state": "known",
|
||||||
"value": "2026-08-25T10:23:42Z",
|
"value": "2026-10-05",
|
||||||
"precision": "second"
|
"precision": "day"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"provenance": {
|
"provenance": {
|
||||||
"content": {
|
"content": {
|
||||||
"kind": "git",
|
"kind": "git",
|
||||||
"url": "https://github.com/WecomTeam/wecom-cli.git",
|
"url": "https://github.com/WecomTeam/wecom-cli.git",
|
||||||
"ref": "78c514b2afee7c0d3d7be715628478421f37ee63"
|
"ref": "c4b9b6610c7ca2854441bfa336a5b458daeeb707"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"governance": {
|
"governance": {
|
||||||
"stewardship": "community",
|
"stewardship": "community",
|
||||||
"availability": "listing-only",
|
"availability": "listing-only",
|
||||||
"license": {
|
"license": {
|
||||||
"state": "unknown"
|
"state": "known",
|
||||||
|
"value": "MIT",
|
||||||
|
"evidencePath": "LICENSE"
|
||||||
},
|
},
|
||||||
"redistribution": "allowed",
|
"redistribution": "allowed",
|
||||||
"upstreamMaintainer": {
|
"upstreamMaintainer": {
|
||||||
@@ -66,7 +70,17 @@
|
|||||||
"compatibility": {
|
"compatibility": {
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"state": "unknown"
|
"state": "unknown"
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
{
|
||||||
|
"kind": "runtime",
|
||||||
|
"value": "A separately installed wecom-cli >= 1.2.1. From-scratch DOCX/XLSX generation additionally requires operator-installed python-docx/openpyxl. DesireCore does not install, license, pay for or operate the CLI or WeCom products."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "permission",
|
||||||
|
"value": "The operator authorizes their own WeCom identity and required product permissions. Tenant entitlements, network readiness and separate service costs govern coverage; stop before calls when prerequisites are unavailable."
|
||||||
}
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
"kind": "skill",
|
"kind": "skill",
|
||||||
@@ -163,11 +177,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "wecomcli-doc",
|
"name": "wecomcli-doc",
|
||||||
"summary": "企微 doc 内容操作技能,包含新建在线文档、导入、读取、追加、覆盖写入等功能。仅当用户明确指定 'doc'、'docx'、'word'、'在线文档'、'office文档',或提供 https://doc.weixin.qq.com/doc/xxx 链接时触发。本技能不处理未指明类型的“文档”请求;凡是“创建文档 /…"
|
"summary": "企业微信在线 doc 文档技能。能够新建 doc、导入本地 .doc/.docx/.txt 为 doc、读取 doc 内容、向 doc 追加或覆盖写入。仅当用户明确出现「doc」「docx」「word」「在线文档」「office 文档」等强类型词,或提供 https://doc.weixin.qq.com/doc/xx…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "wecomcli-doc",
|
"name": "wecomcli-doc",
|
||||||
"summary": "企微 doc 内容操作技能,包含新建在线文档、导入、读取、追加、覆盖写入等功能。仅当用户明确指定 'doc'、'docx'、'word'、'在线文档'、'office文档',或提供 https://doc.weixin.qq.com/doc/xxx 链接时触发。本技能不处理未指明类型的“文档”请求;凡是“创建文档 /…"
|
"summary": "企业微信在线 doc 文档技能。能够新建 doc、导入本地 .doc/.docx/.txt 为 doc、读取 doc 内容、向 doc 追加或覆盖写入。仅当用户明确出现「doc」「docx」「word」「在线文档」「office 文档」等强类型词,或提供 https://doc.weixin.qq.com/doc/xx…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -317,11 +331,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "wecomcli-shared",
|
"name": "wecomcli-shared",
|
||||||
"summary": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.1.0,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定义所…"
|
"summary": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能首次准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.2.1,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "wecomcli-shared",
|
"name": "wecomcli-shared",
|
||||||
"summary": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.1.0,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定义所…"
|
"summary": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能首次准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.2.1,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
@@ -367,11 +381,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "wecomcli-smartpage",
|
"name": "wecomcli-smartpage",
|
||||||
"summary": "使用 wecom-cli 创建企业微信智能文档,读取页面内容,调整页面树结构,获取内置智能表格信息。适用于用户明确提到企业微信智能文档、智能主页、smartpage,或提供形如 https://doc.weixin.qq.com/smartpage/xxx 或 https://page.weixin.qq.com/sm…"
|
"summary": "企业微信智能文档(smartpage)操作技能。能够新建文档、导入 .md 为文档、读取文档内容、修改文档内容(整页重写、局部编辑、增删子页面)、上传附件到文档,以及搭建带看板/图表的数据系统页面和信息收集表单页面。当用户提及文档,智能文档,智能主页、提供 https://doc.weixin.qq.com/smart…"
|
||||||
},
|
},
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "wecomcli-smartpage",
|
"name": "wecomcli-smartpage",
|
||||||
"summary": "使用 wecom-cli 创建企业微信智能文档,读取页面内容,调整页面树结构,获取内置智能表格信息。适用于用户明确提到企业微信智能文档、智能主页、smartpage,或提供形如 https://doc.weixin.qq.com/smartpage/xxx 或 https://page.weixin.qq.com/sm…"
|
"summary": "企业微信智能文档(smartpage)操作技能。能够新建文档、导入 .md 为文档、读取文档内容、修改文档内容(整页重写、局部编辑、增删子页面)、上传附件到文档,以及搭建带看板/图表的数据系统页面和信息收集表单页面。当用户提及文档,智能文档,智能主页、提供 https://doc.weixin.qq.com/smart…"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": []
|
"tags": []
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"name": "企业微信 CLI",
|
"name": "企业微信 CLI",
|
||||||
"shortDesc": "企业微信官方命令行工具,让人与 AI Agent 在终端操作企业微信文档、智能表格、消息等核心业务"
|
"shortDesc": "企业微信官方命令行工具,让人与 AI Agent 在终端操作企业微信文档、智能表格、消息等核心业务。需自行安装 wecom-cli 1.2.1 及以上版本并授权;文档和表格生成另需 Python 依赖。"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"name": "WeCom CLI",
|
"name": "WeCom CLI",
|
||||||
"shortDesc": "Official WeCom (Enterprise WeChat) CLI for humans and AI agents to operate docs, smart sheets and messaging in the terminal"
|
"shortDesc": "Official WeCom (Enterprise WeChat) CLI for humans and AI agents to operate docs, smart sheets and messaging in the terminal. Requires separately installed wecom-cli 1.2.1+ and account authorization; document/sheet generation needs additional Python dependencies."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"kind": "git",
|
"kind": "git",
|
||||||
"repoUrl": "https://github.com/WecomTeam/wecom-cli.git",
|
"repoUrl": "https://github.com/WecomTeam/wecom-cli.git",
|
||||||
"repoBranch": "main",
|
"repoBranch": "main",
|
||||||
"ref": "78c514b2afee7c0d3d7be715628478421f37ee63"
|
"ref": "c4b9b6610c7ca2854441bfa336a5b458daeeb707"
|
||||||
},
|
},
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
@@ -74,10 +74,10 @@
|
|||||||
"path": "skills/wecomcli-doc",
|
"path": "skills/wecomcli-doc",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "企微 doc 内容操作技能,包含新建在线文档、导入、读取、追加、覆盖写入等功能。仅当用户明确指定 'doc'、'docx'、'word'、'在线文档'、'office文档',或提供 https://doc.weixin.qq.com/doc/xxx 链接时触发。本技能不处理未指明类型的“文档”请求;凡是“创建文档 /…"
|
"shortDesc": "企业微信在线 doc 文档技能。能够新建 doc、导入本地 .doc/.docx/.txt 为 doc、读取 doc 内容、向 doc 追加或覆盖写入。仅当用户明确出现「doc」「docx」「word」「在线文档」「office 文档」等强类型词,或提供 https://doc.weixin.qq.com/doc/xx…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "企微 doc 内容操作技能,包含新建在线文档、导入、读取、追加、覆盖写入等功能。仅当用户明确指定 'doc'、'docx'、'word'、'在线文档'、'office文档',或提供 https://doc.weixin.qq.com/doc/xxx 链接时触发。本技能不处理未指明类型的“文档”请求;凡是“创建文档 /…"
|
"shortDesc": "企业微信在线 doc 文档技能。能够新建 doc、导入本地 .doc/.docx/.txt 为 doc、读取 doc 内容、向 doc 追加或覆盖写入。仅当用户明确出现「doc」「docx」「word」「在线文档」「office 文档」等强类型词,或提供 https://doc.weixin.qq.com/doc/xx…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -148,10 +148,10 @@
|
|||||||
"path": "skills/wecomcli-shared",
|
"path": "skills/wecomcli-shared",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.1.0,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定义所…"
|
"shortDesc": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能首次准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.2.1,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.1.0,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定义所…"
|
"shortDesc": "wecom-cli 业务技能的公共前置检查、获取机器人及授权真人身份,以及通用输出约束。任何 wecomcli-* 技能首次准备执行 wecom-cli 命令前,都必须同时读取本技能,检查 CLI 是否安装、版本是否不低于 1.2.1,以及企业微信凭证是否已授权;仅在缺失、版本过低或未授权时执行安装或初始化。本技能还定…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -172,10 +172,10 @@
|
|||||||
"path": "skills/wecomcli-smartpage",
|
"path": "skills/wecomcli-smartpage",
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"zh-CN": {
|
"zh-CN": {
|
||||||
"shortDesc": "使用 wecom-cli 创建企业微信智能文档,读取页面内容,调整页面树结构,获取内置智能表格信息。适用于用户明确提到企业微信智能文档、智能主页、smartpage,或提供形如 https://doc.weixin.qq.com/smartpage/xxx 或 https://page.weixin.qq.com/sm…"
|
"shortDesc": "企业微信智能文档(smartpage)操作技能。能够新建文档、导入 .md 为文档、读取文档内容、修改文档内容(整页重写、局部编辑、增删子页面)、上传附件到文档,以及搭建带看板/图表的数据系统页面和信息收集表单页面。当用户提及文档,智能文档,智能主页、提供 https://doc.weixin.qq.com/smart…"
|
||||||
},
|
},
|
||||||
"en-US": {
|
"en-US": {
|
||||||
"shortDesc": "使用 wecom-cli 创建企业微信智能文档,读取页面内容,调整页面树结构,获取内置智能表格信息。适用于用户明确提到企业微信智能文档、智能主页、smartpage,或提供形如 https://doc.weixin.qq.com/smartpage/xxx 或 https://page.weixin.qq.com/sm…"
|
"shortDesc": "企业微信智能文档(smartpage)操作技能。能够新建文档、导入 .md 为文档、读取文档内容、修改文档内容(整页重写、局部编辑、增删子页面)、上传附件到文档,以及搭建带看板/图表的数据系统页面和信息收集表单页面。当用户提及文档,智能文档,智能主页、提供 https://doc.weixin.qq.com/smart…"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user