Skip to main content
AI Writing Automation for Mac | Echoo

Code to PR Description

Generate a clear, professional pull request description from your code changes. Explain what changed, why, and how to test it -- in seconds.

3 steps

Workflow Steps

  1. Paste the Code Diff

    Copy your git diff or the key code changes from your branch. Include file names and enough context for Echoo to understand the scope.

    command: code-improver
  2. Analyze the Changes

    Echoo reads the diff and identifies what was added, modified, or removed, and infers the purpose behind the changes.

    command: code-improver
  3. Write Professional Description

    Generate a structured PR description with a summary, list of changes, testing notes, and any migration steps.

    command: professional-tone

Example

Input

// auth.ts - added rate limiting to login endpoint - import { login } from './handlers'; + import { login, rateLimiter } from './handlers'; - app.post('/api/login', login); + app.post('/api/login', rateLimiter({ maxAttempts: 5, windowMs: 900000 }), login); // rateLimiter.ts - new file + export const rateLimiter = ({ maxAttempts, windowMs }) => { + const attempts = new Map(); + return (req, res, next) => { + const key = req.ip; + const record = attempts.get(key) || { count: 0, resetAt: Date.now() + windowMs }; + if (Date.now() > record.resetAt) { record.count = 0; record.resetAt = Date.now() + windowMs; } + record.count++; + attempts.set(key, record); + if (record.count > maxAttempts) return res.status(429).json({ error: 'Too many login attempts' }); + next(); + }; + };

Output

## Add Rate Limiting to Login Endpoint ### Summary Implements IP-based rate limiting on the `/api/login` endpoint to prevent brute-force authentication attacks. ### Changes - **New file:** `rateLimiter.ts` -- reusable rate limiting middleware - **Modified:** `auth.ts` -- applied rate limiter to login route ### How It Works - Tracks login attempts per IP address using an in-memory Map - Allows 5 attempts per 15-minute window - Returns `429 Too Many Requests` when limit is exceeded - Window resets automatically after expiry ### Testing 1. Attempt login 5 times with wrong credentials -- should succeed 2. Attempt a 6th time -- should receive 429 response 3. Wait 15 minutes (or mock timer) -- should reset and allow attempts again ### Notes - In-memory storage means rate limits reset on server restart. Consider Redis for production multi-instance deployments.

Tips

1

Include the full diff rather than cherry-picked lines for accurate descriptions.

2

Mention the ticket or issue number in your prompt so Echoo includes it in the PR description.

3

For large PRs, break the diff into logical sections and describe each one.

4

Ask for a "reviewer guide" if you want to highlight which files to review most carefully.

Frequently Asked Questions

Explore More

Ready to Try It?

Download Echoo and start automating text workflows with AI shortcuts.