skillscript-runtime 0.15.6 → 0.16.0
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.
- package/README.md +23 -24
- package/dist/compile.js +25 -71
- package/dist/compile.js.map +1 -1
- package/dist/errors.d.ts +2 -7
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -14
- package/dist/errors.js.map +1 -1
- package/dist/filters.d.ts.map +1 -1
- package/dist/filters.js +21 -1
- package/dist/filters.js.map +1 -1
- package/dist/help-content.d.ts.map +1 -1
- package/dist/help-content.js +74 -103
- package/dist/help-content.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lint.d.ts.map +1 -1
- package/dist/lint.js +43 -214
- package/dist/lint.js.map +1 -1
- package/dist/mutation-gate.d.ts +7 -13
- package/dist/mutation-gate.d.ts.map +1 -1
- package/dist/mutation-gate.js +6 -11
- package/dist/mutation-gate.js.map +1 -1
- package/dist/parser.d.ts +25 -74
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +30 -264
- package/dist/parser.js.map +1 -1
- package/dist/runtime.d.ts +1 -10
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +76 -188
- package/dist/runtime.js.map +1 -1
- package/dist/skill-manager.js +1 -1
- package/dist/skill-manager.js.map +1 -1
- package/docs/language-reference.md +3 -24
- package/examples/skillscripts/hello-world.skill.provenance.json +1 -1
- package/package.json +1 -1
- package/examples/skillscripts/cut-release-tag.skill.md +0 -40
package/dist/help-content.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Static help content for the `help` MCP tool
|
|
1
|
+
// Static help content for the `help` MCP tool. Cold-agent
|
|
2
2
|
// language discovery — answers the minimum-viable questions a new
|
|
3
3
|
// author needs to write a working skill, without needing to load the
|
|
4
4
|
// full language reference.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
//
|
|
14
14
|
// Token estimates per topic are approximate; help() output is intended
|
|
15
15
|
// for an agent's working context, not for human reading.
|
|
16
|
-
const QUICKSTART = `# Skillscript — quickstart
|
|
16
|
+
const QUICKSTART = `# Skillscript — quickstart
|
|
17
17
|
|
|
18
18
|
Skillscript is a declarative language for authoring agent workflows. A
|
|
19
19
|
skill is a small program with named targets composed of typed ops. The
|
|
@@ -34,14 +34,14 @@ The three delivery channels are all first-class:
|
|
|
34
34
|
|---|---|---|
|
|
35
35
|
| **Embedded prompt** | \`emit(text="...")\` | Skill output is delivered to the receiving agent via the \`# Output: agent: <name>\` lifecycle hook |
|
|
36
36
|
| **File handoff** | \`file_write(path="...", content="...")\` | Skill writes a file at a known location for the agent to read |
|
|
37
|
-
| **Data handoff** | \`$ data_write content="..." recipients=["agent"] -> R\` | Skill writes a record the target agent picks up via mailbox. Routes through the wired \`data_write\` connector (default: \`DataStoreMcpConnector\` bundled
|
|
37
|
+
| **Data handoff** | \`$ data_write content="..." recipients=["agent"] -> R\` | Skill writes a record the target agent picks up via mailbox. Routes through the wired \`data_write\` connector (default: \`DataStoreMcpConnector\` bundled). |
|
|
38
38
|
|
|
39
39
|
## 2. The three op classes
|
|
40
40
|
|
|
41
41
|
| Class | Shape | Examples |
|
|
42
42
|
|---|---|---|
|
|
43
43
|
| **Mutation statements** | \`$verb VAR = value\` / \`$verb VAR <value>\` | \`$set NAME = "Scott"\`, \`$append LIST <item>\` |
|
|
44
|
-
| **Runtime-intrinsic function-calls** | \`verb(kwarg=value, ...) [-> BINDING]\` | \`emit(text="...")\`, \`
|
|
44
|
+
| **Runtime-intrinsic function-calls** | \`verb(kwarg=value, ...) [-> BINDING]\` | \`emit(text="...")\`, \`inline(skill="...")\`, \`execute_skill(name="...") -> R\`, \`shell(command="...") -> R\`, \`file_read(path="...") -> R\`, \`file_write(path="...", content="...")\`, \`notify(agent="...")\` |
|
|
45
45
|
| **External MCP dispatch** | \`$ <connector> kwarg=value, ... [-> BINDING]\` | \`$ youtrack_search query="..." -> R\`, \`$ llm prompt="..." -> R\`, \`$ data_read mode=fts query="..." -> R\` |
|
|
46
46
|
|
|
47
47
|
The \`$\` prefix marks **state-affecting ops** (mutation OR external dispatch). Function-call shape marks **language-intrinsic ops the runtime knows directly**.
|
|
@@ -71,7 +71,7 @@ default: target_b ← goal target the runtime walks toward
|
|
|
71
71
|
|
|
72
72
|
Use \`\${VAR}\` (canonical) inside any kwarg value or emit body. Field access works: \`\${ISSUE.title}\`. Filter chains: \`\${VAR|trim|length}\`. Missing-value fallback: \`\${VAR|fallback:"-"}\`.
|
|
73
73
|
|
|
74
|
-
The legacy \`$(VAR)\` form still compiles
|
|
74
|
+
The legacy \`$(VAR)\` form still compiles with a tier-2 \`deprecated-substitution-shape\` warning; rewrite to canonical \`\${VAR}\`.
|
|
75
75
|
|
|
76
76
|
## 5. Result binding + fallback
|
|
77
77
|
|
|
@@ -139,25 +139,25 @@ What this example demonstrates:
|
|
|
139
139
|
Use \`help({topic: "ops"})\`, \`help({topic: "frontmatter"})\`, \`help({topic: "examples"})\`,
|
|
140
140
|
\`help({topic: "connectors"})\`, or \`help({topic: "lint-codes"})\` for deeper sections.
|
|
141
141
|
|
|
142
|
-
**Note on
|
|
142
|
+
**Note on substitution form.** Use \`\${VAR}\` for variable substitution. The bare-paren \`$(VAR)\` form still compiles with a tier-2 \`deprecated-substitution-shape\` warning.
|
|
143
143
|
`;
|
|
144
|
-
const OPS = `# Ops reference
|
|
144
|
+
const OPS = `# Ops reference
|
|
145
145
|
|
|
146
146
|
Three op classes, two grammars:
|
|
147
147
|
|
|
148
148
|
| Class | Shape | When you reach for it |
|
|
149
149
|
|---|---|---|
|
|
150
150
|
| **Mutation statements** | \`$verb VAR = value\` / \`$verb VAR <value>\` | Bind / mutate a named variable in scope |
|
|
151
|
-
| **Runtime-intrinsic function-calls** | \`verb(kwarg=value, ...) [-> BINDING]\` | Language-intrinsic side-effects: emit,
|
|
151
|
+
| **Runtime-intrinsic function-calls** | \`verb(kwarg=value, ...) [-> BINDING]\` | Language-intrinsic side-effects: emit, notify, file I/O, shell, composition |
|
|
152
152
|
| **External MCP dispatch** | \`$ <connector> kwarg=value, ... [-> BINDING]\` | Any tool resolved through \`connectors.json\` (LLM calls, data queries, business tools) |
|
|
153
153
|
|
|
154
|
-
The \`$\` prefix marks **state-affecting** ops (mutation OR external dispatch). Function-call shape marks **language-intrinsic** ops the runtime knows directly.
|
|
154
|
+
The \`$\` prefix marks **state-affecting** ops (mutation OR external dispatch). Function-call shape marks **language-intrinsic** ops the runtime knows directly.
|
|
155
155
|
|
|
156
156
|
## Class 1: Mutation statements
|
|
157
157
|
|
|
158
158
|
### \`$set VAR = value\`
|
|
159
159
|
|
|
160
|
-
Bind a variable; runtime resolves \`\${REF}\` substitutions in the RHS at bind time
|
|
160
|
+
Bind a variable; runtime resolves \`\${REF}\` substitutions in the RHS at bind time. Value can be a literal, a \`\${REF}\` interpolation, or a JSON literal (object / array / bool / null).
|
|
161
161
|
|
|
162
162
|
\`\`\`
|
|
163
163
|
$set GREETING = "Hello, \${USER}!"
|
|
@@ -167,7 +167,7 @@ $set CONFIG = {"timeout": 30, "retries": 3}
|
|
|
167
167
|
|
|
168
168
|
### \`$append VAR <value>\`
|
|
169
169
|
|
|
170
|
-
Append to a binding.
|
|
170
|
+
Append to a binding. Type-dispatches on the existing target:
|
|
171
171
|
- **List-typed target** → push (\`$set FOUND = []\` then \`$append FOUND \${ID}\`)
|
|
172
172
|
- **String-typed target** → concatenate (\`$set REPORT = ""\` then \`$append REPORT "more text"\`)
|
|
173
173
|
|
|
@@ -187,7 +187,7 @@ The append mutates the outer-scope binding (unlike \`$set\`, which is loop-local
|
|
|
187
187
|
|
|
188
188
|
## Class 2: Runtime-intrinsic function-calls
|
|
189
189
|
|
|
190
|
-
Closed set: \`emit\`, \`notify\`, \`
|
|
190
|
+
Closed set: \`emit\`, \`notify\`, \`inline\`, \`execute_skill\`, \`shell\`, \`file_read\`, \`file_write\`. Unknown function-call names fire \`unknown-runtime-op\` tier-1 with remediation "if this is an MCP tool, use \`$ tool args -> R\` shape instead."
|
|
191
191
|
|
|
192
192
|
### \`emit(text="...")\` — output to skill consumer
|
|
193
193
|
|
|
@@ -200,7 +200,7 @@ emit(text="\${ISSUES.totalCount} open showstoppers in \${PROJECT}")
|
|
|
200
200
|
|
|
201
201
|
### \`notify(agent="...", message?, connectors?) -> ACK\` — mid-skill agent alert
|
|
202
202
|
|
|
203
|
-
Synchronous alert to a named agent via wired AgentConnector(s).
|
|
203
|
+
Synchronous alert to a named agent via wired AgentConnector(s).
|
|
204
204
|
**Contrast with \`emit\`:** \`emit\` accumulates into end-of-skill bulk delivery
|
|
205
205
|
via the \`# Output: agent: <name>\` lifecycle hook; \`notify\` fires
|
|
206
206
|
mid-execution to interrupt or page an agent before the skill completes.
|
|
@@ -221,14 +221,6 @@ notify(agent="reviewer", connectors=["slack"]) -> A
|
|
|
221
221
|
notify(agent="ops", message="911", event_type="ticket-911", correlation_id="\${INCIDENT_ID}")
|
|
222
222
|
\`\`\`
|
|
223
223
|
|
|
224
|
-
### \`ask(prompt="...") -> R\` — prompt the user
|
|
225
|
-
|
|
226
|
-
Interactive only. Autonomous-mode dispatch fails with a clean error (use \`# Autonomous: true\` skill flag to disable the gate).
|
|
227
|
-
|
|
228
|
-
\`\`\`
|
|
229
|
-
ask(prompt="Proceed with auto-assignment for P0/P1?") -> APPROVAL
|
|
230
|
-
\`\`\`
|
|
231
|
-
|
|
232
224
|
### \`shell(command="...", unsafe=true) [-> R]\` — local subprocess
|
|
233
225
|
|
|
234
226
|
Default mode: structural spawn — one binary, no shell metacharacters, no pipes/redirects. \`unsafe=true\` opts into full bash; tier-2 lint warns.
|
|
@@ -238,9 +230,9 @@ shell(command="git status --porcelain") -> STATUS
|
|
|
238
230
|
shell(command="echo hi && date +%Y", unsafe=true) -> OUT
|
|
239
231
|
\`\`\`
|
|
240
232
|
|
|
241
|
-
**Argv quoting
|
|
233
|
+
**Argv quoting:** structural-spawn tokenizes the command on whitespace then strips quotes around each token. To pass quoted args (e.g., JSON payloads, strings with spaces), either set \`unsafe=true\` and let bash quote-handle, OR write the payload to a file via \`file_write\` and read it back inside the structurally-spawned command (e.g., \`shell(command="cat /tmp/payload.json | jq .field") -> R\` under \`unsafe=true\`). The structural mode is deliberately conservative.
|
|
242
234
|
|
|
243
|
-
**Container FS isolation
|
|
235
|
+
**Container FS isolation:** shell() runs inside the runtime's container/sandbox. Writes to \`/tmp/x\` from \`shell(command="touch /tmp/x")\` land in the RUNTIME's \`/tmp/x\`, not on the author's host. Same isolation as \`file_read\` / \`file_write\` — cross-namespace work needs a known shared volume.
|
|
244
236
|
|
|
245
237
|
### \`file_read(path="...") -> R\` — read file contents
|
|
246
238
|
|
|
@@ -275,7 +267,7 @@ execute_skill(name="extract-json-number", JSON_BLOB="\${RAW}", FIELD_PATH="total
|
|
|
275
267
|
emit(text="Extracted: \${RESULT.final_vars.VALUE|trim}")
|
|
276
268
|
\`\`\`
|
|
277
269
|
|
|
278
|
-
|
|
270
|
+
\`name\` is the canonical kwarg, aligning with \`skill_read({name})\` / \`skill_write({name})\` / \`skill_status({name})\`. \`skill_name\` is accepted as a silent back-compat alias.
|
|
279
271
|
|
|
280
272
|
## Class 3: External MCP dispatch
|
|
281
273
|
|
|
@@ -300,9 +292,9 @@ Resolves the tool name against the adopter's \`connectors.json\`. Flat form (\`$
|
|
|
300
292
|
| Substitution | \`id=\${BUG_ID}\` | resolved at dispatch time |
|
|
301
293
|
| Quoted substitution | \`query="\${QUERY}"\` | quoted resolution (recommended when value may contain whitespace) |
|
|
302
294
|
|
|
303
|
-
**
|
|
295
|
+
**Lint warning** \`unquoted-substitution-in-kwarg-value\` fires when an unquoted \`\${VAR}\` sits in kwarg-value position and VAR's binding origin suggests whitespace. Wrap as \`key="\${VAR}"\` to prevent silent arg truncation if the resolved value contains spaces.
|
|
304
296
|
|
|
305
|
-
**\`$ json_parse \${VAR} -> P\`**
|
|
297
|
+
**\`$ json_parse \${VAR} -> P\`** parses input as JSON and binds the structured value to \`P\`. Dotted descent via \`\${P.field}\` works in conditions and emit. Throws on malformed JSON (caught by \`else:\` / \`# OnError:\`).
|
|
306
298
|
|
|
307
299
|
\`\`\`
|
|
308
300
|
# Vars: PAYLOAD={"status":"ok","count":3}
|
|
@@ -323,9 +315,9 @@ $ data_read mode=fts query="recent incidents" limit=10 -> CONTEXT
|
|
|
323
315
|
$ data_write content="\${REPORT}" recipients=[oncall] tags=[morning-sweep] approved="cron deliverable" -> R
|
|
324
316
|
\`\`\`
|
|
325
317
|
|
|
326
|
-
**
|
|
318
|
+
**Bundled bridges + substrate config.** Default deployments auto-wire \`llm\` + \`data_read\` + \`data_write\` MCP connectors via bundled bridges — but **only when the underlying substrate is configured**. Base config: \`SqliteDataStore\` is wired conditionally (\`substrate.data_store: "sqlite"\`); \`LocalModel\` is \`null\` by default. To enable \`$ llm\`, set \`substrate.local_model: "ollama"\` in \`~/.skillscript/connectors.json\` (then restart the runtime host). To enable \`$ data_read\` / \`$ data_write\`, set \`substrate.data_store: "sqlite"\` (default value in the scaffold). The bridges: \`LocalModelMcpConnector\` over \`LocalModel\`; \`DataStoreMcpConnector\` over \`DataStore\` — same instance under both \`data_read\` + \`data_write\` names so query + write share substrate. Adopters with their own substrate impl wire it programmatically. See [\`docs/configuration.md\`](docs/configuration.md) for the substrate config reference.
|
|
327
319
|
|
|
328
|
-
**One canonical call surface per concern.** \`$ data_read\` is **the** data-retrieval call surface — one contract (\`mode=... query=... limit=N -> R\` returning \`{items: [...]}\` envelope), one connector name. Both bare-form (\`$ data_read ...\`) and dotted-form (\`$ data_read.query ...\`) dispatch through the same registered connector. Same shape for \`$ llm\` (
|
|
320
|
+
**One canonical call surface per concern.** \`$ data_read\` is **the** data-retrieval call surface — one contract (\`mode=... query=... limit=N -> R\` returning \`{items: [...]}\` envelope), one connector name. Both bare-form (\`$ data_read ...\`) and dotted-form (\`$ data_read.query ...\`) dispatch through the same registered connector. Same shape for \`$ llm\` (\`prompt=... [maxTokens=N] [model="..."] -> R\` returns the response string; optional op-level \`timeout=N\` kwarg overrides skill-level \`# Timeout:\`; optional trailing \`(fallback: "...")\` fires on throw or empty result). \`$ llm\` and \`$ data_read\` are the canonical surfaces for LLM dispatch and data retrieval.
|
|
329
321
|
|
|
330
322
|
## Pipe filters
|
|
331
323
|
|
|
@@ -337,32 +329,32 @@ Apply on \`\${VAR|filter}\` references; chain left-to-right.
|
|
|
337
329
|
| \`shell\` | POSIX single-quote escape |
|
|
338
330
|
| \`json\` | JSON.stringify |
|
|
339
331
|
| \`trim\` | Whitespace trim |
|
|
340
|
-
| \`length\` | Array element count or string char count
|
|
341
|
-
| \`fallback:"X"\` |
|
|
342
|
-
| \`isodate\` |
|
|
332
|
+
| \`length\` | Array element count or string char count |
|
|
333
|
+
| \`fallback:"X"\` | Coalesce-on-missing: when the upstream ref is unresolved, substitute literal \`X\` and continue the chain. Positional — \`\${VAR|fallback:"-"|upper}\` defaults-then-uppercases. |
|
|
334
|
+
| \`isodate\` | Format an epoch timestamp (ms or sec, auto-detected by magnitude) as ISO-8601. Passes already-ISO strings through unchanged. \`\${EVENT.fired_at_unix|isodate}\`. |
|
|
343
335
|
|
|
344
|
-
**\`\${NOW}\` ambient ref** substitutes as an ISO-8601 string
|
|
336
|
+
**\`\${NOW}\` ambient ref** substitutes as an ISO-8601 string. Numeric epoch values remain available as \`\${EVENT.fired_at}\` (ms) and \`\${EVENT.fired_at_unix}\` (sec).
|
|
345
337
|
|
|
346
338
|
## Conditional grammar
|
|
347
339
|
|
|
348
340
|
\`\`\`
|
|
349
341
|
if \${VAR}: ← truthy check
|
|
350
|
-
if not \${VAR}: ← falsy check
|
|
342
|
+
if not \${VAR}: ← falsy check
|
|
351
343
|
if \${VAR} == "literal": ← equality vs literal
|
|
352
344
|
if \${VAR} == \${OTHER}: ← equality vs ref
|
|
353
345
|
if \${VAR} != "literal": ← inequality
|
|
354
|
-
if \${N} < "10": ← numeric comparison
|
|
346
|
+
if \${N} < "10": ← numeric comparison
|
|
355
347
|
if \${N} >= \${THRESHOLD}: ← numeric vs ref
|
|
356
348
|
if \${M.id} in \${SEEN}: ← set membership
|
|
357
349
|
if \${M.id} not in \${SEEN}:
|
|
358
|
-
if \${A} == "ok" and \${B} == "ok": ← logical AND
|
|
359
|
-
if \${A} == "urgent" or \${B} > "5": ← logical OR
|
|
360
|
-
if not \${A} and (\${B} or \${C}): ← compound with parens + not
|
|
350
|
+
if \${A} == "ok" and \${B} == "ok": ← logical AND
|
|
351
|
+
if \${A} == "urgent" or \${B} > "5": ← logical OR
|
|
352
|
+
if not \${A} and (\${B} or \${C}): ← compound with parens + not
|
|
361
353
|
\`\`\`
|
|
362
354
|
|
|
363
355
|
Branches via \`if:\` / \`elif COND:\` / \`else:\`. The \`else:\` after a target body is a separate error-handler block (distinguished by indentation scope).
|
|
364
356
|
|
|
365
|
-
### Compound conditions
|
|
357
|
+
### Compound conditions
|
|
366
358
|
|
|
367
359
|
\`and\` / \`or\` / \`not\` connect simple conditions into compound expressions:
|
|
368
360
|
|
|
@@ -370,21 +362,9 @@ Branches via \`if:\` / \`elif COND:\` / \`else:\`. The \`else:\` after a target
|
|
|
370
362
|
- **Parentheses** override precedence: \`(a or b) and c\`
|
|
371
363
|
- **Short-circuit evaluation**: AND skips RHS if LHS is false; OR skips RHS if LHS is true. Useful for the validate-then-access pattern — \`if \${X} == "ok" and \${X.field} ...\` won't error on the field access when \`\${X} == "ok"\` is false.
|
|
372
364
|
|
|
373
|
-
##
|
|
365
|
+
## Substitution form
|
|
374
366
|
|
|
375
|
-
|
|
376
|
-
|---|---|
|
|
377
|
-
| \`! text\` | \`emit(text="text")\` |
|
|
378
|
-
| \`?? "prompt" -> R\` | \`ask(prompt="prompt") -> R\` |
|
|
379
|
-
| \`@ cmd args [-> R]\` | \`shell(command="cmd args") [-> R]\` |
|
|
380
|
-
| \`@ unsafe cmd\` | \`shell(command="cmd", unsafe=true)\` |
|
|
381
|
-
| \`& skill-name\` | \`inline(skill="skill-name")\` |
|
|
382
|
-
| \`~ prompt="..." -> R\` | \`$ llm prompt="..." -> R\` (auto-wired via \`LocalModelMcpConnector\` bridge in default deployments) |
|
|
383
|
-
| \`> mode=... query=... -> R\` | \`$ data_read mode=... query=... -> R\` (auto-wired via \`DataStoreMcpConnector\` bridge in default deployments) |
|
|
384
|
-
| \`$(VAR)\` | \`\${VAR}\` |
|
|
385
|
-
| \`(approved: "reason")\` trailer | \`approved="reason"\` kwarg |
|
|
386
|
-
|
|
387
|
-
All legacy forms compile during v0.7.x with tier-2 \`deprecated-symbol-op\` / \`deprecated-substitution-shape\` warnings. Tier-1 promotion (refuse-to-compile) lands in v0.8/v0.9.
|
|
367
|
+
Use \`\${VAR}\` for variable substitution. The bare-paren \`$(VAR)\` form still compiles with a tier-2 \`deprecated-substitution-shape\` warning; rewrite to \`\${VAR}\`.
|
|
388
368
|
`;
|
|
389
369
|
const FRONTMATTER = `# Frontmatter headers — full reference
|
|
390
370
|
|
|
@@ -393,22 +373,22 @@ Skill files open with \`# Key: value\` headers. Order isn't significant.
|
|
|
393
373
|
## Required
|
|
394
374
|
|
|
395
375
|
- \`# Skill: <name>\` — identity. Reserved keywords (\`default\`, \`needs\`, etc.) rejected.
|
|
396
|
-
- \`# Status: Draft | Approved v1:<token> | Disabled\` — lifecycle state.
|
|
376
|
+
- \`# Status: Draft | Approved v1:<token> | Disabled\` — lifecycle state. Approved status requires a stamped \`vN:<token>\` (e.g. \`Approved v1:a1b2c3d4\`); the dashboard's approval flow stamps it. Naked \`Approved\` (no token) refuses to execute. Only Approved+verified skills fire via triggers, MCP \`execute_skill\`, in-skill \`$ execute_skill\`, or compile-time \`inline(...)\`.
|
|
397
377
|
|
|
398
378
|
## Common
|
|
399
379
|
|
|
400
380
|
- \`# Description: <prose>\` — human-readable explanation; surfaces in dashboards.
|
|
401
|
-
- \`# Type: procedural | data\` — \`procedural\` (default) for runtime-fired skills; \`data\` for compile-time-inlined fragments referenced by \`inline(skill="...")
|
|
381
|
+
- \`# Type: procedural | data\` — \`procedural\` (default) for runtime-fired skills; \`data\` for compile-time-inlined fragments referenced by \`inline(skill="...")\`.
|
|
402
382
|
- \`# Vars: NAME=default, OTHER\` — declared variables. \`NAME=default\` provides a default; bare \`NAME\` is required at invocation.
|
|
403
383
|
- \`# Triggers: cron: 0 9 * * *, session: start\` — autonomous-dispatch sources. Comma-separated entries split by source-keyword boundary; cron expressions with commas (\`30,45 9 * * 1-5\`) parse correctly.
|
|
404
|
-
- \`# Output: text | agent: <name> | template: <name> | file: path | none\` — output routing. Five kinds, all substrate-neutral. **Two substrate-neutral lifecycle hooks
|
|
384
|
+
- \`# Output: text | agent: <name> | template: <name> | file: path | none\` — output routing. Five kinds, all substrate-neutral. **Two substrate-neutral lifecycle hooks**: \`agent: <name>\` routes via AgentConnector as augment-kind delivery; \`template: <name>\` routes as template-kind delivery (receiving agent executes the rendered playbook). Both default to **joined emissions string** (the \`emit(text=...)\` lines concatenated with newlines). \`text\` / \`file:\` default to the **last-bound variable value** (structured), falling back to the emissions array when no var was bound. If your skill emits multiple lines and a downstream consumer only sees the final tool output via \`outputs.text\`, that's the structured-default behavior — use \`# Output: agent: <name>\` (or another text-coerced kind) to publish the joined emissions instead. **For substrate-specific delivery destinations** (Slack, WhatsApp, Discord, pagerduty, custom dashboards, etc.) — that's contract-between-the-skill-and-the-substrate territory, downstream of the language. Two paths: (1) \`$ <connector>.<tool> ...\` inside the skill body to dispatch through an adopter-wired MCP connector, or (2) deliver via \`agent: <name>\` to an agent whose AgentConnector decides how to surface the result.
|
|
405
385
|
- \`# OnError: <fallback-skill-name>\` — error-handler skill invoked when an op fails and no target-level \`else:\` catches.
|
|
406
|
-
- \`# Autonomous: true | false\` — declarative authorship intent for unattended-execution skills (cron-fired, agent-fired, etc.).
|
|
386
|
+
- \`# Autonomous: true | false\` — declarative authorship intent for unattended-execution skills (cron-fired, agent-fired, etc.). Silences \`unconfirmed-mutation\` lint warnings for the whole skill (since the user-confirmation pattern doesn't apply to autonomous skills); reserved as the canonical autonomous-skill category marker for future rules + scheduling defaults + discovery surfaces. Omitted = interactive (default).
|
|
407
387
|
|
|
408
388
|
## Augmenting / Template only
|
|
409
389
|
|
|
410
|
-
- \`# Event-type: <string>\` — adopter-defined routing vocabulary; flows to \`DeliveryMeta.event_type\` on lifecycle-hook deliveries as the frontmatter fallback. \`notify(event_type=...)\` kwarg takes precedence per-emit.
|
|
411
|
-
- \`# Templates: <skill_name>, <skill_name>\` — comma-separated Template-skill names referenced by this skill; validated for existence by \`unknown-template-reference\` lint.
|
|
390
|
+
- \`# Event-type: <string>\` — adopter-defined routing vocabulary; flows to \`DeliveryMeta.event_type\` on lifecycle-hook deliveries as the frontmatter fallback. \`notify(event_type=...)\` kwarg takes precedence per-emit.
|
|
391
|
+
- \`# Templates: <skill_name>, <skill_name>\` — comma-separated Template-skill names referenced by this skill; validated for existence by \`unknown-template-reference\` lint.
|
|
412
392
|
|
|
413
393
|
(\`# Event-type:\` fires \`unused-augmenting-header\` lint warning if set on a Headless skill — one with no \`agent:\` or \`template:\` output declaration.)
|
|
414
394
|
|
|
@@ -429,7 +409,7 @@ Skill files open with \`# Key: value\` headers. Order isn't significant.
|
|
|
429
409
|
# Triggers: cron: 0 7 * * *, agent-event: drift-detected
|
|
430
410
|
\`\`\`
|
|
431
411
|
|
|
432
|
-
Trigger sources
|
|
412
|
+
Trigger sources: \`cron\` (poll-based), \`session\` (\`start\` / \`end\` phases). Parse-only (firing not yet wired): \`event\`, \`agent-event\`, \`file-watch\`, \`sensor\`.
|
|
433
413
|
|
|
434
414
|
## Ambient variables (auto-populated by the runtime)
|
|
435
415
|
|
|
@@ -440,11 +420,11 @@ The runtime injects these refs — don't declare them in \`# Vars:\` / \`# Requi
|
|
|
440
420
|
| \`$(NOW)\` | runtime clock | ISO-8601 timestamp at op-dispatch time |
|
|
441
421
|
| \`$(USER)\` | invocation context | Identity passed via \`agentId\` / CLI user |
|
|
442
422
|
| \`$(SESSION_CONTEXT)\` | runtime session | Free-form session snapshot for cross-skill carry |
|
|
443
|
-
| \`$(TRIGGER_TYPE)\` | scheduler | \`cron\` / \`session\` / \`webhook\` / \`agent\` / \`cli\` / \`dashboard\` / \`inline\`
|
|
423
|
+
| \`$(TRIGGER_TYPE)\` | scheduler | \`cron\` / \`session\` / \`webhook\` / \`agent\` / \`cli\` / \`dashboard\` / \`inline\` |
|
|
444
424
|
| \`$(TRIGGER_PAYLOAD)\` | scheduler | JSON-serializable payload attached to the firing trigger |
|
|
445
425
|
| \`$(ERROR_CONTEXT)\` | runtime error handler | Inside \`else:\` and \`# OnError:\` only; \`.kind\` / \`.message\` / \`.target\` accessible |
|
|
446
426
|
|
|
447
|
-
\`EVENT.*\` auto-populates on cron-fired skills
|
|
427
|
+
\`EVENT.*\` auto-populates on cron-fired skills:
|
|
448
428
|
|
|
449
429
|
| Ref | Value |
|
|
450
430
|
|---|---|
|
|
@@ -454,14 +434,13 @@ The runtime injects these refs — don't declare them in \`# Vars:\` / \`# Requi
|
|
|
454
434
|
| \`$(EVENT.fired_at_plus_1d_unix)\` | \`fired_at_unix + 86_400\` |
|
|
455
435
|
| \`$(EVENT.fired_at_plus_7d_unix)\` | \`fired_at_unix + 604_800\` |
|
|
456
436
|
|
|
457
|
-
(v0.2.12 Bug 24 — \`EVENT.*\` was undocumented before this release.)
|
|
458
437
|
|
|
459
438
|
## Variable reference forms
|
|
460
439
|
|
|
461
440
|
\`\`\`
|
|
462
441
|
$(VAR) bare ref (any declared/output-bound/ambient name)
|
|
463
442
|
$(VAR.field) dotted field access on JSON-bound vars + ambient family
|
|
464
|
-
$(LIST.0) indexed access
|
|
443
|
+
$(LIST.0) indexed access
|
|
465
444
|
$(LIST.0.id) mixed indexed + field-access (chains arbitrarily deep)
|
|
466
445
|
$(VAR|filter) filter pipe (see \`help({topic: "ops"})\` for filter list)
|
|
467
446
|
$(VAR.field|filter) field-access then filter
|
|
@@ -469,7 +448,7 @@ $(VAR.field|filter) field-access then filter
|
|
|
469
448
|
|
|
470
449
|
Unresolved refs: tier-1 \`undeclared-var\` at compile, \`UnresolvedVariableError\` at runtime.
|
|
471
450
|
`;
|
|
472
|
-
const EXAMPLES = `# Five canonical worked skills
|
|
451
|
+
const EXAMPLES = `# Five canonical worked skills
|
|
473
452
|
|
|
474
453
|
## 1. Minimal (single target, no dependencies)
|
|
475
454
|
|
|
@@ -566,7 +545,7 @@ default: render
|
|
|
566
545
|
|
|
567
546
|
Demonstrates: \`execute_skill(...)\` runtime composition (each child runs through the runtime under a depth-counted chain), per-call \`(fallback: ...)\` for resilience, kwarg forwarding, \`->\` binding child output for downstream reference.
|
|
568
547
|
|
|
569
|
-
## 5. Dedup-by-id with the accumulator
|
|
548
|
+
## 5. Dedup-by-id with the accumulator
|
|
570
549
|
|
|
571
550
|
\`\`\`
|
|
572
551
|
# Skill: dedup-walk
|
|
@@ -634,7 +613,7 @@ default: go
|
|
|
634
613
|
|
|
635
614
|
Demonstrates: \`$ data_write\` substrate-portable durable handoff (returns \`{id, created_at}\` envelope). \`recipients=[...]\` is the bracket-array literal form — the receiving agent's mailbox surfaces this on their next session check.
|
|
636
615
|
|
|
637
|
-
## 7. File output with confirmed write
|
|
616
|
+
## 7. File output with confirmed write
|
|
638
617
|
|
|
639
618
|
\`\`\`
|
|
640
619
|
# Skill: triage-report
|
|
@@ -651,7 +630,7 @@ build:
|
|
|
651
630
|
default: build
|
|
652
631
|
\`\`\`
|
|
653
632
|
|
|
654
|
-
Demonstrates: \`$append\` accumulator over a string + \`file_write\` side effect. The
|
|
633
|
+
Demonstrates: \`$append\` accumulator over a string + \`file_write\` side effect. The runtime emits a \`[file_write] wrote N bytes to <path>\` transcript line on success so the caller can confirm the write landed.
|
|
655
634
|
|
|
656
635
|
## Per-substrate return-shape note
|
|
657
636
|
|
|
@@ -665,11 +644,11 @@ Different connectors return different envelope shapes. Cold authors authoring ag
|
|
|
665
644
|
|
|
666
645
|
Don't assume \`.totalCount\` exists on every envelope — it's a ticketing convention, not a universal one. Use the runtime's \`runtime_capabilities()\` + introspection to confirm shapes when in doubt.
|
|
667
646
|
|
|
668
|
-
**Array length
|
|
647
|
+
**Array length:** to get the count of an array bound from a substrate query (e.g., \`\${ITEMS.items}\` is the array), use the **\`|length\` filter**: \`\${ITEMS.items|length}\`. The JS convention \`\${ITEMS.items.length}\` does NOT work — skillscript's dotted-ref resolver does string-keyed property descent and \`.length\` on an array returns undefined at substitution time. Filter syntax is canonical for collection-shape operations across all substrates.
|
|
669
648
|
`;
|
|
670
649
|
const COMPOSITION = `# Composition — composing skills from other skills
|
|
671
650
|
|
|
672
|
-
Skillscript has two composition primitives
|
|
651
|
+
Skillscript has two composition primitives. Both let one skill draw on another's output, with different semantics around when the child runs.
|
|
673
652
|
|
|
674
653
|
## 1. \`inline(skill="<name>")\` — compile-time data-skill inline
|
|
675
654
|
|
|
@@ -695,7 +674,7 @@ gather:
|
|
|
695
674
|
execute_skill(skill_name="mailbox-triage", inputs={"USER": "\${USER_NAME}"}) -> MAIL
|
|
696
675
|
\`\`\`
|
|
697
676
|
|
|
698
|
-
Two kwarg-forwarding styles, both supported
|
|
677
|
+
Two kwarg-forwarding styles, both supported:
|
|
699
678
|
- **Bare kwargs** — \`USER="\${USER_NAME}"\` natural skill grammar
|
|
700
679
|
- **\`inputs={...}\` JSON** — useful when forwarding many fields verbatim
|
|
701
680
|
|
|
@@ -704,7 +683,7 @@ The bound \`-> R\` carries the child's full execution record (final_vars, transc
|
|
|
704
683
|
## Limits & lint signals
|
|
705
684
|
|
|
706
685
|
- **Recursion**: depth-5 chain by default (\`ExecuteSkillRecursionError\` if exceeded).
|
|
707
|
-
- **Lint** (\`unknown-skill-reference\`, tier-2
|
|
686
|
+
- **Lint** (\`unknown-skill-reference\`, tier-2): both \`inline(skill="<name>")\` and \`execute_skill(skill_name="<name>", ...)\` validate the child exists in the SkillStore at compile time. Forward references are allowed: missing skills lint as warning (not error), runtime throws \`MissingSkillReferenceError\` if still unresolved at execute. Tier-3 \`deferred-skill-reference\` advisory confirms when the deferred-resolution path is engaged.
|
|
708
687
|
- **Lint** (\`disabled-skill-reference\`, tier-1): any composition primitive pointing at a \`# Status: Disabled\` skill blocks compile.
|
|
709
688
|
|
|
710
689
|
## When to use which
|
|
@@ -714,12 +693,6 @@ The bound \`-> R\` carries the child's full execution record (final_vars, transc
|
|
|
714
693
|
| Static knowledge in a prompt | \`inline(skill="<data-skill>")\` |
|
|
715
694
|
| Child output bound into parent scope | \`execute_skill(skill_name="<skill>", ...) -> R\` |
|
|
716
695
|
|
|
717
|
-
## Legacy forms (grace period)
|
|
718
|
-
|
|
719
|
-
- \`& <skill-name>\` → \`inline(skill="<skill-name>")\` (compile-time inline)
|
|
720
|
-
- \`& invoke <skill-name>\` (removed concept) → \`execute_skill(skill_name="<skill-name>")\`
|
|
721
|
-
- \`$ execute_skill skill_name="<child>" ... -> R\` → \`execute_skill(skill_name="<child>", ...) -> R\` (legacy MCP-dispatch shape still compiles during grace; canonical is the function-call shape)
|
|
722
|
-
|
|
723
696
|
See \`help({topic: "examples"})\` example 4 for a worked orchestrator skill.
|
|
724
697
|
`;
|
|
725
698
|
const CONNECTORS_PROLOGUE = `# Connectors
|
|
@@ -729,12 +702,12 @@ Skillscript skills don't import packages — they invoke connectors. The runtime
|
|
|
729
702
|
| Contract | Purpose | Op surface |
|
|
730
703
|
|---|---|---|
|
|
731
704
|
| \`SkillStore\` | Skill source persistence + status lifecycle | implicit (\`inline\` / \`execute_skill\` reference) |
|
|
732
|
-
| \`LocalModel\` | LLM inference | \`$ llm\` MCP dispatch via \`LocalModelMcpConnector\` bridge — auto-wired
|
|
733
|
-
| \`DataStore\` | Data persistence + query | \`$ data_read\` MCP dispatch via \`DataStoreMcpConnector\` bridge — auto-wired when \`substrate.data_store\` is set (default
|
|
705
|
+
| \`LocalModel\` | LLM inference | \`$ llm\` MCP dispatch via \`LocalModelMcpConnector\` bridge — auto-wired when \`substrate.local_model\` is set in \`connectors.json\`. Default: off. |
|
|
706
|
+
| \`DataStore\` | Data persistence + query | \`$ data_read\` MCP dispatch via \`DataStoreMcpConnector\` bridge — auto-wired when \`substrate.data_store\` is set (default scaffold: \`"sqlite"\`). |
|
|
734
707
|
| \`McpConnector\` | MCP tool dispatch — all external tools | \`$ <connector_name> args\` |
|
|
735
708
|
| \`AgentConnector\` | Deliver augment/template payloads | \`# Output: agent:\` / \`template:\` |
|
|
736
709
|
|
|
737
|
-
**
|
|
710
|
+
**Substrate framing.** Canonical syntax routes substrate-specific dispatch through MCP (\`$ llm\` / \`$ data_read\`). Runtime hosts (MCP server + web dashboard) honor whichever substrate the deployment configures via \`~/.skillscript/connectors.json\`:
|
|
738
711
|
|
|
739
712
|
\`\`\`json
|
|
740
713
|
{
|
|
@@ -748,23 +721,23 @@ Skillscript skills don't import packages — they invoke connectors. The runtime
|
|
|
748
721
|
|
|
749
722
|
Short-form (\`"sqlite"\`, \`"ollama"\`, \`"filesystem"\`, \`null\`) wires bundled defaults. Object form (\`{type, config}\`) overrides config. Adopters with custom substrate impls (AMP, Pinecone, etc.) write a programmatic bootstrap. Authoring CLI commands (\`skillfile compile\` / \`lint\` / \`audit\` / \`list\`) stay filesystem-pinned regardless. See \`docs/configuration.md\`.
|
|
750
723
|
|
|
751
|
-
**Cold-author footgun
|
|
724
|
+
**Cold-author footgun.** \`$ llm\` errors with \`No \`llm\` connector wired. Set \`substrate.local_model: 'ollama'\` in connectors.json...\` when the substrate slot is null. Same for \`$ data_read\` / \`$ data_write\` against null \`substrate.data_store\`. The error message points at the right config knob — no need to dig through API docs.
|
|
752
725
|
|
|
753
|
-
**Adopter-extensible class registration
|
|
726
|
+
**Adopter-extensible class registration.** Custom \`McpConnector\` classes that are JSON-instantiable register via \`registerConnectorClass(name, entry)\` from adopter bootstrap before \`loadConnectorsConfig\` runs. See \`examples/custom-bootstrap.example.ts\`.
|
|
754
727
|
|
|
755
|
-
**Canonical runtime config
|
|
728
|
+
**Canonical runtime config.** \`skillscript.config.json\` externalizes runtime knobs (skillsDir, traceDir, dashboard port, etc.) so the two-instance posture (dev + adopter on same machine) works as copy-and-tweak. CLI flags override file values; file values override defaults. See \`skillscript.config.json.example\`.
|
|
756
729
|
|
|
757
|
-
**One canonical call surface per concern.** \`$ data_read\` is **the** data-retrieval call surface — one contract (\`mode=... query=... limit=N -> R\` returning \`{items: [...]}\` envelope), one connector name. Both bare-form (\`$ data_read ...\`) and dotted-form (\`$ data_read.query ...\`) dispatch through the same registered connector. Same shape for \`$ llm\` (
|
|
730
|
+
**One canonical call surface per concern.** \`$ data_read\` is **the** data-retrieval call surface — one contract (\`mode=... query=... limit=N -> R\` returning \`{items: [...]}\` envelope), one connector name. Both bare-form (\`$ data_read ...\`) and dotted-form (\`$ data_read.query ...\`) dispatch through the same registered connector. Same shape for \`$ llm\` (\`prompt=... [maxTokens=N] [model="..."] -> R\` returns the response string; optional op-level \`timeout=N\` kwarg overrides skill-level \`# Timeout:\`; optional trailing \`(fallback: "...")\` fires on throw or empty result). \`$ llm\` and \`$ data_read\` are the canonical surfaces for LLM dispatch and data retrieval.
|
|
758
731
|
|
|
759
732
|
## Discovery
|
|
760
733
|
|
|
761
734
|
\`runtime_capabilities()\` reports the live picture: which connectors are registered, which feature flags they advertise, and which named instances exist (e.g., \`default\` / \`qwen\` LocalModels, \`youtrack\` McpConnector).
|
|
762
735
|
|
|
763
|
-
For shell execution (\`shell(...)\` op), \`runtime_capabilities\` also reports \`shellExecution.mode\` (\`"structural-spawn"\`) and \`shellExecution.unsafe_enabled\` (whether \`shell(command=..., unsafe=true)\`
|
|
736
|
+
For shell execution (\`shell(...)\` op), \`runtime_capabilities\` also reports \`shellExecution.mode\` (\`"structural-spawn"\`) and \`shellExecution.unsafe_enabled\` (whether \`shell(command=..., unsafe=true)\` is permitted in this deployment).
|
|
764
737
|
|
|
765
738
|
## Container filesystem isolation
|
|
766
739
|
|
|
767
|
-
When the runtime is sandboxed (Docker container, deployed VM, etc.), the runtime's filesystem is namespace-isolated from the author's host. \`file_read("/tmp/x")\` and \`file_write(path="/tmp/x", ...)\` operate on the *runtime's* \`/tmp\`, not the host's. For cross-namespace work, use a known shared volume path or expose the file via a mount point both sides see.
|
|
740
|
+
When the runtime is sandboxed (Docker container, deployed VM, etc.), the runtime's filesystem is namespace-isolated from the author's host. \`file_read("/tmp/x")\` and \`file_write(path="/tmp/x", ...)\` operate on the *runtime's* \`/tmp\`, not the host's. For cross-namespace work, use a known shared volume path or expose the file via a mount point both sides see.
|
|
768
741
|
`;
|
|
769
742
|
const LINT_CODES = `# Lint rule index
|
|
770
743
|
|
|
@@ -794,36 +767,34 @@ Three tiers per ERD §3:
|
|
|
794
767
|
- \`circular-dependency\` — dep cycle between targets
|
|
795
768
|
- \`missing-dependency\` — \`needs:\` references a target not declared
|
|
796
769
|
- \`missing-skillstore-for-data-ref\` — \`&\` op fires without a SkillStore wired
|
|
797
|
-
- \`unsafe-shell-disabled\` —
|
|
798
|
-
- \`uninitialized-append\` — \`$append VAR ...\` where VAR has no \`$set\` or \`# Vars:\` init in any enclosing scope
|
|
799
|
-
- \`foreach-local-accumulator-target\` — \`$append VAR ...\` where the matching \`$set VAR = []\` is in the same scope as the append (typically same foreach body — would silently lose data each iter)
|
|
800
|
-
- \`append-to-non-list\` — \`$append VAR ...\` where VAR's static init is a non-list value (
|
|
770
|
+
- \`unsafe-shell-disabled\` — \`shell(command=..., unsafe=true)\` declared but \`enableUnsafeShell: false\` on the runtime (fires only when caller passes the flag explicitly false)
|
|
771
|
+
- \`uninitialized-append\` — \`$append VAR ...\` where VAR has no \`$set\` or \`# Vars:\` init in any enclosing scope
|
|
772
|
+
- \`foreach-local-accumulator-target\` — \`$append VAR ...\` where the matching \`$set VAR = []\` is in the same scope as the append (typically same foreach body — would silently lose data each iter)
|
|
773
|
+
- \`append-to-non-list\` — \`$append VAR ...\` where VAR's static init is a non-list value (list-only)
|
|
801
774
|
|
|
802
775
|
## Tier-2 (warning)
|
|
803
776
|
|
|
804
777
|
- \`deprecated-question\` — bare \`?\` op (deprecated v1; compile-error in v1.x)
|
|
805
|
-
- \`deprecated-
|
|
806
|
-
- \`
|
|
807
|
-
- \`unsafe-shell-
|
|
808
|
-
- \`
|
|
809
|
-
- \`unknown-
|
|
810
|
-
- \`
|
|
811
|
-
- \`unknown-template-reference\` — \`# Templates: <name>\` references a skill not in the store (demoted from tier-1 in v0.3.1)
|
|
812
|
-
- \`unconfirmed-mutation\` — mutation-class op (\`$\` tool with mutating-name shape, \`$ data_write\`, \`file_write(...)\`) runs without authorization. v0.7.0+ accepts the captured \`approved="reason"\` per-op kwarg as authorization (any non-empty string; presence is what matters). Silent when the skill declares \`# Autonomous: true\` (v0.4.2 — the autonomous-skill category exempts the rule since the user-confirmation pattern doesn't apply to unattended-execution skills) or when a preceding \`??\` / \`ask(...)\` op gates the mutation in the same target.
|
|
778
|
+
- \`deprecated-substitution-shape\` — \`$(VAR)\` substitution form compiles but warns; rewrite to \`\${VAR}\`.
|
|
779
|
+
- \`unsafe-shell-ambiguous-subst\` — \`$(NAME)\` inside \`shell(command=..., unsafe=true)\` body that isn't a declared variable; collides with bash command-sub syntax
|
|
780
|
+
- \`unsafe-shell-op\` — \`shell(command=..., unsafe=true)\` present; requires human review every time
|
|
781
|
+
- \`unknown-skill-reference\` — \`inline(skill="...")\` or \`execute_skill(name="...")\` references a skill not in the store (tier-2; runtime throws \`MissingSkillReferenceError\` if still unresolved at execute)
|
|
782
|
+
- \`unknown-template-reference\` — \`# Templates: <name>\` references a skill not in the store
|
|
783
|
+
- \`unconfirmed-mutation\` — mutation-class op (\`$\` tool with mutating-name shape, \`$ data_write\`, \`file_write(...)\`) runs without authorization. Accepts the captured \`approved="reason"\` per-op kwarg as authorization (any non-empty string; presence is what matters). Silent when the skill declares \`# Autonomous: true\` (the autonomous-skill category exempts the rule since the user-confirmation pattern doesn't apply to unattended-execution skills).
|
|
813
784
|
- \`model-contention\` — async + sync ops on the same model serialize on a single runtime worker
|
|
814
785
|
- \`draft-with-trigger\` — \`# Status: Draft\` skill has \`# Triggers:\` declared; triggers won't fire until Approved
|
|
815
786
|
- \`reference-to-disabled-skill\` — \`&\` op references a Disabled skill (also tier-1 in some contexts)
|
|
816
|
-
- \`unused-augmenting-header\` — \`# Event-type:\` set on a skill with no agent-bound output
|
|
787
|
+
- \`unused-augmenting-header\` — \`# Event-type:\` set on a skill with no agent-bound output
|
|
817
788
|
|
|
818
789
|
## Tier-3 (info)
|
|
819
790
|
|
|
820
791
|
- \`no-default-target\` — no \`default:\` declaration (relevant for data skills only; procedural skills hit tier-1)
|
|
821
792
|
- \`duplicate-skill-name\` — name collides with an existing stored skill
|
|
822
793
|
- \`plugin-collision\` — placeholder for v1.x plugin-loader name conflicts
|
|
823
|
-
- \`deferred-skill-reference\` — composition ref (
|
|
824
|
-
- \`unparsed-json-field-access\` — op text contains \`$(VAR|json_parse).field\`; the \`|json_parse\` filter
|
|
825
|
-
- \`object-iteration-advisory\`
|
|
826
|
-
- \`disallowed-tool\` (tier-1
|
|
794
|
+
- \`deferred-skill-reference\` — composition ref (\`inline\` / \`$ execute_skill\` / \`# Templates:\`) targets a skill not currently in the SkillStore; resolution deferred to execute time. Confirms the forward-reference path is engaged; clears once the target is stored.
|
|
795
|
+
- \`unparsed-json-field-access\` — op text contains \`$(VAR|json_parse).field\`; the \`|json_parse\` filter is no longer supported. Use \`$ json_parse $(VAR) -> P\` then \`$(P.field)\`.
|
|
796
|
+
- \`object-iteration-advisory\` — \`foreach IT in \${VAR}\` iterates a bound variable whose origin is a \`$\` MCP tool output, without a \`.field\` accessor. MCP tools commonly wrap arrays in an envelope object (\`.items\`, \`.results\`, \`.issuesPage\`, \`.data\`, \`.records\`). Check the tool's response shape; rewrite as \`foreach IT in \${VAR.items}\` (or the correct field).
|
|
797
|
+
- \`disallowed-tool\` (tier-1) — \`$ name.tool\` references a tool not in the connector's \`allowed_tools\` allowlist. Either rewrite the skill to use a permitted tool or update \`connectors.json\` to grant access. Runtime defense-in-depth refuses disallowed dispatch even if lint is bypassed.
|
|
827
798
|
|
|
828
799
|
\`compile_skill({source})\` runs the full lint preflight and reports
|
|
829
800
|
findings in the \`errors\` + \`warnings\` arrays. \`lint_skill({source})\`
|
package/dist/help-content.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-content.js","sourceRoot":"","sources":["../src/help-content.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"help-content.js","sourceRoot":"","sources":["../src/help-content.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export { bootstrap, defaultRegistry, wireDeclarativeTriggers } from "./bootstrap
|
|
|
30
30
|
export type { BootstrapOpts, BootstrapResult, DefaultRegistryOpts } from "./bootstrap.js";
|
|
31
31
|
export { registerConnectorClass, unregisterConnectorClass, getConnectorClass, listKnownConnectorClasses, loadConnectorsConfig, } from "./connectors/config.js";
|
|
32
32
|
export type { ConnectorClassEntry, ConfiguredConnector, LoadConnectorsConfigOpts, LoadConnectorsConfigResult, } from "./connectors/config.js";
|
|
33
|
-
export { ConnectorError, SkillNotFoundError, VersionNotFoundError, LintFailureError, StorageConflictError, QueryError, DispatchError, ModelError, TimeoutError, OpError, ConnectorNotFoundError, OpTimeoutError,
|
|
33
|
+
export { ConnectorError, SkillNotFoundError, VersionNotFoundError, LintFailureError, StorageConflictError, QueryError, DispatchError, ModelError, TimeoutError, OpError, ConnectorNotFoundError, OpTimeoutError, UnsafeShellDisabledError, UnresolvedVariableError, MissingSkillReferenceError, UnconfirmedMutationError, UnsupportedFilterError, } from "./errors.js";
|
|
34
34
|
export type { LintDiagnostic, OpErrorMetadata } from "./errors.js";
|
|
35
35
|
export { ReferenceIndex, ReferentialIntegrityError, buildReferenceIndex, extractReferences, storeSkill, deleteSkill, invalidateConnector, } from "./skill-manager.js";
|
|
36
36
|
export type { DeleteSkillOptions } from "./skill-manager.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ export { loadSkillscriptConfig } from "./runtime-config.js";
|
|
|
31
31
|
// `examples/onboarding-scaffold/bootstrap.ts` for a custom-substrate walkthrough.
|
|
32
32
|
export { bootstrap, defaultRegistry, wireDeclarativeTriggers } from "./bootstrap.js";
|
|
33
33
|
export { registerConnectorClass, unregisterConnectorClass, getConnectorClass, listKnownConnectorClasses, loadConnectorsConfig, } from "./connectors/config.js";
|
|
34
|
-
export { ConnectorError, SkillNotFoundError, VersionNotFoundError, LintFailureError, StorageConflictError, QueryError, DispatchError, ModelError, TimeoutError, OpError, ConnectorNotFoundError, OpTimeoutError,
|
|
34
|
+
export { ConnectorError, SkillNotFoundError, VersionNotFoundError, LintFailureError, StorageConflictError, QueryError, DispatchError, ModelError, TimeoutError, OpError, ConnectorNotFoundError, OpTimeoutError, UnsafeShellDisabledError, UnresolvedVariableError, MissingSkillReferenceError, UnconfirmedMutationError, UnsupportedFilterError, } from "./errors.js";
|
|
35
35
|
export { ReferenceIndex, ReferentialIntegrityError, buildReferenceIndex, extractReferences, storeSkill, deleteSkill, invalidateConnector, } from "./skill-manager.js";
|
|
36
36
|
export { audit, formatAuditResult } from "./audit.js";
|
|
37
37
|
export { Scheduler, cronMatches } from "./scheduler.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,mFAAmF;AACnF,6FAA6F;AAC7F,kCAAkC;AAClC,EAAE;AACF,wEAAwE;AACxE,6EAA6E;AAC7E,iEAAiE;AACjE,0CAA0C;AAE1C,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAe3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAkChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,uFAAuF;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,kFAAkF;AAClF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,OAAO,EACP,sBAAsB,EACtB,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../src/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,WAAW,EAAgB,MAAM,aAAa,CAAC;AAGzF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,kBAAkB,IAAI,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC9D,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,mBAAmB,CAAC;IAC/C;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB;sFACkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,KAAK,CAAC;QAAE,kBAAkB,IAAI,kBAAkB,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC9E,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,mBAAmB,CAAC;IAC9C,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C;;;;;;OAMG;IACH,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAuCrF;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAsC1E;AAED,6HAA6H;AAC7H,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAW3D;AA8kED,mFAAmF;AACnF,wBAAgB,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAElE"}
|