npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

askii-cli

v0.2.4

Published

ASKII CLI - AI code assistant with style ( •_•)>⌐■-■ (⌐■_■)

Downloads

453

Readme

ASKII CLI ( •_•)>⌐■-■ (⌐■_■)

AI code assistant for your terminal. Powered by Ollama or LM Studio.

Install

npm install -g askii-cli

Or run without installing:

npx askii-cli <command>

Commands

ask — Ask a question about code

Pipe code via stdin or use --code:

bash

cat myfile.ts | askii ask "what does this do?"
askii ask --code "const x = 1 + 1" "is this correct?"

PowerShell

Get-Content myfile.ts | askii ask "what does this do?"
askii ask --code "const x = 1 + 1" "is this correct?"

edit — Edit code

Returns the modified code to stdout (pipe-friendly):

bash

cat myfile.ts | askii edit "add error handling" > myfile-edited.ts
cat myfile.ts | askii edit "convert to async/await"

PowerShell

Get-Content myfile.ts | askii edit "add error handling" | Set-Content myfile-edited.ts
Get-Content myfile.ts | askii edit "convert to async/await"

explain — Explain a line of code

bash

askii explain "arr.reduce((a, b) => a + b, 0)"
cat myfile.ts | askii explain

PowerShell

askii explain "arr.reduce((a, b) => a + b, 0)"
Get-Content myfile.ts | askii explain

do — Agentic task runner

Prints the working directory's top-level file listing, then runs an agent loop that creates, modifies, renames, deletes, views, and lists files until the task is done or --max-rounds is reached.

bash

askii do "create a Jest test file for src/utils.ts"
askii do "rename all .js files to .ts in the src folder"
askii do "add a .gitignore for a Node.js project"
askii do --yes "scaffold a README for this project"   # auto-confirm all
askii do --dir ./my-project "refactor index.ts"

PowerShell

askii do "create a Jest test file for src/utils.ts"
askii do "rename all .js files to .ts in the src folder"
askii do "add a .gitignore for a Node.js project"
askii do --yes "scaffold a README for this project"   # auto-confirm all
askii do --dir .\my-project "refactor index.ts"

The agent can use the following actions each round:

| Action | Description | Requires confirmation | | -------- | -------------------------------------------------------- | --------------------- | | list | List files in a folder ([file] / [folder] labels) | No | | view | Read a file's contents | No | | create | Create a new file | Yes | | modify | Replace text in an existing file | Yes | | rename | Rename or move a file | Yes | | delete | Delete a file | Yes |

The loop continues after every round — not only after reads — until the AI returns [] or the round limit is hit.


control — Screen control agent

Takes a screenshot, sends it to the AI, and executes the returned mouse/keyboard action. Repeats until the AI returns DONE or --max-rounds is reached. Requires a vision-capable model (e.g. llava, moondream2).

Linux: requires xdotool for mouse/keyboard control (sudo apt install xdotool or equivalent).

bash

askii control --ollama-model llava "open Notepad and type hello world"
askii control --yes --ollama-model llava "click the search bar and search for cats"
askii control --max-rounds 10 --ollama-model llava "fill in the login form"
askii control -p lmstudio --lmstudio-model llava-1.5 "open the browser"

PowerShell

askii control --ollama-model llava "open Notepad and type hello world"
askii control --yes --ollama-model llava "click the search bar and search for cats"
askii control --max-rounds 10 --ollama-model llava "fill in the login form"
askii control -p lmstudio --lmstudio-model llava-1.5 "open the browser"

Each round the AI can return one of:

  • mouse_move — move the cursor to (x, y)
  • mouse_left_click — left-click at (x, y)
  • mouse_right_click — right-click at (x, y)
  • keyboard_input — type a string
  • DONE — task complete, stop the loop

Without --yes, each proposed action is shown with its reasoning and requires y confirmation before executing.


Options

| Flag | Short | Description | Default | | --------------------- | ----- | ----------------------------------------------- | -------------------------- | | --platform | -p | LLM platform: ollama, lmstudio | ollama | | --ollama-url | | Ollama server URL | http://localhost:11434 | | --lmstudio-url | | LM Studio server URL | ws://localhost:1234 | | --ollama-model | | Ollama model | gemma3:270m | | --lmstudio-model | | LM Studio model | qwen/qwen3-coder-30b | | --mode | | Response style: helpful, funny | funny | | --max-rounds | | Max agent rounds for do / control | 5 | | --dir | | Working directory for do | cwd | | --code | -c | Code input (alternative to stdin) | | | --yes | -y | Auto-confirm all actions | |

Environment Variables

bash

export ASKII_PLATFORM=ollama

# Ollama
export ASKII_OLLAMA_URL=http://localhost:11434
export ASKII_OLLAMA_MODEL=gemma3:270m

# LM Studio
export ASKII_LMSTUDIO_URL=ws://localhost:1234
export ASKII_LMSTUDIO_MODEL=qwen/qwen3-coder-30b

# Shared
export ASKII_MODE=funny
export ASKII_MAX_ROUNDS=5

PowerShell

$env:ASKII_PLATFORM = "ollama"

# Ollama
$env:ASKII_OLLAMA_URL = "http://localhost:11434"
$env:ASKII_OLLAMA_MODEL = "gemma3:270m"

# LM Studio
$env:ASKII_LMSTUDIO_URL = "ws://localhost:1234"
$env:ASKII_LMSTUDIO_MODEL = "qwen/qwen3-coder-30b"

# Shared
$env:ASKII_MODE = "funny"
$env:ASKII_MAX_ROUNDS = "5"

Platforms

Ollama (default)

bash

ollama pull gemma3:270m
askii ask "what is a closure?"

PowerShell

ollama pull gemma3:270m
askii ask "what is a closure?"

LM Studio

bash

# Start LM Studio with local server enabled
askii -p lmstudio ask "explain this function"
askii -p lmstudio --lmstudio-model "my-model" ask "explain this function"

PowerShell

# Start LM Studio with local server enabled
askii -p lmstudio ask "explain this function"
askii -p lmstudio --lmstudio-model "my-model" ask "explain this function"