Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/agentset-ai/agentset/trigger.basicgit clone --depth 1 https://github.com/agentset-ai/agentsetWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.01354 |
| Opus 5 | $0.00000 | $0.00677 |
| Sonnet 5 | $0.00000 | $0.00271 |
| Haiku 4.5 | $0.00000 | $0.00135 |
Grade A, and why
trigger.basic scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 205 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Trigger.dev Basic Tasks (v4)
MUST use @trigger.dev/sdk, NEVER client.defineJob
Basic Task
import { task } from "@trigger.dev/sdk";
export const processData = task({
id: "process-data",
retry: {
maxAttempts: 10,
factor: 1.8,
minTimeoutInMs: 500,
maxTimeoutInMs: 30_000,
randomize: false,
},
run: async (payload: { userId: string; data: any[] }) => {
// Task logic - runs for long time, no timeouts
console.log(`Processing ${payload.data.length} items for user ${payload.userId}`);
return { processed: payload.data.length };
},
});
Schema Task (with validation)
import { schemaTask } from "@trigger.dev/sdk";
import { z } from "zod";
export const validatedTask = schemaTask({
id: "validated-task",
schema: z.object({
name: z.string(),
age: z.number(),
email: z.string().email(),
}),
run: async (payload) => {
// Payload is automatically validated and typed
return { message: `Hello ${payload.name}, age ${payload.age}` };
},
});
Triggering Tasks
From Backend Code
import { tasks } from "@trigger.dev/sdk";
import type { processData } from "./trigger/tasks";
// Single trigger
const handle = await tasks.trigger<typeof processData>("process-data", {
userId: "123",
data: [{ id: 1 }, { id: 2 }],
});
// Batch trigger (up to 1,000 items, 3MB per payload)
const batchHandle = await tasks.batchTrigger<typeof processData>("process-data", [
{ payload: { userId: "123", data: [{ id: 1 }] } },
{ payload: { userId: "456", data: [{ id: 2 }] } },
]);
Debounced Triggering
Consolidate multiple triggers into a single execution:
// Multiple rapid triggers with same key = single execution
await myTask.trigger(
{ userId: "123" },
{
debounce: {
key: "user-123-update", // Unique key for debounce group
delay: "5s", // Wait before executing
},
}
);
// Trailing mode: use payload from LAST trigger
await myTask.trigger(
{ data: "latest-value" },
{
debounce: {
key: "trailing-example",
delay: "10s",
mode: "trailing", // Default is "leading" (first payload)
},
}
);
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 205 lines · 1,354 tokens per session scan A c22e3f68f533
trigger.basic is a cursor rule published in the GitHub repository agentset-ai/agentset (2,076 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,354 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other cursor rules, from other repositories
project-rules
智能体平台前端项目开发规则和最佳实践.
cursorrules
所有 Git 提交说明必须使用简体中文书写,禁止使用英文标题或英文正文。 专有名词、包名、API 路径等技术标识可保留英文。.
write-migration
Author an idempotent, state-detecting migration under scripts/migrations/ for a breaking llm-wiki-memory change. Use when shipping a breaking change to the engine, or when asked to write a migration / upgrade path. Replaces the retired release-runbook flow.
debug-capture-pipeline
Debug llm-wiki-memory capture/recall — flush breadcrumbs, daily-vs-compile lag, failed-distill stash recovery, embedding cache, hook wiring. Use when memory didn't capture, doesn't recall, or a hook/cron looks broken.
self-observability
Self-observability (watch llm-wiki-memory while you work; offer fixes) — This rule applies to every AI agent (Claude Code, Cursor, Codex, generic MCP clients) working Canonical file is .agents/rules/self-observability.md.
vios-sqa
VIOS SQA agent. One-click build → deploy → test → UI validation cycle. Use when asked to run regression tests, check test results, deploy for testing, or verify UI behavior.