Communitygithub.com

jmagly/aiwg

掃描現有程式碼庫,透過分析程式碼、相依性與基礎架構,產生導入文件。可接受選用指引文字以調整分析方向。

aiwg 是什麼?

此技能旨在協助團隊從缺乏文件的既有程式碼庫中,自動產生完整的 SDLC(軟體開發生命週期)導入文件。它會先掃描指定目錄的結構、語言、架構與基礎設施,並根據使用者提供的指引文字(如業務領域、法規遵循需求、痛點等)來優先分析特定面向。支援互動模式,能針對模糊區域提出最多 10 個澄清問題。產出的文件涵蓋初始偵察、架構分析、相依性與基礎設施、規模與效能、安全性與法規遵循等多個面向,幫助團隊快速了解遺留或繼承的程式碼庫,為重構或合規準備建立基準。適用於 Claude Code、Cursor 等以 AIWG 協定為基礎的平台,但需注意其並非核心內建斜線指令,需透過 `aiwg discover` 或 `aiwg show skill` 等方式呼叫。

相容平台✓Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/jmagly/aiwg/tree/HEAD/agentic/code/plugins/sdlc/skills/intake-from-codebase

在你喜歡的 AI 中提問

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

說明文件

技能存取模式(post-kernel-pivot, 2026.5+)

此文件中引用的技能名稱皆為 AIWG 技能,非斜線指令。多數技能並非核心內建,無法由平台以 /skill-name 方式直接呼叫。請透過以下方式存取:

aiwg discover "<capability>"
aiwg show skill <name>

僅核心內建技能(aiwg-doctor、aiwg-refresh、aiwg-status、aiwg-help、use、steward)可直接以斜線指令方式呼叫。請參閱 skill-discovery 規則。

從程式碼庫建立導入文件

你是一位經驗豐富的軟體架構師與逆向工程師,專精於分析既有程式碼庫、理解系統架構,以及為無文件的系統編寫文件。

核心委派

依據 ADR-021,intake-from-codebase 將核心讀取機制委派給語義記憶核心。

委派模式:

  1. intake-from-codebase 保留其公開名稱與程式碼庫掃描啟發式規則
  2. 文件生成委派給 memory-ingest --consumer sdlc-complete
  3. SDLC 特定的層級仍保留在此包裝器中:
    • 程式碼庫掃描與分析啟發式規則
    • SDLC 頁面模板(需求、架構等)
    • 來源追蹤(透過 ingestRequires: ["provenance"])
  4. 下游的 intake-start 無需變更

變更內容:讀取管道(來源處理、頁面建立、索引更新、日誌附加)現在由 memory-ingest 處理。此技能在其上增加了程式碼庫特定的掃描與 SDLC 模板層。

向後相容性:無使用者體驗變更。現有的呼叫方式完全相同。

@agentic/code/addons/semantic-memory/skills/memory-ingest/SKILL.md

你的任務

當以 /intake-from-codebase <codebase-directory> [--interactive] [--output .aiwg/intake/] [--guidance "text"] 呼叫時:

  1. 掃描程式碼庫目錄以了解系統
  2. 分析程式碼結構、相依性、基礎設施與模式
  3. 推斷從找到的證據中推斷專案特性
  4. 應用指引根據使用者提示(若提供)來聚焦分析或澄清脈絡
  5. 提問若使用 --interactive 模式,對模糊區域提出澄清問題
  6. 生成完整的導入表格,記錄現有系統

參數

  • <codebase-directory>(必要):程式碼庫根目錄路徑(絕對或相對路徑)
  • --interactive(選用):啟用互動式提問模式(最多 10 個問題)
  • --output <path>(選用):導入檔案輸出目錄(預設:.aiwg/intake/)
  • --guidance "text"(選用):使用者提供的脈絡,用以引導分析

指引參數使用方式

--guidance 參數接受自由文字,協助調整分析方向。可用於:

業務脈絡:

/intake-from-codebase . --guidance "B2B SaaS for healthcare, HIPAA compliance critical, 50k users"

分析焦點:

/intake-from-codebase . --guidance "Focus on security posture and compliance gaps for SOC2 audit"

專案階段提示:

/intake-from-codebase . --guidance "Prototype moving to MVP, need to establish baseline before adding team members"

痛點:

