Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
8b15cb4
refactor: workbench derives schema display from JSON Schema, delete d…
Huijiro Mar 10, 2026
a53d6f1
fix: escape string literals and quote special property keys in jsonSc…
Huijiro Mar 10, 2026
346ab96
refactor: delete dead code from ast.ts and remove unused workbench.ts
Huijiro Mar 10, 2026
3aa0af4
style: format
Huijiro Mar 10, 2026
26b6ff2
refactor: replace AST lifecycle generator with TypeScript type checker
Huijiro Mar 10, 2026
4fad2b8
refactor: simplify createRouter to thin Hono wrapper, rewrite agent-d…
Huijiro Mar 10, 2026
af0ded7
refactor: delete ast.ts, file-based routing, acorn/astring deps
Huijiro Mar 10, 2026
52fa0b6
fix: address CodeRabbit review feedback
Huijiro Mar 10, 2026
069628c
fix: migrate all test apps to explicit routing, fix eval discovery
Huijiro Mar 10, 2026
d18d2e3
ci: trigger workflow run
Huijiro Mar 10, 2026
6ad3e83
ci: add v2 branch to workflow triggers
Huijiro Mar 10, 2026
f5a1206
refactor: remove routes.ts generation — derive types from Hono router…
Huijiro Mar 12, 2026
ac20c35
refactor: consolidate entry generator into runtime bootstrap() (#1184)
Huijiro Mar 16, 2026
b979fa3
Feat/augment hono defaults (#1183)
Huijiro Mar 18, 2026
c98ce19
feat: use bun --hot for backend HMR, remove manual file watcher and r…
Huijiro Mar 18, 2026
97d407e
fix: prevent double Bun.serve() in production causing EADDRINUSE
Huijiro Mar 18, 2026
45a31e9
merge: sync v2 with main
Huijiro Mar 18, 2026
f69cf12
fix: include websocket handler in AppResult for bun --hot dev mode
Huijiro Mar 18, 2026
bb9dcbb
fix: replace json5 import with local parseJSONC utility
Huijiro Mar 18, 2026
b6f3b4d
feat: add @agentuity/migrate package and deprecate agentuity.config.ts
Huijiro Mar 19, 2026
be37659
feat(cli): v2 architecture improvements and deprecations
Huijiro Mar 19, 2026
1fedb9f
test(cli): add tests for public folder handling
Huijiro Mar 19, 2026
35b3574
test(cli): add comprehensive dev server lifecycle tests
Huijiro Mar 20, 2026
c31e69d
merge: main into v2
Huijiro Mar 20, 2026
1bb2302
feat(cli): add vite.config.ts files for frontend projects
Huijiro Mar 20, 2026
2481bea
fix(cli): client builds spawn vite as subprocess for plugin compatibi…
Huijiro Mar 20, 2026
7ee60bc
fix: add @agentuity/migrate to root tsconfig references
Huijiro Mar 20, 2026
b83cd79
fix(evals): add missing tsconfig references to runtime and schema
Huijiro Mar 20, 2026
041ce00
fix(templates): add vite.config.ts for web frontend builds
Huijiro Mar 20, 2026
6983804
fix(runtime): handle nested index.html path from vite builds
Huijiro Mar 20, 2026
2f27459
fix(runtime): correct client directory resolution for web routes
Huijiro Mar 20, 2026
44aa7e5
feat: create @agentuity/otel package
Huijiro Mar 23, 2026
55cb228
feat: create @agentuity/services package
Huijiro Mar 23, 2026
390b848
feat: create @agentuity/hono package
Huijiro Mar 23, 2026
20f9602
refactor: update createApp to use @agentuity/hono middleware
Huijiro Mar 23, 2026
f483438
feat: create @agentuity/local package
Huijiro Mar 23, 2026
3d7f446
feat: move event providers to @agentuity/services
Huijiro Mar 23, 2026
21dbd8f
refactor: add deprecation warning to createApp()
Huijiro Mar 23, 2026
480694f
fix: regenerate lockfile to resolve duplicate keys
Huijiro Mar 23, 2026
aa8a37f
feat: migrate to TypeScript 6.0 with tsgo, add @agentuity/adapter pac…
Huijiro Mar 25, 2026
0768841
refactor: rename otel to analytics, remove services package
Huijiro Mar 25, 2026
b44b3c3
refactor: rename analytics to telemetry, simplify build
Huijiro Mar 25, 2026
ce304a5
refactor: separate package and app builds
Huijiro Mar 25, 2026
2c5f800
feat: create @agentuity/analytics package with ES module beacon
Huijiro Mar 25, 2026
bfcb20d
refactor: remove session context from analytics
Huijiro Mar 25, 2026
92e7299
feat: Framework-agnostic build pipeline for CNB/Buildpack support (#1…
Huijiro Apr 9, 2026
9dcdf0f
refactor: move analytics wrapper from frontend to analytics package
Huijiro Apr 9, 2026
b0da565
refactor: sunset @agentuity/runtime — remove v2 build pipeline and ag…
Huijiro Apr 9, 2026
dbde9e1
merge: main into v3
Huijiro Apr 9, 2026
00d917e
fix: replace tsgo with tsc in build scripts
Huijiro Apr 9, 2026
1b1e7fa
chore: remove files leaked from main merge
Huijiro Apr 9, 2026
82c0f1d
fix: remove more leaked files from main merge
Huijiro Apr 9, 2026
3856134
fix: resolve CI failures — missing tsconfig refs, dead scaffolds, lin…
Huijiro Apr 10, 2026
bd5beb9
fix: address CodeRabbit review feedback
Huijiro Apr 10, 2026
73bfd51
fix: address outdated CodeRabbit conversations in apps/docs
Huijiro Apr 10, 2026
6d1920e
fix: framework demo test script — remove nonexistent agent server waits
Huijiro Apr 10, 2026
19b9d31
refactor: standardize all framework tests on port 3000
Huijiro Apr 10, 2026
f55864c
fix: add explicit subpath exports for all @agentuity/core services
Huijiro Apr 10, 2026
ac3b798
fix: add missing build step to testing-apps-test CI job
Huijiro Apr 10, 2026
f7cfa3f
fix: replace tanstack-start scaffold with real TanStack Start app
Huijiro Apr 10, 2026
5b6b58d
feat: run framework demo tests via agentuity dev with SDK credentials
Huijiro Apr 10, 2026
e600f98
feat: add AI translation demo to tanstack-start test app
Huijiro Apr 10, 2026
3f4af69
style: match tanstack-start UI to Agentuity template design
Huijiro Apr 10, 2026
e8538b3
fix: restore shellComponent in __root.tsx so CSS is injected
Huijiro Apr 10, 2026
9dd0b16
refactor: update scaffolding AI examples to use Vercel AI SDK
Huijiro Apr 10, 2026
57ea56c
refactor: split frameworks.ts, replace brand badges with landing pages
Huijiro Apr 10, 2026
cec94b1
fix: load AGENTUITY_SDK_KEY from project .env files in dev command
Huijiro Apr 10, 2026
9a45a74
fix: fall back to CLI auth key for AI Gateway when no project linked
Huijiro Apr 10, 2026
db0a660
feat: add test:dev script for testing framework apps via agentuity dev
Huijiro Apr 10, 2026
b49510d
feat: use agentuity dev in testing app dev scripts
Huijiro Apr 10, 2026
d1159a2
fix: load profile transport URL and show gateway routing status
Huijiro Apr 10, 2026
7a3fdb0
fix: use TanStack Start server routes instead of 'use server' pattern
Huijiro Apr 10, 2026
4943927
chore: remove debug env endpoint and UI panel from tanstack-start
Huijiro Apr 10, 2026
3ba03af
style: highlight agentuity command in dev warning message
Huijiro Apr 10, 2026
0959dee
style: use cyan+bold for command in dev warning instead of white primary
Huijiro Apr 10, 2026
3f632b0
chore: remove redundant dev server startup log lines
Huijiro Apr 10, 2026
457e8d1
feat: add @typescript/native-preview for tsgo and restore tsgo build/…
Huijiro Apr 13, 2026
28feb3a
Merge remote-tracking branch 'origin/main' into v3
Huijiro Apr 13, 2026
0dc5c35
fix(e2e): update tanstack playwright tests to match current UI
Huijiro Apr 13, 2026
5ceff55
chore: remove templates tarball from publish script (no templates in v3)
Huijiro Apr 13, 2026
491ea36
fix: add --ignore-scripts to bun publish to prevent prepublishOnly re…
Huijiro Apr 13, 2026
05d6b5d
feat(ci): publish branch builds to npm on PRs
Huijiro Apr 13, 2026
74f8ea6
chore: remove @agentuity/workbench package
Huijiro Apr 13, 2026
8708d04
fix(ci): set NODE_ENV=test for unit tests in release workflow
Huijiro Apr 13, 2026
34ec13a
fix: remove remaining workbench reference from svelte-web and regener…
Huijiro Apr 13, 2026
a117b16
fix(ci): replace build:packages with build in release workflow
Huijiro Apr 13, 2026
07102de
feat: add build:packages script and use it in release workflow
Huijiro Apr 13, 2026
1608643
fix(ci): dynamically discover packages in smoke test, fix tanstack e2…
Huijiro Apr 13, 2026
e785850
fix(ci): use tsc --build for release jobs to ensure correct build order
Huijiro Apr 13, 2026
0833a07
fix(ci): prefix npm dist-tag with 'branch.' to avoid semver range rej…
Huijiro Apr 13, 2026
66c5301
fix(ci): use bun instead of node for CLI in smoke test, use valid fra…
Huijiro Apr 13, 2026
0b68018
feat(ci): add PR comment with npm branch build details
Huijiro Apr 13, 2026
cdab389
fix: add repository field to all packages for npm provenance verifica…
Huijiro Apr 13, 2026
93c310a
fix: upgrade ai SDK to v6 and @ai-sdk/openai to v3 for OPENAI_BASE_UR…
Huijiro Apr 13, 2026
48d5810
fix: use regional catalyst URL for AI Gateway fallback
Huijiro Apr 13, 2026
820f98a
fix: add @types/node to nextjs testing app
Huijiro Apr 13, 2026
bb34208
revert(ci): remove PR branch publishing from release workflow
Huijiro Apr 13, 2026
06ce480
fix: pin @agentuity packages to ^3.0.0 in scaffolded projects
Huijiro Apr 13, 2026
938efbe
add otp prompt
jhaynie Apr 13, 2026
49fd1da
Merge remote-tracking branch 'refs/remotes/origin/v3' into v3
jhaynie Apr 13, 2026
ecdf0e9
feat(migrate): add v2→v3 migration mode
Huijiro Apr 13, 2026
ecc7f0e
Release 3.0.0-alpha.1
Huijiro Apr 14, 2026
a1b3983
feat(cli): replace inline AI/landing snippets with template overlay d…
Huijiro Apr 14, 2026
847150f
fix(cli): exclude template overlays from TypeScript compilation
Huijiro Apr 14, 2026
e2ec1b9
Release 3.0.0-alpha.2
Huijiro Apr 14, 2026
ecba48e
Merge origin/main into v3
Huijiro Apr 14, 2026
0186dd2
fix(create-agentuity): map alpha prereleases to @alpha dist-tag
Huijiro Apr 14, 2026
72d1703
fix(create-agentuity): derive CLI dist-tag from prerelease identifier
Huijiro Apr 14, 2026
fa07ff2
chore(create-agentuity): bump version to 3.0.0-alpha.3
Huijiro Apr 14, 2026
9f055ff
fix(cli): use dist-tag for project dependencies when CLI is a prerelease
Huijiro Apr 14, 2026
6eaf598
fix(cli): default major version to 3 in fallback case
Huijiro Apr 14, 2026
533b1b0
chore(cli): bump version to 3.0.0-alpha.3
Huijiro Apr 14, 2026
dc836f5
chore: bump cli and create-agentuity to 3.0.0-alpha.4
Huijiro Apr 14, 2026
dc85637
fix(cli): add force:true to cpSync in applyOverlay so template files …
Huijiro Apr 14, 2026
53a253b
chore: publish 3.0.0-alpha.6
Huijiro Apr 14, 2026
215d5e0
chore: remove @agentuity/auth, @agentuity/react, @agentuity/frontend …
Huijiro Apr 15, 2026
b9b145e
chore: remove dead code and unused dependencies
Huijiro Apr 15, 2026
efaaa49
chore: remove all workbench functionality
Huijiro Apr 15, 2026
6a12ae4
chore: remove @agentuity/evals package and all evaluation infrastructure
Huijiro Apr 16, 2026
8144e9e
chore: v3 cleanup — janitorial + testing-app reshape (#1397)
Huijiro Apr 22, 2026
744db36
docs,ci: address CodeRabbit feedback
Huijiro Apr 22, 2026
55900dc
merge: origin/main into v3
Huijiro Apr 22, 2026
e4fd886
merge: catch up with origin/main (explorer realtime + pi v0.68 + bran…
Huijiro Apr 22, 2026
9b90fef
ci: bump checkout/setup-node to v5 and force Node 24 for remaining ac…
Huijiro Apr 27, 2026
8256ca5
merge: origin/main into v3
Huijiro Apr 27, 2026
58e73d6
feat(publish): add alpha release type alongside beta
Huijiro Apr 28, 2026
459a63f
feat(publish): cache generated release notes to avoid re-running open…
Huijiro Apr 28, 2026
0d00b87
fix(packages): normalize repository.url to git+https://... form
Huijiro Apr 28, 2026
89ae448
Release 3.0.0-alpha.7
Huijiro Apr 28, 2026
d4d79a9
merge: origin/main into v3
Huijiro Apr 28, 2026
75484f9
refactor(keyvalue,vector)!: align search/result types with rest of SDK
Huijiro Apr 30, 2026
57567db
feat(cli): zero-config `agentuity deploy` in vanilla JS/TS projects
Huijiro Apr 30, 2026
a5829b2
refactor(cli): split deploy command into per-phase modules
Huijiro Apr 30, 2026
171366c
feat(cli): Node 24+ runtime support + dedicated @agentuity/storage pa…
Huijiro May 4, 2026
7eb4dfc
feat(cli): detect existing framework projects in project create
Huijiro Apr 30, 2026
c9285d9
merge: origin/main into v3
Huijiro May 4, 2026
1e8e46b
chore: deprecate @agentuity/postgres and @agentuity/drizzle
Huijiro May 4, 2026
94d4d26
feat(cli): service augments — translate demo with optional DB / KV / …
Huijiro May 5, 2026
c135d20
Merge remote-tracking branch 'origin/main' into v3
Huijiro May 5, 2026
def9fc5
ci(smoke): pass AGENTUITY_ORG_ID + AGENTUITY_DB_DATABASE to db smoke …
Huijiro May 5, 2026
cc26930
ci(smoke): use region 'use' for db smoke test
Huijiro May 5, 2026
5c098ef
ci(smoke): skip db smoke test pending SDK-key DB auth (infra#120)
Huijiro May 5, 2026
e98036a
test(sandbox): create on node:lts runtime so node -e commands work
Huijiro May 5, 2026
91d43e1
skill(file-infra-issue): help file deduped infra issues for platform-…
Huijiro May 5, 2026
dbba733
Release 3.0.0-beta.0
Huijiro May 5, 2026
e694f88
scripts(publish): pin gh release to HEAD and auto-commit version bumps
Huijiro May 5, 2026
a0546dc
chore: remove completed PLAN.md and stale code reference
Huijiro May 5, 2026
11ebb11
docs: scrub v2-era references from package READMEs and skill prompts
Huijiro May 5, 2026
1846284
chore: scrub more v2 leftovers (cli, remote-import, env types)
Huijiro May 5, 2026
89c8be1
chore: add knip + remove dead files and unused root deps
Huijiro May 5, 2026
d4bf236
chore: drop dead default exports + redundant bun-types/test-utils deps
Huijiro May 5, 2026
fab33de
chore: drop dead gravity-mode helpers from cli runtime/api
Huijiro May 5, 2026
bcb86ca
fix(cli): drop deleted ai-prompt md files from build:assets copy list
Huijiro May 5, 2026
b9834ac
chore: scrub v2-era doc-comments and dead env types
Huijiro May 5, 2026
a71be92
chore: deprecate @agentuity/schema, delete examples/ + integration-su…
Huijiro May 5, 2026
f478c1d
chore: remove dead bootstrapRuntimeEnv + workspace: handling in migrate
Huijiro May 5, 2026
b63d31d
test: add unit coverage for @agentuity/hono and @agentuity/analytics
Huijiro May 5, 2026
2975a86
chore: ignore @agentuity/local in knip
Huijiro May 5, 2026
eb76edb
chore: drop confirmed-dead exports from cli + analytics
Huijiro May 5, 2026
369594a
fix(ci): drop integration-suite from typecheck:apps script
Huijiro May 5, 2026
7d6ebe0
fix(cli/templates): correct drizzle neon-http import and S3 write API
Huijiro May 6, 2026
25aa824
Release 3.0.0-beta.1
Huijiro May 6, 2026
a3f8273
feat(storage): bucketConfigFromEnv() + lazy template singleton
Huijiro May 6, 2026
b846189
Release 3.0.0-beta.2
Huijiro May 6, 2026
dc820fc
Merge origin/main into v3
Huijiro May 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
178 changes: 178 additions & 0 deletions .agents/skills/file-infra-issue/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
---
name: file-infra-issue
description: File a bug or enhancement on the agentuity/infra repo when the SDK's behavior is being broken or made worse by something on the platform side (Catalyst, Sandbox runtime, Ion, Gluon, Hadron, region routing, auth surfaces). Use this when an SDK debugging session ends with "this is the platform's fault, not ours" — unhelpful error messages from the API, opaque 5xx responses, behavior that contradicts the docs, missing capabilities the SDK is documented to expose. Always checks for duplicates first and refuses to file if the issue is actually an SDK bug.
---

# File Infra Issue

When the SDK is breaking because of an infra-side problem (bad error responses, missing endpoints, misrouting, unauthorized where authorized was expected, etc.), file a clean, deduplicated issue on `agentuity/infra`.

## When to use this skill

Use it when **all** of the following are true:

1. You hit a real failure (CI red, smoke test red, manual repro red), and
2. The root cause sits on the **platform side** — Catalyst HTTP API, sandbox runtime images, Ion, Gluon, Hadron, region routing, auth/permission surfaces — not in SDK code, and
3. The fix has to happen in `agentuity/infra` (or its downstream services), not in this repo.

Concrete examples that qualify:

- The API returns `500 Internal Server Error` for a user-input error that should be a structured 4xx.
- An endpoint returns `401 Unauthorized` when the resource simply doesn't exist (should be `404`).
- The SDK is documented to use SDK-key auth, but the endpoint silently rejects SDK keys and only accepts CLI tokens.
- A sandbox runtime image is missing a binary the docs claim it ships.
- An endpoint requires the caller to supply a piece of state (region, project id) that the platform should be able to resolve from existing context.
- Error responses are missing context the user needs to debug (no session id, empty stderr, no message body).
- Cross-region routing falls back in a confusing way (e.g., wrong host returns 401 instead of 421 misdirected).

## When NOT to use this skill

Refuse / suggest a different action if:

- The bug is in **SDK code** (wrong types, bad URL construction, wrong header name on the SDK side, schema mismatch in our zod definitions, etc.) — fix it in this repo instead.
- The "issue" is actually a **feature request** for the SDK that the platform already supports — file it on `agentuity/sdk` (or just implement it).
- The behavior is **as documented** in the platform's own contract — the SDK is the wrong layer to be surprised by it; either update the SDK to match or update SDK docs.
- You only **suspect** it's infra but haven't confirmed (e.g., didn't curl the endpoint directly, didn't compare against CLI behavior, didn't check whether SDK code is constructing a bad request). Confirm first.
- The platform behavior is annoying but **intentional** (e.g., SDK keys can't list all orgs by design — that's an auth-model decision, not a bug).

If unsure, prefer **not filing**. Duplicates and noise in `agentuity/infra` cost the team more than missing a marginal report.

## Workflow

### 1. Confirm it's actually infra

Before doing anything else, answer all of these in writing (in your reasoning, not in the issue):

- What does the SDK code do? (Read it. Don't guess.)
- What does the platform return? (Reproduce with `curl` or a minimal script — not via the SDK — so the SDK isn't a confounding variable.)
- Does the same call work from another client (CLI, browser, raw curl with a different token)? If yes, what's different?
- Is there a documented contract (in `docs/`, the openapi spec, the platform's own README) that the platform is violating? Or are you the one who made an assumption?

If after answering these you can't write **one sentence** describing what the platform should do differently, stop. The issue isn't ready.

### 2. Check for duplicates

Run **all three** searches before drafting. Different keyword sets catch different existing issues.

```bash
# Open issues, broad keyword
gh issue list --repo agentuity/infra --state open --search "<short-keyword-from-symptom>" --limit 20 \
--json number,title,state,labels,updatedAt

# Closed issues, same keyword (catches "fixed but still broken" cases)
gh issue list --repo agentuity/infra --state closed --search "<short-keyword-from-symptom>" --limit 10 \
--json number,title,state,labels,closedAt

# Component-scoped search (catalyst | sandbox | ion | gluon | hadron)
gh issue list --repo agentuity/infra --state all --search "<component>" --limit 30 \
--json number,title,state,updatedAt
```

For each candidate, run `gh issue view <number> --repo agentuity/infra` and decide:

- **Exact dupe** — don't file. Add a comment on the existing issue with the new repro, the new failing CI run link, or any extra detail you have. Use `gh issue comment <number> --repo agentuity/infra --body-file ...`.
- **Related but distinct** — file the new one and reference the related issue with `Related: agentuity/infra#NNN` near the top of the body.
- **Closed but you're hitting it again** — comment on the closed issue with the fresh repro and ask whether it should be reopened. Don't open a new one until that's been answered.

### 3. Pick a label

Match the symptom to the closest existing label (run `gh label list --repo agentuity/infra` if unsure):

| Symptom | Label |
|---|---|
| Bad / unhelpful behavior, wrong status codes, broken endpoints | `bug` |
| Missing endpoint / capability the SDK needs | `enhancement` |
| Sandbox runtime, sandbox API, runtime images | (no specific label exists yet — use `bug` or `enhancement` and put `Sandbox:` in the title) |
| Catalyst HTTP routing, region routing, auth surface | `bug` (or `enhancement` for new endpoints) |
| Ion-specific | `Ion` |
| Gluon-specific | `gluon` |
| Hadron-specific | `hadron` |
| Production outage right now | `outage` (only if it's actively broken in prod, not just CI) |

If multiple apply, use multiple. Don't invent new labels.

### 4. Write the issue

Use this structure. Keep it short — engineers who triage these issues are busy. Aim for under 60 lines of body.

```markdown
## Problem

<One paragraph. What does the platform do, and why is that wrong from the SDK's perspective? Be specific about endpoint, status codes, response shape.>

## Reproduction

<Minimal reproduction. Prefer raw `curl` so the SDK isn't a variable. Include the exact URL, method, headers (mask tokens), and the response status + body.>

```bash
curl -sS -i "https://catalyst-usc.agentuity.cloud/<endpoint>" \
-H "Authorization: Bearer <ck_live_...>" \
-H "Accept: application/json"
# → HTTP/2 <status>
# → <body>
```

## What we'd want instead

<One short paragraph or a numbered list. Concrete: status code, response shape, behavior. Don't write essays — bullet points beat prose here.>

## Why this matters

<One short paragraph. What SDK code path / user workflow is broken because of this? Link the failing CI run, the SDK file, the docs page that contradicts the current behavior.>

## References

- SDK code: <link to file on github.com/agentuity/sdk at the current branch>
- Failing run / repro: <link>
- Related: agentuity/infra#NNN _(only if there's a related-but-distinct issue)_
```

Style rules:

- **No essays.** If the body is over ~60 lines, you're padding.
- **No SDK debugging narrative.** They don't need to read your debugging session — they need the platform-facing facts.
- **No "this is urgent" / "P0" framing** unless it's an actual prod outage. Use the `outage` label instead.
- **Mask tokens.** Replace real `ck_live_...` values with `<ck_live_...>` placeholders.
- **Title format**: `<Component>: <short symptom>`. Examples:
- `Catalyst: DB endpoints should resolve region server-side`
- `Sandbox: unhelpful errors when spawning a missing binary (500 from createJob, empty stderr from execute)`
- `Catalyst: 401 Unauthorized for missing resources should be 404`

### 5. File it

Write the body to a tempfile, then create:

```bash
gh issue create \
--repo agentuity/infra \
--title "<Component>: <short symptom>" \
--body-file /tmp/infra-issue.md \
--label bug # or enhancement, or both
```

Capture the URL from the response. Reference it in:

- The CI workflow comment that gates the failing test off (so future readers see the link)
- The relevant SDK source file's comments (so future maintainers see why something looks weird)
- Any tracking memory / project doc

### 6. Loop back into the SDK

If you gated a test off / added a workaround / hardcoded a value because of the platform issue, leave a code comment that:

1. Explains what's currently broken on the platform side.
2. Links the infra issue.
3. Describes how to revert the workaround once the issue is fixed.

Example:

```yaml
# Disabled: SDK keys can't currently auth against DB /resource endpoints.
# See agentuity/infra#120. Re-enable by removing this `if: false` once the
# issue is closed.
if: false
```

## Scope guard

Before filing, ask one last time: _"If a backend engineer reads this issue, will they immediately know what's broken, where it is, and what to change?"_ If not, the issue isn't ready — keep iterating before filing.
186 changes: 186 additions & 0 deletions .agents/skills/service-docs-sync/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
---
name: service-docs-sync
description: When editing files under packages/{keyvalue,vector,queue,email,db,schedule,task,webhook,sandbox,stream}/src/**, check whether the change is user-facing and, if so, update the matching page under docs/src/web/content/services/. Run after any commit that touches a service-client package — no exceptions, silently skipping docs is how they rot.
version: 1.0.0
---

# Service Docs Sync

When you change a service-client package, the docs site almost always needs a
matching update. This skill catches the common failure mode where a PR ships
new behaviour but the public docs keep describing the old API.

## Scope

Applies only to the following packages — the ones whose APIs end up in user
code:

| Package | Docs page(s) |
| --- | --- |
| `@agentuity/keyvalue` | `docs/src/web/content/services/storage/key-value.mdx` |
| `@agentuity/vector` | `docs/src/web/content/services/storage/vector.mdx` |
| `@agentuity/stream` | `docs/src/web/content/services/storage/durable-streams.mdx` |
| `@agentuity/queue` | `docs/src/web/content/services/queues.mdx` |
| `@agentuity/email` | `docs/src/web/content/services/email.mdx` |
| `@agentuity/db` | `docs/src/web/content/services/database/index.mdx`, `postgres.mdx`, `drizzle.mdx` |
| `@agentuity/schedule` | `docs/src/web/content/services/schedules.mdx` |
| `@agentuity/task` | `docs/src/web/content/services/tasks.mdx` |
| `@agentuity/webhook` | `docs/src/web/content/services/webhooks.mdx` |
| `@agentuity/sandbox` | `docs/src/web/content/services/sandbox/index.mdx`, `sdk-usage.mdx`, `snapshots.mdx` |

Not in scope:
- Other packages (`cli`, `hono`, `adapter`, `core`, `schema`, `postgres`,
`drizzle`, `telemetry`, `analytics`, `coder`, `coder-tui`, `vscode`,
`claude-code`, `opencode`, `migrate`, `local`, `test-utils`, `runtime`,
`server`). Those have their own docs story owned elsewhere.
- Test files (`test/**`, `*.test.ts`), tsconfig, package.json changes that
don't alter runtime behaviour.

## When to activate

Run this skill immediately after you change any file under
`packages/<service>/src/**` for a service in the table above, before you
open (or finalize) a PR. Don't skip it "just this once" — missed docs
updates compound.

## What counts as "user-facing"

Use judgement; these are the categories that almost always require a docs
update. If any of them apply, update the docs.

### Almost always user-facing

- **New public export** — any new `export` from `src/index.ts` (function,
class, type, const, enum). Even if it's an overload or a narrower variant
of an existing export.
- **Changed signature on an existing export** — added/removed/renamed
parameters, changed parameter types, changed return type, added
overloads.
- **Changed default value** — any argument default or option default that
users rely on.
- **New or changed option on a config/options object** — e.g. adding
`timeout?: number` to a client constructor. Users discover these through
docs.
- **New or changed error type** — new `StructuredError` variant, new
thrown class, new error shape returned. Affects user error-handling
code.
- **Renamed public export** — even with a re-export alias for
compatibility, the docs need the new name.
- **New environment variable read by the client** — e.g. the client now
reads `AGENTUITY_FOO_URL`. Users need to know it exists.
- **Changed wire format** — request/response body shape, query-string
params, HTTP method, status codes users observe.
- **Changed CLI output** for any CLI surface documented in the docs site.

### Sometimes user-facing — judge with care

- **Changed error messages** — if users grep logs or parse strings, yes.
If the message is informational only, probably no.
- **Performance characteristics** — mention only if the docs claim a
specific SLA / latency / throughput that's no longer true.
- **New retry/backoff behaviour** — yes if observable (timing, logs); no
if pure internal.

### Not user-facing — skip the skill

- Internal refactors that leave the public export list and signatures
identical.
- Comment / JSDoc edits that are not part of the exported API surface.
- Test-only changes.
- Build/tooling changes (tsconfig, bunfig, package.json scripts).
- Dependency bumps that don't change behaviour users observe.

When in doubt, treat it as user-facing and update the docs. Docs debt is
expensive; a 3-minute docs PR isn't.

## Workflow

### 1. Identify what you changed

```bash
# From the root of the repo
git diff --stat HEAD -- 'packages/<service>/src/**'
```

Focus on changes to:
- `packages/<service>/src/index.ts` (most user-facing)
- Files exported from `index.ts` (follow re-exports)
- Type definition files
- Any file that defines a class, function, or const that is re-exported

### 2. Read the matching docs page(s)

From the table above. Open the full page, not just grep for your symbol —
user-facing code changes often cascade (example code gets stale, option
tables get out of date, "see also" links shift).

### 3. Decide: does any category in "Almost always user-facing" apply?

If yes → update docs this PR. Don't leave a TODO.
If no and "Sometimes" category matches → make the judgement call; bias
toward updating.
If no to everything → skip, note why in the PR description if the diff
looks alarming ("refactors internals of X, no public API change").

### 4. Update the docs

Typical edits you'll make in the `.mdx` files:
- Update code samples to use the new signature / options
- Add an entry for a new export to the page's symbol reference (if it
lists them)
- Add / update the option table for a changed options object
- Add a short migration note at the top of the page if behaviour
silently changes
- Fix cross-page links if you moved or renamed a symbol

Docs pages use MDX; front-matter keys like `title`, `description`, and
`order` at the top should be preserved exactly.

### 5. Verify

Before committing docs:
```bash
cd docs && bun run typecheck
```

The SDK Explorer has its own dev server if you want a visual check:
```bash
cd docs && bun run dev
```

### 6. Commit

Include the docs update in the same PR as the code change — not a
follow-up. Split the commit if you prefer
(`feat(queue): add idempotency key option` + `docs(queue): document
idempotency option`), but keep them in the same PR so review catches any
drift between the two.

## Anti-patterns

- **"I'll update docs after this merges"** — you won't. Someone else will
discover stale docs three releases later.
- **"Docs are owned by someone else"** — true at the macro scale (full
rewrites), false for incremental API changes. If you changed
`packages/keyvalue/src/index.ts`, you own the matching paragraph in
`key-value.mdx`.
- **"It's only a bug fix"** — if the bug changed observable behaviour,
the docs need to match the new (correct) behaviour.
- **Updating only the code example and not the surrounding prose** —
examples become stale because the prose around them still describes
the old API. Re-read the whole page section, not just the fenced
block.

## If the docs page doesn't exist

If you're introducing an entirely new service client (rare), create a
new `.mdx` page under `docs/src/web/content/services/` mirroring the
structure of an existing one (e.g. `queues.mdx` is a good template),
and add it to the nav in `docs/src/web/components/docs/nav-data.ts`.
Comment thread
Huijiro marked this conversation as resolved.

## Memory pointers

- Memory #105 (docs rewrite) covers the broader *structural* docs
cleanup — not this skill's concern. This skill is purely about
keeping specific pages in sync with specific code as changes land.
- Memory #78 (v3 overview) explains what each service package is for.
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
},
"metadata": {
"description": "Agentuity plugins for Claude Code",
"version": "2.0.16"
"version": "3.0.0-beta.2"
},
"plugins": [
{
"name": "agentuity",
"source": "./packages/claude-code",
"description": "Deploy websites, apps, and AI agents to Agentuity — with managed databases, storage, queues, and more",
"version": "2.0.16",
"version": "3.0.0-beta.2",
"author": {
"name": "Agentuity"
},
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/biome.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@ on:
- "release/**"
pull_request:

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
check:
name: Format & Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: oven-sh/setup-bun@v2
with:
Expand Down
Loading
Loading