<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Olamide Olanrewaju</title>
    <description>The latest articles on Forem by Olamide Olanrewaju (@olyray).</description>
    <link>https://forem.com/olyray</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3682394%2F25a36914-7db9-4518-bf3f-9f65590cde97.png</url>
      <title>Forem: Olamide Olanrewaju</title>
      <link>https://forem.com/olyray</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/olyray"/>
    <language>en</language>
    <item>
      <title>Agentic Engineering: How to build Apps with AI Agents.</title>
      <dc:creator>Olamide Olanrewaju</dc:creator>
      <pubDate>Wed, 25 Feb 2026 20:45:21 +0000</pubDate>
      <link>https://forem.com/olyray/agentic-engineering-how-to-build-apps-with-ai-agents-4dhp</link>
      <guid>https://forem.com/olyray/agentic-engineering-how-to-build-apps-with-ai-agents-4dhp</guid>
      <description>&lt;p&gt;So, there's a lot of talk about agentic coding, working with AI agents, Claude Code, etc. &lt;/p&gt;

&lt;p&gt;While all these seems exciting, what I've not seen are how to guides on actually writing code with AI agents. &lt;/p&gt;

&lt;p&gt;Telling Claude "Build me a web app that is an Uber but for smartphones" is a bad way to use AI Agents. &lt;/p&gt;

&lt;p&gt;I have my own way of using AI Agents that I've gained from my own personal experiences so far. I'm going to share that, even though I'm by no means an expert (is anyone an expert at this point?)&lt;/p&gt;

&lt;p&gt;I'll be mostly using Github copilot as my reference point/example. I know there are more popular tools like Claude Code. But I personally use VSCode and whatever ideas I throw out is broad enough to be applicable to the coding tool of your choice. &lt;/p&gt;

&lt;h2&gt;
  
  
  Brainstorm
&lt;/h2&gt;

&lt;p&gt;Before you tell AI what to do, you need to first have an idea of what you're about to do. Telling an AI to "build me an app" straight off is a very bad idea. &lt;/p&gt;

&lt;p&gt;What tools are you going to use? What technical tradeoffs are you going to make? Are there better tools you can integrate or are you going to manually create a solution? &lt;/p&gt;

&lt;p&gt;I remember coding a web app in the early days(2023????) of AI and I used it to create an app. The agent went ahead to create an authentication system from scratch. &lt;/p&gt;

&lt;p&gt;It was only months later that I discovered that I could instead use tools like Clerk or Firebase for authentication. And they are so much better. &lt;/p&gt;

&lt;p&gt;The default agent on Copilot isn't ideal for brainstorming. You could ask it, "How do I build an authentication system" and it would just go ahead to start building one. &lt;/p&gt;

&lt;p&gt;There's the plan agent. Which is quite okay, but I prefer to have a custom agent because I can customize its behavior. &lt;/p&gt;

&lt;p&gt;The custom AI agent would be able to read your codebase but it can't make any changes to it. In its Agents.md, you'll instruct it to only answer questions, propose alternatives, and tradeoffs to solving a problem. &lt;/p&gt;

&lt;p&gt;For instance, if you tell it you want to build a web app, it would tell you about the tools you can integrate, the structure of the app, and so on and so forth. &lt;/p&gt;

&lt;p&gt;You can learn how to create custom agents in VsCode &lt;a href="https://code.visualstudio.com/docs/copilot/customization/custom-agents" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;For the text of the Agents.md for the custom agent, you can literally just ask the planning agent to help you create a prompt for an agent that you'll use to brainstorm. &lt;/p&gt;

&lt;p&gt;This is an example of my own Agent.md&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
name: Brainstorm
description: "Explore ideas, tools, and approaches for your app or feature"
argument-hint: "Tell me about the app or feature you want to build"
tools:
  [
    "read/readFile",
    "search/codebase",
    "search/fileSearch",
    "search/listDirectory",
    "search/textSearch",
    "web",
  ]
agents: []
disable-model-invocation: false
user-invokable: true
handoffs:
  - label: Create Implementation Plan
    agent: Olyray Plan Agent
    prompt: "Based on our brainstorming discussion, create a detailed implementation plan for this feature."
    send: false
---

# Brainstorming Agent

You are a creative technical brainstorming partner who helps developers explore different approaches, tools, and architectures for building apps and features.

## Your Role

Your primary goal is to have an **exploratory conversation** with the user. You don't write code or create files—you help them think through their ideas by:

1. **Understanding their vision** through clarifying questions
2. **Exploring possibilities** by suggesting various tools, frameworks, and approaches
3. **Discussing trade-offs** between different technical choices
4. **Surfacing considerations** they might not have thought about

## Workflow

### Phase 1: Discovery (Ask Clarifying Questions)

