โ˜ฐ Categories

๐Ÿ”ง AI App Improvement Loop Prompt

an expert software engineer, product designer, and QA analyst.

CategoryDevelopment โ€บ Coding
TagsAnalyzingReviewingDeveloperCode
Prompt
You are an expert software engineer, product designer, and QA analyst.

Your task is to continuously analyze my application and improve it step-by-step using an iterative process.

## Objective
Identify and implement one high-impact improvement at a time in the following priority:
1. Critical bugs
2. Performance issues
3. UX/UI improvements
4. Missing or weak features
5. Code quality / maintainability

## Process (STRICT LOOP)

### Step 1: Analyze
- Deeply analyze the current app (code, UI, architecture, flows).
- Identify ONE most impactful improvement (bug, UI, feature, or optimization).
- Do NOT list multiple items.

### Step 2: Justify
- Clearly explain:
  - What the issue/improvement is
  - Why it matters (impact on user or system)
  - Risk if not fixed

### Step 3: Proposal
- Provide a precise solution:
  - For bugs โ†’ root cause + fix
  - For UI โ†’ before/after concept
  - For features โ†’ expected behavior + flow
  - For code โ†’ refactoring approach

### Step 4: Ask Permission (MANDATORY)
- Stop and ask:
  "Do you want me to implement this improvement?"

- DO NOT proceed without explicit approval.

### Step 5: Implement (Only after approval)
- Provide:
  - Exact code changes (diff or full code)
  - File-level modifications
  - Any dependencies or setup changes

### Step 6: Verify
- Explain:
  - How to test the change
  - Expected result
  - Edge cases covered

---

## Continuation Rule
After implementation:
- Wait for user input.
- If user says "next":
  โ†’ Restart from Step 1 and find the NEXT best improvement.

---

## Constraints
- Do NOT overwhelm with multiple suggestions.
- Focus on high-impact improvements only.
- Prefer practical, production-ready solutions.
- Avoid theoretical or vague advice.

## Context Awareness
- Assume this is a real production app.
- Optimize for performance, scalability, and user experience.

What this prompt does

This prompt assigns an engineer, designer, and QA role for iterative app improvement. It limits each cycle to one suggestion and requires permission before implementation.

Model comparison

Gemini best follows the instructions with code-based reasoning. Claude is concrete but over-scoped, while ChatGPT is concise yet misreads a key metric and makes assumptions.

GeminiTop overall
42/ 50

๏ผ‹ Correctly identifies state contamination and races from the code.

๏ผ It overstates duplicate keys as crashes and assumes direct causality.

ChatGPT
39/ 50

๏ผ‹ Concise treatment of both data growth and DOM rendering costs.

๏ผ It misreads 3,000 daily as monthly and proposes too broad a scope.

Claude
37/ 50

๏ผ‹ Offers a practical plan spanning both frontend and API layers.

๏ผ Multiple issues and options violate the single-proposal question format.

CriterionChatGPTClaudeGeminiLeader
Instruction following869Gemini +13%
Accuracy677Tie
Specificity899Tie
Structure889Gemini +13%
Right length978ChatGPT +13%

Scored 1โ€“10 by gpt-5.6-sol with model names hidden (2026-09-24). This is an AI review, not a measurement.

Read full answers

We gave three models the same input and copied their answers unedited. Each ran in its CLI (an agent harness), and answers in the ChatGPT or Claude apps or on the web may differ. Outputs are in Korean.

Input used
[Pasted material]
์ €ํฌ๋Š” ์ค‘๊ณ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ '๋งˆ์ผ“๋‚˜์šฐ'(Next.js 14 + TypeScript, ๋ฐฑ์—”๋“œ NestJS, PostgreSQL)๋ฅผ ์šด์˜ ์ค‘์ž…๋‹ˆ๋‹ค.
์›”๊ฐ„ ํ™œ์„ฑ ์‚ฌ์šฉ์ž๋Š” ์•ฝ 12๋งŒ ๋ช…, ์ผํ‰๊ท  ์‹ ๊ทœ ์ƒํ’ˆ ๋“ฑ๋ก์€ 3,000๊ฑด์ž…๋‹ˆ๋‹ค.
์ตœ๊ทผ ์ƒํ’ˆ ๋ชฉ๋ก ํŽ˜์ด์ง€์˜ ๋ฌดํ•œ ์Šคํฌ๋กค์—์„œ ๋ Œ๋”๋ง์ด ๋А๋ ค์ง€๊ณ , ์ฑ„ํŒ… ์•Œ๋ฆผ์ด ๊ฐ„ํ—์ ์œผ๋กœ ์ค‘๋ณต ๋ฐœ์†ก๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ณด๊ณ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ํšŒ์›๊ฐ€์ž… ์‹œ ์ด๋ฉ”์ผ ์ค‘๋ณต ์ฒดํฌ API ์‘๋‹ต๋„ ํ‰๊ท  1.8์ดˆ๋กœ ๋А๋ฆฐ ํŽธ์ž…๋‹ˆ๋‹ค.
์•„๋ž˜๋Š” ์ƒํ’ˆ ๋ชฉ๋ก ์ปดํฌ๋„ŒํŠธ(ProductList.tsx) ํ•ต์‹ฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค:
```tsx
export default function ProductList({ category }: { category: string }) {
  const [products, setProducts] = useState([]);
  useEffect(() => {
    fetch(`/api/products?category=${category}`)
      .then(res => res.json())
      .then(data => setProducts(prev => [...prev, ...data.items]));
  }, [category]);
  return <div>{products.map(p => <ProductCard key={p.id} {...p} />)}</div>;
}
```
์ด ์•ฑ์„ ๋ถ„์„ํ•ด์„œ ๊ฐ€์žฅ ์ž„ํŒฉํŠธ ํฐ ๊ฐœ์„ ์ ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ œ์•ˆํ•ด์ค˜.
gpt-5.6-luna (codex CLI ยท ์—์ด์ „ํŠธ ํ•˜๋„ค์Šค) ยท Run on 2026-09-24

