Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Creating Workers

ASecurity

```

18,691 stars
0 votes
0 copies
0 views
Added 9/20/2026
developmentpythonrustgonodedockergitapi

Works with

api

Security Analysis

A92/100
mediumInstalls packages at runtime which could introduce malicious dependencies
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add iii-hq/iii --skill creating-workers --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Creating Workers?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Creating Workers
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iii-hq-creating-workers-17b5c969/badge)](https://www.skillsdirectory.com/skills/iii-hq-creating-workers-17b5c969)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
channels.mdx
<!-- generated by iii-skill-render. DO NOT EDIT (changes here are overwritten on the next render). Edit docs/next/creating-workers/worker-manifest.mdx. -->


This page covers `iii.worker.yaml` configuration options. `iii.worker.yaml` exists at a worker's
root and tells iii how to provision the worker's runtime, install its dependencies, start its
process, and pass through configuration. Compose reads it when preparing a `path://` worker or a
registry package. Project workers are declared and operated through
[`worker-compose.yaml`](../using-iii/compose), not the engine's `config.yaml`.

For how to connect a worker into a project once its manifest exists, see
[Creating Workers / Workers](./workers).

<Note>
  `iii.worker.yaml` only matters when iii provisions and runs the worker in its built-in
  virtualization. If you run the worker process yourself, for example `node ./myworker/src/index.js`
  on your own machine, container, or server, you do not need the manifest at all. Any process that
  uses a iii SDK, calls `registerWorker()`, and connects to a iii instance is a worker, and behaves
  identically whether iii started it or not.
</Note>

## `name`

Required. Must satisfy the registry's worker-name rules (the same validation the registry applies to
published names). A worker cannot list itself in `dependencies`.

## `runtime`

Declares details about the worker's environment.

### `base_image`

Optional. Overrides the default OCI rootfs. Must be a valid OCI reference (alphanumerics plus
`. _ - / : @ +`, max 512 characters). Invalid references are dropped with a warning and the default
is used.

```yaml
runtime:
  base_image: oven/bun:1 # From docker.io
  # Or a fully-qualified registry path, e.g. GitHub Container Registry:
  # base_image: ghcr.io/astral-sh/uv:bookworm-slim
```

## `scripts`

Explicit lifecycle scripts. These define how to initialize a worker's base environment (`setup`),
install a worker's dependencies (`install`), and run a worker whenever it is started or restarted
(`start`).

```yaml
scripts:
  setup: "apt-get update && apt-get install -y build-essential"
  install: "npm install"
  start: "npx tsx src/index.ts"
```

When `scripts` is omitted, the engine infers `install` and `start` from `runtime.kind` and
`runtime.package_manager`. The per-field examples below show common values for each language.

{/* <Note> */}
{/* There is a special setup required for bundling workers for distribution in the iii registry at */}
{/* [workers.iii.dev](https://workers.iii.dev). See [Registry / Bundle */}
{/* workers](./workers-registry#bundle-workers-targz-archives). */} {/* </Note> */}

### `setup`

Runs once when the sandbox is provisioned. Use it for system-level packages your dependencies need
to build.

<CodeGroup>

```yaml Node
scripts:
  setup: "apt-get update && apt-get install -y build-essential"
```

```yaml Python
scripts:
  setup: "apt-get update && apt-get install -y libpq-dev"
```

```yaml Rust
scripts:
  setup: "apt-get update && apt-get install -y pkg-config libssl-dev"
```

</CodeGroup>

### `install`

Installs dependencies.

<CodeGroup>

```yaml Node
scripts:
  install: "npm install"
```

```yaml Python
scripts:
  install: "pip install watchfiles && pip install -e ."
```

```yaml Rust
scripts:
  install: "cargo install cargo-watch && cargo build"
```

</CodeGroup>

### `start`

Starts the worker process.

<CodeGroup>

```yaml Node
scripts:
  start: "npx tsx watch src/index.ts"
```

```yaml Python
scripts:
  start: "watchfiles 'python main.py'"
```

```yaml Rust
scripts:
  start: "cargo watch -x run"
```

</CodeGroup>

## `env`

Map of environment variables injected into the worker process. Keys and values must be strings. The
keys `III_URL` and `III_ENGINE_URL` are silently filtered out; the engine sets the connection URL
itself.

```yaml
env:
  LOG_LEVEL: info
  MY_API_KEY: replace-me
```

For managed and reusable workers, configure the namespace in the compose file that deploys the
worker rather than baking it into the shipped worker. Set `III_NAMESPACE` in the worker service's
environment; the SDK reads it when no explicit `namespace` option is passed. `config.yaml` does not
support a per-worker `namespace:` key.

When registering a worker programmatically, you may instead pass `namespace` directly to
`registerWorker` / `register_worker`. The explicit option takes precedence over `III_NAMESPACE`.
When neither is set, the worker registers in the `default` namespace.

## `dependencies`

Map of `<worker-name>: <semver range>` declaring other workers this worker depends on, resolved
against the registry.

```yaml
dependencies:
  http: "^0.20"
  state: "^0.20"
```

Rules:

- Each name must satisfy the registry's worker-name validation.
- Each range must be a valid semver version requirement (for example `^1.2`, `~0.5.0`, `>=2 <3`).
- Duplicate keys are an error.
- A worker cannot depend on itself.
- Prerelease ranges are accepted syntactically, but the default registry resolver serves only stable
  versions, so a prerelease range surfaces as `version_not_found` at resolve time.

## `resources`

Optional CPU and memory requests for the worker's sandbox. Requests above the cap are clamped to the
cap. For bundle workers this emits a `W182 BundleResourceClamped` warning at install time.

```yaml
resources:
  cpus: 2
  memory: 2048
```

### `cpus`

Optional integer. Number of vCPUs. Defaults to `2`, capped at `4`.

### `memory`

Optional integer. Memory in MiB. Defaults to `2048`, capped at `4096`.

## Publish metadata: `iii`, `deploy`, `manifest`, `tags`

Optional metadata used by the workers-repository release pipeline, not by the engine. The engine
accepts these keys (so a manifest published from the workers repo also works with a local Compose
worker) but never reads them at runtime.

```yaml
iii: v1 # manifest format marker
deploy: image # release artifact type: binary | image | bundle
manifest: pyproject.toml # file the release version is read from
tags: # search aliases sent to the workers registry
  - http
  - rest
  - api
```

`iii`, `deploy`, and `manifest` are strings. `tags` is a list of strings used for agent and user
discovery in the workers registry. Keep tags short, lowercase, and focused on terms someone would
search for rather than repeating the worker description.

Attribution

iii-hqiii-hq
View sourceMore from iii-hq →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

281612 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2132 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →