[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80271":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":29,"discoverSource":30},80271,"gentle-pi","Gentleman-Programming\u002Fgentle-pi","Gentleman-Programming","Gentle AI made-to-measure Pi agent",null,"TypeScript",123,27,2,4,0,8,19,35,24,73.34,"MIT License",false,"main",true,[],"2026-06-12 04:01:27","# gentle-pi\n\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fgentle-pi?color=blue)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fgentle-pi)\n[![pi package](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPi-package-6f42c1)](https:\u002F\u002Fpi.dev\u002Fpackages\u002Fgentle-pi)\n[![license](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fgentle-pi?color=blue)](LICENSE)\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FGentleman-Programming\u002Fgentle-pi?style=flat&color=yellow)](https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fgentle-pi\u002Fstargazers)\n[![Gentle-AI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGentle--AI-ecosystem-ff69b4)](https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fgentle-ai)\n[![Gentleman Programming](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fby-Gentleman%20Programming-black)](https:\u002F\u002Fgithub.com\u002FGentleman-Programming)\n[![YouTube](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FYouTube-Gentleman%20Programming-red?logo=youtube&logoColor=white)](https:\u002F\u002Fwww.youtube.com\u002Fc\u002FGentlemanProgramming)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-community-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.com\u002Finvite\u002Fgentleman-programming-769863833996754944)\n[![SDD\u002FOpenSpec](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSDD-OpenSpec-00ADD8)](#sddopenspec-flow)\n[![Subagents](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPi-subagents-brightgreen)](#what-it-adds)\n\n**Turn Pi from a powerful coding agent into a controlled development harness.**\n\n`gentle-pi` installs **el Gentleman** in Pi: a senior-architect operating layer for Spec-Driven Development, focused subagents, strict TDD evidence, reviewable work units, safety guards, and project\u002Fuser skill discovery.\n\nPi already has strong tools. `gentle-pi` adds the discipline for using them well.\n\n`gentle-pi` is the Pi-native package from the [Gentle-AI ecosystem](https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fgentle-ai), built by [Gentleman Programming](https:\u002F\u002Fgithub.com\u002FGentleman-Programming): the broader open-source project for turning AI coding agents into disciplined engineering environments with SDD workflows, skills, memory integrations, model routing, and review guardrails across multiple agents.\n\nFollow the project and the community around it:\n\n- GitHub: [Gentleman-Programming](https:\u002F\u002Fgithub.com\u002FGentleman-Programming)\n- YouTube: [Gentleman Programming](https:\u002F\u002Fwww.youtube.com\u002Fc\u002FGentlemanProgramming)\n- Community Discord: [Gentleman Programming](https:\u002F\u002Fdiscord.com\u002Finvite\u002Fgentleman-programming-769863833996754944)\n\nStartup intro collaboration: thanks to [@aporcelli](https:\u002F\u002Fgithub.com\u002Faporcelli) for [`pi-gentle-startup`](https:\u002F\u002Fgithub.com\u002Faporcelli\u002Fpi-gentle-startup), which inspired the clean-screen startup animation, compact runtime panel, and pink visual treatment.\n\n## The problem\n\nMost coding-agent sessions fail for operational reasons, not model reasons:\n\n- the agent jumps into code before requirements are clear;\n- architectural decisions disappear into chat history;\n- one request quietly becomes a huge multi-area diff;\n- tests run late, or not at all;\n- reviewers get handed a wall of changes;\n- subagents are available, but the parent session has no orchestration discipline;\n- project skills exist, but the model forgets to load them.\n\n`gentle-pi` fixes the workflow around the agent.\n\n## What it adds\n\n| Capability                     | What it does                                                                                                                                  |\n| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| **el Gentleman persona**       | Makes Pi behave like a senior architect and teacher, not a generic chatbot. Spanish responses use Rioplatense voseo by default.               |\n| **Rose startup intro**         | Adds a pink rose fade-in, compact project\u002Fruntime panel, and visible startup collaboration credit for @aporcelli's `pi-gentle-startup` ideas. |\n| **Work routing discipline**    | Small tasks stay inline. Context-heavy exploration can be delegated. Large or risky changes go through SDD\u002FOpenSpec.                          |\n| **SDD\u002FOpenSpec assets**        | Installs phase agents and chains for `init`, `explore`, `proposal`, `spec`, `design`, `tasks`, `apply`, `verify`, and `archive`.              |\n| **Lazy SDD preflight**         | Asks once per session for SDD mode, artifact store, PR chaining strategy, and review budget before the first SDD flow.                        |\n| **Subagent orchestration**     | Keeps one parent session responsible while child agents explore, implement, test, or review with focused context.                             |\n| **Strict TDD support**         | When project config declares a test command, apply\u002Fverify phases must record RED → GREEN → TRIANGULATE → REFACTOR evidence.                   |\n| **Reviewer protection**        | Surfaces review workload risk before a task turns into an oversized PR.                                                                       |\n| **Per-agent model assignment** | Pi-native modal for assigning stronger or cheaper models to specific SDD\u002Fcustom agents.                                                       |\n| **Skill discovery registry**   | Maintains `.atl\u002Fskill-registry.md` from project and user skills so review\u002Fcomment\u002FPR workflows do not silently miss the right skill.          |\n| **Delivery skills**            | Includes issue-first PRs, chained PRs, work-unit commits, cognitive docs, comment writing, and Judgment Day review.                           |\n| **Shell safety**               | Blocks destructive shell commands and asks for confirmation for sensitive operations.                                                         |\n\n## Install\n\n```bash\npi install npm:gentle-pi\n```\n\nRecommended companion packages:\n\n```bash\npi install npm:pi-subagents\npi install npm:pi-intercom\npi install npm:gentle-engram\npi install npm:pi-web-access\npi install npm:pi-lens\npi install npm:@juicesharp\u002Frpiv-todo\npi install npm:@juicesharp\u002Frpiv-ask-user-question\n```\n\nThen start Pi in a project:\n\n```bash\npi\n```\n\n`gentle-pi` provides SDD agents as global Pi runtime assets, not per-project setup. The first SDD flow in a session still runs a one-time SDD preflight for preferences; for natural-language requests, el Gentleman decides when SDD is needed and runs the explicit preflight first.\n\n## Quick start\n\n```text\n\u002Fgentle-ai:status          Check package, SDD assets, OpenSpec, and global model config.\n\u002Fgentle-ai:sdd-preflight   Run or reuse the session SDD preflight explicitly.\n\u002Fsdd-init                  Create or refresh openspec\u002Fconfig.yaml.\n\u002Fgentle:models             Assign global model\u002Feffort routing to SDD\u002Fcustom agents.\n\u002Fgentle:persona            Switch between gentleman and neutral persona modes.\n```\n\nTypical flow:\n\n1. Open Pi in your repo.\n2. Run `\u002Fgentle-ai:status`.\n3. Run `\u002Fsdd-init` once per project, or when test\u002Fproject capabilities change. This also runs the session SDD preflight.\n4. For a substantial change, ask Pi to use SDD. Natural-language requests are classified by the parent agent, not by brittle runtime regexes.\n5. Review the phase artifacts instead of trusting floating chat context.\n\n## How the harness decides what to do\n\n`gentle-pi` routes through the smallest safe workflow:\n\n| Request shape                                                               | Harness                      |\n| --------------------------------------------------------------------------- | ---------------------------- |\n| Small, clear, local edit                                                    | Inline direct work.          |\n| Unknown codebase area or context-heavy investigation                        | Focused subagent delegation. |\n| Large, ambiguous, architectural, product-facing, or high-review-risk change | SDD\u002FOpenSpec flow.           |\n\nThe goal is not ceremony. The goal is to avoid accidental chaos. Once a task stops being small, delegation is expected rather than optional.\n\n### Delegation triggers\n\n`gentle-pi` keeps the parent session thin and uses subagents at the narrowest useful point:\n\n| Trigger                                                                                                                     | Expected behavior                                                    |\n| --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |\n| Reading 4+ files to understand a flow                                                                                       | Launch `scout` or `context-builder` and synthesize its handoff.      |\n| Touching 2+ non-trivial code files                                                                                          | Use one `worker`, or require fresh review before completion.         |\n| Commit, push, or PR after code changes                                                                                      | Run a fresh-context `reviewer` unless the diff is trivial docs\u002Ftext. |\n| Wrong cwd, worktree\u002Fgit accident, merge recovery, confusing test\u002Fenv issue                                                  | Stop and run a fresh audit reviewer before continuing.               |\n| Long monolithic session with accumulating complexity, roughly 20 tool calls, 5 exploratory reads, or 2 non-mechanical edits | Pause and delegate or explain why not.                               |\n\nThe intended balanced loop for a bounded bugfix is:\n\n```text\nparent git\u002Fstatus + clarify → scout when context-heavy → one worker writes → fresh reviewer audits → parent validates and reports\n```\n\nFresh reviewers are intentionally not token-saving devices; they buy independent judgment. `scout`\u002F`context-builder` save parent context by compressing broad exploration. `worker` preserves a single writer thread.\n\n## SDD\u002FOpenSpec flow\n\n```text\ninit\n  ↓\nexplore → proposal → spec ─┬→ design ─┐\n                            └─────────┴→ tasks → apply → verify → sync → archive\n```\n\nThe main loop is intentionally file-backed when you choose `openspec` or `both`:\n\n```text\nplanning artifacts                implementation evidence        canonical update\n──────────────────                ───────────────────────        ────────────────\nproposal\u002Fspec\u002Fdesign\u002Ftasks   →    apply-progress\u002Fverify-report → sync-report → archive-report\n```\n\nFor substantial work, the parent session coordinates the flow and each phase writes artifacts. That gives you:\n\n- explicit requirements and non-goals;\n- design decisions that survive compaction;\n- task plans reviewers can reason about;\n- implementation evidence;\n- verification reports;\n- sync reports that update canonical specs while keeping the change active;\n- archive notes for future agents.\n\n### OpenSpec artifact model\n\n`gentle-pi` treats OpenSpec-compatible behavior as part of the harness. You do not need to install the external OpenSpec CLI\u002Fpackage for SDD.\n\nIn file-backed modes, canonical accepted behavior lives in `openspec\u002Fspecs\u002F`, while active changes carry deltas under `openspec\u002Fchanges\u002F`:\n\n```text\nopenspec\u002F\n├── specs\u002F                                      # accepted source of truth\n│   └── {domain}\u002Fspec.md\n└── changes\u002F\n    ├── {change}\u002F                              # active work\n    │   ├── proposal.md\n    │   ├── specs\u002F{domain}\u002Fspec.md             # full spec or delta spec\n    │   ├── design.md\n    │   ├── tasks.md\n    │   ├── apply-progress.md\n    │   ├── verify-report.md\n    │   └── sync-report.md\n    └── archive\u002FYYYY-MM-DD-{change}\u002F           # immutable audit trail\n```\n\nDelta flow:\n\n```text\nopenspec\u002Fchanges\u002F{change}\u002Fspecs\u002F{domain}\u002Fspec.md\n        │\n        │  sdd-sync applies ADDED \u002F MODIFIED \u002F REMOVED\n        ▼\nopenspec\u002Fspecs\u002F{domain}\u002Fspec.md\n        │\n        │  sdd-archive moves the completed change folder\n        ▼\nopenspec\u002Fchanges\u002Farchive\u002FYYYY-MM-DD-{change}\u002F\n```\n\nWhen a canonical spec already exists, change specs use requirement operation sections:\n\n```markdown\n## ADDED Requirements\n\n## MODIFIED Requirements\n\n## REMOVED Requirements\n```\n\n`MODIFIED` requirements must include the full requirement block, including still-valid scenarios, because sync replaces the canonical block by requirement name. `sdd-sync` syncs file-backed deltas into `openspec\u002Fspecs\u002F{domain}\u002Fspec.md` while keeping the change active; `sdd-archive` then moves the synced change to `openspec\u002Fchanges\u002Farchive\u002FYYYY-MM-DD-{change}\u002F`.\n\nEngram-only mode is different by design: Engram is working memory and does not maintain a canonical spec merge layer. Use `openspec` or `both` (hybrid file + memory persistence) when you need canonical spec evolution.\n\n## SDD preflight and project files\n\n`gentle-pi` does not require SDD agents to be copied into every project. The package ensures global Pi SDD assets exist under the Pi agent home and treats project-local files only as overrides\u002Fdebug copies. Slash SDD flows such as `\u002Fsdd-*`, `\u002Fsdd-init`, and the explicit `\u002Fgentle-ai:sdd-preflight` command run a lazy preflight and ask for session-scoped SDD preferences. For natural-language requests, the parent agent decides whether the work should use SDD and must run\u002Freuse `\u002Fgentle-ai:sdd-preflight` before continuing.\n\n```text\n~\u002F.pi\u002Fagent\u002Fagents\u002Fsdd-*.md\n~\u002F.pi\u002Fagent\u002Fchains\u002Fsdd-*.chain.md\n~\u002F.pi\u002Fagent\u002Fgentle-ai\u002Fsupport\u002Fstrict-tdd*.md\n```\n\nThe preflight choices are reused for later SDD flows in the same session:\n\n- execution mode: `interactive` or `auto`;\n- artifact store: `openspec`, or `engram`\u002F`both` when callable memory tools are available;\n- PR chaining strategy: `auto-forecast`, `ask-always`, `single-pr-default`, or `force-chained`;\n- review budget line threshold.\n\nIt does **not** overwrite existing global assets unless you explicitly run:\n\n```text\n\u002Fgentle-ai:install-sdd --force\n```\n\nManual preflight commands:\n\n```text\n\u002Fgentle-ai:sdd-preflight\n\u002Fgentle:sdd-preflight\n```\n\n## Skill registry\n\n`gentle-pi` keeps a local registry at:\n\n```text\n.atl\u002Fskill-registry.md\n```\n\nThe registry scans project and user skill roots, not package-owned skills. It exists to catch workflow skills that are present on disk but not visible in Pi's injected skill list.\n\nIt scans common roots such as:\n\n```text\n.\u002Fskills\n.opencode\u002Fskills\n.claude\u002Fskills\n.gemini\u002Fskills\n.cursor\u002Fskills\n.github\u002Fskills\n.codex\u002Fskills\n.qwen\u002Fskills\n.kiro\u002Fskills\n.openclaw\u002Fskills\n.pi\u002Fskills\n.agent\u002Fskills\n.agents\u002Fskills\n.atl\u002Fskills\n~\u002F.pi\u002Fagent\u002Fskills\n~\u002F.config\u002Fagents\u002Fskills\n~\u002F.agents\u002Fskills\n~\u002F.kimi\u002Fskills\n~\u002F.config\u002Fopencode\u002Fskills\n~\u002F.config\u002Fkilo\u002Fskills\n~\u002F.claude\u002Fskills\n~\u002F.gemini\u002Fskills\n~\u002F.gemini\u002Fantigravity\u002Fskills\n~\u002F.cursor\u002Fskills\n~\u002F.copilot\u002Fskills\n~\u002F.codex\u002Fskills\n~\u002F.codeium\u002Fwindsurf\u002Fskills\n~\u002F.qwen\u002Fskills\n~\u002F.kiro\u002Fskills\n~\u002F.openclaw\u002Fskills\n```\n\nBehavior:\n\n- `.atl\u002F` is added to `.gitignore` when needed;\n- the registry refreshes on session start;\n- startup refresh is skipped when Pi starts with `--no-skills` \u002F `-ns`, `--no-skill-registry`, or `GENTLE_PI_NO_SKILL_REGISTRY=1`;\n- `\u002Fskill-registry:refresh` forces regeneration;\n- a best-effort watcher refreshes when skill files change;\n- the registry indexes skill names, full descriptions, scope, and exact `SKILL.md` paths without copying skill body rules.\n\nSkill discovery is a guardrail, not a workflow router: it helps Pi load the right skill without forcing extra ceremony.\n\nDelegation contract:\n\n- parent\u002Forchestrator resolves project\u002Fuser skills from the registry and passes matching paths under `## Skills to load before work`;\n- SDD subagents still use their assigned executor\u002Fphase skill;\n- during normal runtime, subagents should not independently discover additional project\u002Fuser `SKILL.md` files or the registry;\n- fallback loading is degraded self-healing and must be reported via `skill_resolution` as `fallback-registry`, `fallback-path`, or `none`.\n\n## Persona modes\n\n```text\n\u002Fgentle:persona\n```\n\n| Persona     | Behavior                                                                                                      |\n| ----------- | ------------------------------------------------------------------------------------------------------------- |\n| `gentleman` | Senior architect, teacher, direct technical feedback, Rioplatense Spanish\u002Fvoseo when the user writes Spanish. |\n| `neutral`   | Same discipline, warmer professional language, no regional expression.                                        |\n\nSaved at:\n\n```text\n.pi\u002Fgentle-ai\u002Fpersona.json\n```\n\nRun `\u002Freload` or start a new Pi session after switching persona.\n\n## Model and effort assignment\n\n```text\n\u002Fgentle:models\n```\n\nThe modal discovers:\n\n- project agents in `.pi\u002Fagents\u002F` and `.agents\u002F`;\n- user agents in `~\u002F.pi\u002Fagent\u002Fagents\u002F` and `~\u002F.agents\u002F`;\n- built-in agents from `pi-subagents`.\n\nRecommended model\u002Feffort shape:\n\n| Agent kind                 | Recommended model                                    | Recommended effort (`thinking`) |\n| -------------------------- | ---------------------------------------------------- | ------------------------------- |\n| Explore, proposal, archive | Fast and cheap is usually enough.                    | `off` to `low`                  |\n| Spec, design, tasks        | Strong reasoning model.                              | `medium` to `high`              |\n| Apply                      | Strong coding and tool-use model.                    | `medium` to `high`              |\n| Verify \u002F review            | Strong fresh-context model.                          | `high`                          |\n| Tiny utilities             | Inherit active\u002Fdefault model unless they bottleneck. | `inherit`                       |\n\nSaved globally at:\n\n```text\n~\u002F.pi\u002Fgentle-ai\u002Fmodels.json\n```\n\nExisting project-local `.pi\u002Fgentle-ai\u002Fmodels.json` files are still read as a legacy fallback when no global model config exists, but `\u002Fgentle:models` writes the shared global config.\n\nConfig shape (per agent):\n\n```json\n{\n  \"sdd-design\": {\n    \"model\": \"anthropic\u002Fclaude-sonnet-4\",\n    \"thinking\": \"high\"\n  },\n  \"sdd-archive\": {\n    \"model\": \"openai\u002Fgpt-5-mini\"\n  }\n}\n```\n\nLegacy string entries are still accepted and treated as `model`-only config.\n\n## Commands\n\n| Command                          | What it does                                                        |\n| -------------------------------- | ------------------------------------------------------------------- |\n| `\u002Fgentle-ai:status`              | Shows package, SDD asset, OpenSpec, and global model config status. |\n| `\u002Fgentle:models`                 | Opens global model + effort assignment UI.                          |\n| `\u002Fgentle:persona`                | Switches persona mode.                                              |\n| `\u002Fsdd-init`                      | Initializes or refreshes `openspec\u002Fconfig.yaml`.                    |\n| `\u002Fgentle-ai:install-sdd`         | Repairs missing global SDD runtime assets without overwriting files. |\n| `\u002Fgentle-ai:install-sdd --force` | Force-refreshes installed global SDD assets.                         |\n| `\u002Fskill-registry:refresh`        | Regenerates `.atl\u002Fskill-registry.md`.                               |\n\nStartup flag:\n\n```text\npi --no-skill-registry\n```\n\nUse it when you want skills available normally but do not want Gentle AI to refresh\u002Fwatch `.atl\u002Fskill-registry.md` on startup. `pi -ns` \u002F `pi --no-skills` also skip the registry startup work because Pi is already disabling skill loading.\n\nCompatibility aliases:\n\n```text\n\u002Fgentle-ai:models\n\u002Fgentleman:models\n\u002Fgentle-ai:persona\n\u002Fgentleman:persona\n```\n\n## Included skills\n\n- `gentle-ai` — harness discipline for controlled Pi work.\n- `branch-pr` — issue-first PR preparation.\n- `chained-pr` — split oversized changes into reviewable PR chains.\n- `work-unit-commits` — commits as reviewable work units.\n- `judgment-day` — blind dual review, fixes, and re-judgment.\n- `cognitive-doc-design` — documentation that reduces cognitive load.\n- `comment-writer` — concise, warm, postable collaboration comments.\n- `issue-creation` — issue workflow with checks before creation.\n\n## Memory\n\n`gentle-pi` does **not** provide persistent memory by itself.\n\nFor memory, install the companion package:\n\n```bash\npi install npm:gentle-engram\n```\n\nWhen memory tools are actually active, el Gentleman can save decisions, bug fixes, discoveries, user prompts, and session summaries across Pi sessions.\n\nMemory contract for SDD delegation:\n\n- parent\u002Forchestrator owns memory retrieval and passes selected context into subagent prompts;\n- subagents should not independently search memory during normal runtime unless explicitly instructed to retrieve a specific artifact or observation;\n- subagents should save significant discoveries, decisions, bug fixes, and completed SDD phase artifacts before returning when memory tools are available;\n- in memory\u002Fhybrid mode, SDD artifacts use stable topic keys such as `sdd\u002F\u003Cchange>\u002Fproposal`, `sdd\u002F\u003Cchange>\u002Fspec`, `sdd\u002F\u003Cchange>\u002Fdesign`, `sdd\u002F\u003Cchange>\u002Ftasks`, `sdd\u002F\u003Cchange>\u002Fapply-progress`, and `sdd\u002F\u003Cchange>\u002Fverify-report`.\n\n## Package contents\n\n| Path                           | Purpose                                                                                                    |\n| ------------------------------ | ---------------------------------------------------------------------------------------------------------- |\n| `extensions\u002Fgentle-ai.ts`      | Injects identity, ensures global SDD assets, registers commands, applies model config, and protects shell execution. |\n| `extensions\u002Fstartup-banner.ts` | Shows the rose startup intro, compact runtime panel, and collaboration credit.                             |\n| `extensions\u002Fsdd-init.ts`       | Registers `\u002Fsdd-init` for OpenSpec initialization.                                                         |\n| `extensions\u002Fskill-registry.ts` | Maintains `.atl\u002Fskill-registry.md` from project\u002Fuser skills.                                               |\n| `assets\u002Forchestrator.md`       | Parent-session orchestration contract.                                                                     |\n| `assets\u002Fagents\u002F`               | SDD agents installed as global Pi runtime assets.                                                          |\n| `assets\u002Fchains\u002F`               | SDD chains installed as global Pi runtime assets.                                                          |\n| `assets\u002Fsupport\u002F`              | Strict TDD support docs for apply\u002Fverify phases.                                                           |\n| `skills\u002F`                      | Gentle AI delivery and collaboration skills.                                                               |\n| `prompts\u002F`                     | Gentle-prefixed prompt templates.                                                                          |\n\n## Development\n\nInstall from this repo:\n\n```bash\npi install .\n```\n\nValidate before publishing:\n\n```bash\npnpm test\nbun build extensions\u002Fskill-registry.ts --target=node --format=esm --outfile=\u002Ftmp\u002Fskill-registry.js\nnode --experimental-strip-types --check extensions\u002Fgentle-ai.ts\nnode --experimental-strip-types --check extensions\u002Fsdd-init.ts\nnode --experimental-strip-types --check extensions\u002Fstartup-banner.ts\nnpm pack --dry-run\n```\n\nPublish npm through GitHub Actions only:\n\n```bash\ngh workflow run publish.yml --repo Gentleman-Programming\u002Fgentle-pi --ref main -f dist-tag=latest\ngh run watch \u003Crun-id> --repo Gentleman-Programming\u002Fgentle-pi --exit-status\nnpm view gentle-pi@\u003Cversion> version --registry=https:\u002F\u002Fregistry.npmjs.org\u002F\nnpm dist-tag ls gentle-pi --registry=https:\u002F\u002Fregistry.npmjs.org\u002F\n```\n\nDo not run `npm publish` locally for `gentle-pi`; the GitHub workflow provides provenance, environment protection, and registry credentials.\n\n## Principles\n\n- Human control over agent momentum.\n- Concepts before code.\n- Artifacts over floating chat context.\n- SDD when risk justifies it.\n- Strict TDD when tests exist.\n- One parent orchestrator, focused subagents.\n- Reviewable changes over giant diffs.\n","gentle-pi 是一个用于增强 Pi 代码代理的 TypeScript 项目，旨在将其转变为受控的开发工具。其核心功能包括引入高级架构操作层以支持规范驱动开发（SDD）、聚焦子代理、严格的测试驱动开发验证、可审查的工作单元、安全防护以及项目和用户技能发现。该项目适合那些希望在使用 AI 编码助手时能够保持良好工程实践和纪律性的开发者或团队。通过 gentle-pi，可以更好地组织和管理编码任务，确保每个步骤都符合既定规范并经过充分测试，从而提高软件项目的质量和维护性。","2026-06-11 04:00:06","CREATED_QUERY"]