100 Tips for Building a Personal AI Agent: From Cloud Prototype to Production

A developer spent six weeks building a personal AI agent from scratch — not a chatbot wrapper, but a persistent assistant that manages tasks, tracks deals, reads emails, analyzes business data, and proactively surfaces missed items. The project started in the cloud (Claude Projects with shared memory files, rich context windows, custom skills) then migrated to Claude Code inside VS Code, which unlocked local file access, git tracking, shell hooks, and scheduled headless tasks. The migration forced solving problems they didn't know existed. These 100 tips are the distilled result, with Claude 20x max usage shifting from 100% development / 0% real-world initially to 20% / 80% after six weeks.
Foundation & Identity (1–8)
- Write a Constitution, not a system prompt. A system prompt lists commands; a Constitution explains rules. When the agent hits an edge case no rule covers, it reasons from the Constitution instead of guessing. This separates agents that degrade gracefully from those that hallucinate confidently.
- Give your agent a name, voice, and role. Example: "Always first person. Direct. Data before emotion. No filler phrases. No trailing summaries." This eliminates hundreds of micro-decisions per session and creates consistency for audit.
- Separate hard rules from behavioral guidelines. Hard rules in a dedicated section — never overridden. Behavioral guidelines adapt. Mixing them makes both meaningless.
- Define your principal deeply. Who does the agent serve? What frustrates them? How do they decide? Example: "Decides with data, not gut feel. Wants alternatives with scoring, not a single recommendation. Hates vague answers."
- Build a Capability Map and a Component Map separately. Capability Map: what the agent can do (skills, integrations, automations). Component Map: how it's built (files, connections). Conflating them creates a useless document after month three.
- Define what the agent is NOT. "Not a summarizer. Not a yes-machine. Not a search engine. Does not wait to be asked." Negative definitions prevent drift toward generic helpfulness.
- Build a THINK vs. DO mental model. When uncertain → THINK (analyze, draft, prepare). When clear → DO (execute, write, dispatch). Never freeze. Default to action at the lowest stakes level, surface the result.
- Version your identity file in git.
git blameon configuration helps debug behavioral regressions that trace to specific edits.
Memory System (9–18)
- Use flat markdown files for memory — not a database. Readable, greppable, git-trackable, directly loadable by the agent. No infrastructure layer.
- Separate memory by domain, not by date. Files like
entities_people.md,entities_companies.md,entities_deals.md,hypotheses.md,task_queue.md. One file = one domain. Chronological dumps become unsearchable after week two. - Build a
MEMORY.mdindex file. Single index listing every memory file with a one-line description. Agent loads index first, pulls specific files on demand. Keeps context window usage predictable. - Distinguish "cache" from "source of truth" — explicitly. Mark every cache file with
last_sync:timestamp. For example, localdeals.mdis a cache of the CRM; the CRM is the SSOT.
📖 Read the full source: r/ClaudeAI
👀 See Also

Setting Up MCP Servers in llama-server Web UI: A Practical Guide
A Reddit user shares specific steps to configure MCP servers in llama-server's web UI, including installing uv, creating a config.json file with server definitions, running mcp-proxy, and modifying URLs for proper integration.

Fix for Claude VS Code Extension Error: 'command claude-vscode.editor.openLast not found'
The Claude VS Code extension version 2.1.51 contains a breaking bug that causes the error 'command claude-vscode.editor.openLast not found'. The workaround is to downgrade to version 2.1.49.

Leveraging Agent Skills for Writing CUDA Kernels with Upskill
Hugging Face introduces a practical approach to upskill models for writing CUDA kernels using the new Upskill tool, improving model efficiency through agent skills.

Recover deleted Claude Desktop conversations from Chromium cache
Immediately quit Claude Desktop, find the Chromium blockfile cache at %APPDATA%\Claude\Cache\Cache_Data (Windows), then use Python packages ccl_chromium_reader and standard compression libs to extract HTTP response bodies containing your chat UUID.