Skip to main content

A minimal tool that maps project structure and intent

Project description

Scryr

A minimal CLI tool that maps project structure and intent across all programming languages. Think of it as tree, but smarter and calmer.

Features

  • ๐ŸŒ Multi-language support: Python, JavaScript/TypeScript, Go, Rust, Java, C/C++, Ruby, PHP, and more
  • ๐ŸŒณ Clean ASCII tree visualization with Unicode box characters
  • ๐Ÿง  Intelligent file analysis based on imports, comments, and folder context
  • ๐ŸŽจ Beautiful terminal output using Rich
  • ๐Ÿšซ Automatic filtering of noise folders (venv, node_modules, .git, etc.)
  • โšก Fast and lightweight - no ML, no AST parsing
  • ๐Ÿ“ฆ Easy to install and use

Installation

pip install scryr

Or install from source:

git clone https://github.com/Prajwal-Pujari/scryr.git
cd scryr
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .

Usage

Map the current directory:

scryr

Map a specific directory:

scryr /path/to/project

Limit depth:

scryr . --depth 3

Hide descriptions:

scryr . --no-description

Add custom ignore patterns:

scryr . --ignore logs --ignore temp

Help

scryr --help

Example Output

Python Project

myproject/
โ”œโ”€โ”€ agents/
โ”‚   โ”œโ”€โ”€ planner.py        # Agent module: task planning logic
โ”‚   โ””โ”€โ”€ executor.py       # Agent module: action execution
โ”œโ”€โ”€ vector_store/
โ”‚   โ””โ”€โ”€ chroma.py         # Memory module: ChromaDB vector storage
โ”œโ”€โ”€ api/
โ”‚   โ”œโ”€โ”€ routes.py         # API route definitions
โ”‚   โ””โ”€โ”€ dependencies.py   # Dependency injection
โ”œโ”€โ”€ main.py               # Application entry point
โ””โ”€โ”€ requirements.txt      # Python dependencies

JavaScript/React Project

webapp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ Header.tsx    # React component
โ”‚   โ”‚   โ””โ”€โ”€ Footer.tsx    # React component
โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ””โ”€โ”€ Home.tsx      # Page component
โ”‚   โ”œโ”€โ”€ hooks/
โ”‚   โ”‚   โ””โ”€โ”€ useAuth.ts    # React hooks
โ”‚   โ””โ”€โ”€ index.tsx         # React entry point
โ”œโ”€โ”€ package.json          # NPM package manifest
โ””โ”€โ”€ tsconfig.json         # TypeScript configuration

Go Project

goapp/
โ”œโ”€โ”€ cmd/
โ”‚   โ””โ”€โ”€ server/
โ”‚       โ””โ”€โ”€ main.go       # Main entry point
โ”œโ”€โ”€ internal/
โ”‚   โ”œโ”€โ”€ handlers/
โ”‚   โ”‚   โ””โ”€โ”€ user.go       # HTTP handler
โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ””โ”€โ”€ auth.go       # Service layer
โ”‚   โ””โ”€โ”€ models/
โ”‚       โ””โ”€โ”€ user.go       # Data model
โ”œโ”€โ”€ go.mod                # Go module definition
โ””โ”€โ”€ Dockerfile            # Docker container definition

Rust Project

rustapp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.rs           # Main entry point
โ”‚   โ”œโ”€โ”€ lib.rs            # Library root
โ”‚   โ””โ”€โ”€ handlers/
โ”‚       โ””โ”€โ”€ api.rs        # HTTP handler
โ”œโ”€โ”€ Cargo.toml            # Rust package manifest
โ””โ”€โ”€ Cargo.lock            # Lock file

Supported Languages

Language File Types Detection
Python .py Docstrings, imports (FastAPI, Django, Flask, etc.)
JavaScript .js, .mjs, .cjs JSDoc, imports (Express, React, etc.)
TypeScript .ts, .tsx JSDoc, imports
Go .go Package comments, imports (Gin, Fiber, etc.)
Rust .rs Doc comments, use statements (Actix, Tokio, etc.)
Java .java Imports (Spring, Hibernate, etc.)
C/C++ .c, .cpp, .h, .hpp Includes
Ruby .rb Requires (Rails, Sinatra, etc.)
PHP .php Use statements (Laravel, Symfony, etc.)

Intelligence Rules

Scryr uses multiple signals to infer file purpose:

  • Special filenames: main.py, index.js, Dockerfile, etc.
  • Import/require statements: Detects frameworks and libraries
  • Folder context: Files in api/, models/, components/, etc.
  • Documentation: Docstrings, JSDoc, package comments
  • Naming conventions: *Controller.java, *_test.go, etc.

Folder Intelligence

Scryr recognizes common project structures:

  • API/Backend: api/, routes/, controllers/, handlers/, middleware/
  • Services: services/, business/, logic/, domain/
  • Data Layer: models/, entities/, schemas/, repositories/, db/
  • Frontend: components/, views/, pages/, hooks/, store/
  • AI/ML: agents/, vector_store/, embeddings/, llm/
  • Utilities: utils/, helpers/, lib/, common/
  • Configuration: config/, settings/, env/
  • Testing: tests/, __tests__/, spec/

Philosophy

  • No machine learning
  • No AST parsing
  • No over-engineering
  • If something is printed, it must help
  • Works across all major programming languages

Requirements

  • Python 3.9+
  • rich >= 13.0.0

Testing

Try Scryr on different types of projects:

# Python project
scryr ~/my-python-app

# JavaScript/React project
scryr ~/my-react-app

# Go project
scryr ~/my-go-api

# Rust project  
scryr ~/my-rust-service

# Mixed polyglot project
scryr ~/my-microservices

The tool will intelligently detect the language, parse imports/requires/uses, extract documentation, and provide meaningful descriptions for every file type!

License

MIT License - see LICENSE file for details

Contributing

Contributions welcome! Please feel free to submit a Pull Request.

Author

Prajwal (imprajwal793@gmail.com)

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

scryr-0.1.1.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

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

scryr-0.1.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file scryr-0.1.1.tar.gz.

File metadata

  • Download URL: scryr-0.1.1.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for scryr-0.1.1.tar.gz
Algorithm Hash digest
SHA256 63ca20b303e1b22a2af889ac2782766943a970e7ade89348b8f8e016fe91e808
MD5 6dcacfd8a3f361183441e37a37d4f198
BLAKE2b-256 fad9909a1a80bc4ae4a7d2e83e5a58c9f2aa9cd95745198c1269bb08962b208c

See more details on using hashes here.

File details

Details for the file scryr-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: scryr-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for scryr-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17e7024b13cc6b9331506196f12bcc7d19e83d36f64f974cc29d66f22839e3da
MD5 bfd588e268535c0be924f657b0992813
BLAKE2b-256 4d3eaa52f007db1618aa45f5aa9859ccbf3e98bcab125c7577fdf68903b65bef

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