Landon Crabtree
homectfpentestinggithub
  • 🔖Landon's Blog
  • 2025
    • How to Use AI Agents for Faster, Smarter Development
  • 2024
    • 🏛️Is College Worth it for Cybersecurity?
    • A Review of OffSec's OSCP+
  • 2023
    • 🥳My Microsoft Summer 2023 Internship Experience
    • 📎The Issue of Extension-Based TLDs like .zip
    • 🥂2022 Wrapped
  • 2022
    • 📑Landon's Declassified Internship Survival Guide
    • 👽New AsyncRAT Variation Malware Analysis
Powered by GitBook
On this page
  1. 2025

How to Use AI Agents for Faster, Smarter Development

PreviousLandon's BlogNextIs College Worth it for Cybersecurity?

Last updated 2 months ago

AI is evolving rapidly, excelling not only at answering complex questions but also at programming. Now more than ever, creating an app or product no longer requires deep industry experience or technical expertise. With the right tools and an understanding of how to leverage them effectively, development becomes more accessible. This short blog highlights resources for increasing productivity while minimizing the need for extensive coding.

A coding assistant is an essential starting point. Several options are available, but this post will focus on some of the most notable ones as of February 2025.

  • - A fork of VSCode with AI integrations. Better autocomplete (Cursor Tab), a ChatGPT-like interface built in, and Composer: an autonomous agent that can create/edit multiple files and execute commands.

  • - A VSCode extension that provides an autonomous coding agent that can create and edit multiple files, execute commands, use the browser, and more. Also has "Plan" and "Act" mode, so you can plan features and the implementation without actually modifying any files.

  • - A fork of Cline with custom modes (QA engineers, product managers, UI/UX designers, etc), custom prompt support, and more to provide more control over your agents.

  • - A VSCode extension and CLI program (gh copilot) with similar features to that of Cursor.

  • - A docker container that gives users a web interface to interact with an AI agent that can create/edit files, execute commands, and self-correct (run a program, any errors? feed back to the agent, repeat).

The underlying functionality of these AI-powered agents remains consistent across different options. AI models operate within a "context window," typically around 120,000 tokens. When given a task such as "Create a function that does X," the agent processes the request by incorporating relevant context. For instance, with Cursor, it is possible to reference specific files or webpages to provide additional context for the response.

This significantly accelerates the coding process for several reasons:

  1. Reduced Context Switching: There’s no need to constantly switch between tabs or copy and paste from different files. Everything happens within the IDE (VSCode, Cursor, etc.), streamlining workflow and reducing distractions.

  2. Autonomy: Tools like Cursor, Cline, and Roo offer a high degree of autonomy. They can create and edit multiple files, execute commands (such as npm install <package>), and even access the internet to retrieve documentation, reducing manual effort.

  3. Optimized Prompting: Effective responses depend on well-structured prompts. These agents are configured with optimized prompts by default. With Roo, for example, different modes provide specialized prompts tailored for UI development, testing, and other tasks—eliminating the need to fine-tune prompts manually.

  • projectBrief.md -> Defines core requirements and goals

# Project Name
| Project Name is a mobile application designed to take a photo and use AI to summarize what is in the photo.

## Core Requirements
1. Allow users to create accounts.
2. Allow users to upload a photo from camera roll.
3. Use GPT Vision to summarize the photo.
4. Inform the user of what is in the photo.
  • productContext.md -> Why this project exists and what it aims to do

# Project Name

## Core Problems Solved
1. Photo summarization

## Ideal Audience
1. Technical people
  • activeContext.md -> Current work focus, recent changes, next steps, and considerations

# Active Context

## Current Work
Implementing the upload photo screen

## Recent Changes
1. Implemented the authentication middleware
    - Parent widget with child widget that gets rendered if authentication succeeds.
    - If authentication fails, navigator redirects to LoginScreen.
```dart
// Example Usage
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return const AuthMiddleware(
      child: _HomeContent(),
    );
  }
}
```
2. Implemented a "show password" toggle
    - Eye icon in the password input that when tapped, toggles obsure state
    - Eye icon changes from being closed to being opened
  • systemPatterns.md -> System architecture, key technical decisions, design patterns, component relationships

# System Patterns

## Architecture Overview
This product is broken into two components. This project specifically only focuses on the frontend mobile application.

### Frontend Mobile Application
The frontend mobile application is the core component of this project. It communicates to the [[Backend API]] for things like authentication, file upload, etc.
- Refer to Flutter's architecture guide @https://docs.flutter.dev/app-architecture/guide for app architecture best practices.

### Backend API
API documentation can be found via Swagger Docs: @http://localhost:8080/swagger-docs
Any authenticated routes should have an "Authorization" header in the format: "Authorization: <token>"
The backend API base URL is https://super-cool-api.example.com.

## Key Technical Decisions
- Only plan to release on iOS, so if a library doesn't support Android SDK that is fine.

