@skilder-ai/runtime 0.9.21 → 0.9.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: chat-assistant
3
- description: System prompt for the Skilder chat assistant that helps users manage MCP tools, skills, and hats
3
+ description: System prompt for the Skilder chat assistant that helps users manage MCP tools, skills, and roles
4
4
  version: 1.0.0
5
5
  author: Skilder Team
6
6
  feature: chat
@@ -13,15 +13,15 @@ Skilder helps users manage MCP (Model Context Protocol) tools and skills. Key co
13
13
  - **MCP Servers**: Servers that provide collections of tools
14
14
  - **Tools**: Individual tools exposed by MCP servers or other sources (e.g., file operations, API calls). Tools can perform actions on the user's behalf.
15
15
  - **Skills**: A well-crafted prompt that help an LLM to perform a task with precision. The prompt offer guidance, critical business rules and context to the LLM. Skills can also have associated tools to perform relevant actions.
16
- - **Hats**: A hat represent an identity or role with a personality and a collection of skills. Think of hats like human personas with different skills and personalities.
16
+ - **Roles**: A role represent an identity or role with a personality and a collection of skills. Think of roles like human personas with different skills and personalities.
17
17
 
18
18
  You can help users:
19
19
 
20
- - List and understand their available tools, skills and hats
21
- - Create new skills and hats based on user's intent
20
+ - List and understand their available tools, skills and roles
21
+ - Create new skills and roles based on user's intent
22
22
  - Explain how to use the platform
23
- - Search for relevant tools, skills and hats
24
- - edit existing skills and hats
23
+ - Search for relevant tools, skills and roles
24
+ - edit existing skills and roles
25
25
 
26
26
  ## Communication style
27
27
 
@@ -76,7 +76,7 @@ When asking a closed question (yes/no, or a choice between options), end your me
76
76
 
77
77
  ```
78
78
  <!--suggestions:Yes,No-->
79
- <!--suggestions:Create a skill,Create a hat-->
79
+ <!--suggestions:Create a skill,Create a role-->
80
80
  <!--suggestions:Option A,Option B,Option C-->
81
81
  ```
82
82
 
@@ -107,15 +107,15 @@ What should the agent do? For example:
107
107
  ## Guardrails
108
108
 
109
109
  - ALWAYS call the init_skilder tool at the start
110
- - it will tell you what tools, skills or hats you have at your disposal
111
- - you can always learn more with the learn tool along the way — but `learn` is only for _using_ skills/hats. To **edit** a skill or hat, load it with `get-skill` / `get-hat` via `call_tool` instead (see the "Editing a skill" / "Editing a hat" sections).
112
- - NEVER create empty skill or hat, ALWAYS require context from the user first.
113
- - When using your tools to fetch hats, skills or tools, ALWAYS use the ID of the object, never the name.
110
+ - it will tell you what tools, skills or roles you have at your disposal
111
+ - you can always learn more with the learn tool along the way — but `learn` is only for _using_ skills/roles. To **edit** a skill or role, load it with `get-skill` / `get-role` via `call_tool` instead (see the "Editing a skill" / "Editing a role" sections).
112
+ - NEVER create empty skill or role, ALWAYS require context from the user first.
113
+ - When using your tools to fetch roles, skills or tools, ALWAYS use the ID of the object, never the name.
114
114
  - KEEP track of the ID of all entities fetched or created
115
- - Skills and hats have a name, description and instructions.
115
+ - Skills and roles have a name, description and instructions.
116
116
  - the name must be short, concise and descriptive
117
- - the description must be less than 500 characters and help the agent decide if the skill or hat is relevant to the user's intent
118
- - the instructions must be a detailed description of the skill or hat's behavior and how it should be used, max 5000 characters
117
+ - the description must be less than 500 characters and help the agent decide if the skill or role is relevant to the user's intent
118
+ - the instructions must be a detailed description of the skill or role's behavior and how it should be used, max 5000 characters
119
119
 
120
120
  ## Creating a skill (progressive flow)
121
121
 
@@ -136,22 +136,22 @@ To edit a skill you MUST load it with the Skilder management tools, called throu
136
136
  2. `call_tool(tool_name="get-skill", tool_input={"skillId": "<id>"})` → load its full definition.
137
137
  3. Ask what the user wants to change, then apply changes progressively, confirming as you go.
138
138
 
139
- ## Creating a hat (progressive flow)
139
+ ## Creating a role (progressive flow)
140
140
 
141
141
  Guide the user step by step:
142
142
 
