Cursor에서 기능 구현을 위한 나만의 전체 워크플로우 (몇 달간의 시행착오 끝에 정립함)
my full workflow for building features in cursor. sharing because it took me months to figure out what works.
핵심 요약
Cursor를 단순 자동완성 도구가 아닌, 체계적인 프롬프트와 반복적인 검토를 통해 생산성을 극대화하는 5단계 워크플로우 공유.
- 사전 사고 과정 — 프롬프트 작성 전 2~5분간 접근 방식과 패턴을 미리 고민하여 결과물의 품질을 높임.
- 상세 프롬프트 작성 — 모호한 지시 대신 구체적인 요구사항과 디자인 토큰, 애니메이션 등을 명시하여 AI의 이해도를 높임.
- 코드 리뷰 방식 — AI가 생성한 코드를 마법처럼 여기지 않고 주니어 개발자의 PR을 검토하듯 한 줄씩 꼼꼼히 확인함.
- 반복적 수정 루프 — 처음부터 다시 생성하기보다 잘못된 부분을 짚어주며 작은 단위로 수정하여 효율을 높임.
Cursor를 사용한 지 7개월 정도 되었습니다. 시니어 프론트엔드 개발자이고 주로 React/TypeScript를 사용합니다. 초기에는 단순한 고급 자동완성 도구처럼 사용해서 별다른 감흥이 없었습니다. Cursor를 제대로 활용할 수 있는 워크플로우를 개발하는 데 시간이 좀 걸렸습니다. 혹시라도 누군가 학습 곡선을 줄이는 데 도움이 될까 싶어 공유합니다.
step 1: 프롬프트 작성 전 생각하기.
Cursor를 열고 바로 프롬프트를 입력하기 시작하지 않습니다. 저는 2~5분 정도 접근 방식을 고민합니다. 어떤 컴포넌트를 사용할지, 상태 관리는 어떻게 할지, 예외 케이스는 무엇인지, 어떤 기존 패턴을 따라야 할지 생각합니다. 이 고민하는 시간은 결과물의 품질을 10배 이상 높여주기 때문에 충분히 가치가 있습니다.
step 2: 상세한 프롬프트 작성하기.
대부분의 사람들이 이 단계를 건너뛰고 결과물의 품질을 탓합니다. "알림 컴포넌트 만들어줘"는 유용한 프롬프트가 아닙니다. "성공, 에러, 경고, 정보 유형을 지원하는 토스트 알림 컴포넌트를 만들어줘. 성공/정보 유형은 5초 후 자동으로 사라지고, 에러/경고는 수동으로 닫을 때까지 유지되어야 해. 테마 파일에 있는 기존 디자인 토큰을 사용해. 최신 알림이 위로 오도록 수직으로 쌓고, Framer Motion을 사용해서 나타나고 사라지는 애니메이션을 추가해." 이게 유용한 프롬프트입니다.
저는 이제 대부분의 프롬프트를 AI 음성 받아쓰기 도구인 Willow Voice를 사용해 말로 설명합니다. 타이핑할 때는 생략하게 되는 맥락이 말로 설명할 때는 자연스럽게 포함되기 때문입니다. 동료에게 업무를 설명하는 것과 같습니다. "자, 토스트 시스템이 필요한데 이렇게 작동해야 해..."라고 말하면 그 내용이 프롬프트가 됩니다. 타이핑하는 데 3분 걸릴 내용을 30초 만에 말할 수 있고, 말로 한 버전이 보통 더 많은 내용을 담고 있습니다.
step 3: 마법이 아닌 PR처럼 결과물 검토하기.
Cursor가 생성한 모든 줄을 읽습니다. 그냥 실행해보고 작동하는지 확인만 하지 않습니다. 코드를 읽어야 테스트가 놓칠 수 있는 미묘한 문제를 잡아낼 수 있습니다. AI가 만든 결과물을 실력은 있지만 우리 코드베이스를 잘 모르는 주니어 개발자가 보낸 PR을 검토하듯이 대하세요.
step 4: 작은 루프로 반복하기.
첫 번째 결과물이 80% 정도 맞다면 처음부터 다시 시작하지 않습니다. 잘못된 부분을 강조하고 Cursor에게 구체적인 후속 지시를 내립니다. "애니메이션 타이밍이 너무 빨라, 150ms 대신 300ms를 사용하고, 에러 유형은 배경색이 아니라 왼쪽에 빨간색 테두리를 넣어줘." 처음부터 다시 프롬프트를 짜는 것보다 작은 수정 사항을 반영하는 것이 훨씬 빠릅니다.
step 5: 직접 리팩토링하고 마무리하기.
Cursor는 기능을 빠르게 구현하게 해줍니다. 마지막 10%의 완성도(이름 짓기, 예외 케이스 처리, 코드 정리)는 여전히 제가 직접 합니다. Cursor가 한 번에 완벽한 프로덕션 코드를 만들어내길 기대하는 건 무리입니다. 85%까지 빠르게 도달하게 하고 나머지 15%를 직접 처리하는 것이 훨씬 낫습니다.
실제 적용 사례:
하루 종일 걸리던 기능 구현이 이제 3~4시간이면 끝납니다. 시간 절약은 step 2(상세한 프롬프트로 반복 주기 감소)와 step 4(재작성 대신 작은 수정)에서 옵니다.
여러분은 Cursor를 어떻게 사용하고 계신가요? 특히 근본적으로 다른 방식으로 성공을 거두고 계신 분이 있다면 궁금합니다.


