open-index/open-npm huggingface dataset:
npm package: @ogre-tools/injectable-extensions-for-dependency-graphing
Description: Dependency graphing for Injectable in Ogre Tools
Author: Ogre Works
Latest version: 17.3.0

# Dependency graphing for Injectable in Ogre Tools

## Usage

```
$ npm install @ogre-tools/injectable
$ npm install @ogre-tools/injectable-extensions-for-dependency-graphing

...

import { createContainer } from '@ogre-tools/injectable';  
import { registerDependencyGraphing, plantUmlDependencyGraphInjectable } from '@ogre-tools/injectable-extensions-for-dependency-graphing';

const di = di.createContainer();
registerDependencyGraphing(di);

...do injections to populate graph...

const graph = di.inject(plantUmlDependencyGraphInjectable);

console.log(graph)  
```


## Documentation

Check unit tests for documentation.
npm package: @ogrefied/avl-tree
Description: Implements a self-balancing binary tree
Author: Marcel Guerin
Latest version: 0.5.0

# AVL Tree
This package implements a basic [AVL Tree](https://en.wikipedia.org/wiki/AVL_tree).  Basic means node payloads are scalar and comparable with built-in operators `<`, `<=`, `>`, `>=`.  The current implementation supports insert only.  There is no validation that inputs match previous types.

There is, however, tests for full code coverage and basic metrics for tree operations.

## Usage
``` javascript
const Tree = require('avl-tree');
let tree = new Tree();
tree.add('a');
tree.add('b');
tree.add('f');  // causes a left rotation
tree.add('c');
tree.add('d');  // causes a double rotation R balance
tree.toArray(); // outputs tree in 'infix' order, by default
tree.toArray({notation: 'postfix'}); // output in postfix order
tree.toArray({notation: 'prefix'});  // output in prefix order
```
## Statistics
Basic metrics are available.  Calling `tree.metrics()` return a JSON object with aggregated statistics for the entire tree:
  * add - Number of times a new value is added to any part of the tree.
  * insertion - Number of times a new value is added to the entire tree.  Should match the number of values added to the tree by `tree.add()`.
  * leftRotation / rightRotation - Number of times a left- or right-rotation took place.
  * leftBalance / rightBalance - Number of times the tree violated AVL constraints and required the left- or right side to be balanced.

I have plans to extend the general usefulness of this module and I welcome all suggestions!
npm package: @ogs-gmbh/rsql
Description: Lightweight, zero-dependency TypeScript library for constructing and serializing RSQL queries using customizable operators
Author: OGS GmbH
Latest version: 1.6.0

# rsql Library

![GitHub License](https://img.shields.io/github/license/OGS-GmbH/rsql?color=0f434e)
![NPM Version](https://img.shields.io/npm/v/%40ogs-gmbh%2Frsql?color=0f434e)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/OGS-GmbH/rsql/main-deploy.yml?color=0f434e)

This rsql-library provides a modular and customizable way to build your rsql-queries.

The library has zero dependencies which makes it a lightweight addition to your project.

## Installation

To get started, you can install this package using your preferred package manager.

```shell
npm install @ogs-gmbh/rsql
```

<details>
<summary>Other package manager</summary>
<br />

```shell
yarn add @ogs-gmbh/rsql
```

```shell
pnpm install @ogs-gmbh/rsql
```

</details>

## License

The MIT License (MIT) - Please have a look at the [LICENSE file](./LICENSE) for more details.

## Contributing

Contributions are always welcome and greatly appreciated. Whether you want to report a bug, suggest a new feature, or improve the documentation, your input helps make the project better for everyone.

If you're unsure where to start, check the open issues for guidance. Even small contributions, such as fixing typos or improving code readability, are valuable.

Feel free to submit a pull request or start a discussion — we're happy to collaborate!

---

<a href="https://www.ogs.de/en/"><img src="https://www.ogs.de/fileadmin/templates/main/img/logo.png" height="32" /></a>

<p>Gesellschaft für Datenverarbeitung und Systemberatung mbH</p>

[Imprint](https://www.ogs.de/en/imprint/) | [Contact](https://www.ogs.de/en/contact/) | [Careers](https://www.ogs.de/en/about-ogs/#Careers)
npm package: @ogs-gmbh/stdx
Description: Centralize common logic and patterns used across TypeScript projects — improving consistency, reducing duplication, and ensuring strong type safety
Author: OGS GmbH
Latest version: 1.1.0

# TypeScript Standard Lib (stdx)
![GitHub License](https://img.shields.io/github/license/OGS-GmbH/stdx?color=0f434e)
![NPM Version](https://img.shields.io/npm/v/%40ogs-gmbh%2Fstdx?color=0f434e)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/OGS-GmbH/stdx/main-deploy.yml?color=0f434e)

This repository provides the source code for a TypeScript standard library (stdlib), designed to offer a robust and reusable set of utility functions, type helpers, and abstractions for everyday development tasks.

The goal of this library is to centralize common logic and patterns used across TypeScript projects—improving consistency, reducing duplication, and ensuring strong type safety. It is structured to be modular, so individual modules can be imported as needed without adding unnecessary overhead.

Key features include:
- Utility functions for working with arrays, objects, strings, and more
- Common type definitions and generic helpers
- Functional programming helpers
- Lightweight and dependency-free design
- Fully typed and optimized for TypeScript's strict mode

This stdlib serves as a foundational toolkit for building scalable and maintainable TypeScript applications. Contributions and suggestions are welcome.

## Installation
To get started, you can install this package using your preferred package manager.
````shell
npm install @ogs-gmbh/stdx
````

<details>
<summary>Other package manager</summary>
<br />

````shell
yarn add @ogs-gmbh/stdx
````

````shell
pnpm install @ogs-gmbh/stdx
````

</details>

## License
The MIT License (MIT) - Please have a look at the [LICENSE file](./LICENSE) for more details.

## Contributing
Contributions are always welcome and greatly appreciated. Whether you want to report a bug, suggest a new feature, or improve the documentation, your input helps make the project better for everyone.

If you're unsure where to start, check the open issues for guidance. Even small contributions, such as fixing typos or improving code readability, are valuable.

Feel free to submit a pull request or start a discussion — we're happy to collaborate!

---

<a href="https://www.ogs.de/en/"><img src="https://www.ogs.de/fileadmin/templates/main/img/logo.png" height="32" /></a>
<p>Gesellschaft für Datenverarbeitung und Systemberatung mbH</p>

[Imprint](https://www.ogs.de/en/imprint/) | [Contact](https://www.ogs.de/en/contact/) | [Careers](https://www.ogs.de/en/about-ogs/#Careers)
npm package: @ogteam/lego-build
Description: Lego-build is a flexible CLI tool that makes development fun again by automating routine tasks like creating components, pages, etc
Author: The OG Team
Latest version: 1.0.7

<br />
<p align="center"><img src="logo.svg#gh-light-mode-only" style="width: 500px"  alt="Logo" /></p>
<!-- <p align="center"><img src="LogoDark.svg#gh-dark-mode-only" style="width: 350px"  alt="Logo" /></p> -->
<br />

## Overview

Lego-build is a command-line tool that speeds up front-end development workflow by minimizing boilerplate code. You can easily create components, pages, reducers, actions, hooks or any special 'blocks' your app is made of — in one line.

## Quick setup

You can install lego-build globally from npm:

```
npm i @ogteam/lego-build -g
```

<br />
Then you can quickly create a component (Nav for instance) by running:

```
lego-build component Nav
```

However, lego-build does more than merely generate 'components.' It's far more flexible and powerful than that.

## Documentation

Check out our [docs site](https://lego-build.github.io/docs) for thorough (and easy-to-understand) documentation on how to configure lego-build.

## Features ⭐

There are other CLI tools that help you make React components easily. But lego-build is far different. It:

- is readily customizable.
- may be applied to any front-end framework.
- has a vast [developer community](https://lego-build.github.io/community) and the workflows they use to set up lego-build.
- has shorter CLI commands to save you even more time.
- allows you to create whatever 'block' your app is made up of, not just components.

## Contributing

We welcome any suggestions for improving the tool. Simply create a [new issue](https://github.com/lego-build/lego-build/issues/new/choose) to inform us about your new feature proposal. To fix bugs assigned to you, [fork the repository](https://github.com/lego-build/lego-build/fork) and [submit a pull request](https://github.com/lego-build/lego-build/pulls).

## Thanks to all contributors

Thanks a lot for spending your time helping lego-build grow 🚀.

[![Contributors](https://contrib.rocks/image?repo=lego-build/lego-build)](https://github.com/lego-build/lego-build/graphs/contributors)

## License

[MIT](LICENSE)

<br />

---

We're on a quest to make front-end development **fun** again!
npm package: @ogubuikealex/secure-solidity-development-starterpack
Description: I am tired of having to setup projects everytime, so i am creating this template to be a starter file for all other projects
Author: Ogubuike Alexandra
Latest version: 1.0.0


# Solidity Development Starter File

This is a starter file to get you started on writing secure smart contracts.

I became tired of always setting up projects from scratch and so I created this starter file to speed up my development process.

## Tech Stack

- **Hardhat**
- **EtherJS**
- **Slither**
- **Ethereum security Toolbox by Trail Of Bits**
- **Openzeppelin Contracts**
- **Chainlink Contracts**
- **@nomicfoundation/hardhat-toolbox**
- **@nomiclabs/hardhat-etherscan**
- **hardhat-contract-sizer**
- **hardhat-gas-reporter**
- **prettier-plugin-solidity**

## Related

Here are some related topics

[How To Install Slither](https://medium.com/@ogubuikealex/how-to-install-slither-for-smart-contract-security-testing-cbf058c18e10)

## Run Locally

Fork the project (So that you can get updates for it)

Clone the project

```bash
  git clone https://github.com/king-Alex-d-great/secure-solidity-development-starterpack.git
```

Go to the project directory

```bash
  cd my-project
```

Install dependencies

```bash
  npm install
```

Test

To run tests, run the following command
```bash
  npx hardhat test
```
To run slither on your smart contracts
```bash
  slither .
```
To run ethereum-toolbox on your smart contracts
First setup docker

```bash
  npm run toolbox
```
npm package: @oguduvictor/fireblocks-defi-sdk
Description: Fireblocks DeFi SDK
Latest version: 1.1.1-alpha.1

# Fireblocks DeFi SDK

Fireblocks DeFi SDK provides an interoperability layer between Fireblocks Smart Contract API and common DeFi libraries.
For more information on Fireblocks Smart Contract API and automating DeFi workflows on Fireblocks [read here](https://support.fireblocks.io/hc/en-us/articles/360017709160-Fireblocks-Smart-Contract-API).
Please email us at support@fireblocks.com if you have questions or comments about this API.

## Installation

```npm install fireblocks-defi-sdk``` or ```yarn add fireblocks-defi-sdk```

## Features
* [Ethers.js bridge](./src/bridge/ethers-bridge.ts)
* [Web3.js bridge](./src/bridge/web3-bridge.ts)

## Code Examples
* [Basic Example](./examples/basic-example)
* [Trading on Uniswap](./examples/uniswap-example)
* [Lending on Aave](./examples/aave-example)
npm package: @ogulcancelik/pi-flicker
Description: A pi extension that brings Claude Code flicker to pi
Author: Can Celik
Latest version: 1.0.0

# pi-flicker

Do you miss Claude Code flickers?

Worry no more. Install `pi-flicker` so you feel at home.

## Install

```bash
pi install npm:@ogulcancelik/pi-flicker
```

Or load it directly:

```bash
pi -e /absolute/path/to/packages/pi-flicker/index.ts
```

## But why?
Why not?
npm package: @ogulcancelik/pi-ghost
Description: Like /btw, but as a native ghost overlay for pi
Author: Can Celik
Latest version: 0.1.2

# pi-ghost

Ephemeral side conversation overlay for [pi](https://github.com/badlogic/pi-mono).

Open a temporary "ghost" session inside the current pi UI, ask something quick, hide it, bring it back, then close it without saving any session history.

![Ghost pi overlay](./assets/ghost-overlay.png)

## Install

```bash
pi install npm:@ogulcancelik/pi-ghost
```

Or add it manually to `~/.pi/agent/settings.json`:

```json
{
  "packages": ["npm:@ogulcancelik/pi-ghost"]
}
```

Then reload pi:

```text
/reload
```

## What it does

`pi-ghost` adds a `/gpi` command that opens a floating overlay backed by a separate **in-memory** `AgentSession`.

So:

- it starts with the **same currently selected model** as the main session
- it uses **no persisted session file**
- it renders with native pi components for user messages, assistant messages, thinking blocks, and tool execution cards
- it can be **hidden** without losing the temporary conversation
- when you **close** it, the ghost session is disposed completely

## Usage

### `/gpi`

Open the ghost overlay, then type directly into the ghost UI.

```text
/gpi
```

Main flow:

1. run `/gpi`
2. the overlay opens
3. type into the ghost prompt
4. press `Enter`

### `/gpi <prompt>`

You can also pass the first message inline as a shortcut:

```text
/gpi what file owns this route?
/gpi check how this helper is used across the repo
```

If the overlay is already open, `/gpi <prompt>` sends another message into the ghost session.
If the overlay is hidden, run `/gpi` again to bring it back.

## Controls

- `Enter` — send message to ghost pi
- `↑` / `↓` — scroll the transcript
- `PageUp` / `PageDown` — scroll faster
- `Home` / `End` — jump to top or bottom
- `Ctrl+S` — hide the overlay
- `Esc` — close the ghost session completely

When hidden, a small widget is shown above the prompt:

```text
/gpi is running • run /gpi to bring it back
```

## Behavior

Ghost pi is **not** your main session.

The overlay opens at the latest message and stays in follow mode while new output streams. Scroll up to inspect older output, then use `End` to jump back to live output.

It has its own temporary conversation state:

- hide it → state stays in memory
- run `/gpi` again → continue where you left off
- close it → state is gone

The ghost session uses the **main session's model at the moment it is created**.
If you change models in the main session later, the already-open ghost session keeps using its existing model until you close and reopen it.

## Why

Useful when you want to:

- ask a small side question without polluting the main thread
- inspect a file or run a quick command in parallel
- keep a temporary tangent around while continuing the main conversation

`pi-ghost` is for those little "btw" moments without leaving the current TUI.

## Requirements

- [pi](https://github.com/badlogic/pi-mono) with extension support
- interactive mode (the overlay is TUI-only)

## Development

Run from this repo with:

```bash
pi -e /absolute/path/to/packages/pi-ghost/index.ts
```

## License

MIT
npm package: @ogulcancelik/pi-ghostty-theme-sync
Description: Sync pi theme with Ghostty terminal colors
Author: Can Celik
Latest version: 0.1.0

# pi-ghostty-theme-sync

Sync [pi](https://github.com/badlogic/pi-mono) theme with your active [Ghostty](https://ghostty.org/) terminal colors.

![demo](assets/demo.gif)

On startup, the extension runs `ghostty +show-config`, generates a pi theme, and switches pi to it.

## install

```bash
pi install npm:@ogulcancelik/pi-ghostty-theme-sync
```

(Optional, try without installing):

```bash
pi -e npm:@ogulcancelik/pi-ghostty-theme-sync
```

## how it works

- Reads: `background`, `foreground`, and `palette[0..15]` from Ghostty.
- Computes a hash of `bg/fg + palette[0..15]`.
- Writes a theme to: `~/.pi/agent/themes/ghostty-sync-<hash>.json`.
- Removes older `ghostty-sync-*.json` files (keeps only the current one).
- Sets pi theme to `ghostty-sync-<hash>`.

## mapping notes

Uses ANSI slot semantics:

- `palette[1]` → `error`
- `palette[2]` → `success`
- `palette[3]` → `warning`
- `palette[4]` → `link` (links/borders)
- `palette[5]` → `accent` (primary highlight)
- `palette[6]` → `accentAlt` (secondary highlight)

Neutrals (`muted`, `dim`, subtle borders) are derived from `background` + `foreground` instead of trusting `palette[0]`/`palette[8]`.

## requirements

- Ghostty installed and `ghostty` available in `PATH`

## license

MIT
npm package: @ogulcancelik/pi-handoff
Description: Context-aware session handoff for pi. Transfer context to a new session via command, tool, or automatic context guard.
Author: Can Celik
Latest version: 1.0.4

# pi-handoff

Context-aware session handoff for [pi](https://github.com/badlogic/pi-mono). Transfer context to a new session via command, tool, or automatic context guard.

## Install

```bash
pi install npm:@ogulcancelik/pi-handoff
```

Or add manually to `~/.pi/agent/settings.json`:

```json
{
  "packages": ["npm:@ogulcancelik/pi-handoff"]
}
```

## What it does

Three ways to hand off context to a fresh session:

### `/handoff <instruction>`

User-initiated. Tell the agent what to focus on — it writes a complete handoff prompt and starts a new session.

```
/handoff continue with phase two of the refactor plan
/handoff focus on the combat sim changes, especially the Unity port
```

### `handoff` tool

Agent-initiated. The agent writes the handoff prompt directly when asked. The prompt includes all relevant context, decisions, files, and next steps so the new session can continue without the old conversation.

### Context guard (automatic)

At **90% context usage**, you get a prompt:

```
Context at 92% — handoff to a new session?
> Yes, handoff
  No, keep going
```

If you pick yes — or don't respond within 60 seconds — the agent automatically writes a handoff prompt and starts a new session. If you pick no or dismiss the prompt, it keeps going in the current session and won't ask again for that session.

## How it works

1. The agent writes a self-contained prompt summarizing the current session
2. A new session is created (with parent session tracking)
3. The handoff prompt is delivered to the new session as the first message
4. The prompt includes a reference to the parent session file

## Pairs well with pi-session-recall

The handoff prompt includes a parent session reference. If you also have [pi-session-recall](https://github.com/ogulcancelik/pi-session-recall) installed, the new session can query the parent for additional context using `session_query` — useful when the agent needs details that didn't make it into the handoff prompt.

```bash
pi install npm:@ogulcancelik/pi-session-recall
```

## Requirements

- [pi](https://github.com/badlogic/pi-mono) v0.40+

## License

MIT
npm package: @ogulcancelik/pi-minimal-footer
Description: Minimal footer for pi with context gauge and subscription usage bars
Author: Can Celik
Latest version: 0.1.3

# pi-minimal-footer

Minimal footer for [pi](https://github.com/badlogic/pi-mono) that replaces the default footer with a compact two-line display: context gauge on top, subscription usage bars below.

![Claude Max](assets/claude.png)

![OpenAI Codex](assets/codex.png)

## Features

- **Context gauge** — working directory, git branch, model, thinking level, and context window usage with token counts
- **Subscription usage bars** — rolling window quotas with reset timers for supported providers
- **Auto-refresh** — fetches usage on startup and model switch, then every 5 minutes
- **Git integration** — branch name, dirty state, ahead/behind counts (supports jj)

## Supported providers

| Provider | What it shows |
|----------|---------------|
| Claude Max | 5h + weekly rolling windows |
| OpenAI Codex | Primary + secondary rolling windows |
| GitHub Copilot | Premium interactions + chat quotas |
| Google Gemini | Pro + Flash remaining quotas |
| MiniMax | 5h + weekly rolling windows (Token Plan / Coding Plan) |
| MiniMax CN | Same as MiniMax, China endpoint |

## Install

```bash
pi install npm:@ogulcancelik/pi-minimal-footer
```

## How it works

The footer reads context usage from the last assistant message's token counts (free — comes with every LLM response). Subscription usage is fetched from each provider's dedicated quota API using your existing auth tokens from `~/.pi/agent/auth.json` or environment variables.

Usage is fetched:
- Once on startup
- Immediately on model switch (Ctrl+P)
- Every 5 minutes after that

The footer adapts to narrow terminals by stacking lines vertically instead of the single-line wide layout.

## Known issues

### Claude Max usage bar not showing

Anthropic's OAuth usage endpoint (`/api/oauth/usage`) has been returning persistent 429 (rate limit) errors since late March 2026, affecting all third-party tools that display Claude usage data (CodexBar, oh-my-claudecode, claude-pulse, etc.). This is an Anthropic-side issue — tracked in [claude-code#30930](https://github.com/anthropics/claude-code/issues/30930) and [claude-code#31021](https://github.com/anthropics/claude-code/issues/31021). The usage bar will start working again once Anthropic fixes the endpoint.

## Notes

- Replaces the default pi footer entirely via `ctx.ui.setFooter()`
- Auth tokens are read from `~/.pi/agent/auth.json` (populated by `/login`) or standard env vars (`ANTHROPIC_API_KEY`, `MINIMAX_API_KEY`, etc.)
- Providers without auth simply don't show a usage bar — no errors
npm package: @ogulcancelik/pi-session-recall
Description: Search and query past pi sessions. Recall previous conversations on demand.
Author: Can Celik
Latest version: 1.0.3

# pi-session-recall

Recall past [pi](https://github.com/badlogic/pi-mono) sessions. Search through conversation history and query specific sessions with an LLM.

## Install

```bash
pi install npm:@ogulcancelik/pi-session-recall
```

Or add manually to `~/.pi/agent/settings.json`:

```json
{
  "packages": ["npm:@ogulcancelik/pi-session-recall"]
}
```

## What it does

Two tools that let the agent recall past sessions:

### `session_search`

Keyword search across all past sessions using ripgrep. Returns matching sessions with context snippets.

The agent uses this automatically when you reference something from a previous conversation — e.g. *"remember when we tried X?"*

### `session_query`

Deep-dives into a specific session file. Loads the conversation, sends it to an LLM, and answers your question about it.

For large sessions that exceed the model's context window, it uses smart windowing: keeps the first/last messages plus keyword-relevant sections, marking gaps with `[... N messages omitted ...]`.

### `/session-recall`

Command to configure which model is used for `session_query`. Opens a picker with all your available models.

By default, queries use your **current session model**. If you want to save tokens, pick a cheaper model (e.g. Haiku, GPT-4o mini).

## Configuration

Config is stored at `~/.pi/agent/session-recall.json`:

```json
{
  "queryModel": {
    "provider": "anthropic",
    "id": "claude-haiku-4-5"
  }
}
```

If no model is configured (or the configured model isn't available), it falls back to whatever model is active in your current session.

## Requirements

- [pi](https://github.com/badlogic/pi-mono) v0.40+
- [ripgrep](https://github.com/BurntSushi/ripgrep) (`rg`) — recommended for fast search, falls back to `grep` or Node-native scan

## License

MIT
npm package: @ogulcancelik/pi-sketch
Description: Quick sketch pad for pi - draw in browser, send to models
Author: Can Celik
Latest version: 0.1.2

# pi-sketch

Quick sketch pad for [pi](https://github.com/badlogic/pi-mono) - draw in browser, send to models.

![demo](https://raw.githubusercontent.com/ogulcancelik/pi-sketch/main/assets/demo.gif)

## Install

```bash
pi install npm:@ogulcancelik/pi-sketch
```

Or try without installing:

```bash
pi -e npm:@ogulcancelik/pi-sketch
```

## Usage

```
/sketch
```

Opens a canvas in your browser. Draw your sketch, press Enter to send.

## Features

- **Quick sketches** - draw arrows, boxes, diagrams
- **Clipboard paste** - `Ctrl+V` to paste screenshots, annotate on top
- **Colors** - black, red, green, blue, white (eraser)
- **Brush sizes** - 1, 2, 3 keys
- **Undo** - Z key
- **Cancel from pi** - Escape key in terminal

## Workflow

1. `/paint` - opens browser canvas (URL shown as fallback)
2. Draw your sketch
3. `Ctrl+V` to paste and annotate screenshots
4. Press Enter in browser to save
5. `Sketch: /path` appears in your editor - add context and send

## Keyboard Shortcuts (in browser)

| Key | Action |
|-----|--------|
| `Enter` | Send sketch |
| `Escape` | Cancel |
| `C` | Clear canvas |
| `Z` | Undo |
| `1-3` | Brush size |
| `Ctrl+V` | Paste image |

## License

MIT
npm package: @ogulcancelik/pi-spar
Description: Agent-to-agent sparring for pi. Back-and-forth conversations with peer AI models for debugging, design review, and challenging your thinking.
Author: Can Celik
Latest version: 0.1.5

# pi-spar

Agent-to-agent sparring for [pi](https://github.com/badlogic/pi-mono). Back-and-forth conversations with peer AI models for debugging, design review, and challenging your thinking.

## Install

```bash
pi install npm:@ogulcancelik/pi-spar
```

## Setup

Configure which models are available for sparring:

```
/spmodels
```

This shows all models from your pi configuration and lets you assign short aliases (e.g., `opus`, `gpt`).

> **Note:** After changing model aliases, restart pi for the agent to see the updated aliases. The aliases work immediately for tool execution, but the agent's tool description updates on next startup.

## Usage

The extension provides a `spar` tool the agent can use, plus commands for viewing sessions.

### Tool: `spar`

The agent uses this when you ask it to consult another model:

```
"spar with gpt about whether this architecture makes sense"
"ask opus to review the error handling in src/auth.ts"
```

Sessions persist — follow up, push back, disagree. The peer can read files, grep, and explore your codebase but can't execute commands or write files.

### Commands

| Command | Description |
|---------|-------------|
| `/spmodels` | Configure available sparring models |
| `/spar [session]` | Watch a spar session in a floating overlay |
| `/spview` | Browse all sessions — view, peek, or delete |

### Peek overlay

`/spar` opens a floating overlay that renders the spar conversation using the same components as pi's main TUI — same message styling, same syntax-highlighted tool output, same everything. It's pi inside pi.

![peek overlay demo](./assets/peek-demo.jpg)

- **j/k** or **↑/↓** — scroll
- **g/G** — jump to top/bottom
- **q** or **Esc** — close

Live sessions auto-scroll as the peer model responds.

### Session browser

`/spview` opens an inline session browser:

- **j/k** or **↑/↓** — navigate
- **enter** — open peek overlay for selected session
- **d** — delete selected session
- **D** — delete all non-active sessions
- **q** or **Esc** — close

## License

MIT
npm package: @ogulcancelik/pi-ssh-tools
Description: Explicit SSH tools for pi. Toggle /ssh on for a host, then use ssh_read, ssh_write, ssh_edit, and ssh_bash without replacing local tools.
Author: Can Celik
Latest version: 0.1.2

# pi-ssh-tools

Explicit SSH tools for [pi](https://github.com/badlogic/pi-mono).

Turn SSH mode on only when you need it, keep local tools untouched, and give the agent a separate remote toolset:

- `ssh_read`
- `ssh_write`
- `ssh_edit`
- `ssh_bash`

## Install

```bash
pi install npm:@ogulcancelik/pi-ssh-tools
```

Or add manually to `~/.pi/agent/settings.json`:

```json
{
  "packages": ["npm:@ogulcancelik/pi-ssh-tools"]
}
```

## What it does

This package adds a `/ssh` command.

- Default is off
- No persistence across sessions
- Local `read`, `write`, `edit`, and `bash` stay local
- When SSH mode is active, the agent also gets `ssh_read`, `ssh_write`, `ssh_edit`, and `ssh_bash`
- The active remote host and cwd are injected into the system prompt while SSH mode is on

That makes remote work explicit instead of silently swapping out local tools.

## Usage

```text
/ssh
/ssh mac
/ssh clawd
/ssh mac:/Users/can/project
/ssh status
/ssh off
```

When `/ssh` is called with no arguments, the extension offers hosts from `~/.ssh/config`.

You can always bypass the picker and type a host manually:

```text
/ssh user@host
/ssh user@host:/remote/path
```

That means the package still works even if you do not use `~/.ssh/config`.

## How host selection works

The picker reads `Host ...` aliases from your local `~/.ssh/config`.

- wildcard entries like `Host *` are ignored
- aliases are used as the SSH target directly
- if no remote path is provided, the extension resolves it with `ssh <host> pwd`

This is mainly a convenience layer. SSH config is not required for the actual remote tools.

## Requirements

- [pi](https://github.com/badlogic/pi-mono)
- local `ssh` client available in `$PATH`
- key-based auth or another non-interactive SSH setup
- `bash` available on the remote host

## Notes

- `ssh_write` writes file content over stdin, which behaves better on macOS than GNU-specific `base64 -d` shell snippets
- relative remote paths resolve against the active remote cwd
- image reads are supported for common extensions: jpg, jpeg, png, gif, webp

## License

MIT
npm package: @ogulcancelik/pi-tmux
Description: Tmux pane management for pi. Run dev servers, watchers, and long-running processes in named panes without blocking the agent.
Author: Can Celik
Latest version: 0.1.1

# pi-tmux

Tmux pane management for [pi](https://github.com/badlogic/pi-mono). Run dev servers, watchers, and long-running processes in named panes without blocking the agent.

## Install

```bash
pi install npm:@ogulcancelik/pi-tmux
```

Or add manually to `~/.pi/agent/settings.json`:

```json
{
  "packages": ["npm:@ogulcancelik/pi-tmux"]
}
```

## What it does

Gives the agent a `tmux` tool with five actions:

| Action | Description |
|--------|-------------|
| **run** | Start a command in a named pane |
| **read** | Capture output from a named pane |
| **send** | Send keys (`C-c`, `Enter`, etc.) or literal text to a pane |
| **stop** | Kill a named pane |
| **list** | List all managed panes |

The agent uses `tmux run` for long-running processes (dev servers, file watchers, builds) and `bash` for short-lived commands. This keeps the agent unblocked while background processes run.

If you are using [herdr](https://github.com/ogulcancelik/herdr), use [`pi-herdr`](https://github.com/ogulcancelik/pi-extensions/tree/main/packages/pi-herdr) instead. `pi-herdr` exists specifically for herdr-native pane, tab, workspace, output watch, and agent-status workflows. `pi-tmux` is for plain tmux sessions.

## Layout

Pi runs on the left. The first worker pane splits to the right. Additional panes stack vertically below existing ones. You can override with `position: "right"` or `position: "bottom"`.

## How it works

- Panes are tagged with `@pi_name` tmux user options for reliable discovery
- ANSI escape sequences are stripped from captured output
- Dead panes are automatically replaced on `run`
- The tool self-disables when pi is not running inside tmux
- The tool also self-disables when `HERDR_ENV` is present, so herdr can own pane orchestration inside herdr-managed tmux sessions

## Requirements

- [pi](https://github.com/badlogic/pi-mono) v0.40+
- [tmux](https://github.com/tmux/tmux) — pi must be running inside a tmux session without `HERDR_ENV`

## License

MIT
npm package: @ogulcancelik/pi-web-browse
Description: Web search and content extraction skill for pi-coding-agent. Search the web and fetch pages via a real headless browser (CDP). Works on Linux, macOS, and Windows.
Author: Can Celik
Latest version: 1.0.5

# pi-web-browse

Web search and content extraction skill for [pi](https://github.com/badlogic/pi-mono). Search the web and fetch pages via a real headless browser (CDP).

**Works on Linux, macOS, and Windows.**

## Features

- 🔍 **Web Search** - Search via Google (falls back to DuckDuckGo if blocked)
- 🌐 **Page Fetching** - Extract readable content from any URL
- 🤖 **Bot Protection Bypass** - Handles JS challenges, Cloudflare, etc.
- 🚀 **Persistent Daemon** - Warm browser session for fast subsequent requests
- 🖥️ **Cross-Platform** - Auto-detects Chrome, Brave, Edge, Chromium

## Install

```bash
pi install npm:@ogulcancelik/pi-web-browse
```

Or via git:

```bash
pi install github.com/ogulcancelik/pi-web-browse
```

(Optional, try without installing):

```bash
pi -e npm:@ogulcancelik/pi-web-browse
```

After first use, the agent will guide you through setup.

## Usage

The agent will automatically use this skill when you ask it to search the web or fetch page content.

You can also invoke it directly:

```bash
/skill:web-browse "rust async runtime"
```

## Configuration

Environment variables (all optional):

| Variable | Description | Default |
|----------|-------------|---------|
| `WEB_BROWSE_BROWSER_BIN` | Browser binary path | Auto-detected, prefers Chrome |
| `WEB_BROWSE_USER_AGENT` | Override User-Agent string | Auto-derived from detected browser + OS |
| `WEB_BROWSE_DAEMON_PORT` | Daemon HTTP port | 9377 |
| `WEB_BROWSE_CDP_PORT` | Chrome DevTools port | 9225 |
| `WEB_BROWSE_DEBUG_DUMP` | Save debug files on failure | off |

By default, the hidden profile is browser-specific (for example `~/.config/web-browse-cdp-profile-chrome` or `~/.config/web-browse-cdp-profile-brave`) so updates do not try to reuse the same hidden profile across different Chromium-family browsers.

## Browser Detection

The skill auto-detects browsers in common locations and now prefers Chrome first, because Google Search is less likely to challenge headless Chrome than headless Brave on some setups.

- **Linux:** google-chrome, google-chrome-stable, brave, brave-browser, chromium (from PATH)
- **macOS:** Google Chrome, Google Chrome Canary, Brave Browser, Edge, Chromium (in /Applications)
- **Windows:** Chrome, Brave, Edge, Chromium (Program Files, LocalAppData)

If you want Brave anyway, set `WEB_BROWSE_BROWSER_BIN` or pass `--browser-bin`.

## How It Works

1. **Search** - Uses Google via a persistent headless browser session. If Google blocks the request, it fails fast and falls back to DuckDuckGo.
2. **Fetch** - Opens URLs in the same hidden browser session, waits for JS, and extracts readable content.
3. **Daemon** - Keeps a warm, browser-specific hidden profile/session alive for speed and bot-protection resilience without touching your normal browser profile.

## License

MIT
npm package: @ogustavohp/eslint-config
Description: Install dependencies: ``` npm i -D @ogustavohp/eslint-config ``` Inside `.eslintrc.json` ``` {   "extends": "@ogustavohp/eslint-config/next-node" } ```
Latest version: 1.1.0

# eslint-config

### In Node.js and Next.js

Install dependencies:
```
npm i -D @ogustavohp/eslint-config
```
Inside `.eslintrc.json`
```
{
  "extends": "@ogustavohp/eslint-config/next-node"
}
```