mcpField
S
skills-store

skills-store

github.com/posthogAgent 工作流95235 次安装1 天前更新
代码仓库

关于 skills-store

PostHog 团队共享 Agent Skills 的存储与管理工作流,适用于需要复用或维护团队工作流的团队。支持按需读取内容和文件,并提供版本化编辑及文件管理操作。

主要功能

  1. 01列出并按名称获取技能
  2. 02创建、更新和复制技能
  3. 03管理技能附带文件
  4. 04通过版本检查编辑内容
  5. 05归档或重命名技能

适用场景

  1. 01发现团队已有的可复用工作流
  2. 02保存新的团队技能
  3. 03发布技能内容或文件更新
  4. 04归档不再使用的技能

MCP 相关

通过 PostHog MCP 技能工具访问和管理共享技能,包括技能内容及其附带文件。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/posthog/ai-plugin --skill skills-store

安装后在 Claude Code 中输入/skills-store确认已加载。

详细介绍

PostHog 技能商店

技能是存储在 PostHog 中、可重复使用的 Agent 工作流,遵循 Agent Skills specification —— 包含一组指令(SKILL.md)以及可选的捆绑文件(脚本、参考资料、素材)、结构化元数据和 allowed_tools 列表。

PostHog 是团队共享技能的主要存储库——始终使用 PostHog MCP 技能工具来管理技能。

可用工具

工具用途
posthog:skill-list列出所有可用技能(第 1 级 — 名称 + 描述)
posthog:skill-get按名称获取技能(第 2 级 — 正文 + 文件清单)
posthog:skill-file-get按路径获取单个捆绑文件(第 3 级 — 按需获取)
posthog:skill-create存储新技能(可选包含捆绑文件)
posthog:skill-update发布新版本(正文、edits 或 file_edits)
posthog:skill-file-create向技能添加一个捆绑文件(发布新版本)
posthog:skill-file-delete移除技能中的一个捆绑文件
posthog:skill-file-rename重命名一个捆绑文件(移动文件,不重写内容)
posthog:skill-duplicate使用新名称复制现有技能
posthog:skill-rename重命名技能,同时保留其版本、文件和所有者
posthog:skill-archive按名称归档技能的所有版本(无法撤销)

技能采用渐进式披露:通过描述发现技能,仅在相关时获取正文,并按需提取单个文件。不要预先获取所有文件。

发现技能

列出所有可用技能:

posthog:skill-list
{}

按关键词搜索(匹配名称和描述):

posthog:skill-list
{ "search": "fractal" }

skill-list 仅返回名称 + 描述,不会返回正文。根据描述判断要获取哪个技能。描述的目的就是让你无需加载任何正文,也能选出合适的技能。

当用户说出技能名称时,跳过 skill-list,直接调用 skill-get。

加载和使用技能

第 1 步 — 按名称获取技能
posthog:skill-get
{ "skill_name": "make-fractals" }

响应包含:

  • body — 完整的 SKILL.md 指令(将其视为此任务的系统指令来阅读)
  • license、compatibility、allowed_tools、metadata — 规范字段(参见下文的 allowed_tools)
  • files[] — 捆绑文件清单(仅包含路径 + content_type,不含内容)
第 2 步 — 遵循正文

阅读 body 并遵循其中的内容。将其视为此任务的系统指令。

第 3 步 — 按需获取捆绑文件

当正文引用脚本或参考文档时,按需提取:

posthog:skill-file-get
{ "skill_name": "make-fractals", "file_path": "scripts/mandelbrot.py" }

只获取实际需要的文件。如果正文的决策树指向某个脚本,不要预先加载其他脚本。

创建技能

