Community影像github.com

0xtan0/skills

建立一份簡短的客戶簡報(HTML Artifact),透過動畫「播放」區塊圖說明雲端/鏈上系統,包含觸發→計算→組態/機密→簽章→佇列→鏈路,以及網路路徑、IAM 角色、發布路徑、資料保護矩陣與帳戶/區域/儲存庫圖表。

skills 是什麼?

這個技能用於自動產生一份包含約 8 張投影片的 HTML Artifact 簡報,專為系統或基礎架構簡報設計。它會先對基礎架構程式碼(如 Terraform、服務代碼、合約)進行深度研究,確保每一個區塊和箭頭都有程式碼支援。技能支援多種可播放的流程圖,包括主流程、網路路徑、IAM 角色與關鍵政策、發布路徑,以及一個資料保護矩陣和帳戶/區域/儲存庫圖表。它適用於 Claude Code、Codex 等平台,並要求遵循嚴格的精確性、範圍與覆蓋範圍規則。技能包含完整的步驟指引,從設定、研究、建立到檢查發佈,並內建 SVG 繪圖引擎與 Play/Step/Reset 邏輯,但禁止重寫引擎。

相容平台~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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

基礎架構流程簡報

輸出:一份私有的 HTML Artifact,約 8 張投影片,適用於簡報者口頭說明的會議。 圖表傳達主要意義。文字保持精簡。每個區塊、箭頭和主張都來自程式碼;絕不依賴記憶或僅憑文件。

工作順序:步驟 0 設定 → 步驟 1 研究並撰寫紀錄 → 步驟 2 建立 → 步驟 3 檢查直到顯示 0 problem(s) → 步驟 4 發佈並回報。

步驟 0 — 設定

  1. 將 assets/template.html 複製到一個暫存路徑。每次修訂和每次發佈都使用同一路徑,以便 Artifact URL 保持不變。
  2. 將步驟 1 的紀錄放在與它同目錄的 ledger.txt 中。assets/ledger.example.txt 展示了格式;其中的 ID 和路徑僅為範例。
  3. 在佈局 SVG 前載入 artifact-diagramming 技能。遵循 Artifact 頁面合約(主題 token、無 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:[node ids], a:[arrow ids], c:'caption'};a 可以為空。player() 會將自身註冊到 window.__players;scripts/check.py 會讀取它,請務必保留這行程式碼。
  • tile(id,cx,cy,color,glyph,label,sub,side):side 為 falsy(標籤在下方)、'l'、't' 或 truthy(在右側)。下方的標籤會阻止任何垂直線通過該列。請將其移開。
  • 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 表格,並使用 player() 註冊每個 Play。

步驟 1 — 在程式碼中研究系統(強制性,繪圖前)

