
Agent Native Architecture
Design products where LLM agents achieve user goals through tools and loops—with UI parity—instead of bolting chat onto CRUD screens.
Overview
Agent-native-architecture is an agent skill most often used in Build (also Validate scope, Ship security) that designs apps where agents and tools achieve user outcomes with UI parity.
Install
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill agent-native-architectureWhat is this skill?
- Parity principle: every UI action must be achievable via agent tools
- Treat features as outcomes from agents operating in a loop, not only handwritten code paths
- Guidance for MCP tools and self-modifying or autonomous system boundaries
- Frames general-purpose agents beyond coding (files, workflows, personal apps)
- Aligns with Claude Code SDK-style agent loops for indie product categories
Adoption & trust: 569 installs on skills.sh; 20.5k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are adding AI chat to a normal app without tool parity, so agents cannot reliably do what users can click—and features stay code-bound.
Who is it for?
Indie builders shipping agent-forward SaaS, personal automation apps, or internal tools on Claude Code SDK-style loops.
Skip if: Static marketing sites, batch-only data pipelines with no interactive agent, or products that intentionally block automation for compliance.
When should I use this skill?
Use when designing autonomous agents, creating MCP tools, implementing self-modifying systems, or building apps where features are outcomes achieved by agents operating in a loop.
What do I get? / Deliverables
You get an agent-first architecture blueprint with tool boundaries, parity checks, and loop-based feature definitions ready for MCP and SDK implementation.
- Agent parity matrix (UI action ↔ tool)
- Tool surface and loop architecture notes
- Feature specs written as agent-achievable outcomes
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Agent-native product shape is decided while you build agent surfaces, tools, and autonomy loops. MCP tools, agent loops, and parity rules are core agent-tooling concerns before features harden as unmaintainable one-offs.
Where it fits
Decide whether your notes app is agent-native with full CRUD tool coverage before writing UI-only screens.
Map each user-facing action to an MCP tool so the agent can file, tag, and search notes in a loop.
Review tool permissions and parity gaps before exposing agent write access to customer data.
Extend agent outcomes when users request new workflows without duplicating UI and agent logic.
How it compares
Use for product architecture and MCP tool design—not a single integration skill or a code-review checklist.
Common Questions / FAQ
Who is agent-native-architecture for?
Solo developers and small teams designing autonomous agent features, MCP servers, and self-modifying workflows in real products.
When should I use agent-native-architecture?
At Validate when scoping an agent product, during Build agent-tooling and integrations, before Ship security review of tool permissions, and at Operate when extending what agents may change in production.
Is agent-native-architecture safe to install?
Read the Security Audits panel on this Prism page; applying parity and tool access has real permissions implications you must threat-model in your app.
SKILL.md
READMESKILL.md - Agent Native Architecture
<why_now> ## Why Now Software agents work reliably now. Claude Code demonstrated that an LLM with access to bash and file tools, operating in a loop until an objective is achieved, can accomplish complex multi-step tasks autonomously. The surprising discovery: **a really good coding agent is actually a really good general-purpose agent.** The same architecture that lets Claude Code refactor a codebase can let an agent organize your files, manage your reading list, or automate your workflows. The Claude Code SDK makes this accessible. You can build applications where features aren't code you write—they're outcomes you describe, achieved by an agent with tools, operating in a loop until the outcome is reached. This opens up a new field: software that works the way Claude Code works, applied to categories far beyond coding. </why_now> <core_principles> ## Core Principles ### 1. Parity **Whatever the user can do through the UI, the agent should be able to achieve through tools.** This is the foundational principle. Without it, nothing else matters. Imagine you build a notes app with a beautiful interface for creating, organizing, and tagging notes. A user asks the agent: "Create a note summarizing my meeting and tag it as urgent." If you built UI for creating notes but no agent capability to do the same, the agent is stuck. It might apologize or ask clarifying questions, but it can't help—even though the action is trivial for a human using the interface. **The fix:** Ensure the agent has tools (or combinations of tools) that can accomplish anything the UI can do. This isn't about creating a 1:1 mapping of UI buttons to tools. It's about ensuring the agent can **achieve the same outcomes**. Sometimes that's a single tool (`create_note`). Sometimes it's composing primitives (`write_file` to a notes directory with proper formatting). **The discipline:** When adding any UI capability, ask: can the agent achieve this outcome? If not, add the necessary tools or primitives. A capability map helps: | User Action | How Agent Achieves It | |-------------|----------------------| | Create a note | `write_file` to notes directory, or `create_note` tool | | Tag a note as urgent | `update_file` metadata, or `tag_note` tool | | Search notes | `search_files` or `search_notes` tool | | Delete a note | `delete_file` or `delete_note` tool | **The test:** Pick any action a user can take in your UI. Describe it to the agent. Can it accomplish the outcome? --- ### 2. Granularity **Prefer atomic primitives. Features are outcomes achieved by an agent operating in a loop.** A tool is a primitive capability: read a file, write a file, run a bash command, store a record, send a notification. A **feature** is not a function you write. It's an outcome you describe in a prompt, achieved by an agent that has tools and operates in a loop until the outcome is reached. **Less granular (limits the agent):** ``` Tool: classify_and_organize_files(files) → You wrote the decision logic → Agent executes your code → To change behavior, you refactor ``` **More granular (empowers the agent):** ``` Tools: read_file, write_file, move_file, list_directory, bash Prompt: "Organize the user's downloads folder. Analyze each file, determine appropriate locations based on content and recency, and move them there." Agent: Operates in a loop—reads files, makes judgments, moves things, checks results—until the folder is organized. → Agent makes the decisions → To change behavior, you edit the prompt ``` **The key shift:** The agent is pursuing an outcome with judgment, not executing a choreographed sequence. It might encounter unexpected file