Skip to content

docs phase 2: creating-workers section + landing copy nit#1664

Merged
anthonyiscoding merged 48 commits into
mainfrom
docs/phase-2
May 26, 2026
Merged

docs phase 2: creating-workers section + landing copy nit#1664
anthonyiscoding merged 48 commits into
mainfrom
docs/phase-2

Conversation

@anthonyiscoding
Copy link
Copy Markdown
Contributor

@anthonyiscoding anthonyiscoding commented May 20, 2026

Summary

Docs restructure (the main thrust)

  • New creating-workers/ section with an overview page; moved channels in, restored review TODOs, refactored worker lifecycle/shutdown, added "Scaffold a new worker", and reworked the triggers page (intro, Components, Declaring a Trigger Type, mini-http example).
  • Reworked using-iii/ pages: workers grouped under "Managing workers", channels regrouped under "Using channels" with a new payload-size section, triggers got code samples + em-dash cleanup, console copy polish.
  • understanding-iii/ overview now merges workers/triggers/functions; channels copy polished.
  • Landing page: "The Solution" consolidated with quadratic-to-zero framing.
  • Renamed SDK binding iiiworker across docs; added HTTP-invokable functions, trigger metadata, built-in functions index, how-to stubs, cross-links.
  • custom.css polish (tabular-nums in code, tighter line-height/padding).

Code (merged in from main)

45 commits, 179 files, +13.6k/−3.9k (uv.lock churn included).


Original scope (early branch)

  • New creating-workers/index.mdx: section overview that states the premise ("every new capability is added by writing a Worker, never by extending the Engine") and cross-links to /understanding-iii for the mental model and to the three existing pages in the section.
  • Adds the overview to the Creating Workers nav group in docs.json.
  • Tightens index.mdx landing copy: folds "Quadratic to Zero" into "The Solution" so the page leads with the headline framing before introducing the three primitives.

Summary by CodeRabbit

  • Documentation

    • Restructured and expanded guides for Workers, Triggers, and Functions with improved multi-language examples
    • Added new how-to pages for scheduling cron tasks and using trigger conditions
    • Enhanced documentation on HTTP-invokable functions, worker lifecycle management, and registry inspection
    • Clarified channels for streaming large payloads between workers
  • Style

    • Improved code block typography and accordion styling for better readability

Review Change Stack

anthonyiscoding and others added 2 commits May 20, 2026 10:26
Introduces the section by stating its premise: every new capability
in iii is added by writing a Worker, never by extending the Engine.
Cross-links to /understanding-iii for the mental model and to the
three sibling pages (Workers, Functions, Triggers) for the actual
authoring guides.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Folds the "Quadratic to Zero" section into "The Solution" so the
landing page leads with the headline framing (zero quadratic cost,
two-or-two-hundred is the same) before introducing the three
primitives. Removes the intermediate paragraph about up/downstream
friction and the worker-join detail, which read as supporting prose
rather than the core message.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
iii-website Ready Ready Preview, Comment May 26, 2026 3:28pm

Request Review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Extensive documentation restructure adding a Creating Workers section with publisher guides for registering functions (including HTTP-invokable endpoints), declaring trigger types, managing worker lifecycle, and streaming channels. Consumer-facing docs reorganized with examples validating environment variables and using worker-scoped APIs. Understanding iii conceptual pages consolidated and reframed. Site navigation updated.

Changes

Creating Workers authoring guides

