diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 215ba60..108c1d2 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,20 +1,20 @@ { - "name": "usezombie-skills", + "name": "agentsfleet-skills", "owner": { - "name": "usezombie", - "email": "hello@usezombie.com" + "name": "agentsfleet", + "email": "hello@agentsfleet.net" }, "metadata": { - "description": "Official usezombie agent skills — install, drive, and operate zombies from any AI coding host", + "description": "Official agentsfleet agent skills — install, drive, and operate agents from any AI coding host", "version": "0.1.0" }, "plugins": [ { - "name": "usezombie-install-platform-ops", - "description": "Install a usezombie platform-ops zombie on this repo — watches GitHub Actions CD failures and posts evidenced diagnoses to Slack. Use when the user wants to install platform-ops on a repo, resolve tool credentials (Fly, Slack, GitHub, Upstash), register webhooks via `gh`, or run the post-install smoke test.", + "name": "agentsfleet-install-platform-ops", + "description": "Install an agentsfleet platform-ops agent on this repo — watches GitHub Actions CD failures and posts evidenced diagnoses to Slack. Use when the user wants to install platform-ops on a repo, resolve tool credentials (Fly, Slack, GitHub, Upstash), register webhooks via `gh`, or run the post-install smoke test.", "source": "./", "strict": false, - "skills": ["./usezombie-install-platform-ops"] + "skills": ["./agentsfleet-install-platform-ops"] } ] } diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index bab11f8..53cac7f 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: skill: - - usezombie-install-platform-ops + - agentsfleet-install-platform-ops steps: - uses: actions/checkout@v4 diff --git a/LICENSE b/LICENSE index d1e5216..5f195e9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2026 usezombie +Copyright (c) 2026 agentsfleet Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index b03a4b2..955e99f 100644 --- a/README.md +++ b/README.md @@ -3,18 +3,18 @@ - usezombie + agentsfleet -**Agent skills for usezombie — install, drive, and operate zombies from any AI coding host.** +**Agent skills for agentsfleet — install, drive, and operate agents from any AI coding host.** Long-lived runtimes that own one operational outcome end to end. These skills -teach Claude Code, Codex CLI, Amp, and OpenCode to drive `zombiectl` +teach Claude Code, Codex CLI, Amp, and OpenCode to drive `agentsfleet` non-interactively so your agent can install, steer, and inspect agents without you reading every flag. -[![Docs](https://img.shields.io/badge/usezombie-Docs-5EEAD4?style=for-the-badge)](https://docs.usezombie.com) -[![Get early access](https://img.shields.io/badge/usezombie-Get_early_access-5EEAD4?style=for-the-badge)](https://usezombie.com) +[![Docs](https://img.shields.io/badge/agentsfleet-Docs-5EEAD4?style=for-the-badge)](https://docs.agentsfleet.net) +[![Get early access](https://img.shields.io/badge/agentsfleet-Get_early_access-5EEAD4?style=for-the-badge)](https://agentsfleet.net) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) @@ -27,20 +27,20 @@ Skills here follow the [Agent Skills](https://agentskills.io/) format and work with 18+ AI agent hosts including Claude Code, Codex CLI, Amp, OpenCode, and Cursor. -### Install all usezombie skills +### Install all agentsfleet skills ```bash -npx skills add usezombie/skills +npx skills add agentsfleet/skills ``` -This symlinks every top-level `usezombie-*` directory into each supported +This symlinks every top-level `agentsfleet-*` directory into each supported host's skill path that exists on your machine (`~/.claude/skills/`, `~/.codex/skills/`, `~/.amp/skills/`, `~/.opencode/skills/`). ### Install a single skill ```bash -npx skills add usezombie/skills --skill usezombie-install-platform-ops +npx skills add agentsfleet/skills --skill agentsfleet-install-platform-ops ``` ### Claude Code Plugin @@ -49,25 +49,25 @@ These skills also ship as a Claude Code plugin marketplace: ```bash # 1. Register the marketplace -claude plugin marketplace add usezombie/skills +claude plugin marketplace add agentsfleet/skills # 2. Install the plugin you want -claude plugin install usezombie-install-platform-ops@usezombie-skills +claude plugin install agentsfleet-install-platform-ops@agentsfleet-skills ``` ### Prerequisites -Most skills here drive `zombiectl`. Install it first: +Most skills here drive `agentsfleet`. Install it first: ```bash -npm install -g @usezombie/zombiectl -zombiectl auth login +npm install -g @agentsfleet/cli +agentsfleet auth login ``` ## Available Skills
-usezombie-install-platform-ops +agentsfleet-install-platform-ops One-command install of the platform-ops agent on a user's repo. Watches GitHub Actions CD failures and posts evidenced diagnoses to Slack. @@ -79,7 +79,7 @@ GitHub Actions CD failures and posts evidenced diagnoses to Slack. - Registering and HMAC-verifying webhooks from the user's local `gh` - Smoke-testing the install with a real steer round-trip -**Slash-command:** `/usezombie-install-platform-ops` +**Slash-command:** `/agentsfleet-install-platform-ops`
@@ -89,7 +89,7 @@ Skills are automatically available once installed. Invoke them by their slash-command in any supported host: ``` -/usezombie-install-platform-ops +/agentsfleet-install-platform-ops ``` The agent reads the skill body, walks the install plan, and surfaces every @@ -100,7 +100,7 @@ failure mode verbatim so you can resolve it before retrying. Each skill is a top-level directory matching its slash-command: ``` -usezombie-install-platform-ops/ +agentsfleet-install-platform-ops/ ├── SKILL.md # Frontmatter + body the host LLM reads ├── references/ # Detailed docs the skill loads on demand │ ├── credential-resolution.md @@ -123,7 +123,7 @@ The `SKILL.md` frontmatter follows the ## Release model `main` is the release surface. Push to `main` = ship. No tags, no semver — -same model as a dotfiles repo. `npx skills add usezombie/skills` always pulls +same model as a dotfiles repo. `npx skills add agentsfleet/skills` always pulls the latest commit. ## Contributing @@ -135,4 +135,4 @@ top-level `/` directory with `SKILL.md`, `references/`, and ## License -MIT — Copyright (c) 2026 usezombie +MIT — Copyright (c) 2026 agentsfleet diff --git a/usezombie-install-platform-ops/SKILL.md b/agentsfleet-install-platform-ops/SKILL.md similarity index 78% rename from usezombie-install-platform-ops/SKILL.md rename to agentsfleet-install-platform-ops/SKILL.md index f197ff4..2879688 100644 --- a/usezombie-install-platform-ops/SKILL.md +++ b/agentsfleet-install-platform-ops/SKILL.md @@ -1,19 +1,19 @@ --- -name: usezombie-install-platform-ops +name: agentsfleet-install-platform-ops description: > - Install a usezombie platform-ops zombie on this repo — watches GitHub + Install an agentsfleet platform-ops agent on this repo — watches GitHub Actions CD failures and posts evidenced diagnoses to Slack. Always load - this skill before running `zombiectl zombie install` for platform-ops; it + this skill before running `agentsfleet agent install` for platform-ops; it knows the doctor preflight, credential resolution order, webhook setup, and smoke-test steps that prevent silent failures. license: Apache-2.0 metadata: - author: usezombie + author: agentsfleet version: "0.1.0" - homepage: https://usezombie.com/docs/skills - source: https://github.com/usezombie/skills + homepage: https://agentsfleet.net/docs/skills + source: https://github.com/agentsfleet/skills requires: - bins: [zombiectl, gh, openssl, curl] + bins: [agentsfleet, gh, openssl, curl] optional_bins: [op] inputs: - name: slack_channel @@ -31,25 +31,25 @@ references: - references/self-managed-handoff.md --- -# usezombie-install-platform-ops +# agentsfleet-install-platform-ops ## 0. Preconditions (run once per cold machine) Four one-liners install the binary, register the skill, authenticate -with usezombie, and authorize `gh` for webhook registration on the +with agentsfleet, and authorize `gh` for webhook registration on the user's machine: ```bash -npm install -g @usezombie/zombiectl # CLI + bundled samples (postinstall copies ~/.config/usezombie/samples/) -npx skills add usezombie/skills # symlinks /usezombie-* into the host's skill paths -zombiectl auth login # Clerk OAuth → token in ~/.config/usezombie/auth.json +npm install -g @agentsfleet/cli # CLI + bundled samples (postinstall copies ~/.config/agentsfleet/samples/) +npx skills add agentsfleet/skills # symlinks /agentsfleet-* into the host's skill paths +agentsfleet auth login # Clerk OAuth → token in ~/.config/agentsfleet/auth.json gh auth login -s admin:repo_hook # one-time; lets the install-skill register webhooks via `gh api` ``` The skill's **first action** (step 1 below) is the precondition check: ```bash -which zombiectl && which gh && zombiectl doctor --json +which agentsfleet && which gh && agentsfleet doctor --json ``` Any miss → print the exact one-liner above to fix it and stop. The @@ -62,16 +62,16 @@ Manual symlink fallback (when `npx skills` is unavailable or the host is not in the registry): ```bash -git clone https://github.com/usezombie/skills.git ~/.local/share/usezombie-skills -ln -s ~/.local/share/usezombie-skills/usezombie-install-platform-ops \ - ~/.claude/skills/usezombie-install-platform-ops +git clone https://github.com/agentsfleet/skills.git ~/.local/share/agentsfleet-skills +ln -s ~/.local/share/agentsfleet-skills/agentsfleet-install-platform-ops \ + ~/.claude/skills/agentsfleet-install-platform-ops ``` Same shape for `~/.codex/skills/`, `~/.amp/skills/`, `~/.opencode/skills/`. ## Agent Protocol -This skill drives `zombiectl` non-interactively. Every `zombiectl` +This skill drives `agentsfleet` non-interactively. Every `agentsfleet` invocation uses `--json` where the flag is supported, parses the JSON response, and surfaces stderr verbatim on failure. Exit `0` is success; non-zero is a hard stop. Never proceed past a failed step. Never silently @@ -85,8 +85,8 @@ hard-code any one host's primitive in this skill body** — the same ## Authentication -`zombiectl` auth is checked once via `zombiectl doctor --json`. If -`auth_token_present` is `false`, print `Run zombiectl auth login first` +`agentsfleet` auth is checked once via `agentsfleet doctor --json`. If +`auth_token_present` is `false`, print `Run agentsfleet auth login first` and stop. The skill never logs in on the user's behalf. Tool credentials (`fly`, `slack`, `github`, `upstash`) resolve in this @@ -95,12 +95,12 @@ order, per field: 1. `op read 'op:////'` — uses the user's existing 1Password layout. The skill does not prescribe a vault or item-naming convention. -2. Environment variable `ZOMBIE_CRED__` (e.g. - `ZOMBIE_CRED_FLY_API_TOKEN`). +2. Environment variable `AGENTSFLEET_CRED__` (e.g. + `AGENTSFLEET_CRED_FLY_API_TOKEN`). 3. Masked interactive prompt (host-neutral question primitive). JSON bodies are piped through stdin into -`zombiectl credential add --data @-` so secret bytes never appear +`agentsfleet credential add --data @-` so secret bytes never appear in shell history or process argv. Never pass JSON via `--data ''`. See [`references/credential-resolution.md`](references/credential-resolution.md) @@ -111,7 +111,7 @@ for the full resolution table and op layout examples. Walk these twelve steps top-to-bottom. Stop on the first failure; surface the diagnostic and let the user fix it before retrying. -1. **Doctor preflight.** Run `zombiectl doctor --json`. If any check +1. **Doctor preflight.** Run `agentsfleet doctor --json`. If any check fails — auth missing, no workspace binding, vault unreachable — surface the response and stop. The `tenant_provider` block in the response is the source of `model` and `context_cap_tokens` for the @@ -135,7 +135,7 @@ surface the diagnostic and let the user fix it before retrying. and M48 respectively. 5. **Resolve the GitHub webhook secret.** Check whether the workspace already has a `github` credential with a `webhook_secret` field - (`zombiectl credential show github --json` returns presence without + (`agentsfleet credential show github --json` returns presence without echoing the secret bytes). Two paths: - **No existing secret (first install for the workspace):** generate 32 CSPRNG bytes, base64-encode, hold in a local variable for the @@ -144,27 +144,27 @@ surface the diagnostic and let the user fix it before retrying. - **Existing secret (second install):** ask the user to choose: **A) Reuse the workspace-shared secret** — write nothing new to `webhook_secret`; `api_token` still upserts. **B) Scope a - per-zombie credential** — generate a new secret, store under - credential name `github-{zombie_slug}`, and write - `credential_name: github-{zombie_slug}` into the generated + per-agent credential** — generate a new secret, store under + credential name `github-{agent_slug}`, and write + `credential_name: github-{agent_slug}` into the generated TRIGGER.md as the M43 override. 6. **Resolve four tool credentials.** For each of `fly`, `slack`, `github`, optional `upstash`, walk the resolution order (op → env → prompt) per field, build the JSON body, and pipe it - into `zombiectl credential add --data @-`. Default behaviour + into `agentsfleet credential add --data @-`. Default behaviour is skip-if-exists; the skill relies on this to avoid clobbering a workspace-shared `github.webhook_secret` on a second install. Never pass `--force` unless the user explicitly asked to rotate. 7. **Generate the per-repo files + install.** Read the canonical - template from `~/.config/usezombie/samples/platform-ops/`. If the + template from `~/.config/agentsfleet/samples/platform-ops/`. If the directory is missing, the npm install was corrupted or postinstall was skipped — print `Cannot find platform-ops template at - ~/.config/usezombie/samples/platform-ops/. Reinstall: npm install - -g @usezombie/zombiectl` and exit. Never fetch from a URL. Never + ~/.config/agentsfleet/samples/platform-ops/. Reinstall: npm install + -g @agentsfleet/cli` and exit. Never fetch from a URL. Never cache. The npm package version *is* the template version. Substitute the five placeholders into the template's `SKILL.md` - and `TRIGGER.md`, then write the output to `.usezombie/platform-ops/` + and `TRIGGER.md`, then write the output to `.agentsfleet/platform-ops/` in the user's CWD: | Placeholder | Source | @@ -175,19 +175,19 @@ surface the diagnostic and let the user fix it before retrying. | `{{model}}` | doctor `tenant_provider.model` (real value or `""` under self-managed) | | `{{context_cap_tokens}}` | doctor `tenant_provider.context_cap_tokens` (real value or `0` under self-managed) | - If `.usezombie/platform-ops/` already exists, prompt overwrite + If `.agentsfleet/platform-ops/` already exists, prompt overwrite (default `N`). On `N`, exit cleanly with no changes to disk. - Run `zombiectl zombie install --from .usezombie/platform-ops/ --json`. - Capture `zombie_id` and the `webhook_urls` map from the response. + Run `agentsfleet agent install --from .agentsfleet/platform-ops/ --json`. + Capture `agent_id` and the `webhook_urls` map from the response. The map is keyed by `` (`github`, `linear`, `jira`, etc.) with `` values. Cron-only / api-only installs return `webhook_urls: {}` and skip steps 8–10. If the response lacks `webhook_urls`, surface the captured JSON and exit with "install JSON missing webhook_urls — file an issue". 8. **Parse the rendered TRIGGER.md.** Read - `.usezombie/platform-ops/TRIGGER.md` (the file just written in - step 7), extract `x-usezombie.triggers[]`, and for each `webhook` + `.agentsfleet/platform-ops/TRIGGER.md` (the file just written in + step 7), extract `x-agentsfleet.triggers[]`, and for each `webhook` entry capture `source`, `events` (default empty = "all events for this provider"), and the optional `credential_name` override. These drive the gh-api loop in step 9. Skip non-webhook entries @@ -239,24 +239,24 @@ surface the diagnostic and let the user fix it before retrying. Expect HTTP `202` per source. On non-202, network failure, or HMAC mismatch, print the response verbatim and stop. The user never finds out hours later that HMAC is wrong. -11. **Post-install summary.** Print the `zombie_id`, the registered +11. **Post-install summary.** Print the `agent_id`, the registered `hook_id` per source (e.g. `webhook:github → hook 482389123`), the HMAC-verified status per source, and the credentials stored in the workspace vault. **No paste-into-GitHub prose** — the user's `gh` already did the registration in step 9. 12. **Smoke test.** Run - `zombiectl steer {zombie_id} "morning health check"` and stream + `agentsfleet steer {agent_id} "morning health check"` and stream the response inline. If the round-trip exceeds 60 seconds, print - "zombie installed but first response slow — check - `zombiectl events {zombie_id}`" and stop. Otherwise the user has a - working zombie posting to their Slack within ~60 seconds of + "agent installed but first response slow — check + `agentsfleet events {agent_id}`" and stop. Otherwise the user has a + working agent posting to their Slack within ~60 seconds of invoking this skill. ## Common Mistakes | # | Mistake | Fix | |---|---|---| -| 1 | Skipping `zombiectl doctor` and going straight to install | Doctor is the only sanctioned readiness check. Always run it first. | +| 1 | Skipping `agentsfleet doctor` and going straight to install | Doctor is the only sanctioned readiness check. Always run it first. | | 2 | Passing the JSON body via `--data ''` instead of `--data @-` | Secret bytes leak into shell history and `ps` output. Always pipe JSON on stdin. | | 3 | Re-running the skill on a second repo and overwriting `github.webhook_secret` | The credential `add` default skip-if-exists prevents this. Don't pass `--force` unless rotating. The skill prompts reuse-vs-scope on second install (step 5). | | 4 | Asking the user to paste the webhook into GitHub Settings → Webhooks | The skill registers the webhook via `gh api repos/.../hooks` in step 9. There is no paste-into-github.com step in this flow. Self-verify with `openssl dgst -sha256 -hmac` + `curl` to the receiver (step 10) before declaring success. | @@ -273,8 +273,8 @@ surface the diagnostic and let the user fix it before retrying. ## Out of Scope - Non-GitHub-Actions CI providers (GitLab, CircleCI, Jenkins) — future milestone. -- self-managed setup — out-of-band, via `zombiectl credential add --data @-` - + `zombiectl tenant provider add --credential `. The skill never +- self-managed setup — out-of-band, via `agentsfleet credential add --data @-` + + `agentsfleet tenant provider add --credential `. The skill never asks about, holds, or stores an LLM api_key. - GitHub App for auto-webhook configuration — separate milestone (next install-UX iteration). Until then, the `gh api repos/.../hooks` call diff --git a/usezombie-install-platform-ops/evals/bun.lock b/agentsfleet-install-platform-ops/evals/bun.lock similarity index 77% rename from usezombie-install-platform-ops/evals/bun.lock rename to agentsfleet-install-platform-ops/evals/bun.lock index 8b9cd5f..aa65dd8 100644 --- a/usezombie-install-platform-ops/evals/bun.lock +++ b/agentsfleet-install-platform-ops/evals/bun.lock @@ -3,7 +3,7 @@ "configVersion": 1, "workspaces": { "": { - "name": "@usezombie/skill-evals-install-platform-ops", + "name": "@agentsfleet/skill-evals-install-platform-ops", "devDependencies": { "@types/bun": "latest", "typescript": "^5.6.0", @@ -13,7 +13,7 @@ "packages": { "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], - "@types/node": ["@types/node@25.8.0", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ=="], + "@types/node": ["@types/node@25.9.3", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg=="], "bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], diff --git a/usezombie-install-platform-ops/evals/fixtures/gh-actions-fly/.github/workflows/deploy.yml b/agentsfleet-install-platform-ops/evals/fixtures/gh-actions-fly/.github/workflows/deploy.yml similarity index 100% rename from usezombie-install-platform-ops/evals/fixtures/gh-actions-fly/.github/workflows/deploy.yml rename to agentsfleet-install-platform-ops/evals/fixtures/gh-actions-fly/.github/workflows/deploy.yml diff --git a/usezombie-install-platform-ops/evals/fixtures/gh-actions-fly/fly.toml b/agentsfleet-install-platform-ops/evals/fixtures/gh-actions-fly/fly.toml similarity index 100% rename from usezombie-install-platform-ops/evals/fixtures/gh-actions-fly/fly.toml rename to agentsfleet-install-platform-ops/evals/fixtures/gh-actions-fly/fly.toml diff --git a/usezombie-install-platform-ops/evals/fixtures/gh-actions-fly/package.json b/agentsfleet-install-platform-ops/evals/fixtures/gh-actions-fly/package.json similarity index 100% rename from usezombie-install-platform-ops/evals/fixtures/gh-actions-fly/package.json rename to agentsfleet-install-platform-ops/evals/fixtures/gh-actions-fly/package.json diff --git a/usezombie-install-platform-ops/evals/fixtures/gh-actions-only/.github/workflows/test.yml b/agentsfleet-install-platform-ops/evals/fixtures/gh-actions-only/.github/workflows/test.yml similarity index 100% rename from usezombie-install-platform-ops/evals/fixtures/gh-actions-only/.github/workflows/test.yml rename to agentsfleet-install-platform-ops/evals/fixtures/gh-actions-only/.github/workflows/test.yml diff --git a/usezombie-install-platform-ops/evals/fixtures/gh-actions-only/package.json b/agentsfleet-install-platform-ops/evals/fixtures/gh-actions-only/package.json similarity index 100% rename from usezombie-install-platform-ops/evals/fixtures/gh-actions-only/package.json rename to agentsfleet-install-platform-ops/evals/fixtures/gh-actions-only/package.json diff --git a/usezombie-install-platform-ops/evals/fixtures/no-ci/package.json b/agentsfleet-install-platform-ops/evals/fixtures/no-ci/package.json similarity index 100% rename from usezombie-install-platform-ops/evals/fixtures/no-ci/package.json rename to agentsfleet-install-platform-ops/evals/fixtures/no-ci/package.json diff --git a/usezombie-install-platform-ops/evals/llm-judge.eval.ts b/agentsfleet-install-platform-ops/evals/llm-judge.eval.ts similarity index 100% rename from usezombie-install-platform-ops/evals/llm-judge.eval.ts rename to agentsfleet-install-platform-ops/evals/llm-judge.eval.ts diff --git a/usezombie-install-platform-ops/evals/package.json b/agentsfleet-install-platform-ops/evals/package.json similarity index 76% rename from usezombie-install-platform-ops/evals/package.json rename to agentsfleet-install-platform-ops/evals/package.json index b3b859c..160dfc7 100644 --- a/usezombie-install-platform-ops/evals/package.json +++ b/agentsfleet-install-platform-ops/evals/package.json @@ -1,5 +1,5 @@ { - "name": "@usezombie/skill-evals-install-platform-ops", + "name": "@agentsfleet/skill-evals-install-platform-ops", "private": true, "version": "0.0.0", "type": "module", diff --git a/usezombie-install-platform-ops/evals/repo-detection.test.ts b/agentsfleet-install-platform-ops/evals/repo-detection.test.ts similarity index 100% rename from usezombie-install-platform-ops/evals/repo-detection.test.ts rename to agentsfleet-install-platform-ops/evals/repo-detection.test.ts diff --git a/usezombie-install-platform-ops/evals/skill-body.test.ts b/agentsfleet-install-platform-ops/evals/skill-body.test.ts similarity index 98% rename from usezombie-install-platform-ops/evals/skill-body.test.ts rename to agentsfleet-install-platform-ops/evals/skill-body.test.ts index f72e6d1..b0bbd3d 100644 --- a/usezombie-install-platform-ops/evals/skill-body.test.ts +++ b/agentsfleet-install-platform-ops/evals/skill-body.test.ts @@ -29,7 +29,7 @@ test("frontmatter declares all three operator inputs", () => { test("frontmatter declares required + optional binaries", () => { const fm = frontmatter(skillBody); - expect(fm).toMatch(/bins: \[zombiectl, gh, openssl, curl\]/); + expect(fm).toMatch(/bins: \[agentsfleet, gh, openssl, curl\]/); expect(fm).toMatch(/optional_bins: \[op\]/); }); diff --git a/usezombie-install-platform-ops/evals/skill-runtime.test.ts b/agentsfleet-install-platform-ops/evals/skill-runtime.test.ts similarity index 85% rename from usezombie-install-platform-ops/evals/skill-runtime.test.ts rename to agentsfleet-install-platform-ops/evals/skill-runtime.test.ts index 6b9e55b..f833a9d 100644 --- a/usezombie-install-platform-ops/evals/skill-runtime.test.ts +++ b/agentsfleet-install-platform-ops/evals/skill-runtime.test.ts @@ -6,8 +6,8 @@ // the LLM does at that step. // // TRIGGER.md template assertions from the original Node:test suite stayed -// in usezombie (samples/platform-ops/TRIGGER.md lives there, not in this -// repo). See usezombie's tests/template-substitution/ for that surface. +// in agentsfleet (samples/platform-ops/TRIGGER.md lives there, not in this +// repo). See agentsfleet's tests/template-substitution/ for that surface. import { test, expect } from "bun:test"; import { readFileSync } from "node:fs"; @@ -19,13 +19,13 @@ const skillDir = resolve(__dirname, ".."); const skillBody = readFileSync(resolve(skillDir, "SKILL.md"), "utf8"); test("s1.0 — precondition check command + stop-on-miss prose", () => { - expect(skillBody).toMatch(/which zombiectl && which gh && zombiectl doctor --json/); + expect(skillBody).toMatch(/which agentsfleet && which gh && agentsfleet doctor --json/); expect(skillBody).toMatch(/Any miss → print the exact one-liner above to fix it and stop\./); }); -test("s1.0 — missing-zombiectl remediation: npm install one-liner", () => { - expect(skillBody).toMatch(/npm install -g @usezombie\/zombiectl/); - const installIdx = skillBody.indexOf("npm install -g @usezombie/zombiectl"); +test("s1.0 — missing-agentsfleet remediation: npm install one-liner", () => { + expect(skillBody).toMatch(/npm install -g @agentsfleet\/cli/); + const installIdx = skillBody.indexOf("npm install -g @agentsfleet/cli"); const stopIdx = skillBody.indexOf("Any miss → print the exact one-liner above"); expect(installIdx).toBeGreaterThan(-1); expect(stopIdx).toBeGreaterThan(-1); @@ -38,7 +38,7 @@ test("s1.0 — missing-gh-scope remediation: gh auth refresh one-liner", () => { }); test("s1.8 — parses triggers[] from rendered TRIGGER.md, skips non-webhook for s1.9", () => { - expect(skillBody).toMatch(/extract\s+`x-usezombie\.triggers\[\]`/); + expect(skillBody).toMatch(/extract\s+`x-agentsfleet\.triggers\[\]`/); expect(skillBody).toMatch(/Skip non-webhook entries\s+\(cron \/ api\)/); }); diff --git a/usezombie-install-platform-ops/evals/tsconfig.json b/agentsfleet-install-platform-ops/evals/tsconfig.json similarity index 100% rename from usezombie-install-platform-ops/evals/tsconfig.json rename to agentsfleet-install-platform-ops/evals/tsconfig.json diff --git a/usezombie-install-platform-ops/references/credential-resolution.md b/agentsfleet-install-platform-ops/references/credential-resolution.md similarity index 87% rename from usezombie-install-platform-ops/references/credential-resolution.md rename to agentsfleet-install-platform-ops/references/credential-resolution.md index ff44c42..f137b5f 100644 --- a/usezombie-install-platform-ops/references/credential-resolution.md +++ b/agentsfleet-install-platform-ops/references/credential-resolution.md @@ -15,13 +15,13 @@ substitution path both look up by convention. | Slack | `slack` | `{"api_token": ""}` | Single field. The bot must already be invited to the channel the operator named at install. | | Upstash | `upstash` (optional) | `{"redis_url": "", "redis_token": ""}` | Skipped if the repo has no Redis evidence (no `upstash` strings in deploy config, no `REDIS_URL` env). | -The vault credential name is a **convention**, not a per-zombie +The vault credential name is a **convention**, not a per-agent pointer. The webhook ingest resolver looks the credential up by `name = trigger.source` automatically — so the generated TRIGGER.md does not write a `signature.secret_ref:` field for the convention case. -The only exception is when the user picked per-zombie scoping (option B +The only exception is when the user picked per-agent scoping (option B in the install-skill's step 5): then the generated TRIGGER.md carries -`credential_name: github-{zombie_slug}` and that name overrides the +`credential_name: github-{agent_slug}` and that name overrides the default lookup. ## Resolution order, per field @@ -40,16 +40,16 @@ stop at the first hit: Each user has their own `op` layout. If the field returns empty or `op` errors out, fall through to step 2. -2. **Environment variable** named `ZOMBIE_CRED__` — +2. **Environment variable** named `AGENTSFLEET_CRED__` — uppercase, underscores. Examples: ```bash - ZOMBIE_CRED_FLY_API_TOKEN - ZOMBIE_CRED_FLY_HOST - ZOMBIE_CRED_GITHUB_API_TOKEN - ZOMBIE_CRED_SLACK_API_TOKEN - ZOMBIE_CRED_UPSTASH_REDIS_URL - ZOMBIE_CRED_UPSTASH_REDIS_TOKEN + AGENTSFLEET_CRED_FLY_API_TOKEN + AGENTSFLEET_CRED_FLY_HOST + AGENTSFLEET_CRED_GITHUB_API_TOKEN + AGENTSFLEET_CRED_SLACK_API_TOKEN + AGENTSFLEET_CRED_UPSTASH_REDIS_URL + AGENTSFLEET_CRED_UPSTASH_REDIS_TOKEN ``` Useful in CI fixtures and for quick tests; not the recommended @@ -62,7 +62,7 @@ stop at the first hit: The `webhook_secret` field on the `github` credential is the one exception: the skill generates it locally (32 CSPRNG bytes, base64-encoded) on first install rather than reading it from any of -the three sources above. Subsequent installs reuse or scope-per-zombie +the three sources above. Subsequent installs reuse or scope-per-agent per the install-skill's step 5. ## Why JSON on stdin (`--data @-`) @@ -74,7 +74,7 @@ The skill never passes credential JSON via `--data ''` because: - Audit logs of the user's shell sessions get a verbatim copy. Piping on stdin (`--data @-`) keeps secret bytes inside the process -boundary. The JSON arrives at `zombiectl` via `read(0)`; the parent +boundary. The JSON arrives at `agentsfleet` via `read(0)`; the parent shell has no record of the payload. ## `gh` authentication precondition (webhook registration) @@ -107,7 +107,7 @@ on the GitHub side. There is no paste-into-github.com step. ## Storing fewer fields than the JSON shape suggests -`zombiectl credential add` accepts any JSON object — the field set is +`agentsfleet credential add` accepts any JSON object — the field set is not validated against a schema. If a credential body is missing a field that downstream code needs (e.g. `slack` without `api_token`), the failure surfaces at *use* time as `secret_not_found` against @@ -123,13 +123,13 @@ rotation path is: ```bash # Capture the current webhook_secret so rotation preserves it; without # this the next inbound webhook would fail HMAC verification silently. -OLD_SECRET=$(zombiectl credential show github --field webhook_secret) +OLD_SECRET=$(agentsfleet credential show github --field webhook_secret) [ -z "$OLD_SECRET" ] && { echo "rotation aborted: no existing webhook_secret to preserve" >&2; exit 1; } op read 'op:////api_token' \ | jq -Rn --arg secret "$OLD_SECRET" \ '{webhook_secret: $secret, api_token: input}' \ - | zombiectl credential add github --force --data @- + | agentsfleet credential add github --force --data @- ``` `--force` overrides the default skip-if-exists. The skill never emits diff --git a/usezombie-install-platform-ops/references/failure-modes.md b/agentsfleet-install-platform-ops/references/failure-modes.md similarity index 62% rename from usezombie-install-platform-ops/references/failure-modes.md rename to agentsfleet-install-platform-ops/references/failure-modes.md index d61f488..0cbe801 100644 --- a/usezombie-install-platform-ops/references/failure-modes.md +++ b/agentsfleet-install-platform-ops/references/failure-modes.md @@ -6,36 +6,36 @@ This document is the lookup table the agent loads when an exit happens. | Step | Mode | Cause | What the skill prints | What the user does | |---|---|---|---|---| -| 1 — doctor preflight | `auth_token_present: false` | User not logged in | `Run zombiectl auth login first` | `zombiectl auth login`, retry skill | -| 1 — doctor preflight | Workspace not bound | CLI never picked a workspace | Doctor's `workspace` block verbatim | `zombiectl workspace use `, retry | +| 1 — doctor preflight | `auth_token_present: false` | User not logged in | `Run agentsfleet auth login first` | `agentsfleet auth login`, retry skill | +| 1 — doctor preflight | Workspace not bound | CLI never picked a workspace | Doctor's `workspace` block verbatim | `agentsfleet workspace use `, retry | | 1 — doctor preflight | Vault unreachable | API is down or behind a network split | Doctor's `vault` block verbatim, with the API URL | Check status page, retry once back | | 3 — repo detection | No `.github/workflows/` | Repo doesn't use GitHub Actions | `GitHub Actions only in v1` | Either set up a GH Actions workflow, or wait for the next-CI-providers milestone | | 3 — repo detection | Multiple deploy workflows | Ambiguous which workflow is production | List of workflow file names, prompt to pick one | Pick the production-deploy workflow file | -| 5 — webhook secret | `zombiectl credential show github --json` fails | API down or vault unreachable | `zombiectl credential show github` stderr verbatim | Resolve the API/vault issue, retry | -| 6 — credential add | `zombiectl credential add` fails | API down or auth expired | `zombiectl credential add ` stderr verbatim | Resolve, retry | +| 5 — webhook secret | `agentsfleet credential show github --json` fails | API down or vault unreachable | `agentsfleet credential show github` stderr verbatim | Resolve the API/vault issue, retry | +| 6 — credential add | `agentsfleet credential add` fails | API down or auth expired | `agentsfleet credential add ` stderr verbatim | Resolve, retry | | 6 — credential add | User aborts at masked prompt | User chose to stop | Empty value detected; re-prompt up to 2× then exit | Run skill again with creds in `op` or env to skip prompts | -| 0 — preconditions | `which zombiectl` empty | npm install missing | Exact one-liner: `npm install -g @usezombie/zombiectl` | Run the one-liner, retry skill | +| 0 — preconditions | `which agentsfleet` empty | npm install missing | Exact one-liner: `npm install -g @agentsfleet/cli` | Run the one-liner, retry skill | | 0 — preconditions | `which gh` empty | `gh` CLI missing | Install via `brew install gh` or platform equivalent | Install `gh`, retry skill | | 0 — preconditions | `gh auth status` lacks `admin:repo_hook` | gh token narrowed | `gh auth refresh -s admin:repo_hook` | Run the refresh (opens browser), retry skill | -| 7 — template read | `~/.config/usezombie/samples/platform-ops/` missing | npm postinstall skipped or install corrupted | `Cannot find platform-ops template at ~/.config/usezombie/samples/platform-ops/. Reinstall: npm install -g @usezombie/zombiectl` | `npm install -g @usezombie/zombiectl`, retry | -| 7 — substitution | `.usezombie/platform-ops/` already exists | Re-running on same repo | Prompt overwrite (default `N`) | Choose `Y` to overwrite, or exit and remove the directory manually | +| 7 — template read | `~/.config/agentsfleet/samples/platform-ops/` missing | npm postinstall skipped or install corrupted | `Cannot find platform-ops template at ~/.config/agentsfleet/samples/platform-ops/. Reinstall: npm install -g @agentsfleet/cli` | `npm install -g @agentsfleet/cli`, retry | +| 7 — substitution | `.agentsfleet/platform-ops/` already exists | Re-running on same repo | Prompt overwrite (default `N`) | Choose `Y` to overwrite, or exit and remove the directory manually | | 7 — install | Response missing `webhook_urls` | API contract regression | Captured JSON verbatim, then `install JSON missing webhook_urls — file an issue` | File issue with the JSON; retry once a fix ships | -| 7 — install | HTTP 5xx from API | API outage | `zombiectl zombie install` stderr verbatim | Wait for status page, retry | +| 7 — install | HTTP 5xx from API | API outage | `agentsfleet agent install` stderr verbatim | Wait for status page, retry | | 9 — gh api hook register | `gh api` 403 / 401 (missing scope) | User's `gh` token lacks `admin:repo_hook` | `gh auth refresh -s admin:repo_hook` (exact command) | Run the refresh command (opens browser), retry skill | | 9 — gh api hook register | `gh api` 422 hook already exists | Re-install on same repo | Idempotent: skill calls `gh api repos/${GH_REPO}/hooks` (GET), matches `config.url`, treats as registered, advances | No user action; skill proceeds | | 9 — gh api hook register | `gh api` 404 | Repo name wrong or token lacks repo access | `gh api` response body verbatim | Verify `${GH_REPO}` (`gh repo view --json nameWithOwner`), confirm token has access | -| 10 — webhook self-test | Receiver returns non-202 | HMAC mismatch, receiver bug, or wrong zombie_id | Receiver's response body verbatim, plus the curl command that was run | Re-run skill (often a transient credential-write race); if persistent, file with the response body | -| 10 — webhook self-test | Network error to api.usezombie.com | DNS, captive portal, firewall | `curl` stderr verbatim | Resolve network, retry | +| 10 — webhook self-test | Receiver returns non-202 | HMAC mismatch, receiver bug, or wrong agent_id | Receiver's response body verbatim, plus the curl command that was run | Re-run skill (often a transient credential-write race); if persistent, file with the response body | +| 10 — webhook self-test | Network error to api.agentsfleet.net | DNS, captive portal, firewall | `curl` stderr verbatim | Resolve network, retry | | 10 — webhook self-test | HMAC mismatch with stored secret | Race between `credential add` and `credential show` cache, or local CSPRNG bug | Computed signature verbatim alongside the receiver's expected | Retry once; if persistent, regenerate via `--force` | -| 12 — smoke steer | Round-trip > 60 seconds | Worker not picking up event | `zombie installed but first response slow — check zombiectl events {id}` | `zombiectl events {id}` to see where it hung | -| 12 — smoke steer | `zombiectl steer` returns error | Zombie status not `active`, or RPC failure | `zombiectl steer` stderr verbatim | Check `zombiectl status {id}`, then retry | -| post-install | npm postinstall logged a warning | FS permission issue, full disk, weird platform | `~/.config/usezombie/samples/` was not populated; user will hit step 7's "missing template" path on next install | Fix the FS issue, re-run `npm install -g @usezombie/zombiectl` | +| 12 — smoke steer | Round-trip > 60 seconds | Worker not picking up event | `agent installed but first response slow — check agentsfleet events {id}` | `agentsfleet events {id}` to see where it hung | +| 12 — smoke steer | `agentsfleet steer` returns error | Agent status not `active`, or RPC failure | `agentsfleet steer` stderr verbatim | Check `agentsfleet status {id}`, then retry | +| post-install | npm postinstall logged a warning | FS permission issue, full disk, weird platform | `~/.config/agentsfleet/samples/` was not populated; user will hit step 7's "missing template" path on next install | Fix the FS issue, re-run `npm install -g @agentsfleet/cli` | ## What the skill never does on failure - **Never silently retry.** Each failure surfaces and waits. - **Never partially install.** If any step after the credential-add - step fails, the credentials remain in vault but the zombie is not + step fails, the credentials remain in vault but the agent is not installed. Re-running the skill on the same repo picks up the vault state (skip-if-exists default) and re-runs the install sequence cleanly. @@ -54,10 +54,10 @@ This document is the lookup table the agent loads when an exit happens. Two checks resolve ~80% of install failures without filing an issue: ```bash -zombiectl doctor --json | jq . -zombiectl --version +agentsfleet doctor --json | jq . +agentsfleet --version ``` Doctor's output names the failed subsystem. The version output catches "installed long ago, drifted from the API" cases — `npm install -g -@usezombie/zombiectl@latest` is usually enough. +@agentsfleet/cli@latest` is usually enough. diff --git a/usezombie-install-platform-ops/references/self-managed-handoff.md b/agentsfleet-install-platform-ops/references/self-managed-handoff.md similarity index 79% rename from usezombie-install-platform-ops/references/self-managed-handoff.md rename to agentsfleet-install-platform-ops/references/self-managed-handoff.md index c27608d..0f7db14 100644 --- a/usezombie-install-platform-ops/references/self-managed-handoff.md +++ b/agentsfleet-install-platform-ops/references/self-managed-handoff.md @@ -3,11 +3,11 @@ The install-skill is platform-managed by default. It never asks the user about LLM provider, never holds an LLM API key, never writes to `tenant_providers`. That is deliberate — self-managed setup is its own -operator-deliberate flow, separate from per-repo zombie installation. +operator-deliberate flow, separate from per-repo agent installation. This document is the lookup the agent loads when the user asks something like "I want to use my own Fireworks key" or "switch this -zombie to Anthropic". +agent to Anthropic". ## What "self-managed" actually means @@ -23,10 +23,10 @@ Two visible effects after switching to self-managed: account directly (the platform never sees the money). The platform's credit-pool stays for non-inference costs (per-request ingest, Redis fan-out, etc.) but inference is on the user's tab. -- **Frontmatter sentinels.** Every zombie installed *after* the +- **Frontmatter sentinels.** Every agent installed *after* the switch carries `model: ""` and `context_cap_tokens: 0` in its generated TRIGGER.md. The worker overlays the real values from - `core.tenant_providers` at trigger time. Zombies installed *before* + `core.tenant_providers` at trigger time. Agents installed *before* the switch keep their pinned values; the user can re-run the install-skill on each repo to re-pin against the new posture, or hand-edit the frontmatter if they prefer. @@ -41,19 +41,19 @@ op read 'op://Personal/fireworks-prod/api_key' \ | jq -Rn '{provider: "fireworks", api_key: input, model: "accounts/fireworks/models/kimi-k2.6"}' \ - | zombiectl credential add fw-prod --data @- + | agentsfleet credential add fw-prod --data @- # 2. Tell the tenant-provider resolver to use that credential. -zombiectl tenant provider add --credential fw-prod +agentsfleet tenant provider add --credential fw-prod # 3. Verify the doctor block flipped to self-managed posture. -zombiectl doctor --json | jq '.tenant_provider' +agentsfleet doctor --json | jq '.tenant_provider' # Expect: { mode: "self_managed", provider: "fireworks", # model: "accounts/fireworks/models/kimi-k2.6", # context_cap_tokens: 256000, credential_ref: "fw-prod" } ``` -After step 3, every subsequent `/usezombie-install-platform-ops` run +After step 3, every subsequent `/agentsfleet-install-platform-ops` run generates self-managed frontmatter automatically — the install-skill reads doctor and branches on `mode`. No flag, no prompt. @@ -67,18 +67,18 @@ If the install-skill held the LLM API key during the install flow: shows up in transcripts, history, ticket attachments. - The install-skill would have to know the provider's vault layout, the model-cap origin, the context_cap_tokens for every supported - model — all things `zombiectl tenant provider add` already owns. + model — all things `agentsfleet tenant provider add` already owns. - Every host the skill runs in (Claude Code, Amp, Codex CLI, OpenCode) would need its own auth-store integration to resolve - provider keys. Keeping it in `zombiectl` means one integration. + provider keys. Keeping it in `agentsfleet` means one integration. -The boundary is: **the install-skill orchestrates `zombiectl`; it -never holds the secrets that `zombiectl` operates on directly.** +The boundary is: **the install-skill orchestrates `agentsfleet`; it +never holds the secrets that `agentsfleet` operates on directly.** ## Switching back from self-managed to platform-managed ```bash -zombiectl tenant provider delete +agentsfleet tenant provider delete ``` Doctor's next call will report `mode: platform`. Re-run the install @@ -91,10 +91,10 @@ when no `tenant_providers` row exists). - Picking which provider to use — that's a product decision (cost, context window, model quality, region). The cap.json endpoint at - `https://api.usezombie.com/_um/da5b6b3810543fe108d816ee972e4ff8/cap.json` + `https://api.agentsfleet.net/_um/da5b6b3810543fe108d816ee972e4ff8/cap.json` lists every supported model with its context cap and per-token rate. - Multi-provider routing — there is one active provider per tenant. - Per-zombie provider override is a future milestone. + Per-agent provider override is a future milestone. - Provider auth troubleshooting — that's the provider's docs, not - this skill's. `zombiectl tenant provider add` validates the key + this skill's. `agentsfleet tenant provider add` validates the key before persisting; the failure surface there is provider-specific. diff --git a/assets/logo/dark.svg b/assets/logo/dark.svg index d4379ba..ad5d2da 100644 --- a/assets/logo/dark.svg +++ b/assets/logo/dark.svg @@ -1,47 +1,20 @@ - - - - - + agentsfleet + + usezombie + fill="#E6EAEC" + letter-spacing="-1">agentsfleet diff --git a/assets/logo/light.svg b/assets/logo/light.svg index 047bf33..545eb70 100644 --- a/assets/logo/light.svg +++ b/assets/logo/light.svg @@ -1,44 +1,18 @@ - - - - - + agentsfleet + + usezombie + fill="#0A0D0E" + letter-spacing="-1">agentsfleet