npm

12 개의 포스트

gitlab

GitLab 패치 릴리스: 19.2.2, 19.1.4, 19.0.6 | GitLab 문서 (새 탭에서 열림)

2026년 8월 12일 GitLab은 CE/EE용 패치 릴리스 19.2.2, 19.1.4, 19.0.6을 공개했다. 이번 릴리스에는 Analytics Dashboards, CI/CD, Duo Workflow, 프로젝트 권한, GraphQL API 등과 관련된 다수의 보안 취약점이 수정되었으므로, 영향을 받는 자체 관리형 GitLab은 즉시 업그레이드해야 한다. GitLab.com은 이미 패치가 적용되었으며, GitLab Dedicated 고객은 별도 조치가 필요 없다. ## 릴리스 대상과 업그레이드 권고 - 대상 버전: - GitLab 19.2 → 19.2.2 - GitLab 19.1 → 19.1.4 - GitLab 19.0 → 19.0.6 - CE와 EE 모두에 적용되는 수정이 포함되어 있다. - 별도의 배포 방식이 명시되지 않은 취약점은 Omnibus, 소스 설치, Helm Chart 등 모든 배포 유형에 영향을 준다. - 취약 버전을 사용하는 자체 관리형 설치 환경은 가능한 한 빨리 최신 패치 릴리스로 업그레이드해야 한다. - GitLab은 정기 패치 릴리스를 매월 둘째·넷째 수요일에 제공하며, 심각도가 높은 취약점에는 비정기 긴급 패치를 배포한다. - 보안 취약점의 상세 이슈는 패치된 릴리스 이후 90일이 지나면 공개된다. ## Analytics Dashboards의 XSS 취약점 - **CVE-2026-15217** - Analytics Dashboards의 표 셀 설정값을 제대로 무해화하지 않아 저장형 또는 반사형 XSS가 발생할 수 있었다. - CVSS 8.7. - **CVE-2026-15216** - Analytics Dashboards의 페이지네이션 컨트롤에 렌더링되는 사용자 제어 데이터의 검증이 부족했다. - 이를 통해 XSS가 발생할 수 있었으며 CVSS는 8.7이다. - 두 취약점의 영향 범위: - 18.2 이상 19.0.6 미만 - 19.1.4 미만의 19.1 버전 - 19.2.2 미만의 19.2 버전 - 두 문제 모두 HackerOne 버그 바운티를 통해 보고되었다. ## CI/CD 및 작업 확인 모달의 권한·XSS 문제 - **CVE-2026-15423** - Developer 권한 사용자가 필요한 push 권한 없이 보호 브랜치에서 CI/CD 파이프라인을 실행할 수 있었다. - 파이프라인 참조 검증 과정의 권한 확인이 부적절했던 것이 원인이다. - CVSS 8.5. - 19.0.6, 19.1.4, 19.2.2에서 수정되었다. - **CVE-2026-16627** - CI 수동 작업 확인 모달에서 HTML 콘텐츠를 제대로 정제하지 않아 권한 상승으로 이어질 수 있는 XSS가 발생할 수 있었다. - Developer 권한 인증 사용자가 공격을 수행할 수 있으며 CVSS는 7.7이다. - 19.2.2에서 수정되었다. ## Duo Workflow와 프로젝트 설정 권한 우회 - **CVE-2026-19228** - GitLab EE의 Duo Workflow Service에서 요청에 포함된 identity 정보를 적절히 검증하지 않았다. - 인증된 사용자가 AI 사용량을 다른 네임스페이스에 귀속시킬 수 있었다. - CVSS 8.5. - GitLab 내부 팀원이 발견했으며, 19.1.4와 19.2.2에서 수정되었다. - **CVE-2026-16494** - ProjectsController의 프로젝트 업데이트 엔드포인트에 권한 검사가 누락되었다. - 인증된 사용자가 상위 권한이 필요한 프로젝트 설정을 변경할 수 있었다. - CVSS 7.1. - GitLab EE의 19.1.4 및 19.2.2에서 수정되었다. ## GraphQL API의 서비스 거부 취약점 - **CVE-2026-7427** - GraphQL API의 JSON 파서가 비정상 입력을 충분히 검증하지 않았다. - 인증되지 않은 공격자가 특수한 입력을 보내 서비스 거부(DoS)를 유발할 수 있었다. - CVSS 5.3. - 18.5 이상 19.0.6 미만, 19.1.4 미만의 19.1, 19.2.2 미만의 19.2 버전이 영향을 받는다. ## Merge Request 및 외부 상태 검사 정보 노출 - **CVE-2026-6821** - Merge Requests API의 권한 검사가 누락되어 IP 기반 접근 제한을 우회할 수 있었다. - 인증된 사용자가 비공개 프로젝트의 Merge Request 일부 정보를 읽을 수 있었다. - CVSS 4.3. - GitLab EE 12.0부터 최신 패치 이전 버전까지 광범위하게 영향을 받는다. - **CVE-2026-4879** - 외부 상태 검사 API에서 권한 검사가 부족했다. - Developer 권한 사용자가 상위 권한으로 제한된 외부 상태 검사 설정을 조회할 수 있었다. - CVSS 4.3. - 16.0 이후 19.0.6, 19.1.4, 19.2.2 이전 버전에 영향을 준다. ## npm 패키지 메타데이터 권한 우회 - **CVE-2026-8667** - npm `dist-tags` 엔드포인트의 권한 검사가 부정확했다. - Developer 권한 사용자가 Maintainer 권한 없이 일부 패키지 레지스트리 메타데이터를 수정할 수 있었다. - CVSS 4.3. - 17.6 이후의 19.0.6, 19.1.4, 19.2.2 이전 버전이 영향을 받는다. 자체 관리형 GitLab 운영자는 사용 중인 메이저·마이너 버전에 맞춰 19.0.6, 19.1.4 또는 19.2.2로 즉시 업그레이드하고, 업그레이드 전후에 보호 브랜치·프로젝트 설정·API 접근 권한을 점검하는 것이 좋다.

github

npm 및 GitHub Actions의 공급망 공격 교란 (새 탭에서 열림)