Layer / File(s) Summary
Creating Workers index and navigation
docs/creating-workers/index.mdx, docs/creating-workers/index.mdx.skill.md, docs/docs.json
New Creating Workers section with index page explaining how workers extend iii via functions and triggers; navigation updated to include index and channels pages.
Function registration and HTTP-invokable functions
docs/creating-workers/functions.mdx, docs/creating-workers/functions.mdx.skill.md
Functions reframed as contributing capabilities; schemas clarified as metadata-only contracts; new "HTTP-invokable functions" section documents registering external HTTP endpoints via HttpInvocationConfig with per-language examples and auth/error semantics.
Trigger type authoring and binding
docs/creating-workers/triggers.mdx, docs/creating-workers/triggers.mdx.skill.md
Publisher-side trigger authoring expanded: binding functions to existing types, attaching per-binding metadata, declaring trigger types with TriggerHandler callbacks, mini-http from-scratch example, schema attachment (informational only), and dispatch/unregister semantics.
Worker connection, lifecycle, and shutdown
docs/creating-workers/workers.mdx, docs/creating-workers/workers.mdx.skill.md
Connection examples updated to pass workerName/WorkerMetadata; new "Inspecting the live registry" section with engine::*::list discovery functions; in-flight request handling and discovery-event subscriptions; new shutdown section with signal handling examples.
Channels: streaming payloads between workers
docs/creating-workers/channels.mdx, docs/creating-workers/channels.mdx.skill.md
New guide covering payload-size recommendations (~16MB practical threshold), local channel APIs (create/write/read), and cross-function channel-ref handoff via trigger payloads with multi-language examples.

Consumer-facing Using iii documentation

Layer / File(s) Summary
Using channels for cross-function payloads
docs/using-iii/channels.mdx, docs/using-iii/channels.mdx.skill.md
Channel examples updated from iii-scoped to worker-scoped SDK APIs (createChannel, trigger, address) across Node/TypeScript and Rust.
Invoking functions directly and common functions
docs/using-iii/functions.mdx, docs/using-iii/functions.mdx.skill.md
"Invoking functions" section reorganized with direct invocation examples; "Common functions" catalog (engine functions, subscriptions, worker families) repositioned; Node registration updated to validate III_URL from environment.
Trigger binding, gating conditions, and unregistration
docs/using-iii/triggers.mdx, docs/using-iii/triggers.mdx.skill.md
Invocation examples validate III_URL; Python trigger_async note added; "Bind multiple triggers," "Gate with condition," and "Unregister" sections replaced with multi-language tabbed examples using handle-based unregister.
Worker management: lifecycle, versioning, and lockfile
docs/using-iii/workers.mdx, docs/using-iii/workers.mdx.skill.md
New "Managing workers" section reorganizes "Listing," "Starting/stopping," "Updating," and "Removing" workers; iii.trigger references changed to worker.trigger; Versioning and lockfile guidance restructured.
Console, deployment, and engine configuration notes
docs/using-iii/console.mdx, docs/using-iii/console.mdx.skill.md, docs/using-iii/deployment.mdx, docs/using-iii/deployment.mdx.skill.md, docs/using-iii/engine.mdx, docs/using-iii/engine.mdx.skill.md
Console UI documentation reflowed for readability; Prometheus metrics port removed from Docker deployment table; new engine note clarifying config.yaml is read (not iii.lock) and lockfile role.

Conceptual docs and site structure

Layer / File(s) Summary
Understanding III: Workers, Triggers, and Functions
docs/understanding-iii/index.mdx, docs/understanding-iii/index.mdx.skill.md
Page title changed to "Workers, Triggers, and Functions"; Workers section expanded with connection/isolation semantics; new comprehensive Triggers section covering types, components, pipeline, actions, lifecycle; new Functions section with identifier conventions and direct invocation; standalone Workers/Functions/Triggers pages removed.
Channels conceptual model and why channels exist
docs/understanding-iii/channels.mdx, docs/understanding-iii/channels.mdx.skill.md
Introduces dedicated "The model" section; "Why channels exist" reframed around coordination-vs-data separation and engine tracing; "Channels versus triggers" comparison removed.
Landing page copy updates
docs/index.mdx, docs/index.mdx.skill.md
"The Solution" section reworded to add "iii reduces quadratic effort to zero"; three primitives (Worker, Trigger, Function) reformatted with emphasis.
Code block and accordion CSS styling
docs/custom.css
Adjusts code-block typography (line-height, tabular numerals, padding); adds accordion theming to align with table aesthetics (transparent containers, summary/trigger styling, open-state borders).
How-to stubs and install documentation
docs/how-to/schedule-cron-task.mdx, docs/how-to/schedule-cron-task.mdx.skill.md, docs/how-to/use-trigger-conditions.mdx, docs/how-to/use-trigger-conditions.mdx.skill.md, docs/install.mdx, docs/install.mdx.skill.md
New how-to skeleton pages with TODO checklists for cron scheduling and trigger conditions; install docs defer VS Code extension capability description to separate page.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

  • iii-hq/skills#10: Addresses cross-language SDK consistency issues from the audit by updating multi-language examples (register signatures, HTTP invocation config, api_path/schema naming, and env-variable checks).

