feat: add SkillKit extension with 9 tools for cross-agent skill management
- Add @moltbot/skillkit extension with tools: - skillkit_search: Search 15,000+ skills marketplace - skillkit_install: Install skills with auto-translation - skillkit_translate: Translate between 17 AI agents - skillkit_recommend: Project-aware skill recommendations - skillkit_sync: Team skill synchronization - skillkit_list: List available/installed skills - skillkit_context: Analyze project context - skillkit_publish: Publish skills to marketplace - skillkit_memory: Manage skill preferences - Add docs/tools/skillkit.md with full documentation - Fix memory-core missing devDependencies (upstream bug) - Regenerate pnpm-lock.yaml for CI compatibility SkillKit v1.7.2: https://agenstskills.com
This commit is contained in:
parent
109ac1c549
commit
4bbafafb3c
203
docs/tools/skillkit.md
Normal file
203
docs/tools/skillkit.md
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
---
|
||||||
|
summary: "SkillKit: cross-agent skill management CLI for 17 AI coding agents"
|
||||||
|
read_when:
|
||||||
|
- Porting skills from other AI coding agents to Moltbot
|
||||||
|
- Managing skills across multiple AI agents
|
||||||
|
- Looking for cross-agent skill portability
|
||||||
|
---
|
||||||
|
|
||||||
|
# SkillKit
|
||||||
|
|
||||||
|
SkillKit is a **universal CLI for managing AI agent skills** across 17 different coding agents. It provides cross-agent skill portability, team collaboration features, and smart project-aware recommendations. While ClawdHub is the Moltbot-specific skill registry, SkillKit enables you to translate and sync skills from other AI agents like Cursor, Claude Code, Codex, and more.
|
||||||
|
|
||||||
|
**Current version**: v1.7.2
|
||||||
|
|
||||||
|
Website: [agenstskills.com](https://agenstskills.com)
|
||||||
|
|
||||||
|
GitHub: [github.com/rohitg00/skillkit](https://github.com/rohitg00/skillkit)
|
||||||
|
|
||||||
|
npm: [npmjs.com/package/skillkit](https://www.npmjs.com/package/skillkit)
|
||||||
|
|
||||||
|
GitHub Packages: [github.com/rohitg00/skillkit/pkgs/npm/skillkit](https://github.com/rohitg00/skillkit/pkgs/npm/skillkit)
|
||||||
|
|
||||||
|
## Why use SkillKit with Moltbot
|
||||||
|
|
||||||
|
SkillKit complements Moltbot and ClawdHub by solving cross-agent workflows:
|
||||||
|
|
||||||
|
- **Skill portability**: Translate skills from Cursor, Claude Code, Codex, or other agents into Moltbot-compatible format.
|
||||||
|
- **Team collaboration**: Share skill configurations across your team with sync and import/export workflows.
|
||||||
|
- **Smart recommendations**: Get project-aware skill suggestions based on your codebase.
|
||||||
|
- **Multi-agent workflows**: Manage skills for multiple AI agents from a single CLI.
|
||||||
|
- **Marketplace access**: Browse 15,000+ skills from curated sources.
|
||||||
|
|
||||||
|
If you only use Moltbot, ClawdHub is the primary registry. If you work with multiple AI coding agents, SkillKit bridges the gap.
|
||||||
|
|
||||||
|
## Install the CLI
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# npm (recommended)
|
||||||
|
npm install -g skillkit
|
||||||
|
|
||||||
|
# pnpm
|
||||||
|
pnpm add -g skillkit
|
||||||
|
|
||||||
|
# npx (no install)
|
||||||
|
npx skillkit --help
|
||||||
|
|
||||||
|
# GitHub Packages
|
||||||
|
npm install -g @rohitg00/skillkit --registry=https://npm.pkg.github.com
|
||||||
|
```
|
||||||
|
|
||||||
|
## Available Tools
|
||||||
|
|
||||||
|
The SkillKit extension provides 9 tools for Moltbot:
|
||||||
|
|
||||||
|
### skillkit_search
|
||||||
|
|
||||||
|
Search the SkillKit marketplace for AI agent skills.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_search(query: "react testing", agent: "cursor", limit: 10)
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_install
|
||||||
|
|
||||||
|
Install a skill from the marketplace.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_install(skill: "typescript-strict", agent: "clawdbot")
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_translate
|
||||||
|
|
||||||
|
Translate skills between different AI agent formats.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_translate(skill: "./cursor-rules", from: "cursor", to: "clawdbot", recursive: true)
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_recommend
|
||||||
|
|
||||||
|
Get smart skill recommendations based on your project.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_recommend(path: "./my-project", limit: 5)
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_sync
|
||||||
|
|
||||||
|
Sync skills between local and remote configurations.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_sync(direction: "push", agent: "clawdbot")
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_list
|
||||||
|
|
||||||
|
List available or installed skills.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_list(agent: "clawdbot", installed: true)
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_context
|
||||||
|
|
||||||
|
Analyze project context for intelligent recommendations.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_context(path: "./my-project", format: "json")
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_publish
|
||||||
|
|
||||||
|
Publish a skill to the SkillKit marketplace.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_publish(path: "./my-skill", name: "awesome-skill")
|
||||||
|
```
|
||||||
|
|
||||||
|
### skillkit_memory
|
||||||
|
|
||||||
|
Manage SkillKit memory for persisting preferences.
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_memory(action: "save", key: "preferred_agent", value: "clawdbot")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Supported Agents
|
||||||
|
|
||||||
|
SkillKit supports 17 AI coding agents:
|
||||||
|
|
||||||
|
| Agent | Format | Native Support |
|
||||||
|
|-------|--------|----------------|
|
||||||
|
| Claude Code | CLAUDE.md | ✅ |
|
||||||
|
| Cursor | .cursorrules | ✅ |
|
||||||
|
| Codex | AGENTS.md | ✅ |
|
||||||
|
| Gemini CLI | GEMINI.md | ✅ |
|
||||||
|
| OpenCode | OPENCODE.md | ✅ |
|
||||||
|
| Antigravity | .antigravity | ✅ |
|
||||||
|
| Amp | AMP.md | ✅ |
|
||||||
|
| Clawdbot/Moltbot | SKILL.md | ✅ |
|
||||||
|
| Droid | DROID.md | ✅ |
|
||||||
|
| GitHub Copilot | .github/copilot | ✅ |
|
||||||
|
| Goose | .goose | ✅ |
|
||||||
|
| Kilo | KILO.md | ✅ |
|
||||||
|
| Kiro CLI | .kiro | ✅ |
|
||||||
|
| Roo | .roo | ✅ |
|
||||||
|
| Trae | .trae | ✅ |
|
||||||
|
| Windsurf | .windsurfrules | ✅ |
|
||||||
|
| Universal | SKILL.md | ✅ |
|
||||||
|
|
||||||
|
## Skill Translation
|
||||||
|
|
||||||
|
SkillKit can translate skills between any supported agents. For example, to translate Cursor rules to Moltbot:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
skillkit translate .cursorrules --from cursor --to clawdbot
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use the `skillkit_translate` tool within Moltbot:
|
||||||
|
|
||||||
|
```
|
||||||
|
skillkit_translate(skill: ".cursorrules", from: "cursor", to: "clawdbot")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Team Collaboration
|
||||||
|
|
||||||
|
SkillKit provides team collaboration features:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Initialize team config
|
||||||
|
skillkit team init
|
||||||
|
|
||||||
|
# Share skills with team
|
||||||
|
skillkit team share
|
||||||
|
|
||||||
|
# Import team skills
|
||||||
|
skillkit team import
|
||||||
|
|
||||||
|
# Sync skills
|
||||||
|
skillkit team sync
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Context Analysis
|
||||||
|
|
||||||
|
SkillKit analyzes your project to provide intelligent recommendations:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
skillkit context
|
||||||
|
```
|
||||||
|
|
||||||
|
This detects:
|
||||||
|
- Programming languages
|
||||||
|
- Frameworks (React, Next.js, Express, etc.)
|
||||||
|
- Build tools (Webpack, Vite, etc.)
|
||||||
|
- Testing frameworks
|
||||||
|
- Package managers
|
||||||
|
- Git configuration
|
||||||
|
|
||||||
|
## Related Resources
|
||||||
|
|
||||||
|
- [ClawdHub Skills](./clawdhub.md) - Moltbot-native skill registry
|
||||||
|
- [Creating Skills](./creating-skills.md) - How to create custom skills
|
||||||
|
- [SkillKit Website](https://agenstskills.com) - Browse the marketplace
|
||||||
@ -8,6 +8,9 @@
|
|||||||
"./index.ts"
|
"./index.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"moltbot": "workspace:*"
|
||||||
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"moltbot": ">=2026.1.26"
|
"moltbot": ">=2026.1.26"
|
||||||
},
|
},
|
||||||
|
|||||||
8
extensions/skillkit/clawdbot.plugin.json
Normal file
8
extensions/skillkit/clawdbot.plugin.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"id": "skillkit",
|
||||||
|
"configSchema": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": false,
|
||||||
|
"properties": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
124
extensions/skillkit/index.ts
Normal file
124
extensions/skillkit/index.ts
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
import type { MoltbotPluginApi } from "clawdbot/plugin-sdk";
|
||||||
|
import { emptyPluginConfigSchema } from "clawdbot/plugin-sdk";
|
||||||
|
|
||||||
|
import {
|
||||||
|
SkillkitSearchSchema,
|
||||||
|
executeSkillkitSearch,
|
||||||
|
SkillkitInstallSchema,
|
||||||
|
executeSkillkitInstall,
|
||||||
|
SkillkitTranslateSchema,
|
||||||
|
executeSkillkitTranslate,
|
||||||
|
SkillkitRecommendSchema,
|
||||||
|
executeSkillkitRecommend,
|
||||||
|
SkillkitSyncSchema,
|
||||||
|
executeSkillkitSync,
|
||||||
|
SkillkitListSchema,
|
||||||
|
executeSkillkitList,
|
||||||
|
SkillkitContextSchema,
|
||||||
|
executeSkillkitContext,
|
||||||
|
SkillkitPublishSchema,
|
||||||
|
executeSkillkitPublish,
|
||||||
|
SkillkitMemorySchema,
|
||||||
|
executeSkillkitMemory,
|
||||||
|
} from "./src/tools.js";
|
||||||
|
|
||||||
|
const plugin = {
|
||||||
|
id: "skillkit",
|
||||||
|
name: "SkillKit",
|
||||||
|
description:
|
||||||
|
"Universal AI agent skills management - search, install, translate, and sync skills across 17 coding agents",
|
||||||
|
configSchema: emptyPluginConfigSchema(),
|
||||||
|
register(api: MoltbotPluginApi) {
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_search",
|
||||||
|
label: "SkillKit Search",
|
||||||
|
description:
|
||||||
|
"Search the SkillKit marketplace for AI agent skills. " +
|
||||||
|
"Browse 15,000+ skills from curated sources including Cursor, Claude Code, Codex, and more.",
|
||||||
|
parameters: SkillkitSearchSchema,
|
||||||
|
execute: executeSkillkitSearch,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_install",
|
||||||
|
label: "SkillKit Install",
|
||||||
|
description:
|
||||||
|
"Install a skill from the SkillKit marketplace. " +
|
||||||
|
"Automatically translates skills to the target agent format.",
|
||||||
|
parameters: SkillkitInstallSchema,
|
||||||
|
execute: executeSkillkitInstall,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_translate",
|
||||||
|
label: "SkillKit Translate",
|
||||||
|
description:
|
||||||
|
"Translate skills between different AI agent formats. " +
|
||||||
|
"Supports Cursor, Claude Code, Codex, Gemini CLI, Windsurf, Roo, and 11 more agents.",
|
||||||
|
parameters: SkillkitTranslateSchema,
|
||||||
|
execute: executeSkillkitTranslate,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_recommend",
|
||||||
|
label: "SkillKit Recommend",
|
||||||
|
description:
|
||||||
|
"Get smart skill recommendations based on your project's tech stack, " +
|
||||||
|
"dependencies, and codebase patterns.",
|
||||||
|
parameters: SkillkitRecommendSchema,
|
||||||
|
execute: executeSkillkitRecommend,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_sync",
|
||||||
|
label: "SkillKit Sync",
|
||||||
|
description:
|
||||||
|
"Sync skills between local and remote configurations. " +
|
||||||
|
"Push local skills to team storage or pull team skills locally.",
|
||||||
|
parameters: SkillkitSyncSchema,
|
||||||
|
execute: executeSkillkitSync,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_list",
|
||||||
|
label: "SkillKit List",
|
||||||
|
description:
|
||||||
|
"List available or installed skills. " +
|
||||||
|
"Filter by agent or show only locally installed skills.",
|
||||||
|
parameters: SkillkitListSchema,
|
||||||
|
execute: executeSkillkitList,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_context",
|
||||||
|
label: "SkillKit Context",
|
||||||
|
description:
|
||||||
|
"Analyze project context to understand tech stack, dependencies, and patterns. " +
|
||||||
|
"Used for intelligent skill recommendations.",
|
||||||
|
parameters: SkillkitContextSchema,
|
||||||
|
execute: executeSkillkitContext,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_publish",
|
||||||
|
label: "SkillKit Publish",
|
||||||
|
description:
|
||||||
|
"Publish a skill to the SkillKit marketplace. " +
|
||||||
|
"Share your custom skills with the community.",
|
||||||
|
parameters: SkillkitPublishSchema,
|
||||||
|
execute: executeSkillkitPublish,
|
||||||
|
});
|
||||||
|
|
||||||
|
api.registerTool({
|
||||||
|
name: "skillkit_memory",
|
||||||
|
label: "SkillKit Memory",
|
||||||
|
description:
|
||||||
|
"Manage SkillKit memory for persisting skill preferences and configurations. " +
|
||||||
|
"Save, load, list, or clear memory entries.",
|
||||||
|
parameters: SkillkitMemorySchema,
|
||||||
|
execute: executeSkillkitMemory,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default plugin;
|
||||||
20
extensions/skillkit/package.json
Normal file
20
extensions/skillkit/package.json
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "@moltbot/skillkit",
|
||||||
|
"version": "2026.1.27",
|
||||||
|
"type": "module",
|
||||||
|
"description": "SkillKit integration for Moltbot - Universal AI agent skills management",
|
||||||
|
"moltbot": {
|
||||||
|
"extensions": [
|
||||||
|
"./index.ts"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"skillkit": "^1.7.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"moltbot": "workspace:*"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"moltbot": ">=2026.1.26"
|
||||||
|
}
|
||||||
|
}
|
||||||
161
extensions/skillkit/src/tools.ts
Normal file
161
extensions/skillkit/src/tools.ts
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
import { z } from "zod";
|
||||||
|
import { execSync } from "child_process";
|
||||||
|
|
||||||
|
function runSkillkit(args: string): string {
|
||||||
|
try {
|
||||||
|
return execSync(`npx skillkit ${args}`, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
timeout: 30000,
|
||||||
|
}).trim();
|
||||||
|
} catch (error: any) {
|
||||||
|
return error.message || "Command failed";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitSearchSchema = z.object({
|
||||||
|
query: z.string().describe("Search query for skills"),
|
||||||
|
agent: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.describe("Filter by agent (e.g., cursor, claude-code, codex)"),
|
||||||
|
limit: z.number().optional().default(10).describe("Maximum results"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitSearch(
|
||||||
|
params: z.infer<typeof SkillkitSearchSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
const args = [`search "${params.query}"`];
|
||||||
|
if (params.agent) args.push(`--agent ${params.agent}`);
|
||||||
|
if (params.limit) args.push(`--limit ${params.limit}`);
|
||||||
|
return runSkillkit(args.join(" "));
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitInstallSchema = z.object({
|
||||||
|
skill: z.string().describe("Skill name or URL to install"),
|
||||||
|
agent: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.default("clawdbot")
|
||||||
|
.describe("Target agent for installation"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitInstall(
|
||||||
|
params: z.infer<typeof SkillkitInstallSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
return runSkillkit(`install "${params.skill}" --agent ${params.agent}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitTranslateSchema = z.object({
|
||||||
|
skill: z.string().describe("Skill name or path to translate"),
|
||||||
|
from: z.string().describe("Source agent format"),
|
||||||
|
to: z.string().default("clawdbot").describe("Target agent format"),
|
||||||
|
recursive: z
|
||||||
|
.boolean()
|
||||||
|
.optional()
|
||||||
|
.default(false)
|
||||||
|
.describe("Translate all skills in directory"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitTranslate(
|
||||||
|
params: z.infer<typeof SkillkitTranslateSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
const args = [`translate "${params.skill}" --from ${params.from} --to ${params.to}`];
|
||||||
|
if (params.recursive) args.push("--recursive");
|
||||||
|
return runSkillkit(args.join(" "));
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitRecommendSchema = z.object({
|
||||||
|
path: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.default(".")
|
||||||
|
.describe("Project path to analyze for recommendations"),
|
||||||
|
limit: z.number().optional().default(5).describe("Maximum recommendations"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitRecommend(
|
||||||
|
params: z.infer<typeof SkillkitRecommendSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
return runSkillkit(`recommend --path "${params.path}" --limit ${params.limit}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitSyncSchema = z.object({
|
||||||
|
direction: z
|
||||||
|
.enum(["push", "pull"])
|
||||||
|
.describe("Sync direction (push local to remote, pull remote to local)"),
|
||||||
|
agent: z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.default("clawdbot")
|
||||||
|
.describe("Agent to sync skills for"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitSync(
|
||||||
|
params: z.infer<typeof SkillkitSyncSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
return runSkillkit(`sync ${params.direction} --agent ${params.agent}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitListSchema = z.object({
|
||||||
|
agent: z.string().optional().describe("Filter by agent"),
|
||||||
|
installed: z
|
||||||
|
.boolean()
|
||||||
|
.optional()
|
||||||
|
.default(false)
|
||||||
|
.describe("Show only installed skills"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitList(
|
||||||
|
params: z.infer<typeof SkillkitListSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
const args = ["list"];
|
||||||
|
if (params.agent) args.push(`--agent ${params.agent}`);
|
||||||
|
if (params.installed) args.push("--installed");
|
||||||
|
return runSkillkit(args.join(" "));
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitContextSchema = z.object({
|
||||||
|
path: z.string().optional().default(".").describe("Project path to analyze"),
|
||||||
|
format: z
|
||||||
|
.enum(["json", "text"])
|
||||||
|
.optional()
|
||||||
|
.default("text")
|
||||||
|
.describe("Output format"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitContext(
|
||||||
|
params: z.infer<typeof SkillkitContextSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
return runSkillkit(`context --path "${params.path}" --format ${params.format}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitPublishSchema = z.object({
|
||||||
|
path: z.string().optional().default(".").describe("Path to skill directory"),
|
||||||
|
name: z.string().optional().describe("Skill name (defaults to directory name)"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitPublish(
|
||||||
|
params: z.infer<typeof SkillkitPublishSchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
const args = ["publish"];
|
||||||
|
if (params.path !== ".") args.push(`--path "${params.path}"`);
|
||||||
|
if (params.name) args.push(`--name "${params.name}"`);
|
||||||
|
return runSkillkit(args.join(" "));
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkillkitMemorySchema = z.object({
|
||||||
|
action: z
|
||||||
|
.enum(["save", "load", "list", "clear"])
|
||||||
|
.describe("Memory action to perform"),
|
||||||
|
key: z.string().optional().describe("Memory key (for save/load)"),
|
||||||
|
value: z.string().optional().describe("Value to save (for save action)"),
|
||||||
|
});
|
||||||
|
|
||||||
|
export async function executeSkillkitMemory(
|
||||||
|
params: z.infer<typeof SkillkitMemorySchema>,
|
||||||
|
): Promise<string> {
|
||||||
|
const args = [`memory ${params.action}`];
|
||||||
|
if (params.key) args.push(`--key "${params.key}"`);
|
||||||
|
if (params.value) args.push(`--value "${params.value}"`);
|
||||||
|
return runSkillkit(args.join(" "));
|
||||||
|
}
|
||||||
3041
pnpm-lock.yaml
generated
3041
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user