semantic-versioning

2 개의 포스트

line

ODW #6: Git 자동화 관점에서 본 MCP와 에이전트 스킬의 장단점 (새 탭에서 열림)

AI 에이전트 개발에서는 MCP 서버보다 에이전트 스킬이 구현과 아키텍처 측면에서 간단해지는 추세다. 글은 `skill-creator`를 활용해 Git 릴리스 자동화 스킬을 만들고, 요구사항을 구체화하는 과정을 실무 예제로 설명한다. 핵심은 명확한 프롬프트와 로컬 Python 스크립트를 결합해 반복 작업을 자동화하는 것이다. ## MCP에서 에이전트 스킬로의 전환 - MCP 서버 구축보다 에이전트 스킬이 구현하기 쉽고 구조가 단순하다. - 기본 개념이나 대규모 GitHub 예제는 많지만, 일상 업무에 적용하는 실용적인 안내는 부족하다. - 이 글은 스킬 자체의 개념을 깊게 설명하기보다 실제 예제를 만들며 활용 방법을 보여주는 데 초점을 둔다. ## Git 스마트 릴리스 자동화 스킬 - 현재 디렉터리의 Git 프로젝트를 자동으로 릴리스하는 스킬을 예제로 선택했다. - `skill-creator`를 사용해 스킬 정의와 실행 스크립트를 자동 생성한다. - 핵심 작업 흐름은 다음과 같다. - 가장 최근 태그 이후의 `git log` 분석 - 변경 사항을 요약해 `CHANGELOG.md` 최상단에 추가 - `pyproject.toml`의 버전 변경 - 변경 파일 커밋 - 새 버전 태그 생성 - 스킬은 현재 터미널 경로인 `pwd`를 기준으로 동작하는 로컬 Python 스크립트 형태로 구성한다. ## 명확한 요구사항의 중요성 - 에이전트가 엉뚱한 디렉터리를 수정하거나 과도하게 복잡한 계획을 세우지 않도록 목표와 제약 조건을 프롬프트에 구체적으로 작성해야 한다. - 초기 요구사항에는 다음 내용이 포함된다. - `v0.1.0` 등 최근 태그 이후의 커밋 조회 - `CHANGELOG.md`가 없으면 새로 생성 - 버전을 patch 단위로 증가 - `chore: release v[새 버전]` 형식으로 커밋 - 새 버전의 Git 태그 생성 - 현재 작업 경로에서만 실행 ## 대화형 요구사항 구체화 에이전트는 모호한 부분을 질문하고, 사용자는 답변을 통해 스킬 동작을 확정한다. - 버전 증가 방식 - patch, minor, major 모두 지원 - 사용자가 원하는 릴리스 유형을 선택 - 최초 릴리스 - 기존 태그가 없으면 `v0.1.0`부터 시작 - 변경 로그 - Keep a Changelog 형식을 따름 - 버전, 날짜, `feat`, `fix`, `docs` 등의 변경 분류를 포함 - 원격 저장소 - 로컬 커밋과 태그 생성 후 원격 저장소에도 push - 작업 디렉터리 안전성 - 커밋되지 않은 변경 사항이 있으면 작업을 중단 - 중단 이유를 사용자에게 설명 ## 생성된 스킬의 구조 - `git-smart-release/SKILL.md` - 스킬의 메타데이터와 에이전트가 따라야 할 실행 절차를 담는다. - `git-smart-release/scripts/smart_release.py` - Git 명령 실행, 파일 수정, 버전 변경 등 실제 작업을 수행한다. - `git-smart-release/evals/evals.json` - 스킬 동작을 검증하기 위한 테스트 케이스를 담는다. ## SKILL.md와 실행 스크립트의 역할 - 프런트매터 - YAML 형식의 메타데이터다. - 에이전트가 스킬을 언제 사용할지 판단할 수 있도록 짧은 설명과 검색 정보를 제공한다. - 마크다운 본문 - 스킬 사용이 결정된 뒤 읽히는 실행 매뉴얼이다. - 구체적인 절차와 워크플로를 정의한다. - `smart_release.py` - Git 상태 확인, 로그 분석, 파일 변경, 커밋과 태그 생성 등을 직접 처리한다. - LLM이 모든 파일 내용을 직접 읽고 수정하는 대신 결정된 작업을 코드로 실행해 토큰 사용과 오류를 줄인다. ## 실무 적용 방식 - 사용자는 “릴리스해 줘”처럼 자연어로 요청할 수 있다. - 에이전트는 요청에 맞는 버전 유형을 선택하고 스킬 지침을 따른다. - 스크립트는 먼저 작업 디렉터리가 깨끗한지 확인한다. - 변경 사항이 있으면 안전을 위해 중단하고, 문제가 없을 때만 변경 로그 작성부터 커밋·태그·원격 push까지 진행한다. - 글은 이후 Python 계산기 프로젝트를 대상으로 제작한 스킬을 테스트하는 시나리오로 이어진다. 반복적인 Git 릴리스 업무를 자동화하려면 요구사항, 예외 처리, 실행 범위를 프롬프트에 명확히 적고, 실제 파일·Git 조작은 검증 가능한 스크립트로 분리하는 것이 좋다. 특히 자동 push 기능은 되돌리기 어려우므로 dirty check와 실행 전 확인 절차를 함께 두는 것을 권장한다.