When a user describes an app or feature, **don't jump to solutions immediately**. Instead, ask 3-5 focused questions to understand:

- **Purpose &amp;amp; Goals**: What problem does this solve? Who are the users?
- **Scope &amp;amp; Constraints**: MVP vs full vision? Timeline? Team size?
- **Technical Context**: Existing stack? Performance requirements? Scale expectations?
- **Integration Points**: Does this connect to existing systems? Third-party APIs?
- **User Experience**: Web? Mobile? Desktop? Real-time requirements?

**Ask questions one topic at a time** rather than overwhelming them with a long list. Let the conversation flow naturally.

### Phase 2: Brainstorming (Explore Options)

Once you understand their needs, brainstorm **multiple approaches**:

#### Tool &amp;amp; Framework Suggestions

- Present 2-3 viable options for each layer (frontend, backend, database, etc.)
- Explain **why** each tool fits (or doesn't fit) their use case
- Highlight trade-offs: learning curve vs power, speed vs flexibility, cost vs control

#### Architecture Patterns

- Suggest relevant patterns (monolith, microservices, serverless, etc.)
- Discuss data flow and state management strategies
- Consider scalability and maintainability implications

#### Technology Stack Examples

For each approach, outline a potential stack like:

- **Frontend**: Next.js 15 (App Router) for SSR + client interactivity
- **Backend**: Next.js API routes (simple) OR separate Node/Express (scalable)
- **Database**: PostgreSQL (relational) vs MongoDB (flexible) vs Supabase (all-in-one)
- **Auth**: Clerk (easy) vs NextAuth (flexible) vs custom (control)
- **Real-time**: WebSockets vs Server-Sent Events vs polling

#### Developer Experience Considerations

- Build tools and local development setup
- Testing strategies (unit, integration, E2E)
- Deployment options (Vercel, Railway, AWS, etc.)
- Monitoring and error tracking

### Phase 3: Deep Dive (Discuss Details)

Based on the user's reactions and preferences:

- **Drill deeper** into specific aspects they're curious about
- **Compare alternatives** side-by-side when they're torn between options
- **Explore edge cases** and potential challenges
- **Suggest resources** (documentation, tutorials, example projects)

Use the available tools to:

- **Search the web** for latest tools, frameworks, and best practices: `#tool:web/fetch
- **Fetch documentation** from external sites and APIs: `#tool:web/fetch`
- **Explore GitHub repos** for examples and implementation patterns: `#tool:web/githubRepo`
- **Search the codebase** for existing patterns: `#tool:search/codebase` `#tool:search/textSearch`
- **Read relevant files** to understand current architecture: `#tool:read/readFile`
- **Explore project structure**: `#tool:search/listDirectory` `#tool:search/fileSearch`

## Conversation Style

- **Collaborative, not prescriptive**: Present options, don't dictate
- **Curious and engaging**: Ask follow-up questions to understand their thinking
- **Practical and pragmatic**: Focus on real-world constraints, not theoretical perfection
- **Encouraging**: Validate good ideas while gently highlighting potential challenges
- **Concise but thorough**: Be comprehensive without overwhelming

## What You DON'T Do

❌ Don't write implementation code
❌ Don't create files or modify the codebase
❌ Don't make unilateral decisions—collaborate
❌ Don't assume requirements—ask questions
❌ Don't provide a single "best" solution—explore multiple paths

## Example Interactions

### Good Response Pattern

**User**: "I want to add real-time notifications to my app"

**You**:
"Interesting! Let me understand your needs better:

1. What kind of notifications? (In-app toasts, push notifications, both?)
2. What triggers them? (User actions, system events, scheduled?)
3. How time-sensitive? (Must be instant or ~30sec delay acceptable?)
4. Expected volume? (100/day or 10,000/day per user?)

Once I understand these, I can suggest different approaches—from simple polling to WebSockets to third-party services like Pusher."

### After Clarification

**You**:
"Got it! For in-app notifications triggered by system events with ~5sec latency acceptable, here are three approaches:

**Option 1: Server-Sent Events (SSE)**
✅ Simple, built into browsers
✅ One-way server → client (perfect for notifications)
❌ Requires keeping connections open
📊 Best for: &amp;lt;1000 concurrent users

**Option 2: Polling with SWR/React Query**
✅ Easiest to implement
✅ Works everywhere (no special server requirements)
❌ Not truly real-time (15-30sec intervals)
📊 Best for: Non-critical updates, simple setup

**Option 3: WebSockets (e.g., Socket.io)**
✅ True bidirectional real-time
✅ Works for chat if you add it later
❌ More complex setup &amp;amp; infrastructure
📊 Best for: Heavy real-time features, growth path

Which direction resonates with your needs?"

## Remember

You're here to **explore possibilities**, not deliver solutions. The user should leave the conversation with:

- ✓ Clarity on their options
- ✓ Understanding of trade-offs
- ✓ Confidence to make informed decisions
- ✓ Excitement to start building

Let the conversation guide the depth—some users want high-level direction, others want deep technical discussion. Match their energy and curiosity.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The information you get in the brainstorm stage would be useful in the planning stage. &lt;/p&gt;

&lt;h2&gt;
  
  
  Plan
&lt;/h2&gt;

&lt;p&gt;For the planning stage, this is where you create the necessary documentation for the AI agent. AI agents don't retain memory. So, it can forget important things like your code architecture, tools you want to use, and so on. &lt;/p&gt;

&lt;p&gt;To mitigate this, you'll create documentation that you can always refer the AI to when you prompt it. &lt;/p&gt;

&lt;h3&gt;
  
  
  Instructions
&lt;/h3&gt;

&lt;p&gt;First thing you do is create the instructions.md for your agent. This is where you give it foundational instructions for your project. Personally, I put OWASP top ten security guidelines in my instructions.md. &lt;/p&gt;

&lt;p&gt;This means that whenever the agent is writing code, it takes the OWASP security recommendations into account. &lt;/p&gt;

&lt;p&gt;Thankfully, for every prompt, the agent in copilot makes sure to check the instructions.md. This way you can be sure that code security is applied to every code change made. &lt;/p&gt;

&lt;p&gt;Once again, you can just ask the agent mode to create the instructions.md for you. &lt;/p&gt;

&lt;h3&gt;
  
  
  Product Requirement Document
&lt;/h3&gt;

&lt;p&gt;The next thing you should create is the Product Requirement Document (PRD). This document would highlight what your app is about, its goals, the target user, and most importantly the implementation steps for building the app. &lt;/p&gt;

&lt;p&gt;To create it, just prompt the AI agent. Now, in the previous step, we already brainstormed. We now know the tools we want to use, the architecture and so on and so forth. Make sure to include that in your prompt. Also emphasise that the PRD should have implementation steps. &lt;/p&gt;

&lt;h3&gt;
  
  
  Design
&lt;/h3&gt;

&lt;p&gt;Another document you need to create is the UI style guide. AI is very bad at building professional looking UI. So, if we leave it to the AI, we end up with bland looking design. &lt;/p&gt;

&lt;p&gt;To mitigate this, I make use of the &lt;a href="https://github.com/anthropics/skills/tree/main/skills/frontend-design" rel="noopener noreferrer"&gt;frontend-design skill&lt;/a&gt;. Skills allow you to give your Agent extra capabilities. You can learn how to install skills for copilot &lt;a href="//code.visualstudio.com/docs/copilot/customization/agent-skills"&gt;here&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;There are also many online tools that let you install skills. For instance, you can find and install new skills at skills.sh. &lt;/p&gt;

&lt;p&gt;The good thing about skills is that they're interoperable. So a skill that you use for Copilot can also work for Claude Code. &lt;/p&gt;

&lt;p&gt;After you install the frontend-design skill, you should then prompt the AI agent to create a UI style guide for your project, using the frontend-design skill. &lt;/p&gt;

&lt;p&gt;This way, the design for your project will always be consistent. And whenever you're prompting your agent to make new designs, make sure to always reference the ui style guide and the frontend design skill.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Implement Step by Step
&lt;/h2&gt;

&lt;p&gt;Now that you have a PRD with the context and implementation steps, you don't just give everything to the Agent to create in one go. Rather you prompt each implementation step. For instance, you you take step 1 of your implementation plan and prompt the agent like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement step 1. Make sure to follow the ui style guide and the frontend-design skill. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, you have the opportunity to guide the agent on each step of the way. &lt;/p&gt;

&lt;p&gt;Trying to one-shot the app is just a good way for the agent to mix some things up. Software requirements change. Some things may come up. You might have a better idea, etc. Best to do it step by step. &lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging
&lt;/h2&gt;

&lt;p&gt;Mike Tyson once said, "Everyone has a plan until they get punched in the face." You're going to encounter errors and bugs. That is a given. You need to know how to handle them. &lt;/p&gt;

&lt;p&gt;With AI, it's much easier than in the days before AI came on board. &lt;/p&gt;

&lt;p&gt;If you encounter any errors, just tell the AI about it. Send it screenshots, copy the error code and tell the Agent about the error. It would try to correct the error. &lt;/p&gt;

&lt;p&gt;Most times, it would be able to. In Copilot, there are many models. I primarily use Sonnet 4.5 for day to day coding. I also use it for frontline debugging. So, if I encounter any issues, I ask Sonnet 4.5 to resolve it. &lt;/p&gt;

&lt;p&gt;It resolves most issues. But there are times where even Sonnet 4.5 struggles. If I notice Sonnet 4.5 struggling after 3 prompts, I gleefully pull up my sleeves and debug it the old fashioned way. &lt;/p&gt;

&lt;p&gt;Because to be honest, I do actually enjoy debugging and writing code. I just no longer do so because it's inefficient. &lt;/p&gt;

&lt;p&gt;Unfortunately 🥲, since Claude Opus 4.6 was released, I haven't had to do this. I'm yet to encounter any bug that Opus 4.6 is unable to resolve. &lt;/p&gt;

&lt;h2&gt;
  
  
  In closing
&lt;/h2&gt;

&lt;p&gt;So, there you have it. This is how I set up my Agentic coding workflow. I'm sure there are power users out there who may have a thing or two to add. Please feel free to do so in the comments. &lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I finally Deployed on AWS</title>
      <dc:creator>Olamide Olanrewaju</dc:creator>
      <pubDate>Thu, 08 Jan 2026 16:40:12 +0000</pubDate>
      <link>https://forem.com/olyray/i-finally-deployed-on-aws-3cn7</link>
      <guid>https://forem.com/olyray/i-finally-deployed-on-aws-3cn7</guid>
      <description>&lt;p&gt;My first experience with AWS went horribly. This was way back in like 2023 and AWS had a free tier for 12 months. &lt;/p&gt;

&lt;p&gt;I decided to take it for a spin to set up a server to host one of my hobby projects. &lt;/p&gt;

&lt;p&gt;So, I set up my free server and all was right with the world, till it happened. I got debited. &lt;/p&gt;

&lt;p&gt;I was surprised. I thought I was on a free tier. Why are they taking my money? &lt;/p&gt;

&lt;p&gt;I complained to their support and apparently I was using some other resources that were outside the free tier. A lot of stuff that I didn't understand were said. I just wanted the debit to end. &lt;/p&gt;

&lt;p&gt;The dude at the other end said no problem, they would end the debit. And he told me he did. &lt;/p&gt;

&lt;p&gt;Only for me to get debited again the next month. I went back to complain and apparently there was still some obscure service running that was billing me. Dude said he would deactivate it and I said no problem. &lt;/p&gt;

&lt;p&gt;Only for me to get debited the next month again. This back and forth continued for about six months until I was free of the shackles of AWS. I even tried nuking the account for good and AWS told me mafia style that if I nuked the account, they didn't want to see my face around their corner ever again. &lt;/p&gt;

&lt;p&gt;This whole experience left me wary of the whole enterprise. And I decided to deploy future hobby apps on platforms like Heroku or Render. &lt;/p&gt;

&lt;p&gt;But I noticed that having some experience with AWS was a requirement on a lot of job descriptions. So I decided to give it a spin again. &lt;/p&gt;

&lt;p&gt;Tried watching tutorials to get a lay of the land, only to be confronted with 12 hour videos on how to get a certification. I didn't give two hoots about that as I just wanted to take the thing for a spin. &lt;/p&gt;

&lt;p&gt;I finally speedran through the shortest video I could find - about 3 hours, and I felt I was ready to give it a try again. &lt;/p&gt;

&lt;p&gt;During my tutoring, I apparently discovered AWS Elastic Beanstalk. It promised to make all my wildest dreams come true. I even &lt;a href="https://www.youtube.com/watch?v=SrwxAScdyT0" rel="noopener noreferrer"&gt;watched the ad for beanstalk on YouTube&lt;/a&gt; and it was a sight to behold. &lt;/p&gt;

&lt;p&gt;The animation was smooth. It promised to make everything easy. Just push your code and AWS would handle all the bells and whistles. &lt;/p&gt;

&lt;p&gt;So I went for it, and proceeded to regret it. It was just errors upon errors. And for me to see the logs, I had to manually request it on the console and it would load for a while, etc. &lt;/p&gt;

&lt;p&gt;It got so bad at a point that I could no longer even see the logs. I requested on the console, nothing. I decided to used use the eb cli, nothing. I restarted the EBS environment, nothing. Terminated the EC2 instance, nothing. &lt;/p&gt;

&lt;p&gt;So after about 3 days of back and forth, I said fuck it and binned the whole thing. &lt;/p&gt;

&lt;p&gt;Decided to go back to basics and just set up a server on an EC2 instance. I set up a systemd service, fiddled with nginx, and so on and so forth. &lt;/p&gt;

&lt;p&gt;Lo and behold I was able to get everything up and running in about half a day. I have the backend of my AI chatbot running on EC2 and the frontend hosted for free on Vercel. You can &lt;a href="https://chat.djetlawyer.com" rel="noopener noreferrer"&gt;take it for a spin&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;What is the moral lesson? Well, I don't know, but I did sure learn a lot of technical lessons. Sometimes, going back to the basics is the right way to go.  &lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
