Claude Code, Skill
Shopify Multi Store
Shopify Multi Store, a skill listed in the PlugVet directory.
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
INSTALL_LIFECYCLE_HOOK
Why this grade
- INSTALL_LIFECYCLE_HOOK Medium
A package install hook (preinstall, install, postinstall or prepare) runs a script.
package.json, line 90
prepare
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
src/hosted/store.ts, line 216
await fs.unlink(temp).catch(() => {});
Install and update
Concern
runs a script at install time.
INSTALL_LIFECYCLE_HOOK
package.json, line 90
prepare
Network
Concern
can reach a host that is not written as a fixed address. can reach oauth-store.internal. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
scripts/config-helpers.mjs, line 73
response = await fetch(`https://${shop}/admin/oauth/access_token`, {
scripts/config-helpers.mjs, line 209
response = await fetch(`https://${shop}/admin/api/${apiVersion}/graphql.json`, {
src/config.ts, line 263
response = await fetch(`https://${store.shop}/admin/oauth/access_token`, {
Show more
src/discovery-tools.ts, line 28
const response = await fetch("https://shopify.dev/assistant/search", {
src/media.ts, line 75
const response = await fetch(url, {
src/schema.ts, line 32
const response = await fetch(
src/shopify.ts, line 88
customFetchApi: (_url, init) => fetch(graphqlEndpoint(store), {
src/shopify.ts, line 93
response = await client.fetch(document, { variables, retries: 0 });
src/hosted/app.ts, line 17
fetch(request: Request): Promise<Response>;
Dockerfile, line 29
CMD ["node", "-e", "fetch('http://127.0.0.1:'+(process.env.PORT||8080)+'/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
src/credentials.ts, line 30
if (!SECURE_BACKENDS.has(id) && process.env.SHOPIFY_MULTI_STORE_ALLOW_FILE_KEYRING !== "1") {
.dockerignore, line 11
*.log
.dockerignore, line 12
.env
Show more
.gitignore, line 2
.DS_Store
.gitignore, line 3
.env
.gitignore, line 5
!.env.example
README.md, line 343
- Never commit access tokens, OAuth client secrets, `.env` files, or credential-bearing configuration files.
SECURITY.md, line 16
Never commit Shopify access tokens, OAuth client secrets, `.env` files, or a
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 5eabaec05024. can delete files. runs a script at install time. can reach a host that is not written as a fixed address. can reach oauth-store.internal. The description does not name that host. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: 5eabaec050244c30a696a1e4ab9bfb0c82937332
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.