@d7x7/pi-good-communication

good communication discipline for pi — keep conversations oral, complex ideas written

Packages

Package details

extension

Install @d7x7/pi-good-communication from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@d7x7/pi-good-communication
Package
@d7x7/pi-good-communication
Version
0.1.0
Published
May 29, 2026
Downloads
not available
Author
sha_dow
License
unknown
Types
extension
Size
6.2 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./src/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-good-communication

good communication discipline for the pi coding agent.

conversation stays oral and immediate. complex ideas persist as written artefacts.

concept

a pi session is a Shannon communication channel.

  • Information Source (SRC) — the user. encodes intent as natural language.
  • Destination (DST) — the agent. decodes language, acts, encodes response.

each signal should be short, single-purpose, and free of structural noise. this extension enforces that at both ends.

inspired by the WAL GUIDANCE block:

(* One line. One step.
   One step. One job only.
   For LLM steps. Keep text short.
   If more detail is needed, write a document.
   For shell steps. Do not use pipe, && or ||.
   Write a script file instead. *)

oral and written

conversation is oral — immediate, transient, lived. documents and scripts are written — durable, revisable, shared.

complexity routes away from the channel toward four targets:

  • docs/ — project documents. design notes, rationale, decisions.
  • scripts/ — project scripts. reusable, versioned, auditable.
  • tmp/docs/ — transient documents. external dependency notes, scratch reasoning.
  • tmp/scripts/ — transient scripts. one-off helpers, experimental tooling.

the first two are project assets under version control. the last two reference external concerns or material not yet ready to commit.

src-msg

user prompt length guard. two zones based on character count.

  • [0, 160) — pass silently.
  • [160, +infinity) — block.
declare function isBlocked(length: number): boolean;
declare const MAX_CHARS: 160;

src-cmd

user shell command guard. intercepts ! and !! via the user_bash event.

  • [0, 160) — pass.
  • [160, +infinity) — block.
declare function blockResult(msg: string): BlockResult;

dst-bash

agent shell execution guard. two zones based on character count.

  • [0, 160) — pass silently.
  • [160, +infinity) — block.

on bash failure, appends a light suggestion to extract the command into a standalone script for debugging and re-runs.

declare function isBlocked(length: number): boolean;

together

SRC-msg  →  keep prompts short
SRC-cmd  →  keep user shell short
DST-bash →  keep agent shell short

two zones, mechanically enforced. no prompts, no confirmations. no runtime overhead for passes.

this is a communication discipline, not a security boundary. when used with pi-wal, Guard enforces clean structure and WAL records clean steps.