在部署分支上研究:該分支的合併會套用到生產環境。僅與預設分支比較以找出漂移;繪製生產環境實際運行的內容。如果儲存庫很大,可以委派給一個子代理。要求它提供包含檔案路徑的事實簡報。

  1. 讀取儲存庫的 AGENTS.md / README 文件,然後是 IaC(Terraform、CDK 等)、服務代碼、合約和部署文件。追蹤指向關聯儲存庫的引用。
  2. 決定圖表必須顯示的內容。 從使用者詢問的主要流程開始。列出它所觸及的元素,從頭到尾,並只保留受眾需要理解的內容。典型的元素種類:
    • 執行時期元件:任務、函數、服務、工作者、監控器、作業。
    • 觸發器:排程器、佇列、事件、Webhook、使用者。
    • 資料和組態:參數儲存、機密、資料庫、佇列。
    • 信任和簽章:金鑰儲存、簽署者、跨越邊界的角色。
    • 外部參與者:RPC/API 提供者、聊天/警報工具、鏈、第三方服務。
    • 邊界:帳戶、區域、網路、鏈上與鏈下。 說明你省略了哪些元素以及原因。
  3. 對於你保留的每個元素,在程式碼中尋找對圖表重要的內容。 僅限於會成為區塊、箭頭或說明的資訊:啟動它的內容;它讀取的內容;它寫入或傳送的內容;為它簽署或授權的角色及其方式;誰為它付費(費用、gas、成本所有人;尋找例外情況);它位於哪個邊界。
  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)。不要從摘要或記憶中建立紀錄。
  6. IAM。 在根目錄及其模組中搜尋每個角色、政策、政策附加、政策文件、信任政策和權限邊界。撰寫一個 IAM 紀錄,每個角色一行:role | 受信任者 + 每個條件 | 主要授予 | 明確拒絕、邊界 | file:line。條件是受眾需要了解的資訊:OIDC 儲存庫 ID、引用、環境、ExternalId、SourceAccount、工作階段名稱。然後選擇:
    • 主要角色: 跨越邊界(另一個帳戶、CI、客戶)的角色、可以變更基礎架構的角色或接觸客戶資料的角色。僅寫入自己日誌的角色則省略(報告它們)。
    • 關鍵政策(0–5 個): 明確拒絕陳述式、權限邊界、* 資源、iam:PassRole、跨帳戶 sts:AssumeRole。引用 sid。如果沒有,請說明;不要虛構。
  7. 發布路徑。 讀取每個 CI 工作流程:觸發器(pull_request 或 push、分支、paths)、CI 環境、它假設的角色、Fork PR 保護、套用前的建置步驟以及手動觸發。讀取誰合併發布的儲存庫規則。對於應用程式映像檔,讀取部署者角色(信任引用、它們可以推送和更新的內容)以及 IaC 是否忽略任務定義變更。此儲存庫外部的應用程式儲存庫工作流程是未經確認的,除非你讀取它們。
  8. 資料儲存。 列出每個儲存客戶、稽核或機密資料的儲存:資料庫、儲存桶、IaC 狀態、日誌群組、機密儲存。對於每個:加密金鑰(客戶 KMS、雲端管理、儲存管理)和 TLS、保留(備份、物件鎖定、版本化、生命週期、日誌天數、刪除保護、機密復原視窗)、可用性(Multi-AZ、另一個區域或帳戶中的副本)、暴露程度、可以讀取資料的對象(包括 CI 在其拒絕之後)以及稽核(資料事件、資料庫日誌)。將每個儲存格評級為強、部分或差距,並附上 file:line。
  9. 即時狀態。 對於每個計算元素,讀取其期望計數(或副本、排程)及其前方的閘道(WAF 預設動作、監聽器規則、功能旗標)。計數為零或在邊緣被阻擋的服務是暫停狀態;簡報中會說明。
  10. 公開暴露。 搜尋 public_access_block、principals 中的 "*"、acl、publicly_accessible、associate_public_ip_address、internal = false、開放的安全群組 CIDR。列出每個公開物件、端點或帳戶範圍的寬鬆設定,以及其代價(例如,失去一層保護的儲存桶)。
  11. 手動建立。 搜尋信任錨點(DNS 區域、OIDC 提供者、狀態儲存桶、連線、帳戶設定)的資料查詢,以及註解和部署指南中的「console」、「by hand」、「out of band」、「manual apply」。保持一份清單:「手動建立,在 IaC 之外」。
  12. 將你無法在程式碼中確認的所有內容標記為未經確認。告知使用者。不要將其繪製為事實。
  13. 從程式碼中獲得步驟順序,而不是從使用者的清單。如果程式碼順序不同,請使用它並說明。

然後為檢查撰寫 ledger.txt,內容基於邊緣和 IAM 紀錄: arrowId | source -> destination :port | file:line,或 - | left out: reason | file:line。

步驟 2 — 建立簡報