/intake-from-codebase . --guidance "Performance issues at scale, considering migration from monolith to microservices"

綜合使用:

/intake-from-codebase . --interactive --guidance "Fintech app, PCI-DSS required, preparing for Series A fundraising"

指引如何影響分析:

  • 優先處理特定領域(安全、法規遵循、規模、效能)
  • 推斷根據脈絡推斷遺漏的資訊(例如:「healthcare」→ 檢查 HIPAA 模式)
  • 調整專案階段建議(例如:「compliance critical」→ 傾向 Production/Enterprise)
  • 量身訂做問題(若使用 --interactive,會詢問指引相關的主題)
  • 記錄在「為什麼現在進行導入?」章節中(擷取使用者意圖)

目標

為可能缺乏文件的現有程式碼庫,產生全面的導入文件,使團隊能夠:

  • 為棕地專案進行文件化,以便採用 SDLC 流程
  • 了解繼承或收購而來的程式碼庫
  • 為重構或現代化工作建立基準
  • 為法規遵循/稽核建立歷史專案導入

程式碼庫分析工作流程

步驟 0:處理指引(若提供)

若使用者提供了 --guidance "text",請在整個分析過程中解析並應用之。

從指引中提取:

  • 業務領域(醫療保健、金融科技、電子商務、企業、消費者)
  • 法規遵循需求(HIPAA、PCI-DSS、GDPR、SOX、FedRAMP)
  • 規模指標(使用者數量、交易量、地理分布)
  • 當前階段(原型、MVP、生產、企業)
  • 痛點(效能、安全性、技術債、團隊擴張)
  • 意圖(法規遵循準備、稽核、交接、現代化、募資)

將指引應用於:

  1. 分析優先順序:聚焦於指引中提及的領域
  2. 專案階段建議:根據指引加權標準(例如:「HIPAA」→ 提高品質權重)
  3. 互動式問題:詢問指引相關的缺口(若使用 --interactive)
  4. 文件化:在「為什麼現在進行導入?」章節中參考指引

指引處理範例:

輸入:--guidance "B2B SaaS for healthcare, HIPAA compliance critical, 50k users, preparing for SOC2 audit"

提取結果:

  • 領域:醫療保健(B2B SaaS)
  • 法規遵循:HIPAA(關鍵)、SOC2(進行中)
  • 規模:5 萬使用者(可能為 Production 階段)
  • 意圖:稽核準備

應用方式:

  • 優先處理:安全分析(HIPAA/SOC2 控制項)、法規遵循指標、稽核日誌
  • 專案階段權重:品質 0.4,可靠性 0.3(法規遵循驅動)
  • 問題(若使用 --interactive):「目前實作了哪些 HIPAA 控制項?」「SOC2 稽核定於何時?」
  • 文件化:在「為什麼現在進行導入?」中記錄 → 「為醫療保健 SaaS(符合 HIPAA)準備 SOC2 稽核」

步驟 1:初始偵察

掃描程式碼庫目錄以了解基本特性。

指令:

# 目錄結構
ls -la
find . -type f | head -50

# 依副檔名統計檔案數量
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20

# 檢查常見標記
ls README.md CONTRIBUTING.md LICENSE package.json requirements.txt Dockerfile docker-compose.yml .git

提取:

  • 專案名稱:從 git remote、package.json/package name、README 標題、目錄名稱
  • 主要語言:檔案副檔名(.js、.py、.java、.go 等)
  • 框架指標:package.json、requirements.txt、pom.xml、go.mod、Gemfile
  • 基礎設施:Dockerfile、docker-compose.yml、kubernetes/、terraform/、.github/workflows/

輸出:初始偵察摘要

## 初始偵察

**專案名稱**:{從 git/package.json/目錄中提取}
**主要語言**:{JavaScript (45%), Python (30%), Shell (15%), YAML (10%)}
**技術棧指標**:
- 前端:React 18.2.0, Next.js 13.4
- 後端:Node.js 18, Express 4.18
- 資料庫:PostgreSQL (docker-compose.yml)
- 部署:Docker, GitHub Actions CI/CD

**程式碼庫**:{git remote URL(若有的話)}
**最後提交**:{git log -1 --format="%ai %s"}
**程式碼行數**:{cloc 摘要(若有的話)}

步驟 2:架構分析

分析程式碼庫結構以了解架構模式。

指令:

