Skills shareone
📦

shareone

v1.2.10 Content revision r2 Critical ⚙️ External commands🌐 Network access📁 Filesystem access🔑 Env variables Contains scripts

Publish and Manage ShareOne Links

Sharing pages and documents securely can require several tools and manual steps. This skill publishes content and manages ShareOne links from one workflow.

Supports: Claude Codex Code(CC)
⚠️ 38 Poor

This skill is part of a pack

Install the whole pack to get every skill the task needs, in one command.

Install with my Agent

Copy this request to your Agent. It includes the canonical Skill page and manifest.

Agent request
Review the Skillstore skill "shareone" from https://skillstore.io/skills/sudoprivacy-shareone.md and its manifest at https://skillstore.io/api/skills/sudoprivacy-shareone/manifest. Verify the artifact. Do not auto-install. Inspect the skill and report your findings, then wait for an operator or manual installation decision.

Your Agent should still show its plan and request any confirmation required by the security policy.

Agent-readable resources

Use these links when an AI agent, crawler, or script needs clean context instead of reading the full page.

Test it

Using "shareone". Publish the project status page and enable comments.

Expected outcome:

The page was published with comments enabled. The ShareOne link is ready to send to reviewers.

Using "shareone". Add a watermark to an existing report link.

Expected outcome:

The existing share was updated with the requested watermark. Its content and link remain unchanged.

Using "shareone". Download the source file from this ShareOne link.

Expected outcome:

The source file was downloaded using the server filename and saved without overwriting an existing file.

Security Audit

Critical
v6 • 8/17/2026 Open versioned report

The audit confirmed remote pipe-to-shell execution, unsafe filename insertion into HTML, transcript exposure of guest keys, and authenticated requests to caller-selected origins. Most scanner matches are false positives from documentation, JavaScript template literals, loopback tests, and expected CLI file or network operations. No prompt injection or obfuscated payload evidence was found. Static review was capped at 400/531 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

41
Files scanned
4,419
Lines analyzed
23
Review items
0
False positives ignored

Confirmed security concerns (9)

Critical
Pipe to shell pattern
curl -fsSL https://skillhub.cn/install/install.sh | bash -s -- --cli-only
The workflow downloads an unpinned remote installer and immediately pipes it to Bash, allowing upstream compromise to execute arbitrary code.
High
Environment file access
process.env.SHAREONE_BASE_URL = explicitBaseUrl;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment file access
process.env.SHAREONE_BASE_URL = `${parsed.protocol}//${parsed.host}`;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment file access
return process.env.SHAREONE_BASE_URL || DEFAULT_BASE_URL;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment file access
process.env.SHAREONE_BASE_URL = nextValue(i, args[i]);
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment file access
process.env.SHAREONE_BASE_URL = explicitBaseUrl;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment file access
process.env.SHAREONE_BASE_URL = host === 'shareone.vip' || host.endsWith('.shareone.vip')
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment file access
process.env.SHAREONE_BASE_URL = nextValue(i, args[i]);
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
Show all 9 confirmed findings
High
Authenticated Requests Can Target Arbitrary Origins
Full share URLs and --base-url can select an arbitrary API origin. Direct mode then attaches the ShareOne API key to requests sent there.
The origin is derived from caller input, while direct authenticated requests add X-API-Key without an origin allowlist or HTTPS requirement.
Capability review items (23)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Critical
Hardcoded URL
curl -fsSL https://skillhub.cn/install/install.sh | bash -s -- --cli-only
This URL supplies the unpinned installer executed through Bash on the same line, creating a direct remote code execution supply-chain risk.
High
Generic API/secret keys
console.log(`GUEST_KEY_CREATED:${result.api_key}`);
This outputs or requires relaying a newly issued API key through the agent transcript, exposing a bearer credential to logs and conversation retention.
High
Generic API/secret keys
console.log(`GUEST_KEY_CREATED:${result.api_key}`);
This outputs or requires relaying a newly issued API key through the agent transcript, exposing a bearer credential to logs and conversation retention.
High
Generic API/secret keys
console.log(`GUEST_KEY_CREATED:${result.api_key}`);
This outputs or requires relaying a newly issued API key through the agent transcript, exposing a bearer credential to logs and conversation retention.
High
Generic API/secret keys
console.log(guestKeyNotification(result.api_key));
This outputs or requires relaying a newly issued API key through the agent transcript, exposing a bearer credential to logs and conversation retention.
High
Generic API/secret keys
- 如果 `ensure_credentials.js --create-guest` 或底层 `create_guest_key.js` 输出 `GUEST_KEY_CREATED:<api_key
This outputs or requires relaying a newly issued API key through the agent transcript, exposing a bearer credential to logs and conversation retention.
High
Generic API/secret keys
- `GUEST_KEY_CREATED:<api_key>`:**阻塞性用户通知**。分隔线之后是需要原样转发给用户的完整通知文本(含临时 API Key、绑定账号链接和保存提醒)。必须先把该通知发
This outputs or requires relaying a newly issued API key through the agent transcript, exposing a bearer credential to logs and conversation retention.
High
innerHTML assignment (XSS risk)
chip.innerHTML = '<span class="name">📄 ' + file.name + '</span><span class="meta">' + human(file.si
A local filename is concatenated into innerHTML without escaping, so a crafted filename can inject executable markup into the published page.
High
Environment variable access (dot notation)
process.env.SHAREONE_BASE_URL = explicitBaseUrl;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable access (dot notation)
process.env.SHAREONE_BASE_URL = `${parsed.protocol}//${parsed.host}`;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable access (dot notation)
return process.env.SHAREONE_BASE_URL || DEFAULT_BASE_URL;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable access (dot notation)
process.env.SHAREONE_BASE_URL = nextValue(i, args[i]);
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable access (dot notation)
process.env.SHAREONE_BASE_URL = explicitBaseUrl;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable access (dot notation)
process.env.SHAREONE_BASE_URL = host === 'shareone.vip' || host.endsWith('.shareone.vip')
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable access (dot notation)
process.env.SHAREONE_BASE_URL = nextValue(i, args[i]);
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
process.env.SHAREONE_BASE_URL = explicitBaseUrl;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
process.env.SHAREONE_BASE_URL = `${parsed.protocol}//${parsed.host}`;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
return process.env.SHAREONE_BASE_URL || DEFAULT_BASE_URL;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
process.env.SHAREONE_BASE_URL = nextValue(i, args[i]);
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
process.env.SHAREONE_BASE_URL = explicitBaseUrl;
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
process.env.SHAREONE_BASE_URL = host === 'shareone.vip' || host.endsWith('.shareone.vip')
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
High
Environment variable object
process.env.SHAREONE_BASE_URL = nextValue(i, args[i]);
This accepts or propagates a caller-controlled API origin that later receives authenticated ShareOne requests, enabling credential disclosure to an untrusted host.
Medium
Hardcoded URL
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
The generated page imports a floating major-version script from a CDN without integrity verification, exposing published pages to dependency compromise.