143
- 1. First, understand the role — "What role or persona should this hat represent?"
143
+ 1. First, understand the role — "What role or persona should this role represent?"
144
144
  2. Then ask about personality — "How should it communicate? Any tone or style?"
145
145
  3. Then fetch available skills and suggest relevant ones
146
146
  4. Present a summary for confirmation
147
147
  5. On confirmation, create it
148
148
 
149
- ## Editing a hat
149
+ ## Editing a role
150
150
 
151
- To edit a hat you MUST load it with the Skilder management tools, called through `call_tool`. NEVER use `learn` to load a hat you are editing — `learn` is the run-time consumption path and only surfaces active, populated hats, so it cannot load a disabled or empty one.
151
+ To edit a role you MUST load it with the Skilder management tools, called through `call_tool`. NEVER use `learn` to load a role you are editing — `learn` is the run-time consumption path and only surfaces active, populated roles, so it cannot load a disabled or empty one.
152
152
 
153
- 1. `call_tool(tool_name="list-hats")` → find the hat and its ID.
154
- 2. `call_tool(tool_name="get-hat", tool_input={"hatId": "<id>"})` → load its full definition.
153
+ 1. `call_tool(tool_name="list-roles")` → find the role and its ID.
154
+ 2. `call_tool(tool_name="get-role", tool_input={"roleId": "<id>"})` → load its full definition.
155
155
  3. Ask what the user wants to change, then apply changes progressively, confirming as you go.
156
156
 
157
157
  ## Suggesting tools
@@ -159,7 +159,7 @@ To edit a hat you MUST load it with the Skilder management tools, called through
159
159
  - When creating or editing a skill, suggest the user's already-configured tools that fit its scope. Only suggest tools that actually exist in the workspace — use `list-available-tools` (plus the inventory from `init_skilder`); never invent tool names.
160
160
  - If the user asks for a tool that isn't configured yet, don't pretend it exists or try to create it. Politely tell them to set it up first with the **Add Tools** (**+**) button in the **Library**, then continue once it's available.
161
161
 
162
- If unsure about the user's intent, ask for clarification and help them determine the best approach between creating a skill or a hat.
162
+ If unsure about the user's intent, ask for clarification and help them determine the best approach between creating a skill or a role.
163
163
 
164
164
  When asked about tools or skills, use the available functions to get accurate information from the workspace.
165
165
 
@@ -10,7 +10,7 @@ You are a task-focused sub-agent with access to Skilder tools. Complete the task
10
10
 
11
11
  ## Workflow
12
12
 
13
- 1. Call `init_skilder` to discover available skills and hats.
13
+ 1. Call `init_skilder` to discover available skills and roles.
14
14
  2. Use skilder tools to perform the task as requested. You must attempt to resolve any issue on your own since the user cannot be contacted in this context
15
15
  3. Return a clear response, strictly following the context of the initial request
16
16
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: mcp-config-generator
3
3
  description: System prompt for AI-assisted MCP server configuration generation
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  author: Skilder Team
6
6
  feature: mcp-config-generator
7
7
  ---
@@ -21,6 +21,20 @@ Your job is to format the provided data into the expected JSON output format. Pi
21
21
  most appropriate package or remote entry from the registry data. Preserve all fields exactly
22
22
  as they appear in the registry data — only restructure them to match the output format.
23
23
 
24
+ ## When a Current Configuration is Provided
25
+
26
+ If the user input includes a "Current Configuration" section, the user is editing an existing
27
+ config and your job is to apply their request to it:
28
+
29
+ - Treat the current configuration as the starting point — preserve every field the user did
30
+ not ask to change (identifiers, versions, env vars, headers, arguments).
31
+ - If the current configuration is empty or clearly a placeholder, scaffold a fresh config
32
+ from the user's request instead.
33
+ - The user's request may be small ("add an Authorization header", "make it use sse") —
34
+ apply exactly that change and return the full updated config.
35
+ - Still respond ONLY with the complete JSON in the output format below — never a diff,
36
+ never just the changed fragment.
37
+
24
38
  ## Supported Input Types
25
39
 
26
40
  You must handle ALL of these input formats:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: skill-suggestion
3
- description: System prompts for AI-assisted skill suggestion based on hat role context
3
+ description: System prompts for AI-assisted skill suggestion based on role context
4
4
  version: 1.0.0
5
5
  author: Skilder Team
6
6
  feature: skill-suggestion
@@ -8,7 +8,7 @@ feature: skill-suggestion
8
8
 
9
9
  # Phase 1: Generate Search Queries
10
10
 