## Design Patterns
- Generate unit tests in `/test/` for any functions or widgets created.
- Gracefully handle errors by using try catch blocks and show errors with an error modal.
- Use optimistic states where possible for user interactions, such as buttons. 
- Follow Flutter best practices for things like naming conventions, file structure, etc. 
  • techContext.md -> Technologies used, development setup, dependencies

# Technical Context

## Technology Stack

### Frontend Mobile Application
- Flutter
- secure_storage for storage of authentication tokens
- shared_preferences for storage of non-sensitive keys (ie: theme)
- dio for API calls

## Development Setup
- Developing on a macOS system and testing using Simulator and physical iOS device

## Development Pipeline
1. `flutter pub run build_runner`
2. `flutter analyze`
3. `flutter test`
4. `flutter build ios`
  • progress.md -> What works, what's left to build, known issues

# Project Progress

## Completed Features

### Authentication
✅ Login screen with email/password 
✅ Register screen with email/password/username
✅ API calls to authentication backend
✅ Storage of session tokens
✅ Authentication middleware to protect screens and redirect user to login if auth fails

## In-Progress Features
❔ Upload photo screen
❔ Camera roll permission intents / prompt

## Incomplete Features
❌ Uploading of photo to the backend for summarization

As the project expands, additional contexts can be incorporated, such as API documentation, testing strategies, and deployment procedures. Regular updates to the memory bank are crucial, especially when significant changes are made. The agent should be instructed to refresh these documents periodically to ensure they reflect the most current state of the project. Once the context window begins to fill up, referencing the entire documentation folder allows the AI to regain a comprehensive understanding of the project's scope and objectives. This approach helps maintain consistency and prevents the loss of critical project guidelines over time.

With a clear understanding of what these agents can do, how their context functions, and how to maintain accuracy throughout a project, the focus now shifts to maximizing productivity—creating more while coding less. Just like human developers, AI agents perform best when tasks are broken down into manageable components. A broad request like "Create an Instagram app clone" is too vague and complex for both humans and AI (at least with current capabilities). The likely outcome would be a basic frontend with a single screen and no meaningful user experience. Instead, breaking the project into smaller, well-defined tasks leads to better results. How could an Instagram clone be divided into structured tasks?

  • Create a register screen that takes a username, email, and password

  • Create a login screen that takes an email and password

  • Create a profile screen that shows the users posts in a grid and also the users username, profile picture, number of followers, and number of following

  • Create a search screen with a search input

  • Create a home screen with a scrollable section of posts

Asking the agents to handle tasks one at a time leads to much better outcomes and brings the project closer to the desired end goal. This is where planning features, such as those offered by Cline or Roo, become incredibly helpful. They allow for the structured breakdown of problems, which is essential for complex projects. For example, a prompt like "According to @\documentation, break my project into tasks" can be a great starting point. From there, tasks can be refined and expanded with further prompts, like "Break those tasks into subtasks". By completing one task at a time, thoroughly testing it, and moving on to the next, the project progresses in an organized and efficient manner. This iterative approach, backed by the agent’s ability to stay on track with the project context, leads to higher quality results and smoother development.

Additional Tips

  • To preserve the context window and keep it focused on the most relevant information, you can use .cursorignore, .clineignore, or similar files, following the same syntax as a .gitignore. This is especially important for excluding sensitive files such as credentials or API keys, ensuring they are not inadvertently sent to external servers like Anthropic or OpenAI.

    • Use only camelCase for file and variable naming conventions.

    • Never use the unwrap keyword.

    • Generate unit tests for all new functions created.

    • Update @\documentation when significant changes are made and tasks are accomplished.

However, the limitations of the context window must be considered. In large codebases with thousands of lines per file, or after numerous agent tasks, the context window gradually fills up, leading to a loss of earlier context. For example, an initial instruction such as "You are designing a Flutter app, use clean UI and avoid default Material styles" may eventually fall out of scope. As a result, the agent may revert to using default Material styles once that instruction is no longer within its context. To mitigate this, leveraging a memory bank is essential. This typically involves creating a dedicated directory at the root of the project (e.g., /documentation, /memory_bank, etc.), structured in a way that ensures critical project guidelines and preferences remain accessible throughout development. More details on implementing a memory bank can be found in .

Cursor supports and Global Rules, which allow users to amend the system prompt. Similarly, Cline and Roo offer .clinerules. These rules ensure consistent guidelines for the agent’s responses. Some example rules include:

Additional prompting rule examples can be found .

For integrating AI agents into an existing project, tools like or can help summarize your existing codebase. Once summarized, the output can be fed to a large-context-window model, such as Gemini, which can generate the necessary files for your memory bank. This enables seamless integration without needing to retrain the agent or overwhelm the context window.

this guide
Project Rules
here
Repomix
Yek
Cursor
Cline
RooCode
GitHub Copilot
OpenHands