Possibly related PRs

  • iii-hq/iii#1346: Updates function request/response "format" documentation—main PR clarifies schemas as metadata-only and adjusts examples, while retrieved PR adds how-to for defining formats and describes schema discovery/non-validation.
  • iii-hq/iii#1385: Main PR expands creating-workers/functions documentation with HTTP-invokable functions and HttpInvocationConfig semantics, aligning with new iii-http-invoked-functions skill and HTTP-invoked function contract.
  • iii-hq/iii#1668: Both PRs add/adjust documentation describing exposing functions over HTTP via the iii-http/http trigger model (requests/responses, handler wiring, HTTP invocation contract).

Suggested reviewers

  • mfpiccolo
  • sergiofilhowz
  • rohitg00

Poem

🐰 A rabbit hops through docs so bright,
Workers, Triggers, Functions—what a sight!
Channels flow like streams of thought,
HTTP endpoints come as sought,
The site takes shape, the guides align—
A publisher's pathway, now sublime! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: documentation restructuring of the creating-workers section and a small landing page copy adjustment.
Description check ✅ Passed The description provides a comprehensive summary of all major changes including docs restructure, code merges, renamed SDK bindings, and new features across multiple sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/phase-2

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 20, 2026

skill-check — docs

17 verified, 319 skipped.

Layer Result
structure
vale
ai

Three for three. Nicely done.

@mintlify
Copy link
Copy Markdown

mintlify Bot commented May 20, 2026

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
iii 🟢 Ready View Preview May 20, 2026, 3:49 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

- functions.mdx, triggers.mdx: restore the "Review against real
  SDK/CLI surface" TODOs that PR #1651 removed.
- workers.mdx: restore the iii.worker.yaml-reference and ephemeral-
  worker-shutdown TODOs; refresh the SDK reference Note, add the
  workerName option to Connecting-to-the-engine snippets, expand the
  Worker lifecycle and invocation_stopped handling with per-language
  examples, restructure registry inspection into Read-a-snapshot /
  Subscribe tables, and tighten the manifest paragraph.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- Move the "What a worker contributes" bullets up next to the SDK
  reference Note so callers see the contribution surface immediately.
- Promote registry inspection into the Worker lifecycle group and add
  a per-language Accordion example that lists workers, functions,
  triggers, and trigger types.
- Split Handling Worker disconnects into "In flight requests" and
  "Subscribe to changes" subsections with Accordion examples.
- Add a "Shutting down a worker" section with per-language SIGTERM
  examples, framed as the natural fit for one-shot / ephemeral
  workers.

Re-rendered workers.mdx.skill.md to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@anthonyiscoding anthonyiscoding changed the title docs: creating-workers overview + landing copy pass docs: creating-workers overview + landing copy nit May 20, 2026
@anthonyiscoding anthonyiscoding changed the title docs: creating-workers overview + landing copy nit docs: creating-workers section + landing copy nit May 20, 2026
@anthonyiscoding anthonyiscoding changed the title docs: creating-workers section + landing copy nit docs phase 2: creating-workers section + landing copy nit May 20, 2026
anthonyiscoding and others added 3 commits May 20, 2026 13:12
…ages

- Rename the SDK handle variable from `iii` to `worker` across in-scope
  docs (creating-workers, using-iii, sdk-reference, etc.) so example
  code reads naturally now that "worker" is the SDK's noun. Skipped
  versioned archives (0-10-0/, 0-11-0/, changelog/), URLs (iii.dev),
  filenames (iii.lock, iii.worker.yaml), OTel metric names
  (iii.invocations.total, ...), and module imports.
