Add npm run local:install script to update and install all skills and extensions #41
Closed
opened 2026-08-18 12:54:27 +00:00 by david
·
2 comments
No Branch/Tag specified
main
feature/issue-264/verify-the-vision-tool-live-against-the-deepseek-a
feature/issue-263/list-the-vision-extension-in-the-repo-root-readme
feature/issue-262/write-extensions-vision-readme-md-the-10-section-p
feature/issue-261/wire-the-vision-extension-into-package-json-manife
feature/issue-260/implement-extensions-vision-index-ts-factory-regis
feature/issue-258/implement-extensions-vision-src-tool-ts-the-vision
feature/issue-257/implement-extensions-vision-src-client-ts-request
feature/issue-256/implement-extensions-vision-src-usage-ts-usage-map
feature/issue-255/implement-extensions-vision-src-images-ts-read-val
feature/issue-254/implement-extensions-vision-src-config-ts-env-reso
feature/issue-253/implement-extensions-vision-src-errors-ts-toolerro
feature/issue-252/penpot-add-text-stages-zero-area-auto-width-text-p
feature/issue-216/add-the-penpot-skill-and-extension-to-the-repo-roo
feature/issue-217/register-the-penpot-tests-in-npm-test-complete-the
feature/issue-215/write-the-penpot-skill-md-core-workflow-token-conv
feature/issue-214/implement-and-run-fetch-penpot-docs-mjs-and-commit
feature/issue-213/validate-screenshot-reconstruction-against-the-liv
feature/issue-212/add-the-image-to-design-workflow-to-skills-penpot
feature/issue-211/validate-svg-import-icon-and-illustration-against
feature/issue-210/implement-the-penpot-add-svg-tool-with-svg-raw-fal
feature/issue-209/implement-the-svg-to-shapes-converter-in-src-svg-t
feature/issue-208/validate-component-instancing-against-the-live-ins
feature/issue-207/implement-penpot-instance-component-with-id-remapp
feature/issue-206/author-and-commit-the-component-library-artifact-u
feature/issue-205/implement-file-library-linking-and-validate-the-ex
feature/issue-204/implement-penpot-export-library-sse-uri-plus-artif
feature/issue-203/implement-penpot-import-library-multipart-upload-p
feature/issue-202/implement-the-transit-decoder-and-sse-stream-parse
feature/issue-201/validate-a-full-composed-screen-one-commit-one-rev
feature/issue-200/implement-penpot-add-image-with-media-upload
feature/issue-199/implement-asset-reference-resolution-plus-penpot-a
feature/issue-198/implement-penpot-add-frame-with-auto-layout-props
feature/issue-197/validate-asset-creation-atomicity-and-write-safety
feature/issue-196/implement-the-designated-target-write-guard-with-a
feature/issue-195/implement-penpot-commit-with-revn-tracking-conflic
feature/issue-194/implement-the-staged-changeset-store-and-the-colou
feature/issue-193/validate-read-primitives-against-the-live-penpot-i
feature/issue-192/implement-the-penpot-list-library-tool-with-name-t
feature/issue-191/implement-the-penpot-get-file-tool-pages-objects-a
feature/issue-190/implement-the-penpot-list-projects-tool-teams-and
feature/issue-189/implement-the-penpot-whoami-tool-and-wire-the-exte
feature/issue-188/implement-the-rpc-client-and-error-decoding-in-src
feature/issue-187/implement-penpot-url-penpot-token-resolution-in-sr
feature/issue-186/scaffold-the-penpot-extension-directory-and-regist
feature/issue-172/add-end-to-end-main-tests-for-the-fj-rg-tool-state
feature/issue-171/make-reminder-report-dynamic-install-skip-counts-r
feature/issue-170/wire-settings-json-filter-rewrite-into-dedupeandre
feature/issue-169/implement-buildpackagefilters-with-exhaustive-unit
feature/issue-168/refactor-preflight-to-skip-warn-for-missing-fj-rg
feature/issue-167/add-fj-rg-tool-detection-helpers-rgavailable-detec
feature/issue-148/reconcile-design-md-and-implementation-plan-with-t
feature/issue-146/verify-extension-load-behavior-with-and-without-mo
feature/issue-145/write-extensions-mongodb-readme-md
feature/issue-144/write-tool-description-promptsnippet-guidance-for
feature/issue-143/implement-index-ts-async-factory-lifecycle-with-te
feature/issue-142/implement-the-mongo-list-collections-tool-with-uni
feature/issue-141/implement-the-mongo-count-tool-with-unit-tests
feature/issue-140/implement-the-mongo-find-tool-with-unit-tests
feature/issue-139/implement-src-errors-ts-with-unit-tests-toolerror
feature/issue-138/implement-src-serialize-ts-with-unit-tests-ejson-t
feature/issue-136/implement-src-env-ts-with-unit-tests-mongodb-uri-r
feature/issue-135/register-the-mongodb-extension-in-the-repo-root-pa
feature/issue-133/initialize-the-extensions-mongodb-package-package
feature/issue-116/src-actions-ts-downloadrunlogs-zip-guarded-unzip-c
feature/issue-115/src-actions-ts-downloadjoblog-cache-first-attempt
feature/issue-114/src-actions-ts-metadata-queries-listactionruns-get
feature/issue-113/src-actionscache-ts-cache-paths-cache-first-read-w
feature/issue-112/add-zip-extraction-dependency-adm-zip-vs-yauzl
feature/issue-111/tracking-forgejo-actions-tooling-read-only-runs-jo
feature/issue-93/add-unit-tests-for-scripts-local-install-mjs-node
feature/issue-92/validate-install-local-end-to-end-on-the-dev-machi
feature/issue-90/implement-pi-registration-with-url-dedupe-and-relo
feature/issue-89/validate-install-local-from-a-scratch-clone-fresh
feature/issue-88/implement-git-pull-and-npm-install-steps-in-script
feature/issue-74/write-victorialogs-readme-md-and-reconcile-design
feature/issue-73/wire-up-index-ts-extension-factory-and-register-al
feature/issue-72/implement-logs-facets-tool-src-tools-facets-ts
feature/issue-71/implement-logs-hits-tool-src-tools-hits-ts
feature/issue-70/implement-logs-search-tool-src-tools-search-ts
feature/issue-69/implement-parsejsonlines-helper-in-src-client-ts
feature/issue-68/implement-victorialogsrequest-in-src-client-ts
feature/issue-67/implement-resolvebaseurl-in-src-env-ts
feature/issue-66/implement-totoolerror-in-src-errors-ts
feature/issue-65/implement-src-defaults-ts-shared-constants-and-app
feature/issue-64/scaffold-the-victorialogs-pi-extension-project
feature/issue-53/skip-issue-creation-for-chore-documentation-commit
feature/issue-45/fix-local-install-preflight-env-var-requirements-s
feature/issue-41/add-npm-run-local-install-script-to-update-and-ins
feature/issue-26/cross-reference-forgejo-list-milestones-from-issue
feature/issue-25/add-forgejo-milestone-delete-tool
feature/issue-24/add-forgejo-milestone-close-and-forgejo-milestone
feature/issue-23/add-forgejo-milestone-edit-tool
feature/issue-22/add-forgejo-milestone-view-tool
feature/issue-21/add-forgejo-list-milestones-tool
feature/issue-20/add-forgejo-milestone-create-tool
feature/issue-18/add-forgejo-label-create-tool
feature/issue-29/bug-forgejo-issue-create-view-edit-close-etc-crash
No results found.
Labels
No labels
bug
chore
documentation
enhancement
feature
ready
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
david/pi-extensions-and-skills#41
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Add an explicit npm script,
npm run local:install, that updates and installs all skills and extensions in this package in one command, from any git checkout of this repo (dev machine or fresh clone elsewhere). It must fail fast on any problem and tell the user exactly what is missing and how to fix it.Background
package.jsonhas apimanifest declaring 3 extensions (extensions/rg/index.ts,extensions/postgres/index.ts,extensions/pr-comments/src/index.ts) +./skills(12 markdown-only skills), and noscriptssection.pi install https://git.excelera.net/david/pi-extensions-and-skills@main(pi clones, runs npm install, registers); dev machine -> manualnpm install+pi install /abs/path(pi does not run npm install for local paths), update =git pull+/reload.extensions/forgejonow has a working entry point (extensions/forgejo/src/index.ts: forgejo_detect + issue/PR/milestone tool suites), importing only@earendil-works/pi-coding-agent(root peerDep) andtypebox(root dep) — no new runtime deps.Requirements
"local:install"toscriptsin rootpackage.json— no npm lifecycle semantics (never auto-runs onnpm install; runs only vianpm run local:install).git pull(only on cleanmain) -> (c)npm install-> (d) global pi registration with URL-entry dedupe -> (e)/reloadreminder.extensions/forgejo/src/index.ts-> 4 extensions; skills stay./skills(12 skills).git clone <url> && cd pi-extensions-and-skills && npm run local:install), fix stale sections.Fail-fast behavior — abort (non-zero exit) on any of these, each with an actionable remediation message (what is missing + how to fix it):
piCLI not found -> how to install pi~/.pi/agent/git/...,.pi/git/...) -> run from your own checkoutmain->git checkout maingit commit/git stashgit pullfails (offline/auth) -> check network/credentialsnpm installfails -> npm error outputrgbinary missing (rg ext) -> e.g.sudo apt install ripgrepDATABASE_URLmissing from env or.env(postgres ext)FORGEJO_TOKENmissing (forgejo ext) -> generate in Forgejo -> Settings -> ApplicationsfjCLI missing/not authenticated (pr-comments ext) ->fj auth loginRegistration & dedupe
~/.pi/agent/settings.json).pi install <abs path>, remove any existing entry whose source references this repo's URL (match plain URL andgit:/ssh://forms) -> single clean identity, no duplicate skills/extensions.Validation / acceptance criteria
main):npm run local:installexits 0;pi listshows local-path entry with no URL duplicate; after/reload,/skillslists all 12; spot-check one tool per extension (grep/rg, postgres, pr-comments, forgejo_detect).git clone <url> <tmp> && cd <tmp> && npm run local:installsucceeds; same verification.FORGEJO_TOKEN-> token message; missingrg-> ripgrep message.Out of scope
grillme(separate npm package:pi install npm:@majorgilles/pi-grill-me)Rollout (per AGENTS.md) — label
feature; branchfeature/issue-<N>/<slug>; commitsissue-<N>: <summary>; PRissue-<N>: <title>withCloses #<N>; squash-merge; delete branch.pi-loop opened and merged a pull request for this issue: #44
Validation results — issue #92: install:local end-to-end on the dev machine (2026-08-28)
Environment: Nobara Linux 43 (x86_64), pi 0.84.3, node v22.22.0, npm 10.9.4; dev checkout at origin/main
e0d1db2(cleanmain, clean tree). All runs on the dev machine against the shared~/.pi/agent/settings.json.All acceptance criteria pass:
npm run install:localexits 0 on cleanmain— preflight passed,git pull --ff-only→ "Already up to date.",npm install→ 157 packages / 0 vulnerabilities,pi install /home/david/Projects/pi-extensions-and-skills→ "Installed", reminder printed.pi listshows the package as a local-path entry (../../Projects/pi-extensions-and-skills); no URL entry for this repo remains (none pre-existed — the dev machine already used a local-path registration; settings byte-identical before/after)./reload+/skills= 12 — headless equivalent: freshpi --printsession booted exit 0 and listed all 12 skills of this package (bruno-cli, commit-changes, commit-docs, create-issues, explain, forgejo-cli, furnish-repo, github-cli, init-project, meilisearch, review, tdd-implementation). The session also listedpi-planning-with-files, a separate npm package on this machine.install:localin README.md (first at line 70) — independently confirmed withrg -c.forgejo_detect: hostgit.excelera.net, ownerdavid, repopi-extensions-and-skills, token configured.detect_branch"Current branch: main";find_pr→ clean domain error "No open PR found for branch: main" (expected — no open PR againstmain).db_list_tables: ⚠️ environment-limited — noDATABASE_URLin env or<cwd>/.env; the extension registers zero tools when unconfigured (by design; confirmedDB_TOOLS=nonefrom a live session's tool list), so the live-DB check cannot run on this machine. The extension loads without crashing (pi boots exit 0). Same limitation as #89.grill_*tools registered.[install:local] Aborted: not on main (current: feature/issue-92/…). Switch first: \git checkout main``[install:local] Aborted: working tree is dirty. Commit or stash your changes first: \git commit` / `git stash``FORGEJO_TOKENunset →[install:local] Warning: FORGEJO_TOKEN is not set. …on stderr, install continues to completion, exit 0rgmissing (PATH stripped) → exit 1,[install:local] Aborted: rg binary not found. Install ripgrep, e.g. \sudo apt install ripgrep` (needed by the rg extension).`Observations:
DATABASE_URL), same as #89.Full results table recorded in
docs/IMPLEMENTATION_PLAN.md§5.1 in this issue's change. No state left behind: temporary dirty-tree file removed, stripped-PATH dir removed, settings byte-identical to pre-validation state; dev machine verified healthy (headless pi boots exit 0).