Implements a JavaScript literal syntax-based protocol for LLM tool calls. Invoke when needing to enable LLM to call local JS functions using template literal syntax.
Implements a JavaScript literal syntax-based protocol for LLM tool calls. Invoke when needing to enable LLM to call local JS functions using template literal...
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 0 · 17 · 0 current installs · 0 all-time installs
by@roryyu
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description match the content: the SKILL.md only describes a JS template-literal/tag-function protocol. No unrelated binaries, env vars, or credentials are requested.
Instruction Scope
Instructions are limited to code examples and guidelines for writing tag functions and using template literals. They do not direct reading files, accessing environment variables, or sending data to external endpoints. The doc assumes the host will execute those local functions, which is expected for a tool protocol.
Install Mechanism
No install spec and no code files are included beyond documentation; nothing will be downloaded or written to disk by installing the skill itself.
Credentials
No environment variables, credentials, or config paths are required. The declared requirements match the instructions.
Persistence & Privilege
Skill flags are default (not always). It does not request persistent or elevated privileges or modify other skills' configuration.
Assessment
This skill is a documentation-only protocol for calling local JavaScript functions via template literals and is internally consistent. It does not itself install code or ask for secrets. However, if your agent or runtime will execute LLM-generated template-literal calls or arbitrary JS produced by the model, consider the runtime risk: ensure execution is sandboxed, limit which host functions/APIs are exposed to those tag functions, review generated calls before execution if possible, and prefer safe evaluation patterns (e.g., whitelist of permitted tool functions) to avoid executing untrusted code. Also note the skill's source has no homepage or author metadata—if provenance matters to you, ask the publisher for more information before trusting it in production.Like a lobster shell, security has layers — review code before you run it.
Current versionv1.0.0
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
JavaScript Literals Protocol Tool Skill
Overview
This skill establishes a new protocol for LLM to call tools using JavaScript's template literal syntax. It allows seamless integration between LLM prompts and local JavaScript functions through a tag function mechanism.
Protocol Definition
Core Concept
The protocol uses JavaScript template literals with tag functions to enable LLM to invoke local functions. This provides a natural, JavaScript-native way for LLMs to interact with tools.
Syntax Format
// Define variables
const var1 = value1;
const var2 = value2;
// Define tag function (tool)
function toolTag(strings, ...expressions) {
// Process the strings and expressions
// Return the result
}
// LLM invokes the tool using template literal syntax
const result = toolTag`Template ${var1} with ${var2} expressions`;
Usage Example
Basic Function Call
// Define variables
const person = "Mike";
const age = 28;
// Define a simple tool function
function describePerson(strings, personExp, ageExp) {
const str0 = strings[0]; // "That "
const str1 = strings[1]; // " is a "
const str2 = strings[2]; // "."
const ageStr = ageExp > 99 ? "centenarian" : "youngster";
return `${str0}${personExp}${str1}${ageStr}${str2}`;
}
// LLM invokes the tool
const output = describePerson`That ${person} is a ${age}.`;
console.log(output);
// Output: That Mike is a youngster.
Multi-Parameter Tool Call
// Define a calculation tool
function calculate(strings, ...nums) {
const operation = strings.join(' ').trim();
let result;
if (operation.includes('add')) {
result = nums.reduce((a, b) => a + b, 0);
} else if (operation.includes('multiply')) {
result = nums.reduce((a, b) => a * b, 1);
}
return `${operation} ${nums.join(', ')} = ${result}`;
}
// LLM invokes with multiple parameters
const sum = calculate`add ${5} ${3} ${7}`;
const product = calculate`multiply ${2} ${4} ${6}`;
console.log(sum); // Output: add 5, 3, 7 = 15
console.log(product); // Output: multiply 2, 4, 6 = 48
Implementation Guidelines
For Developers Creating Tools
- Define tag functions that accept
stringsas the first parameter and variable expressions as rest parameters - Process the template strings and expressions appropriately
- Return a result that provides meaningful feedback to the LLM
For LLMs Using the Protocol
- Use the template literal syntax with backticks
- Insert variables and expressions inside
${}placeholders - Call the appropriate tag function as the prefix to the template literal
Benefits
- JavaScript Native: Uses existing JavaScript syntax that developers are familiar with
- Natural Integration: Seamlessly blends with JavaScript code
- Type Safety: Leverages JavaScript's type system
- Flexible: Supports multiple parameters and complex logic
- Readable: Provides clear, self-documenting tool calls
Limitations
- Requires JavaScript runtime environment
- Template literal syntax may need special handling in some LLM prompts
- Limited to JavaScript function capabilities
Example Workflow
- Developer defines local tool functions using tag function pattern
- LLM is instructed to use the JavaScript literals protocol
- LLM generates template literal calls to the defined tools
- System executes the tool calls and returns results to the LLM
- LLM continues interaction based on the results
Files
2 totalSelect a file
Select a file to preview.
Comments
Loading comments…
