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.advanced-tasksgit 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.03202 |
| Opus 5 | $0.00000 | $0.01601 |
| Sonnet 5 | $0.00000 | $0.00640 |
| Haiku 4.5 | $0.00000 | $0.00320 |
Grade A, and why
trigger.advanced-tasks 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 2d ago.
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 — 491 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Trigger.dev Advanced Tasks (v4)
Advanced patterns and features for writing tasks
Tags & Organization
import { task, tags } from "@trigger.dev/sdk";
export const processUser = task({
id: "process-user",
run: async (payload: { userId: string; orgId: string }, { ctx }) => {
// Add tags during execution
await tags.add(`user_${payload.userId}`);
await tags.add(`org_${payload.orgId}`);
return { processed: true };
},
});
// Trigger with tags
await processUser.trigger(
{ userId: "123", orgId: "abc" },
{ tags: ["priority", "user_123", "org_abc"] } // Max 10 tags per run
);
// Subscribe to tagged runs
for await (const run of runs.subscribeToRunsWithTag("user_123")) {
console.log(`User task ${run.id}: ${run.status}`);
}
Tag Best Practices:
- Use prefixes:
user_123,org_abc,video:456 - Max 10 tags per run, 1-64 characters each
- Tags don't propagate to child tasks automatically
Batch Triggering v2
Enhanced batch triggering with larger payloads and streaming ingestion.
Limits
- Maximum batch size: 1,000 items (increased from 500)
- Payload per item: 3MB each (increased from 1MB combined)
- Payloads > 512KB automatically offload to object storage
Rate Limiting (per environment)
| Tier | Bucket Size | Refill Rate |
|---|---|---|
| Free | 1,200 runs | 100 runs/10 sec |
| Hobby | 5,000 runs | 500 runs/5 sec |
| Pro | 5,000 runs | 500 runs/5 sec |
Concurrent Batch Processing
| Tier | Concurrent Batches |
|---|---|
| Free | 1 |
| Hobby | 10 |
| Pro | 10 |
Usage
import { myTask } from "./trigger/myTask";
// Basic batch trigger (up to 1,000 items)
const runs = await myTask.batchTrigger([
{ payload: { userId: "user-1" } },
{ payload: { userId: "user-2" } },
{ payload: { userId: "user-3" } },
]);
// Batch trigger with wait
const results = await myTask.batchTriggerAndWait([
{ payload: { userId: "user-1" } },
{ payload: { userId: "user-2" } },
]);
for (const result of results) {
if (result.ok) {
console.log("Result:", result.output);
}
}
// With per-item options
const batchHandle = await myTask.batchTrigger([
{
payload: { userId: "123" },
options: {
idempotencyKey: "user-123-batch",
tags: ["priority"],
},
},
{
payload: { userId: "456" },
options: {
idempotencyKey: "user-456-batch",
},
},
]);
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.
- 2d ago First seen · 491 lines · 3,202 tokens per session scan A 16d5dccf4131
trigger.advanced-tasks is a cursor rule published in the GitHub repository agentset-ai/agentset (2,079 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 3,202 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
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.
triage-review-findings
Skill: triage review findings without acting on false positives — Full criteria for the guard-deletion case below: .agents/rules/defensive-invariants.md. Canonical file is .agents/skills/triage-review-findings.md.
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.
session-memory
Use at conversation wrap-up or when the user explicitly indicates end-of-session — capture residual lessons not captured in-flight.
commit-message
Commit message guidelines.