Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -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"]
}
]
}
2 changes: 1 addition & 1 deletion .github/workflows/eval.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
skill:
- usezombie-install-platform-ops
- agentsfleet-install-platform-ops
steps:
- uses: actions/checkout@v4

Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -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
Expand Down
40 changes: 20 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/logo/dark.svg" />
<source media="(prefers-color-scheme: light)" srcset="assets/logo/light.svg" />
<img src="assets/logo/dark.svg" width="200" alt="usezombie" />
<img src="assets/logo/dark.svg" height="40" alt="agentsfleet" />
</picture>

**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)

</div>
Expand All @@ -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
Expand All @@ -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

<details>
<summary><strong>usezombie-install-platform-ops</strong></summary>
<summary><strong>agentsfleet-install-platform-ops</strong></summary>

One-command install of the platform-ops agent on a user's repo. Watches
GitHub Actions CD failures and posts evidenced diagnoses to Slack.
Expand All @@ -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`

</details>

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -135,4 +135,4 @@ top-level `<skill-name>/` directory with `SKILL.md`, `references/`, and

## License

MIT — Copyright (c) 2026 usezombie
MIT — Copyright (c) 2026 agentsfleet
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -95,12 +95,12 @@ order, per field:
1. `op read 'op://<your-vault>/<your-item>/<field>'` — uses the user's
existing 1Password layout. The skill does not prescribe a vault or
item-naming convention.
2. Environment variable `ZOMBIE_CRED_<NAME>_<FIELD>` (e.g.
`ZOMBIE_CRED_FLY_API_TOKEN`).
2. Environment variable `AGENTSFLEET_CRED_<NAME>_<FIELD>` (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 <name> --data @-` so secret bytes never appear
`agentsfleet credential add <name> --data @-` so secret bytes never appear
in shell history or process argv. Never pass JSON via `--data '<JSON>'`.

See [`references/credential-resolution.md`](references/credential-resolution.md)
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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 <name> --data @-`. Default behaviour
into `agentsfleet credential add <name> --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 |
Expand All @@ -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 `<source>` (`github`, `linear`, `jira`, etc.)
with `<receiver-URL>` 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
Expand Down Expand Up @@ -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 '<JSON>'` 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. |
Expand All @@ -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 <name> --data @-`
+ `zombiectl tenant provider add --credential <name>`. The skill never
- self-managed setup — out-of-band, via `agentsfleet credential add <name> --data @-`
+ `agentsfleet tenant provider add --credential <name>`. 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
Expand Down
Loading
Loading