npm과 GitHub Actions를 겨냥한 공급망 공격은 계정 탈취, CI/CD 취약점 악용, 자격 증명 탈취, 악성 패키지 확산을 연쇄적으로 결합한다. GitHub는 단일 방어 기능보다 공격 단계별로 핵심 연결고리를 끊는 다층 방어가 필요하다고 보고, npm과 GitHub Actions에 계정 보호·워크플로 권한 제한·캐시 보호·무자격 증명 배포 등의 기능을 도입했다. 목표는 공격을 완전히 제거하기보다 초기 침해와 권한 상승, 자격 증명 유출, 대규모 확산을 차단하고 탐지·대응 시간을 확보하는 것이다. ## 공급망 공격의 구조 - 공격은 대개 다음 단계로 진행된다. - 유지보수자 계정이나 프로젝트의 GitHub Actions 워크플로를 침해한다. - CI/CD 환경에서 더 높은 권한과 자격 증명을 찾는다. - 토큰과 계정 정보를 외부로 유출한다. - 탈취한 자격 증명으로 다른 패키지와 프로젝트를 연쇄적으로 감염시킨다. - 공격 방식은 다양하지만, 초기 침해·권한 상승·확산이라는 공통된 흐름을 가진다. - 따라서 하나의 보안 기능보다 공격 사슬의 영향력이 큰 지점을 여러 단계에서 차단하는 접근이 필요하다. ## 초기 침해 차단 - **고영향 npm 계정 보호** - 이메일 주소를 변경하거나 2FA 복구 코드를 사용한 고영향 npm 계정은 72시간 동안 읽기 전용 상태가 된다. - 피싱으로 계정을 탈취당하더라도 공격자가 즉시 악성 버전을 배포하지 못하게 한다. - 해당 기간 동안 유지보수자가 계정을 복구하거나 이상 행위를 확인할 수 있다. - **`pull_request_target`의 안전한 checkout 기본값** - 포크에서 제출된 풀 리퀘스트의 신뢰할 수 없는 코드를 워크플로가 실행하는 “pwn request” 취약점을 완화한다. - `actions/checkout`은 일반적으로 악용되는 트리거에서 포크의 비신뢰 코드를 checkout하지 않도록 변경됐다. - 관리자가 위험을 검토한 뒤 명시적으로 예외를 선택해야 하며, 기존 버전에도 변경 사항이 백포트됐다. - **워크플로 실행 주체와 트리거 제한** - 엔터프라이즈·조직·저장소 수준에서 누가 워크플로를 실행할 수 있는지 설정할 수 있다. - 허용할 워크플로 트리거 유형도 제한할 수 있다. - 이를 통해 Actions 인프라에 최소 권한 원칙을 적용하고 공격 표면을 줄인다. - **비신뢰 트리거의 Actions 캐시 읽기 전용화** - 공격자가 워크플로 실행 권한을 얻은 뒤 공유 캐시를 오염시켜 더 높은 권한의 워크플로를 공격하는 경로를 차단한다. - 신뢰도가 낮은 워크플로는 다른 워크플로와 공유되는 캐시를 수정할 수 없게 된다. - 결과적으로 릴리스·패키지 배포 워크플로의 고권한 자격 증명 탈취로 이어지는 권한 상승을 어렵게 만든다. ## 자격 증명 탈취와 유출 방지 - **장기 자격 증명 제거** - CI/CD 파이프라인에 저장된 장기 토큰은 공격자가 가장 먼저 노리는 대상이다. - npm Trusted Publishing은 장기 자격 증명 없이 패키지를 배포하도록 해 탈취 가능한 비밀 정보를 줄인다. - CircleCI도 Trusted Publishing 공급자로 추가되어, CircleCI 기반 배포에서도 장기 자격 증명 제거가 가능해졌다. - **Actions 네트워크 방화벽** - 기술 프리뷰 단계의 기능으로, Actions 실행 중 발생하는 모든 외부 네트워크 트래픽을 기록한다. - 악성 코드 다운로드나 새 도메인으로의 자격 증명 유출처럼 비정상적인 통신을 탐지하는 데 활용할 수 있다. - 향후에는 네트워크 외부 연결 제한과 정책 기반 차단을 지원해 유출이 발생하기 전에 공격을 막는 방향으로 확장될 예정이다. ## 악성 패키지 확산 억제 - **npm 단계적 게시(Staged Publishing)** - 패키지 배포 자격 증명만 가지고는 새 버전을 즉시 공개할 수 없도록 한다. - 배포된 패키지는 추가 승인과 npm CLI 또는 npmjs.com에서의 2FA 인증이 완료될 때까지 보류된다. - 선택적으로 활성화할 수 있으며, 자동화·CI/CD 자격 증명과 실제 배포 승인 절차를 분리한다. - 탈취된 배포 자격 증명으로 악성 버전을 대규모 배포하는 공격을 줄인다. ## 실용적인 권장 사항 npm 유지보수자는 고영향 계정 보호, Trusted Publishing, 단계적 게시를 검토하고, GitHub Actions 사용자는 포크 PR 처리 방식과 캐시 공유 구조를 점검하는 것이 좋다. 또한 워크플로 실행 주체를 최소화하고, Actions 네트워크 트래픽을 모니터링하면 자격 증명 유출과 연쇄 확산을 조기에 발견할 가능성을 높일 수 있다.

toss

es-toolkit, 사내 작은 라이브러리가 전세계적인 라이브러리가 되기까지 (새 탭에서 열림)

es-toolkit은 오래되고 비효율적인 lodash를 현대 JavaScript 환경에 맞게 대체하기 위해 시작된 유틸리티 라이브러리입니다. 불필요한 호환 코드를 제거하고 핵심 사용 사례에 집중한 결과, 함수 성능은 최대 10배 이상 향상되고 번들 크기는 최대 30배 이상 줄었습니다. 이후 `es-toolkit/compat`과 오픈소스 커뮤니티의 기여를 통해 Yarn, Recharts, Storybook 등 다양한 프로젝트에 채택되며 주간 NPM 다운로드 2천만 회를 넘어섰습니다. ## lodash의 한계와 es-toolkit의 시작 - lodash는 오래된 브라우저와 Internet Explorer를 지원하기 위한 방어적 코드가 많이 포함되어 있습니다. - `Array#map`처럼 현대 브라우저가 기본 제공하는 기능도 직접 구현해 코드가 불필요하게 커졌습니다. - ECMAScript Modules를 지원하지 않아 Tree-shaking으로 필요한 코드만 포함하기 어려웠습니다. - `lodash-es`는 ESM만 추가했을 뿐, 기존 lodash의 낡고 비효율적인 구현 문제는 그대로였습니다. - 토스 내부에서도 `@toss/utils`를 직접 운영했지만, 유틸리티 함수의 다양한 엣지 케이스를 관리하는 데 부담이 있었습니다. - 이에 따라 “lodash의 불필요한 로직을 제거해 더 빠르고 작은 라이브러리를 만들자”는 목표로 es-toolkit이 시작되었습니다. ## 성능과 번들 크기 개선 - lodash의 핵심 함수인 `throttle`, `debounce`, `uniq` 등을 현대적인 방식으로 다시 구현했습니다. - 함수별로 차이는 있지만 불필요한 로직을 제거한 결과 성능이 최소 2배에서 최대 10배 이상 향상되었습니다. - 오래된 브라우저 지원 코드와 중복 구현을 제거해 번들 크기가 최대 30배 이상 감소했습니다. - 현대적인 모듈 구조를 활용해 사용하는 함수만 번들에 포함할 수 있도록 했습니다. - 핵심 유스케이스에 집중해 모든 예외 상황을 처리하는 대신, 일반적인 사용 환경에서 작고 빠르게 동작하도록 설계했습니다. ## 오픈소스 커뮤니티의 확산 - 토스 프론트엔드 SNS를 통해 첫 버전을 공개한 뒤 국내 개발자들의 관심과 기여가 이어졌습니다. - 기여자들은 누락된 함수 구현, 버그 수정, 성능 최적화 등을 Pull Request로 보완했습니다. - 해외 개발자 커뮤니티에 소개된 후 수만 명이 저장소를 확인하고, 구현 방식과 개선점에 대해 활발히 논의했습니다. - 커뮤니티에서는 lodash를 es-toolkit으로 바꾸는 번들러 플러그인과 다른 라이브러리의 의존성을 교체하는 작업도 자발적으로 진행했습니다. - 외부 기여자로 참여한 이다용 개발자는 지속적인 코드 리뷰와 기여를 통해 JavaScript 및 API 설계 경험을 쌓았고, 이후 토스뱅크 입사로 이어졌습니다. ## `es-toolkit/compat`을 통한 마이그레이션 - es-toolkit은 주요 사용 사례에 집중했기 때문에 lodash와 함수 동작이 다른 경우가 있었습니다. - 단순히 import 경로만 바꾸면 런타임 오류가 발생할 수 있어 기존 프로젝트의 마이그레이션 부담이 컸습니다. - 이를 해결하기 위해 lodash의 인터페이스와 동작을 최대한 호환하는 중간 계층인 `es-toolkit/compat`을 제공했습니다. - 기존 코드를 크게 수정하지 않고 import만 변경해도 내부 구현의 현대화 효과를 얻을 수 있도록 했습니다. - 이 접근 방식으로 Storybook, Mermaid, Yarn Berry, Recharts 등 대규모 오픈소스 프로젝트의 채택이 늘었습니다. - 결과적으로 es-toolkit은 주간 NPM 다운로드 2천만 회 이상을 기록했습니다. ## 앞으로의 확장 방향 - 더 많은 JavaScript 라이브러리가 es-toolkit을 사용해 번들 크기와 실행 성능을 개선하도록 지원할 계획입니다. - `Map`과 `Set`의 필터링처럼 기존 내장 자료구조에서 다루기 불편한 기능을 추가하려고 합니다. - Promise 기반 비동기 코드에서 자주 사용하는 `delay` 같은 실용적인 함수도 제공합니다. - 브라우저뿐 아니라 Node.js, Deno, Bun 등 서버 환경을 위한 유틸리티로 영역을 넓히고 있습니다. - 최근 추가된 `exec`처럼 필요한 기능은 유지하면서도 경쟁 구현보다 작은 함수를 제공하는 것을 지향합니다. - 앞으로도 “80% 이상의 유스케이스에 최적화된 작고 빠른 구현”이라는 원칙을 유지할 계획입니다. 기존 lodash를 사용 중인 프로젝트라면 먼저 `es-toolkit/compat`으로 점진적인 교체를 검토하는 것이 현실적인 접근입니다. 이후 호환성이 필요 없는 코드부터 순수 es-toolkit 함수로 전환하면 성능과 번들 크기를 줄이면서도 마이그레이션 위험을 낮출 수 있습니다.

