BMAD · · 6 min read

Codebase Flattener Tool  程式碼庫平整工具

The BMAD-METHOD™ includes a powerful codebase flattener tool designed to prepare your project files for AI model consumption when uploading to web AI tools. This tool aggregates your entire codebase into a single XML file, making it easy to share your project context with AI assistants for analysis, debugging, or development assistance.
BMAD-METHOD™ 包含一個強大的程式碼庫平整工具,專為在上傳至網路 AI 工具時準備專案檔案以供 AI 模型使用而設計。此工具會將整個程式碼庫彙整成單一的 XML 檔案,方便與 AI 助手分享專案上下文以進行分析、除錯或開發協助。

Features  功能

  • AI-Optimized Output: Generates clean XML format specifically designed for AI model consumption
    AI 最佳化輸出:產生專為 AI 模型使用而設計的乾淨 XML 格式
  • Smart Filtering: Automatically respects .gitignore patterns to exclude unnecessary files, plus optional project-level .bmad-flattenignore for additional exclusions if planning to flatten an existing repository for external update and analysis
    智慧過濾:自動遵循 .gitignore 模式以排除不必要的檔案,並可選擇使用專案層級的 .bmad-flattenignore 以進一步排除(適用於計劃將現有版本庫攤平成以供外部更新與分析時)
  • Binary File Detection: Intelligently identifies and excludes binary files, focusing on source code
    二進位檔案偵測:智慧識別並排除二進位檔案,專注於原始程式碼
  • Progress Tracking: Real-time progress indicators and comprehensive completion statistics
    進度追蹤:即時進度指示與完整的完成統計
  • Flexible Output: Customizable output file location and naming
    彈性輸出:可自訂輸出檔案的位置與命名

Usage  使用說明

# Basic usage - creates flattened-codebase.xml in current directory
npx bmad-method flatten

# Specify custom input directory
npx bmad-method flatten --input /path/to/source/directory
npx bmad-method flatten -i /path/to/source/directory

# Specify custom output file
npx bmad-method flatten --output my-project.xml
npx bmad-method flatten -o /path/to/output/codebase.xml

# Combine input and output options
npx bmad-method flatten --input /path/to/source --output /path/to/output/codebase.xml

Example Output  範例輸出

The tool will display progress and provide a comprehensive summary:
該工具會顯示進度並提供完整摘要:

📊 Completion Summary:
✅ Successfully processed 156 files into flattened-codebase.xml
📁 Output file: /path/to/your/project/flattened-codebase.xml
📏 Total source size: 2.3 MB
📄 Generated XML size: 2.1 MB
📝 Total lines of code: 15,847
🔢 Estimated tokens: 542,891
📊 File breakdown: 142 text, 14 binary, 0 errors

The generated XML file contains your project's text-based source files in a structured format that AI models can easily parse and understand, making it perfect for code reviews, architecture discussions, or getting AI assistance with your BMAD-METHOD™ projects.
產生的 XML 檔案以結構化格式包含您專案的文字型原始檔,便於 AI 模型解析與理解,非常適合用於程式碼審查、架構討論或尋求 AI 對您 BMAD-METHOD™ 專案的協助。

Advanced Usage & Options  進階用法與選項

  • CLI options   CLI 選項
    • -i, --input <path>: Directory to flatten. Default: current working directory or auto-detected project root when run interactively.
      -i, --input <path> :要攤平的目錄。預設:目前工作目錄,或在互動式執行時自動偵測的專案根目錄。
    • -o, --output <path>: Output file path. Default: flattened-codebase.xml in the chosen directory.
      -o, --output <path> :輸出檔案路徑。預設:所選目錄中的 flattened-codebase.xml 。
  • Interactive mode   互動模式
    • If you do not pass --input and --output and the terminal is interactive (TTY), the tool will attempt to detect your project root (by looking for markers like .gitpackage.json, etc.) and prompt you to confirm or override the paths.
      如果你沒有傳入 --input 與 --output ,且終端為互動式(TTY),該工具會嘗試偵測你的專案根目錄(透過尋找像 .git 、 package.json 等標記),並提示你確認或覆寫這些路徑。
    • In non-interactive contexts (e.g., CI), it will prefer the detected root silently; otherwise it falls back to the current directory and default filename.
      在非互動情境(例如 CI)中,工具會靜默地採用偵測到的根目錄;否則會回退到目前目錄與預設檔名。
  • File discovery and ignoring
    檔案發現與忽略
    • Uses git ls-files when inside a git repository for speed and correctness; otherwise falls back to a glob-based scan.
      在位於 git 儲存庫內時使用 git ls-files 以提高速度和正確性;否則回退為基於 glob 的掃描。
    • Applies your .gitignore plus a curated set of default ignore patterns (e.g., node_modules, build outputs, caches, logs, IDE folders, lockfiles, large media/binaries, .env*, and previously generated XML outputs).
      套用你的 .gitignore 加上一組精選的預設忽略模式(例如 node_modules 、建置輸出、快取、日誌、IDE 資料夾、鎖定檔案、大型媒體/二進位檔、 .env* ,以及先前產生的 XML 輸出)。
    • Supports an optional .bmad-flattenignore file at the project root for additional ignore patterns (gitignore-style). If present, its rules are applied after .gitignore and the defaults.
      支援在專案根目錄放置可選的 .bmad-flattenignore 檔案以加入額外的忽略模式(gitignore 風格)。如果存在,其規則會在 .gitignore 與預設項目之後套用。