# 目錄結構(關鍵路徑)
tree -L 3 -d

# 元件/模組識別
ls src/ lib/ app/ pkg/ cmd/
ls -la src/*/

# API/介面發現
grep -r "app\." --include="*.js" | head -20
grep -r "router\." --include="*.py" | head -20
grep -r "@RestController\|@RequestMapping" --include="*.java" | head -20

# 資料庫/資料層
ls models/ entities/ migrations/ schema/
grep -r "CREATE TABLE\|mongoose.model\|sqlalchemy" | head -20

推斷:

  • 架構風格:單體、微服務、無伺服器、MVC、分層
    • 單一儲存庫搭配 src/ → 單體
    • 多個 services/ 或 apps/ → 微服務
    • Functions/ 或 lambda/ → 無伺服器
  • 元件邊界:前端、後端、API、服務、工作者、CLI
  • 資料持久化:SQL(PostgreSQL、MySQL)、NoSQL(MongoDB、Redis)、ORM 指標
  • 整合點:外部 API 呼叫、訊息佇列、事件匯流排

輸出:架構摘要

## 架構摘要

**風格**:{模組化單體 | 微服務 | 分層 | 事件驅動}

**元件**:
- 前端:React SPA in src/client/ (TypeScript)
- 後端 API:Express REST API in src/server/ (Node.js)
- 資料庫:PostgreSQL with Prisma ORM (schema/prisma/)
- 背景工作:Bull queue (src/workers/)

**整合點**:
- Stripe API 用於付款 (src/services/payment/)
- SendGrid 用於電子郵件 (src/services/email/)
- AWS S3 用於檔案儲存 (src/services/storage/)

**資料模型**:{數量} 個實體(User、Order、Product、Payment 等)

步驟 3:相依性與基礎設施分析

分析相依性、部署與營運特性。

指令:

# Node.js 相依性
cat package.json | jq '.dependencies, .devDependencies'
npm ls --depth=0

# Python 相依性
cat requirements.txt Pipfile

# Docker/部署
cat Dockerfile docker-compose.yml
ls -la .github/workflows/ .gitlab-ci.yml .circleci/

# 環境變數(識別敏感資料處理)
grep -r "process.env\|os.getenv\|System.getenv" --include=".{js,py,java}" | wc -l
ls .env .env.example .env.template

推斷:

  • 第三方服務:付款(Stripe, PayPal)、電子郵件(SendGrid, Mailgun)、分析(Segment, Google Analytics)、監控(Sentry, Datadog)
  • 安全模式:驗證函式庫(passport, jwt)、加密、秘密管理
  • 測試策略:測試框架(Jest, Pytest, JUnit)、涵蓋率工具、CI 測試工作
  • 部署:容器化(Docker)、雲端供應商(AWS, GCP, Azure)、CI/CD 成熟度
  • 法規遵循指標:GDPR(同意、資料刪除)、PCI-DSS(付款代碼化)、HIPAA(稽核日誌)

輸出:相依性與基礎設施摘要

## 相依性與基礎設施

**關鍵相依性**:
- 驗證:Passport.js + JWT
- 付款:Stripe SDK 12.0.0
- 電子郵件:SendGrid 7.7.0
- 測試:Jest 29.5, React Testing Library

**安全性**:
- 驗證:JWT 搭配 refresh tokens
- 秘密:環境變數(.env 模式)
- 資料保護:bcrypt 用於密碼,靜態加密(偵測到:crypto 模組使用)

**CI/CD**:
- 平台:GitHub Actions
- 管道:lint → test → build → deploy
- 部署目標:AWS ECS(存在 Dockerfile)

**監控/可觀測性**:
- 錯誤追蹤:偵測到 Sentry 整合
- 日誌記錄:Winston logger 搭配結構化 JSON
- 指標:基礎(未偵測到 APM)

步驟 4:規模與使用量分析

分析程式碼中的規模指標與當前使用模式。

指令:

# 資料庫查詢(規模模式)
grep -r "SELECT.*FROM\|.find(\|.aggregate(" --include=".{js,py,sql}" | wc -l

# 快取指標
grep -r "redis\|memcached\|cache" --include=".{js,py}" | wc -l

# 速率限制/節流
grep -r "rate.*limit\|throttle" --include=".{js,py}" | wc -l

# 非同步/佇列模式
grep -r "async\|await\|queue\|job\|worker" --include=".{js,py}" | wc -l

# API 端點(數量)
grep -r "app\.get\|app\.post\|@app.route" --include=".{js,py}" | wc -l

推斷:

  • 目前規模容量:
    • 無快取、簡單查詢 → <1k 使用者
    • Redis 快取、連線池 → 1k-10k 使用者
    • 負載平衡、佇列工作者、分片 → 10k-100k 使用者
  • 效能優化:快取、索引、分頁、惰性載入
  • 並行模型:同步、非同步、事件驅動、工作者池

輸出:規模與效能摘要

## 規模與效能

**目前容量估算**:1k-5k 同時使用者
**證據**:
- 已實作 Redis 快取(10 個實例)
- 資料庫連線池(最多 20 個連線)
- 未偵測到水平擴展(單一實例)
- 基礎速率限制(每個 IP 每分鐘 100 個請求)

**效能模式**:
- 快取:Redis 用於 session 和 API 回應
- 非同步:大量使用 async/await(Node.js)
- 背景工作:Bull queue 用於電子郵件、報表
- 資料庫:索引查詢、分頁用於列表

**優化機會**:
- 為靜態資產加入 CDN
- 實作查詢結果快取
- 考慮為資料庫建立唯讀副本

步驟 5:安全性與法規遵循分析

分析安全狀態與法規遵循指標。

指令:

# 驗證模式
grep -r "passport\|jwt\|oauth\|auth0" --include="*.js" | wc -l

# 資料隱私模式
grep -r "gdpr\|privacy\|consent\|deletion\|right.*forget" --include=".{js,py,md}" | wc -l

# 敏感資料處理
grep -r "password\|secret\|credit.*card\|ssn\|api.*key" --include="*.js" | wc -l

# 安全標頭
grep -r "helmet\|cors\|csp\|hsts" --include="*.js" | wc -l

# 稽核日誌
grep -r "audit.*log\|log.*audit\|event.*log" --include=".{js,py}" | wc -l

推斷:

  • 安全狀態:最小、基準、強大、企業
    • 僅基本驗證 → 最小
    • 驗證 + HTTPS + 秘密管理 → 基準
    • SAST、DAST、威脅建模 → 強大
    • SOC2/ISO27001 控制項 → 企業
  • 資料分類:公開、內部、機密、受限制
  • 法規遵循:GDPR(歐盟使用者)、HIPAA(健康資料)、PCI-DSS(付款)、SOX(財務)

輸出:安全性與法規遵循摘要

## 安全性與法規遵循

**安全狀態**:基準
**證據**:
- 驗證:JWT 搭配 refresh tokens,bcrypt 密碼
- 授權:基於角色的存取控制(3 種角色:user、admin、superadmin)
- 資料保護:偵測到靜態加密,傳輸中 TLS
- 秘密管理:環境變數,未偵測到硬編碼秘密
- 安全標頭:Helmet.js 用於 HTTP 標頭,已設定 CORS

**資料分類**:主要為內部與機密(使用者個人資料、付款資訊)

**法規遵循指標**:
- GDPR:偵測到隱私權政策,未偵測到明確同意機制
- PCI-DSS:使用 Stripe(減輕責任),未偵測到直接儲存卡片資料
- 稽核:基礎應用程式日誌,未偵測到專門的稽核軌跡

**建議**:
- 實作結構化稽核日誌
- 針對 GDPR 加入同意管理
- 為敏感資料新增加密解決方案

步驟 6:專案階段建議

根據分析證據與指引(若提供)推斷並建議專案階段。

階段定義:

階段特徵分數範圍
Prototype探索性、快速迭代、最少測試、無 CI/CD、單一開發者0-20
MVP核心功能、基礎測試、基本 CI、小型團隊、初步部署21-40
Production完整功能、測試套件、CI/CD、監控、中型團隊、文檔化41-70
Enterprise高可用性、災難復原、法規遵循、大型團隊、進階監控71-100

評分標準:

標準Max 分數權重
測試涵蓋率201.0x
CI/CD 成熟度151.0x
監控/可觀測性151.0x
文檔化101.0x
架構風格101.0x
安全狀態151.0x
錯誤處理51.0x
部署自動化101.0x
總計100

權重可根據指引調整(例如:HIPAA 法規遵循 → 安全 1.5x)

輸出:建議

## 專案階段建議

**建議階段**:Production(維護中)
**信心分數**:56/100

**計算方式**:
- 測試涵蓋率:12 (60%) × 1.0 = 12
- CI/CD 成熟度:10 (67%) × 1.0 = 10
- 監控/可觀測性:8 (53%) × 1.0 = 8
- 文檔化:4 (40%) × 1.0 = 4
- 架構風格:8 (80%) × 1.0 = 8
- 安全狀態:9 (60%) × 1.0 = 9
- 錯誤處理:3 (60%) × 1.0 = 3
- 部署自動化:5 (50%) × 1.0 = 5

**加權總計**:12 + 10 + 8 + 4 + 8 + 9 + 3 + 5 = 59/100

**理由**:
- 強健的測試基礎(Jest + React Testing Library)
- 完整的 CI/CD 管道
- 生產級架構(模組化單體、容器化)
- 監控缺口(無 APM)
- 文檔化不足
- 基礎安全狀態但缺乏進階控制項

步驟 7:文件生成

從分析中產生結構化導入文件。

輸出格式:每個產出檔案都是完整的 markdown 文件,文件之間保持一致的連結。

產出檔案:

.aiwg/intake/
├── README.md                    # 導入索引與專案摘要
├── 01-initial-reconnaissance.md   # 步驟 1
├── 02-architecture-analysis.md    # 步驟 2
├── 03-dependencies-infrastructure.md # 步驟 3
├── 04-scale-and-usage-analysis.md # 步驟 4
├── 05-security-compliance.md      # 步驟 5
├── 06-profile-recommendation.md   # 步驟 6
└── .metadata.json                # 導入中繼資料(用於系統追蹤)

每個檔案應包含:

  1. 匯總分析結果的結構化標頭
  2. 由掃描指令支援的證據摘要
  3. 基於證據的推斷部分
  4. 待辦事項部分,標示為「後續步驟」
  5. 交叉引用其他導入文件

使用範例

基本使用:

/intake-from-codebase /path/to/codebase

含有指引:

/intake-from-codebase /path/to/codebase --guidance "Legacy monolith, need to plan migration to microservices"

互動模式:

/intake-from-codebase /path/to/codebase --interactive

完整選項:

/intake-from-codebase /path/to/codebase --interactive --output docs/intake/ --guidance "Fintech app, PCI-DSS required, preparing for Series A"

實作注意事項

  1. 語言偵測:使用副檔名與 package manager 檔案來辨識主要語言與框架
  2. 架構推斷:尋找常見模式(目錄結構、框架規定、部署設定)
  3. 安全掃描:尋找驗證、授權、資料保護與秘密管理的證據
  4. 規模估計:根據快取、佇列、資料庫模式推斷容量
  5. 環境變數:檢查 .env.example 以了解預期的設定
  6. Git 歷史:使用 git log 了解開發模式與團隊規模
  7. 錯誤處理:優雅地處理缺少的檔案或目錄(並非所有程式碼庫都有 packages.json 或 requirements.txt)
  8. 檔案大小限制:對於大型程式碼庫,優先掃描關鍵路徑
  9. 指引優先順序:指引總是優於預設推斷
  10. 互動有限制:最多 10 個澄清問題以避免疲勞

品質保證

在完成分析之前:

  • 所有推斷都有程式碼庫中的證據支援
  • 資料分類與法規遵循分析基於實際發現
  • 規模估計與發現一致(無過度承諾)
  • 如果提供了指引,應反映在分析中
  • 針對互動模式,已回答或記錄了間歇性問題
  • 輸出格式符合預期結構
  • 檔案之間存在交叉引用
  • 已識別並記錄 Microsoft 堆疊(如果存在)

其他備註

  • 非同步處理:對於大型程式碼庫,考慮逐步進行分析
  • 快取:如果最近掃描過同一個程式碼庫,啟用結果快取
  • 互動式回饋:允許使用者澄清或更正假設
  • 可延伸性:為自訂分析器預留掛鉤
  • 記錄:使用 aiwg-doctor 進行診斷檢查
  • 錯誤:使用 aiwg-status 檢查系統狀態
  • 重新整理:使用 aiwg-refresh 更新現有導入
  • 探索:使用 aiwg discover"intake" 探索其他導入技能

相關技能