- Link `http`, `cron`, queue messages, and `state` to their respective
  workers on workers.iii.dev in creating-workers/triggers.mdx and the
  parallel mentions in using-iii/triggers.mdx.
- Split the "see Using iii / Triggers" + "see Understanding iii /
  Triggers" pointer paragraph into two `<Note>` callouts so each
  reference reads as its own aside.
- Fix a broken inline-fenced Tabs block under "Unregister a trigger
  type" so each language example renders on its own line; switch
  Python to the handle pattern (TriggerTypeRef.unregister) to match
  the surrounding prose.
- Style accordions to share the table border treatment (borders match
  --iii-rule, no radius). Trigger/header keeps the inline-code panel
  background; the expanded body uses the regular page bg, so the
  collapsed and expanded states each look like the right thing.
- Replace `## Run an ephemeral worker` with `## Shutting down a worker`
  in creating-workers/workers.mdx; describe `shutdown` semantics in
  terms already introduced in "Handling Worker disconnects", show the
  per-language signal-handler patterns, and fold the ephemeral-worker
  guidance into a `<Note>` so it's clearly the same code path.

Re-rendered the affected `.skill.md` artifacts to match.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
Rewrites the trigger-type publisher section against the real SDK surface:
- Frames the section as publisher (vs consumer) explicitly so the role
  flip from the previous section is obvious.
- Calls out the registerTrigger naming collision between the consumer
  bind (worker.registerTrigger) and the publisher handler callback
  (TriggerHandler.registerTrigger) as a Warning.
- Describes the TriggerTypeRef handle's three uses (registerFunction,
  registerTrigger, unregister) and notes Rust's unregister asymmetry.
- Reframes the example as a mini iii-http built from scratch, with a
  bindings routing table that the Dispatch section now references back
  by name. Consistent worker variable naming across all three tabs.
- Regenerates the matching .skill.md artifact.
- using-iii/triggers: add cross-ref Note at "Register a trigger"
  pointing worker authors to creating-workers/triggers#bind-a-
  function-to-an-existing-trigger-type.
- using-iii/functions: add a "Common functions" section indexing the
  engine::* introspection / lifecycle functions and the standard
  workers (state, stream, queue, pubsub, observability) with links
  out to each worker's docs.
- how-to/schedule-cron-task, how-to/use-trigger-conditions: stub
  pages with frontmatter + TODO bodies for future how-to authoring.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Split the section into Components-of-a-Trigger-Type and an Example
walkthrough of a mini iii-http. Reframe `TriggerHandler` as
"interface you implement" and the `TriggerTypeRef` as the handle
`registerTriggerType` returns. Strip the Warning callout and the
TriggerTypeRef convenience-method tables that were marked Node/Python
only — they'll come back once the surface is stable.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
anthonyiscoding and others added 2 commits May 20, 2026 14:48
…example

Reorganize the intro into "register on existing types" vs "publish new
types" with separate Notes; expand the `TriggerHandler` callback
descriptions; add an "Example: A mini iii-http from scratch" walkthrough
showing a publisher worker maintaining its own bindings map.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Replace two ` — ` clauses (schemas-are-metadata, unregister-timing)
with a colon and parentheses respectively. No semantic change.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Vale [Terminology.EmDash] flagged two em dashes in the asyncio-twin Note.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@anthonyiscoding
Copy link
Copy Markdown
Contributor Author

#1677 is related but there shouldn't be any conflicts besides docs.json, easy to resolve

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
docs/understanding-iii/index.mdx.skill.md (1)

233-233: TODO reminder: Confirm restricted string prefix policy.

The TODO comment indicates uncertainty about whether restricted string prefixes for function IDs are still enforced. Please verify this with the engine implementation and either document the restriction or remove the TODO.