.bmad-flattenignore example   .bmad-flattenignore 範例

Create a .bmad-flattenignore file in the root of your project to exclude files that must remain in git but should not be included in the flattened XML:
在專案根目錄建立一個 .bmad-flattenignore 檔案,用以排除那些必須保留在 git 中但不應包含在展平後 XML 的檔案:

seeds/**
scripts/private/**
**/*.snap
  • Binary handling   二進位處理
    • Binary files are detected and excluded from the XML content. They are counted in the final summary but not embedded in the output.
      二進位檔案會被偵測並從 XML 內容中排除。它們會在最終摘要中計數,但不會嵌入輸出中。
  • XML format and safety
    XML 格式與安全性
    • UTF-8 encoded file with root element <files>.
      以 UTF-8 編碼的檔案,根元素為 <files> 。
    • Each text file is emitted as a <file path="relative/path"> element whose content is wrapped in <![CDATA[ ... ]]>.
      每個文字檔案都作為一個 <file path="relative/path"> 元素輸出,其內容被包裹在 <![CDATA[ ... ]]> 中。
    • The tool safely handles occurrences of ]]> inside content by splitting the CDATA to preserve correctness.
      該工具會透過拆分 CDATA 來處理內容中出現的 ]]> ,以確保正確性。
    • File contents are preserved as-is and indented for readability inside the XML.
      檔案內容以原樣保留並為了在 XML 內的可讀性而縮排。
  • Performance   效能
    • Concurrency is selected automatically based on your CPU and workload size. No configuration required.
      會根據您的 CPU 與工作負載大小自動選擇並行度,無需任何設定。
    • Running inside a git repo improves discovery performance.
      在 git 倉庫內執行可提升偵測效能。

Minimal XML example  最簡單的 XML 範例

<?xml version="1.0" encoding="UTF-8"?>
<files>
<file path="src/index.js"><![CDATA[
// your source content
]]></file>
</files>

Read next

Github Spec Kit ·

AI × SDD - HappyDesigner 20251025

活動開場 今天很榮幸邀請保哥來分享 AI 跟 Spec-Driven Development。我相信大家如果用 AI 寫 code 的話,這是最近的顯學。但是怎麼使用,然後各種心法,我覺得都可以互相交流。 我是布丁,我是 Happy Design 社群的

BMAD ·

The Official BMad-Method Masterclass (The Complete IDE Workflow)

介紹和概述 大家好,我是 Brian,BMAD 方法的建立者。這將是一個很長的影片,但我想展示使用 Claude Code 的所有相關內容,包括所有代理人、所有選項,全部都在 IDE 內完成。這是我第一次這樣做,我想向你們展示許多細節,以及一些我從未在影片中演示過的酷炫功能。而且我也從未見過其他人展示過這些技巧。

BMAD ·

BMad Method V4 Complete Step-by-Step Install, Upgrade and Execution

前言與改進概述 自從我上次的影片以來,BMAD 方法發生了很多變化。它已經被簡化,增加了安裝程式,還有很多令人興奮的新功能和改進。我將逐步演示,不會跳過任何內容,並向你展示如何在你選擇的 IDE 中安裝和設定 BMAD 方法。 貢獻者致謝 這裡有很多優秀的 BMAD 方法貢獻者。我想感謝 Kayan、