coldpass

simonw/files-to-prompt

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/simonw--files-to-prompt.svg).

agent-harness

Works

The recorded run passed on 2 setups.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 27, 2026 · 1b234ff6dccb · claude-code / 2.1.310 (Claude Code)
Recorded operation: /tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py --cxml

Linux / Luna: yes · Oct 27, 2026 · 1b234ff6dccb · codex / codex-cli 0.164.0
Recorded operation: /tmp/ftp-venv/bin/files-to-prompt README.md

Does what it says
1 of 1 claims checked out
  • Concatenates file contents with relative path headers and separators: Real input produced the expected result: README.md --- # files-to-prompt

    Source: This will output the contents of every file, with each file preceded by its relative path and separated by `---`.

    Input: README.md

    Expected: README.md followed by its contents and --- separators

    Command: /tmp/ftp-venv/bin/files-to-prompt README.md

    Observed: README.md --- # files-to-prompt [![PyPI](https://img.shields.io/pypi/v/files-to-prompt.svg)](https://pypi.org/project/files-to-prompt/) [![Changelog](https://img.shields.io/github/v/release/simonw/files-to-prompt?include_prereleases&label=changelog)](https://github.com/simonw/files-to-prompt/releases) [![Tests](https://github.com/simonw/files-to-prompt/actions/workflows/test.yml/badge.svg)](https://github.com/simonw/files-to-prompt/actions/workflows/test.yml) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/files-to-prompt/blob/master/LICENSE)

MCP
No
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Abandoned
abandoned: last commit 615 days ago; 0 commits and 0 merged PRs in 90 days; 14 open issues, 19 open PRs; 10 of 49 recent threads got a maintainer reply, median first reply 235.9h; latest release 2025-02-19

Last commit Feb 19, 2025

Setup time
33 s
33 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Process a file using the documented command: command completed successfully

    Source: README.md / Usage

    Input: README.md

    Expected: File content is printed with relative path

    Command: /tmp/ftp-venv/bin/files-to-prompt README.md

    Observed: output: ````` myfile.py ```python def my_function(): return "Hello, world!" ``` other.js ```javascript function myFunction() { return "Hello, world!"; } ``` file_with_triple_backticks.md ````markdown This file has its own ``` fenced code blocks ``` Inside it. ```` ````` ## Development To contribute to this tool, first checkout the code. Then create a new virtual environment: ```bash cd files-to-prompt python -m venv venv source venv/bin/activate ``` Now install the dependencies and test dependencies: ```bash pip install -e '.[test]' ``` To run the tests: ```bash pytest ``` ---

Evidence
README behavior checked
Agent interfaces
CLI
CLI

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.164.0 · Checked operation passed · Oct 27, 2026 on 1b234ff6dccb

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation /tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py --cxml

Agent-reported scope: Concatenate the files in a directory into one prompt with files-to-prompt (default, --cxml, and -o file output), plus the README's pytest suite

Run details
run
simonw--files-to-prompt-claude-haiku-5-5-1793088618294952866
date
Oct 27, 2026
time to working
97.2s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.310 (Claude Code)
platform
linux
reported cost
$0.012186
Recorded source
https://github.com/simonw/files-to-prompt
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "1b234ff6dccb2ca3e56b5c256696558fb85306dc", "url": "https://github.com/simonw/files-to-prompt"}
Test version
readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2
revision
1b234ff6dccb2ca3e56b5c256696558fb85306dc
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks.

