---
title: "Coding Agents"
description: "This path is for coding agents, automation scripts, and operational tools working with ZeyOS. Every task starts by choosing one of three routes:"
canonical_url: "https://www.zeyos.com/guide/agent-workflows/coding-agents"
markdown_url: "https://www.zeyos.com/ai/guide/guide/agent-workflows/coding-agents.md"
section: "guide"
authority: "guide"
language: "en"
source_repository: "zeyos/client"
source_path: "docs/04-agent-workflows/00-coding-agents.md"
source_revision: "465c2c7016f5028405c987b17704f3491a597857"
---

# Coding Agents

This path is for coding agents, automation scripts, and operational tools working with ZeyOS. Every task starts by choosing one of three routes:

| Route | Use it for | Interfaces |
| --- | --- | --- |
| **Build a ZeyOS app** | Native manifests, services, resources, weblets, hooks and settings | iXML/Zymba, `zeysdk` |
| **Connect an external application** | Software outside ZeyOS that reads or writes it | CLI, MCP, `@zeyos/client`, REST |
| **Use ZeyOS business data** | Questions and explicitly requested record operations | The 15 domain skills, through the CLI or MCP |

Install the `zeyos` router skill, and the agent classifies tasks itself:

```bash
zeyos skills install zeyos --target claude --global
zeyos skills verify --target claude --global
```

An explanation, code edit, review or validation-only task must never trigger a live query, compile, push or run, and loading a skill authorizes nothing. For harness configuration, including OpenCode V2, see [Agent Setup](https://www.zeyos.com/guide/agent-workflows/agent-setup). Native work also uses the [copyable project instructions](https://www.zeyos.com/ai/agent-instructions.md); the separate ZeyOS SDK provides compilation checks without executing the source, and runtime tests are a separate step.

## Start Here

For **Connect an external application** and **Use ZeyOS business data**, start with the CLI:

| Need | Recommended interface | Why |
|------|-----------------------|-----|
| Fast CRUD against common business resources | [`zeyos`](https://www.zeyos.com/guide/cli/getting-started) | Human-readable help, JSON output, built-in auth flow, safe delete confirmation |
| Reliable shell automation and pipelines | [`zeyos --json`](https://www.zeyos.com/guide/agent-workflows/agent-quickstart) | Stable machine-readable output, easy to combine with `jq` and scripts |
| Access beyond the CLI's curated resource registry | [`@zeyos/client`](https://www.zeyos.com/guide/javascript-client/getting-started) | Covers the full generated API surface |
| Non-JavaScript or custom HTTP clients | [REST/OpenAPI](https://www.zeyos.com/guide/api-reference/resources) | Raw endpoint and schema reference |

## Recommended Route

1. Follow the [Agent Quickstart](https://www.zeyos.com/guide/agent-workflows/agent-quickstart) to authenticate and make your first read/write calls.
2. Use [Agent Recipes](https://www.zeyos.com/guide/agent-workflows/agent-recipes) for common ticket, account, task, and project workflows.
3. Check [CLI Coverage and Escalation](https://www.zeyos.com/guide/agent-workflows/cli-coverage-and-escalation) whenever you need a resource or request shape the CLI does not expose directly.

## Working Rules

- Prefer `--json` for agent-driven flows.
- Prefer `filters`-style JSON payloads in CLI examples so the transition to `@zeyos/client` stays consistent.
- Use `visibility: 0` on resources that **have** the column — `accounts`, `contacts`, `tickets`, `tasks`, `projects`, `items`, `documents`, `notes`, `opportunities`, `appointments`, `campaigns`, `mailinglists`, `storages`, `contracts`, `ledgers` — unless you want archived (`1`) or deleted (`2`) records. **Most other resources have no `visibility` column** — `transactions` (and every billing/procurement entity), `payments`, `messages`, `actionsteps`, `addresses`, `users`, `prices`, `dunning` — and filtering on it there returns an opaque HTTP 400. Check with `zeyos describe <entity>` when unsure.
- Treat `delete` as destructive. The CLI prompts by default; use `--force` only in deliberate automation.
- Switch to the JavaScript client when the task needs unsupported resources, browser/session behavior, or low-level request control.
