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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63ca20b303e1b22a2af889ac2782766943a970e7ade89348b8f8e016fe91e808
|
|
| MD5 |
6dcacfd8a3f361183441e37a37d4f198
|
|
| BLAKE2b-256 |
fad9909a1a80bc4ae4a7d2e83e5a58c9f2aa9cd95745198c1269bb08962b208c
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17e7024b13cc6b9331506196f12bcc7d19e83d36f64f974cc29d66f22839e3da
|
|
| MD5 |
bfd588e268535c0be924f657b0992813
|
|
| BLAKE2b-256 |
4d3eaa52f007db1618aa45f5aa9859ccbf3e98bcab125c7577fdf68903b65bef
|