Agent skill · Audited from source
iii-getting-started
skill · iii-hq/iiiLicence not declaredAudited 29 Oct 2026 · source 872770b7cf06
Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 872770b7cf06 and found no filesystem, network or shell access and no hard-coded secrets. What it does: Install the iii engine, set up your first worker, and get a working backend running. Use when a user wants to start a new iii project, install the SDK, or needs help with initial setup and configuration.
Cite
Cite this page
ModelsAtlas. “iii-getting-started (iii-hq/iii)”. Retrieved 29 Oct 2026. https://modelsatlas.com/skills/iii-hq/iii-getting-started
Trust audit
Audit 0.4.1 · source read 29 Oct 2026
SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 1 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | PASS | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 1 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (2)
MEDIUMInventory / provenanceinv.symlink · sdk/packages/node/iii/local.yml
sdk/packages/node/iii/local.yml
- Why
- link not followed
- Fix
- —
INFOSupply chainprompt.pipe_to_shell · SKILL.md:17
curl -fsSL https://install.iii.dev/iii/main/install.sh | sh
- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha 872770b7cf06 · 29 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisheriii-hq GitHub organizationOwner of the repository this skill is read from
- Source folderiii-hq/iii/skills/iii-getting-startedThe exact folder we audited
- LicenceNot declaredAs the repository states it
- Commit pinned for this verdict872770b7cf06A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Install the iii engine, set up your first worker, and get a working backend running. Use when a user wants to start a new iii project, install the SDK, or needs help with initial setup and configuration.
---
name: iii-getting-started
description: >-
Install the iii engine, set up your first worker, and get a working backend running. Use when a
user wants to start a new iii project, install the SDK, or needs help with initial setup and
configuration.
---
# Getting Started with iii
iii replaces your API framework, task queue, cron scheduler, pub/sub, state store, and observability
pipeline with a single engine and three primitives: **Function**, **Trigger**, **Worker**.
## Step 1: Install the Engine
```bash
curl -fsSL https://install.iii.dev/iii/main/install.sh | sh
```
Verify it installed:
```bash
iii --version
```
## Step 2: Create a Project
```bash
iii project init my-app # barebones project
iii project init my-app -t harness # or: the harness template (agent + console UI)
cd my-app
```
`iii project init --learn-iii` scaffolds the harness template and starts it in one step; the
installer offers the same when you answer "y" at its prompt. `iii project init --template quickstart`
scaffolds the Quickstart with a Python and a TypeScript worker.
## Step 3: Start the Project
```bash
iii compose --namespace dev --up --file worker-compose.yaml
```
The file's `engine:` section starts the engine; `containers:` starts project workers. The engine
commonly listens on `ws://localhost:49134`. Keep this foreground supervisor running.
`--namespace dev` names the daemon and becomes `III_NAMESPACE` for every worker it starts, so your
workers register and call each other in `dev`; that is why the `iii trigger` commands below pass
`-n dev`. Engine-owned functions (`engine::*`, `configuration::*`) stay in `default`, and SDK calls
to them resolve there without a namespace (see `iii-sdk-reference`).
## Step 4: Install the SDK
Pick your language:
```bash
# TypeScript / Node.js
pnpm add iii-sdk @iii-dev/helpers
# Python
pip install iii-sdk iii-helpers
# Rust
cargo add iii-sdk iii-helpers
```
## Step 5: Write Your First Worker
### TypeScript
```typescript
import { registerWorker, TriggerAction } from "iii-sdk";
import { Logger } from "@iii-dev/helpers/observability";
const iii = registerWorker(process.env.III_URL ?? "ws://localhost:49134");
iii.registerFunction(
"hello::greet",
async (input) => {
const logger = new Logger();
const name = input?.name ?? "world";
logger.info("Greeting user", { name });
return { message: `Hello, ${name}!` };
},
{ description: "Greet a user by name" },
);
iii.registerTrigger({
type: "http",
function_id: "hello::greet",
config: { api_path: "/hello", http_method: "POST" },
});
```
### Python
```python
from iii import register_worker, InitOptions
from iii_helpers.observability import Logger
iii = register_worker(address="ws://localhost:49134", options=InitOptions(worker_name="hello-worker"))
def greet(data):
logger = Logger()
name = data.get("name", "world") if isinstance(data, dict) else "world"
logger.info("Greeting user", {"name": name})
return {"message": f"Hello, {name}!"}
iii.register_function("hello::greet", greet, description="Greet a user by name")
iii.register_trigger({"type": "http", "function_id": "hello::greet", "config": {"api_path": "/hello", "http_method": "POST"}})
```
### Rust
```rust
use iii_sdk::{register_worker, InitOptions, RegisterFunction};
use iii_sdk::protocol::RegisterTriggerInput;
use iii_helpers::observability::Logger;
use serde_json::json;
let iii = register_worker("ws://127.0.0.1:49134", InitOptions::default());
iii.register_function(
"hello::greet",
RegisterFunction::new(|input: serde_json::Value| -> Result<serde_json::Value, iii_sdk::Error> {
let logger = Logger::new();
let name = input["name"].as_str().unwrap_or("world");
logger.info("Greeting user", Some(json!({ "name": name })));
Ok(json!({ "message": format!("Hello, {}!", name) }))
}).description("Greet a user by name"),
);
// Deprecated since 0.25, still how you bind to the http worker: compiles with a warning.
#[allow(deprecated)]
iii.register_trigger(RegisterTriggerInput::new(
"http",
"hello::greet",
json!({ "api_path": "/hello", "http_method": "POST" }),
))?;
```
`registerTrigger` logs a one-time deprecation warning in iii 0.25. It keeps working, and it is still
the way to bind to the `http`, `cron`, queue, `state`, `stream`, and pub/sub workers, which have not
moved to source functions yet. To run a function after another one, use `iii.observe` (see
`iii-observe`).
## Step 6: Test It
The `http` trigger type comes from the `http` worker. Add it once through the running Compose
daemon, then call your endpoint:
```bash
iii trigger -n dev compose::add worker=http
```
```bash
curl -X POST http://localhost:3111/hello \
-H "Content-Type: application/json" \
-d '{"name": "iii"}'
```
Expected response:
```json
{ "message": "Hello, iii!" }
```
## Add Existing Workers
To add a capability that already exists, browse `https://workers.iii.dev/` and add it through the
running Compose daemon:
```bash
iii trigger -n dev compose::add worker=state
iii trigger -n dev compose::add worker=queue
iii trigger -n dev compose::add [email protected]
```
`compose::add` resolves dependencies, writes exact versions to `worker-compose.yaml`, and restarts
the affected project. A local worker can be declared as a `path://` container or added by path.
## Install Agent Skills
Get all iii skills for your AI coding agent:
```bash
npx skills add iii-hq/iii/skills
```
Skills teach your agent the top-level iii model: functions, triggers, workers, observers, registry
access, SDKs, engine configuration, architecture patterns, and error handling. Worker-backed capabilities
live with the worker docs and registry entries.
## Adapting This Pattern
- Add more functions to the same worker: each gets its own `registerFunction` + `registerTrigger`
calls
- Use `::` separator for function IDs to namespace them: `orders::create`, `orders::validate`
- Add cron trigExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 872770b
pip install iii-sdk iii-helpers npx skills add iii-hq/iii/skills
git clone https://github.com/iii-hq/iii git -C iii checkout 872770b7cf06
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 872770b7cf06 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- ✓SAFE B 89 / 100
first audit · source
872770b7cf06
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/iii-hq/iii-getting-started/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All coding & review skills →iii-hq/iii
Handle iii engine and SDK errors across Node, Python, Rust, and browser workers. Use when interpreting error codes, retryability, RBAC denial, timeouts, handler failures, or SDK-specific exception surfaces.
iii-hq/iii
Configure a managed iii engine through worker-compose.yaml or a directly supervised engine through config.yaml. Use for engine ports, RBAC via the rbac-proxy worker, observer limits, streams, sandboxes, and…
iii-hq/iii
Use when composing iii primitives into backend architectures: durable workflows, reactive backends, observer side effects, agentic pipelines, event-driven CQRS, effect pipelines, and trigger-transform-action automation.
iii-hq/iii
Use when registering iii functions, binding triggers, observing functions, selecting sync/void/enqueue invocation, creating workers, inspecting the live worker registry, installing registry workers, authoring event…
iii-hq/iii
Ephemeral microVM sandboxes for running untrusted or agent-generated code in isolation — a one-call run path, a create/exec/stop lifecycle, and a set of filesystem operations.
iii-hq/iii
Effortlessly compose, extend, and observe every service in real-time for the first time ever.
Add this badge to your README
[](https://modelsatlas.com/skills/iii-hq/iii-getting-started/)
<a href="https://modelsatlas.com/skills/iii-hq/iii-getting-started/"><img src="https://modelsatlas.com/skills/iii-hq/iii-getting-started/badge.svg" alt="ModelsAtlas: SAFE B"></a>
Questions about iii-getting-started
What does the iii-getting-started skill do?
Is iii-getting-started safe to install?
What can iii-getting-started access on my machine?
How current is this page?
Sources
- github.com/iii-hq/iii/tree/main/skills/iii-getting-started — the audited source at commit 872770b7cf06 and every finding aboveObserved · 29 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the iii-getting-started skill do?
- Is iii-getting-started safe to install?
- What can iii-getting-started access on my machine?