github

입문자를 위한 GitHub Copilot CLI: GitHub Copilot CLI 시작하기 (새 탭에서 열림)

GitHub Copilot CLI는 에이전트형 AI를 터미널에 통합해 코드 작성, 테스트 실행, 오류 수정 등을 지원하는 도구다. 이 글은 npm을 통한 설치부터 GitHub 인증, 폴더 권한 설정, 첫 프롬프트 실행까지의 시작 과정을 소개한다. 또한 프로젝트 분석, 엔드포인트 생성, Copilot Cloud Agent로 작업 위임 같은 활용 사례를 설명한다. ## GitHub Copilot CLI란? - Copilot의 에이전트 기능을 명령줄 환경에서 사용할 수 있게 해주는 도구다. - 저장소 전체 맥락을 바탕으로 파일을 탐색하고 코드를 작성할 수 있다. - 코드 빌드와 테스트 실행을 자율적으로 수행하며, 오류를 발견하면 스스로 수정할 수 있다. - 사용자는 작업을 요청한 뒤 결과를 검토하고 추가 변경을 지시할 수 있어, 다른 도구로 전환하지 않고 개발 흐름을 유지할 수 있다. - CLI에서 Copilot Cloud Agent에 작업을 위임하는 것도 가능하다. ## 설치 방법 Node.js가 설치되어 있다면 npm으로 전역 설치할 수 있다. ```bash npm install -g @github/copilot ``` - Windows에서는 WinGet, macOS에서는 Homebrew 등 패키지 관리자를 사용할 수도 있다. - 패키지 관리자별 정확한 설치 명령은 해당 도구의 문서를 확인해야 한다. ## 최초 실행과 인증 설치가 끝나면 터미널에서 `Copilot` 명령으로 실행한다. ```plaintext Copilot ``` 처음 사용하는 경우 `/login` 명령으로 GitHub 계정에 로그인한다. ```plaintext /login ``` 로그인 과정에서 다음 작업이 수행된다. - Copilot 클라이언트와 GitHub Copilot 계정을 연결한다. - GitHub 리소스에 접근할 수 있도록 읽기 전용 GitHub MCP 서버를 연결한다. ## 폴더 권한 설정 Copilot이 프로젝트를 분석하거나 파일을 수정하려면 해당 폴더에 대한 접근 권한을 부여해야 한다. - 현재 세션에서만 권한을 허용할 수 있다. - 같은 프로젝트에서 반복적으로 사용할 경우 권한 설정을 저장할 수 있다. - 파일을 생성하거나 수정하는 작업에서는 Copilot이 별도로 사용자 승인을 요청할 수 있다. - 권한을 부여한 뒤 자연어로 프로젝트 분석, 코드 작성, 테스트 등의 작업을 요청할 수 있다. ## 프로젝트 분석과 코드 생성 Copilot CLI는 저장소의 파일과 문서를 직접 탐색해 프로젝트 구조와 개발 관례를 파악한다. 예를 들어 다음과 같이 요청할 수 있다. ```plaintext Give me an overview of this project ``` - 주요 파일과 프로젝트 구성을 확인한 뒤 개요를 제공한다. - 새 기능을 요청하면 기존 문서와 코드 예제를 참고해 프로젝트 스타일에 맞추려 한다. - 예를 들어 카테고리 전체를 반환하는 새 엔드포인트를 추가하도록 요청할 수 있다. ```plaintext Let’s add a new endpoint to return all categories ``` - 파일 생성이나 변경 전에는 필요한 권한을 요청한다. ## Copilot Cloud Agent로 작업 위임 명확하게 정의된 작업은 CLI에서 Copilot Cloud Agent에 넘길 수 있다. ```plaintext /delegate Let’s deal with issue #14 to add the rest of the CRUD endpoints to games ``` 위임하면 Copilot이 다음 작업을 수행한다. - 현재 CLI 세션의 컨텍스트를 유지한다. - 새 브랜치를 생성한다. - 초안 상태의 Pull Request를 연다. - 백그라운드에서 요청된 변경 작업을 진행한다. - 작업 완료 후 사용자가 결과를 검토하도록 한다. ## 이후 학습할 기능 이 글은 입문 시리즈의 첫 번째 내용으로, 다음 주제들이 후속 글에서 다뤄질 예정이라고 안내한다. - 대화형 모드와 비대화형 모드 비교 - `-p` 플래그를 이용한 빠른 요약 - Copilot CLI의 슬래시 명령 - MCP 서버 연동 - CLI 사용법과 모범 사례 Copilot CLI는 터미널을 떠나지 않고 프로젝트를 이해하고 코드를 수정할 수 있게 해주는 도구다. 처음에는 작은 프로젝트 개요나 단순한 기능 추가부터 사용하고, 파일 변경과 권한 요청 결과를 직접 검토하면서 점차 작업 위임 범위를 넓히는 것이 좋다.

figma

Figma Make에서 더 많은 맥락과 제어력으로 빌드하기 | Figma Blog (새 탭에서 열림)

Figma Make가 **Make kits**와 **Make attachments**를 통해 디자인 시스템과 실제 프로젝트 자료를 반영한 프로토타입을 생성하도록 개선됐다. Make kits는 코드 패키지나 Figma 라이브러리의 컴포넌트·스타일·토큰과 사용 지침을 제공하고, attachments는 데이터·법률 문구·스크린샷 등 프로젝트별 맥락을 전달한다. 이를 통해 범용적인 초안에서 출발해 반복적으로 수정하는 대신, 실제 제품 구조와 제약에 가까운 결과물을 더 빠르게 만들 수 있다. ## AI 초안이 실제 제품과 어긋나는 문제 - 기존 AI 생성 UI는 레이아웃과 인터랙션은 그럴듯하지만 다음과 같은 문제가 있었다. - 팀의 실제 디자인 시스템 컴포넌트를 사용하지 않음 - 카피가 placeholder로 남음 - 예외 상황과 중요한 edge case가 반영되지 않음 - 프로덕션 코드의 구조와 다른 방식으로 구현됨 - 그 결과 초기 생성 속도는 빨라도, 리뷰 전에 디자인 시스템에 맞게 다시 작성하고 조정하는 데 많은 시간이 필요했다. - Figma는 이 문제의 원인을 생성 품질 자체가 아니라 **팀이 실제 개발에 사용하는 맥락의 부족**으로 설명한다. ## Make kits: 디자인 시스템을 학습시키는 패키지 - Make kit은 디자인 시스템의 컴포넌트나 스타일과, 이를 어떻게 사용해야 하는지 설명하는 세부 가이드라인을 하나의 재사용 가능한 패키지로 결합한다. - 다음과 같은 소스를 사용할 수 있다. - 공개 npm 레지스트리의 JavaScript 패키지 - Figma의 보안 비공개 레지스트리에 저장된 코드 패키지 - Figma 라이브러리의 스타일과 디자인 토큰 - 가이드라인은 단순히 “어떤 컴포넌트가 존재하는가”뿐 아니라 다음까지 전달한다. - 컴포넌트를 어떤 상황에 사용해야 하는지 - 컴포넌트가 어떤 구조와 패턴을 따라야 하는지 - 디자인 시스템의 규칙을 프로토타입에 어떻게 적용해야 하는지 - 따라서 Make는 일반적인 UI 요소를 조합하는 대신, 팀의 코드베이스와 가까운 구조로 프로토타입을 시작할 수 있다. ## Make kits가 팀 협업에 주는 효과 - 폼, 대시보드, 설정 화면, 온보딩 플로우 등 여러 팀이 공유하는 화면에서 일관성이 높아진다. - 여러 팀이 동시에 프로토타입을 제작해도 디자인 시스템에서 벗어날 가능성이 줄어든다. - 리뷰 전에 spacing, 컴포넌트 선택, UI 패턴을 다시 맞추는 작업이 감소한다. - 엔지니어 입장에서는 익숙한 컴포넌트와 코드 패턴을 바로 확인할 수 있다. - “이 부분은 커스텀 구현인가?”와 같은 확인 질문이 줄어들어, 디자인을 코드로 번역하는 시간보다 제안 자체를 검토하고 개선하는 데 집중할 수 있다. - Figma는 향후 Figma 라이브러리의 컴포넌트 구조를 더욱 정확히 재현하는 방향으로 Make kits를 발전시킬 계획이다. ## Make attachments: 프로젝트의 실제 맥락 반영 - 디자인 시스템만으로는 각 프로젝트의 고유한 요구사항을 모두 설명할 수 없다. - 실제 프로젝트에는 다음과 같은 정보가 추가로 필요하다. - 실제 사용자 데이터 - 마이그레이션 제약 - 예외 처리와 edge case - 규정 및 컴플라이언스 요구사항 - 브랜드 콘텐츠와 법률 문구 - Make attachments는 이런 자료를 긴 프롬프트로 요약하지 않고 원본 파일 형태로 Make에 전달한다. - 지원되는 자료에는 다음이 포함된다. - PDF와 Markdown 문서 - CSV·JSON 데이터셋 - 스크린샷과 이미지 - 브랜드 가이드라인 - 법률 문구 - 미디어 파일과 SVG - 코드 및 관련 프로젝트 파일 ## 실제 데이터와 제약을 반영하는 프로토타이핑 - 예를 들어 디지털 제품의 전체 온보딩 플로우를 만들 때는 다음 정보가 동시에 필요할 수 있다. - 실제 사용자 데이터 - 법률상 반드시 표시해야 하는 문구 - 여러 입력 검증 상태 - 정상 흐름 외의 예외 상황 - 첨부 파일 없이 프롬프트만 사용하면 Make가 법률 문구를 임의로 줄이거나, 검증 상태를 단순화하거나, 이상적인 정상 흐름만 생성할 수 있다. - 원본 PDF, 데이터셋, 스크린샷 등을 첨부하면 Make가 프로젝트 자료를 직접 참조하므로, 보다 현실적인 콘텐츠와 제약을 포함한 프로토타입을 만들 수 있다. ## 디자인 시스템과 프로젝트 자료의 결합 - Make kits는 **제품 전반에 공통으로 적용되는 규칙**을 제공한다. - Make attachments는 **특정 프로젝트에만 존재하는 데이터와 제약**을 제공한다. - 두 기능을 함께 사용하면 다음과 같은 흐름이 가능하다. - Make kits로 실제 코드 또는 Figma 라이브러리 기반의 컴포넌트 사용 - attachments로 실제 데이터, 콘텐츠, 법률 요구사항, 시각 자료 반영 - 생성 결과를 프로덕션 구조에 가깝게 유지하면서 프로젝트의 세부 조건까지 검증 - 결과적으로 프로토타입 제작은 “일반적인 UI 초안 생성”에서 “실제 제품 조건을 반영한 탐색과 검증”으로 이동한다. 실무에서는 공통 컴포넌트와 토큰을 Make kit으로 정리하고, 기능별 요구사항·데이터·법률 문구·예외 상태는 attachments로 함께 제공하는 방식이 효과적이다. 이렇게 하면 생성 후 대규모 수정에 쓰는 시간을 줄이고, 초기 단계부터 개발·디자인 리뷰에 적합한 프로토타입을 만들 수 있다.

github

GitHub 전반의 오픈 소스 공급망 보안 강화 (새 탭에서 열림)

공격자들은 GitHub Actions 워크플로를 침해해 API 키 같은 비밀을 탈취한 뒤, 악성 패키지를 배포하고 더 많은 프로젝트로 공격을 확산시키고 있다. 이에 대응하려면 Actions 워크플로를 CodeQL로 점검하고, 서드파티 액션을 커밋 SHA로 고정하며, 장기 비밀 대신 OIDC 기반 인증과 trusted publishing을 사용해야 한다. GitHub는 npm 악성코드 탐지와 Actions·npm 보안 로드맵을 강화하고 있지만, 오픈소스 생태계 전반의 지속적인 협력이 필요하다고 강조한다. ## GitHub Actions 워크플로가 공격의 출발점 - 최근 오픈소스 공급망 공격은 GitHub Actions 워크플로의 취약점을 찾는 방식으로 시작되는 경우가 많다. - 공격자는 워크플로에서 API 키, 토큰, 배포 자격 증명 등의 비밀을 탈취한다. - 탈취한 자격 증명으로: - 공격자가 통제하는 환경에서 악성 패키지를 배포하고 - 해당 패키지를 이용해 다른 프로젝트와 계정으로 공격을 확산한다. ## 지금 적용할 수 있는 Actions 보안 조치 - 공개 저장소에서 무료로 사용할 수 있는 **CodeQL의 GitHub Actions 분석 기능**을 활성화한다. - 워크플로 구현상의 보안 취약점과 보안 모범 사례 위반을 점검할 수 있다. - `pull_request_target`을 사용하지 않는다. - 외부 기여자의 코드가 높은 권한의 워크플로 컨텍스트에서 실행될 위험이 있다. - 서드파티 GitHub Actions를 전체 길이의 커밋 SHA로 고정한다. - 태그나 브랜치는 이후 다른 코드로 변경될 수 있지만, SHA 고정은 특정 코드 버전을 보장한다. - 이 변경은 저장소 관리자나 Dependabot이 수행해야 하며, 외부 Pull Request가 액션 버전 고정을 바꾸려 하면 주의해야 한다. - 사용자 입력을 셸 명령이나 스크립트에 직접 삽입하지 않는다. - 이 방식은 스크립트 인젝션으로 이어질 수 있다. - 침해된 의존성은 GitHub Advisory Database에서 확인한다. - Dependabot을 사용해 악성 또는 취약한 의존성에 대한 알림을 받는다. ## 비밀 대신 OIDC와 trusted publishing 사용 - 워크플로에 장기 보관되는 비밀을 넣는 대신, **OpenID Connect(OIDC) 토큰**을 사용할 수 있다. - OIDC 토큰에는 실행 중인 워크로드의 신원이 포함되므로, 클라우드 제공업체·패키지 저장소·호스팅 서비스가 해당 워크플로를 검증하고 권한을 부여할 수 있다. - GitHub와 OpenSSF는 이를 패키지 저장소의 **trusted publishing**으로 확산하고 있다. - 현재 npm, PyPI, NuGet, RubyGems, Crates 등 여러 저장소에서 지원된다. - trusted publishing의 장점: - 빌드 파이프라인에서 장기 비밀을 제거한다. - 패키지가 어떤 신뢰된 워크플로에서 배포됐는지 확인할 수 있다. - 패키지가 갑자기 trusted publishing을 중단하면, 탈취된 자격 증명을 이용한 공격 가능성을 조사하는 신호가 된다. ## npm의 악성 패키지 탐지 - npm에서는 매일 3만 개가 넘는 패키지가 배포된다. - GitHub는 모든 npm 패키지 버전을 악성코드 관점에서 검사한다. - 탐지 규칙은 공격 방식의 변화에 맞춰 지속적으로 개선된다. - 매일 수백 개의 신규 배포 패키지에서 악성 코드가 발견될 수 있으며, 실제 조치 전에는 사람이 양성 여부를 검토한다. - 오탐률이 1%만 되어도 매일 수백 개의 정상 패키지 배포가 중단될 수 있으므로, 자동 탐지와 사람의 검증 사이 균형이 중요하다. ## Shai-Hulud 이후의 보안 로드맵 - 2025년 말 발생한 Shai-Hulud 공격은 npm 보안 로드맵을 재정비하는 계기가 됐다. - GitHub는 다음 작업을 가속했다. - npm trusted publishing 확대 - 악성코드 탐지 및 제거 기능 강화 - 오픈소스 유지관리자와의 보안 요구사항 논의 - 보안 변경은 기존 워크플로를 수정하게 만들거나 하위 호환성을 깨뜨릴 수 있으므로, GitHub는 생태계가 원활하게 전환할 수 있도록 지원할 계획이다. - 최근 공격을 계기로 GitHub Actions 보안 로드맵도 재검토하고, 이미 진행 중인 보안 기능의 출시를 앞당기고 있다. ## 오픈소스 생태계의 공동 대응 - 오픈소스는 전 세계가 공유하는 공공재인 만큼 공격이 앞으로도 계속될 가능성이 높다. - GitHub는 npm과 GitHub Actions를 비롯해 향후 등장할 새로운 공격 경로까지 방어 범위를 확대하겠다고 밝혔다. - 효과적인 보안 기능을 만들기 위해 유지관리자와 커뮤니티의 피드백이 중요하다. 실무적으로는 먼저 CodeQL로 Actions를 검사하고, `pull_request_target` 제거·커밋 SHA 고정·스크립트 인젝션 점검을 진행하는 것이 좋다. 이후 가능하면 OIDC와 trusted publishing으로 배포 인증을 전환해, 탈취 가능한 장기 비밀 자체를 줄여야 한다.

toss

97% 더 작고 2배 더 빠르게: es-toolkit이 주간 다운로드 1,000만 건을 달성한 방법 (새 탭에서 열림)

es-toolkit은 lodash를 대체하기 위해 토스(Toss)에서 처음부터 다시 설계한 현대적인 JavaScript 유틸리티 라이브러리입니다. 최신 웹 표준인 ES Modules와 TypeScript를 기반으로 제작되어 lodash 대비 번들 크기는 최대 97% 줄이고 실행 속도는 2배 이상 높였습니다. 현재 마이크로소프트, IBM 등 글로벌 기업들이 도입하며 주간 1,000만 회 이상의 다운로드를 기록하는 등 차세대 표준 유틸리티로 자리 잡고 있습니다. ### lodash의 한계와 탄생 배경 * **구식 아키텍처:** lodash는 10년 전 JavaScript 환경에 맞춰 설계되어, 최신 웹의 표준인 ES Modules 기반의 트리 셰이킹(Tree-shaking)을 완벽히 활용하지 못합니다. * **불필요한 의존성:** lodash는 단일 함수를 임포트하더라도 내부적인 헬퍼 함수들이 함께 포함되어 번들 크기가 커지는 구조적 한계를 가집니다. * **현대적 엔진 최적화 미비:** V8이나 SpiderMonkey와 같은 현대적 엔진은 과거에 느렸던 패턴들을 최적화했지만, lodash는 하위 호환성 문제로 이러한 최신 성능 이점을 충분히 누리지 못합니다. ### 독보적인 번들 사이즈와 실행 성능 * **완전한 독립성:** 모든 함수가 처음부터 독립적으로 설계되어 숨겨진 내부 의존성이 없습니다. 예를 들어 주요 함수 5개를 사용할 때 lodash는 약 30KB를 차지하지만, es-toolkit은 1KB에 불과합니다. * **런타임 최적화:** 현대 JavaScript 엔진에 최적화된 패턴을 적용하여 대부분의 함수가 2배 이상 빠르며, 특정 함수(`omit`)의 경우 11배 이상의 성능 향상을 보여줍니다. * **실질적 절감 효과:** `sample` 함수의 경우 lodash 대비 번들 크기를 96%까지 줄이는 등, 실제 프로젝트의 Core Web Vitals 지표 개선에 직접적인 도움을 줍니다. ### TypeScript 우선 설계 및 호환성 * **정밀한 타입 추론:** 별도의 `@types` 패키지 없이 소스 코드와 타입 정의가 함께 제공되어 타입 정확도가 매우 높고, 복잡한 타입도 정확히 추론합니다. * **드롭인 교체 지원:** `es-toolkit/compat` 레이어를 통해 lodash와 100% 호환성을 보장합니다. 이는 Storybook, Recharts 등 대규모 오픈소스 프로젝트의 성공적인 마이그레이션으로 검증되었습니다. * **활발한 생태계:** 토스 프런트엔드 챕터의 오픈소스 위원회가 주도하며, `overlay-kit`, `use-funnel` 등과 함께 지속적으로 관리되고 업데이트됩니다. ### 손쉬운 마이그레이션 방법 * **단축 경로:** `package.json`의 의존성 설정에서 `lodash`를 `npm:es-toolkit`으로 별칭(alias) 지정하는 것만으로 코드 수정 없이 즉시 성능 이점을 얻을 수 있습니다. * **점진적 전환:** 단순한 임포트 경로 변경만으로도 도입이 가능하며, 대규모 코드베이스를 위해 공식 codemod 도구(`@es-toolkit/codemod`)를 제공하여 전환 비용을 최소화합니다. 번들 크기 최적화와 런타임 성능이 중요한 현대 프런트엔드 환경에서 lodash를 유지할 이유는 점차 사라지고 있습니다. 단 5분의 투자로 `package.json` 설정을 변경하여 즉각적인 성능 향상을 경험해 보길 권장하며, 특히 TypeScript를 활발히 사용하는 프로젝트라면 타입 안전성 측면에서도 es-toolkit은 최선의 선택이 될 것입니다.

github

Squad가 리포지토리 내에서 협업하는 AI 에이전트를 실행하는 방법 (새 탭에서 열림)

Squad는 GitHub Copilot 기반의 여러 AI 에이전트를 저장소 안에 직접 구성해, 설계·구현·테스트·문서화를 협업 방식으로 수행하게 하는 오픈소스 도구다. 복잡한 오케스트레이션 인프라나 고급 프롬프트 설계 없이 `squad init`만으로 팀을 구성할 수 있으며, 저장소 파일을 공유 메모리로 활용한다. 다만 완전한 자동화가 아니라 사용자가 최종적으로 모든 변경 사항과 풀 리퀘스트를 검토하고 병합해야 한다. ## 저장소 안에 구성되는 AI 개발팀 - 전역 설치: ```bash npm install -g @bradygaster/squad-cli ``` - 저장소별 초기화: ```bash squad init ``` - 초기화하면 리드, 프런트엔드 개발자, 백엔드 개발자, 테스터 등 역할별 에이전트가 생성된다. - 사용자는 자연어로 작업을 요청하고, 코디네이터 에이전트가 적절한 전문가에게 작업을 분배한다. - 각 전문가는 별도의 브랜치와 파일을 사용해 구현, 테스트, 문서화 등을 병렬로 진행한다. ## 에이전트 간 작업 조정과 독립적 검토 - 예를 들어 JWT 인증을 요청하면: - 백엔드 에이전트는 refresh token과 bcrypt를 포함한 인증 기능을 구현한다. - 테스트 에이전트는 테스트 코드를 작성하고 실행한다. - 문서화 에이전트는 변경 내용을 정리해 풀 리퀘스트를 생성한다. - 테스트 실패 시 원래 구현자가 자기 코드를 스스로 수정하지 못하도록 검토 프로토콜을 적용할 수 있다. - 다른 에이전트가 별도의 컨텍스트에서 문제를 수정하므로, 자기검토보다 독립적인 리뷰에 가깝다. - 사용자는 중간 결과를 모두 검토하기보다 내부 검증 과정을 통과한 풀 리퀘스트를 검토할 수 있다. - 에이전트가 잘못된 가정을 할 수 있으므로, 최종 검토와 병합은 여전히 사람이 담당한다. ## `decisions.md`를 활용한 공유 메모리 - 실시간 대화나 벡터 데이터베이스 대신 저장소의 `decisions.md`에 아키텍처 결정을 기록한다. - 라이브러리 선택, 명명 규칙, 데이터베이스 연결 방식 같은 결정이 구조화된 블록으로 누적된다. - 이 방식의 장점: - 결정 사항이 지속적으로 보존된다. - Git으로 버전 관리할 수 있다. - 에이전트가 어떤 근거로 작업했는지 추적할 수 있다. - 연결이 끊기거나 세션이 재시작되어도 컨텍스트를 복구할 수 있다. - 저장소 파일을 팀의 “공유 두뇌”로 사용하는 비동기 협업 모델이다. ## 컨텍스트 분할 대신 컨텍스트 복제 - 한 에이전트가 설계, 구현, 테스트, 관리까지 모두 맡으면 컨텍스트 창이 메타 작업으로 가득 차고 환각 가능성이 커진다. - Squad의 코디네이터는 실제 작업을 수행하지 않고 전문가를 호출하는 얇은 라우터 역할을 한다. - 각 전문가는 별도의 추론 호출과 컨텍스트 창을 사용한다. - 지원 모델에서는 에이전트 하나당 최대 약 200K 토큰의 컨텍스트를 활용할 수 있다. - 하나의 컨텍스트를 여러 역할이 나누는 대신, 각 에이전트가 필요한 저장소 컨텍스트를 독립적으로 복제해 병렬 추론한다. ## 파일 기반의 명시적 에이전트 기억 - 에이전트의 기억은 모델 가중치나 숨겨진 세션 상태에 의존하지 않는다. - `.squad/` 폴더에 다음과 같은 텍스트 파일을 저장한다. - **Charter**: 에이전트의 역할과 정체성 - **History**: 에이전트가 과거에 수행한 작업 - **Team decisions**: 팀 전체가 공유하는 결정 사항 - 이 파일들은 코드와 함께 버전 관리되므로 에이전트의 행동 근거를 확인할 수 있다. - 저장소를 복제하면 코드뿐 아니라 프로젝트에 맞게 온보딩된 AI 팀의 기억도 함께 가져올 수 있다. ## 다중 에이전트 개발의 진입 장벽 완화 - 기존 다중 에이전트 시스템은 오케스트레이션 계층, 프레임워크, 벡터 데이터베이스 등을 직접 구성해야 하는 경우가 많다. - Squad는 CLI 명령 두 번으로 저장소에 사전 구성된 팀을 추가한다. - 복잡한 프롬프트 설계나 별도의 중앙 인프라 없이 바로 작업을 위임할 수 있다. - 저장소에 남는 결정 기록과 에이전트 이력 덕분에 동작을 비교적 쉽게 점검하고 재현할 수 있다. 실용적으로는 반복적인 구현·테스트·문서화 작업이 많은 저장소에서 Squad를 시도해볼 만하다. 다만 AI가 생성한 모든 변경 사항을 자동 병합하기보다는, 풀 리퀘스트와 테스트 결과를 사람이 확인하는 협업 도구로 사용하는 것이 적절하다.

gitlab

GitLab 위협 인텔리 (새 탭에서 열림)

