npm.io
2.1.8 • Published 10h agoCLI

ninesh

Licence
MIT
Version
2.1.8
Deps
9
Size
95 kB
Vulns
0
Weekly
0
Stars
1

Ninesh

npm version License

Ajiu9's daily shell companion — a CLI toolkit that supercharges your terminal workflow with Obsidian template generation, shell configuration, and structured repository management.

Features

  • Obsidian Integration — Generate daily/weekly/task templates for Obsidian
  • Shell Bootstrap — One-command setup for zsh/bash plugins (oh-my-zsh, starship, syntax highlighting, etc.)
  • Repository Manager — Clone repos into a clean host/user/repo directory structure
  • Shell Manager — Detect, list, switch, and configure shells (bash/zsh/fish)
  • Skills Sync — Sync skills directories across applications via symlinks (Claude, Multica, WorkBuddy)
  • Self-update — Built-in update checker with one-command upgrade

Install

npm install -g ninesh

Commands

ninesh <command> [options]
Command Description
obsidian Generate Obsidian templates (daily, weekly, task, empty)
init Bootstrap zsh/bash with common plugins and aliases
add Clone a repository into a structured directory layout
shell Detect, list, switch, or configure your terminal shell
skills Sync skills directories across apps via symlinks
update Check for and install the latest version

ninesh obsidian

Generate Obsidian note templates from the command line.

ninesh obsidian [options]
Option Alias Description
--daily -d Generate daily plan template
--weekly -w Generate weekly plan template
--empty -e Generate blank template
--task -t Generate task report (choices: weekly, yearly)
--next -n Generate for the next period (next day / next week)

Examples:

# Daily note
ninesh obsidian -d

# Weekly plan
ninesh obsidian -w

# Task report (weekly)
ninesh obsidian -t weekly -w

# Next day's daily note
ninesh obsidian -d -n

Screenshots:

Daily Weekly Task Report
daily weekly task

On first run, a config file is created at ~/.config/ninesh/.obsidian/config.json where you can customize template paths and target directories.


ninesh init

Bootstrap your shell environment with common plugins and handy aliases.

ninesh init [options]
Option Alias Description
--zsh -z Add custom zsh plugins to ~/.zshrc
--bash -b Add custom bash plugins to ~/.bashrc
--omz -o Install oh-my-zsh plugins (autosuggestions, completions, syntax highlighting)
--starship -s Add Starship prompt to ~/.zshrc
--ninesh -n Add ninesh shortcut aliases (n, na, no, ni)

Examples:

# Full zsh setup: custom plugins + omz + starship + shortcuts
ninesh init -z -o -s -n

# Bash setup
ninesh init -b -n

# Just add ninesh aliases
ninesh init -n

What gets installed:

Flag Installs
-z Custom ninesh zsh plugin (aliases, git helpers, etc.)
-b Custom ninesh bash plugin
-o zsh-autosuggestions, zsh-completions, fast-syntax-highlighting
-s Starship prompt via eval "$(starship init zsh)"
-n Shortcuts: n → ninesh, na → ninesh add, no → ninesh obsidian, ni → ninesh init

ninesh add

Clone a repository into an organized directory structure.

ninesh add <repository-url> [options]
Option Alias Description
--base -b Set base directory (skips interactive prompt)

What it does:

Clones https://github.com/ajiu9/ninesh into:

$BASE
└── github.com
    └── ajiu9
        └── ninesh

Examples:

# Clone with interactive base directory selection
ninesh add https://github.com/user/repo.git

# Clone using a shorthand alias (configurable)
ninesh add github://user/repo

# Clone with explicit base directory
ninesh add https://github.com/user/repo.git -b ~/Projects

The target directory path is automatically copied to your clipboard after cloning.


ninesh shell

Inspect and manage your terminal shells.

ninesh shell [action] [target]
Action Description
info Show current shell details (name, path, version, config file)
list List all installed shells and available ones to install
switch Change your default shell (interactive or by name)
install Show install commands for zsh/fish on your platform
config Configure shell plugins interactively (bash/fish supported)

Examples:

# Show current shell info
ninesh shell

# List all installed shells
ninesh shell list

# Switch to zsh
ninesh shell switch zsh

# Show how to install fish
ninesh shell install fish

# Configure current shell interactively
ninesh shell config

ninesh skills

Sync skills directories across applications via symlinks. Manage all your Claude, Multica, and WorkBuddy skills from a single source directory.

ninesh skills [action]
Action Description
init Scan installed apps, configure source and targets interactively
sync Create/update symlinks from source to selected target directories
unsync Remove symlinks from selected target directories

How it works:

ninesh skills sync creates a symlink for each first-level subdirectory in the source directory into each target directory. Files are ignored — only directories are linked.

~/.claude/skills/          # source
├── graphify/
├── app-refactor/
└── tool-usage/

~/.multica/skills/         # target (after sync)
├── graphify/       → ~/.claude/skills/graphify/
├── app-refactor/   → ~/.claude/skills/app-refactor/
└── tool-usage/     → ~/.claude/skills/tool-usage/

Examples:

# First time: scan and configure
ninesh skills init

# Sync all (interactive target selection)
ninesh skills sync

# Remove all symlinks from selected targets
ninesh skills unsync

Sync behavior:

Scenario Behavior
Target already correct symlink Skip
Target is a real directory Backup (→ name.bak), then symlink
Target is a wrong symlink Replace with correct one
Source adds new directory Auto-detected, creates symlink
Source deletes a directory Dead symlink cleaned up
Source contains files Ignored (directories only)
Nothing changed "all synced, nothing to do"

Configuration:

Stored in ~/.ninesh/config.json under the skills key:

{
  "skills": {
    "source": "~/.claude/skills",
    "targets": {
      "claude": "~/.claude/skills",
      "multica": "~/.multica/skills",
      "workbuddy": "~/.workbuddy/skills"
    }
  }
}

ninesh update

Check for and install updates.

ninesh update [options]
Option Alias Description
--check -c Only check for updates (don't install)

Examples:

# Check and install latest version
ninesh update

# Only check (no install)
ninesh update -c

Ninesh also checks for updates automatically in the background when you run any command.

Configuration

Configuration files are stored under ~/.ninesh/:

File Purpose
config.json Base directories, URL aliases, hooks, skills sync config
shell.json Shell detection and configuration state
jump.json Jump command directory database
.obsidian/config.json Obsidian template paths and target directories

Development

# Clone and install
git clone https://github.com/ajiu9/ninesh.git
cd ninesh
pnpm install

# Build
pnpm build

# Link for local development
pnpm dev

License

MIT

Keywords