+ It concisely presents the core issues in the requested table format.
- It misclassifies XSS under item 1 and misses the absent invocation path.
Starts from invented APIs and stubbed-out functions, the two most common failures.
| Category | Development › Vibe coding |
|---|---|
| Tags | ReviewingDeveloperTableCode |
Review AI-generated code. ***The goal is what looks like it works and does not.*** Check: 1. **Functions, libraries, or options that do not exist** 2. Missing exception handling — especially external calls, files, network 3. In the requirements given below and not implemented 4. **Not in the requirements and added anyway** 5. Hardcoded values that will have to change 6. Security — input validation, exposed keys or passwords, authorization 7. **Handled only on the surface** — empty functions, comments with no implementation, `TODO` Output a table: location / problem / severity / action. Rules: - ***Speak on the premise that you have not run it.*** **Do not assert that it works.** - Mark anything you are unsure of as "needs checking". - **Start with 1 and 7.** They are the most common.
Generated code compiles-by-vibes: invented functions and empty stubs read as finished. This checks those first and never claims it ran.
Gemini is thorough but overly long; Claude is the most specific but has minor ordering and scope issues. ChatGPT is the most concise, though its classification and coverage are weaker.
+ It concisely presents the core issues in the requested table format.
- It misclassifies XSS under item 1 and misses the absent invocation path.
+ It most thoroughly covers event wiring, persistence, restoration, and failure cases.
- It places item 7 before item 1 and treats optional UX behavior as a defect.
+ It prioritizes items 1 and 7 and clearly identifies persistence and XSS issues.
- The unsolicited full implementation makes the response unnecessarily long.
| Criterion | ChatGPT | Claude | Gemini | Leader |
|---|---|---|---|---|
| Instruction following | 9 | 8 | 9 | Tie |
| Accuracy | 8 | 9 | 9 | Tie |
| Specificity | 8 | 10 | 9 | Claude +11% |
| Structure | 9 | 8 | 9 | Tie |
| Right length | 10 | 7 | 6 | ChatGPT +43% |
Scored 1–10 by gpt-5.6-sol with model names hidden (2026-09-24). This is an AI review, not a measurement.
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.
Requirements: 메모를 저장하고 목록을 보여주는 화면. 로그인 없음. 새로고침해도 남아야 함.
Environment: 브라우저만 (HTML+JS 단일 파일)
Code: <script>
let notes = [];
function add(){ notes.push(document.getElementById("t").value); render(); }
function render(){ document.getElementById("list").innerHTML = notes.map(n=>`<li>${n}</li>`).join(""); }
// TODO: 저장
</script>실행하지 않고 코드만 검토했습니다.
| 항목 | 위치 | 문제 | 심각도 | 조치 |
|---|---|---|---|---|
| 1 | add(), render() |
사용한 push, map, getElementById, innerHTML 등은 브라우저에서 존재하는 기능으로 보임. 다만 t, list 요소가 실제 HTML에 있는지는 needs checking |
낮음 | HTML 요소 존재 여부 확인 및 없을 때 예외 처리 |
| 1 | render() |
innerHTML에 사용자 입력을 그대로 삽입해 HTML/스크립트 주입(XSS)이 가능함 |
높음 | textContent로 <li>를 생성하거나 입력값을 HTML 이스케이프 |
| 7 | 마지막 줄 | // TODO: 저장만 있고 실제 저장 기능이 없음 |
높음 | localStorage.setItem()으로 저장하고 페이지 시작 시 localStorage에서 불러오기 |
| 3 | 전체 | 새로고침 후에도 메모가 남아야 한다는 요구사항이 구현되지 않음. 현재 notes는 새로고침 시 빈 배열로 초기화됨 |
높음 | 초기화 시 저장된 메모를 읽고, 추가/수정 시마다 저장 |
| 2 | add() |
DOM 요소가 없거나 접근에 실패할 때 예외 처리가 없음. 요소 존재 여부는 needs checking | 중간 | 요소를 확인한 뒤 처리하고, 잘못된 상태에 대한 오류 처리 추가 |
| 5 | add()/render() |
t, list라는 ID가 하드코딩되어 있음 |
낮음 | 요구사항 변경 가능성이 있으면 상수화하거나 요소 참조를 한 곳에서 관리 |
| 4 | 전체 | 로그인, 외부 라이브러리, 서버 통신 등 요구사항에 없는 기능은 추가되지 않음 | 해당 없음 | 조치 불필요 |
| 6 | 전체 | 로그인/권한 요구사항은 없고 비밀번호나 API 키 노출도 보이지 않음. 단, XSS 문제는 보안 문제에 해당함 | 높음 | 사용자 입력을 HTML로 직접 삽입하지 않도록 수정 |
| AI builder | |
| AI-Powered Personal Compliment & Coaching Engine | |
| Anime | |
| Business Engineer Dashboard Creator | |
| Dating Profile Optimization Suite |