Project Tree
Project Tree is a small, deterministic utility that generates a Markdown representation of a project’s directory structure.
Features
- Generates a deterministic Markdown project tree
- Uses a simple, explicit ignore system based on exact name matching
- Optional watch mode for continuous regeneration
- Minimal, testable design
Installation
Simply run:
pipx install project-tree
Or if you already have UV installed, simply run:
uv tool install project-tree
Getting Started
Run projtree from your project root to generate structure.md.
projtree
Usage
Run projtree with --help to see the command reference and options.
projtree --help
Or see the usage documentation for the full command reference, options, and example output.
Ignore System
- Built-in defaults include common directory and file names (e.g.
.git,__pycache__,node_modules) - A
.projtreeignorefile in the project root is supported - For normal runs, CLI
--ignorearguments are merged with project and built-in ignores - In
--watchmode, CLI--ignorevalues are also forwarded, so watching uses built-in defaults,.projtreeignore, and any CLI-supplied ignores - Ignore rules match exact names anywhere in the tree (e.g.,
srcignores any file/dir namedsrcat any depth) - Ignore entries are treated as exact names, not paths. For example,
targetworks, butsrc/targetdoes not match nested paths - No globbing, wildcards, or pattern-based matching in v1
- If the output file is under the project root, its file name is also added to the ignore set to prevent regeneration loops
Example .projtreeignore:
.venv
__pycache__
build
dist
Running Tests
If you installed development dependencies:
pytest
Tree-format tests assert against full output; a separate test checks repeatability. Watcher tests cover event filtering, renames, ignore-rule reloads, and one live regeneration smoke test.
License
This project is licensed under the MIT License. See LICENSE for details.
Metadata
Release files for project-tree 1.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| project_tree-1.3.2.tar.gz | 11.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| project_tree-1.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.1 kB
Release files / project_tree-1.3.2.tar.gz
| Download URL | project_tree-1.3.2.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6ee2b382b768adb6a1c9fe299f114e8acaaa63ddf4faef68e2b7b5408fea3004
|
|
BLAKE2b-256 checksum How to use checksums |
c58af72608dab9c1f57450703c9dba882284344a1a462a7a161af0ca88ba2b9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / project_tree-1.3.2-py3-none-any.whl
| Download URL | project_tree-1.3.2-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
834b89d151be78bb623e8b9db542a9c8809a07c6c801deea47a43a06fcdd3301
|
|
BLAKE2b-256 checksum How to use checksums |
5bc041fba69b906a5b5488583beb81829854054e1969e9ca985a583c531bb4dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log