Risk Factors

⚙️ External commands (50)
.github/workflows/publish-clawhub.yml:24 .github/workflows/publish-clawhub.yml:25 .github/workflows/publish-clawhub.yml:61 .github/workflows/publish-skillhub.yml:24 .github/workflows/publish-skillhub.yml:25 .github/workflows/publish-skillhub.yml:75 .github/workflows/publish-sudohub.yml:24 .github/workflows/publish-sudohub.yml:55 .github/workflows/publish-sudohub.yml:56-63 scripts/check_api_key.js:15 scripts/check_api_key.js:32 scripts/check_api_key.js:35 scripts/check_api_key.js:48 scripts/check_api_key.js:53 scripts/comment_list.js:34 scripts/comment_list.js:46 scripts/comment_list.js:47 scripts/comment_list.js:80 scripts/comment_reply.js:23 scripts/comment_reply.js:26 scripts/comment_reply.js:50 scripts/comment_reply.js:76 scripts/comment_reply.js:77 scripts/comment_reply.js:94 scripts/comment_reply.js:105 scripts/comment_reply.js:106 scripts/comment_reply.js:111 scripts/comment_reply.js:115 scripts/comment_reply.js:126 scripts/comment_reply.js:127 scripts/comment_resolve.js:44 scripts/comment_resolve.js:80 scripts/comment_resolve.js:91 scripts/comment_resolve.js:92 scripts/comment_resolve.js:97 scripts/comment_resolve.js:102 scripts/comment_resolve.js:117 scripts/comment_resolve.js:123 scripts/comment_resolve.js:127 scripts/create_guest_key.js:11 scripts/create_guest_key.js:29 scripts/create_guest_key.js:33 scripts/create_guest_key.js:40 scripts/create_guest_key.js:52 scripts/delete_api_key.js:12 scripts/delete_api_key.js:41 scripts/delete_share.js:33 scripts/delete_share.js:57 scripts/delete_share.js:58 scripts/download_share.js:108
🌐 Network access (50)
.github/workflows/publish-skillhub.yml:45 .github/workflows/publish-skillhub.yml:61 .github/workflows/publish-sudohub.yml:59 scripts/proxy_support.test.cjs:42 scripts/proxy_support.test.cjs:42 scripts/proxy_support.test.cjs:59 scripts/proxy_support.test.cjs:61 scripts/proxy_support.test.cjs:67 scripts/proxy_support.test.cjs:69 scripts/proxy_support.test.cjs:74 scripts/proxy_support.test.cjs:76 scripts/proxy_support.test.cjs:82 scripts/proxy_support.test.cjs:84 scripts/proxy_support.test.cjs:85 scripts/proxy_support.test.cjs:20 scripts/proxy_support.test.cjs:26 scripts/proxy_support.test.cjs:32 scripts/proxy_support.test.cjs:36 scripts/proxy_support.test.cjs:42 scripts/proxy_support.test.cjs:46 scripts/proxy_support.test.cjs:59 scripts/proxy_support.test.cjs:67 scripts/proxy_support.test.cjs:74 scripts/proxy_support.test.cjs:76 scripts/proxy_support.test.cjs:82 scripts/proxy_support.test.cjs:49 scripts/proxy_support.test.cjs:59 scripts/proxy_support.test.cjs:67 scripts/proxy_support.test.cjs:74 scripts/proxy_support.test.cjs:82 scripts/shareone_client.js:247 scripts/shareone_client.js:257 scripts/shareone_client.js:187 scripts/shareone_client.js:8 scripts/shareone_client.js:129 scripts/shareone_client.js:133 scripts/shareone_client.js:123 scripts/shareone_client.js:142 scripts/shareone_client.js:143 scripts/update_share_settings.js:97 SKILL.md:57 SKILL.md:58 SKILL.md:59 SKILL.md:60 SKILL.md:61 SKILL.md:62 SKILL.md:63 SKILL.md:64 test/redirect_follow.test.js:54 test/redirect_follow.test.js:74
📁 Filesystem access (50)
.github/workflows/publish-skillhub.yml:46 .github/workflows/publish-skillhub.yml:47 .github/workflows/publish-sudohub.yml:55 scripts/download_share.js:148 scripts/download_share.js:157 scripts/download_share.js:133 scripts/download_share.js:138 scripts/download_share.js:148 scripts/download_share.js:157 scripts/proxy_support.test.cjs:10 scripts/proxy_support.test.cjs:11 scripts/proxy_support.test.cjs:10 scripts/proxy_support.test.cjs:11 scripts/proxy_support.test.cjs:8 scripts/proxy_support.test.cjs:8 scripts/publish.js:20 scripts/publish.js:74 scripts/publish.js:68 scripts/shareone_api_request.js:74 scripts/shareone_api_request.js:74 scripts/shareone_client.js:63 scripts/shareone_client.js:79 scripts/shareone_client.js:81 scripts/shareone_client.js:93 scripts/shareone_client.js:40 scripts/shareone_client.js:41 scripts/shareone_client.js:48 scripts/shareone_client.js:61 scripts/shareone_client.js:92 scripts/shareone_client.js:63 scripts/shareone_client.js:79 scripts/shareone_client.js:31 scripts/shareone_client.js:31 scripts/shareone_client.js:574 scripts/shareone_client.js:176 scripts/shareone_upload.js:39 scripts/shareone_upload.js:60 scripts/shareone_upload.js:105 scripts/shareone_upload.js:39 scripts/shareone_upload.js:60 scripts/upload_page.js:96 scripts/upload_page.js:107 scripts/upload_page.js:130 scripts/upload_page.js:161 scripts/upload_page.js:212 scripts/upload_page.js:95 scripts/upload_page.js:96 scripts/upload_page.js:107 scripts/upload_page.js:130 scripts/upload_page.js:161
🔑 Env variables (50)
scripts/check_api_key.js:24 scripts/check_api_key.js:24 scripts/check_api_key.js:16 scripts/check_api_key.js:24 scripts/comment_reply.js:85 scripts/comment_resolve.js:71 scripts/create_guest_key.js:23 scripts/create_guest_key.js:26 scripts/create_guest_key.js:28 scripts/create_guest_key.js:29 scripts/create_guest_key.js:38 scripts/create_guest_key.js:40 scripts/delete_api_key.js:13 scripts/delete_share.js:48 scripts/download_share.js:165 scripts/ensure_credentials.js:33 scripts/ensure_credentials.js:33 scripts/ensure_credentials.js:33 scripts/ensure_credentials.js:142 scripts/ensure_credentials.js:150 scripts/ensure_credentials.js:157 scripts/ensure_credentials.js:161 scripts/ensure_credentials.js:165 scripts/ensure_credentials.js:168 scripts/manage_collaborators.js:42 scripts/manage_collaborators.js:92 scripts/manage_collaborators.js:42 scripts/manage_collaborators.js:92 scripts/manage_collaborators.js:114 scripts/proxy_support.test.cjs:49 scripts/proxy_support.test.cjs:52 scripts/proxy_support.test.cjs:59 scripts/proxy_support.test.cjs:67 scripts/proxy_support.test.cjs:68 scripts/proxy_support.test.cjs:74 scripts/proxy_support.test.cjs:82 scripts/proxy_support.test.cjs:49 scripts/proxy_support.test.cjs:52 scripts/proxy_support.test.cjs:59 scripts/proxy_support.test.cjs:67 scripts/proxy_support.test.cjs:68 scripts/proxy_support.test.cjs:74 scripts/proxy_support.test.cjs:82 scripts/refresh_share.js:50 scripts/save_api_key.js:14 scripts/save_api_key.js:16 scripts/shareone_api_request.js:93 scripts/shareone_client.js:19 scripts/shareone_client.js:23 scripts/shareone_client.js:27
Contains scripts (4)

