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.2.tar.gz (15.6 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.2-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: scryr-0.1.2.tar.gz
  • Upload date:
  • Size: 15.6 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.2.tar.gz
Algorithm Hash digest
SHA256 ac568d9ef4309e9430b94eb0ceacd5ae5028b25bc1f1eb762fa6367e330102cb
MD5 94d45ec1d98a6055a5a13fa13ae83fcc
BLAKE2b-256 ceec867c6e472a24952647f54f692aef1eaad098afa624ad0124290f98475899

See more details on using hashes here.

File details

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

File metadata

  • Download URL: scryr-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 17.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b5d320759a268ee926195c2af6f7db7dd75dd22ef600f93d81a26dd798e080ed
MD5 fdc8986d66a4a044cba85a4c1918c8e9
BLAKE2b-256 4540d70da367260973507ed2e5baa98263516b98818ebf6f82507d86fce5d106

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