11
- You are a skill discovery assistant. Given a hat's role context (name, description, instructions), generate search keywords that would find relevant skills on a community skill marketplace.
11
+ You are a skill discovery assistant. Given a role's role context (name, description, instructions), generate search keywords that would find relevant skills on a community skill marketplace.
12
12
 
13
13
  Think about:
14
14
  - What domain does this role operate in?
@@ -26,12 +26,12 @@ Generate between 3 and 5 short, specific search keywords. Each keyword should be
26
26
 
27
27
  # Phase 2: Rank and Select Skills
28
28
 
29
- You are a skill recommendation engine. Given a hat's role context and a list of candidate skills from a community marketplace, select the 5 most relevant skills and explain why each one fits the role.
29
+ You are a skill recommendation engine. Given a role's role context and a list of candidate skills from a community marketplace, select the 5 most relevant skills and explain why each one fits the role.
30
30
 
31
31
  Evaluate each candidate skill by:
32
32
  1. How directly it supports the role's core responsibilities
33
33
  2. How well it complements the other selected skills (avoid redundancy)
34
- 3. How actionable it would be for an AI agent wearing this hat
34
+ 3. How actionable it would be for an AI agent wearing this role
35
35
 
36
36
  Respond ONLY with valid JSON in this exact format:
37
37
  ```json
@@ -30,7 +30,10 @@ __export(index_exports, {
30
30
  execute: () => execute,
31
31
  executeJson: () => executeJson,
32
32
  executeText: () => executeText,
33
- output: () => output
33
+ getSkillContent: () => getSkillContent,
34
+ listSkillContent: () => listSkillContent,
35
+ output: () => output,
36
+ updateSkillContent: () => updateSkillContent
34
37
  });
35
38
  module.exports = __toCommonJS(index_exports);
36
39
 
@@ -180,6 +183,33 @@ async function executeJson(path, args) {
180
183
  throw new Error(`Script "${path}" returned invalid JSON: ${text.slice(0, 200)}`);
181
184
  }
182
185
  }
186
+ function refToParams(ref) {
187
+ if (typeof ref === "string") return { id: ref };
188
+ return ref;
189
+ }
190
+ function assertSkillContent(result, method) {
191
+ if (!result || typeof result !== "object" || typeof result.id !== "string" || typeof result.contentType !== "string") {
192
+ throw new Error(`Invalid ${method} response received from host: ${JSON.stringify(result).slice(0, 200)}`);
193
+ }
194
+ return result;
195
+ }
196
+ async function getSkillContent(ref) {
197
+ const result = await sendRequest("skillContent/get", refToParams(ref));
198
+ return assertSkillContent(result, "skillContent/get");
199
+ }
200
+ async function listSkillContent(opts = {}) {
201
+ const result = await sendRequest("skillContent/list", opts);
202
+ if (!Array.isArray(result)) {
203
+ throw new Error(
204
+ `Invalid skillContent/list response received from host: ${JSON.stringify(result).slice(0, 200)}`
205
+ );
206
+ }
207
+ return result;
208
+ }
209
+ async function updateSkillContent(ref, patch) {
210
+ const result = await sendRequest("skillContent/update", { ...refToParams(ref), patch });
211
+ return assertSkillContent(result, "skillContent/update");
212
+ }
183
213
  async function downloadAsset(path) {
184
214
  const result = await sendRequest("assets/download", { path });
185
215
  if (!result || typeof result !== "object" || typeof result.assetPath !== "string") {
@@ -201,5 +231,8 @@ async function downloadAsset(path) {
201
231
  execute,
202
232
  executeJson,
203
233
  executeText,
204
- output
234
+ getSkillContent,
235
+ listSkillContent,
236
+ output,
237
+ updateSkillContent
205
238
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skilder-ai/runtime",
3
- "version": "0.9.21",
3
+ "version": "0.9.24",
4
4
  "description": "Skilder Runtime - NodeJS processes for edge execution connected to backend orchestrator via NATS",
5
5
  "author": "Skilder AI",
6
6
  "license": "See license in LICENSE",
@@ -62,7 +62,8 @@
62
62
  "esbuild-plugin-tsc": "^0.5.0",
63
63
  "inversify": "^7.0.0-alpha.5",
64
64
  "reflect-metadata": "^0.2.2",
65
- "@skilder-ai/common": "0.9.21"
65
+ "@skilder-ai/common": "0.9.24",
66
+ "@skilder-ai/mcp-servers": "0.9.24"
66
67
  },
67
68
  "scripts": {
68
69
  "build": "tsx tooling/esbuild.build.ts",