Project Structure Checker

Published: (December 17, 2025 at 01:49 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

What it does

PSX auto‑detects the project type (Node, Go, etc.) and runs a set of rules to ensure the repository has the essential files. If something’s missing you can run psx fix and it creates sensible defaults. Rules are configurable via a simple YAML file and checks run in parallel for speed.

Features

  • Automatic detection of project type and basic scaffolding
  • Auto‑fix mode that creates missing files and folders
  • Support for multiple languages (Node.js, Go, generic projects)
  • Configurable rules via a simple YAML file

Installation

Quick install

Linux / macOS

curl -sSL https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.sh | bash

Windows (PowerShell)

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/m-mdy-m/psx/main/scripts/install.ps1" -OutFile install.ps1; .\install.ps1 github

Download binary

Pre‑built releases are available on GitHub for Linux (amd64, arm64), macOS (amd64, arm64) and Windows (amd64). See the Releases page on the repository.

Build from source

git clone https://github.com/m-mdy-m/psx
cd psx
make build
sudo make install

Docker

docker pull bitsgenix/psx:latest
docker run --rm -v $(pwd):/project psx:latest check

Quick start

cd my-project
psx check

If PSX finds missing or weak items you can auto‑fix:

psx fix

To confirm each change interactively:

psx fix --interactive

Example config (psx.yml)

Place this file in the repository root. PSX will auto‑detect the project type if type is left empty.

version: 1
project:
  type: "go"
rules:
  readme: error
  license: warning
  gitignore: warning
  changelog: info

How auto‑fix works

psx fix reads your rules, determines what’s missing, and creates sensible defaults for README, .gitignore, LICENSE, etc. LICENSE files use standard templates; README is minimal (name, short description, install/run hints). The --interactive flag asks before applying each change.

Development notes

PSX is written in Go and requires Go 1.25+ to build. The codebase is modular, allowing detectors and rules to be extended. The current repository does not include tests (intentional for v1); contributions adding tests or lint rules are welcome.

Why I made it

Setting up a new project always involved repeating the same first few minutes of work—creating README, LICENSE, .gitignore, changelog, and other boilerplate. PSX provides a tiny tool to enforce a sane baseline so you can start coding faster and keep repositories consistent.

Future enhancements (not in v1)

  • Plugin system for custom rules – allow users to add/share custom rule sets
  • Multi‑project scanning – scan multiple repositories at once
  • Git pre‑commit hook integration – run checks locally before commits
  • Additional language support – Python, Rust, Java, etc.
  • Improved code structure and quality – refactor modules, add more tests
  • Editor/CI integrations – VS Code extension, CI checks
  • Usability improvements – more templates, interactive flows

A note about v1

This is the first public version. It may contain bugs or missing features. Please try it, report issues, and provide feedback. Your input helps make the tool better.

If you want to help

Star the repository and consider contributing. Useful contributions include adding tests, writing linters, creating new language detectors, improving templates, or submitting small fixes. Open issues or pull requests and they will be reviewed.

  • Repository:
  • Issues:
  • Releases:
Back to Blog

Related posts

Read more »

Text Editor Based Reminder

Summary Balancing reminders on a PC is tricky. - You want it quick via the CLI but not too noisy. - Open a text file where you have written the reminder. This...