Do you want me to search the codebase for restricted prefix enforcement?

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/understanding-iii/index.mdx.skill.md` at line 233, The TODO about
"restricted string prefixes" means we need to confirm whether the engine still
enforces restricted prefixes for function IDs; search the engine implementation
for any validation or constants that mention "restricted", "prefix", "function
ID", or methods like validateFunctionId/normalizeFunctionId, confirm the current
behavior, then either (a) update the docs at the TODO to document the exact
restriction and link to the enforcing code symbol(s), or (b) if no enforcement
exists, remove the TODO and the statement about restricted prefixes; include the
exact code symbol names you found (e.g., validateFunctionId,
FunctionIdPrefixConstants) in the doc change.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/creating-workers/functions.mdx`:
- Around line 84-88: Update the Note paragraph in
docs/creating-workers/functions.mdx to fix the parallel structure: locate the
sentence that begins "the engine does not enforce a specific schema, reject
payloads, nor handler return values..." and change it to use matching
auxiliaries—for example, "the engine does not enforce a specific schema, nor
does it reject payloads or handler return values that don't match the schemas."
Ensure you modify the Note block content accordingly.

---

Nitpick comments:
In `@docs/understanding-iii/index.mdx.skill.md`:
- Line 233: The TODO about "restricted string prefixes" means we need to confirm
whether the engine still enforces restricted prefixes for function IDs; search
the engine implementation for any validation or constants that mention
"restricted", "prefix", "function ID", or methods like
validateFunctionId/normalizeFunctionId, confirm the current behavior, then
either (a) update the docs at the TODO to document the exact restriction and
link to the enforcing code symbol(s), or (b) if no enforcement exists, remove
the TODO and the statement about restricted prefixes; include the exact code
symbol names you found (e.g., validateFunctionId, FunctionIdPrefixConstants) in
the doc change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 77667ac6-0859-4058-8a3c-324cf4cd1da6

📥 Commits

Reviewing files that changed from the base of the PR and between 8491071 and 4e62745.

📒 Files selected for processing (35)
  • .skill-check.yaml
  • docs/creating-workers/channels.mdx
  • docs/creating-workers/channels.mdx.skill.md
  • docs/creating-workers/functions.mdx
  • docs/creating-workers/functions.mdx.skill.md
  • docs/creating-workers/triggers.mdx
  • docs/creating-workers/triggers.mdx.skill.md
  • docs/creating-workers/workers.mdx
  • docs/creating-workers/workers.mdx.skill.md
  • docs/custom.css
  • docs/docs.json
  • docs/understanding-iii/channels.mdx
  • docs/understanding-iii/channels.mdx.skill.md
  • docs/understanding-iii/functions.mdx
  • docs/understanding-iii/functions.mdx.skill.md
  • docs/understanding-iii/index.mdx
  • docs/understanding-iii/index.mdx.skill.md
  • docs/understanding-iii/triggers.mdx
  • docs/understanding-iii/triggers.mdx.skill.md
  • docs/understanding-iii/workers.mdx
  • docs/understanding-iii/workers.mdx.skill.md
  • docs/using-iii/channels.mdx
  • docs/using-iii/channels.mdx.skill.md
  • docs/using-iii/console.mdx
  • docs/using-iii/console.mdx.skill.md
  • docs/using-iii/deployment.mdx
  • docs/using-iii/deployment.mdx.skill.md
  • docs/using-iii/engine.mdx
  • docs/using-iii/engine.mdx.skill.md
  • docs/using-iii/functions.mdx
  • docs/using-iii/functions.mdx.skill.md
  • docs/using-iii/triggers.mdx
  • docs/using-iii/triggers.mdx.skill.md
  • docs/using-iii/workers.mdx
  • docs/using-iii/workers.mdx.skill.md
💤 Files with no reviewable changes (10)
  • docs/using-iii/deployment.mdx
  • docs/understanding-iii/functions.mdx
  • docs/understanding-iii/triggers.mdx.skill.md
  • docs/understanding-iii/workers.mdx.skill.md
  • docs/understanding-iii/workers.mdx
  • docs/understanding-iii/triggers.mdx
  • docs/using-iii/channels.mdx.skill.md
  • docs/understanding-iii/functions.mdx.skill.md
  • docs/using-iii/deployment.mdx.skill.md
  • docs/using-iii/channels.mdx
