---
slug: "pi-shit"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/ferologics/pi-shit@main/README.md"
repo: "https://github.com/ferologics/pi-shit"
source_file: "README.md"
branch: "main"
---
# pi-shit

Combined Pi package for personal extensions + skills.

## Structure

- `extensions/` → Pi extensions (for example `deep-review`, `pi-ghostty-hunk`, `pi-ghostty-lazygit`, `pi-system-theme`, `plan-mode`, `pi-verbosity-control`)
- `skills/` → Pi skills (including `pr-context-packer`)
- `themes/` → Pi themes (`rose-pine`, `rose-pine-dawn`)

## Install in Pi

```bash
pi install npm:pi-shit
```

Or from git/local:

```bash
pi install git:github.com/ferologics/pi-shit
pi install /path/to/pi-shit
```

## Sync workflow

Primary flow (monorepo-first): edit in this repo, then publish mirrors.

```bash
just publish
```

`just publish` fans out to:

- `skills/` → `pi-skills`
- `extensions/` → `pi-extensions`
- `extensions/deep-review/` → `pi-deep-review`
- `extensions/pi-ghostty-hunk/` → `pi-ghostty-hunk`
- `extensions/pi-ghostty-lazygit/` → `pi-ghostty-lazygit`
- `extensions/pi-notify/` → `pi-notify`
- `extensions/pi-system-theme/` → `pi-system-theme`
- `extensions/pi-verbosity-control/` → `pi-verbosity-control`

Or publish individually:

```bash
just publish-skills
just publish-extensions
just publish-pi-deep-review
just publish-pi-ghostty-hunk
just publish-pi-ghostty-lazygit
just publish-pi-notify
just publish-pi-system-theme
just publish-pi-verbosity-control
```

Repair-only flow (use only for emergency downstream hotfixes; normal work should stay in `pi-shit`):

```bash
just pull-skills
just pull-extensions
just pull-pi-deep-review
just pull-pi-ghostty-hunk
just pull-pi-ghostty-lazygit
just pull-pi-notify
just pull-pi-system-theme
just pull-pi-verbosity-control
```

Theme sync still pulls from `zenobi-us/pi-rose-pine`:

```bash
just update-themes
```

`just repair-pull` runs all mirror pulls (`pull-skills`, `pull-extensions`, `update-themes`) and regenerates the package manifest.

`pull-extensions` includes `pull-pi-deep-review`, `pull-pi-ghostty-hunk`, `pull-pi-ghostty-lazygit`, `pull-pi-notify`, `pull-pi-system-theme`, and `pull-pi-verbosity-control`, so nested mirror pulls are included automatically.

## Release workflow

Use release automation for version bump propagation + mirror publish + GitHub releases (npm publish is handled by per-repo trusted publisher workflows).

Dry-run first:

```bash
just release-dry pi-deep-review minor
```

Then execute:

```bash
just release pi-deep-review minor
```

High-level flow:

```mermaid
flowchart TB
    A[Pick target + bump] --> B{Mode}
    B -->|dry-run| C[Plan version cascade]
    C --> D[Print commands only]

    B -->|execute| E[Run checks]
    E --> F[Bump versions in cascade]
    F --> G[git add + commit + push]
    G --> H[Run subtree publish recipes]
    H --> H1[Push leaf mirror repo]
    H --> H2[Push bundle mirror repo]
    H1 --> I[Create GH releases if missing]
    H2 --> I
    I --> J[npm publish via trusted workflows]
```

Supported targets (canonical package names only):

- `pi-deep-review` (bumps `pi-deep-review` → `@ferologics/pi-extensions` → `pi-shit`)
- `pi-ghostty-hunk` (bumps `pi-ghostty-hunk` → `@ferologics/pi-extensions` → `pi-shit`)
- `pi-ghostty-lazygit` (bumps `pi-ghostty-lazygit` → `@ferologics/pi-extensions` → `pi-shit`)
- `pi-notify` (bumps `pi-notify` → `@ferologics/pi-extensions` → `pi-shit`)
- `pi-system-theme` (bumps `pi-system-theme` → `@ferologics/pi-extensions` → `pi-shit`)
- `pi-verbosity-control` (bumps `pi-verbosity-control` → `@ferologics/pi-extensions` → `pi-shit`)
- `@ferologics/pi-extensions` (bumps `@ferologics/pi-extensions` → `pi-shit`)
- `@ferologics/pi-skills` (bumps `@ferologics/pi-skills` → `pi-shit`)
- `pi-shit` (bumps only root package)

Supported bump levels: `patch`, `minor`, `major`.

Release targets are discovered from `piRelease` metadata in release manifests, and `just check` runs `release-config-check` to fail fast when any release manifest is missing valid `piRelease` (`repo` + `branch`, optional `subtreePublishRecipe`) or its repo-local npm publish workflow. npm Trusted Publishers must be configured in npm for each package/repo pair so release-created GitHub releases can publish without OTP. Brand-new packages need one manual bootstrap publish first so the package exists on npm before trusted publishing can be configured.
