Evidence Trail

The New CLI Moat Isn’t UX. It’s How Agent Skills Get Shipped

March 25, 2026 / Daily Edition / 2 source signals.

repo openai/codex main
2 source signals 2 repos source trail
> source trail / March 25, 2026 / Daily Edition
Read Story Open Edition

Reporter Notes

Daily article notes — 2026-03-25

Winner

The new CLI moat is not just better UX. It's better capability distribution.

Candidate angles considered

1. Capability distribution / portable artifacts (**chosen**)

2. Operationalization layer: Gemini CI skill vs Codex plugins

3. Edge-hardening: Gemini forbiddenPaths vs Codex fork-context hygiene

Why this angle won

  • Clearly different from 2026-03-24's forensics article.
  • Strong code symmetry without pretending the implementations are identical.
  • Taps an active repo trend: both projects are turning capabilities into more portable, reusable units.

Core insight

Codex is making system skills portable locally by extracting them into a dedicated crate with embedded assets, install/cache logic, and fingerprinting. Gemini CLI is making remote agents portable remotely by allowing inline agent_card_json, so a remote capability can ship inside the agent definition instead of depending on an initial fetch.

Thesis

The next moat for terminal agents may not be the smartest prompt or flashiest UI. It may be the infrastructure that makes capabilities easy to package, move, trust, and activate.

Style notes

  • Punchy hook
  • Human-first framing
  • Short paragraphs
  • Minimal jargon
  • End with open question + CTA

Sources and evidence — 2026-03-25

Prior-state / anti-repeat check

  • Yesterday state: daily/_state.json
  • last_title: The Next CLI UX Battle Is Agent Forensics
  • last_topic: agent forensics via telemetry / traceability
  • Archive titles reviewed from daily/*/index.html for 2026-03-05 through 2026-03-24.

Repo freshness / trend scan

  • gh api repos/openai/codex
  • stars: 67392
  • pushed_at: 2026-03-25T04:54:49Z
  • gh api repos/google-gemini/gemini-cli
  • stars: 98984
  • pushed_at: 2026-03-25T05:02:40Z
  • gh issue list --repo google-gemini/gemini-cli --search 'agentCardJson OR remote agents OR A2A in:title,body' --state all --limit 10
  • closed issue #23742 Add ability to init a2a from agentCardJson
  • multiple active remote-agent productionization issues

gsio evidence

  • gsio search q 'skills moved out of core render remote agent agent_card_json forbiddenPaths plugin flags fork context injection' -p openai/codex -p google-gemini/gemini-cli --output summary
  • surfaced relevant March commits around skill extraction, inline MCP/agent config, and remote-agent evolution.

Codex evidence

GitHub PR

Code

  • codex-rs/core/src/skills/system.rs
  • re-exports install_system_skills and system_cache_root_dir from codex_skills
  • codex-rs/skills/src/lib.rs
  • embeds sample/system skills via include_dir
  • installs into CODEX_HOME/skills/.system
  • fingerprints nested assets with a marker file
  • skips reinstall when fingerprint matches
  • codex-rs/core/src/skills/manager.rs
  • calls install_system_skills() when bundled skills are enabled
  • calls uninstall_system_skills() for best-effort cleanup when disabled

Gemini CLI evidence

GitHub PR

Code

  • packages/core/src/agents/agentLoader.ts
  • introduces remoteAgentUrlSchema and remoteAgentJsonSchema
  • validates agent_card_json with JSON.parse() via zod refine
  • packages/core/src/agents/types.ts
  • adds AgentCardLoadOptions = { type: 'url' } | { type: 'json' }
  • adds getRemoteAgentTargetUrl() to recover URL from inline JSON for auth
  • packages/core/src/agents/a2a-client-manager.ts
  • when options.type === 'json', loads the card from JSON.parse(options.json)
  • bypasses the initial network fetch path used for URL-based cards
  • PR comments from Gemini Code Assist also describe the user-facing significance: embedded JSON agent cards make remote agents more self-contained.

LLM review

  • Used /opt/homebrew/bin/llm -m gpt-5.4
  • Winner from review: Candidate A (portable capabilities / capability distribution)
  • Suggested title basis: The New CLI Moat Isn’t UX. It’s How Agent Skills Get Shipped