投影片:

  1. 標題。
  2. 帶 Play 的主要流程圖。 從第一個觸發器到最終效果的區塊。Play、上一步、下一步和重置按鈕,以及每個步驟一個說明。
  3. 帶 Play 的網路流程圖。 一個 VPC,繪製一次(不按 AZ 重複;在方塊標題中寫明 AZ 數量和子網 CIDR)。頻段:公有子網、私有子網。VPC 外部:CDN 或用戶端、操作者、網際網路。Play 步驟,按此順序:傳入流量(CDN 來源、負載平衡器 SG、任務 SG)、應用程式到資料(資料庫 SG、內部負載平衡器)、傳出流量(任務出口、路由到 NAT、網際網路閘道)、隔離路徑(沒有網際網路路由的函數、端點)、人工存取(堡壘主機、連接埠轉發)。將連接埠以 .tag 文字放在每個箭頭旁(:443、:5432)。流程日誌和其他觀察者使用虛線,且不包含在 Play 中。 如果系統沒有自己的網路(例如,僅受管無伺服器服務),則跳過此投影片,並在報告中說明。
  4. 帶 Play 的主要 IAM 角色。 三欄:可以假設的角色(儲存庫和分支、雲端服務、另一個帳戶)→ 角色圖塊(Security #DD344C)→ 它觸及的內容(資源圖塊或籌碼)。將信任條件作為 .tag 文字放在信任箭頭上(ref: main、ExternalId)。將每個關鍵政策繪製為一條紅色 .arr deny 線,指向它所阻擋的內容,並將 sid 或動作作為標籤(Deny ssm:*)。每個角色群組(CI、部署者、執行時期、跨帳戶)一個 Play 步驟,然後每個關鍵政策一個步驟。使用與其他投影片相同的名稱。
  5. 變更如何到達生產環境,帶 Play。 頂行放置分支圖塊(標籤在上方),每個分支套用的帳戶圖塊在其下方,底層放置應用程式儲存庫和部署者角色。箭頭標籤說明閘道(PR + plan、merge: apply、push to main)。步驟遵循實際順序;說明哪些步驟由人員手動執行。
  6. 資料所在位置(矩陣)。 一個 HTML 表格(.mx),而非 SVG。每個儲存一行,欄位:加密、保留、可用性、暴露程度、誰可以讀取資料、稽核。每個儲存格以狀態圖示和標籤開頭(✓ 強、◐ 部分、✕ 差距),並使用狀態 token --good/--warn/--crit,絕不使用系列顏色。每個儲存格帶有 title 屬性包含其來源。頁尾說明跨領域差距(另一個區域中無副本、可以編輯其自身拒絕的 CI)。矩陣保持其自身的字型大小;它必須在不滾動的情況下適合投影片。
  7. 帳戶、區域和儲存庫。 一個靜態圖表。僅在步驟 1「所有權」適用時使用。
  8. 關鍵要點,3–5 行簡短文字。僅使用你在步驟 1 中驗證過的主張。如果屬實,包含一個網路主張(例如,公有子網中的內容)。「手動建立」清單放在此處或帳戶投影片上。

規則(從審查中學到;請遵守所有規則)

準確性

  • 繪製程式碼中的每個簽章關係。當金鑰儲存(例如 KMS)執行簽章時,使用它的每個元件都應有自己指向它的箭頭。尋找多個簽署者。
  • 在搜尋程式碼中的例外情況之前,不要撰寫絕對主張("X 從不付費"、"Y 不包含機密"、"Z 總是…")。如果存在例外,請說明或放棄該主張。
  • 投影片上的每個安全或可靠性屬性必須來自程式碼或組態。不要添加你未找到的聽起來合理的保證(法定人數、重試、冗餘)。
  • 為你保留的每個元素繪製每個觸發器和每個讀取/寫入。不要只繪製主要路徑上的那些。

範圍與雜訊

  • 不要為每個環境(開發/測試/正式環境並排)複製相同的圖表。顯示一個環境,預設為正式環境,並說明。
  • 如果正式環境是多區域的,請顯示它。將區域方塊放在每個帳戶內,並為每個區域標註其角色(主要、複本、待命、備份)。
  • 主要流程與次要流程。 Play 步驟僅涵蓋使用者詢問的主要流程。繪製共用相同基礎架構的其他流程(監控、警報、管理或批次作業)作為虛線。將它們排除在 Play 步驟之外,並提供簡短的圖例。

覆蓋範圍(每次發佈前檢查)

  • 在跨越環境(發布路徑、帳戶)的投影片上,讀取每個根目錄,而不僅僅是正式環境的。一個由每個根目錄呼叫的模組(部署者角色、管道、信任)建立的部署路徑會觸及每個環境:為每個環境繪製一個箭頭,並附上它們信任的分支或條件。「僅限正式環境」需要證明其他根目錄沒有呼叫它。
  • 負載平衡器、代理、閘道、端點或佇列永遠不是箭頭的終點。繪製它以及後端的元件,第二跳作為其自己的箭頭和步驟。

相關技能