用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/laicluse/agent-fieldkit --skill whats-new命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | whats-new |
| user-invocable | true |
| description | Explicit /whats-new: print latest marketplace or plugin CHANGELOG news without touching broadcast sentinels. |
| disable-model-invocation | true |
| argument-hint | [plugin-name] |
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
node "${CLAUDE_PLUGIN_ROOT}/bin/check-broadcast"
fi
If the command produces output, the laicluse-agent-fieldkit plugin was updated since the last time you saw the broadcast on this machine. Show the output verbatim in a markdown block, prefixed with one short sentence ("laicluse-agent-fieldkit was updated; here is what changed."). Then continue with the rest of this skill.
If the command produces no output, say nothing about updates and proceed.
The helper writes the sentinel only when stdout was non-empty, so a silent
run does not mark the version as seen. In agents that do not set
CLAUDE_PLUGIN_ROOT the broadcast is intentionally skipped; that is the
guard's purpose, not an oversight.
Show the CHANGELOG section of an installed laicluse-agent-fieldkit plugin without touching the post-update broadcast sentinel.
The normal user-facing command is /whats-new. The fully namespaced fallback
is /laicluse-agent-fieldkit:whats-new if another installed plugin ever makes the
bare form ambiguous.
Resolve the install path of the requested plugin via
~/.claude/plugins/installed_plugins.json (canonical source). When the
operator provides a plugin name:
PLUGIN="<arg>"
INSTALL=$(jq -r --arg name "${PLUGIN}@laicluse-agent-fieldkit" \
'.plugins[$name][0].installPath // empty' \
~/.claude/plugins/installed_plugins.json)
if [ -z "$INSTALL" ]; then
echo "Plugin ${PLUGIN}@laicluse-agent-fieldkit is not installed."
exit 0
fi
if [ ! -x "$INSTALL/bin/check-broadcast" ]; then
echo "Plugin ${PLUGIN}@laicluse-agent-fieldkit has no check-broadcast helper; CHANGELOG support not adopted yet."
exit 0
fi
node "$INSTALL/bin/check-broadcast" --force
Place the output verbatim in a markdown block in your response. No summary, no interpretation; the CHANGELOG is canonical.
When there is NO argument, the operator wants the marketplace-wide news, not the per-plugin list. Print the latest section of the marketplace CHANGELOG, then a one-line index of the plugins that ship their own per-plugin CHANGELOG so the operator can drill in.
TOOLS=$(jq -r '.plugins["laicluse-agent-fieldkit@laicluse-agent-fieldkit"][0].installPath // empty' \
~/.claude/plugins/installed_plugins.json)
if [ -z "$TOOLS" ] || [ ! -f "$TOOLS/MARKETPLACE-CHANGELOG.md" ]; then
echo "laicluse-agent-fieldkit@laicluse-agent-fieldkit is not installed or missing MARKETPLACE-CHANGELOG.md."
exit 0
fi
awk '
/^## \[/ { count++; if (count == 2) exit }
count == 1 { print }
' "$TOOLS/MARKETPLACE-CHANGELOG.md"
echo
echo "---"
echo "Per-plugin CHANGELOGs available for:"
jq -r '.plugins | to_entries[] | select(.key | endswith("@laicluse-agent-fieldkit")) | .key' \
~/.claude/plugins/installed_plugins.json | while read -r entry; do
plugin="${entry%@laicluse-agent-fieldkit}"
install=$(jq -r --arg k "$entry" '.plugins[$k][0].installPath // empty' \
~/.claude/plugins/installed_plugins.json)
if [ -x "$install/bin/check-broadcast" ]; then
echo "- $plugin"
fi
done
echo
echo "Pass a plugin name to drill in: /whats-new <plugin>"
Place the awk output verbatim in a markdown block. Then the index list. No interpretation; the marketplace CHANGELOG is canonical.
${LAICLUSE_HOME:-~/.laicluse}/<plugin>/broadcasts/.
--force does not touch them; only the non-force broadcast blocks in a
plugin's host skills write them.bin/check-broadcast is the source of truth.