✅ Files skipped from review due to trivial changes (9)
  • docs/understanding-iii/channels.mdx.skill.md
  • .skill-check.yaml
  • docs/creating-workers/channels.mdx
  • docs/using-iii/functions.mdx.skill.md
  • docs/using-iii/console.mdx
  • docs/creating-workers/channels.mdx.skill.md
  • docs/docs.json
  • docs/using-iii/functions.mdx
  • docs/using-iii/triggers.mdx

Comment thread docs/creating-workers/functions.mdx
- Drop "built-in" framing from the http trigger type in
  creating-workers/triggers.mdx; attribute the type to iii-http instead,
  consistent with the no built-in/external worker distinction.
- Replace the commented-out VS Code extension capability list in
  install.mdx with a single neutral sentence and a TODO to move the
  capability description to an extension overview page when the section
  is re-enabled.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
sergiofilhowz
sergiofilhowz previously approved these changes May 26, 2026
anthonyiscoding and others added 2 commits May 26, 2026 10:28
Resolved docs/understanding-iii/triggers.mdx (deleted on phase-2, modified
on main): kept the deletion and ported the trigger-registration-error
content from #1644 into docs/using-iii/triggers.mdx as a "Handling missing
triggers" section, then re-rendered the skill sibling.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
docs/docs.json (2)

271-280: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Navigation inconsistency: creating-workers/channels in nav but not featured in index page cards.

The "Creating Workers" navigation includes creating-workers/channels (line 278), but according to the relevant code snippet from creating-workers/index.mdx, the landing page only features three navigation cards: Workers, Triggers, and Functions. This creates an inconsistency where Channels is accessible via navigation but not featured prominently on the section's landing page.

Please either:

  1. Add a Channels card to creating-workers/index.mdx to maintain consistency, or
  2. Add a note explaining why Channels is available but not featured (e.g., "Additional topics: Channels")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/docs.json` around lines 271 - 280, The "Creating Workers" nav lists
creating-workers/channels but the creating-workers/index.mdx landing page only
shows cards for Workers, Triggers, and Functions; fix by either adding a
Channels card to creating-workers/index.mdx that links to
creating-workers/channels (match styling/metadata of the existing cards: title
"Channels", description, and href "creating-workers/channels") or add a short
explanatory note on creating-workers/index.mdx (e.g., "Additional topics:
Channels" with a link to creating-workers/channels) so the navigation and
landing page are consistent.

250-261: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix “Channels” discoverability in the Creating Workers docs

  • docs/using-iii/channels.mdx is not present, so there’s no orphaned page to restore under “Using iii”.
  • docs/docs.json includes creating-workers/channels in the 0.13.x “Creating Workers” nav, but docs/creating-workers/index.mdx only renders cards for Workers/Triggers/Functions—add a “Channels” card (or adjust the layout to include it) to match navigation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/docs.json` around lines 250 - 261, The navigation references a missing
"creating-workers/channels" page and the Creating Workers landing
(docs/creating-workers/index.mdx) doesn't show a Channels card to match
docs/docs.json; either add a Channels card to docs/creating-workers/index.mdx
that links to creating-workers/channels (and ensure that target page exists or
is created), or remove the "creating-workers/channels" entry from
docs/docs.json; update the Creating Workers component where
Worker/Trigger/Function cards are rendered (search for
docs/creating-workers/index.mdx and the card component or array) to include a
Channels entry (title "Channels", description, and href
"creating-workers/channels") so nav and page are consistent.
docs/using-iii/triggers.mdx (2)

37-44: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Validate III_URL in the Python example for consistency.

The Node/TypeScript example (lines 23-24) and Rust example (line 61) both explicitly validate that III_URL is set before proceeding. The Python example should follow the same pattern to provide clear error feedback and maintain consistency across languages.

🐍 Proposed fix to add III_URL validation
 import os
 from iii import register_worker, InitOptions, TriggerAction
 
