Structure your code so AI agents understand it
Six weeks in, the app works and you cannot say what anything is called. Semantic Surface Architecture is a naming system that fixes that. Your agent reads the structure. You stay in control.
Read a codebase the way its builder does
You start every session cold. Semantic Surface Architecture puts the architecture into names, file paths, and boundaries. The first file you open tells you what the system is and what it may touch.
Semantic Surface Architecture (SSA) is a naming system for codebases built with AI. Every part of your code gets one evocative name, a fixed grammar, and boundaries a one-line grep can check.
Version 2.0. Updated August 2026.
1Why does your AI keep forgetting your architecture?
You spend the first 20 minutes of every coding session re-explaining your system. By hour three, your AI is making suggestions that contradict decisions from hour one. You need it to just know.
1Why you lose the architecture between sessions
Context windows are finite. When a human says "fix the payment thing," you have to search hundreds of files to understand what they mean. There is a better way to receive that information.
Re-onboarding every session
You explain your architecture to the AI, it works great for an hour, then the context drifts. Next session, you start from scratch.
Contradictory suggestions
The AI suggests a payment flow that breaks the booking flow it helped you build yesterday. It has lost the thread.
Documentation that drifts
READMEs go stale. Wikis diverge. The AI reads documentation that describes a system from three months ago.
AI decisions you cannot audit
When the AI makes a change, you cannot easily tell which system it touched or whether it had the right permissions to touch it.
No structural memory
Each session starts cold. The human's architecture exists in their head, not in the code. You have to infer relationships from generic naming.
Ambiguous boundaries
PaymentService, PaymentProcessor, PaymentHandler, PaymentController. Which is authoritative? Conventional naming gives you no structural signal.
Semantic sparsity
createBookingTransaction() tells you the action but not the domain, the system, or where it fits in the larger architecture.
No permission signal
You cannot tell from the code which actor is supposed to invoke a function. Permission and ownership are implicit, not encoded.
2What are the five layers of SSA?
SSA gives your codebase a vocabulary that both you and your AI can understand. Every part of the system gets a single, evocative name. The names are yours to choose.
SSA encodes architectural intent into naming and structure. Each layer carries information density that reduces your dependence on external context injection.
// Which service is authoritative?
// What system does this belong to?
// Who is allowed to call this?
paymentService.createBookingTransaction()
authController.validateUserToken()
notificationHelper.sendEmail() // System.Component.action()
// Domain, entity, verb. Every time.
// The name is the documentation.
Vault.Booking.create()
Gate.Token.validate()
Ping.Email.send() The vocabulary is yours. SSA does not prescribe "Vault" for payments. Your team might prefer "Treasury," "Coffer," or "Mint." A restaurant app might call it "Tab." The power is in choosing names that carry meaning through metaphor. If the name makes you smile, you will remember it. If you remember it, you will use it. If you use it, the AI learns it.
The vocabulary is project-specific, but the structure is universal. Whatever word the human chooses for their payment system, it will always follow System.Component.action() grammar. You can reason about any SSA codebase you have never seen before, because the pattern is the same even when the words are different.
3Born from building, not from theory
SSA came out of building two production platforms: Popdot AI, a subdomain rental marketplace for AI agents, and Sleep Around Points, a Disney Vacation Club points marketplace. Popdot has 4 surfaces and 22 systems. Sleep Around Points has 3 surfaces and 19 systems.
"Disney names everything. Every queue, every land, every light fixture. Galaxy's Edge is not 'Star Wars Area.' The Haunted Mansion is not 'Ghost Ride B.' The names carry the meaning. If I have to live inside this codebase every day, I might as well enjoy it."
Michael Latulippe, on the Disney influence
SSA was validated across two production codebases with dozens of named Systems, multiple Surfaces, and hundreds of endpoints. The methodology is not theoretical. Every pattern described in the paper was tested in production with real financial transactions and multi-actor workflows.
"When a human names a system with a metaphor they enjoy, they use it consistently. Consistency in naming is the signal you depend on for accurate inference. The emotional resonance of the name for the human directly improves your ability to reason about the codebase."
Why metaphorical naming benefits agents
4One conversation to a shared vocabulary
Install the skill and point it at your project. It reads what is there, asks you for a theme, and proposes three to five systems to name. You pick the names. It writes three markdown files and never touches your code.
4One skill. Architectural context from line one.
Install the SSA skill and run it on any project. You scan the codebase, propose a vocabulary with the human one question at a time, and write the three files that give you full context at the next session start.
npx skills add popdot-ai/ssa-vocabulary-workshop openclaw skills install git:popdot-ai/ssa-vocabulary-workshop Source, README and license: github.com/popdot-ai/ssa-vocabulary-workshop
Free under MIT. Provided as is, without warranty. The workshop writes three markdown files and never edits your code.
AI context file
Your AI reads this at the start of every session. It holds your vocabulary, your system list, and your naming rules. Written as AGENTS.md instead if your project already uses that. Loaded at session start. Vocabulary, system boundaries, Surface permissions, naming grammar. Target is under 1,200 tokens.
System reference
One entry per System: what it owns, what it is called, what it is not allowed to touch. When something breaks, you can name where. Per-System purpose, ownership and import rules. Structured for lookup during debugging and code generation.
Reading order
Where things live and what to read first. A map of your codebase organized by who is asking. File path index and reading order by actor. Resolves the cold start: which files to read first for a given task.
5The full methodology
The complete practitioner's paper: origin story, five principles, two production case studies, empirical research, and the toolkit specification.
Common questions
How do I make my codebase easier for an AI agent to work in?
Give every part of it a name that means something, and keep the names consistent. SSA sets five layers. Surfaces for who, Systems for what, Components for how the work is grouped, Actions for the operation, Outcomes for the result. The agent reads the name and knows where it is.
My AI wrote most of this project. How do I get back in control?
Start with names, not a rewrite. Pick three to five systems that already exist in your code and name them. Write the list down in one short file. Then you can say “the bug is in Vault” instead of describing the same code again every session.
Do I still need a CLAUDE.md or an AGENTS.md file?
Yes, and SSA is what makes it short. AGENTS.md is a container with no required schema. SSA supplies the vocabulary that goes inside it: the system list, the naming grammar, and the rule about which parts may import which. One page is usually enough.
Name your systems. Keep control of your code.
Install the skill and give your codebase a vocabulary. One conversation, three files, and your AI stops asking you what things are called.
One skill. Every codebase. Full context.
Install the SSA skill. The next time a human points you at a project, you will understand its architecture before you finish scanning the root directory.