Back to skill

Security audit

github-open-source-project-polish

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for open-source project setup, but it defaults to creating and pushing to a public GitHub repository without a clear final confirmation step.

Install only if you want the agent to prepare projects for public open-source release. Before allowing any GitHub action, require an explicit confirmation of the account, repository name, public visibility, branch/ref being pushed, and results of a full secret and history review; otherwise use it only for local documentation polishing.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:22
Finding
Unattended Public GitHub Publication May Expose Sensitive Repository Content and History<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:22`, `SKILL.md:102-110`, and `SKILL.md:124-128` **Vulnerability Type**: Unsafe default-public repository creation and push **Risk Level**: High ### Vulnerable Code Snippets At `SKILL.md:22`: ```markdown - Default to automated public GitHub publication for folders without a Git remote. Determine the target owner/name if not obvious, then create a public remote and push documentation-only changes after secrets checks pass. ``` At `SKILL.md:102-110`: ```markdown For Git repositories without a remote: 1. Infer the GitHub owner from `gh` authentication and the repo name from the folder when possible; ask only if ambiguous. 2. Check for `gh` authentication before creating a remote. 3. Create a public GitHub repository by default. 4. Add `origin`, set the default branch, and push after reviewing staged changes and confirming no secrets are included. Recommended GitHub CLI flow, adapted to the project: ```bash git status --short git remote -v gh auth status gh repo create OWNER/REPO --public --source=. --remote=origin --push ``` ``` At `SKILL.md:124-128`: ```markdown - Existing README is strong: preserve structure and patch missing sections rather than rewrite. - No verified install/test commands: include clearly marked placeholders or "not yet documented" notes instead of inventing commands. - License unknown: add MIT by default unless the user requests a different license. - Possible secrets or private data: stop remote creation/push and report the risky paths. - No `gh` CLI or not authenticated: provide exact commands for the user to run, but still complete local docs polish and prepare a documentation-only commit if safe. ``` ### Technical Analysis The Skill makes creation of a **public** GitHub repository and publication of local repository content the default behavior. It only requires asking the user when the repository owner or name is ambiguous; it does not require explicit approval ...[truncated 3334 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Require explicit publication approval** - Never create a public repository solely from an inferred default. - Immediately before creation, display the exact owner, repository name, visibility, source directory, branch, and refs intended for publication. - Require an affirmative user response specifically approving public visibility and the push. 2. **Default to private visibility** - Use a private repository unless the user explicitly requests public release. - Separate repository creation from any push so the user can review both decisions independently. 3. **Remove automatic `--push` behavior** - Create the remote without `--push`. - Add and verify the remote separately. - Push only an explicitly reviewed branch and refspec, rather than relying on broad CLI defaults. A safer conceptual sequence is: ```bash gh repo create OWNER/REPO --private git remote add origin EXPECTED_REMOTE_URL git remote get-url origin git push origin REVIEWED_BRANCH:REVIEWED_BRANCH ``` 4. **Review the complete publication scope** - List local branches, tags, tracked files, and commits that would become reachable. - Show the user the exact commit range and refspec before pushing. - Confirm that only the intended branch is pushed. - Do not claim that the push is documentation-only when existing repository history contains source files. 5. **Scan current content and Git history** - Run secret detection against tracked files and all reachable history. - Inspect deleted files and historical revisions for credentials and private information. - Treat discovered credentials as compromised: revoke or rotate them before publication. - Block publication when scanning cannot be completed or produces unresolved findings. 6. **Verify repository suitability for open-source release** - Require confirmation that the user owns or is authorized to publish all tracked content. - Check fo ...[truncated 432 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

High
Confidence
95% confidence
Finding
The skill explicitly defaults to creating a public GitHub remote and pushing changes for projects without an existing remote, but it does not require an explicit, user-facing confirmation immediately before publication. This creates a real risk of unintentionally exposing proprietary code, embedded secrets, internal documentation, or sensitive repository metadata through irreversible public release.

Missing User Warnings

High
Confidence
97% confidence
Finding
The recommended CLI flow uses `gh repo create ... --public --source=. --remote=origin --push`, which can immediately publish the current repository contents to a public GitHub repository. Even though the skill mentions secret checks elsewhere, the workflow lacks a mandatory explicit warning/confirmation gate tied to the actual publication command, making accidental public disclosure more likely.

Static analysis

No suspicious patterns detected.