Register the penpot tests in npm test, complete the extension README, and roll out #217
Closed
opened 2026-09-14 23:15:47 +00:00 by david
·
1 comment
No Branch/Tag specified
main
feature/issue-342/mssql-write-access-check-and-startup-warning-never
feature/issue-331/mssql-write-extensions-mssql-readme-md-setup-tools
feature/issue-330/mssql-register-extension-add-tests-to-root-test-sc
feature/issue-329/mssql-index-ts-wiring-load-env-refuse-on-invalid-l
feature/issue-328/mssql-mssql-table-schema-tool-parameterised
feature/issue-327/mssql-mssql-list-tables-tool
feature/issue-326/mssql-mssql-query-and-mssql-query-one-tools
feature/issue-325/mssql-stream-runner-with-row-cap-cancel-and-timeou
feature/issue-324/mssql-pool-config-builder-encrypt-on-certificate-s
feature/issue-323/mssql-audit-log-writer-pi-mssql-audit-log-mode-060
feature/issue-322/mssql-read-only-guard-module-validatesql-with-corp
feature/issue-321/mssql-certificate-trust-setting-and-limit-validati
feature/issue-320/mssql-loadenvfile-and-mssql-url-parsing
feature/issue-319/mssql-extension-skeleton-permanent-corpora-and-dep
feature/issue-318/mssql-spike-write-result-md-apply-the-gate-open-th
feature/issue-317/mssql-spike-scoring-runner-for-both-candidates
feature/issue-316/mssql-spike-candidate-b-guard-using-the-antlr4-t-s
feature/issue-315/mssql-spike-candidate-a-guard-using-node-sql-parse
feature/issue-314/mssql-spike-must-accept-corpus
feature/issue-313/mssql-spike-scaffold-spike-directory-and-must-reje
feature/issue-311/mssql-spike-check-dependencies-mssql-node-sql-pars
feature/issue-312/mssql-spike-check-whether-extension-tests-run-in-c
feature/issue-299/verify-the-ste-style-live-in-a-short-grill-session
feature/issue-298/bump-the-grillme-extension-to-0-4-0-and-add-the-ch
feature/issue-297/rewrite-extensions-grillme-design-md-in-ste-style
feature/issue-296/rewrite-extensions-grillme-readme-md-in-ste-style
feature/issue-295/rewrite-the-grill-me-command-output-and-read-only
feature/issue-294/rewrite-the-grill-me-tool-metadata-to-the-ste-rule
feature/issue-293/extract-buildgrillprompt-and-add-the-prompt-integr
feature/issue-292/add-ste-style-test-ts-checks-for-the-rule-text-and
feature/issue-291/add-the-pure-ste-style-ts-module-and-inject-the-st
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#217
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
Register the penpot unit tests in the root
npm testscript, completeextensions/penpot/README.md(tool reference, environment variables, safety model), and roll the whole feature out perAGENTS.md: full suite green,install:localpreflight passing,/reloadshowing the tools and the skill, then the tracking issue → branch → commits → PR with a per-file summary.Background
Depends on: #213, #215, #206, #196
This is the last step and the only one that touches the package as a whole. Three loose ends converge here:
node --testfiles, butpackage.json'stestscript only runsscripts/local-install.test.mjsandextensions/learn-repo/*.test.ts. A test that is not in the script does not exist as far as CI and reviewers are concerned. The globs must be added only for directories that actually contain test files, because a glob matching nothing makesnode --testfail.AGENTS.md, this feature is issue-driven: tracking issue,feature/issue-<N>/<kebab-slug>branch, commitsissue-<N>: <summary>, PR titledissue-<N>: …withCloses #<N>and a per-file summary. Merging is the repo owner's decision, not the agent's — open the PR and ask; never merge on your own initiative, and in a non-interactive run (pi --print) stop at the PR rather than asking. An unanswered or ambiguous prompt is not consent.Documentation Required
A separate process downloads these into the listed folders before this issue is implemented. Check the folders for the actual reference material before starting.
docs/reference/pi-coding-agent/pi.extensions,pi.skills) and how npm scripts interact with a pi package, so thetestscript edit and the README claims stay accurate./reload)./skillsverification step.docs/reference/nodejs/node --testfile/glob arguments, and the failure mode when a glob matches nothing. This is why the added globs must correspond to real directories.docs/reference/penpot-api/Implementation Details
1. Register the tests
List what actually exists:
ls extensions/penpot/src/*.test.ts extensions/penpot/src/tools/*.test.ts 2>/dev/null.Append the surviving globs to
scripts.testin the rootpackage.json, e.g.:Add a directory's glob only when that directory contains at least one
*.test.ts; otherwise the runner fails on the empty match.Run
npm testand fix anything it uncovers. A test that fails here is a real defect: fix the code, not the assertion, unless the assertion itself is wrong — in which case say so explicitly in the PR body.2. Complete
extensions/penpot/README.mdPENPOT_URL(base URL, no/apisuffix; a trailing/apiis normalised away),PENPOT_TOKEN(personal access token, presented asAuthorization: Token <token>), where the token is created, that writes need project edit rights, and that the vendored reference is pinned to a specific Penpot version (skills/penpot/docs/VERSION).penpot_*tool with a one-line purpose and its key parameters. Generate the list from the code (grep -n 'name: "penpot_' extensions/penpot/src/tools/*.ts) rather than from memory, so the README cannot drift.penpot_commitas a singleupdate-filecall (one screen = one revision);revnis tracked by the extension because lagged writes are accepted by the server;penpot_discardclears staged work; success is confirmed by re-reading the file.penpot_authorize_target; refusals happen before any request; media uploads and library imports are immediate HTTP calls and say so.svg-rawfallback, single-level component instancing, noadd-componentover the API, no native design tokens, and font substitution when the instance lacks a family. Cross-referencefindings.mdfor the validated behaviour.3. Verify the package
npm test— green.npm run install:local— preflight still passes (it may warn about missingfj/rg/tokens; warnings are fine, failures are not)./reload, then confirm the penpot tools are callable and/skillslistspenpotwith its description.skills/penpot/(includingdocs/andassets/) is packaged.4. Roll out
Follow
AGENTS.mdfor thefeatureflow: create (or reuse) the tracking issue for this feature, branchfeature/issue-<N>/penpot-skill-extension, commit in coherent units withissue-<N>: <summary>messages, push, and open the PR titledissue-<N>: …whose body hasCloses #<N>and a per-file summary of the change..envmust never be committed andPENPOT_TOKENmust not appear in any committed file — checkgit diff --cachedbefore committing. Then ask the user whether to merge; skip the prompt only if merging was already requested explicitly, and in a non-interactive run stop at the PR.Acceptance Criteria
package.json'stestscript includes globs for exactly the penpot test directories that exist, andnpm testpasses.npm run install:localcompletes without a hard failure.extensions/penpot/README.mddocuments configuration, the full tool table, the staged-commit write model, the designated-target safety model, and the known limitations.penpot_*tool and no tool that does not exist (verified by grepping the code)./reload, the penpot tools are callable and/skillslistspenpot.git diff --cachedand the repo contain noPENPOT_TOKENvalue or.envfile.Closes #<N>, anissue-<N>: …title and a per-file summary in the body.Test Plan
Then in pi:
pi-loop opened and merged a pull request for this issue: #249