1๋‹จ๊ณ„: ๋ถ„์„

๊ฐ€์žฅ ์ž„ํŒฉํŠธ๊ฐ€ ํฐ ๊ฐœ์„ ์ ์€ ์ƒํ’ˆ ๋ชฉ๋ก์˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ยท๋ Œ๋”๋ง ๊ตฌ์กฐ๋ฅผ ์žฌ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ProductList์—๋Š” ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • category๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๊ธฐ์กด ์ƒํ’ˆ์„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋ˆ„์ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋‚˜ ์ปค์„œ๊ฐ€ ์—†์–ด ์‹ค์ œ ๋ฌดํ•œ ์Šคํฌ๋กค ์ œ์–ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์š”์ฒญ ์ค‘๋ณต ๋ฐฉ์ง€, ์š”์ฒญ ์ทจ์†Œ, ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€ ํŒ๋‹จ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ƒํ’ˆ์„ DOM์— ๊ณ„์† ๋ Œ๋”๋งํ•˜๋ฏ€๋กœ ๋ชฉ๋ก์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก ๋ Œ๋”๋ง๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธ‰์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ๋น ๋ฅด๊ฒŒ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ „ํ™˜ํ•˜๋ฉด ์ด์ „ ์š”์ฒญ ์‘๋‹ต์ด ํ˜„์žฌ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก์— ์„ž์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›” 3,000๊ฑด์˜ ์‹ ๊ทœ ์ƒํ’ˆ๊ณผ 12๋งŒ MAU ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฉ๋ก์„ ์˜ค๋ž˜ ํƒ์ƒ‰ํ• ์ˆ˜๋ก products ๋ฐฐ์—ด๊ณผ DOM์ด ๋ฌดํ•œํžˆ ์ปค์ ธ ์Šคํฌ๋กค ์ง€์—ฐ, ํ”„๋ ˆ์ž„ ์ €ํ•˜, ๋ชจ๋ฐ”์ผ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ด์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: ๊ฐœ์„  ์ œ์•ˆ

์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜๊ณผ ๊ฐ€์ƒ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ ๋™์ž‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ€๊ฒฝ ์‹œ ์ƒํ’ˆ ๋ชฉ๋ก๊ณผ ์ปค์„œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ตœ์ดˆ ์š”์ฒญ์€ cursor ์—†์ด ์ตœ์‹  ์ƒํ’ˆ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  3. ํ•˜๋‹จ sentinel์ด ํ™”๋ฉด์— ๋“ค์–ด์˜ค๋ฉด ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  4. hasNext๊ฐ€ false์ด๋ฉด ์ถ”๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  5. AbortController๋กœ ์ด์ „ ์นดํ…Œ๊ณ ๋ฆฌ ์š”์ฒญ์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
  6. @tanstack/react-virtual ๋“ฑ์œผ๋กœ ํ˜„์žฌ ํ™”๋ฉด ์ฃผ๋ณ€ ์ƒํ’ˆ๋งŒ DOM์— ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
  7. API๋Š” ๋‹ค์Œ ํ˜•ํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
{
  items: Product[],
  nextCursor: string | null
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชฉ๋ก ๋ฐ์ดํ„ฐ๋Š” ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ๊ฐ€์ ธ์˜ค๊ณ , ํ™”๋ฉด DOM์€ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ์œ ์ง€๋˜์–ด ๊ธด ๋ชฉ๋ก์—์„œ๋„ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์ด ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋Œ€์ƒ์€ ์ฃผ๋กœ ๋‹ค์Œ์ž…๋‹ˆ๋‹ค.

  • ProductList.tsx: ์ปค์„œ ์ƒํƒœ, ์ค‘๋ณต ์š”์ฒญ ๋ฐฉ์ง€, sentinel, ์š”์ฒญ ์ทจ์†Œ
  • ์ƒํ’ˆ ๋ชฉ๋ก API: cursor, limit, nextCursor ์ง€์›
  • ๋ชฉ๋ก ๋ Œ๋”๋Ÿฌ: ๊ฐ€์ƒํ™” ์ ์šฉ
  • ํ•„์š” ์‹œ PostgreSQL ์ƒํ’ˆ ์กฐํšŒ ์ธ๋ฑ์Šค ์ ๊ฒ€

๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชฉ๋ก ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ˆ„์ ๋˜๊ณ , ์นดํ…Œ๊ณ ๋ฆฌ ์ „ํ™˜ ์‹œ ์ž˜๋ชป๋œ ์ƒํ’ˆ์ด ๋…ธ์ถœ๋˜๋Š” UX ๋ฒ„๊ทธ๋„ ๊ณ„์† ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Do you want me to implement this improvement?

More in this category

12-Month AI and Computer Vision Roadmap for Defense Applications
2046 Puzzle Game Challenge
21st.dev component prompt
3D FACTORY
3D FPS Game