+url = os.environ.get("III_URL")
+if not url:
+    raise ValueError("III_URL must be set")
+
 worker = register_worker(
-    os.environ.get("III_URL"),
+    url,
     InitOptions(worker_name="caller"),
 )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/using-iii/triggers.mdx` around lines 37 - 44, The Python snippet
currently calls register_worker(...) without confirming III_URL is set; add an
explicit validation before calling register_worker: read III_URL from the
environment (e.g., os.environ.get or os.getenv) into a variable, check if it's
falsy, and raise a clear exception or exit (ValueError or SystemExit) with a
message like "III_URL must be set" so register_worker(...) is only invoked when
III_URL is present; update the code surrounding register_worker, InitOptions,
and TriggerAction accordingly.

138-145: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Validate III_URL in the Python registration example.

Similar to the earlier "Call a function directly" section, this Python example should validate III_URL before use to match the Node/TypeScript (lines 125-126) and Rust (line 160) examples.

🐍 Proposed fix to add III_URL validation
 import os
 from iii import register_worker, InitOptions
 
+url = os.environ.get("III_URL")
+if not url:
+    raise ValueError("III_URL must be set")
+
 worker = register_worker(
-    os.environ.get("III_URL"),
+    url,
     InitOptions(worker_name="my-worker"),
 )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/using-iii/triggers.mdx` around lines 138 - 145, The example uses
os.environ.get("III_URL") without validating it; update the registration snippet
to read and validate the III_URL environment variable before calling
register_worker (e.g., retrieve os.environ.get("III_URL") into a variable, check
if it's truthy/raise an informative exception or print/log and exit if missing),
then pass that validated variable into register_worker along with
InitOptions(worker_name="my-worker") so register_worker and InitOptions are only
called when III_URL is present.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@docs/docs.json`:
- Around line 271-280: The "Creating Workers" nav lists
creating-workers/channels but the creating-workers/index.mdx landing page only
shows cards for Workers, Triggers, and Functions; fix by either adding a
Channels card to creating-workers/index.mdx that links to
creating-workers/channels (match styling/metadata of the existing cards: title
"Channels", description, and href "creating-workers/channels") or add a short
explanatory note on creating-workers/index.mdx (e.g., "Additional topics:
Channels" with a link to creating-workers/channels) so the navigation and
landing page are consistent.
- Around line 250-261: The navigation references a missing
"creating-workers/channels" page and the Creating Workers landing
(docs/creating-workers/index.mdx) doesn't show a Channels card to match
docs/docs.json; either add a Channels card to docs/creating-workers/index.mdx
that links to creating-workers/channels (and ensure that target page exists or
is created), or remove the "creating-workers/channels" entry from
docs/docs.json; update the Creating Workers component where
Worker/Trigger/Function cards are rendered (search for
docs/creating-workers/index.mdx and the card component or array) to include a
Channels entry (title "Channels", description, and href
"creating-workers/channels") so nav and page are consistent.

In `@docs/using-iii/triggers.mdx`:
- Around line 37-44: The Python snippet currently calls register_worker(...)
without confirming III_URL is set; add an explicit validation before calling
register_worker: read III_URL from the environment (e.g., os.environ.get or
os.getenv) into a variable, check if it's falsy, and raise a clear exception or
exit (ValueError or SystemExit) with a message like "III_URL must be set" so
register_worker(...) is only invoked when III_URL is present; update the code
surrounding register_worker, InitOptions, and TriggerAction accordingly.
- Around line 138-145: The example uses os.environ.get("III_URL") without
validating it; update the registration snippet to read and validate the III_URL
environment variable before calling register_worker (e.g., retrieve
os.environ.get("III_URL") into a variable, check if it's truthy/raise an
informative exception or print/log and exit if missing), then pass that
validated variable into register_worker along with
InitOptions(worker_name="my-worker") so register_worker and InitOptions are only
called when III_URL is present.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 5536a05b-3ddf-41e6-ba62-80f69e9c1521

📥 Commits

Reviewing files that changed from the base of the PR and between b4926c7 and ddd7e29.

📒 Files selected for processing (3)
  • docs/docs.json
  • docs/using-iii/triggers.mdx
  • docs/using-iii/triggers.mdx.skill.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants