Community이미지github.com

0xtan0/skills

코드 기반의 클라우드/온체인 시스템 아키텍처 다이어그램, 네트워크 맵, IAM 역할, 릴리스 파이프라인, 데이터 보호 매트릭스를 포함한 짧은 클라이언트 프레젠테이션(HTML 아티팩트)을 구축합니다.

skills란 무엇인가요?

이 스킬은 개발자와 AI 에이전트가 코드(Terraform, 태스크 정의, 계약)를 직접 분석하여 시스템 아키텍처를 시각화하는 HTML 프레젠테이션을 생성합니다. '실행' 버튼이 있는 8개의 슬라이드로 구성된 프레젠테이션은 트리거 → 컴퓨팅 → 구성/시크릿 → 서명 → 대기열 → 체인으로 이어지는 주요 흐름을 애니메이션 블록 다이어그램으로 보여줍니다. 또한 VPC, 서브넷, 보안 그룹, NAT 게이트웨이, 인터넷 게이트웨이, CDN 오리진 등 네트워크 경로를 시각화하는 두 번째 다이어그램, 주요 IAM 역할과 정책을 설명하는 슬라이드, 브랜치 → 계정 및 앱 이미지 배포를 다루는 릴리스 경로 다이어그램, 데이터 보호 매트릭스, 계정/리전/저장소 다이어그램을 포함합니다. 모든 블록과 화살표는 실제 인프라 코드에서 추출한 정보로 뒷받침되며, 약 80% ASD-STE100 스타일의 간결한 텍스트와 AWS 아이콘을 사용합니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 시스템 설명, 아키텍처 다이어그램, 네트워크 맵, IAM 개요, 배포 파이프라인, 데이터 보호 매트릭스 요청 시 사용할 수 있습니다. 결과물은 하나의 비공개 HTML 아티팩트로 제공되며, 발표자가 설명하는 회의에 적합합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/0xtan0/skills/tree/HEAD/skills/infra-flow-deck

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

인프라 플로우 데크

출력: 프라이빗 HTML 아티팩트 1개, 약 8장 슬라이드, 발표자가 말하는 회의용. 다이어그램이 의미를 전달합니다. 텍스트는 최소화합니다. 모든 블록, 화살표 및 주장은 코드에서 비롯되며, 메모리나 문서만으로 비롯되지 않습니다.

작업 순서: 0단계 설정 → 1단계 원장 조사 및 작성 → 2단계 구축 → 3단계 0 problem(s)가 나올 때까지 확인 → 4단계 게시 및 보고.

0단계 — 설정

  1. assets/template.html을 스크래치 경로 하나로 복사합니다. 모든 수정 및 게시는 동일한 경로를 사용하므로 아티팩트 URL은 그대로 유지됩니다.
  2. 원장(1단계)을 그 옆에 ledger.txt에 넣습니다. assets/ledger.example.txt에 형식이 나와 있습니다. 그 안의 ID와 경로는 가상의 것입니다.
  3. SVG를 배치하기 전에 artifact-diagramming 스킬을 로드합니다. 아티팩트 페이지 계약(테마 토큰, doctype 없음, 사이드 여백)을 따릅니다.

템플릿은 작업 예제가 포함된 작동하는 데크입니다: 슬라이드 엔진, Play/Step/Reset 로직, AWS 스타일 타일, 계정 및 리전 박스, 점선 보조 흐름 및 브랜드 로고 타일. 데이터와 좌표를 변경하고 엔진을 다시 작성하지 마십시오.

엔진 사실:

  • player(svgId, prefix, steps, idleCaption)은 하나의 Play 슬라이드를 실행합니다. 접두사 ''는 #play/#back/#next/#reset/#cap을 사용하고, 'n'은 #nplay/…/#ncap(네트워크), 'i'는 #iplay/…/#icap(IAM), 'r'은 #rplay/…/#rcap(릴리스)을 사용합니다. 반환 값을 stops에 푸시합니다. 단계는 {n:[노드 ID], a:[화살표 ID], c:'캡션'}입니다. a는 비어 있을 수 있습니다. player()는 window.__players에 자신을 등록합니다. scripts/check.py가 이를 읽으므로 해당 줄을 유지하십시오.
  • tile(id, cx, cy, color, glyph, label, sub, side): side는 거짓(레이블 아래), 'l', 't' 또는 참(오른쪽)입니다. 아래 레이블은 해당 열을 통한 수직선을 차단합니다. 옆으로 이동하십시오.
  • chipRow(cy, items, x0)는 역할 타일 옆에 권한 칩을 그립니다. 각 항목은 [text, stripe colour, id, deny?]입니다. 각 칩은 .node이므로 Play 단계가 이를 강조할 수 있고, deny?는 빨간색 외곽선을 추가합니다. 칩은 너비가 360px입니다. 텍스트가 이를 넘으면 검사가 실패합니다.
  • 화살표 마커는 body 상단의 숨겨져 있지만 렌더링되는 SVG 하나에 있습니다. 절대 defs()를 슬라이드 내부에 추가하지 마십시오. display:none 슬라이드의 마커는 다른 슬라이드에 그려지지 않습니다.
  • 선 클래스: .arr 실선 기본 흐름 화살표(모든 화살표는 Play 단계에 있어야 함), .arr deny 빨간색 점선(명시적 거부 또는 권한 경계용), .mon 점선 보조 흐름, .deploy 저장소 → 계정, .uses 교차 계정 사용. 경로는 절대 M H V L만 사용합니다.
  • G의 글리프: 핵심 clock, ecs, lambda, ssm, kms, sqs, rpc, hash, cube, target, 네트워크 alb, nat, igw, ep, ec2, db, waf, r53, logs, user, 아이덴티티 role, gcp, 릴리스 branch, cloud, AI brain, 브랜드 github, vercel, discord, pagerduty, slack. 브랜드 글리프는 흰색입니다. 타일에 브랜드 색상을 지정하십시오. (github #24292f, vercel #000000, discord #5865F2, pagerduty #06AC38, slack은 컬러, 타일 #ffffff). 브랜드는 실제 로고 경로로만 추가하십시오.
  • 네트워크, IAM, 릴리스 및 매트릭스 슬라이드는 주석 처리된 섹션으로 템플릿에 있습니다. 섹션의 주석을 해제하고, #net, #iam, #rel 또는 .mx 테이블을 채우고, 각 Play를 player()로 등록하십시오.

1단계 — 코드에서 시스템 조사 (필수, 그리기 전)

배포 중인 브랜치 조사: 병합이 프로덕션에 적용되는 브랜치입니다. 기본 브랜치와의 차이점만 확인하고, 프로덕션이 실행 중인 것을 그리십시오. 저장소가 크면 하나의 하위 에이전트에 위임하십시오. 파일 경로가 포함된 사실적인 브리핑을 요청하십시오.

  1. 저장소의 AGENTS.md / README 파일, IaC(Terraform, CDK 등), 서비스 코드, 계약 및 배포 문서를 읽으십시오. 형제 저장소에 대한 참조를 따르십시오.
  2. 차트가 표시해야 할 것을 결정하십시오. 사용자가 문의한 기본 흐름에서 시작하십시오. 그것이 접촉하는 요소를 처음부터 끝까지 나열하고, 청중이 해당 흐름을 이해하는 데 필요한 것만 유지하십시오. 일반적인 요소 유형:
    • 런타임 구성 요소: 태스크, 함수, 서비스, 워커, 모니터, 작업.
    • 트리거: 스케줄러, 큐, 이벤트, 웹훅, 사용자.
    • 데이터 및 구성: 파라미터 스토어, 시크릿, 데이터베이스, 큐.
    • 신뢰 및 서명: 키 저장소, 서명자, 경계를 넘는 역할.
    • 외부 당사자: RPC/API 제공자, 채팅/알림 도구, 체인, 타사 서비스.
    • 경계: 계정, 리전, 네트워크, 온체인 대 오프체인. 제외하는 요소와 그 이유를 명시하십시오.
  3. 유지하는 각 요소에 대해, 차트에 중요한 코드를 찾으십시오. 블록, 화살표 또는 캡션이 되는 사실만: 무엇이 시작하는지, 무엇을 읽는지, 무엇을 쓰거나 보내는지, 누가 서명하거나 승인하는지, 무엇으로, 누가 비용을 지불하는지(수수료, 가스, 비용 소유자, 예외 찾기), 어떤 경계에 있는지.
  4. 소유권. 계정 × 리전 표와 저장소 → 각각이 어디에 무엇을 배포하는지 표를 만드십시오. 시스템에 둘 이상의 계정 또는 둘 이상의 리전이 있는 경우에만 만드십시오. 그렇지 않으면 이 표와 소유권 슬라이드를 건너뛰십시오.
  5. 네트워크. 네트워크 IaC를 전체적으로 읽으십시오: VPC 및 서브넷(CIDR, AZ 개수, 각 리소스가 있는 계층), 라우팅 테이블, NAT 및 인터넷 게이트웨이, 프라이빗 엔드포인트(프라이빗 DNS가 켜져 있는지 여부), 모든 보안 그룹과 모든 규칙(소스, 포트, CIDR 또는 SG 참조), 로드 밸런서(내부 또는 인터넷 연결, 리스너 기본 작업), CDN 원본 유형, 서비스 검색, 배스천 또는 기타 사람 액세스, 흐름 로그. 퍼블릭 서브넷에 있는 것을 기록하십시오. 엔드포인트가 없어서 어떤 클라우드 API 호출이 NAT를 통해 나가는지 기록하십시오. 그리기 전에 결과를 에지 원장으로 작성하십시오: 보안 그룹 규칙 쌍 및 로드 밸런서 대상 그룹당 한 줄, source → destination :port (file:line) 형식으로. 모든 규칙 리소스(AWS의 경우: aws_vpc_security_group_ingress_rule, aws_vpc_security_group_egress_rule, ingress/egress 블록, aws_lb_target_group, aws_lb_listener, aws_vpc_endpoint)를 루트 및 호출하는 모든 모듈에서 grep하십시오. 요약이나 메모리에서 원장을 작성하지 마십시오.
  6. IAM. 루트 및 해당 모듈의 모든 역할, 정책, 정책 첨부, 정책 문서, 신뢰 정책 및 권한 경계를 grep하십시오. IAM 원장을 역할당 한 줄씩 작성하십시오: role | 신뢰하는 대상 + 모든 조건 | 주요 권한 | 명시적 거부, 경계 | file:line. 조건은 청중이 알아야 할 사실: OIDC 저장소 ID, 참조, 환경, ExternalId, SourceAccount, 세션 이름입니다. 그런 다음 선택:
    • 주요 역할: 경계(다른 계정, CI, 고객)를 넘거나, 인프라를 변경하거나, 고객 데이터를 다루는 역할. 자체 로그만 작성하는 역할은 제외합니다(보고).
    • 중요 정책(0~5개): 명시적 Deny 문, 권한 경계, * 리소스, iam:PassRole, 교차 계정 sts:AssumeRole. sid를 인용하십시오. 없으면 없다고 말하고, 만들지 마십시오.
  7. 릴리스 경로. 모든 CI 워크플로를 읽으십시오: 트리거(pull_request 또는 push, 브랜치, paths), CI 환경, 가정하는 역할, 포크 PR 가드, 적용 전 빌드 단계, 수동 디스패치. 릴리스를 병합하는 사람에 대한 저장소 규칙을 읽으십시오. 앱 이미지의 경우 배포자 역할(신뢰 참조, 푸시 및 업데이트할 수 있는 것)을 읽고 IaC가 태스크 정의 변경을 무시하는지 확인하십시오. 이 저장소 외부의 앱 저장소 워크플로는 읽지 않는 한 UNCONFIRMED입니다.
  8. 데이터 저장소. 고객, 감사 또는 시크릿 데이터를 보유하는 모든 저장소를 나열하십시오: 데이터베이스, 버킷, IaC 상태, 로그 그룹, 시크릿 저장소. 각각에 대해: 암호화 키(고객 KMS, 클라우드 관리, 스토리지 관리) 및 TLS, 보존(백업, Object Lock, 버전 관리, 수명 주기, 로그 일수, 삭제 방지, 시크릿 복구 기간), 가용성(Multi-AZ, 다른 리전 또는 계정의 복사본), 노출, 데이터(구성 아님)를 읽을 수 있는 사용자(거부 후 CI 포함), 감사(데이터 이벤트, 데이터베이스 로그). 각 셀을 강함, 부분, 또는 격차로 등급을 매기고 file:line을 포함하십시오.
  9. 라이브 상태. 모든 컴퓨팅 요소에 대해 원하는 수(또는 복제본, 또는 스케줄)와 그 앞에 있는 게이트(WAF 기본 작업, 리스너 규칙, 기능 플래그)를 읽으십시오. 서비스가 0이거나 에지에서 차단되면 일시 중지된 것입니다. 데크에서 그렇게 명시하십시오.
  10. 공개 노출. public_access_block, principals with "*", acl, publicly_accessible, associate_public_ip_address, internal = false, 개방형 보안 그룹 CIDR을 grep하십시오. 모든 공개 객체, 엔드포인트 또는 계정 전체 완화와 그 비용(예: 보호 계층 하나를 잃는 버킷)을 나열하십시오.
  11. 수동 생성. 신뢰 앵커(DNS 영역, OIDC 제공자, 상태 버킷, 연결, 계정 설정)의 데이터 조회와 주석 및 배포 가이드에서 "console", "by hand", "out of band", "manual apply"를 grep하십시오. 하나의 목록을 유지하십시오: "IaC 외부에서 수동으로 생성".
  12. 코드에서 확인할 수 없는 모든 것은 UNCONFIRMED로 표시하십시오. 사용자에게 이에 대해 알리십시오. 사실로 그리지 마십시오.
  13. 사용자 목록이 아닌 코드의 단계 순서를 얻으십시오. 코드 순서가 다르면 이를 사용하고 그렇게 말하십시오.

그런 다음 에지 및 IAM 원장에서 검사를 위해 ledger.txt를 작성하십시오: arrowId | source -> destination :port | file:line, 또는 - | left out: reason | file:line.

2단계 — 데크 구축

슬라이드:

  1. 제목.
  2. Play가 있는 주요 흐름 다이어그램. 첫 번째 트리거부터 최종 효과까지의 블록. Play, Step back, Step next 및 Reset 버튼과 단계당 하나의 캡션.
  3. Play가 있는 네트워크 흐름 다이어그램. 하나의 VPC를 한 번 그리십시오(AZ당 한 번이 아니라, AZ 개수 및 서브넷 CIDR을 상자 제목에 쓰십시오). 대역: 퍼블릭 서브넷, 프라이빗 서브넷. VPC 외부: CDN 또는 클라이언트, 운영자, 인터넷. Play 단계, 다음 순서: 수신 트래픽(CDN 원본, 로드 밸런서 SG, 태스크 SG), 앱에서 데이터로(데이터베이스 SG, 내부 로드 밸런서), 발신 트래픽(태스크 이그레스, NAT 경로, 인터넷 게이트웨이), 격리된 경로(인터넷 경로가 없는 함수, 엔드포인트), 사람 액세스(배스천, 포트 포워드). 모든 화살표 옆에 .tag 텍스트로 포트를 넣으십시오(:443, :5432). 흐름 로그 및 기타 관찰자는 점선으로 표시하고 Play에 포함하지 않습니다. 시스템에 자체 네트워크가 없는 경우(예: 관리형 서버리스 서비스만) 이 슬라이드를 건너뛰고 보고서에 그렇게 명시하십시오.
  4. Play가 있는 주요 IAM 역할. 세 개의 열: 가정할 수 있는 사람(저장소 및 브랜치, 클라우드 서비스, 다른 계정) → 역할 타일(보안 #DD344C) → 도달하는 대상(리소스 타일 또는 칩). 신뢰 조건을 신뢰 화살표에 .tag 텍스트로 넣으십시오(ref: main, ExternalId). 각 중요 정책을 빨간색 .arr deny 선으로 차단하는 대상에 그리고 sid 또는 작업을 태그로 표시하십시오(Deny ssm:*). 역할 그룹(CI, 배포자, 런타임, 교차 계정)당 하나의 Play 단계, 그런 다음 중요 정책당 하나의 단계. 다른 슬라이드와 동일한 이름을 사용하십시오.
  5. 변경 사항이 프로덕션에 도달하는 방법, Play 포함. 상단 행의 브랜치 타일(레이블 위), 적용되는 각 브랜치 아래에 하나의 계정 타일, 하단 레인에 앱 저장소 및 배포자 역할. 화살표 태그는 게이트를 말합니다(PR + plan, merge: apply, push to main). 단계는 실제 순서를 따릅니다. 사람이 수동으로 수행하는 단계를 말하십시오.
  6. 데이터가 있는 곳(매트릭스). SVG가 아닌 HTML 테이블(.mx). 저장소당 한 행, 열: 암호화, 보존, 가용성, 노출, 데이터를 읽을 수 있는 사람, 감사. 각 셀은 상태 아이콘과 레이블(✓ 강함, ◐ 부분, ✕ 격차)로 시작하고 상태 토큰 --good/--warn/--crit을 사용하며 시리즈 색상을 사용하지 않습니다. 각 셀에는 소스가 있는 title이 있습니다. 바닥글에는 교차적 격차(다른 리전에 복사본 없음, 자체 거부를 편집할 수 있는 CI)가 명시됩니다. 매트릭스는 자체 글꼴 크기를 유지합니다. 스크롤 없이 슬라이드에 맞아야 합니다.
  7. 계정, 리전 및 저장소. 정적 다이어그램. 1단계, 소유권이 적용되는 경우에만.
  8. 핵심 사항, 3~5개의 짧은 줄. 1단계에서 확인한 주장만 사용하십시오. 사실인 경우 네트워크 주장 하나를 포함하십시오(예: 퍼블릭 서브넷에 있는 것). "수동 생성" 목록은 여기 또는 계정 슬라이드에 있습니다.

규칙(검토에서 학습됨, 모두 따를 것)

정확성

  • 코드가 가진 모든 서명 관계를 그리십시오. 키 저장소(예: KMS)가 서명을 수행하는 경우, 이를 사용하는 모든 구성 요소는 자체 화살표를 갖습니다. 둘 이상의 서명자를 찾으십시오.
  • 예외를 찾을 때까지 절대적인 주장("X는 절대 지불하지 않음", "Y는 비밀을 보유하지 않음", "Z는 항상…")을 작성하지 마십시오. 예외가 있으면 말하거나 주장을 삭제하십시오.
  • 슬라이드의 모든 안전 또는 신뢰성 속성은 코드 또는 구성에서 비롯되어야 합니다. 찾지 못한 그럴듯한 보장(정족수, 재시도, 중복성)을 추가하지 마십시오.
  • 유지하는 각 요소에 대해 모든 트리거와 모든 읽기/쓰기를 그리십시오. 주 경로에 있는 것만 그리지 마십시오.

범위 및 노이즈

  • 동일한 다이어그램을 환경(dev/staging/production 나란히)당 한 번 복사하지 마십시오. 기본적으로 프로덕션 환경 하나를 표시하고 그렇게 말하십시오.
  • 프로덕션이 다중 리전인 경우 표시하십시오. 각 계정 내에 리전 상자를 넣고 각 리전에 역할(주, 복제본, 대기, 백업)을 레이블하십시오.
  • 주 흐름 대 보조 흐름. Play 단계는 사용자가 문의한 주 흐름만 다룹니다. 동일한 인프라를 공유하는 다른 흐름(모니터링, 알림, 관리 또는 배치 작업)은 점선으로 그리십시오. Play 단계 밖에 두고 짧은 범례를 제공하십시오.

범위(게시 전마다 확인)

  • 환경(릴리스 경로, 계정)에 걸친 슬라이드에서 프로덕션 루트뿐만 아니라 모든 루트를 읽으십시오. 모든 루트가 호출하는 모듈(배포자 역할, 파이프라인, 신뢰)에 의해 생성된 배포 경로는 모든 환경에 도달합니다. 각 환경당 하나의 화살표를 신뢰하는 브랜치 또는 조건과 함께 그리십시오. "Prod only"는 다른 루트가 이를 호출하지 않는다는 증거가 필요합니다.
  • 로드 밸런서, 프록시, 게이트웨이, 엔드포인트 또는 큐는 화살표의 끝이 아닙니다. 이를 그리십시오

…

[번역을 위해 잘림]

관련 스킬