pi-impeccable

内容来源:README.md(说明文档) · 原始地址 · 查看安装指南

原始内容

pi-impeccable

Run Impeccable skills from Pi without blocking the agent.

Impeccable live mode running in Pi

pi-impeccable is a Pi extension for the incredible impeccable package. It installs or updates the Impeccable skill in your project, then runs Impeccable live mode through Pi in the background.

That means you can keep chatting with the agent while Impeccable watches the browser, queues design feedback, and asks Pi to respond. No long-running live-poll.mjs command holds the shell hostage.

Why use this?

  • Non-blocking live mode/impeccable live starts the helper server and background poller, then immediately gives Pi back to you.
  • Agent-native feedback loop — browser events and Impeccable work arrive to the agent.
  • Quiet status UI — Pi shows ✦ impeccable live while the background bridge is running.
  • Upstream skill, no vendoring — the extension uses the official impeccable package to install/update .agents/skills/impeccable in your project.

Install

pi install npm:pi-impeccable

Local testing:

pi -e ./pi-impeccable

Use

Install or update the upstream Impeccable skill:

/impeccable install              # installs latest upstream skill into .agents/skills/impeccable
/impeccable update               # updates that skill from upstream

Run Impeccable skills from Pi. pi-impeccable exposes the skills in one command with arguments. Some example commands:

/impeccable init
/impeccable shape new onboarding flow
/impeccable craft empty dashboard state
/impeccable audit src/pages/Home.tsx
/impeccable polish src/components/Header.tsx

Check Impeccable docs to see the options.

Start the non-blocking live loop:

/impeccable live

While live mode is running, Pi remains usable. Impeccable events are delivered in the background, and the agent can reply through impeccable_live_reply / impeccable_live_complete without exposing the polling loop as a foreground task.

Check or stop live mode:

/impeccable live status
/impeccable live stop
/impeccable stop

You can also say stop live to stop it quietly.

Release

Releases are tag-driven:

  1. jj owns the working-copy commit and main bookmark.
  2. git owns release tags.
  3. GitHub Actions publishes to npm, generates release notes with git-cliff, and creates the GitHub Release.

First release:

pnpm release:check

git-cliff --unreleased --tag v0.1.0   # optional release-notes preview

jj describe -m "chore: prepare v0.1.0 release"
jj bookmark move main -r @
jj git push 

git tag v0.1.0 main
git push origin v0.1.0                # publishes to npm and creates the GitHub Release

Later releases use the same flow: bump package.json, update CHANGELOG.md, preview notes with git-cliff --unreleased --tag vX.Y.Z, push main, then create and push the matching Git tag.

License

Apache-2.0 as Impeccable.