GitLab 위협 인텔리전스 팀은 북한 연계 위협 그룹이 수행하는 '전염성 인터뷰(Contagious Interview)'와 가짜 IT 개발자 취업 캠페인의 세부 수법을 공개하고, 이들이 GitLab 플랫폼을 어떻게 악용했는지 분석했습니다. 북한 해커들은 채용 담당자로 위장해 개발자들에게 악성 코드가 포함된 기술 과제를 실행하도록 유도하며, 이를 통해 자금 탈취와 자격 증명 절취를 시도하고 있습니다. GitLab은 2025년 한 해 동안 130개 이상의 관련 계정을 차단했으며, 이들의 인프라 분석을 통해 확보한 지표를 공유하여 보안 커뮤니티의 대응 역량 강화를 촉구했습니다. **전염성 인터뷰(Contagious Interview)의 실체** * **공격 방식:** 해커들이 구인 구직 플랫폼에서 채용 담당자로 위장해 개발자에게 접근한 뒤, 기술 면접을 빙자하여 악성 코드가 포함된 프로젝트를 내려받아 실행하도록 유도합니다. * **주요 악성코드:** 주로 BeaverTail과 Ottercookie로 알려진 JavaScript 기반의 악성코드 패밀리가 사용됩니다. * **피해 결과:** 개발자의 장비에 대한 원격 제어 권한을 획득하고, 암호화폐 지갑 정보나 로그인 자격 증명을 탈취하여 금융 자산 절도 및 내부 네트워크 침투의 발판으로 삼습니다. **2025년 캠페인 추세 및 주요 특징** * **공격 규모:** 2025년 한 해 동안 총 131개의 북한 연계 위협 계정이 차단되었으며, 특히 9월에 공격 활동이 정점에 달했습니다. * **인프라 활용:** 공격자의 90%가 Gmail 계정을 사용해 GitLab에 가입했으며, 탐지를 피하고자 소비자용 VPN이나 전용 VPS 인프라를 통해 접속했습니다. * **타겟 산업:** 주로 암호화폐, 금융, 부동산 분야의 개발자를 타겟팅했으나, 최근에는 AI 및 게임 산업으로도 범위를 넓히고 있습니다. * **외부 서비스 악용:** 악성 페이로드를 GitLab에 직접 저장하지 않고, Vercel과 같은 합법적인 호스팅 서비스나 커스텀 도메인을 활용해 외부에서 불러오는 방식을 취했습니다. **악성 코드 삽입 및 은닉 기술** * **환경 변수 위장:** `.env` 파일 내에 악성 페이로드 URL과 헤더 값을 Base64로 인코딩하여 일반적인 설정값처럼 보이게 위장합니다. * **동적 코드 실행:** `Function.constructor`를 사용하여 문자열 형태의 원격 콘텐츠를 실행 가능한 코드로 로드하는 커스텀 에러 핸들러 기법을 사용합니다. * **최신 변종 기법:** VS Code 작업을 통한 악성 쉘 명령 실행, 가짜 폰트 파일 내에 숨겨진 바이너리 데이터 디코딩, 프로젝트 실행 직전에 생성된 악성 NPM 종속성 활용 등의 수법이 관찰되었습니다. **가짜 IT 노동자 운영 사례** * **신분 위조 파이프라인:** 최소 135개의 가짜 페르소나를 생성하는 자동화된 파이프라인을 구축하여 전문적인 인맥을 형성하고 구인 제안을 수집했습니다. * **신분증 조작:** 도용된 미국 시민권자의 신분증에 자신의 사진을 합성하여 21개의 고유한 가짜 신분을 관리하는 사례가 발견되었습니다. * **글로벌 거점:** 러시아 모스크바 등 해외 거점에서 활동하며 미국 내 조력자를 모집하고, 제재를 피하면서 미국 기업으로부터 수익을 창출하고 있습니다. 개발자들은 신뢰할 수 없는 출처에서 제공된 기술 면접용 코드 프로젝트를 실행할 때 각별히 주의해야 합니다. 특히 `.env` 파일에 인코딩된 의심스러운 문자열이 있거나, 프로젝트 실행 시 외부 URL에서 콘텐츠를 불러오는 로더가 포함되어 있는지 철저히 검증하는 보안 습관이 필요합니다.

figma

Gemini 3를 (새 탭에서 열림)

Gemini 3 Pro가 Figma Make의 실험적 모델로 제공되며, 디자인을 작동하는 코드 기반 프로토타입으로 전환하는 능력을 보여준다. Figma의 초기 테스트에서 다양한 레이아웃·스타일·인터랙션을 빠르게 탐색하면서도 디자인 충실도를 유지하는 점이 강점으로 나타났다. Gemini 3 Flash는 빠른 아이디어 발상과 수정에 적합한 경량 모델로 함께 제공된다. ## Figma Make에서 Gemini 3 Pro 제공 - Figma는 AI 모델을 다음 기준으로 평가한다. - 원래 디자인을 얼마나 정확하게 구현하는가 - 반복적인 작업을 얼마나 줄여주는가 - 팀의 창의적 탐색 범위를 얼마나 넓혀주는가 - Gemini 3 Pro는 다양한 레이아웃, 시각적 스타일, 인터랙티브 패턴을 탐색하는 데 강점을 보였다. - Figma Make의 실험적 모델 설정에서 활성화할 수 있다. - Gemini 3 Flash는 성능과 속도에 초점을 둔 모델로, 빠른 아이디어 구상과 반복적인 디자인 수정에 적합하다. ## 디자인에서 코드로의 전환 - Figma Design에서 제작한 황금빛 나뭇잎과 짙은 적갈색 배경의 추수감사절 감사 보드를 Figma Make로 구현했다. - Gemini 3 Pro는 다음 작업을 수행했다. - 나뭇잎을 SVG로 생성 - 화면 위에서 자연스럽게 움직이는 물리 효과 구현 - 마우스를 올리면 감사 메시지가 표시되는 인터랙션 추가 - Supabase를 연결해 사용자가 감사 메시지를 제출하도록 구성 - 단순한 시각적 콘셉트가 데이터 저장과 사용자 입력을 포함한 인터랙티브 프로토타입으로 확장됐다. ## 하나의 기능, 여러 시각적 스타일 - 새해 전야 RSVP 페이지를 대상으로 스타일 변환 능력을 테스트했다. - 처음에는 다음과 같은 Y2K 스타일을 적용했다. - 복고풍 미래주의 - 어두운 크롬 질감 - 분위기 있는 시각 언어 - 실제로 작동하는 RSVP 폼 - 이후 같은 기능을 “콘크리트 포에트리” 스타일로 변경했다. - 강렬하고 제한적인 타이포그래피 - 브루털리즘적 긴장감 - 장식을 최소화한 구성 - 스타일이 크게 바뀌어도 RSVP 폼의 핵심 기능은 유지됐다. - 각 스타일에 맞춰 애니메이션과 인터랙션 세부 요소도 일관성 있게 조정됐다. ## 디자인 시스템과 컴포넌트 활용 - Gemini 3 Pro를 이미 구축된 디자인 시스템 안에서 테스트했다. - Figma Make의 Make kits와 npm import를 통해 공유 라이브러리와 컴포넌트를 활용할 수 있도록 구성했다. - UI3 라이브러리 기반의 FigJam 템플릿에 캔버스 배경 스타일 전환 기능을 추가하도록 요청했다. - 모델은 다음 결과를 만들었다. - 12가지 배경 스타일 구현 - UI3 컴포넌트 사용 - 배경 스타일 전환 인터랙션 추가 - 텍스처 간 애니메이션 적용 - 스티키 노트의 레이어링과 크기 변화 효과 구현 - 복잡한 설명 없이도 기존 시스템의 구성 요소를 활용하면서 새로운 기능을 프로토타이핑했다. ## 디자이너의 역할 확대 - AI는 디자이너를 대체하기보다 탐색 가능한 디자인 공간을 넓히는 도구로 제시된다. - 모델이 디자인 의도와 시스템을 더 잘 이해할수록 다음 작업이 빨라진다. - 다양한 스타일 시도 - 인터랙션 검증 - 디자인 시스템 기반 기능 실험 - 코드로 구현된 프로토타입 제작 - 속도와 창의성이 서로 충돌하기보다, AI가 반복 작업을 줄여 디자이너가 방향 설정과 가능성 판단에 더 집중하게 만든다는 관점이다. Gemini 3 Pro는 높은 시각적 충실도와 인터랙션 구현이 필요한 프로토타입 제작에 적합하고, Gemini 3 Flash는 빠른 시안 생성과 반복 수정에 활용하는 것이 좋다. 다만 실제 제품 개발 전에는 생성된 코드와 데이터 연결, 접근성, 디자인 시스템 준수 여부를 별도로 검토해야 한다.

figma

코드 레이어로 사이트를 인터랙티브 (새 탭에서 열림)

