The New CLI Moat Isn’t UX. It’s How Agent Skills Get Shipped
March 25, 2026 / Daily Edition / 2 source signals.
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.htmlfor 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
- PR 15712:
https://github.com/openai/codex/pull/15712 - Title:
Move skills out of core - Summary: moves shared skill types and rendering into
codex-skills
Code
codex-rs/core/src/skills/system.rs- re-exports
install_system_skillsandsystem_cache_root_dirfromcodex_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
- PR 23743:
https://github.com/google-gemini/gemini-cli/pull/23743 - Title:
feat(core): support inline agentCardJson for remote agents - Related issue:
#23742
Code
packages/core/src/agents/agentLoader.ts- introduces
remoteAgentUrlSchemaandremoteAgentJsonSchema - validates
agent_card_jsonwithJSON.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 fromJSON.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