FB9bSJrJvpQej84s06Y6jRrgG8I4Ua_G0KKJ-g8nTMTsWPraJrYQHsaL9a3SPix-B7U4fSrI_RPUVdmkouxiovfAe9P8i1oiabcO45alKwC-KbqogBn71yVyLPcJUSQ0fpL7rImepRd42Y11BKwrbhw8O562TA4nzYzPw-Irm6si0I2Cz16u5b_anR68zZOJNfHrxKCNY9lLL_Ly-H3jpCO6IGTktFsnzIHySHosLePdgCJaVHCS6BmqEEwzqw0oGRwqOxzM4pE3pEf-ULow8bqCO3nC9X8pfndwzHRDGjXCp0_NeTGaS2gQiHAS7Ad40N4_RfwagwUFeEX7jioBjczGWXR2Ja7kEVP50ruXaZIQwmZnsaJSQOehpfc5QvZLeeiLzvYj1KyzwxrONYslZbjn_Ldrl2sWY2SocwFZDNJfxbbsyOnzdFraMxGvrbhX6DW8TcfFN5L4u9qFHoKC8JOcxO0aWtJML39XSMqzJmtfM4FViwA==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Exploring configuration guidance**\\n\\nI need to come up with practical guidance without going to the web since local docs might be enough. The user mentioned \\\"pi,\\\" and maybe that was a typo for \\\"pie.\\\" They’re asking about how people configure forks of pi and if having a repo in the same folder as a config is crazy.\\n\\nI could look into the pi package docs and local patterns, possibly inspecting the /.pi/agent git. I might keep the answer conceptual, inspect pi docs for packages/extensions support, and provide a concise recommendation.\"}]}"},{"type":"text","text":"No, **no es loco**.  \nDe hecho puede ser **mejor** si querés evitar drift.\n\n## Opciones\n\n### A. Repo separado\nEj:\n- `/mnt/rpi/pi-config`\n- runtime en `~/.pi/agent`\n\n**Pros**\n- limpio\n- separa runtime de versionado\n\n**Contras**\n- drift fácil\n- necesitás `apply/capture`\n\n---\n\n### B. Repo en la misma carpeta real\nEj:\n- `~/.pi/agent` es git repo  \no\n- mover runtime a `/mnt/rpi/...` y usar esa carpeta como `PI_CODING_AGENT_DIR`\n\n**Pros**\n- lo que editás = lo versionado\n- cero drift\n- simple mentalmente\n\n**Contras**\n- metés sesiones/auth/runtime en el mismo árbol si no separás bien\n- más riesgo de commitear cosas sensibles o basura\n\n---\n\n## Mi opinión\n**Sí conviene**, pero **sólo si ordenamos qué entra y qué no**.\n\n## La mejor versión\nHaría esto:\n\n### Repo real único\nUna carpeta en disco grande, por ejemplo:\n- `/mnt/rpi/pi-agent`\n\ny que Pi use esa carpeta como config dir con:\n\n- `PI_CODING_AGENT_DIR=/mnt/rpi/pi-agent`\n\nAsí:\n- extensiones\n- settings\n- AGENTS\n- prompts\n- skills\n\nviven todos en el repo real.\n\n### Y excluís en `.gitignore`\n- `auth.json`\n- `sessions/`\n- logs/cache/bin si hiciera falta\n\n## Esto es mejor que `~/.pi/agent` como repo?\n**Sí**, para tu caso:\n- más espacio\n- una sola fuente de verdad\n- sin symlinks raros\n- sin apply/capture\n\n---\n\n## Lo que yo haría\nNo usaría:\n- repo separado + runtime separado\n\nUsaría:\n- **repo = config real**\n- pero en `/mnt/rpi`, no en la microSD chica\n\n## Respuesta corta\n> No, no es una locura.  \n> Para vos probablemente es la opción más sana, **si hacemos que Pi apunte a una carpeta-repo única en `/mnt/rpi`** y gitignoreamos auth/sessions.\n\nSi querés, siguiente paso te propongo una **migración concreta** a:\n\n- `/mnt/rpi/pi-agent`\n\ncomo config real/versionada de Pi.","textSignature":"{\"v\":1,\"id\":\"msg_09ce6544570a8b100169e15ba536508193ad674fe6840bc422\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.4","usage":{"input":172,"output":632,"cacheRead":170112,"cacheWrite":0,"totalTokens":170916,"cost":{"input":0.00043000000000000004,"output":0.00948,"cacheRead":0.042527999999999996,"cacheWrite":0,"total":0.052438}},"stopReason":"stop","timestamp":1776376733379,"responseId":"resp_09ce6544570a8b100169e15b9e63948193ade324fec2337721"}}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.js:39:const skills_1 = require("./resources/skills/skills.js");
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.js:121:        this.skills = new API.Skills(this);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.js:609:OpenAI.Skills = skills_1.Skills;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.d.mts:29:import { DeletedSkill, Skill, SkillCreateParams, SkillList, SkillListParams, SkillUpdateParams, Skills, SkillsPage } from "./resources/skills/skills.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.d.mts:283:    skills: API.Skills;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.mjs:36:import { Skills, } from "./resources/skills/skills.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/client.mjs:118:        this.skills = new API.Skills(this);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.d.ts:1:export * from "./skills/index.js";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.d.ts:2://# sourceMappingURL=skills.d.ts.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/index.d.mts:19:export { Skills, type DeletedSkill, type Skill, type SkillList, type SkillCreateParams, type SkillUpdateParams, type SkillListParams, type SkillsPage, } from "./skills/skills.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/containers/containers.d.mts:260:     * An optional list of skills referenced by id or inline data.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/containers/containers.d.mts:262:    skills?: Array<ResponsesAPI.SkillReference | ResponsesAPI.InlineSkill>;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/containers/containers.d.ts:260:     * An optional list of skills referenced by id or inline data.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/containers/containers.d.ts:262:    skills?: Array<ResponsesAPI.SkillReference | ResponsesAPI.InlineSkill>;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.js:5:tslib_1.__exportStar(require("./skills/index.js"), exports);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.js:6://# sourceMappingURL=skills.js.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.js.map:1:{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/resources/skills.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,4DAA+B"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.d.ts.map:1:{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/resources/skills.ts"],"names":[],"mappings":""}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/index.d.ts:19:export { Skills, type DeletedSkill, type Skill, type SkillList, type SkillCreateParams, type SkillUpdateParams, type SkillListParams, type SkillsPage, } from "./skills/skills.js";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.d.mts.map:1:{"version":3,"file":"skills.d.mts","sourceRoot":"","sources":["../src/resources/skills.ts"],"names":[],"mappings":""}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/index.mjs:20:export { Skills, } from "./skills/skills.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.mjs:2:export * from "./skills/index.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.mjs:3://# sourceMappingURL=skills.mjs.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.d.mts:1:export * from "./skills/index.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.d.mts:2://# sourceMappingURL=skills.d.mts.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.ts:378:     * An optional list of skills referenced by id or inline data.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.ts:380:    skills?: Array<SkillReference | InlineSkill>;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.ts:633:     * An optional list of skills.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.ts:635:    skills?: Array<LocalSkill>;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.ts:5338:     * References a skill created with the /v1/skills endpoint.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.mts:378:     * An optional list of skills referenced by id or inline data.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.mts:380:    skills?: Array<SkillReference | InlineSkill>;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.mts:633:     * An optional list of skills.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.mts:635:    skills?: Array<LocalSkill>;
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/responses/responses.d.mts:5338:     * References a skill created with the /v1/skills endpoint.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/index.js:40:var skills_1 = require("./skills/skills.js");
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/index.js:41:Object.defineProperty(exports, "Skills", { enumerable: true, get: function () { return skills_1.Skills; } });
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills.mjs.map:1:{"version":3,"file":"skills.mjs","sourceRoot":"","sources":["../src/resources/skills.ts"],"names":[],"mappings":"AAAA,sFAAsF"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.d.ts:26:     * List all skills for the current project.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.d.ts:116://# sourceMappingURL=skills.d.ts.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.d.mts:2:export { Skills, type DeletedSkill, type Skill, type SkillList, type SkillCreateParams, type SkillUpdateParams, type SkillListParams, type SkillsPage, } from "./skills.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:24:        return this._client.post('/skills', (0, uploads_1.maybeMultipartFormRequestOptions)({ body, ...options }, this._client));
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:30:        return this._client.get((0, path_1.path) `/skills/${skillID}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:36:        return this._client.post((0, path_1.path) `/skills/${skillID}`, { body, ...options });
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:39:     * List all skills for the current project.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:42:        return this._client.getAPIList('/skills', (pagination_1.CursorPage), { query, ...options });
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:48:        return this._client.delete((0, path_1.path) `/skills/${skillID}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js:54://# sourceMappingURL=skills.js.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.js.map:1:{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/resources/skills/versions/versions.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;AAEtF,wDAAqD;AACrD,iEAAwC;AACxC,0CAA2D;AAE3D,4DAA0F;AAG1F,0DAA6E;AAC7E,0DAAoD;AAEpD,MAAa,QAAS,SAAQ,sBAAW;IAAzC;;QACE,YAAO,GAAuB,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAqDrE,CAAC;IAnDC;;OAEG;IACH,MAAM,CACJ,OAAe,EACf,OAA+C,EAAE,EACjD,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,IAAA,WAAI,EAAA,WAAW,OAAO,WAAW,EACjC,IAAA,0CAAgC,EAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CACrE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,OAAe,EACf,MAA6B,EAC7B,OAAwB;QAExB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,WAAI,EAAA,WAAW,QAAQ,aAAa,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,IAAI,CACF,OAAe,EACf,QAA8C,EAAE,EAChD,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAA,WAAI,EAAA,WAAW,OAAO,WAAW,EAAE,CAAA,uBAAwB,CAAA,EAAE;YAC1F,KAAK;YACL,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,OAAe,EACf,MAA2B,EAC3B,OAAwB;QAExB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAA,WAAI,EAAA,WAAW,QAAQ,aAAa,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;CACF;AAtDD,4BAsDC;AAkHD,QAAQ,CAAC,OAAO,GAAG,iBAAO,CAAC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/content.js:14:        return this._client.get((0, path_1.path) `/skills/${skill_id}/versions/${version}/content`, {
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.mjs:17:        return this._client.post(path `/skills/${skillID}/versions`, maybeMultipartFormRequestOptions({ body, ...options }, this._client));
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.mjs:24:        return this._client.get(path `/skills/${skill_id}/versions/${version}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.mjs:30:        return this._client.getAPIList(path `/skills/${skillID}/versions`, (CursorPage), {
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.mjs:40:        return this._client.delete(path `/skills/${skill_id}/versions/${version}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/index.mjs.map:1:{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/resources/skills/versions/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,OAAO,EAA8B;OACvC,EACL,QAAQ,GAST"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.mjs.map:1:{"version":3,"file":"versions.mjs","sourceRoot":"","sources":["../../../src/resources/skills/versions/versions.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;OACf,KAAK,UAAU;OACf,EAAE,OAAO,EAAyB;OAElC,EAAE,UAAU,EAAsC;OAGlD,EAAE,gCAAgC,EAAE;OACpC,EAAE,IAAI,EAAE;AAEf,MAAM,OAAO,QAAS,SAAQ,WAAW;IAAzC;;QACE,YAAO,GAAuB,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAqDrE,CAAC;IAnDC;;OAEG;IACH,MAAM,CACJ,OAAe,EACf,OAA+C,EAAE,EACjD,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,IAAI,CAAA,WAAW,OAAO,WAAW,EACjC,gCAAgC,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CACrE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ,CACN,OAAe,EACf,MAA6B,EAC7B,OAAwB;QAExB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA,WAAW,QAAQ,aAAa,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,IAAI,CACF,OAAe,EACf,QAA8C,EAAE,EAChD,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAA,WAAW,OAAO,WAAW,EAAE,CAAA,UAAwB,CAAA,EAAE;YAC1F,KAAK;YACL,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,OAAe,EACf,MAA2B,EAC3B,OAAwB;QAExB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAA,WAAW,QAAQ,aAAa,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;CACF;AAkHD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/index.d.mts.map:1:{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/resources/skills/versions/index.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,EAAE,KAAK,qBAAqB,EAAE;OACvC,EACL,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.d.mts.map:1:{"version":3,"file":"versions.d.mts","sourceRoot":"","sources":["../../../src/resources/skills/versions/versions.ts"],"names":[],"mappings":"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"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/content.mjs.map:1:{"version":3,"file":"content.mjs","sourceRoot":"","sources":["../../../src/resources/skills/versions/content.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;OAEf,EAAE,YAAY,EAAE;OAEhB,EAAE,IAAI,EAAE;AAEf,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,MAA6B,EAAE,OAAwB;QAC/E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA,WAAW,QAAQ,aAAa,OAAO,UAAU,EAAE;YAC7E,GAAG,OAAO;YACV,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3E,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.js:21:        return this._client.post((0, path_1.path) `/skills/${skillID}/versions`, (0, uploads_1.maybeMultipartFormRequestOptions)({ body, ...options }, this._client));
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.js:28:        return this._client.get((0, path_1.path) `/skills/${skill_id}/versions/${version}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.js:34:        return this._client.getAPIList((0, path_1.path) `/skills/${skillID}/versions`, (pagination_1.CursorPage), {
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.js:44:        return this._client.delete((0, path_1.path) `/skills/${skill_id}/versions/${version}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/content.d.ts.map:1:{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/resources/skills/versions/content.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OAEd,EAAE,cAAc,EAAE;AAGzB,qBAAa,OAAQ,SAAQ,WAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;CAQzG;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,OAAO,EAAE,KAAK,qBAAqB,IAAI,qBAAqB,EAAE,CAAC;CAChE"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/content.d.mts.map:1:{"version":3,"file":"content.d.mts","sourceRoot":"","sources":["../../../src/resources/skills/versions/content.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OAEd,EAAE,cAAc,EAAE;AAGzB,qBAAa,OAAQ,SAAQ,WAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;CAQzG;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,OAAO,EAAE,KAAK,qBAAqB,IAAI,qBAAqB,EAAE,CAAC;CAChE"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/content.js.map:1:{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/resources/skills/versions/content.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,wDAAqD;AAErD,0DAAyD;AAEzD,0DAAoD;AAEpD,MAAa,OAAQ,SAAQ,sBAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,MAA6B,EAAE,OAAwB;QAC/E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,WAAI,EAAA,WAAW,QAAQ,aAAa,OAAO,UAAU,EAAE;YAC7E,GAAG,OAAO;YACV,OAAO,EAAE,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3E,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF;AAZD,0BAYC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/index.d.ts.map:1:{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/resources/skills/versions/index.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,EAAE,KAAK,qBAAqB,EAAE;OACvC,EACL,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/index.js.map:1:{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resources/skills/versions/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,wCAAgE;AAAvD,kGAAA,OAAO,OAAA;AAChB,0CAUoB;AATlB,oGAAA,QAAQ,OAAA"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/content.mjs:11:        return this._client.get(path `/skills/${skill_id}/versions/${version}/content`, {
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions/versions.d.ts.map:1:{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/resources/skills/versions/versions.ts"],"names":[],"mappings":"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"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions.js.map:1:{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/resources/skills/versions.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,8DAAiC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.js.map:1:{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/resources/skills/skills.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;AAEtF,qDAAkD;AAClD,iEAAwC;AACxC,0CAAoC;AACpC,4EAAmD;AACnD,qDAU6B;AAE7B,yDAAuF;AAGvF,uDAA0E;AAC1E,uDAAiD;AAEjD,MAAa,MAAO,SAAQ,sBAAW;IAAvC;;QACE,YAAO,GAAuB,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,aAAQ,GAAyB,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAuC1E,CAAC;IArCC;;OAEG;IACH,MAAM,CAAC,OAA6C,EAAE,EAAE,OAAwB;QAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAA,0CAAgC,EAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,OAAwB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,WAAI,EAAA,WAAW,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe,EAAE,IAAuB,EAAE,OAAwB;QACvE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAA,WAAI,EAAA,WAAW,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,IAAI,CACF,QAA4C,EAAE,EAC9C,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA,uBAAiB,CAAA,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe,EAAE,OAAwB;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAA,WAAI,EAAA,WAAW,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAzCD,wBAyCC;AAkGD,MAAM,CAAC,OAAO,GAAG,iBAAO,CAAC;AACzB,MAAM,CAAC,QAAQ,GAAG,mBAAQ,CAAC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/content.js:13:        return this._client.get((0, path_1.path) `/skills/${skillID}/content`, {
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.d.ts.map:1:{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/resources/skills/skills.ts"],"names":[],"mappings":"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"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.mjs.map:1:{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/resources/skills/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,OAAO,EAAE;OACX,EACL,MAAM,GAQP;OACM,EACL,QAAQ,GAST"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.d.ts:2:export { Skills, type DeletedSkill, type Skill, type SkillList, type SkillCreateParams, type SkillUpdateParams, type SkillListParams, type SkillsPage, } from "./skills.js";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions.mjs.map:1:{"version":3,"file":"versions.mjs","sourceRoot":"","sources":["../../src/resources/skills/versions.ts"],"names":[],"mappings":"AAAA,sFAAsF"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.d.mts.map:1:{"version":3,"file":"skills.d.mts","sourceRoot":"","sources":["../../src/resources/skills/skills.ts"],"names":[],"mappings":"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"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.d.mts.map:1:{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/resources/skills/index.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,EAAE;OACX,EACL,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB;OACM,EACL,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions.d.mts.map:1:{"version":3,"file":"versions.d.mts","sourceRoot":"","sources":["../../src/resources/skills/versions.ts"],"names":[],"mappings":""}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.mjs:3:export { Skills, } from "./skills.mjs";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/content.mjs.map:1:{"version":3,"file":"content.mjs","sourceRoot":"","sources":["../../src/resources/skills/content.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;OAEf,EAAE,YAAY,EAAE;OAEhB,EAAE,IAAI,EAAE;AAEf,MAAM,OAAO,OAAQ,SAAQ,WAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,OAAwB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA,WAAW,OAAO,UAAU,EAAE;YACxD,GAAG,OAAO;YACV,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3E,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:20:        return this._client.post('/skills', maybeMultipartFormRequestOptions({ body, ...options }, this._client));
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:26:        return this._client.get(path `/skills/${skillID}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:32:        return this._client.post(path `/skills/${skillID}`, { body, ...options });
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:35:     * List all skills for the current project.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:38:        return this._client.getAPIList('/skills', (CursorPage), { query, ...options });
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:44:        return this._client.delete(path `/skills/${skillID}`, options);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs:49://# sourceMappingURL=skills.mjs.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/content.d.ts.map:1:{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/resources/skills/content.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OAEd,EAAE,cAAc,EAAE;AAGzB,qBAAa,OAAQ,SAAQ,WAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;CAO1E"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/content.d.mts.map:1:{"version":3,"file":"content.d.mts","sourceRoot":"","sources":["../../src/resources/skills/content.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OAEd,EAAE,cAAc,EAAE;AAGzB,qBAAa,OAAQ,SAAQ,WAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;CAO1E"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/content.js.map:1:{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/resources/skills/content.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,qDAAkD;AAElD,uDAAsD;AAEtD,uDAAiD;AAEjD,MAAa,OAAQ,SAAQ,sBAAW;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,OAAwB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,WAAI,EAAA,WAAW,OAAO,UAAU,EAAE;YACxD,GAAG,OAAO;YACV,OAAO,EAAE,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3E,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;CACF;AAXD,0BAWC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.d.ts.map:1:{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/skills/index.ts"],"names":[],"mappings":"OAEO,EAAE,OAAO,EAAE;OACX,EACL,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB;OACM,EACL,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.d.mts:26:     * List all skills for the current project.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.d.mts:116://# sourceMappingURL=skills.d.mts.map
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.js.map:1:{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/skills/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,wCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,sCASkB;AARhB,gGAAA,MAAM,OAAA;AASR,6CAU0B;AATxB,iGAAA,QAAQ,OAAA"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.js:7:var skills_1 = require("./skills.js");
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/index.js:8:Object.defineProperty(exports, "Skills", { enumerable: true, get: function () { return skills_1.Skills; } });
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/skills.mjs.map:1:{"version":3,"file":"skills.mjs","sourceRoot":"","sources":["../../src/resources/skills/skills.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;OACf,KAAK,UAAU;OACf,EAAE,OAAO,EAAE;OACX,KAAK,WAAW;OAChB,EASL,QAAQ,GACT;OAEM,EAAE,UAAU,EAAsC;OAGlD,EAAE,gCAAgC,EAAE;OACpC,EAAE,IAAI,EAAE;AAEf,MAAM,OAAO,MAAO,SAAQ,WAAW;IAAvC;;QACE,YAAO,GAAuB,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnE,aAAQ,GAAyB,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAuC1E,CAAC;IArCC;;OAEG;IACH,MAAM,CAAC,OAA6C,EAAE,EAAE,OAAwB;QAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe,EAAE,OAAwB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA,WAAW,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe,EAAE,IAAuB,EAAE,OAAwB;QACvE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,WAAW,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,IAAI,CACF,QAA4C,EAAE,EAC9C,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA,UAAiB,CAAA,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAe,EAAE,OAAwB;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAA,WAAW,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAkGD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC"}
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/content.mjs:10:        return this._client.get(path `/skills/${skillID}/content`, {
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/node_modules/openai/resources/skills/versions.d.ts.map:1:{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/resources/skills/versions.ts"],"names":[],"mappings":""}


**Inspecting installation paths**

I’m considering where to install official skills, possibly following the Claude Code paths. The user asked about the “lugar oficial para skills,” which likely means I need to look under `.pi/agent/skills`. I should check the documentation in the skills repository and also the pi-coding-agent docs for guidance. Let’s make sure to explore the local documentation to clarify the best approach for this installation.

bash

grep -RIn 'skills' ~/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/docs ~/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist 2>/dev/null | head -120

curl -L --max-time 20 -s https://raw.githubusercontent.com/badlogic/pi-skills/main/README.md | sed -n '1,220p'

find ~/.pi -maxdepth 4 -type d -name '*skill*' -o -type f -name 'SKILL.md' 2>/dev/null | sed -n '1,120p'


/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/cli/args.d.ts:31:    skills?: string[];
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/cli/args.js:103:            result.skills = result.skills ?? [];
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/cli/args.js:104:            result.skills.push(args[++i]);
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/cli/args.js:114:        else if (arg === "--no-skills" || arg === "-ns") {
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/cli/args.js:217:  --no-skills, -ns               Disable skills discovery and loading
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/cli/args.d.ts.map:1:{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA2H9C;AAED,wBAAgB,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAuJhE","sourcesContent":["/**\n * CLI argument parsing and help display\n */\n\nimport type { ThinkingLevel } from \"@mariozechner/pi-agent-core\";\nimport chalk from \"chalk\";\nimport { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from \"../config.js\";\nimport type { ExtensionFlag } from \"../core/extensions/types.js\";\n\nexport type Mode = \"text\" | \"json\" | \"rpc\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string[];\n\tthinking?: ThinkingLevel;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\tnoSession?: boolean;\n\tsession?: string;\n\tfork?: string;\n\tsessionDir?: string;\n\tmodels?: string[];\n\ttools?: string[];\n\tnoTools?: boolean;\n\textensions?: string[];\n\tnoExtensions?: boolean;\n\tprint?: boolean;\n\texport?: string;\n\tnoSkills?: boolean;\n\tskills?: string[];\n\tpromptTemplates?: string[];\n\tnoPromptTemplates?: boolean;\n\tthemes?: string[];\n\tnoThemes?: boolean;\n\tnoContextFiles?: boolean;\n\tlistModels?: string | true;\n\toffline?: boolean;\n\tverbose?: boolean;\n\tmessages: string[];\n\tfileArgs: string[];\n\t/** Unknown flags (potentially extension flags) - map of flag name to value */\n\tunknownFlags: Map<string, boolean | string>;\n\tdiagnostics: Array<{ type: \"warning\" | \"error\"; message: string }>;\n}\n\nconst VALID_THINKING_LEVELS = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\"] as const;\n\nexport function isValidThinkingLevel(level: string): level is ThinkingLevel {\n\treturn VALID_THINKING_LEVELS.includes(level as ThinkingLevel);\n}\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t\tfileArgs: [],\n\t\tunknownFlags: new Map(),\n\t\tdiagnostics: [],\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"text\" || mode === \"json\" || mode === \"rpc\") {\n\t\t\t\tresult.mode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tresult.resume = true;\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if (arg === \"--model\" && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = result.appendSystemPrompt ?? [];\n\t\t\tresult.appendSystemPrompt.push(args[++i]);\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--fork\" && i + 1 < args.length) {\n\t\t\tresult.fork = args[++i];\n\t\t} else if (arg === \"--session-dir\" && i + 1 < args.length) {\n\t\t\tresult.sessionDir = args[++i];\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tresult.models = args[++i].split(\",\").map((s) => s.trim());\n\t\t} else if (arg === \"--no-tools\") {\n\t\t\tresult.noTools = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tresult.tools = args[++i]\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((s) => s.trim())\n\t\t\t\t.filter((name) => name.length > 0);\n\t\t} else if (arg === \"--thinking\" && i + 1 < args.length) {\n\t\t\tconst level = args[++i];\n\t\t\tif (isValidThinkingLevel(level)) {\n\t\t\t\tresult.thinking = level;\n\t\t\t} else {\n\t\t\t\tresult.diagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: `Invalid thinking level \"${level}\". Valid values: ${VALID_THINKING_LEVELS.join(\", \")}`,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (arg === \"--print\" || arg === \"-p\") {\n\t\t\tresult.print = true;\n\t\t} else if (arg === \"--export\" && i + 1 < args.length) {\n\t\t\tresult.export = args[++i];\n\t\t} else if ((arg === \"--extension\" || arg === \"-e\") && i + 1 < args.length) {\n\t\t\tresult.extensions = result.extensions ?? [];\n\t\t\tresult.extensions.push(args[++i]);\n\t\t} else if (arg === \"--no-extensions\" || arg === \"-ne\") {\n\t\t\tresult.noExtensions = true;\n\t\t} else if (arg === \"--skill\" && i + 1 < args.length) {\n\t\t\tresult.skills = result.skills ?? [];\n\t\t\tresult.skills.push(args[++i]);\n\t\t} else if (arg === \"--prompt-template\" && i + 1 < args.length) {\n\t\t\tresult.promptTemplates = result.promptTemplates ?? [];\n\t\t\tresult.promptTemplates.push(args[++i]);\n\t\t} else if (arg === \"--theme\" && i + 1 < args.length) {\n\t\t\tresult.themes = result.themes ?? [];\n\t\t\tresult.themes.push(args[++i]);\n\t\t} else if (arg === \"--no-skills\" || arg === \"-ns\") {\n\t\t\tresult.noSkills = true;\n\t\t} else if (arg === \"--no-prompt-templates\" || arg === \"-np\") {\n\t\t\tresult.noPromptTemplates = true;\n\t\t} else if (arg === \"--no-themes\") {\n\t\t\tresult.noThemes = true;\n\t\t} else if (arg === \"--no-context-files\" || arg === \"-nc\") {\n\t\t\tresult.noContextFiles = true;\n\t\t} else if (arg === \"--list-models\") {\n\t\t\t// Check if next arg is a search pattern (not a flag or file arg)\n\t\t\tif (i + 1 < args.length && !args[i + 1].startsWith(\"-\") && !args[i + 1].startsWith(\"@\")) {\n\t\t\t\tresult.listModels = args[++i];\n\t\t\t} else {\n\t\t\t\tresult.listModels = true;\n\t\t\t}\n\t\t} else if (arg === \"--verbose\") {\n\t\t\tresult.verbose = true;\n\t\t} else if (arg === \"--offline\") {\n\t\t\tresult.offline = true;\n\t\t} else if (arg.startsWith(\"@\")) {\n\t\t\tresult.fileArgs.push(arg.slice(1)); // Remove @ prefix\n\t\t} else if (arg.startsWith(\"--\")) {\n\t\t\tconst eqIndex = arg.indexOf(\"=\");\n\t\t\tif (eqIndex !== -1) {\n\t\t\t\tresult.unknownFlags.set(arg.slice(2, eqIndex), arg.slice(eqIndex + 1));\n\t\t\t} else {\n\t\t\t\tconst flagName = arg.slice(2);\n\t\t\t\tconst next = args[i + 1];\n\t\t\t\tif (next !== undefined && !next.startsWith(\"-\") && !next.startsWith(\"@\")) {\n\t\t\t\t\tresult.unknownFlags.set(flagName, next);\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.unknownFlags.set(flagName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg.startsWith(\"-\") && !arg.startsWith(\"--\")) {\n\t\t\tresult.diagnostics.push({ type: \"error\", message: `Unknown option: ${arg}` });\n\t\t} else if (!arg.startsWith(\"-\")) {\n\t\t\tresult.messages.push(arg);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function printHelp(extensionFlags?: ExtensionFlag[]): void {\n\tconst extensionFlagsText =\n\t\textensionFlags && extensionFlags.length > 0\n\t\t\t? `\\n${chalk.bold(\"Extension CLI Flags:\")}\\n${extensionFlags\n\t\t\t\t\t.map((flag) => {\n\t\t\t\t\t\tconst value = flag.type === \"string\" ? \" <value>\" : \"\";\n\t\t\t\t\t\tconst description = flag.description ?? `Registered by ${flag.extensionPath}`;\n\t\t\t\t\t\treturn `  --${flag.name}${value}`.padEnd(30) + description;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\\n\")}\\n`\n\t\t\t: \"\";\n\tconsole.log(`${chalk.bold(APP_NAME)} - AI coding assistant with read, bash, edit, write tools\n\n${chalk.bold(\"Usage:\")}\n  ${APP_NAME} [options] [@files...] [messages...]\n\n${chalk.bold(\"Commands:\")}\n  ${APP_NAME} install <source> [-l]     Install extension source and add to settings\n  ${APP_NAME} remove <source> [-l]      Remove extension source from settings\n  ${APP_NAME} uninstall <source> [-l]   Alias for remove\n  ${APP_NAME} update [source]           Update installed extensions (skips pinned sources)\n  ${APP_NAME} list                      List installed extensions from settings\n  ${APP_NAME} config                    Open TUI to enable/disable package resources\n  ${APP_NAME} <command> --help          Show help for install/remove/uninstall/update/list\n\n${chalk.bold(\"Options:\")}\n  --provider <name>              Provider name (default: google)\n  --model <pattern>              Model pattern or ID (supports \"provider/id\" and optional \":<thinking>\")\n  --api-key <key>                API key (defaults to env vars)\n  --system-prompt <text>         System prompt (default: coding assistant prompt)\n  --append-system-prompt <text>  Append text or file contents to the system prompt (can be used multiple times)\n  --mode <mode>                  Output mode: text (default), json, or rpc\n  --print, -p                    Non-interactive mode: process prompt and exit\n  --continue, -c                 Continue previous session\n  --resume, -r                   Select a session to resume\n  --session <path|id>            Use specific session file or partial UUID\n  --fork <path|id>               Fork specific session file or partial UUID into a new session\n  --session-dir <dir>            Directory for session storage and lookup\n  --no-session                   Don't save session (ephemeral)\n  --models <patterns>            Comma-separated model patterns for Ctrl+P cycling\n                                 Supports globs (anthropic/*, *sonnet*) and fuzzy matching\n  --no-tools                     Disable all tools by default (built-in and extension)\n  --tools <tools>                Comma-separated allowlist of tool names to enable\n                                 Applies to built-in and extension tools\n  --thinking <level>             Set thinking level: off, minimal, low, medium, high, xhigh\n  --extension, -e <path>         Load an extension file (can be used multiple times)\n  --no-extensions, -ne           Disable extension discovery (explicit -e paths still work)\n  --skill <path>                 Load a skill file or directory (can be used multiple times)\n  --no-skills, -ns               Disable skills discovery and loading\n  --prompt-template <path>       Load a prompt template file or directory (can be used multiple times)\n  --no-prompt-templates, -np     Disable prompt template discovery and loading\n  --theme <path>                 Load a theme file or directory (can be used multiple times)\n  --no-themes                    Disable theme discovery and loading\n  --no-context-files, -nc        Disable AGENTS.md and CLAUDE.md discovery and loading\n  --export <file>                Export session file to HTML and exit\n  --list-models [search]         List available models (with optional fuzzy search)\n  --verbose                      Force verbose startup (overrides quietStartup setting)\n  --offline                      Disable startup network operations (same as PI_OFFLINE=1)\n  --help, -h                     Show this help\n  --version, -v                  Show version number\n\nExtensions can register additional flags (e.g., --plan from plan-mode extension).${extensionFlagsText}\n\n${chalk.bold(\"Examples:\")}\n  # Interactive mode\n  ${APP_NAME}\n\n  # Interactive mode with initial prompt\n  ${APP_NAME} \"List all .ts files in src/\"\n\n  # Include files in initial message\n  ${APP_NAME} @prompt.md @image.png \"What color is the sky?\"\n\n  # Non-interactive mode (process and exit)\n  ${APP_NAME} -p \"List all .ts files in src/\"\n\n  # Multiple messages (interactive)\n  ${APP_NAME} \"Read package.json\" \"What dependencies do we have?\"\n\n  # Continue previous session\n  ${APP_NAME} --continue \"What did we discuss?\"\n\n  # Use different model\n  ${APP_NAME} --provider openai --model gpt-4o-mini \"Help me refactor this code\"\n\n  # Use model with provider prefix (no --provider needed)\n  ${APP_NAME} --model openai/gpt-4o \"Help me refactor this code\"\n\n  # Use model with thinking level shorthand\n  ${APP_NAME} --model sonnet:high \"Solve this complex problem\"\n\n  # Limit model cycling to specific models\n  ${APP_NAME} --models claude-sonnet,claude-haiku,gpt-4o\n\n  # Limit to a specific provider with glob pattern\n  ${APP_NAME} --models \"github-copilot/*\"\n\n  # Cycle models with fixed thinking levels\n  ${APP_NAME} --models sonnet:high,haiku:low\n\n  # Start with a specific thinking level\n  ${APP_NAME} --thinking high \"Solve this complex problem\"\n\n  # Read-only mode (no file modifications possible)\n  ${APP_NAME} --tools read,grep,find,ls -p \"Review the code in src/\"\n\n  # Export a session file to HTML\n  ${APP_NAME} --export ~/${CONFIG_DIR_NAME}/agent/sessions/--path--/session.jsonl\n  ${APP_NAME} --export session.jsonl output.html\n\n${chalk.bold(\"Environment Variables:\")}\n  ANTHROPIC_API_KEY                - Anthropic Claude API key\n  ANTHROPIC_OAUTH_TOKEN            - Anthropic OAuth token (alternative to API key)\n  OPENAI_API_KEY                   - OpenAI GPT API key\n  AZURE_OPENAI_API_KEY             - Azure OpenAI API key\n  AZURE_OPENAI_BASE_URL            - Azure OpenAI base URL (https://{resource}.openai.azure.com/openai/v1)\n  AZURE_OPENAI_RESOURCE_NAME       - Azure OpenAI resource name (alternative to base URL)\n  AZURE_OPENAI_API_VERSION         - Azure OpenAI API version (default: v1)\n  AZURE_OPENAI_DEPLOYMENT_NAME_MAP - Azure OpenAI model=deployment map (comma-separated)\n  GEMINI_API_KEY                   - Google Gemini API key\n  GROQ_API_KEY                     - Groq API key\n  CEREBRAS_API_KEY                 - Cerebras API key\n  XAI_API_KEY                      - xAI Grok API key\n  OPENROUTER_API_KEY               - OpenRouter API key\n  AI_GATEWAY_API_KEY               - Vercel AI Gateway API key\n  ZAI_API_KEY                      - ZAI API key\n  MISTRAL_API_KEY                  - Mistral API key\n  MINIMAX_API_KEY                  - MiniMax API key\n  OPENCODE_API_KEY                 - OpenCode Zen/OpenCode Go API key\n  KIMI_API_KEY                     - Kimi For Coding API key\n  AWS_PROFILE                      - AWS profile for Amazon Bedrock\n  AWS_ACCESS_KEY_ID                - AWS access key for Amazon Bedrock\n  AWS_SECRET_ACCESS_KEY            - AWS secret key for Amazon Bedrock\n  AWS_BEARER_TOKEN_BEDROCK         - Bedrock API key (bearer token)\n  AWS_REGION                       - AWS region for Amazon Bedrock (e.g., us-east-1)\n  ${ENV_AGENT_DIR.padEnd(32)} - Session storage directory (default: ~/${CONFIG_DIR_NAME}/agent)\n  PI_PACKAGE_DIR                   - Override package directory (for Nix/Guix store paths)\n  PI_OFFLINE                       - Disable startup network operations when set to 1/true/yes\n  PI_TELEMETRY                     - Override install telemetry when set to 1/true/yes or 0/false/no\n  PI_SHARE_VIEWER_URL              - Base URL for /share command (default: https://pi.dev/session/)\n  PI_AI_ANTIGRAVITY_VERSION        - Override Antigravity User-Agent version (e.g., 1.23.0)\n\n${chalk.bold(\"Built-in Tool Names:\")}\n  read   - Read file contents\n  bash   - Execute bash commands\n  edit   - Edit files with find/replace\n  write  - Write files (creates/overwrites)\n  grep   - Search file contents (read-only, off by default)\n  find   - Find files by glob pattern (read-only, off by default)\n  ls     - List directory contents (read-only, off by default)\n`);\n}\n"]}
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/main.js:400:    const resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/index.js:24:export { formatSkillsForPrompt, loadSkills, loadSkillsFromDir, } from "./core/skills.js";
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/index.d.ts.map:1:{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.js\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./core/compaction/index.js\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppKeybinding,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tBuildSystemPromptOptions,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tResolvedCommand,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tSlashCommandInfo,\n\tSlashCommandSource,\n\tSourceInfo,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolDefinition,\n\tToolExecutionMode,\n\tToolInfo,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tWidgetPlacement,\n\tWorkingIndicatorOptions,\n\tWriteToolCallEvent,\n} from \"./core/extensions/index.js\";\nexport {\n\tcreateExtensionRuntime,\n\tdefineTool,\n\tdiscoverAndLoadExtensions,\n\tExtensionRunner,\n\tisBashToolResult,\n\tisEditToolResult,\n\tisFindToolResult,\n\tisGrepToolResult,\n\tisLsToolResult,\n\tisReadToolResult,\n\tisToolCallEventType,\n\tisWriteToolResult,\n\twrapRegisteredTool,\n\twrapRegisteredTools,\n} from \"./core/extensions/index.js\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.js\";\nexport { convertToLlm } from \"./core/messages.js\";\nexport { ModelRegistry } from \"./core/model-registry.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.js\";\nexport { DefaultPackageManager } from \"./core/package-manager.js\";\nexport type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from \"./core/resource-loader.js\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.js\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype CreateAgentSessionFromServicesOptions,\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\ttype CreateAgentSessionRuntimeFactory,\n\ttype CreateAgentSessionRuntimeResult,\n\ttype CreateAgentSessionServicesOptions,\n\t// Factory\n\tcreateAgentSession,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionRuntime,\n\tcreateAgentSessionServices,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateGrepTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateWriteTool,\n\ttype PromptTemplate,\n} from \"./core/sdk.js\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.js\";\nexport {\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n} from \"./core/settings-manager.js\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.js\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.js\";\n// Tools\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateGrepToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLsToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tformatSize,\n\ttype GrepOperations,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n} from \"./core/tools/index.js\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.js\";\n// Run modes for programmatic SDK usage\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\n\ttype RpcEventListener,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\trunPrintMode,\n\trunRpcMode,\n} from \"./modes/index.js\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tBranchSummaryMessageComponent,\n\tCompactionSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tkeyHint,\n\tkeyText,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.js\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.js\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.js\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.js\";\n"]}
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/agent-session.js:645:        const loadedSkills = this._resourceLoader.getSkills().skills;
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/agent-session.js:649:            skills: loadedSkills,
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/agent-session.js:833:        const skill = this.resourceLoader.getSkills().skills.find((s) => s.name === skillName);
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/agent-session.js:1697:            const skills = this._resourceLoader.getSkills().skills.map((skill) => ({
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/agent-session.js:1703:            return [...extensionCommands, ...templates, ...skills];
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/settings-manager.js:184:        // Migrate old skills object format to new array format
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/settings-manager.js:185:        if ("skills" in settings &&
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/settings-manager.js:186:            typeof settings.skills === "object" &&
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/settings-manager.js:187:            settings.skills !== null &&
/home/sebas/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist/core/settings-manager.js:188:            !Array.isArray(settings.skills)) {

[Showing lines 12-31 of 31 (50.0KB limit). Full output: /tmp/pi-bash-5c97f7f152ee4ee3.log]


# pi-skills

A collection of skills for [pi-coding-agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent), compatible with Claude Code, Codex CLI, Amp, and Droid.

## Installation

### pi-coding-agent

```bash
# User-level (available in all projects)
git clone https://github.com/badlogic/pi-skills ~/.pi/agent/skills/pi-skills

# Or project-level
git clone https://github.com/badlogic/pi-skills .pi/skills/pi-skills
```

### Codex CLI

```bash
git clone https://github.com/badlogic/pi-skills ~/.codex/skills/pi-skills
```

### Amp

Amp finds skills recursively in toolboxes:

```bash
git clone https://github.com/badlogic/pi-skills ~/.config/amp/tools/pi-skills
```

### Droid (Factory)

```bash
# User-level
git clone https://github.com/badlogic/pi-skills ~/.factory/skills/pi-skills

# Or project-level
git clone https://github.com/badlogic/pi-skills .factory/skills/pi-skills
```

### Claude Code

Claude Code only looks one level deep for `SKILL.md` files, so each skill folder must be directly under the skills directory. Clone the repo somewhere, then symlink individual skills:

```bash
# Clone to a convenient location
git clone https://github.com/badlogic/pi-skills ~/pi-skills

# Symlink individual skills (user-level)
mkdir -p ~/.claude/skills
ln -s ~/pi-skills/brave-search ~/.claude/skills/brave-search
ln -s ~/pi-skills/browser-tools ~/.claude/skills/browser-tools
ln -s ~/pi-skills/gccli ~/.claude/skills/gccli
ln -s ~/pi-skills/gdcli ~/.claude/skills/gdcli
ln -s ~/pi-skills/gmcli ~/.claude/skills/gmcli
ln -s ~/pi-skills/transcribe ~/.claude/skills/transcribe
ln -s ~/pi-skills/vscode ~/.claude/skills/vscode
ln -s ~/pi-skills/youtube-transcript ~/.claude/skills/youtube-transcript

# Or project-level
mkdir -p .claude/skills
ln -s ~/pi-skills/brave-search .claude/skills/brave-search
ln -s ~/pi-skills/browser-tools .claude/skills/browser-tools
ln -s ~/pi-skills/gccli .claude/skills/gccli
ln -s ~/pi-skills/gdcli .claude/skills/gdcli
ln -s ~/pi-skills/gmcli .claude/skills/gmcli
ln -s ~/pi-skills/transcribe .claude/skills/transcribe
ln -s ~/pi-skills/vscode .claude/skills/vscode
ln -s ~/pi-skills/youtube-transcript .claude/skills/youtube-transcript
```

## Available Skills

| Skill | Description |
|-------|-------------|
| [brave-search](brave-search/SKILL.md) | Web search and content extraction via Brave Search |
| [browser-tools](browser-tools/SKILL.md) | Interactive browser automation via Chrome DevTools Protocol |
| [gccli](gccli/SKILL.md) | Google Calendar CLI for events and availability |
| [gdcli](gdcli/SKILL.md) | Google Drive CLI for file management and sharing |
| [gmcli](gmcli/SKILL.md) | Gmail CLI for email, drafts, and labels |
| [transcribe](transcribe/SKILL.md) | Speech-to-text transcription via Groq Whisper API |
| [vscode](vscode/SKILL.md) | VS Code integration for diffs and file comparison |
| [youtube-transcript](youtube-transcript/SKILL.md) | Fetch YouTube video transcripts |

## Skill Format

Each skill follows the pi/Claude Code format:

```markdown
---
name: skill-name
description: Short description shown to agent
---

# Instructions

Detailed instructions here...
Helper files available at: {baseDir}/
```

The `{baseDir}` placeholder is replaced with the skill's directory path at runtime.

## Requirements

Some skills require additional setup. Generally, the agent will walk you through that. But if not, here you go:

- **brave-search**: Requires Node.js. Run `npm install` in the skill directory.
- **browser-tools**: Requires Chrome and Node.js. Run `npm install` in the skill directory.
- **gccli**: Requires Node.js. Install globally with `npm install -g @mariozechner/gccli`.
- **gdcli**: Requires Node.js. Install globally with `npm install -g @mariozechner/gdcli`.
- **gmcli**: Requires Node.js. Install globally with `npm install -g @mariozechner/gmcli`.
- **subagent**: Requires pi-coding-agent. Install globally with `npm install -g @mariozechner/pi-coding-agent`.
- **transcribe**: Requires curl and a Groq API key.
- **vscode**: Requires VS Code with `code` CLI in PATH.
- **youtube-transcript**: Requires Node.js. Run `npm install` in the skill directory.

## License

MIT


(no output)


**Exploring skill loading**

I’m considering checking if `/.pi/agent/skills` is being utilized by the app. The configuration hints that skill loading might depend on settings outlined in `resolveCliPaths` and the `--skill` option, which seems to be the official directory. I might also need to create symlinks for individual browser-tools since the skill is nestled within the repository. Just making sure everything is set up properly!

mkdir -p ~/.pi/agent/skills && if [ ! -d ~/.pi/agent/skills/pi-skills ]; then git clone --depth 1 https://github.com/badlogic/pi-skills ~/.pi/agent/skills/pi-skills; else cd ~/.pi/agent/skills/pi-skills && git pull --ff-only; fi

edit

## Browser tools
- Para browser automation, preferí `browser-tools` de `https://github.com/badlogic/pi-skills`.
- Usá `browser-start`, `browser-nav`, `browser-eval`, `browser-screenshot`, `browser-pick`, `browser-cookies` y `browser-content` como set base.
- Seguí Unix philosophy: herramientas chicas, composables, con stdout limpio y persistencia a archivo cuando haga falta.
- Leé el `SKILL.md` del skill cuando necesites la guía completa; es la interfaz del harness.
- Preferí DOM inspection sobre screenshots.
- Si necesitás varias acciones, batchealas en una sola evaluación/IIFE.
- Usá `browser-pick` cuando selectors sean ambiguos o cuando el usuario quiera señalar elementos.
- Usá `browser-content` para extraer contenido legible de páginas dinámicas.
- Usá `browser-cookies` para debugging de auth y sesiones.
- Usá `--profile` sólo cuando te convenga preservar logins/cookies.

## tmux / TUI


Cloning into '/home/sebas/.pi/agent/skills/pi-skills'...


Successfully replaced 1 block(s) in /mnt/rpi/pi-config/AGENTS.md.

    ...
 37 - No asumas que una UI es un web server.
 38 - Para `code-server`, proxy por nginx/subpath; no usar `server-base-path` en `config.yaml`.
 39 - Si una app solo vive en Tailscale, apagá auth local si no aporta.
 40
-41 ## Browser tools
-42 - Para browser automation, preferí `browser-tools` de `https://github.com/badlogic/pi-skills`.
-43 - Usá `browser-start`, `browser-nav`, `browser-eval`, `browser-screenshot`, `browser-pick`, `browser-cookies` y `browser-content` como set base.
-44 - Seguí Unix philosophy: herramientas chicas, composables, con stdout limpio y persistencia a archivo cuando haga falta.
-45 - Leé el `SKILL.md` del skill cuando necesites la guía completa; es la interfaz del harness.
-46 - Preferí DOM inspection sobre screenshots.
-47 - Si necesitás varias acciones, batchealas en una sola evaluación/IIFE.
-48 - Usá `browser-pick` cuando selectors sean ambiguos o cuando el usuario quiera señalar elementos.
-49 - Usá `browser-content` para extraer contenido legible de páginas dinámicas.
-50 - Usá `browser-cookies` para debugging de auth y sesiones.
-51 - Usá `--profile` sólo cuando te convenga preservar logins/cookies.
-52
 53 ## tmux / TUI
 54 - Fuente de verdad: `/mnt/rpi/pi-config/SERVICES-ARCHITECTURE.md`.
 55 - Si tocás tmux o el launcher de `pi`, actualizá ese archivo primero.
 56
    ...


**Verifying clone completion**

I should check if the clone command has completed successfully since it might still be running. The output is showing just cloning, which suggests it’s likely successful, but I’m not entirely sure. The tool's return could be truncated, which means I want to verify the final status. It's essential to ensure that everything went through as expected. Let's look into this to avoid any surprises later!

bash

test -d ~/.pi/agent/skills/pi-skills/browser-tools && echo OK && ls ~/.pi/agent/skills/pi-skills/browser-tools | sed -n '1,40p'

git -C ~/.pi/agent/skills/pi-skills rev-parse --short HEAD 2>/dev/null && git -C ~/.pi/agent/skills/pi-skills remote -v | sed -n '1,20p'


OK
browser-content.js
browser-cookies.js
browser-eval.js
browser-hn-scraper.js
browser-nav.js
browser-pick.js
browser-screenshot.js
browser-start.js
package.json
package-lock.json
SKILL.md


# Agente Personal

## Comunicación
- Seguí la configuración del sistema.
- Directo, breve, castellano argentino.
- Sin relleno, pleasantries ni hedging.
- Pedí aclaración solo si cambia alcance, riesgo o éxito.

## Intención
- Priorizá impacto de negocio.
- Reencuadrá lo técnico al objetivo real.
- Ejecutá completo una vez claro.
- Cuando una tarea dependa de conocimiento previo, cargá `personal-memory-search` primero.
- Usá subagentes cuando aporten aislamiento o paralelismo.
- Usá Agents Database como memoria durable para preferencias estables, decisiones, hechos de proyecto, artefactos y handoffs.
- Marcá contradicciones cuando importen.
- Este repo es la base para seguir puliendo estas reglas.

## Reglas
- Acciones irreversibles: confirmación explícita.
- Nunca hagas merge ni push a `main` sin confirmación explícita.
- No pidas el mensaje del commit: elegilo vos.
- Podés avanzar autónomamente en tareas no irreversibles.
- Si generás planes, reportes o docs, entregá HTML como entry point; sumá solo los archivos que quieras linkear, o ninguno. Si hay que abrir el HTML, hacelo en la laptop, no en el servidor.
- Código, comandos, commits y texto de PR: formato técnico normal.

## Máquina
- Host: `ballbox-first.emperor-ratio.ts.net` / `100.116.176.16`.
- No hagas SSH a `ballbox-first` para trabajo local.
- “el servidor” suele referirse a esta misma máquina.
- APIs: `personal-agent` `:8082/api/status`, `agents-database` `:8091/api/status`.
- Nginx en `:80` enruta servicios locales.

## Web / Tailscale
- Para apps web locales, preferí nginx en `localhost:80` + `tailscale serve`.
- Si ya existe portal/home, preferí subpaths tipo `/cli/`.
- No asumas que una UI es un web server.
- Para `code-server`, proxy por nginx/subpath; no usar `server-base-path` en `config.yaml`.
- Si una app solo vive en Tailscale, apagá auth local si no aporta.

## tmux / TUI
- Fuente de verdad: `/mnt/rpi/pi-config/SERVICES-ARCHITECTURE.md`.
- Si tocás tmux o el launcher de `pi`, actualizá ese archivo primero.

## Storage / temporales
- Para herramientas, cachés y artefactos durables, preferí `/mnt/rpi`.
- Para temporales del agente, usá `bin/agent-tmp-run --scope scratch|logs|handoff <cmd>`.
- Limpieza: `bin/agent-tmp-gc` cada 6h.
- Usá `.keep` para temporales que deban sobrevivir limpieza.

## Laptop
- Usá `laptop-read`, `laptop-run`, `laptop-rsync`, `laptop-mount`, `laptop-umount`, `laptop-write` para archivos en la laptop.
- Host actual por defecto: `sebastians-macbook-pro-2`.
- Si hace falta descubrirlo, usá `tailscale status --json`.

## Telegram
- Variables: `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`.
- Notificación: `~/.agents/skills/telegram-notify/telegram-notify "Mensaje"`.


75d32a3
origin	https://github.com/badlogic/pi-skills (fetch)
origin	https://github.com/badlogic/pi-skills (push)


**Verifying installation path**

I want to verify that the browser block has been removed. I think I need to write a note in memory about the official install path, since that could be useful for future reference. I’ll go ahead and use the memory-write function for that. I also want to mention that the browser-tools are now installed in the official location under /.pi/agent/skills/pi-skills. Time to save that information!

~/.agents/skills/memory-write/memory-write --type decision --scope global --title "Browser tools installed in official Pi skills path" --content "Installed the browser-tools skill repo from https://github.com/badlogic/pi-skills into ~/.pi/agent/skills/pi-skills so Pi can discover it from the official skills location. AGENTS.md no longer carries the browser-tools instructions; it now relies on the skill itself." --source-ref "conversation:2026-04-21" --origin-agent "personal-agent" --url "https://github.com/badlogic/pi-skills" --domain "github.com"


Browser tools installed in official Pi skills path

Installed the browser-tools skill repo from https://github.com/badlogic/pi-skills into ~/.pi/agent/skills/pi-skills so Pi can discover it from the official skills location. AGENTS.md no longer carries the browser-tools instructions; it now relies on the skill itself.

Summary: Installed the browser-tools skill repo from https://github.com/badlogic/pi-skills into ~/.pi/agent/skills/pi-skills so Pi can discover it from the official skills location. AGENTS…


Hecho.

- Instalé `pi-skills` en el lugar oficial: `~/.pi/agent/skills/pi-skills`
- `browser-tools` ya quedó disponible ahí
- Saqué toda la sección `Browser tools` de `/mnt/rpi/pi-config/AGENTS.md`

Guardé también la decisión en memoria durable.

Si querés, el próximo paso es verificar que Pi lo esté descubriendo solo, sin pasar `--skill` manualmente.


No sé si se pueden hacer subcarpetas en la carpeta de skills. Busca en internet si se permite en Pi.


**Searching for subfolder info**

I’m tasked with finding out if subfolders are allowed in the Pi skills folder. I need to use a web search and possibly check the documentation or code. It might make sense to start by searching my memory for anything related to Pi skills and subfolders, but since this is external documentation, I’ll prioritize a web search. I think using curl could be beneficial for accessing the official docs. Let's search online!

curl -L --max-time 20 -s 'https://r.jina.ai/http://www.google.com/search?q=pi-coding-agent+skills+subfolders' | sed -n '1,200p'

curl -L --max-time 20 -s 'https://r.jina.ai/http://duckduckgo.com/html/?q=pi-coding-agent+skills+subfolders' | sed -n '1,220p'

grep -RIn 'loadSkillsFromDir\|discover.*skills\|one level deep\|subfolder' ~/.npm-global/lib/node_modules/@mariozechner/pi-coding-agent/dist 2>/dev/null | head -120


SecurityCompromiseError

SecurityCompromiseError: Anonymous access to domain www.google.com blocked until Wed Apr 22 2026 01:17:29 GMT+0000 (Coordinated Universal Time) due to previous abuse found on https://www.google.com/share.google?q=ttiOWAVH2kZSWD6tA: DDoS attack suspected: Too many domains