Transfer selected images, not the repository
Only the files selected for the screenshot set should become Skir assets. A local path is not a remotely readable file.
Host attachments
Supported ChatGPT file inputs provide an authorized file identifier and a temporary download URL. File-library selection is optional and may not be available in every account. The integration must report an unavailable transfer instead of inventing a file reference.
Optional local helper
The packaged Node helper takes an explicit file manifest and allowed directories. It resolves symlinks, accepts PNG/JPEG captures up to 20 MiB each, checks signatures and dimensions, and computes SHA-256 digests. It does not search or upload directories recursively.
- Prepare the selected files and their hashes locally.
- Request a bounded upload session from the authenticated Skir tool.
- PUT each file to its Skir-issued URL without following redirects.
- Complete the upload through the tool and use the returned asset identifiers.
Upload URLs are temporary capabilities. Keep them out of source control, design briefs and support messages. The server validates ownership, permitted sizes and the uploaded files before they become usable assets.
When transfer is unavailable
Continue with an editable storyboard or use the authenticated capture upload page. Save the selected images in the same Skir account connected to your host, then ask the plugin to find their names and asset IDs with list_assets. Local execution is optional. No service receives permission to browse arbitrary files merely because a plugin is connected.