피그마(Figma)는 디자인 환경 내에서 커스텀 리액트(React) 코드를 활용해 역동적인 상호작용을 구현할 수 있는 ‘코드 레이어(Code Layers)’ 기능을 출시했습니다. 이 기능을 통해 디자이너는 복잡한 개발 지식 없이도 AI 채팅이나 직접적인 코드 수정을 통해 정적인 디자인을 실제 작동하는 웹 요소로 변환하고 실험할 수 있습니다. 결과적으로 디자인과 실제 제품 구현 사이의 장벽을 허물어, 별도의 개발 전달 과정 없이도 고도화된 애니메이션이나 기능적 컴포넌트를 피그마 사이츠(Figma Sites)에서 즉시 빌드할 수 있게 되었습니다. **코드 레이어를 활용한 인터랙션 구현** * 코드 레이어는 리액트 코드를 기반으로 구동되는 상호작용 요소로, 피그마 사이츠 내에서 기존 컴포넌트를 코드로 변환하거나 새롭게 생성할 수 있습니다. * 피그마 메이크(Figma Make)의 AI 기술을 활용하여 "꽃 이미지를 무한히 복제해서 드래그할 수 있게 해줘"와 같은 자연어 프롬프트만으로 복잡한 로직을 생성합니다. * 캔버스 위에서 바로 코드 레이어를 복제(Cmd + D)하여 여러 버전의 상호작용을 나란히 비교하고 실험하는 유연한 워크플로우를 제공합니다. **기존 디자인의 동적 변환 및 제작 방식** * 작업 중인 요소에 애니메이션(회전, 바운스 등)을 추가하거나, 마우스 호버 시 색상이 변하는 리플 효과 등 정적 이미지에 생명력을 불어넣을 수 있습니다. * 대출 계산기, 가격 추정기, 실시간 통계 카운터와 같이 단순한 프로토타입을 넘어 실제 로직이 작동하는 유틸리티 컴포넌트를 제작할 수 있습니다. * 단축키(E)를 사용하여 캔버스에 즉석에서 코드 레이어를 그려 넣고, AI에게 이모지 파티클 생성이나 이미지 갤러리 구축 등을 요청하여 빠르게 아이디어를 시각화합니다. **개발자 수준의 확장성과 재사용성** * **커스텀 속성 편집:** AI가 코드 기반의 속성(문자열, 숫자 등)을 자동으로 생성하며, 사용자는 코드 수정 없이도 패널에서 직접 값을 조정해 레이어의 동작을 변경할 수 있습니다. * **컴포넌트화:** 일반적인 피그마 프레임처럼 코드 레이어도 재사용 가능한 컴포넌트로 전환하여 여러 페이지나 팀 프로젝트에 공유할 수 있습니다. * **npm 패키지 지원:** `motion`이나 `@react-three/fiber`와 같은 외부 노드 패키지 매니저(npm) 라이브러리를 임포트하여 고난도의 3D 렌더링이나 정교한 모션 그래픽을 구현할 수 있습니다. 웹 디자인의 한계를 넓히고자 하는 디자이너라면 피그마 사이츠에서 제공되는 코드 레이어를 적극적으로 활용해 보시기 바랍니다. 특히 AI 프롬프트를 통해 기초 코드를 생성한 뒤, npm 패키지를 결합해 시중의 템플릿으로는 불가능했던 독창적인 사용자 경험을 직접 구축해 보는 것을 추천합니다.

figma

디자인 시스템을 위한 올바 (새 탭에서 열림)

Code Connect는 Figma의 Dev Mode에서 자동 생성된 CSS 대신 조직의 실제 디자인 시스템 코드를 보여줘 디자인 시스템 도입률을 높이는 도구다. 개발자는 목업과 연결된 컴포넌트의 올바른 코드와 사용 지침을 바로 확인할 수 있어 구현 속도와 일관성이 향상된다. 결과적으로 잘못된 컴포넌트 사용과 중복된 일회성 컴포넌트의 생성·유지보수를 줄이는 것이 목표다. ## 디자인 시스템 도입이 어려운 이유 - 디자인 시스템을 구축해도 개발자가 시스템의 모든 컴포넌트와 패턴을 알지 못하는 경우가 많다. - 일부 컴포넌트를 사용하더라도 의도된 가이드라인과 다르게 적용할 수 있다. - 디자인 시스템의 성공은 단순히 사용 여부가 아니라, 올바르고 일관되게 사용하는지에 달려 있다. - 디자인과 코드는 서로 다른 도구와 제약을 가진 별개의 작업 영역으로 발전해 왔기 때문에 연결 지점이 부족했다. ## 디자인과 코드의 연결 - 디자인은 무엇을 만들지 탐색하고 결정하는 데 초점을 두며, 코드는 이를 구조적이고 유지보수 가능한 형태로 구현하는 데 초점을 둔다. - Figma는 두 영역이 원활하게 오갈 수 있어야 한다고 보고, Code Connect를 그 연결을 강화하는 기능으로 소개한다. - 기존의 Auto Layout, Variables, Component Props, Dev Mode 등의 기능과 함께 디자인 시스템을 코드에 더 가깝게 통합하려는 흐름에 속한다. - 디자인 시스템 팀이 작성한 실제 구현 방식과 문서를 디자인 목업의 맥락 안에서 제공한다. ## Code Connect의 핵심 기능 - Dev Mode에 표시되는 코드 스니펫을 조직의 실제 디자인 시스템 코드로 사용자 지정할 수 있다. - 자동 생성 CSS가 아니라 프로젝트에서 사용하는 컴포넌트, 속성, 패턴에 맞는 코드를 개발자에게 보여준다. - 개발자가 목업에서 특정 요소를 선택하면 관련 코드와 사용법을 별도의 문서 검색 없이 확인할 수 있도록 한다. - 올바른 구현 예시와 디자인 시스템 사용 원칙을 함께 제공해 오용을 줄인다. - 디자인 시스템의 재사용을 촉진해 중복 컴포넌트와 일회성 구현의 생성을 줄인다. ## 개발자 워크플로에 맞춘 설치 방식 - Code Connect는 개발자가 익숙한 패키지 및 명령줄 기반 방식으로 설치·설정할 수 있다. - JavaScript와 TypeScript 프로젝트에서는 **npm**을 사용한다. - SwiftUI 프로젝트에서는 **Swift Package Manager**를 지원한다. - 설치 패키지와 설정 방법은 GitHub 저장소에서 제공된다. - 향후 더 많은 플랫폼을 지원해 기존 개발 환경에 자연스럽게 통합하는 것을 목표로 한다. ## 기대 효과 - 개발자가 디자인 시스템 컴포넌트를 더 쉽게 발견하고 사용할 수 있다. - 디자인에서 코드로 전환하는 과정이 빨라지고 구현 효율이 높아진다. - 실제 코드와 디자인 간의 차이를 줄여 제품 전반의 UI 일관성을 높인다. - 디자인 시스템 팀의 문서화와 모범 사례를 개발 작업의 적절한 시점에 전달할 수 있다. - 결과적으로 조직 전체의 디자인 시스템 채택률과 유지보수성을 개선한다. Code Connect를 도입할 때는 자주 사용하는 컴포넌트부터 실제 프로덕션 코드와 연결하고, 각 컴포넌트의 올바른 사용 예시와 속성 매핑을 함께 관리하는 것이 효과적이다. Primitives나 자동 생성 코드보다 조직의 표준 컴포넌트가 우선 노출되도록 구성해야 도입 효과를 극대화할 수 있다.