No problems traced to this repository code in these checks.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Default output lists each file with its relative path followed by --- separators: Real input produced the expected result: files_to_prompt/cli.py

    Source: This will output the contents of every file, with each file preceded by its relative path and separated by `---`.

    Input: files_to_prompt -e py

    Expected: prints the relative path of cli.py

    Command: /tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py

    Observed: files_to_prompt/cli.py --- import os import sys from fnmatch import fnmatch import click global_index = 1 EXT_TO_LANG = { "py": "python", "c": "c", "cpp": "cpp", "java": "java", "js": "javascript", "ts": "typescript", "html": "html", "css": "css", "xml": "xml", "json": "json", "yaml": "yaml", "yml": "yaml", "sh": "bash", "rb": "ruby", } def should_ignore(path, gitignore_rules): for rule in gitignore_rules: if fnmatch(os.path.basename(path), rule): return True if os.path.isdir(path) and fnmatch(os.path.

  • --cxml produces Claude XML document output: Real input produced the expected result: <source>files_to_prompt/cli.py</source>

    Source: To structure the output in this way, use the optional `--cxml` flag, which will produce output like this:

    Input: files_to_prompt -e py --cxml

    Expected: XML source element for cli.py

    Command: /tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py --cxml

    Observed: <source>files_to_prompt/cli.py</source> <document_content> import os import sys from fnmatch import fnmatch import click global_index = 1 EXT_TO_LANG = { "py": "python", "c": "c", "cpp": "cpp", "java": "java", "js": "javascript", "ts": "typescript", "html": "html", "css": "css", "xml": "xml", "json": "json", "yaml": "yaml", "yml": "yaml", "sh": "bash", "rb": "ruby", } def should_ignore(path, gitignore_rules): for rule in gitignore_rules: if fnmatch(os.path.basename(path), rule): return True if os.path.

  • -o writes the output to a file: Real input produced the expected result: from .cli import cli

    Source: `-o/--output <file>`: Write the output to a file instead of printing it to the console.

    Input: files_to_prompt -e py -o <guest-path>

    Expected: file contains the python source of cli.py

    Command: /tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py -o <guest-path>

    Observed: from .cli import cli if __name__ == "__main__": cli() --- files_to_prompt/cli.py --- import os import sys from fnmatch import fnmatch import click global_index = 1 EXT_TO_LANG = { "py": "python", "c": "c", "cpp": "cpp", "java": "java", "js": "javascript", "ts": "typescript", "html": "html", "css": "css", "xml": "xml", "json": "json", "yaml": "yaml", "yml": "yaml", "sh": "bash", "rb": "ruby", } def should_ignore(path, gitignore_rules): for rule in gitignore_rules: if fnmatch(os.path.basename(path), rule):

Examples

  • The README development section runs the repository test suite with pytest: command completed successfully

    Source: README.md Development: To run the tests: pytest

    Input: pytest run from the checkout with the venv pytest after pip install -e '.[test]' (click 8.1.8 installed as deviation)

    Expected: all tests pass

    Command: /tmp/ftp-venv/bin/pytest -q

    Observed: .................... [100%] 20 passed in 0.45s

Local or hosted: local

What the agent did

Concatenate the files in a directory into one prompt with files-to-prompt (default, --cxml, and -o file output), plus the README's pytest suite

cd <guest-path> && pwd && ls -la && id -u && python3 --version && cat README.md | head -c 6000
cd <guest-path> && cat pyproject.toml 2>/dev/null | head -60; ls /inputs 2>/dev/null; cat setup.py 2>/dev/null | head -5
cd <guest-path> && tail -c 700 README.md; echo ----; cat .github/workflows/*.yml; ls tests; ls .coldpass
python3 -m venv /tmp/ftp-venv 2>&1 || (sudo -n apt-get -o DPkg::Lock::Timeout=300 install -y python3-venv >/tmp/apt.log 2>&1; python3 -m venv /tmp/ftp-venv); /tmp/ftp-venv/bin/python --version && /tmp/ftp-venv/bin/pip --version
cd <guest-path> && /tmp/ftp-venv/bin/pip install -e '.[test]' 2>&1 | tail -5; ls /tmp/ftp-venv/bin | grep -i files
cd <guest-path> && /tmp/ftp-venv/bin/pytest -q 2>&1 | tail -5; echo "rc=$?"; /tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py | head -20
cd <guest-path> && /tmp/ftp-venv/bin/pytest -q tests/test_files_to_prompt.py::test_binary_file_warning 2>&1 | head -60; echo "pytest_rc=${PIPESTATUS[0]}"
cd <guest-path> && /tmp/ftp-venv/bin/pip install -q 'click<8.2' 2>&1 | tail -2; /tmp/ftp-venv/bin/pip show click | head -2; /tmp/ftp-venv/bin/pytest -q 2>&1 | tail -3
cd <guest-path> && F=/tmp/ftp-venv/bin/files-to-prompt; $F files_to_prompt -e py --cxml | head -8; echo ----; mkdir -p <guest-path> && $F files_to_prompt -e py -o <guest-path>; echo "rc=$?"; ls -la <guest-path>; head -c 300 <guest-path>; echo; git status 2>/dev/null | head -2; ls -a
rm -f <guest-path> && cd <guest-path> && cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["/tmp/ftp-venv/bin/files-to-prompt","files_to_prompt","-e","py","--cxml"],"cwd":"<guest-path>","expected_text":"<source>files_to_prompt/cli.py</source>"}
EOF
cat .coldpass/probe.json && /tmp/ftp-venv/bin/python -I -c 'import json;json.load(open(".coldpass/probe.json"))' && echo ok; ls <guest-path> /inputs 2>&1 | head
cd <guest-path> && cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Default output lists each file with its relative path followed by --- separators","source":"This will output the contents of every file, with each file preceded by its relative path and separated by `---`.","input":"files_to_prompt -e py","expected":"prints the relative path of cli.py","probe_kind":"cli","argv":["/tmp/ftp-venv/bin/files-to-prompt","files_to_prompt","-e","py"],"expected_text":"files_to_prompt/cli.py","cwd":"<guest-path>"},
{"kind":"claim","claim":"--cxml produces Claude XML document output","source":"To structure the output in this way, use the optional `--cxml` flag, which will produce output like this:","input":"files_to_prompt -e py --cxml","expected":"XML source element for cli.py","probe_kind":"cli","argv":["/tmp/ftp-venv/bin/files-to-prompt","files_to_prompt","-e","py","--cxml"],"expected_text":"<source>files_to_prompt/cli.py</source>","cwd":"<guest-path>"},
{"kind":"claim","claim":"-o writes the output to a file","source":"`-o/--output <file>`: Write the output to a file instead of printing it to the console.","input":"files_to_prompt -e py -o <guest-path>","expected":"file contains the python source of cli.py","probe_kind":"cli","argv":["/tmp/ftp-venv/bin/files-to-prompt","files_to_prompt","-e","py","-o","<guest-path>"],"expected_file":"<guest-path>","expected_text":"from .cli import cli","cwd":"<guest-path>"}]
EOF
/tmp/ftp-venv/bin/python -I -c 'import json;print(len(json.load(open(".coldpass/claims.json"))))'
cd <guest-path> && cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"The README development section runs the repository test suite with pytest","source":"README.md Development: To run the tests: pytest","input":"pytest run from the checkout with the venv pytest after pip install -e '.[test]' (click 8.1.8 installed as deviation)","expected":"all tests pass","argv":["/tmp/ftp-venv/bin/pytest","-q"],"cwd":"<guest-path>","expected_text":"20 passed"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Entry points inspected: pyproject.toml defines only the console script files-to-prompt = files_to_prompt.cli:cli, a one-shot command with no scheduler, cron, loop, webhook, --once or --now option. The only scheduled workflows are GitHub CI/publish workflows in .github, which are not product cycles.","checks":[]}
EOF
/tmp/ftp-venv/bin/python -I -c 'import json;json.load(open(".coldpass/examples.json"));json.load(open(".coldpass/cycles.json"));print("ok")'
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -c 4000; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > <guest-path> 2><guest-path>; echo rc=$?; /tmp/ftp-venv/bin/python -I -c 'import json;d=json.load(open("<guest-path>"));print({k:(v if not isinstance(v,(list,dict)) else type(v).__name__) for k,v in d.items()}); print(d.get("valid"), d.get("probe",{}).get("verdict") if isinstance(d.get("probe"),dict) else str(d.get("probe"))[:300])' 2>&1 | head -c 2000; echo; head -c 600 <guest-path>
cd <guest-path> && /tmp/ftp-venv/bin/python -I -c 'import json;d=json.load(open("<guest-path>"));print(d["problems"])' && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Concatenate the files in a directory into one prompt with files-to-prompt (default, --cxml, and -o file output), plus the README's pytest suite","operation_scope":"Linux guest, Python 3.12.3, venv at /tmp/ftp-venv, pip install -e '.[test]' from the pinned checkout; no network or browser needed","steps":["python3 -m venv /tmp/ftp-venv","/tmp/ftp-venv/bin/pip install -e '.[test]'","/tmp/ftp-venv/bin/pytest","/tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py --cxml","/tmp/ftp-venv/bin/files-to-prompt files_to_prompt -e py -o <guest-path>"],"deviations":["Initial pytest run with the unpinned click (8.5.0) failed 1 of 20 tests: tests/test_files_to_prompt.py::test_binary_file_warning raises TypeError because CliRunner(mix_stderr=False) is no longer accepted by click 8.2+. Ran pip install 'click<8.2' (installed 8.1.8) in the venv only; then pytest gave 20 passed. No source files were edited.","Python 3.12 is used; the CI matrix covers 3.9-3.13 and was not tested on other versions.","The README-named installer path /inputs/coldpass-preflight.py does not exist in this guest; the checker at <guest-path> was run instead.","pip install -e created files_to_prompt.egg-info and pytest created .pytest_cache in the checkout (build/test artifacts, not source edits)."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"Pin click below 8.2 in pyproject.toml (for example click<8.2), or update tests/test_files_to_prompt.py to drop mix_stderr so the suite passes with current click releases."}
EOF
/tmp/ftp-venv/bin/python -I -c 'import json;print(json.load(open(".coldpass/report.json"))["outcome"])'; ls -la .coldpass; ls <guest-path>
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation /tmp/ftp-venv/bin/files-to-prompt README.md

Agent-reported scope: Concatenate file contents for prompt use

Run details
run
simonw--files-to-prompt-gpt-6-luna-1793088772621399382
date
Oct 27, 2026
time to working
32.8s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.164.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/simonw/files-to-prompt
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "1b234ff6dccb2ca3e56b5c256696558fb85306dc", "url": "https://github.com/simonw/files-to-prompt"}
Test version
readme-38e6b13f3b13804effb95797e3466b1a1334da7a232d897cbc8965867f802605
revision
1b234ff6dccb2ca3e56b5c256696558fb85306dc
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks.

No problems traced to this repository code in these checks.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Concatenates file contents with relative path headers and separators: Real input produced the expected result: README.md --- # files-to-prompt

    Source: This will output the contents of every file, with each file preceded by its relative path and separated by `---`.

    Input: README.md

    Expected: README.md followed by its contents and --- separators

    Command: /tmp/ftp-venv/bin/files-to-prompt README.md

    Observed: README.md --- # files-to-prompt [![PyPI](https://img.shields.io/pypi/v/files-to-prompt.svg)](https://pypi.org/project/files-to-prompt/) [![Changelog](https://img.shields.io/github/v/release/simonw/files-to-prompt?include_prereleases&label=changelog)](https://github.com/simonw/files-to-prompt/releases) [![Tests](https://github.com/simonw/files-to-prompt/actions/workflows/test.yml/badge.svg)](https://github.com/simonw/files-to-prompt/actions/workflows/test.yml) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/files-to-prompt/blob/master/LICENSE)

Examples

  • Process a file using the documented command: command completed successfully

    Source: README.md / Usage

    Input: README.md

    Expected: File content is printed with relative path

    Command: /tmp/ftp-venv/bin/files-to-prompt README.md

    Observed: output: ````` myfile.py ```python def my_function(): return "Hello, world!" ``` other.js ```javascript function myFunction() { return "Hello, world!"; } ``` file_with_triple_backticks.md ````markdown This file has its own ``` fenced code blocks ``` Inside it. ```` ````` ## Development To contribute to this tool, first checkout the code. Then create a new virtual environment: ```bash cd files-to-prompt python -m venv venv source venv/bin/activate ``` Now install the dependencies and test dependencies: ```bash pip install -e '.[test]' ``` To run the tests: ```bash pytest ``` ---

Local or hosted: local

What the agent did

Concatenate file contents for prompt use

pwd && ls -la && sed -n '1,240p' README.md && python3 --version && rg --files -g '!*lock*' | head -100
python3 -m pip --version; cat pyproject.toml; ls -la files_to_prompt; ls -la tests;
python3 -m venv /tmp/ftp-venv && /tmp/ftp-venv/bin/pip install . && /tmp/ftp-venv/bin/files-to-prompt README.md -e md | head -8
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["/tmp/ftp-venv/bin/files-to-prompt","README.md"],"cwd":"<guest-path>","expected_text":"Concatenate a directory full of files into a single prompt for use with LLMs"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Concatenates file contents with relative path headers and separators","source":"This will output the contents of every file, with each file preceded by its relative path and separated by `---`. ","input":"README.md","expected":"README.md followed by its contents and --- separators","probe_kind":"cli","argv":["/tmp/ftp-venv/bin/files-to-prompt","README.md"],"expected_text":"README.md\n---\n# files-to-prompt","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Process a file using the documented command","source":"README.md / Usage","input":"README.md","expected":"File content is printed with relative path","argv":["/tmp/ftp-venv/bin/files-to-prompt","README.md"],"cwd":"<guest-path>","expected_text":"README.md\n---\n# files-to-prompt"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"README and entry points describe a one-shot file conversion command; no scheduler or cycle mechanism is documented.","checks":[]}
EOF
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Concatenate file contents for prompt use","operation_scope":"Python 3.12.3 venv; installed local package using pip","steps":["python3 -m venv /tmp/ftp-venv","/tmp/ftp-venv/bin/pip install .","/tmp/ftp-venv/bin/files-to-prompt README.md -e md"],"deviations":[],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF

<env-var>=<guest-path> python3 -I <guest-path> --validate --replay