Agent Skills vs Code for APIs | Generated by AI

Home 2026.06

Question: Instead of writing fixed wrapper code for AMD Dev Cloud / DigitalOcean API calls (like in snapshots.py), should we just give the agent (Hermes/Claude Code) the API token and let it figure out what to do dynamically? And is the general principle: agents for flexible/exploratory tasks, code for fixed/complex tasks?

Answer:

Yes, exactly right. This is one of the core judgment calls in modern AI engineering. Let me sharpen the framework:

The Principle: Skills vs. No-Skills

Fixed + Complex  →  Write code (skills)
Flexible + Simple →  Give agent the token (no-skills needed)

Your snapshots.py is a perfect example of over-engineering a task that an agent handles trivially. The DigitalOcean API is well-documented, Claude Code / Hermes knows it cold, and snapshot operations are exploratory by nature (“show me what’s running”, “create one”, “delete old ones”).

What Agent-First Looks Like

Instead of snapshots.py, just:

export DIGITALOCEAN_TOKEN=xxx

claude "List all my droplets and their snapshots. Delete any snapshot older than 7 days on the amd-dev droplet."

Or with Hermes via OpenAI-compatible endpoint:

system = """
You have access to the DigitalOcean API v2.
Base URL: https://api.digitalocean.com/v2
Auth header: Authorization: Bearer {token}

Use HTTP tool calls to accomplish tasks. Be precise, confirm before deleting.
"""

The agent reads the DO API docs it was trained on, constructs the right GET /v2/droplets, GET /v2/droplets/{id}/snapshots, DELETE /v2/snapshots/{id} calls — no wrapper needed.

When to Write Code (The Real Threshold)

Situation Agent or Code?
“List snapshots, delete old ones” Agent
“SSH tunnel + port forward to droplet” Agent (probably)
“Spin up droplet, wait for cloud-init, run benchmark, snapshot, destroy” — reliably, in CI Code
Complex retry logic with backoff + state machine Code
Multi-step workflow you run 100x/day Code
One-off exploration / ops task Agent

The threshold is: would a bug here cost you money or data? Snapshot deletion on wrong droplet = bad. For that, you want idempotent, reviewed code with --dry-run. For “what snapshots do I have?” — just ask the agent.

The Deeper Insight: Agents Collapse the Skill Gap

What snapshots.py really encodes is your past effort learning the DO API — pagination, auth headers, error handling. An agent already has that knowledge. So the wrapper is negative ROI unless:

  1. You need deterministic behavior (same action, same result, every time)
  2. You need composability (this script is called by another script)
  3. The API is obscure/undocumented (agent doesn’t know it well)
  4. You need speed (agent round-trips add latency)

For AMD Dev Cloud specifically — the DigitalOcean API is extremely well-known, Claude Code handles it natively, so almost everything in ww/amd_dev_cloud/ is a candidate for deletion in favor of claude "do X on my droplet".

What to Actually Keep as Code

From your ww repo, the things worth keeping as scripts are:

Everything that’s just “call this API and show me the result” → delete and let the agent do it.

Practical Setup for This

# ~/.zshrc or ww config
export DIGITALOCEAN_TOKEN=$(cat ~/.secrets/do_token)

# One alias to rule them all
alias amd='claude --system "You manage my AMD Dev Cloud droplet via DigitalOcean API. Token is in env DIGITALOCEAN_TOKEN. Always confirm before destructive actions."'

# Usage
amd "what snapshots do I have?"
amd "create a snapshot of droplet amd-mi300x right now"
amd "my droplet is 192.168.1.x, what's its current status?"

This is genuinely more powerful than snapshots.py because the agent can chain operations, handle errors, and adapt — things your fixed wrapper can’t do without more code.

The meta-point: The right question isn’t “should I write this script?” but “is this task worth crystallizing into code, or should it stay fluid in agent-space?” Most ops tasks belong in agent-space. Only graduate them to code when they earn it through repetition and reliability requirements.


Generated by AI. Curating and sharing still takes effort. If you find it useful, feel free to donate. WeChat: @lzwjavaWeChat QR · X: @lzwjava · Say hi 👋

Back Donate