Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

looplj/skills

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

skills (Go 移植版)

本项目是对 Vercel 的技能管理 CLI 的 Go 语言移植实现,主要用于发现、安装、列出与移除 Agent Skills(基于 SKILL.md)。

原项目:

安装

安装到全局(推荐):

go install github.com/looplj/skills/cmd/find-skills@latest

安装后可直接使用:

find-skills --help

从源码构建:

go build -o find-skills ./cmd/find-skills

或直接运行:

go run ./cmd/find-skills --help

快速开始

搜索技能:

find-skills find "browser automation" --limit 10

以可直接用于安装的格式输出搜索结果:

find-skills find "pdf" --format add

安装技能(支持本地目录、Git 仓库、URL、well-known 等来源):

find-skills add vercel-labs/agent-skills --global --yes

列出已安装技能:

find-skills list --global

移除技能:

find-skills remove --global my-skill

生成 SKILL.md 模板:

find-skills init MySkill

检查并更新通过 GitHub 安装的全局技能:

find-skills check
find-skills update

作为库使用

该 Go 版本不仅提供可执行文件,也可以直接作为库引入,在你的程序里完成技能的发现/安装/移除等逻辑。

安装技能(启用 Agent 自动发现;若需安装到指定目录,见下一个示例):

package main

import (
	"context"
	"fmt"

	skills "github.com/looplj/skills"
)

func main() {
	ctx := context.Background()
	res, err := skills.Add(ctx, skills.AddOptions{
		Source:               "vercel-labs/agent-skills",
		Global:               true,
		Yes:                  true,
		EnableAgentDiscovery: true,
	})
	if err != nil {
		panic(err)
	}
	for _, s := range res.Installed {
		fmt.Println(s.InstallName, s.Name)
	}
}

安装技能(显式指定目标目录;适合嵌入到你自己的目录结构中):

package main

import (
	"context"

	skills "github.com/looplj/skills"
)

func main() {
	ctx := context.Background()
	_, err := skills.Add(ctx, skills.AddOptions{
		Source:               "vercel-labs/agent-skills",
		Yes:                  true,
		Dirs:                 []string{".agents/skills"},
		EnableAgentDiscovery: false,
	})
	if err != nil {
		panic(err)
	}
}

列出与移除:

package main

import (
	"fmt"

	skills "github.com/looplj/skills"
)

func main() {
	items, err := skills.List(skills.ListOptions{
		Global:               true,
		EnableAgentDiscovery: true,
	})
	if err != nil {
		panic(err)
	}
	for _, it := range items {
		fmt.Println(it.InstallName, it.Name)
	}
}
package main

import (
	skills "github.com/looplj/skills"
)

func main() {
	_, err := skills.Remove(skills.RemoveOptions{
		Global:               true,
		Skills:               []string{"my-skill"},
		EnableAgentDiscovery: true,
	})
	if err != nil {
		panic(err)
	}
}

可嵌入 CLI(Cobra)

项目同时提供了可嵌入的 Cobra 命令集合,可作为你自己 CLI 的子命令使用。

find-skills 作为子命令挂到你的根命令下:

package main

import (
	"os"

	skillscmd "github.com/looplj/skills/skillscmd"
	"github.com/spf13/cobra"
)

func main() {
	root := &cobra.Command{Use: "myapp"}
	root.AddCommand(skillscmd.NewRootCommand(skillscmd.RootOptions{
		Use:                  "find-skills",
		Stdout:               os.Stdout,
		Stderr:               os.Stderr,
		EnableAgentDiscovery: true,
	}))
	if err := root.Execute(); err != nil {
		os.Exit(1)
	}
}

如果你不希望依赖自动发现,也可以通过 WorkspaceDir / GlobalDir 指定技能目录(安装/列出/移除会直接作用在这些目录上):

package main

import (
	"os"

	skillscmd "github.com/looplj/skills/skillscmd"
)

func main() {
	cmd := skillscmd.NewRootCommand(skillscmd.RootOptions{
		Use:                  "find-skills",
		Stdout:               os.Stdout,
		Stderr:               os.Stderr,
		WorkspaceDir:         ".agents/skills",
		GlobalDir:            "~/.agents/skills",
		EnableAgentDiscovery: false,
	})
	if err := cmd.Execute(); err != nil {
		os.Exit(1)
	}
}

如果你还需要暴露一层 bundled skills 作为 list/get 的回退来源,可以直接从代码注入 BundledSkillsSkill.Name 会作为 install name 使用。当 bundled skill 与已安装 skill 同名时,已安装的 global/workspace skill 会覆盖 bundled 版本:

root.AddCommand(skillscmd.NewRootCommand(skillscmd.RootOptions{
	Use:          "find-skills",
	WorkspaceDir: ".agents/skills",
	GlobalDir:    "~/.agents/skills",
	BundledSkills: []skills.Skill{
		{
			Name:        "seo-audit",
			Description: "Bundled SEO audit skill",
			Content:     "---\nname: seo-audit\ndescription: Bundled SEO audit skill\n---\n",
		},
	},
}))

认证

在检查/更新 GitHub 技能时,若遇到限流或私有仓库访问需求,可配置以下任一方式:

  • 环境变量 GITHUB_TOKENGH_TOKEN
  • 已登录的 GitHub CLI(gh auth login),工具会尝试读取 gh auth token

许可证

MIT,见 LICENSE。本项目保持与上游项目声明一致的开源协议。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.