Detected Patterns

Pipe to shell pattern
Audited by: codex View Audit History →
Share & cite this report

Share the versioned assessment report, neutral badge, embed card, and citations. Skillstore reports evidence without deciding whether this Skill is safe.

Open versioned report
Security Assessment

Copy report link

https://skillstore.io/skills/sudoprivacy-shareone/audits/6?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_report

Markdown badge

[![Skillstore security assessment](https://skillstore.io/badges/skills/sudoprivacy-shareone/security.svg)](https://skillstore.io/skills/sudoprivacy-shareone?utm_source=security_passport_badge)

HTML badge

<a href="https://skillstore.io/skills/sudoprivacy-shareone?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/sudoprivacy-shareone/security.svg" alt="Skillstore security assessment" loading="lazy"></a>

Embed card

<iframe src="https://skillstore.io/embed/skills/sudoprivacy-shareone.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>
Academic citations (APA · BibTeX · CFF)

APA citation

sudoprivacy. (2026). shareone security audit report (audit version 6) [Author version 1.2.10]. Skillstore. https://skillstore.io/skills/sudoprivacy-shareone/audits/6

BibTeX citation

@techreport{sudoprivacy-sudoprivacy-shareone-2026, author = {sudoprivacy}, title = {shareone security audit report (audit version 6)}, institution = {Skillstore}, year = {2026}, number = {6}, url = {https://skillstore.io/skills/sudoprivacy-shareone/audits/6}, note = {Author version 1.2.10} }

CITATION.cff

cff-version: 1.2.0 message: "If you use this Skill, cite its author and this versioned security audit report." title: "shareone security audit report (audit version 6)" version: "1.2.10" type: report authors: - name: "sudoprivacy" date-released: "2026-08-17" url: "https://skillstore.io/skills/sudoprivacy-shareone/audits/6" identifiers: - type: other value: "skillstore:sudoprivacy-shareone:audit:6" description: "Skillstore immutable audit report identifier"

Skillstore Score

Why this score Evidence Confidence: Medium
45
Architecture
100
Maintainability
85
Content
69
Community
91
Spec Compliance

What You Can Build

Share a project page

Publish an HTML or Markdown project update with a stable link and optional access controls.

Distribute protected documents

Upload a report or presentation with a password, watermark, or custom link name.

Process review feedback

Read page comments, update the existing share, reply, and close completed feedback threads.

Try These Prompts

Publish a page
Publish [file path] to ShareOne and return the generated link.
Protect a document
Upload [document path] to ShareOne with password [password] and watermark [watermark].
Update link settings
Update [ShareOne link] to use slug [slug], enable comments, and preserve its content.
Complete a review cycle
Review unresolved comments on [ShareOne link], apply approved changes, update the same link, and reply to each thread.

Best Practices

  • Confirm the target share before destructive actions or content updates.
  • Use passwords and watermarks only when the user supplies the required values.
  • Keep API keys in managed secrets or restricted credential files.

Avoid

  • Do not publish sensitive content to a public link without explicit approval.
  • Do not pass credentials or authenticated requests to untrusted base URLs.
  • Do not create a new link when the user asked to update an existing share.

Frequently Asked Questions

Which file types can this skill publish?
It supports HTML, Markdown, text, PDF, Word, PowerPoint, and other binary files handled by the upload script.
Does publishing require an API key?
Yes. Owner publishing and management actions require a ShareOne API key or a supported managed credential proxy.
Can it protect a share?
Yes. It can set a password, watermark, custom slug, comments, and page data options.
Can it update an existing link?
It can update text page content and share settings while preserving the existing link.
Can it manage review comments?
Yes. It can list comments, reply, update page content, and set supported review states.
Does it send files outside my computer?
Yes. Publishing uploads content to ShareOne, and remote publishing asks the service to retrieve an approved source URL.
View all