创建技能时,请遵循 Agent Skills 规范:

  • name — 使用 kebab-case,最多 64 个字符,不能以连字符开头或结尾,也不能包含连续连字符
  • description — 说明技能的功能以及适用场景。加入 Agent 会搜索的关键词。这是发现技能时唯一可见的内容,因此请认真撰写。
  • body — 控制在约 500 行以内。将详细的参考资料、SQL、脚本和长示例移至随附的 files,以便快速浏览正文。
  • 文件 — 可执行代码放在 scripts/,文档放在 references/,模板和数据放在 assets/。Agent 会通过 skill-file-get 按需获取这些文件,因此拆分文件有助于精简上下文。
  • allowed_tools — 技能请求使用的工具。通过文件读取技能的框架(zip 导出、git marketplace、content=full 包)会将此列表视为预先批准。通过 MCP 加载技能的框架(包括默认的 content=stub 包)会忽略此列表,直到用户批准该授权,因此不要指望它能扩大访问权限。

随附文件为可选项,也可以在一次创建调用中一并添加:

posthog:skill-create
{
  "name": "make-fractals",
  "description": "Generate fractal images as PNGs. Use when the user asks to make, render, or visualize fractals.",
  "body": "# make-fractals\n\nWhen to use... Workflow... Output contract...",
  "license": "MIT",
  "compatibility": "Requires Python 3.10+ with Pillow and numpy",
  "allowed_tools": ["Bash", "Write"],
  "metadata": { "author": "posthog", "category": "visualization" },
  "files": [
    { "path": "scripts/mandelbrot.py", "content": "...", "content_type": "text/x-python" },
    { "path": "references/primer.md", "content": "# Primer\n...", "content_type": "text/markdown" }
  ]
}

更新技能

每次写入都会发布一个新的不可变版本。请务必先获取当前版本,然后使用 base_version 执行更新以进行并发检查:

posthog:skill-get
{ "skill_name": "make-fractals" }

请选择最适合修改内容的原子操作 — API 提供了多种操作,因此只需修改某个部分时,无需往返传输整个技能。未修改的内容会从当前最新版本中沿用。

编辑正文

完整替换(适用于大幅改写):

posthog:skill-update
{
  "skill_name": "make-fractals",
  "body": "# make-fractals\n\nUpdated instructions...",
  "base_version": 2
}

增量查找/替换(适用于小幅调整,无需往返传输整个正文):

posthog:skill-update
{
  "skill_name": "make-fractals",
  "edits": [
    { "old": "Use Pillow for rendering.", "new": "Use Pillow ≥10.0 for rendering." }
  ],
  "base_version": 2
}

每个 edits[].old 必须且只能匹配一次。body 和 edits 不能同时使用。

编辑一个随附文件

使用 file_edits 修补单个文件,无需重新发送其他文件:

posthog:skill-update
{
  "skill_name": "make-fractals",
  "file_edits": [
    {
      "path": "scripts/mandelbrot.py",
      "edits": [
        { "old": "ITERATIONS = 100", "new": "ITERATIONS = 250" }
      ]
    }
  ],
  "base_version": 2
}

未指定的文件会保持不变。file_edits 不能添加、删除或重命名文件 — 请使用下文介绍的逐文件工具。

文件路径参数命名

文件路径参数根据其在请求中的位置有两种名称,因此请勿猜测:

  • file_path — skill-file-get 和 skill-file-delete(路径是 URL 的一部分)。两者也接受 path,因此可以直接复制清单条目使用。
  • path — skill-file-create,以及 files=[{path, …}] 数组和 file_edits=[{path, …}](文件对象上的正文参数)。
  • old_path / new_path — skill-file-rename。

如有疑问,请查看工具的输入架构。

添加、删除或重命名文件

原子逐文件工具 — 每个工具都会发布一个新版本并返回更新后的技能(读取其 version,即可通过 base_version 继续进行后续编辑):

posthog:skill-file-create
{ "skill_name": "make-fractals", "path": "scripts/julia.py", "content": "...", "base_version": 2 }
posthog:skill-file-delete
{ "skill_name": "make-fractals", "file_path": "scripts/old.py", "base_version": 3 }
posthog:skill-file-rename
{ "skill_name": "make-fractals", "old_path": "scripts/julia.py", "new_path": "scripts/julia_set.py", "base_version": 4 }
替换整个文件包(少见)

向 skill-update 传入 files 会替换所有随附文件 — 数组中未列出的内容都会被删除。仅当你确实想清空并重新填充文件包时才使用此操作。其他情况下,优先使用 file_edits 或上述逐文件 CRUD 工具。

