[{"data":1,"prerenderedAt":773},["ShallowReactive",2],{"blog-doc-welcome":3,"blog-chrono-nav":767},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"cover":17,"draft":6,"author":18,"authorIntro":19,"body":20,"_type":761,"_id":762,"_source":763,"_file":764,"_stem":765,"_extension":766},"\u002Fposts\u002Fwelcome","posts",false,"","Welcome: living documentation, agents, and this site","Opening post: why this project exists, what we actually built for anyone who lands here, and how it connects OpenClaw, Resizes, and personal experiments.","2026-05-12",[12,13,14,15,16],"documentation","agents","openclaw","nuxt","architecture","\u002Fimages\u002Fposts\u002FopenclawBYA.png","Pablo Suárez Peña","I build and refine AI agents with OpenClaw—professionally at Resizes, and on personal projects where I can take more risk. This site is where I publish what I learn as I go: partly to clarify my own thinking, partly in case these notes help someone facing a similar problem—or invite feedback that saves us all a few wrong turns.",{"type":21,"children":22,"toc":748},"root",[23,74,93,100,171,183,293,313,347,366,372,405,438,444,456,463,510,522,528,557,611,617,643,669,675,708,714,724,728,740],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28,31,37,39,44,46,51,53,58,60,65,67,72],{"type":29,"value":30},"text","This blog is ",{"type":24,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":29,"value":36},"living, personal documentation",{"type":29,"value":38},". It is not a closed manual or a finished methodology. I am using it to record ",{"type":24,"tag":32,"props":40,"children":41},{},[42],{"type":29,"value":43},"how my understanding evolves",{"type":29,"value":45}," as I ",{"type":24,"tag":32,"props":47,"children":48},{},[49],{"type":29,"value":50},"design, ship, and improve agents",{"type":29,"value":52},"—including with ",{"type":24,"tag":32,"props":54,"children":55},{},[56],{"type":29,"value":57},"OpenClaw",{"type":29,"value":59},"—in both ",{"type":24,"tag":32,"props":61,"children":62},{},[63],{"type":29,"value":64},"professional work at Resizes",{"type":29,"value":66}," and ",{"type":24,"tag":32,"props":68,"children":69},{},[70],{"type":29,"value":71},"independent exploration",{"type":29,"value":73},".",{"type":24,"tag":25,"props":75,"children":76},{},[77,79,84,86,91],{"type":29,"value":78},"If I capture decisions while they are still fresh, I do more than tidy my own mental model. I leave a trace that may help ",{"type":24,"tag":32,"props":80,"children":81},{},[82],{"type":29,"value":83},"someone who hits the same wall later",{"type":29,"value":85},", or attract ",{"type":24,"tag":32,"props":87,"children":88},{},[89],{"type":29,"value":90},"a correction, a link, or a conversation",{"type":29,"value":92}," that would otherwise take weeks of trial and error to reach. The blog is where that narrative can breathe—more patiently than in a cramped README or a fleeting social thread.",{"type":24,"tag":94,"props":95,"children":97},"h2",{"id":96},"what-this-project-is",[98],{"type":29,"value":99},"What this project is",{"type":24,"tag":25,"props":101,"children":102},{},[103,105,110,112,117,119,124,126,131,133,138,139,144,145,150,151,156,157,162,164,169],{"type":29,"value":104},"On the surface, ",{"type":24,"tag":32,"props":106,"children":107},{},[108],{"type":29,"value":109},"build\u002Fyour\u002Fagents",{"type":29,"value":111}," is a ",{"type":24,"tag":32,"props":113,"children":114},{},[115],{"type":29,"value":116},"Nuxt 3",{"type":29,"value":118}," site that presents a ",{"type":24,"tag":32,"props":120,"children":121},{},[122],{"type":29,"value":123},"seven-file architecture",{"type":29,"value":125}," for modular, personal AI agents. The files are intentional labels: ",{"type":24,"tag":32,"props":127,"children":128},{},[129],{"type":29,"value":130},"Soul",{"type":29,"value":132},", ",{"type":24,"tag":32,"props":134,"children":135},{},[136],{"type":29,"value":137},"Identity",{"type":29,"value":132},{"type":24,"tag":32,"props":140,"children":141},{},[142],{"type":29,"value":143},"Agents",{"type":29,"value":132},{"type":24,"tag":32,"props":146,"children":147},{},[148],{"type":29,"value":149},"User",{"type":29,"value":132},{"type":24,"tag":32,"props":152,"children":153},{},[154],{"type":29,"value":155},"Memory",{"type":29,"value":132},{"type":24,"tag":32,"props":158,"children":159},{},[160],{"type":29,"value":161},"Heartbeat",{"type":29,"value":163},", and ",{"type":24,"tag":32,"props":165,"children":166},{},[167],{"type":29,"value":168},"Tools",{"type":29,"value":170},". Each plays a clear role—from tone and boundaries to memory, cadence, and permitted tooling.",{"type":24,"tag":25,"props":172,"children":173},{},[174,176,181],{"type":29,"value":175},"The templates are ",{"type":24,"tag":32,"props":177,"children":178},{},[179],{"type":29,"value":180},"not empty placeholders",{"type":29,"value":182},". At a glance:",{"type":24,"tag":184,"props":185,"children":186},"ul",{},[187,204,213,237,246,255,278],{"type":24,"tag":188,"props":189,"children":190},"li",{},[191,195,197,202],{"type":24,"tag":32,"props":192,"children":193},{},[194],{"type":29,"value":130},{"type":29,"value":196}," — who the agent is: voice, values, capabilities, and ",{"type":24,"tag":32,"props":198,"children":199},{},[200],{"type":29,"value":201},"hard limits",{"type":29,"value":203}," (what must never happen).",{"type":24,"tag":188,"props":205,"children":206},{},[207,211],{"type":24,"tag":32,"props":208,"children":209},{},[210],{"type":29,"value":137},{"type":29,"value":212}," — where it lives: metadata, routing, model configuration, multi-agent and session settings.",{"type":24,"tag":188,"props":214,"children":215},{},[216,220,222,227,229,235],{"type":24,"tag":32,"props":217,"children":218},{},[219],{"type":29,"value":143},{"type":29,"value":221}," — how it operates: workflows, ",{"type":24,"tag":32,"props":223,"children":224},{},[225],{"type":29,"value":226},"decision rules",{"type":29,"value":228},", memory rules, escalation, and communication patterns—the file that ",{"type":24,"tag":230,"props":231,"children":232},"em",{},[233],{"type":29,"value":234},"reads",{"type":29,"value":236}," the others in a defined order.",{"type":24,"tag":188,"props":238,"children":239},{},[240,244],{"type":24,"tag":32,"props":241,"children":242},{},[243],{"type":29,"value":149},{"type":29,"value":245}," — who it serves: your preferences, projects, contacts, priorities, and explicit “do not do” lines.",{"type":24,"tag":188,"props":247,"children":248},{},[249,253],{"type":24,"tag":32,"props":250,"children":251},{},[252],{"type":29,"value":168},{"type":29,"value":254}," — what it may invoke: skills, MCPs, built-ins, selection order, and error handling (the “static map” of capability).",{"type":24,"tag":188,"props":256,"children":257},{},[258,262,264,269,271,276],{"type":24,"tag":32,"props":259,"children":260},{},[261],{"type":29,"value":155},{"type":29,"value":263}," — what persists as ",{"type":24,"tag":32,"props":265,"children":266},{},[267],{"type":29,"value":268},"evergreen knowledge",{"type":29,"value":270},": confirmed facts, usually one line per fact, ",{"type":24,"tag":32,"props":272,"children":273},{},[274],{"type":29,"value":275},"superseded",{"type":29,"value":277}," rather than silently deleted when something changes.",{"type":24,"tag":188,"props":279,"children":280},{},[281,285,287,292],{"type":24,"tag":32,"props":282,"children":283},{},[284],{"type":29,"value":161},{"type":29,"value":286}," — how it acts on its own time: scheduled tasks, reviews, alerts, and rules for ",{"type":24,"tag":32,"props":288,"children":289},{},[290],{"type":29,"value":291},"what must never run without your confirmation",{"type":29,"value":73},{"type":24,"tag":25,"props":294,"children":295},{},[296,298,303,305,312],{"type":29,"value":297},"On the site, those files are also grouped into ",{"type":24,"tag":32,"props":299,"children":300},{},[301],{"type":29,"value":302},"four tiers",{"type":29,"value":304}," (core identity, orchestration, operational inputs, state and memory). That layer answers “what do I trust first?” and “what sits on top of what” before you open a single ",{"type":24,"tag":306,"props":307,"children":309},"code",{"className":308},[],[310],{"type":29,"value":311},".md",{"type":29,"value":73},{"type":24,"tag":25,"props":314,"children":315},{},[316,318,323,325,331,333,338,340,345],{"type":29,"value":317},"The site does not stop at the landing page. A ",{"type":24,"tag":32,"props":319,"children":320},{},[321],{"type":29,"value":322},"Documentation",{"type":29,"value":324}," section (",{"type":24,"tag":306,"props":326,"children":328},{"className":327},[],[329],{"type":29,"value":330},"\u002Fdocs",{"type":29,"value":332},") is the working centre for anyone who wants to ",{"type":24,"tag":32,"props":334,"children":335},{},[336],{"type":29,"value":337},"read, copy, or adapt",{"type":29,"value":339}," the seven files: each layer is laid out with context, preview toggles, and links to the raw Markdown you can drop into your own agent setup. The ",{"type":24,"tag":32,"props":341,"children":342},{},[343],{"type":29,"value":344},"blog",{"type":29,"value":346}," (where you are now) is for longer essays, field notes, and the occasional personal aside—so the “spec” stays crisp while the story can stretch.",{"type":24,"tag":25,"props":348,"children":349},{},[350,352,357,359,364],{"type":29,"value":351},"Visually, the project commits to a ",{"type":24,"tag":32,"props":353,"children":354},{},[355],{"type":29,"value":356},"bold, brutalist palette",{"type":29,"value":358},": strong type (Archivo Black, Fraunces, Space Mono), heavy borders, hard shadows, and saturated colour that avoids generic “startup neutral.” That is not ornamentation alone. Documentation you live in for hours should feel ",{"type":24,"tag":32,"props":360,"children":361},{},[362],{"type":29,"value":363},"authored",{"type":29,"value":365},"—so visitors sense a human behind the decisions, not only a theme.",{"type":24,"tag":94,"props":367,"children":369},{"id":368},"how-this-fits-openclaw-resizes-and-personal-use",[370],{"type":29,"value":371},"How this fits OpenClaw, Resizes, and personal use",{"type":24,"tag":25,"props":373,"children":374},{},[375,377,382,384,389,391,396,398,403],{"type":29,"value":376},"The ecosystem around ",{"type":24,"tag":32,"props":378,"children":379},{},[380],{"type":29,"value":381},"capable agents",{"type":29,"value":383},"—tool use, memory, reasoning loops—is moving quickly. At ",{"type":24,"tag":32,"props":385,"children":386},{},[387],{"type":29,"value":388},"Resizes",{"type":29,"value":390},", refinements to rules, context windows, and guardrails directly affect ",{"type":24,"tag":32,"props":392,"children":393},{},[394],{"type":29,"value":395},"quality, cost, and trust",{"type":29,"value":397},". In ",{"type":24,"tag":32,"props":399,"children":400},{},[401],{"type":29,"value":402},"personal",{"type":29,"value":404}," projects, the same questions return—but with more freedom to experiment and a wider margin for failure.",{"type":24,"tag":25,"props":406,"children":407},{},[408,410,415,417,422,424,429,431,436],{"type":29,"value":409},"This site and the seven-file split are my hedge against two extremes: an ",{"type":24,"tag":32,"props":411,"children":412},{},[413],{"type":29,"value":414},"opaque monolith",{"type":29,"value":416}," of instructions, and ",{"type":24,"tag":32,"props":418,"children":419},{},[420],{"type":29,"value":421},"implicit knowledge",{"type":29,"value":423}," that lives only in model context. When something works or breaks, I want a ",{"type":24,"tag":32,"props":425,"children":426},{},[427],{"type":29,"value":428},"stable pointer",{"type":29,"value":430},"—a Soul file for voice, Memory for consolidated facts, Tools for what the agent may touch. The blog adds ",{"type":24,"tag":32,"props":432,"children":433},{},[434],{"type":29,"value":435},"narrative",{"type":29,"value":437},": why one trade-off beat another, which assumption failed, and which simplification paid off.",{"type":24,"tag":94,"props":439,"children":441},{"id":440},"what-we-builtand-what-it-gives-you-as-a-reader",[442],{"type":29,"value":443},"What we built—and what it gives you as a reader",{"type":24,"tag":25,"props":445,"children":446},{},[447,449,454],{"type":29,"value":448},"Below is a fuller picture of ",{"type":24,"tag":32,"props":450,"children":451},{},[452],{"type":29,"value":453},"what exists in this repository today",{"type":29,"value":455},", told from the perspective of someone opening the site for the first time. The goal is context: what you are looking at, and how the pieces relate.",{"type":24,"tag":457,"props":458,"children":460},"h3",{"id":459},"the-landing-story",[461],{"type":29,"value":462},"The landing story",{"type":24,"tag":25,"props":464,"children":465},{},[466,468,473,475,480,482,487,489,494,496,501,503,508],{"type":29,"value":467},"The home page is deliberately ",{"type":24,"tag":32,"props":469,"children":470},{},[471],{"type":29,"value":472},"sequenced",{"type":29,"value":474},", not a single wall of text. It opens with a clear ",{"type":24,"tag":32,"props":476,"children":477},{},[478],{"type":29,"value":479},"who this is for",{"type":29,"value":481},"—so you can decide in seconds whether the seven-file idea matches how you work. From there, an ",{"type":24,"tag":32,"props":483,"children":484},{},[485],{"type":29,"value":486},"architecture map",{"type":29,"value":488}," shows how Soul, Identity, Agents, User, Memory, Heartbeat, and Tools sit in relation to one another, without pretending the diagram is the whole truth. A ",{"type":24,"tag":32,"props":490,"children":491},{},[492],{"type":29,"value":493},"files grid",{"type":29,"value":495}," introduces each file on its own card: what it is for, what “good” looks like, and how it connects to the rest. Further down, a ",{"type":24,"tag":32,"props":497,"children":498},{},[499],{"type":29,"value":500},"session loop",{"type":29,"value":502}," section frames how I think about starting and closing a working session with an agent, and a ",{"type":24,"tag":32,"props":504,"children":505},{},[506],{"type":29,"value":507},"quick start",{"type":29,"value":509}," strips the path down to a handful of concrete steps.",{"type":24,"tag":25,"props":511,"children":512},{},[513,515,520],{"type":29,"value":514},"Each block is implemented as its own Vue component, not because frameworks demand it, but because ",{"type":24,"tag":32,"props":516,"children":517},{},[518],{"type":29,"value":519},"the same modularity I want in agent design",{"type":29,"value":521}," is easier to maintain when the site mirrors it. If you only need a fragment of the idea, you can still orient yourself without reading the entire vertical page in one pass.",{"type":24,"tag":457,"props":523,"children":525},{"id":524},"documentation-you-can-lift-into-your-workflow",[526],{"type":29,"value":527},"Documentation you can lift into your workflow",{"type":24,"tag":25,"props":529,"children":530},{},[531,533,541,543,548,550,555],{"type":29,"value":532},"The ",{"type":24,"tag":32,"props":534,"children":535},{},[536],{"type":24,"tag":306,"props":537,"children":539},{"className":538},[],[540],{"type":29,"value":330},{"type":29,"value":542}," route is where the seven starter files move from concept to ",{"type":24,"tag":32,"props":544,"children":545},{},[546],{"type":29,"value":547},"something you can actually use",{"type":29,"value":549},". The content is grounded in the same Markdown sources that ship as ",{"type":24,"tag":32,"props":551,"children":552},{},[553],{"type":29,"value":554},"downloadable templates",{"type":29,"value":556},": you are not reading a paraphrase that drifted from the files—you are seeing the spec that can live in your repo or in your agent’s context.",{"type":24,"tag":25,"props":558,"children":559},{},[560,562,568,570,581,583,588,590,595,597,602,604,609],{"type":29,"value":561},"Those canonical files start in ",{"type":24,"tag":306,"props":563,"children":565},{"className":564},[],[566],{"type":29,"value":567},"templates\u002F",{"type":29,"value":569}," and are ",{"type":24,"tag":32,"props":571,"children":572},{},[573,575],{"type":29,"value":574},"mirrored into ",{"type":24,"tag":306,"props":576,"children":578},{"className":577},[],[579],{"type":29,"value":580},"public\u002Ftemplates\u002F",{"type":29,"value":582}," during the build, so every ",{"type":24,"tag":306,"props":584,"children":586},{"className":585},[],[587],{"type":29,"value":311},{"type":29,"value":589}," you see documented has a ",{"type":24,"tag":32,"props":591,"children":592},{},[593],{"type":29,"value":594},"stable URL",{"type":29,"value":596}," you can share, fetch, or save. A ",{"type":24,"tag":32,"props":598,"children":599},{},[600],{"type":29,"value":601},"reading map",{"type":29,"value":603}," bundled with the templates helps someone new answer “what do I read first?” without guessing order. For me, that separation matters: documentation should be ",{"type":24,"tag":32,"props":605,"children":606},{},[607],{"type":29,"value":608},"portable and diffable",{"type":29,"value":610},", not trapped inside a CMS or a proprietary editor.",{"type":24,"tag":457,"props":612,"children":614},{"id":613},"this-blog-context-on-top-of-the-spec",[615],{"type":29,"value":616},"This blog: context on top of the spec",{"type":24,"tag":25,"props":618,"children":619},{},[620,622,627,629,634,636,641],{"type":29,"value":621},"Longer writing lives here—",{"type":24,"tag":32,"props":623,"children":624},{},[625],{"type":29,"value":626},"first-person, dated, tagged",{"type":29,"value":628},", and searchable from the blog index. Where the landing sells the shape of the system and ",{"type":24,"tag":306,"props":630,"children":632},{"className":631},[],[633],{"type":29,"value":330},{"type":29,"value":635}," carries the files themselves, these posts carry ",{"type":24,"tag":32,"props":637,"children":638},{},[639],{"type":29,"value":640},"intent, mistakes, and follow-ups",{"type":29,"value":642},". You might come for the templates and stay for a note on memory patterns; or you might read a post first and only then open Soul.md. Either direction is valid.",{"type":24,"tag":25,"props":644,"children":645},{},[646,648,653,655,660,662,667],{"type":29,"value":647},"Posts are written in ",{"type":24,"tag":32,"props":649,"children":650},{},[651],{"type":29,"value":652},"Markdown with structured metadata",{"type":29,"value":654}," (title, summary, date, tags, optional cover image). Some pieces may carry a short ",{"type":24,"tag":32,"props":656,"children":657},{},[658],{"type":29,"value":659},"author note",{"type":29,"value":661}," at the top when a personal framing helps; others stay neutral. Drafts can exist while I am still thinking out loud, without appearing in the public index until they are ready—so what you see listed is deliberately ",{"type":24,"tag":32,"props":663,"children":664},{},[665],{"type":29,"value":666},"published",{"type":29,"value":668},", not accidental scratch work.",{"type":24,"tag":457,"props":670,"children":672},{"id":671},"scripts-assets-and-the-small-things-that-make-sharing-work",[673],{"type":29,"value":674},"Scripts, assets, and the small things that make sharing work",{"type":24,"tag":25,"props":676,"children":677},{},[678,680,685,687,692,694,699,701,706],{"type":29,"value":679},"Behind the scenes, ",{"type":24,"tag":32,"props":681,"children":682},{},[683],{"type":29,"value":684},"build scripts",{"type":29,"value":686}," keep the template set in sync with the public copy and ",{"type":24,"tag":32,"props":688,"children":689},{},[690],{"type":29,"value":691},"generate a raster social image",{"type":29,"value":693}," from the site’s vector artwork, so when a link is shared it still looks like ",{"type":24,"tag":230,"props":695,"children":696},{},[697],{"type":29,"value":698},"this",{"type":29,"value":700}," project—not a blank or generic preview. None of that changes how you read the pages, but it is part of what makes the repository ",{"type":24,"tag":32,"props":702,"children":703},{},[704],{"type":29,"value":705},"shippable as a real site",{"type":29,"value":707},", not only a folder of notes.",{"type":24,"tag":94,"props":709,"children":711},{"id":710},"what-comes-next",[712],{"type":29,"value":713},"What comes next",{"type":24,"tag":25,"props":715,"children":716},{},[717,719],{"type":29,"value":718},"Later posts will go deeper: memory patterns, tool boundaries, OpenClaw session notes, lessons from Resizes, and experiments that did not pan out. If anything here helps you—or you believe a premise is wrong—I would welcome a message or a public thread where that conversation belongs. ",{"type":24,"tag":32,"props":720,"children":721},{},[722],{"type":29,"value":723},"Living documentation works best with a little dialogue around it.",{"type":24,"tag":725,"props":726,"children":727},"hr",{},[],{"type":24,"tag":25,"props":729,"children":730},{},[731,733,738],{"type":29,"value":732},"Thank you for ",{"type":24,"tag":32,"props":734,"children":735},{},[736],{"type":29,"value":737},"opening the site, reading this far, and taking an interest in what I have built",{"type":29,"value":739},". Consider this first post an open door: a work in progress, a point of view under revision, and an invitation to continue the conversation.",{"type":24,"tag":25,"props":741,"children":742},{},[743],{"type":24,"tag":32,"props":744,"children":745},{},[746],{"type":29,"value":747},"I will see you in the next one.",{"title":7,"searchDepth":749,"depth":749,"links":750},2,[751,752,753,760],{"id":96,"depth":749,"text":99},{"id":368,"depth":749,"text":371},{"id":440,"depth":749,"text":443,"children":754},[755,757,758,759],{"id":459,"depth":756,"text":462},3,{"id":524,"depth":756,"text":527},{"id":613,"depth":756,"text":616},{"id":671,"depth":756,"text":674},{"id":710,"depth":749,"text":713},"markdown","content:posts:welcome.md","content","posts\u002Fwelcome.md","posts\u002Fwelcome","md",[768,769],{"_path":4,"title":8,"date":10,"draft":6},{"_path":770,"title":771,"date":772},"\u002Fposts\u002F001-sabrina","Sabrina: seven-file B2B prospecting","2026-05-15",1778862828882]