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

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.0.tar.gz (12.1 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.0-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: scryr-0.1.0.tar.gz
  • Upload date:
  • Size: 12.1 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.0.tar.gz
Algorithm Hash digest
SHA256 8604e9f9dafd6ae1406693dce18acc44911a76f75abbd95bfc5b0d874cdad979
MD5 ec64b1dde9a20a5b0d0ab3c9a1f89b7d
BLAKE2b-256 3526a89695bdc079c8c7030329405ef506b34d39284d4f69fcd753049a46a0ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: scryr-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.5 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 794bf2a185014ed13be0403b0b64fded3f53c4839d835894696daa7152ae8d62
MD5 9bfec7b13d11529ebf00d9ca0548b082
BLAKE2b-256 6b25ee72941befd4f5a4b84fc5d1856ff48ceefa28b2e6aca3a9fcb6d5f539ab

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