归档技能

skill-archive 会按名称隐藏该技能的所有活跃版本。此操作无法撤销 — 整个团队都无法再通过 skill-list 和 skill-get 查看该技能。请用它彻底弃用某项技能;如需删除单个文件,请使用 skill-file-delete;如需回滚内容,请发布一个新版本。

posthog:skill-archive
{ "skill_name": "make-fractals" }

移植本地技能

要将技能从本地 SKILL.md 目录(例如,包含 scripts/、references/、assets/ 子目录的本地技能文件夹)迁移到 PostHog:

  1. 读取本地 SKILL.md——使用其中的 frontmatter 填写 name、description、license、compatibility、allowed_tools、metadata;frontmatter 之后的正文将成为 body
  2. 遍历 scripts/、references/ 和 assets/ 子目录,将每个文件收集为 { path, content, content_type }
  3. 一次性调用 posthog:skill-create 并传入所有内容——该技能会以 v1 版本及其完整资源包创建

之后,整个团队都可以通过 posthog:skill-get 使用该技能。

快速访问:本地桥接技能

大多数编码 Agent 都支持本地技能或斜杠命令。本地桥接技能可提供快捷方式(例如,/phs my-github),将请求直接路由到 PostHog 技能 API——比让 Agent“使用 PostHog 技能库加载 my-github”更快、更确定。

在 Agent 的技能目录中创建一个本地技能,并添加以下说明:

---
name: phs
description: >-
  Access and run shared team skills stored in PostHog.
  Use when the user asks to list, run, or manage PostHog skills,
  or references /phs, "ph skills", or "posthog skills".
user-invocable: true
allowed-tools: mcp__posthog__skill-list, mcp__posthog__skill-get, mcp__posthog__skill-create, mcp__posthog__skill-update, mcp__posthog__skill-file-get, mcp__posthog__skill-file-create, mcp__posthog__skill-file-delete, mcp__posthog__skill-file-rename, mcp__posthog__skill-duplicate, mcp__posthog__skill-rename
---

# PostHog Skills Store

Local bridge to the PostHog Skills Store.

## Load and run a skill

When the user says `/phs <skill-name>`:

1. `skill-get(skill_name="<skill-name>")` to fetch body + file manifest
2. Read the `body` field — follow it as system instructions for this task
3. Use `skill-file-get` to pull bundled scripts/references on demand

## List skills

skill-list # all skills
skill-list(search="llma") # filter by keyword

## Create / update

skill-create(name="my-skill", description="...", body="# Instructions...")
skill-get → note version → skill-update(skill_name="...", base_version=N, body="...")

## Edit one part of an existing skill

skill-get → note version → pick the smallest primitive:

- body tweak: skill-update(skill_name="...", base_version=N, edits=[{old, new}])
- one bundled file: skill-update(skill_name="...", base_version=N, file_edits=[{path, edits:[{old, new}]}])
- add/remove/rename a file: skill-file-create / skill-file-delete / skill-file-rename

该桥接技能有意保持精简——它只负责将请求路由到 MCP 工具。真正的说明保存在 PostHog 中,更新时无需改动本地文件。

针对特定 Agent 的设置: 保存位置取决于所用的 Agent。对于 Claude Code,请保存为 ~/.claude/skills/phs/SKILL.md。对于其他 Agent,请查阅其关于本地技能或斜杠命令配置的文档。

默认行为

  • 始终优先使用 PostHog MCP 存储和检索技能
  • 只有在 PostHog MCP 不可用时才回退到本地文件
  • 当有人要求“保存”“存储”或“记住”工作流、运行手册或多步骤流程时,将其存储为 PostHog 技能
  • 当有人按名称要求使用技能时,通过 skill-get 获取
  • 当技能正文引用了随附文件时,仅在需要时通过 skill-file-get 获取——不要预加载

相关技能

  • working-with-skills — 在写入技能之前使用;了解技能的适用场景(项目中心、目录、运行手册、交接)
  • authoring-scouts — 将技能转化为按计划运行的 scout

评论

支持 Markdown