Skip to content

Commit 9d47608

Browse files
committed
feat(references): add agent-skills reference project
Minimal reference covering skills.define + skill.local — one task that loads a SKILL.md and runs a bundled shell script. Useful as a sanity test for the dev + deploy skill-bundling pipeline.
1 parent 9ff410b commit 9d47608

7 files changed

Lines changed: 115 additions & 0 deletions

File tree

pnpm-lock.yaml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "references-agent-skills",
3+
"private": true,
4+
"type": "module",
5+
"devDependencies": {
6+
"trigger.dev": "workspace:*"
7+
},
8+
"dependencies": {
9+
"@trigger.dev/build": "workspace:*",
10+
"@trigger.dev/sdk": "workspace:*"
11+
},
12+
"scripts": {
13+
"dev": "trigger dev",
14+
"deploy": "trigger deploy"
15+
}
16+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
name: greeter
3+
description: Say hello in different styles. Use when the user asks for a greeting or a friendly message.
4+
---
5+
6+
# Greeter
7+
8+
A tiny skill used to validate that the CLI bundles `SKILL.md` plus a `scripts/` subfolder into the deploy image and that `skill.local()` can read both at runtime.
9+
10+
## When to use
11+
12+
- Anyone asks for "hello" — invoke `scripts/hello.sh [NAME]` and return its stdout.
13+
14+
## Scripts
15+
16+
### `scripts/hello.sh [NAME]`
17+
18+
Prints `Hello, {NAME}!` (default `world`). Used to confirm `scripts/` is copied alongside `SKILL.md`.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
NAME="${1:-world}"
4+
echo "Hello, ${NAME}!"
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { logger, skills, task } from "@trigger.dev/sdk";
2+
import { exec } from "node:child_process";
3+
import { promisify } from "node:util";
4+
import { join } from "node:path";
5+
import { access, constants } from "node:fs/promises";
6+
7+
const greeterSkill = skills.define({
8+
id: "greeter",
9+
path: "./skills/greeter",
10+
});
11+
12+
const execAsync = promisify(exec);
13+
14+
export const testSkillTask = task({
15+
id: "test-skill",
16+
run: async (payload: { name?: string } = {}) => {
17+
const resolved = await greeterSkill.local();
18+
19+
logger.info("Resolved skill", {
20+
id: resolved.id,
21+
version: resolved.version,
22+
path: resolved.path,
23+
frontmatterName: resolved.frontmatter.name,
24+
frontmatterDescription: resolved.frontmatter.description,
25+
bodyChars: resolved.body.length,
26+
});
27+
28+
const scriptPath = join(resolved.path, "scripts", "hello.sh");
29+
await access(scriptPath, constants.X_OK);
30+
31+
const { stdout } = await execAsync(`bash ${scriptPath} ${payload.name ?? "world"}`);
32+
const output = stdout.trim();
33+
logger.info("Script output", { output });
34+
35+
return {
36+
skillId: resolved.id,
37+
skillPath: resolved.path,
38+
frontmatterName: resolved.frontmatter.name,
39+
scriptOutput: output,
40+
};
41+
},
42+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { defineConfig } from "@trigger.dev/sdk";
2+
3+
export default defineConfig({
4+
project: "proj_zweffkxiuovfzsdtjvbe",
5+
runtime: "node",
6+
logLevel: "info",
7+
maxDuration: 60,
8+
dirs: ["./src/trigger"],
9+
});
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"compilerOptions": {
3+
"target": "ES2023",
4+
"module": "Node16",
5+
"moduleResolution": "Node16",
6+
"esModuleInterop": true,
7+
"strict": true,
8+
"skipLibCheck": true,
9+
"customConditions": ["@triggerdotdev/source"],
10+
"noEmit": true
11+
},
12+
"include": ["./src/**/*.ts", "trigger.config.ts"]
13+
}

0 commit comments

Comments
 (0)