{
  "slug": "files-to-prompt",
  "name": "gizza-ai/files-to-prompt",
  "version": "0.1.0",
  "title": "Files to Prompt — Bundle Files into One LLM Prompt — gizza.ai",
  "description": "Bundle multiple files into one LLM-ready prompt: a directory tree, fenced file contents, and a token estimate. Free, in your browser, nothing uploaded.",
  "tags": [
    "files to prompt",
    "code to prompt",
    "concatenate files for llm",
    "repo to text",
    "codebase to prompt",
    "llm context bundler",
    "claude xml documents",
    "directory tree",
    "token estimate"
  ],
  "category": "documents",
  "urls": {
    "page": "https://gizza.ai/tools/files-to-prompt/",
    "markdown": "https://gizza.ai/tools/files-to-prompt/index.md",
    "descriptor": "https://gizza.ai/tools/files-to-prompt/tool.json",
    "deep_link_example": "https://gizza.ai/tools/files-to-prompt/?files=%3D%3D%3D%20src%2Fmain.rs%0Afn%20main%28%29%20%7B%7D%0A%0A%3D%3D%3D%20README.md%0A%23%20Title&format=markdown&separator=%3D%3D%3D&line_numbers=true&include_tree=true"
  },
  "cli": "gizza tool files-to-prompt \"=== src/main.rs\nfn main() {}\n\n=== README.md\n# Title\"",
  "tool": {
    "description": "Bundle multiple files into a single LLM-ready prompt digest with a directory tree, each file's contents, and a rough token estimate. Paste the files in 'files', each preceded by a header line '<separator> path' (default separator '==='). Choose the output 'format' (markdown fenced blocks, Claude-XML <documents>, or plain files-to-prompt style), toggle 'line_numbers', and toggle the 'include_tree' directory tree. Pure text in, pure text out — no repo crawling or filesystem access.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "files": {
          "description": "The files to bundle, concatenated. Start each file with a header line '<separator> path/to/file.ext' (e.g. '=== src/main.rs'); everything up to the next header is that file's content. Any text before the first header is ignored.",
          "type": "string"
        },
        "format": {
          "default": "markdown",
          "description": "Output style. 'markdown' (default): a '## path' heading + a language-fenced code block per file. 'xml': a single Claude-style <documents> wrapper with one indexed <document> per file. 'plain': files-to-prompt's default — 'path', a '---' rule, contents, another '---'.",
          "enum": [
            "markdown",
            "xml",
            "plain"
          ],
          "type": "string"
        },
        "include_tree": {
          "default": true,
          "description": "Prepend a 'Directory structure:' tree built from the file paths, so the model sees the layout at a glance. Default true.",
          "type": "boolean"
        },
        "line_numbers": {
          "default": false,
          "description": "Prefix every content line with its right-aligned line number. Default false.",
          "type": "boolean"
        },
        "separator": {
          "default": "===",
          "description": "The marker that begins each file's header line (default '==='). Change it (e.g. '>>>') if your file contents contain lines starting with '==='.",
          "type": "string"
        }
      },
      "required": [
        "files"
      ],
      "type": "object"
    }
  }
}