A pi package that enforces a formal writing-register constraint across agent output. It is designed to suppress colloquial, slang-heavy, and sycophantic output tendencies exhibited by certain instruction-tuned foundation models.
The package now uses a pi extension as its primary enforcement layer. On every agent run, the extension appends a compact register constraint to the active system prompt. The package also keeps an explicit prompt template and skill for users who want to invoke the same constraint manually.
The constraint directs the model to produce plain, precise, expository prose at the register of a university textbook. All slang, filler, enthusiasm markers, emoji, marketing adjectives, and forced informality are prohibited.
pi install git:github.com/lulucatdev/pi-be-seriousAfter installing the package, pi loads the bundled extension automatically. The extension injects the register constraint into the system prompt on every agent run, so the behavior does not depend on skill auto-triggering.
/prompt:be-serious <your request here>
This wraps the request with the register constraint for that invocation. It is useful when the user wants an explicit per-turn entry point, even though the extension already applies the policy automatically.
/skill:be-serious
The be-serious skill remains available as an explicit manual secondary interface. It exposes the same constraint text for manual loading with /skill:be-serious and keeps the package compatible with skill-based workflows. However, the extension is the primary mechanism that guarantees the policy is present.
- The extension reads the canonical constraint text from
skills/be-serious/SKILL.mdand appends it to the active system prompt inbefore_agent_start. - The extension skips injection when the current system prompt already contains the same constraint marker, which avoids duplicate payload growth when multiple entry points are combined.
- The prompt template and skill remain in the package as explicit user-facing entry points.
scripts/check-prompt-budget.shenforces a size budget for the skill payload and prompt template to catch prompt-bloat regressions before release.
| Category | Examples |
|---|---|
| Slang and internet vernacular | "ngl", "lowkey", "vibe", "fire", "ship it", "LGTM" |
| Sycophantic expressions | "Great question!", "Happy to help!", "Absolutely!" |
| Enthusiasm markers | Exclamation marks for enthusiasm, emoji, "awesome", "amazing" |
| Filler phrases | "Let's go ahead and", "basically", "alright so" |
| Forced informality | "gonna", "wanna", "y'all", "folks", contractions in prose |
| Anthropomorphization | "the compiler is happy", "the function wants" |
| Vague intensifiers | "very", "really", "pretty much", "kind of" |
| Chinese colloquial buzzwords | 闭环, 痛点, 砍一刀, 揪出来, 拍板, 稳稳接住, 说人话就是, 一句话总结, 不踩坑, 收口, 狠狠干 |
- Complete, grammatically standard, declarative sentences
- Neutral, impersonal tone without affective coloring
- Precise vocabulary with the most accurate term for each concept
- Logical connectives ("therefore", "however", "because") over conversational transitions ("so", "anyway", "basically")
- Every word carrying semantic load; no filler
The constraint applies to all natural-language output. It does not apply to generated code, where idiomatic conventions of the target language take precedence.
This package is designed for the pi coding agent. Ports to other agent platforms are available:
| Platform | Repository | Enforcement mechanism |
|---|---|---|
| pi | this repository | before_agent_start extension hook |
| OpenAI Codex CLI | codex-be-serious | SessionStart hook with additionalContext |
| Claude Code | Built-in skill at ~/.claude/skills/be-serious/ |
Superpowers skill auto-trigger |
The constraint specification (skills/be-serious/SKILL.md) is kept aligned across ports. Platform-specific differences are limited to the injection mechanism.
MIT