gitlab

AI 카탈로그: 에이 (새 탭에서 열림)

GitLab의 AI 카탈로그는 조직 내에서 AI 에이전트와 워크플로우를 중앙 집중식으로 관리하고 공유할 수 있는 핵심 저장소입니다. 사용자는 이를 통해 사전 구축된 솔루션을 검색하여 즉시 적용하거나, 팀의 특정 요구사항에 맞춘 맞춤형 에이전트 및 플로우를 생성하여 개발 협업 효율성을 극대화할 수 있습니다. 결과적으로 개발 생명주기 전반에 걸쳐 일관되고 재사용 가능한 AI 자동화 환경을 구축하는 것을 목표로 합니다. ## AI 카탈로그의 구성과 활용 방식 * **중앙 저장소 역할:** 조직 내에서 생성된 모든 AI 자산(에이전트 및 플로우)을 한곳에서 탐색하고, 복제하여 커스터마이징하거나 프로젝트에 즉시 활성화할 수 있습니다. * **에이전트(Agents):** 특정 태스크나 전문 분야(예: 디버깅, 코드 리뷰)에 특화된 대화형 AI 도구로, 시스템 프롬프트와 도구 접근 권한을 설정하여 동작을 정의합니다. * **플로우(Flows):** 여러 단계로 구성된 복잡한 자동화 프로세스로, YAML 구조를 통해 여러 에이전트를 조율하고 반복 가능한 멀티 스텝 워크플로우를 실행합니다. ## 맞춤형 자산 생성 및 가시성 관리 * **세밀한 권한 설정:** 에이전트 생성 시 코드, 이슈, 머지 리퀘스트(MR) 등에 대한 도구 접근 권한을 제한적으로 부여하여 보안성을 높일 수 있습니다. * **비공개(Private) 모드:** 특정 프로젝트 멤버나 소유자만 접근할 수 있는 설정으로, 민감한 워크플로우를 개발하거나 초기 실험 단계에서 유용합니다. * **공개(Public) 모드:** 인스턴스 내 모든 사용자가 검색하고 자신의 프로젝트에 활성화할 수 있도록 공유하여 조직 전체의 생산성을 높입니다. * **공유 모범 사례:** `security-code-review`와 같이 명확한 명명 규칙을 사용하고, 상세한 사용 사례와 전제 조건을 문서화하여 품질을 유지할 것을 권장합니다. ## 안정성을 보장하는 버전 관리 시스템 * **자동 의미론적 버전 관리(Semantic Versioning):** 시스템 프롬프트나 구성이 변경될 때마다 GitLab이 자동으로 버전을 업데이트(예: 1.0.0에서 1.1.0으로)하며, 각 버전은 불변(Immutable) 상태로 유지됩니다. * **버전 고정(Version Pinning):** 하위 프로젝트에서 에이전트를 사용할 때 특정 버전으로 고정되어, 카탈로그의 원본이 업데이트되더라도 기존 워크플로우가 예기치 않게 변경되는 것을 방지합니다. * **수동 업데이트 방식:** 새로운 기능이나 개선 사항을 적용하려면 사용자가 직접 업데이트 버튼을 클릭하고 변경 사항을 검토한 후 최신 버전으로 갱신하는 '옵트인(Opt-in)' 방식을 채택합니다. 효과적인 AI 도입을 위해 처음에는 비공개 모드로 에이전트를 생성하여 충분히 테스트한 후, 검증된 자산에 한해 문서화와 함께 공개 모드로 전환하여 조직 전체에 배포하는 전략을 추천합니다.