{"_id":"@carter-mcalister/pi-profiles","_rev":"2-9177631561cdef011bb925725d760176","name":"@carter-mcalister/pi-profiles","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"@carter-mcalister/pi-profiles","version":"0.2.0","keywords":["pi-package","pi","pi-extension","profiles","skillpacks"],"author":{"name":"Carter McAlister"},"license":"MIT","_id":"@carter-mcalister/pi-profiles@0.2.0","maintainers":[{"name":"carter-mcalister","email":"carterm126@gmail.com"}],"homepage":"https://github.com/CarterMcAlister/pi-packages/tree/main/packages/pi-profiles#readme","bugs":{"url":"https://github.com/CarterMcAlister/pi-packages/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"187122e890adb002a636ff583581197fda28793e","tarball":"https://registry.npmjs.org/@carter-mcalister/pi-profiles/-/pi-profiles-0.2.0.tgz","fileCount":15,"integrity":"sha512-kVVn/QybmQSTlxVjQUNfPLO8fnaKNlYHJbVdY0pWonWghCLT4eJ7JTZUSN7rxpoGHH1ijYL13rkReVdbzXtxIQ==","signatures":[{"sig":"MEQCIHCkWKsSxscM8U0eF3p5MFA/vHXHHQkNFiruwCGFiOEvAiACagsaRZShfn4GOqZAlkl/UEXJTUfEPuVAu+jDz+EUgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carter-mcalister%2fpi-profiles@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60885},"type":"module","gitHead":"73ebb89bf12299331080581110ab8f9237b0ac6d","scripts":{"lint":"bunx @biomejs/biome check .","test":"bun test","check":"bun run lint && bun run typecheck && bun run test","format":"bunx @biomejs/biome check --write .","typecheck":"bunx tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"carter-mcalister","email":"carterm126@gmail.com"},"repository":{"url":"git+https://github.com/CarterMcAlister/pi-packages.git","type":"git","directory":"packages/pi-profiles"},"_npmVersion":"10.8.2","description":"Session-scoped profile loader for Pi","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@mariozechner/jiti":"^2.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"bun-types":"latest","typescript":"^5.9.3","@biomejs/biome":"2.3.5","@mariozechner/pi-coding-agent":"*"},"peerDependencies":{"@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-profiles_0.2.0_1776265416855_0.34852491426181564","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@carter-mcalister/pi-profiles","version":"0.3.0","description":"Session-scoped profile loader for Pi","author":{"name":"Carter McAlister"},"type":"module","repository":{"type":"git","url":"git+https://github.com/CarterMcAlister/pi-packages.git","directory":"packages/pi-profiles"},"bugs":{"url":"https://github.com/CarterMcAlister/pi-packages/issues"},"homepage":"https://github.com/CarterMcAlister/pi-packages/tree/main/packages/pi-profiles#readme","publishConfig":{"access":"public"},"keywords":["pi-package","pi","pi-extension","profiles","skillpacks"],"scripts":{"format":"bunx @biomejs/biome check --write .","lint":"bunx @biomejs/biome check .","typecheck":"bunx tsc -p tsconfig.json --noEmit","test":"bun test","check":"bun run lint && bun run typecheck && bun run test"},"pi":{"extensions":["./src/index.ts"]},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"dependencies":{"jiti":"2.7.0"},"devDependencies":{"@biomejs/biome":"2.3.5","@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","bun-types":"latest","typescript":"^5.9.3"},"license":"MIT","_id":"@carter-mcalister/pi-profiles@0.3.0","gitHead":"0435e3b965328effca93190435e8ecd1c7b39f34","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-CCZolB/e8DIoI5Tcz9ZnPERfD0f9MINf6bgDovQCMH7SxX3JKN3ScI2XvSG4DG3xg3b83j7QYGkBAWcPU7qN4A==","shasum":"d3b2c4e790a562ebe5f208dba102569dd2620bb4","tarball":"https://registry.npmjs.org/@carter-mcalister/pi-profiles/-/pi-profiles-0.3.0.tgz","fileCount":15,"unpackedSize":73065,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carter-mcalister%2fpi-profiles@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDslYjha2KrG7KoWF7AwoyCzxVwtni05noNE61iidMtZQIhALub5UiQ4BK8LbkSxElnjX1RIRBF7LTUUrl/nF9c4PFF"}]},"_npmUser":{"name":"carter-mcalister","email":"carterm126@gmail.com"},"directories":{},"maintainers":[{"name":"carter-mcalister","email":"carterm126@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-profiles_0.3.0_1778371344306_0.03664093340187491"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-15T15:03:36.758Z","modified":"2026-05-10T00:02:24.725Z","0.2.0":"2026-04-15T15:03:36.999Z","0.3.0":"2026-05-10T00:02:24.453Z"},"bugs":{"url":"https://github.com/CarterMcAlister/pi-packages/issues"},"author":{"name":"Carter McAlister"},"license":"MIT","homepage":"https://github.com/CarterMcAlister/pi-packages/tree/main/packages/pi-profiles#readme","keywords":["pi-package","pi","pi-extension","profiles","skillpacks"],"repository":{"type":"git","url":"git+https://github.com/CarterMcAlister/pi-packages.git","directory":"packages/pi-profiles"},"description":"Session-scoped profile loader for Pi","maintainers":[{"name":"carter-mcalister","email":"carterm126@gmail.com"}],"readme":"# `@carter-mcalister/pi-profiles`\n\nSession-scoped profile loader for Pi.\n\n`pi-profiles` lets you define reusable profiles with standard Pi-style `settings.json` files, load one into the current session, and reload Pi so the profile’s resources and settings apply.\n\nIt is designed to build on skillpacks:\n\n- standard Pi resources come from profile `settings.json`\n- skillpack-backed skills come from a profile-specific `skillpacks` array\n- loading a profile persists the choice in the current session and reloads Pi\n- profile settings are overlaid onto the current session as effective project settings\n\n## Install\n\n### Local development\n\n```bash\nmise install\nbun install\nbun test\nbun run check\npi install /absolute/path/to/pi-packages/packages/pi-profiles\n```\n\n### Install as a Pi package\n\n```bash\npi install npm:@carter-mcalister/pi-profiles\n```\n\n## Profile layout\n\nProfiles live in either:\n\n- global: `~/.pi/agent/profiles/<name>/settings.json`\n- project: `.pi/profiles/<name>/settings.json`\n\nProject profiles win over global profiles when the same name exists in both places.\n\n## Commands\n\n- `/profiles` — open the profiles UI\n- `/profiles <name>` — load a profile directly\n- `/profiles none` — unload the active profile\n\nInside the `/profiles` UI:\n\n- `n` creates a new profile\n- `e` opens the currently selected profile `settings.json` in your external editor\n\nNames can be scoped explicitly:\n\n- `user:default`\n- `project:review`\n\nIf no scope is given, project profiles are preferred over global profiles.\n\n## Profile format\n\nEach profile is a directory with a `settings.json` file.\n\nExample:\n\n```json\n{\n  \"description\": \"General-purpose project workflow with reviewer tools\",\n  \"packages\": [\n    \"npm:@carter-mcalister/pi-worktrunk\"\n  ],\n  \"extensions\": [\n    \"./extensions\"\n  ],\n  \"prompts\": [\n    \"./prompts\"\n  ],\n  \"themes\": [\n    \"./themes\"\n  ],\n  \"skillpacks\": [\n    \"superpowers\",\n    {\n      \"path\": \"helpers\",\n      \"skills\": [\"reviewer\"]\n    },\n    \"legacy-pack/planner\"\n  ],\n  \"theme\": \"dark\",\n  \"defaultThinkingLevel\": \"high\",\n  \"defaultProvider\": \"anthropic\",\n  \"defaultModel\": \"claude-sonnet-4-20250514\",\n  \"mcps\": [\n    \"filesystem\"\n  ],\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-server-filesystem\"]\n    }\n  }\n}\n```\n\n## Behavior\n\n### Resource loading\n\n`pi-profiles` loads profile resources from the profile `settings.json` using normal Pi resource fields:\n\n- `packages`\n- `extensions`\n- `skills`\n- `prompts`\n- `themes`\n\nIt also supports:\n\n- `skillpacks` (custom field, resolved from `~/.pi/agent/skillpacks`)\n\nIf `description` is set, the `/profiles` picker shows it instead of the raw `settings.json` path.\n\n`skillpacks` entries can be either:\n\n- a string like `\"superpowers\"` to include an entire skillpack\n- a string like `\"helpers/reviewer\"` to include one nested skill directly\n- an object like `{ \"path\": \"helpers\", \"skills\": [\"reviewer\", \"planner\"] }` to include selected skills from a skillpack explicitly\n\nRelative paths in a profile resolve relative to that profile directory.\n\n### Settings overlay\n\nWhen a profile is active, its `settings.json` is merged into the current session as an effective project-scoped settings overlay.\n\nThat means:\n\n- standard Pi config fields from the profile become visible through Pi’s settings machinery after reload\n- custom fields are preserved and passed through as effective project settings\n- MCP-style fields such as `mcps` or `mcpServers` are carried through for extensions or integrations that read Pi settings\n\nFor resource arrays, profile loading is additive for the current session:\n\n- `packages`\n- `extensions`\n- `skills`\n- `prompts`\n- `themes`\n- `mcps`\n\nOther config values override the effective session settings in the normal Pi way.\n\n### Runtime application\n\nFor settings Pi exposes runtime APIs for, `pi-profiles` applies them directly on session start/reload:\n\n- `theme`\n- `defaultThinkingLevel`\n- `defaultProvider` + `defaultModel`\n\nOther settings flow through the session settings overlay and are available to Pi subsystems and extensions that consult Pi settings after reload.\n\n## Notes\n\n- `skillpacks` is the only built-in custom field. Everything else should follow normal Pi `settings.json` semantics.\n- Loading or unloading a profile always reloads the current session.\n- Creating a profile from the UI writes a starter `settings.json` and keeps the picker open.\n- Profile selection is session-scoped.\n- Profile extensions are bootstrapped before reload finishes so their normal Pi lifecycle hooks can participate.\n- MCP loading depends on the MCP-capable runtime or extension you use. `pi-profiles` passes MCP-style config through the effective Pi settings overlay; it does not implement an MCP client by itself.\n\n## Development\n\n```bash\nmise install\nbun install\nmise run check\n```\n","readmeFilename":"README.md"}