Skip to content
View sshnox's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report sshnox

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sshnox/README.md

About

I build browser tools and data utilities. Company Name Cleaner helps review and normalize names before export. Claude Usage Tracker shows usage limits inside the chat, and Excise strips image metadata locally. Explore the projects.

When I contribute upstream, I like fixes where you can see the difference in one example. A mistyped CLI flag should tell CI the command was invalid. A knowledge graph node should keep the source text you need to expand it. See the merged changes.

Merged upstream

12 merged PRs across 11 projects in the past 12 months. Each link goes to the upstream PR.

Project ⭐ Stars What changed
jc 8,703 Preserved leading whitespace in filenames parsed from wc output.
petl 1,325 Preserved existing rows when appending to a MemorySource.
Azure RBAC Insight 0 Kept assignments with missing filter labels visible.
Awesome LLM Apps 144,399 Retained uploads when extraction fails.
Preserved source text for Knowledge Explorer node expansion.
Pidrang 2 Kept environment setup reminders visible on reruns.
R2G Arango 5 Restored distinct value sampling for CSV columns.
Archy 8 Assembled call graph edges in linear time.
CWTools VSCode 3 Quoted carriage returns in CSV diagnostics.
domq 11 Validated Markdown options in either flag order.
Releaseproof 0 Returned the correct exit code for invalid CLI usage.
Go Magnetar 29 Listed enabled agents when /agent is called without arguments.

Projects

Diagram of a usage bar below the Claude chat composer

Claude Usage Tracker

See your limits under the Claude chat composer without leaving the conversation.

Install from source ↗  ·  Source

See the widget Claude Usage Tracker widget preview with session, weekly, and Opus usage bars

Load the src folder as an unpacked Chromium extension, then open Claude. The widget uses your active session.

Example of company names before and after normalization

Company Name Cleaner

Clean company names in the browser before importing a list into your CRM.

Try it in your browser ↗  ·  Source

Try a sample CSV

Open the app and import the sample CSV. Set the company column to 2 and select First row is a header. Review the results before exporting.

With the default settings, Müller GmbH becomes Müller, and شاہ ٹیکنالوجیز stays as entered.

Diagram of an image with its C2PA, EXIF, and XMP metadata selected for removal

Excise

Remove C2PA, EXIF, and XMP data from images before sharing them.

Open the tool ↗  ·  Source

What happens to the image?

The app inspects the file in your browser and shows which metadata it finds. Choose what to remove, then download the processed copy. The file stays on your device.

Diagram of two clients passing encrypted messages through a relay

Signal E2E Chat

An experiment in end-to-end encrypted messaging.

Run it locally ↗  ·  Source

Try a two-client session

Use Node.js 20 or later to start the relay and open two clients in separate terminals. Exchange a message and compare safety numbers. The repository also includes a local handshake and ratchet demo.

Browse all repositories ↗

Toolkit

A focused stack for browser utilities, data cleanup, and small open-source fixes.

### Browser tools JavaScript, TypeScript, React, Vite, HTML/CSS, and Chrome Extensions for small utilities people can use immediately. [Claude Usage Tracker ↗](https://github.com/sshnox/Claude-Usage-Tracker-v2.1.0) ### Data utilities Python, SQL, CSV, and client-side processing for normalization, extraction, and privacy-conscious workflows. [Company Name Cleaner ↗](https://github.com/sshnox/company-name-cleaner)
### Delivery & open source Git, GitHub Actions, Docker, Vercel, and CLI tooling for repeatable checks, releases, and contributions. [GitHub Stats ↗](https://github.com/sshnox/github-stats) ### Working style Prefer local-first tools, visible proof, small focused fixes, and documentation that shows the result in one example.

GitHub stats

Public GitHub stats for sshnox: repositories, followers, stars earned, and upstream merges in the last 12 months

Open GitHub profile ↗  ·  View merged PRs ↗

Profile views Rankistan rank badge

Account stats refresh hourly. Merges are counted over the trailing 12 months. Profile views count badge requests on pages where the badge appears.

Contribution activity

Snake animation of Shoaib’s GitHub contribution activity

Get in touch

What’s one task you’re tired of doing by hand?

Message me on LinkedIn ↗

Popular repositories Loading

  1. github-stats github-stats Public

    GitHub profile and repository stats dashboard for stars, forks, languages, and commit activity using the public API.

    JavaScript 4 1

  2. Markdown-Notes-App Markdown-Notes-App Public

    A minimal browser-based note-taking app where notes are written in Markdown and rendered live side-by-side in real time.

    JavaScript 3

  3. Pomodoro-Timer Pomodoro-Timer Public

    A clean 25/5 minute focus timer with session counter, sound alerts, and a simple progress ring animation.

    JavaScript 3

  4. weather-dashboard weather-dashboard Public

    I Used OpenWeatherMap API to show current weather plus a 5-day forecast. Supports city search and stores recent searches.

    JavaScript 3

  5. flashcard-quiz-app flashcard-quiz-app Public

    Custom flashcard decks, flip cards with animation, and track right/wrong scores per session with spaced repetition logic.

    JavaScript 3

  6. Claude-Usage-Tracker-v2.1.0 Claude-Usage-Tracker-v2.1.0 Public

    Chrome extension that shows Claude session, weekly, and Opus limits below the chat composer. No API keys, config, or pasted session tokens.

    JavaScript 3