Skip to main content

CLI & library to convert project directories โ†” text trees. Ideal for AI scaffolding & codebase analysis.

Project description

๐ŸŒฒโ†”๏ธ๐Ÿ“ x2fromx

PyPI version Python 3.8+ License: MIT

Convert project directories โ†” text trees in one command.
Built for developers & AI enthusiasts who need to scaffold projects from LLM outputs or extract codebase structure for context analysis.


๐Ÿš€ Why x2fromx?

  • ๐Ÿค– AI-Ready: Paste a tree.txt into ChatGPT/Claude, get a modified architecture back, and rebuild it instantly.
  • โšก Zero Dependencies: Pure Python standard library. Works everywhere, instantly.
  • ๐Ÿงน Smart Filtering: Automatically ignores .git, node_modules, __pycache__, binaries, and images.
  • ๐ŸŒฑ Auto-Seeding: Creates boilerplate content (.py, .html, .js, etc.) so your IDE doesn't complain.
  • ๐Ÿ–ฅ๏ธ CLI & Library: Use it in your terminal or import it directly into your Python scripts.

๐Ÿ“ฆ Installation

pip install x2fromx

๐Ÿ› ๏ธ CLI Usage ๐Ÿ” Scan a directory โ†’ generate a tree file

x2fromx scan ./my_existing_project -o structure.txt --print

๐Ÿ—๏ธ Build a project from a tree file

x2fromx build structure.txt -n my_new_project --overwrite

Available flags:

Flag Description
scan Path to the folder to analyze
build Path to the .txt tree file
-o, --output Output filename (default: project_structure.txt)
-n, --name Root project name for build (default: new_project)
--print Print the tree in the terminal after saving
--overwrite Force overwrite if the target folder already exists

๐Ÿค– AI Workflow (The Killer Feature)

  1. Extract context: x2fromx scan ./legacy_app -o context.txt
  2. Ask an LLM: "Here is my project structure. Refactor it to add a /tests folder, split routes.py into a router package, and add a Dockerfile. Return the full tree."
  3. Save the response: Paste the LLM's output into refactored.txt
  4. Scaffold instantly: x2fromx build refactored.txt -n app_v2
  5. Start coding: Your IDE opens a ready-to-use structure with placeholders.

๐Ÿ Python API

from x2fromx import DirectoryScanner, ProjectBuilder

# Scan
scanner = DirectoryScanner("./src", "tree.txt")
scanner.save()

# Build
builder = ProjectBuilder("tree.txt", "my_project")
count, root = builder.build(overwrite=True)
print(f"Created {count} items in {root}")

๐Ÿ“ Example Output

my_project/
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ src/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ api/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ routes.py # Endpoint API
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“„ schemas.py
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ main.py # TODO: Implement logic
โ”œโ”€โ”€ ๐Ÿ“ tests/
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ test_api.py # Tests unitaires
โ”œโ”€โ”€ ๐Ÿ“„ README.md # Documentation
โ””โ”€โ”€ ๐Ÿ“„ requirements.txt # Dรฉpendances Python

๐Ÿ’ก Windows users: x2fromx auto-detects file encoding (UTF-8, cp1252, latin-1). If you create tree files with echo, they'll work out of the box. For best results, use UTF-8 when possible.

๐Ÿค Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“œ License

Distributed under the MIT License. See LICENSE for more information.


๐Ÿ’™ Support

If you use and value this tool, consider supporting its development:
Sponsor

Python Flask TypeScript AI Founder

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

x2fromx-0.1.3.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

x2fromx-0.1.3-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file x2fromx-0.1.3.tar.gz.

File metadata

  • Download URL: x2fromx-0.1.3.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for x2fromx-0.1.3.tar.gz
Algorithm Hash digest
SHA256 21c2052847e11b373234eb2d26fcdd289f63ca660d199bfd254bcc5866fc24ba
MD5 71d148647f6de07ca3e452027777e231
BLAKE2b-256 082ee4298af13b2460c48e4e604b3e1479479cf3ea0c70849343d9984ebef37b

See more details on using hashes here.

File details

Details for the file x2fromx-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: x2fromx-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for x2fromx-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3c282f4ac663fbaa440a0b26d0bfaa0d399c8e2d89568d6fb071e0b8ea6e68d6
MD5 83a477d8da2bcb52bd481d8b48dc5d20
BLAKE2b-256 33be52222ccc05b370c559231197ee4fa9c84b2c64ce1ea596963d301ab822f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page