Pnpm Engine
teambit/bit
Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.
Bootstrap Trigger.dev into an existing project from scratch: authenticate the CLI, install @trigger.dev/sdk and @trigger.dev/build, write trigger.config.ts with the project ref and task dirs…
$ npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install VladSez/easy-invoice-pdf trigger-getting-started --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/VladSez/easy-invoice-pdf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/trigger-getting-started .claude/skills/trigger-getting-started && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "trigger-getting-started" agent skill from https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-started into .claude/skills/trigger-getting-started/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trigger-getting-started", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-startedType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install VladSez/easy-invoice-pdf trigger-getting-started --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VladSez/easy-invoice-pdf.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/trigger-getting-started .agents/skills/trigger-getting-started && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "trigger-getting-started" agent skill from https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-started into .agents/skills/trigger-getting-started/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trigger-getting-started", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install VladSez/easy-invoice-pdf trigger-getting-started --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VladSez/easy-invoice-pdf.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/trigger-getting-started .cursor/skills/trigger-getting-started && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "trigger-getting-started" agent skill from https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-started into .cursor/skills/trigger-getting-started/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trigger-getting-started", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/VladSez/easy-invoice-pdf.git --path .cursor/skills/trigger-getting-started--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install VladSez/easy-invoice-pdf trigger-getting-started --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VladSez/easy-invoice-pdf.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/trigger-getting-started .gemini/skills/trigger-getting-started && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "trigger-getting-started" agent skill from https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-started into .gemini/skills/trigger-getting-started/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trigger-getting-started", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install VladSez/easy-invoice-pdf trigger-getting-startedInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/VladSez/easy-invoice-pdf.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/trigger-getting-started .github/skills/trigger-getting-started && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "trigger-getting-started" agent skill from https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-started into .github/skills/trigger-getting-started/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trigger-getting-started", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install VladSez/easy-invoice-pdf trigger-getting-started --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VladSez/easy-invoice-pdf.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/trigger-getting-started .opencode/skills/trigger-getting-started && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "trigger-getting-started" agent skill from https://github.com/VladSez/easy-invoice-pdf/tree/main/.cursor/skills/trigger-getting-started into .opencode/skills/trigger-getting-started/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "trigger-getting-started", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
trigger-getting-startedBootstrap Trigger.dev into an existing project from scratch: authenticate the CLI, install @trigger.dev/sdk and @trigger.dev/build, write trigger.config.ts with the project ref and task dirs…
Trigger Getting Started is an agent skill from VladSez/easy-invoice-pdf. Bootstrap Trigger.dev into an existing project from scratch: authenticate the CLI, install @trigger.dev/sdk and @trigger.dev/build, write trigger.config.ts with the project ref and task dirs, scaffold a /trigger directory with a first task, wire tsconfig and .gitignore, set TRIGGERSECRETKEY, and run the dev server. Load this when a project has no trigger.config.ts yet and the user asks to "add Trigger.dev", "set up Trigger.dev", "initialize Trigger.dev", or get a first task running, including in a monorepo. Once…
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Monorepo tooling and Forms and invoices. It works with TypeScript and React. The repository describes itself as: Free & Open-Source Invoice Generator - No Sign-Up, No Ads, Instant PDF Export, 100% In-Browser, and Fully Customizable Templates. ⭐ Star the repo if you like it. The licence is AGPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 19f688d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
trigger.devcloud.trigger.devFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
TRIGGER_SECRET_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Trigger Getting Started loads about 2k tokens when it runs. Until then it costs about 160 tokens; SKILL.md has 804 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
# .env (or .env.local for Next.js)Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from VladSez/easy-invoice-pdf at commit 19f688d, republished under its AGPL-3.0 licence (© VladSez). 804 words, ~1,960 tokens.
.claude/skills/trigger-getting-started/SKILL.md (or your agent's skills folder).Set up Trigger.dev in an existing project. The end state is: the SDK installed, a
trigger.config.ts pointing at a project ref, a /trigger directory with at least
one exported task, and trigger dev running so the task shows up in the dashboard.
The fastest path is the CLI's own wizard, which performs every mechanical step below and also offers to install the MCP server and these agent skills:
npx trigger.dev initPrefer init when you can. Do the manual steps further down when init does not fit
(monorepos, an existing config to extend, or a non-interactive environment).
Most of setup is automatable, but two steps require a person and cannot be done headlessly. When you reach them, stop and ask the user to do them, then continue:
npx trigger.dev login opens a browser for the
user to sign in. If they have no account, point them to https://cloud.trigger.dev
(or a self-hosted instance) first. You cannot complete this for them.TRIGGER_SECRET_KEY and the project ref
(proj_...) come from the dashboard. Ask the user to copy the DEV secret key
from the project's API Keys page, and to pick or create the project so you have its
ref. trigger init can select the project interactively once the user is logged in.Treat these as handoffs: state exactly what you need, wait for the user, then resume.
npx trigger.dev login
# self-hosted:
npx trigger.dev login --api-url https://your-trigger-instance.com@trigger.dev/sdk is a runtime dependency; @trigger.dev/build is a dev dependency.
Pin both to the same version as the trigger.dev CLI you run; the CLI warns on a
mismatch during dev/deploy.
npm add @trigger.dev/sdk@latest
npm add --save-dev @trigger.dev/build@latesttrigger.config.tsCreate it in the project root (or trigger.config.mjs for JavaScript). The project
ref and dirs are the only required fields.
import { defineConfig } from "@trigger.dev/sdk";
export default defineConfig({
project: "<project ref>", // e.g. "proj_abc123", from the dashboard
dirs: ["./src/trigger"], // where your tasks live
maxDuration: 3600,
retries: {
enabledInDev: false,
default: {
maxAttempts: 3,
factor: 2,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
randomize: true,
},
},
});Use the Bun runtime by adding runtime: "bun". Build extensions (prismaExtension,
puppeteer, additionalFiles, etc.) come from @trigger.dev/build and go in
build.extensions.
Create the directory that matches dirs and export a task from it. Every task must be
a named export with a project-unique id.
// src/trigger/example.ts
import { task } from "@trigger.dev/sdk";
export const helloWorld = task({
id: "hello-world",
run: async (payload: { name: string }) => {
return { message: `Hello ${payload.name}!` };
},
});Add trigger.config.ts to the include array in tsconfig.json, and add .trigger
to .gitignore (the CLI writes local dev state there).
// tsconfig.json
{ "include": ["trigger.config.ts" /* ...existing */] }# .gitignore
.triggerFor triggering from your own code, set TRIGGER_SECRET_KEY to the DEV key from the
dashboard's API Keys page. Self-hosted users also set TRIGGER_API_URL.
# .env (or .env.local for Next.js)
TRIGGER_SECRET_KEY=tr_dev_xxxxxxxxnpx trigger.dev devLeave it running. Tasks register with the dashboard, where the user can fire a test run from the task's test page. On first run the CLI offers to install the MCP server and agent skills; recommend both.
Once a task exists, trigger it from backend code with a type-only import so the task code is never bundled into your app. Trigger by id, not by calling the task object.
import { tasks } from "@trigger.dev/sdk";
import type { helloWorld } from "@/trigger/example"; // type-only
const handle = await tasks.trigger<typeof helloWorld>("hello-world", {
name: "Ada",
});TRIGGER_SECRET_KEY must be set wherever this runs. Framework specifics live in the
Next.js / Remix / Node.js guides.
Two layouts, both supported: put tasks in a shared package (@repo/tasks with its own
trigger.config.ts, consumed via workspace:*), or install Trigger.dev directly in the
app that needs it. Run trigger dev from the directory that holds trigger.config.ts.
See the manual setup docs for full Turborepo examples before scaffolding either.
Trying to do the human-only steps headlessly. You cannot complete trigger login
or read the dashboard secret key for the user.
trigger login and waiting on it to finish in an agent session.Mismatched CLI and SDK versions. A trigger.dev CLI on a different major than
@trigger.dev/sdk breaks dev/deploy.
npx trigger.dev dev against an old pinned SDK.trigger.dev, @trigger.dev/sdk, and @trigger.dev/build on the same version.Importing from @trigger.dev/sdk/v3 or using client.defineJob(). Both are old.
@trigger.dev/sdk; define work with task().Tasks not exported, or outside dirs. A task that is not a named export inside a
configured directory will not be picked up.
export const ... = task({ ... }) in a file under a dirs path.Importing the task instance into backend code. This bundles the task.
import { helloWorld } from "@/trigger/example" in a route handler.import type { helloWorld } plus tasks.trigger<typeof helloWorld>("hello-world", payload).Forgetting TRIGGER_SECRET_KEY. Triggering from your app fails without it; the
dev server itself works once the CLI is logged in.
Sibling skills:
trigger.config.ts.Docs:
Generated for @trigger.dev/sdk 4.5.6. Re-run the trigger.dev skills installer after upgrading.
© VladSez, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .cursor/skills/trigger-getting-started of VladSez/easy-invoice-pdf.
Open the folder on GitHubat commit 19f688d
Trigger Getting Started next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Trigger Getting Started this skillVladSez/easy-invoice-pdf | 1.1k | — | ~2k | Automated safety check: Notes | AGPL-3.0 | |
| Pnpm Engineteambit/bit | 18k | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Qovery Console StandardsQovery/console | 227 | — | ~924 | Automated safety check: Pass | MIT | |
| Typescript Tooling MigrationArize-ai/phoenix | 12k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Opentrons TypescriptOpentrons/opentrons | 521 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| Generate Subsystem Skillsllama-farm/llamafarm | 837 | — | ~1.1k | Automated safety check: Notes | Apache-2.0 |
teambit/bit
Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.
Qovery/console
Qovery Console coding standards, architecture guidelines, naming conventions, testing practices, and development workflows.
Arize-ai/phoenix
Migrate or upgrade TypeScript tooling in the Phoenix monorepo.
Opentrons/opentrons
TypeScript conventions, React patterns, testing, styling, and import rules for the Opentrons monorepo JS/TS packages.
llama-farm/llamafarm
Generate specialized skills for each subsystem in the monorepo.
ArabelaTso/Skills-4-SE
Generate boilerplate code and project templates/skeletons automatically.
VladSez/easy-invoice-pdf
Cut an OpenSEO release — bump the version, draft user-facing release notes from commits since the last tag, run a review + subagent-verification pass, and open a "release: vX.X.X" PR.
VladSez/easy-invoice-pdf
Maintain a clear and informative changelog for software releases.
VladSez/easy-invoice-pdf
Author and run a durable AI chat agent with chat.agent from @trigger.dev/sdk/ai: the per-turn run loop, why you MUST spread ...chat.toStreamTextOptions() first, returning a StreamTextResult vs…
VladSez/easy-invoice-pdf
Take a branch from "code exists (or is about to)" to "ready for Ben's final review" — multi-axis subagent review with verified findings, fixes, ci:check, checkpoint commits, and an updated PR.
VladSez/easy-invoice-pdf
Polishes and improves the UI in your project. An agent skill from VladSez/easy-invoice-pdf.
VladSez/easy-invoice-pdf
Covers writing backend Trigger.dev tasks with @trigger.dev/sdk: defining task() and schemaTask(), the run function and its ctx, retries, waits, queues and concurrency, idempotency keys, run…
Works with
Categories
Bootstrap Trigger.dev into an existing project from scratch: authenticate the CLI, install @trigger.dev/sdk and @trigger.dev/build, write trigger.config.ts with the project ref and task dirs…. Trigger Getting Started is an agent skill from VladSez/easy-invoice-pdf.gitignore, set TRIGGERSECRETKEY, and run the dev server.
Trigger Getting Started fits situations like: directory with a first task; wire tsconfig and .gitignore; set TRIGGERSECRETKEY; run the dev server.
Run `npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a claude-code`. Or copy the skill folder (.cursor/skills/trigger-getting-started in VladSez/easy-invoice-pdf) into .claude/skills/trigger-getting-started in your project. Claude Code loads it when a task matches its description.
Run `npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a codex`. Or copy the skill folder (.cursor/skills/trigger-getting-started in VladSez/easy-invoice-pdf) into .agents/skills/trigger-getting-started in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add VladSez/easy-invoice-pdf --skill trigger-getting-started -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/trigger-getting-started, .gemini/skills/trigger-getting-started, .github/skills/trigger-getting-started and .opencode/skills/trigger-getting-started in your project.
Going by SKILL.md and its folder, Trigger Getting Started needs the command-line tools its instructions call (npx and npm) and credentials named TRIGGER_SECRET_KEY. Our summary lists: Node.js; A credential in TRIGGER_SECRET_KEY.
SKILL.md names 2 domains. As links in the text: trigger.dev and cloud.trigger.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Trigger Getting Started is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Trigger Getting Started: Pnpm Engine (teambit/bit, 18k stars), Qovery Console Standards (Qovery/console, 227 stars), Typescript Tooling Migration (Arize-ai/phoenix, 12k stars) and Opentrons Typescript (Opentrons/opentrons, 521 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
VladSez (a GitHub user) maintains it in VladSez/easy-invoice-pdf, which has 1,104 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 3, 2026.
Source: VladSez/easy-invoice-pdf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.