{"_id":"00ps","_rev":"2-a976de22ead3b8fbf68724af4111df94","name":"00ps","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"00ps","version":"0.1.0","keywords":["cli","utility","caps-lock","normalize","command","ergonomics"],"author":{"name":"THE RISE COLLECTION"},"license":"MIT","_id":"00ps@0.1.0","maintainers":[{"name":"jiosh_","email":"jpaulsen3110@gmail.com"}],"homepage":"https://github.com/TheRiseCollection/00ops-plugin#readme","bugs":{"url":"https://github.com/TheRiseCollection/00ops-plugin/issues"},"bin":{"00ps":"bin/00ps.js"},"dist":{"shasum":"5a8ef3d458aca84e6e07b0ff7428ae7f1aac7bf2","tarball":"https://registry.npmjs.org/00ps/-/00ps-0.1.0.tgz","fileCount":5,"integrity":"sha512-H1VynDBnp8NH+gxDnJqaUWW2jcBUEIkyAvmsg5nhF7q1GWVOKXId5sdfsmlLF7/R1IXRd+klQyjoBORfO+m5RQ==","signatures":[{"sig":"MEYCIQCW/ZYPXW/SIHQYU0+cnq+9wqL6Hc4e5+LblvSBfDX7nAIhAJDyBjNgS+oOgBTp7La8rhETDgLuYp2dKCOQEubFijPm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9094},"main":"bin/00ps.js","engines":{"node":">=14.0.0"},"gitHead":"ca8f7ac3b84900404275926c09affd4191a87778","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node bin/00ps.js"},"_npmUser":{"name":"jiosh_","email":"jpaulsen3110@gmail.com"},"repository":{"url":"git+https://github.com/TheRiseCollection/00ops-plugin.git","type":"git"},"_npmVersion":"10.9.2","description":"A CLI utility that allows shell commands typed in CAPS LOCK to execute correctly by normalizing casing","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/00ps_0.1.0_1769100676875_0.25797793912890166","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"00ps","version":"0.1.1","description":"A CLI utility that allows shell commands typed in CAPS LOCK to execute correctly by normalizing casing.","main":"bin/00ps.js","bin":{"00ps":"bin/00ps.js"},"scripts":{"start":"node bin/00ps.js","test":"node bin/00ps.js --help || node bin/00ps.js -h"},"keywords":["cli","utility","caps-lock","normalize","command","ergonomics","cli-tool","developer-experience","capslock","productivity"],"author":{"name":"THE RISE COLLECTION"},"license":"MIT","engines":{"node":">=14.0.0"},"repository":{"type":"git","url":"git+https://github.com/TheRiseCollection/00ops-plugin.git"},"bugs":{"url":"https://github.com/TheRiseCollection/00ops-plugin/issues"},"homepage":"https://github.com/TheRiseCollection/00ops-plugin#readme","gitHead":"fd652d45b37ab6b8290679175d2a2953d9a28f4b","_id":"00ps@0.1.1","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-iwTQI24rQ4XvNPJ3suLZ2b2RVJS5riI9sPPZjUOUhLoKcJ3Akg7gesdE16Dv8+RP47qq2J+uH7WQx54wJesQCw==","shasum":"dca77c559df7419150723bbd90732062d1d564cc","tarball":"https://registry.npmjs.org/00ps/-/00ps-0.1.1.tgz","fileCount":4,"unpackedSize":12060,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRSk7WMnFKqnT5e3fTV4LmqB+tthbLJ5DpC2flCmNo2gIgMtcWejXJZQQvdt/jewBg1pOxQeOsbl77rNa2e7xpTyM="}]},"_npmUser":{"name":"jiosh_","email":"jpaulsen3110@gmail.com"},"directories":{},"maintainers":[{"name":"jiosh_","email":"jpaulsen3110@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/00ps_0.1.1_1773327968912_0.22228325529046677"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-22T16:51:16.674Z","modified":"2026-03-12T15:06:09.185Z","0.1.0":"2026-01-22T16:51:17.001Z","0.1.1":"2026-03-12T15:06:09.059Z"},"bugs":{"url":"https://github.com/TheRiseCollection/00ops-plugin/issues"},"author":{"name":"THE RISE COLLECTION"},"license":"MIT","homepage":"https://github.com/TheRiseCollection/00ops-plugin#readme","keywords":["cli","utility","caps-lock","normalize","command","ergonomics","cli-tool","developer-experience","capslock","productivity"],"repository":{"type":"git","url":"git+https://github.com/TheRiseCollection/00ops-plugin.git"},"description":"A CLI utility that allows shell commands typed in CAPS LOCK to execute correctly by normalizing casing.","maintainers":[{"name":"jiosh_","email":"jpaulsen3110@gmail.com"}],"readme":"# 00PS\n\n> Never break your shell flow just because CAPS LOCK was on.\n\n[![npm version](https://img.shields.io/npm/v/00ps.svg?style=flat-square)](https://www.npmjs.com/package/00ps)\n[![npm downloads](https://img.shields.io/npm/dw/00ps.svg?style=flat-square)](https://www.npmjs.com/package/00ps)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat-square)](LICENSE)\n[![Node version](https://img.shields.io/node/v/00ps.svg?style=flat-square)](https://www.npmjs.com/package/00ps)\n\n00PS is a tiny CLI that lets you type shell commands in CAPS LOCK and still have them run correctly. It normalizes the command name to lowercase, passes everything else through unchanged, and gets out of your way.\n\nPart of **TheRiseCollection** and the **Rise World** developer tools ecosystem.\n\n## The Problem\n\nHave you ever typed a shell command with CAPS LOCK on? You get an error because `LS` doesn't exist—you meant `ls`. Or `CD` fails when you meant `cd`. This is a small but frequent frustration in daily development work.\n\n00PS solves this by normalizing the command name to lowercase before execution.\n\n### Who is this for?\n\n- Terminal-heavy developers who live in shells, tmux, and dotfiles.\n- SREs, DevOps, and platform engineers who run commands all day.\n- Anyone who wants a little more ergonomics and forgiveness in their CLI workflow.\n\n### Features\n\n- **Command-only normalization** – Only the first token (the command name) is lowercased; arguments, flags, and paths are left untouched.\n- **Cross-platform** – Works on macOS, Linux, and Windows (cmd.exe and PowerShell).\n- **Zero configuration** – Install globally and prepend `00ps` to any command.\n- **Exit-code faithful** – Mirrors the underlying command’s exit code so scripts stay predictable.\n\n## Installation\n\nInstall globally from npm:\n\n```bash\nnpm install -g 00ps\n```\n\nYarn:\n\n```bash\nyarn global add 00ps\n```\n\npnpm:\n\n```bash\npnpm add -g 00ps\n```\n\n**Note**: The package is published as `00ps` (unscoped) on npm.\n\n## Usage\n\nBasic usage:\n\n```bash\n00ps <command> [arguments...]\n```\n\n### Quick start\n\n```bash\n# CAPS LOCK accidentally on…\n00ps LS\n00ps GIT STATUS\n00ps NPM TEST\n\n# Still works even if caps is off (just redundant)\n00ps ls\n00ps git status\n```\n\n### Examples\n\n#### Basic commands\n\n```bash\n00ps LS\n# Executes: ls\n\n00ps PWD\n# Executes: pwd\n```\n\n#### With arguments and flags\n\n```bash\n00ps LS -LA\n# Executes: ls -la\n\n00ps CD /home/user\n# Executes: cd /home/user\n```\n\n#### With package managers\n\n```bash\n00ps NPM INSTALL EXPRESS\n# Executes: npm install express\n\n00ps NPM RUN BUILD\n# Executes: npm run build\n```\n\n### Failure vs success\n\n```bash\n# What you typed (fails)\nLS\n# Shell: command not found: LS\n\n# With 00ps (succeeds)\n00ps LS\n# 00ps runs: ls\n```\n\n## How It Works\n\n00PS normalizes **only the first token** (the command name) to lowercase. All arguments, flags, and paths are passed through unchanged.\n\n- `00ps LS -LA` → executes `ls -la`\n- `00ps CD /HOME/USER` → executes `cd /HOME/USER` (path unchanged)\n\nAt a high level:\n\n```mermaid\nflowchart LR\n  userShell[\"User shell\"] --> capsCommand[\"Command in CAPS\"]\n  capsCommand --> zeroZeroPs[\"00ps CLI\"]\n  zeroZeroPs --> normalizeStep[\"Normalize first token to lowercase\"]\n  normalizeStep --> spawnCommand[\"Spawn underlying command\"]\n  spawnCommand --> commandExit[\"Pass through exit code\"]\n```\n\nThe CLI:\n\n- Parses the first argument as the command name.\n- Lowercases that command name.\n- Spawns the underlying command as a child process.\n- Forwards stdout, stderr, and the exit code back to your shell.\n\n## Options\n\n- `-h, --help` - Show help message.\n- `-v, --version` - Show version number.\n\n## Cross-Platform Support\n\nWorks on:\n\n- Windows (cmd.exe, PowerShell)\n- macOS\n- Linux\n\nOn Windows:\n\n- In **cmd.exe**, `00ps` behaves like any other CLI: it spawns the normalized command.\n- In **PowerShell**, behavior is similar; commands are case-insensitive, but `00ps` still normalizes the first token for consistency.\n\n## Limitations\n\n- **Only the first command in a pipeline is normalized.**\n\n  ```bash\n  00ps LS | GREP src\n  # 00ps runs: ls | GREP src   (only `ls` is normalized)\n  ```\n\n- **Paths are not normalized** (they may be case-sensitive depending on your OS and filesystem).\n\n  ```bash\n  00ps CD /HOME/USER\n  # Command becomes: cd /HOME/USER  (path unchanged)\n  ```\n\n- **Shell built-ins work via `shell: true`** and depend on your shell environment.\n\n## Exit Codes\n\n- `0` - Command executed successfully.\n- `1-255` - Underlying command’s exit code (passed through).\n- `1` - 00PS error (invalid usage, etc.).\n\n## Safety & Security\n\n00PS executes commands exactly as requested after normalizing the command name. It:\n\n- Uses `spawn` with argument arrays (not string concatenation).\n- Passes arguments and environment variables through without modification.\n- Does **not** change your `$PATH`, environment, or privileges.\n- Does **not** execute anything you didn’t explicitly ask it to run.\n\nOnly run commands you trust—00PS just makes CAPS LOCK mistakes less painful.\n\n## Development\n\n```bash\n# Run locally\nnpm start\n\n# Basic smoke test\nnpm test\n```\n\n## Contributing\n\nContributions, ideas, and bug reports are welcome.\n\n- Open issues and pull requests on the GitHub repository.\n- Follow a simple flow: fork → branch → change → PR.\n- See `PUBLISH.md` for release and publishing notes.\n\n## Roadmap / Ideas\n\n- Shell aliases / shortcuts for common shells.\n- Optional smarter normalization modes (e.g. handling mixed-case commands).\n- Quality-of-life helpers around common workflows (e.g. `git` wrappers).\n\n## License\n\nMIT\n\n## Repository\n\n[https://github.com/TheRiseCollection/00ops-plugin](https://github.com/TheRiseCollection/00ops-plugin)\n\n---\n\n**Maintained by [TheRiseCollection](https://github.com/TheRiseCollection)**  \nPart of **[Rise World](https://riseworld.dev)** — a developer lab for building, documenting, and sharing tools.\n","readmeFilename":"README.md"}