{"_id":"1st-pi","_rev":"2-095a7578c36cd4bbb2b8cf832b3cf73d","name":"1st-pi","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"1st-pi","version":"0.1.0","keywords":["pi-package","pi","pi-agent","preset","skills","extensions","prompts","themes"],"author":{"name":"est7"},"license":"MIT","_id":"1st-pi@0.1.0","maintainers":[{"name":"est7","email":"t4here@gmail.com"}],"homepage":"https://github.com/est7/1st-pi#readme","bugs":{"url":"https://github.com/est7/1st-pi/issues"},"pi":{"skills":["./skills"],"themes":["./themes"],"prompts":["./prompts"],"extensions":["./extensions/packages/workflow.ts","./extensions/packages/everforest.ts","./extensions/everforest-defaults.ts","./extensions/custom-header.ts","./extensions/packages/ask-user.ts","./extensions/packages/goal.ts","./extensions/packages/observational-memory.ts","./extensions/packages/fff.ts","./extensions/packages/readseek.ts","./extensions/packages/btw.ts","./extensions/packages/supi-context.ts","./extensions/packages/web-access.ts","./extensions/packages/mcp-adapter.ts","./extensions/packages/session-name.ts","./extensions/packages/tasks.ts","./extensions/packages/subagents.ts"]},"dist":{"shasum":"52697a8fba3c3f35f39b3178e9b8bdd59bc2686a","tarball":"https://registry.npmjs.org/1st-pi/-/1st-pi-0.1.0.tgz","fileCount":26,"integrity":"sha512-IZKpIvhBI8ew4uaEsjyzSawNMCdOwUI6F16lSxQWkP9CTYfcUT85XONECNWee88aSgB13Y5jC+tRotJmOgeBCQ==","signatures":[{"sig":"MEUCIGjh7D8pe5IDQcYTM4OL/lbz36WZ+MihwmKl6110vFNCAiEArRTPV3Dd5w8p/b2UzxEgOXjuek6Pzo7QtCZ6mWih4nM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35895},"type":"module","gitHead":"bc90dca88e55703eac61c49051067b3e0aba4a3e","scripts":{"prepack":"npm run check:resources","pack:dry-run":"npm pack --dry-run --json","sync:resources":"node scripts/sync-package-resources.mjs","check:resources":"node scripts/sync-package-resources.mjs --check"},"_npmUser":{"name":"est7","email":"t4here@gmail.com"},"repository":{"url":"git+https://github.com/est7/1st-pi.git","type":"git"},"_npmVersion":"11.17.0","description":"est7's Pi coding agent preset — skills, extensions, prompts, and themes.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"pi-btw":"^0.4.1","pi-init":"^1.0.0","pi-readseek":"^0.6.6","pi-web-access":"^0.13.0","pi-mcp-adapter":"^2.11.0","@ff-labs/pi-fff":"^0.9.6","pi-session-name":"^0.1.2","@narumitw/pi-goal":"^0.15.1","pi-everforest-tui":"^0.2.0","@tintinweb/pi-tasks":"^0.7.1","@mrclrchtr/supi-context":"^2.4.0","@tintinweb/pi-subagents":"^0.14.1","pi-observational-memory":"^3.0.3","@quintinshaw/pi-dynamic-workflows":"^2.13.1","@juicesharp/rpiv-ask-user-question":"^1.20.0"},"_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/1st-pi_0.1.0_1784120399387_0.5936419189037507","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"1st-pi","version":"0.1.1","description":"est7's Pi coding agent preset — skills, extensions, prompts, and themes.","license":"MIT","author":{"name":"est7"},"type":"module","keywords":["pi-package","pi","pi-agent","preset","skills","extensions","prompts","themes"],"repository":{"type":"git","url":"git+https://github.com/est7/1st-pi.git"},"bugs":{"url":"https://github.com/est7/1st-pi/issues"},"homepage":"https://github.com/est7/1st-pi#readme","dependencies":{"@ff-labs/pi-fff":"^0.9.6","@juicesharp/rpiv-ask-user-question":"^1.20.0","@mrclrchtr/supi-context":"^2.4.0","@narumitw/pi-goal":"^0.15.1","@quintinshaw/pi-dynamic-workflows":"^2.13.1","@tintinweb/pi-subagents":"^0.14.1","@tintinweb/pi-tasks":"^0.7.1","pi-btw":"^0.4.1","pi-everforest-tui":"^0.2.0","pi-init":"^1.0.0","pi-mcp-adapter":"^2.11.0","pi-observational-memory":"^3.0.3","pi-readseek":"^0.6.6","pi-session-name":"^0.1.2","pi-web-access":"^0.13.0"},"scripts":{"sync:resources":"node scripts/sync-package-resources.mjs","check:resources":"node scripts/sync-package-resources.mjs --check","prepack":"npm run check:resources","pack:dry-run":"npm pack --dry-run --json"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"pi":{"extensions":["./extensions/packages/workflow.ts","./extensions/packages/everforest.ts","./extensions/everforest-defaults.ts","./extensions/custom-header.ts","./extensions/packages/ask-user.ts","./extensions/packages/goal.ts","./extensions/packages/observational-memory.ts","./extensions/packages/fff.ts","./extensions/packages/readseek.ts","./extensions/packages/btw.ts","./extensions/packages/supi-context.ts","./extensions/packages/web-access.ts","./extensions/packages/mcp-adapter.ts","./extensions/packages/session-name.ts","./extensions/packages/tasks.ts","./extensions/packages/subagents.ts"],"skills":["./skills"],"prompts":["./prompts"],"themes":["./themes"]},"gitHead":"def715adc45b25ed01c879f9f9446ef4afe29fee","_id":"1st-pi@0.1.1","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-cr5m3LnqV8RSaANwKQPXHKnaDh8y2qne7v84iwDBD/oN67OVMvlR4E475zfyr5pZ47OLnOHQsnmlnKMxaO0bdQ==","shasum":"6b77a1d560f50bb5d721b46d2872fe73dbe09556","tarball":"https://registry.npmjs.org/1st-pi/-/1st-pi-0.1.1.tgz","fileCount":26,"unpackedSize":36703,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICa72UizKtMvrWQLNxQD3ZjuxeooHukqrnk8iCqQpiKCAiAR9hJA84+jz1NU8wX5E3VQXCxNFlEn8wKyxq0i2M61Xg=="}]},"_npmUser":{"name":"est7","email":"t4here@gmail.com"},"directories":{},"maintainers":[{"name":"est7","email":"t4here@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/1st-pi_0.1.1_1784122986971_0.5428900173966444"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-15T12:59:59.271Z","modified":"2026-07-15T13:43:07.203Z","0.1.0":"2026-07-15T12:59:59.519Z","0.1.1":"2026-07-15T13:43:07.103Z"},"bugs":{"url":"https://github.com/est7/1st-pi/issues"},"author":{"name":"est7"},"license":"MIT","homepage":"https://github.com/est7/1st-pi#readme","keywords":["pi-package","pi","pi-agent","preset","skills","extensions","prompts","themes"],"repository":{"type":"git","url":"git+https://github.com/est7/1st-pi.git"},"description":"est7's Pi coding agent preset — skills, extensions, prompts, and themes.","maintainers":[{"name":"est7","email":"t4here@gmail.com"}],"readme":"# 1st-pi\n\n[est7](https://github.com/est7) 的 [Pi](https://pi.dev) coding agent preset。\n\n这是一个 Pi Package，用来统一打包和分发常用的 **extensions / skills / prompts / themes**。安装后，Pi 会自动加载本仓库资源以及声明的 bundled Pi packages。\n\n> **Security:** Pi packages 拥有完整系统权限。Extensions 可以执行任意代码，skills 可以指示模型执行操作。安装第三方包前请审阅源码。\n\n## 安装\n\n### GitHub\n\n```bash\npi install git:github.com/est7/1st-pi\n# 或\npi install https://github.com/est7/1st-pi\n```\n\n### 本地开发\n\n```bash\npi install /absolute/path/to/1st-pi\n# 当前目录\npi install .\n```\n\n### npm\n\n```bash\npi install npm:1st-pi\n```\n\n仅在当前会话试用，不写入 settings：\n\n```bash\npi -e .\npi -e git:github.com/est7/1st-pi\n```\n\n安装为项目级依赖，写入 `.pi/settings.json`：\n\n```bash\npi install -l .\n```\n\n## 管理\n\n```bash\npi list\npi config\npi update --extensions\npi remove git:github.com/est7/1st-pi\n```\n\n## 目录结构\n\n```text\n1st-pi/\n├── package.json          # Pi package manifest\n├── extensions/           # 本地 UI 与 community package thin adapters\n├── skills/               # skills/<name>/SKILL.md\n├── prompts/              # Markdown prompt templates\n└── themes/               # 从 pi-everforest-tui 同步并校验的 theme resources\n```\n\n## 添加自己的资源\n\n- `extensions/*.ts`：自定义工具、命令、事件和 UI\n- `skills/<name>/SKILL.md`：可自动发现或通过 `/skill:name` 调用的技能\n- `prompts/*.md`：通过 `/文件名` 调用的提示词模板\n\n修改资源后，在 Pi 中运行 `/reload`，或重新执行：\n\n```bash\npi -e .\n```\n\n## Everforest themes\n\n本 preset 通过独立 package [`pi-everforest-tui`](https://github.com/est7/pi-everforest-tui) 提供两个 Ghostty Everforest Soft 风格的 Pi TUI theme：\n\n- `everforest-tui-dark`\n- `everforest-tui-light`\n\nPreset 默认开启以下 TUI 增强，session 中持久化的个人选择优先于 preset 默认值：\n\n- phase-aware working indicator\n- 仅在工作期间出现的 status（idle 不显示，不重复 model）\n- 响应式 cockpit footer 与完整 segment 的 extension statuses\n- 连续 Everforest 彩虹 editor 边框与具名 session badge\n\n相关命令：\n\n```text\n/everforest             # 搜索全部 extension、prompt、skill commands\n/everforest-tui         # 打开交互式 TUI 设置\n/everforest-theme-lab   # 预览主题语义色、Markdown、diff、syntax 与 thinking states\n```\n\n也可直接执行 `/everforest-tui all on|off` 或针对 `indicator`、`status`、`footer`、`rainbow` 单独设置。\n\n可在 `/settings` 中手动选择 theme。要像 Ghostty 一样随终端背景自动切换，在 Pi 的 `settings.json` 中设置：\n\n```json\n{\n  \"theme\": \"everforest-tui-light/everforest-tui-dark\"\n}\n```\n\n斜杠前是 light theme，斜杠后是 dark theme。\n\n## Custom header\n\n`extensions/custom-header.ts` 使用 `1st-agent` ASCII wordmark 替换 Pi 默认启动 header。需要临时恢复默认 header 时运行：\n\n```text\n/builtin-header\n```\n\n## 内置依赖\n\n| 包 | 功能 |\n|---|---|\n| [pi-web-access](https://www.npmjs.com/package/pi-web-access) | Web 搜索、URL/GitHub/YouTube 访问及 librarian skill |\n| [pi-init](https://www.npmjs.com/package/pi-init) | 生成或更新 `AGENTS.md` 的 init skill |\n| [pi-mcp-adapter](https://www.npmjs.com/package/pi-mcp-adapter) | MCP 协议适配 |\n| [pi-everforest-tui](https://www.npmjs.com/package/pi-everforest-tui) | Everforest light/dark themes 与可选 TUI 增强 |\n| [pi-session-name](https://www.npmjs.com/package/pi-session-name) | 自动生成会话标题并同步终端标题 |\n| [@juicesharp/rpiv-ask-user-question](https://www.npmjs.com/package/@juicesharp/rpiv-ask-user-question) | 多问题、选项预览和自由输入的结构化提问 UI |\n| [@narumitw/pi-goal](https://www.npmjs.com/package/@narumitw/pi-goal) | Session-scoped `/goal` 持续执行与完成/阻塞门禁 |\n| [pi-observational-memory](https://www.npmjs.com/package/pi-observational-memory) | 跨压缩保留 observations/reflections 的长会话记忆 |\n| [@ff-labs/pi-fff](https://www.npmjs.com/package/@ff-labs/pi-fff) | 本地 Rust 模糊文件/内容搜索与 `@` 自动补全 |\n| [pi-readseek](https://www.npmjs.com/package/pi-readseek) | Parser-backed code map/search、definition/reference、hashline edit 与 workspace rename；其 edit 可进行带警告的 fuzzy anchor relocation，不等同于严格 stale rejection |\n| [pi-btw](https://www.npmjs.com/package/pi-btw) | 不污染主上下文的并行 `/btw` 旁路对话 |\n| [@mrclrchtr/supi-context](https://www.npmjs.com/package/@mrclrchtr/supi-context) | `/supi-context` 上下文组成与 token 占用报告 |\n| [@tintinweb/pi-subagents](https://www.npmjs.com/package/@tintinweb/pi-subagents) | Claude Code 风格 sub-agents |\n| [@tintinweb/pi-tasks](https://www.npmjs.com/package/@tintinweb/pi-tasks) | Task tracking 与协作 |\n| [@quintinshaw/pi-dynamic-workflows](https://www.npmjs.com/package/@quintinshaw/pi-dynamic-workflows) | 动态 workflows；preset 默认关闭 `workflow/workflows` 关键词自动触发，仅通过 `/workflows`、已保存 workflow 的 slash command 或显式 `/workflows-trigger on` 启用 |\n\n这些包位于普通 npm `dependencies`，安装 preset 时由 npm 获取，不会塞入 `1st-pi` tarball。`extensions/packages/*.ts` 是只负责调用 dependency extension entrypoint 的 thin adapters；因此依赖可以正常 hoist，同时 Pi manifest 只引用本包内稳定路径。FFF 也会由 npm 在 macOS、Linux 和 Windows 上选择正确的原生 binary。\n\nThemes 以及 `pi-init` / `pi-web-access` skills 是发布所需的静态资源，会从锁定依赖同步到本包。更新 dependencies 后运行：\n\n```bash\nnpm run sync:resources\nnpm run check:resources\n```\n\n`prepack` 会执行相同校验，防止静态副本与依赖版本漂移。\n\nTUI 与 tool ownership：\n\n- `pi-everforest-tui`：全局主题、editor chrome、working/status/footer、Command Center 与 Theme Lab\n- `@ff-labs/pi-fff`：preset 默认使用 `override` mode，由 FFF 接管 `find`、`grep` 与 `@` autocomplete\n- `pi-readseek`：通过 `readseek.replacedTools` 接管 `read`、`edit`、`write`；结构导航和 hashline 工具继续使用 `readSeek_*` 名称，不与 FFF 争夺 `grep`\n- Pi built-ins：继续负责 `bash`、`ls` 及其原生渲染\n- `pi-mcp-adapter`：负责 MCP 工具与渲染\n- Tasks、Subagents、Workflows、Goal、BTW、Context 与 Memory：继续使用各 package 自己的领域 UI\n\nWorkflow 关键词触发在首次加载 preset 时默认写为关闭；已有明确的 `on`/`off` 用户配置会保留，不会被 preset 覆盖。关闭关键词触发不影响 `/workflows` 及已保存 workflow 的 slash commands。\n\n`pi-tool-display` 已移除，因为它会注册同名的 `read/edit/write/find/grep` overrides，与 Readseek/FFF 形成双重 owner。\n\n要启用上述 Readseek ownership，在 `~/.pi/agent/settings.json` 中加入：\n\n```json\n{\n  \"readseek\": {\n    \"replacedTools\": [\"read\", \"edit\", \"write\"]\n  }\n}\n```\n\n`grep` 不加入该数组，因为它由 FFF 接管。修改后运行 `/reload`。\n\n## Preset maintenance skill\n\n添加或移除 community extension 时使用：\n\n```text\n/skill:add-extension-to-1st-agent\n```\n\n该 SOP 覆盖 license/compatibility/ownership gate、thin adapter、README 同步、hoisted npm 安装、native binary、tarball size 与 clean-room smoke tests。\n\n## 发布\n\n```bash\nnpm login\nnpm publish\n```\n\n发布前建议检查包内容：\n\n```bash\nnpm pack --dry-run\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}