Kiro와 AI 보조 개발의 미래
요약
AWS가 Code OSS 기반으로 구축한 AI IDE인 Kiro를 소개합니다. Kiro는 단순 코드 생성을 넘어 요구사항 정의부터 설계, 작업 생성으로 이어지는 명세 기반(spec-driven) 개발 워크플로우를 제공합니다.
핵심 포인트
- 명세 기반(spec-driven) 접근 방식으로 설계와 구현의 간극을 해소
- Spec, Plan, Bug Fix 등 전문화된 Kiro 에이전트 활용 가능
- AGENTS.md 파일을 통한 프로젝트 컨텍스트 및 기술 스택 최적화
- 요구사항 → 설계 → 작업으로 이어지는 체계적인 워크플로우 제공
저는 업무에 Kiro를 사용하기 시작했으며, 이것이 우리의 AI 코딩 워크플로우(workflow)를 어떻게 변화시키는지 보고 엄청난 인상을 받았습니다. 코드를 먼저 작성하고 나중에 리팩터링하는 방식(Copilot 및 ChatGPT를 사용하는 전형적인 루프) 대신, Kiro는 명세 기반 접근 방식(spec-driven approach)을 사용합니다.
Kiro 방법론 — 요구사항에서 기술 설계, 그리고 작업(task)으로 이어지는 과정 — 은 제가 GitHub Copilot으로 해결하려고 노력했던 과제를 완벽하게 해결해 줍니다. 저는 먼저 구조화된 지침을 정의한 다음 코드를 생성하는 방법을 원했는데, Kiro는 그 초기 계획 단계 전체를 저를 위해 자동화해 줍니다.
아래는 몇 주간의 실무 사용 후 느낀 Kiro에 대한 저의 첫 인상입니다. 현재 GitHub의 AI 도구를 사용 중이라면, Github Copilot으로 워크플로우를 강화하는 멋진 방법들에 관한 저의 다른 기사도 확인해 보실 수 있습니다.
Kiro란 무엇인가?
Kiro는 AWS가 VS Code의 오픈 소스 버전(Code OSS)을 기반으로 구축한 통합 개발 환경 (IDE)입니다. 따라서 VS Code의 모든 장점과 확장 기능(extensions)을 결합하면서도, 명세 기반 개발(spec-driven development)에 최적화된 내장 AI 도구를 제공합니다. 채팅 프롬프트(chat prompts)로부터 코드를 생성하는 전통적인 AI 어시스턴트와 달리, Kiro는 명세(specifications)에 먼저 집중합니다. 사용자가 청사진을 정의하고 이를 명확한 작업 목록으로 변환하면, 작업을 하나씩 실행할지 아니면 한꺼번에 실행할지를 결정하게 됩니다.
Kiro 에이전트 (Kiro Agents)
Kiro 에이전트는 Copilot 에이전트와 동일한 개념을 사용합니다. 즉, 도움을 받고 싶은 특정 작업에 따라 선택할 수 있는 자율적이고 전문화된 AI 어시스턴트입니다. Kiro에는 새로운 채팅 세션을 시작할 때 선택할 수 있는 몇 가지 내장 에이전트가 포함되어 있으며, 사용자만의 에이전트를 직접 생성할 수도 있습니다:
- Spec: 기능 요구사항, 기술 설계 및 작업(tasks)을 계획하는 계획 단계(planning phase)에 집중합니다.
- Plan: 코드베이스를 분석하여 사용자의 질문을 해결하고 코딩 워크플로우(coding workflow)를 조정하는 방법을 계획하도록 돕습니다.
- Bug Fix: 오류를 포착하고 즉각적인 수정을 적용하여 코드를 디버깅(debug)합니다.
참고: 사용 중인 Kiro 버전에 따라 에이전트 구성이 약간 다를 수 있지만, 이 글에서는 Spec 에이전트에 집중할 것입니다.
AGENTS.md
이 파일은 모든 채팅 상호작용에서 AI 도구에 의해 사용되므로, 제대로 설정해 두는 것이 가치가 있습니다. Kiro의 모든 잠재력을 끌어내려면 프로젝트 루트(project root)에 AGENTS.md 파일을 생성하세요. 이 파일에는 아키텍처 팀에서 제공하는 것과 같은 주요 시스템 요구사항과 함께, 중요한 기술 스택(tech stack) 제약 조건 및 프로젝트에 필수적인 명령어를 포함해야 합니다. 간결하게 유지하고 과도한 설명이나 중복은 피하세요. 예시는 agents.md에서 확인할 수 있습니다.
Kiro specs
이 부분이 바로 Kiro가 진정으로 빛을 발하는 지점입니다. Kiro specs의 워크플로우(workflow)는 권장 경로인 **요구사항(Requirements) → 설계(Design) → 작업(Tasks)**을 따릅니다. 이 파일들은 어떠한 코드 변경이 이루어지기 전에 생성됩니다. 기술적으로는 설계(Design) 단계부터 바로 시작할 수도 있지만, Kiro는 요구사항(Requirements)부터 시작할 것을 강력히 권장합니다. 어떤 경로를 선택하든, Kiro는 이 파일들을 프로젝트 루트의 숨겨진 .kiro/ 디렉토리 내에 있는 전용 기능(feature) 폴더 안에 자동으로 저장합니다.
사용자의 브라우저가 비디오 태그를 지원하지 않습니다. 또한
출처: Kiro documentation.
여기에서의 아이디어는 기능(feature)별로 그룹화된 스펙(specs)을 만드는 것입니다. 예를 들어, 각 기능은 하나의 Jira 티켓에 대응할 수 있습니다. 이는 프로젝트의 핵심 지침을 포함하는 AGENTS.md와는 다릅니다. 이 경우, 우리는 Kiro에게 우리가 구현하고 있는 프로젝트의 특정 부분에 집중하도록 요청합니다.
아래에서 자세히 살펴보겠습니다.
Requirements.md (요구사항 명세서)
이것이 여러분의 진입점입니다: Kiro는 누구나 읽기 쉬운 사용자 스토리 (User Stories) 및 제약 조건 (Constraints) 목록을 명확하게 생성할 것입니다.
명세(Spec)를 작성하려면 Spec 에이전트가 활성화되어 있는지 확인하십시오 (위에서 설명한 대로 새로운 채팅 세션을 시작할 때마다 선택할 수 있습니다). 그런 다음 Kiro에게 요구사항을 정의하도록 요청하되, 이 단계에서 구현해야 할 사항과 구현해서는 안 될 사항을 명확하게 명시하십시오. 예를 들어, Jira 티켓의 요구사항을 기반으로 지침을 내릴 수 있습니다. Kiro는 이것이 새로운 기능인지 물을 것이며, 만약 그렇다면 관련 명세들을 .kiro/ 내의 새 폴더로 그룹화할 것입니다. 지침은 좁고 정밀하게 유지하십시오.
예를 들어, 여러 기능이 있는 웹 앱을 상상해 보십시오. AGENTS.md 파일에는 핵심 프로젝트 요구사항이 담기게 되며, 채팅 프롬프트를 통해 Kiro에게 다음과 같이 새로운 기능에 대한 요구사항을 생성하도록 요청할 수 있습니다: "새로운 기능에 대한 요구사항을 생성해줘. X에 집중해야 하지만, Y는 포함해서는 안 돼." 여기서 X와 Y는 포함하거나 제외할 항목들의 짧은 목록입니다.
초안이 준비되면, Kiro는 요구사항을 다듬고 싶은지 물을 것입니다. 만약 그렇다면, 문서를 개선하기 위한 일련의 정교화 질문(Refinement questions)을 던지거나, 여러분이 직접 필요한 변경 사항을 적용하도록 요청할 수 있습니다.
Design.md (설계 명세서)
요구사항이 확정되면, Kiro는 기술 설계 (Technical Design) 단계로 넘어갈 수 있도록 허가를 요청합니다. 요구사항을 바탕으로 Kiro는 여러분의 기술 스택 (Stack)에 맞춤화된 기술 청사진(Technical blueprints)을 생성합니다 — 데이터 모델 (Data models), 인프라 요구사항 (Infrastructure needs), 예시 코드 스니펫 (Code snippets), 그리고 컴포넌트 다이어그램 (Component diagrams) 등이 포함됩니다.
Kiro가 생성할 수 있는 구체적인 예시는 다음과 같습니다:
- 생성할 폴더 구조 및 파일 이름 (코드가 작성되기 전에 레이아웃을 검토할 수 있습니다).
- 해당 기능이 사용할 데이터 모델을 위한 TypeScript 인터페이스 (Interfaces) 또는 JSON 스키마 (Schemas).
- API 계약 (API contract) 예시 (엔드포인트, 요청/응답 형태) 또는 OpenAPI 조각 (Fragments).
- 에이전트들이 적용할 작고 실행 가능한 코드 스니펫 또는 마이그레이션 스크립트 (Migration scripts).
이전과 마찬가지로, 구현 작업(Implementation tasks)으로 넘어가기 전에 이러한 출력물들을 검토하고 필요한 조정을 수행하세요.
Tasks.md
이 마지막 단계에서, Kiro는 사용자의 기술 설계(Technical design)를 의존성을 인식하는 구현 작업 체크리스트로 변환합니다. 작업들은 단계별로 그룹화되어 있어 구현 흐름을 따라갈 수 있습니다 (데모는 위 영상을 참조하세요). 작업을 클릭하면 해당 작업을 적용할 수 있으며, UI에서 진행 상황을 확인할 수 있습니다. 작업이 진행 중일 때는 애니메이션 아이콘이 표시되고, 작업이 완료되면 체크 표시가 나타납니다.
작업은 하나씩, 그룹별로, 또는 한꺼번에 실행할 수 있습니다. 변경 사항이 발생할 때마다 검토하고 필요한 경우 개선을 요청할 수 있도록, 개별적으로 또는 작은 그룹 단위로 실행하는 것을 권장합니다.
추가적인 Kiro 기능
Kiro에는 다른 유용한 기능들이 포함되어 있습니다. 자세한 내용은 공식 문서(Official documentation)를 확인하세요.
-
Autopilot: AI가 변경 사항을 적용하는 방식을 제어할 수 있습니다. Autopilot 모드에서는 모든 과정을 자동으로 실행할 수 있고, Supervised 모드에서는 각 단계를 수동으로 승인할 수 있습니다.
-
Steering: Copilot과 유사하게, Kiro는 Markdown 파일의 프론트매터(Frontmatter)를 사용하여 특정 컨텍스트에 대한 규칙을 정의할 수 있게 해줍니다. 예를 들어, TypeScript 파일에만 적용되는 커스텀 지침(Custom instructions)을 만들 수 있습니다. 이러한 지침은 채팅 프롬프트를 통해 자동으로 또는 수동으로 적용할 수 있으며, 리포지토리(Repository), 워크스페이스(Workspace), 또는 글로벌(Global) 수준을 대상으로 할 수 있습니다.
-
Slash commands: 채팅에서 커스텀 지침을 실행할 수 있습니다. 예를 들어,
/create-commit-msg를 입력할 때마다 커밋 메시지를 생성하는 Steering 규칙이나 훅(Hook)을 만들 수 있으며, 이후 디프(Diff)를 분석하여 선호하는 패턴을 따르는 간결한 메시지를 제안하도록 할 수 있습니다. -
Checkpoints: Kiro는 채팅 전반에 걸쳐 체크포인트(Checkpoints)를 생성하므로, "Restore"를 클릭하여 코드 변경 사항과 Kiro의 컨텍스트(Context)를 모두 되돌릴 수 있습니다. 이는 본질적으로 실행 취소(Undo) 버튼과 같습니다.
-
Custom agents: 앞서 언급했듯이, Kiro에는 몇 가지 사전 구축된 에이전트(Agents)가 포함되어 있지만, 맞춤형 지침(Tailored instructions)을 가진 개발자 에이전트와 같이 특정 요구 사항에 맞는 자신만의 에이전트를 생성할 수도 있습니다. 이렇게 생성된 에이전트는 새로운 세션(Session)을 시작할 때 사용할 수 있습니다.
결론
Kiro에서 제가 가장 마음에 드는 점은 단순한 챗봇(Chatbot)이라기보다 사려 깊은 협업자(Collaborator)처럼 느껴진다는 것입니다. 특히 리팩터링(Refactoring)에서 계획(Planning) 단계로 넘어갈 때, Kiro는 제가 업무를 더 잘 구조화하고 작성하는 코드에 대해 더 의도적인 태도를 유지할 수 있도록 도와주었습니다. 만약 여러분이 AI를 활용하여 보다 가이드된 방식으로 빌드하는 것을 즐긴다면, 꼭 한 번 시도해 볼 가치가 있다고 생각합니다. 😊
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기