Most static command and network alerts are false positives from Markdown examples, placeholder URLs, or benign local validation code. Confirmed issues center on global symlink installation into hidden AI agent directories, missing skill-name path validation, and packaging behavior that may include unintended files.
Unsanitized Skill Name Can Escape Target Directory
The initializer combines the requested path and skill name before creating directories and files, but it does not validate the skill name. A name containing path separators or an absolute path could write the generated skill outside the intended output directory.
The code and documented shell workflow derive filesystem paths from user-controlled skill names without enforcing the stated hyphen-case rules. The resulting operations create directories and write files.
The skill frontmatter declares risk as safe while the workflow supports global installation through symlinks in hidden agent directories. That mismatch can understate the review needed before installing a community skill.
The safe label is explicit in frontmatter, and later sections instruct global symlink installation into per-user agent configuration paths. The behavior is intentional but security-sensitive.
The packaging script recursively writes every file found under the skill folder into an archive. It does not reject symlinks or filter unexpected files, which can leak outside file contents if a skill folder contains symlinked files.
Path.rglob combined with is_file can include symlinked files, and zipfile.write has no visible filter here. The risk depends on packaging a folder that already contains unsafe links or unrelated files.
Capability review items (20)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
- Always use absolute paths: `ln -sf /full/path/to/source ~/.copilot/skills/name`
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
- Always use absolute paths: `ln -sf /full/path/to/source ~/.copilot/skills/name`
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
- Always use absolute paths: `ln -sf /full/path/to/source ~/.copilot/skills/name`
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
Most static command and network alerts are false positives from Markdown examples, placeholder URLs, or benign local validation code. Confirmed issues center on global symlink installation into hidden AI agent directories, missing skill-name path validation, and packaging behavior that may include unintended files.
Unsanitized Skill Name Can Escape Target Directory
The initializer combines the requested path and skill name before creating directories and files, but it does not validate the skill name. A name containing path separators or an absolute path could write the generated skill outside the intended output directory.
The code and documented shell workflow derive filesystem paths from user-controlled skill names without enforcing the stated hyphen-case rules. The resulting operations create directories and write files.
The skill frontmatter declares risk as safe while the workflow supports global installation through symlinks in hidden agent directories. That mismatch can understate the review needed before installing a community skill.
The safe label is explicit in frontmatter, and later sections instruct global symlink installation into per-user agent configuration paths. The behavior is intentional but security-sensitive.
The packaging script recursively writes every file found under the skill folder into an archive. It does not reject symlinks or filter unexpected files, which can leak outside file contents if a skill folder contains symlinked files.
Path.rglob combined with is_file can include symlinked files, and zipfile.write has no visible filter here. The risk depends on packaging a folder that already contains unsafe links or unrelated files.
Capability review items (20)
These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
- Always use absolute paths: `ln -sf /full/path/to/source ~/.copilot/skills/name`
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
- Always use absolute paths: `ln -sf /full/path/to/source ~/.copilot/skills/name`
This global installation path writes a symlink into hidden AI tool skill directories under the user home directory. If run, it can replace an existing skill link and persist agent behavior across projects.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
- Always use absolute paths: `ln -sf /full/path/to/source ~/.copilot/skills/name`
This finding is part of the documented global installation flow that writes into hidden agent skill directories. The operation is user-directed, but it still modifies sensitive per-user agent configuration.
Static analysis reported many command, network, and filesystem patterns, but most command and network hits are markdown examples, license URLs, or template text. AI review found no evidence of malicious network exfiltration or prompt injection, but the shipped scripts and installation guidance can write files, create archives, and create global symlinks, so publication should include a filesystem warning.
The initializer combines a user-provided path and skill name, creates the resulting directory, writes SKILL.md, creates resource directories, writes placeholder files, and marks an example script executable. This is expected for a scaffolding tool, but it can modify arbitrary user-writable filesystem locations if arguments are careless or adversarial.
The script directly creates directories and writes files based on command-line arguments. The behavior is legitimate scaffolding, but the filesystem impact is real and not limited to a fixed safe directory.
Global Symlink Installation Guidance Can Overwrite Skill Links
The documentation recommends forced symlink creation into assistant home directories. This is a legitimate installation pattern, but ln -sf can replace existing symlinks and affects global assistant behavior.
The cited lines show forced symlink commands and verification of home-directory skill paths. The commands are presented as installation steps, so the risk is contextual rather than malicious.
The packager walks every file under the selected skill directory and writes it into a .skill archive after basic validation. This can accidentally include secrets or unrelated files if the source directory is not reviewed first.
The recursive archive creation is explicit and does not filter sensitive filenames. There is no upload path, so the concern is accidental disclosure through later sharing of the archive.
Static false positives ignored (3)
These static matches were dismissed by semantic review or matched schema-only tokens, so they are shown for transparency but do not drive the quality score.
Hardcoded URL findings occur in the license, clone examples, and references. No executable HTTP client, fetch call, or credential-bearing outbound request was found in the inspected files.
The evidence is limited to URLs in text and example clone commands. A targeted search found no requests, urllib, curl, wget, socket, fetch, or similar executable network client in the scripts.
Static Weak Cryptography Findings Are Text Matches
The weak-cryptography alerts appear to be triggered by ordinary words inside license text, documentation, validation messages, and template guidance. No cryptographic API use was found in the reviewed scripts.
The inspected code imports pathlib, zipfile, yaml, re, os, and sys, but not cryptographic libraries. The flagged lines are not cryptographic operations.
Markdown Command Examples Were Counted As Execution
Many external-command findings are shell examples or illustrative markdown blocks. They are not executed by the package scripts, although users should still review commands before running them.
The cited command text is contained in markdown documentation. The Python scripts do not call subprocess, os.system, eval, or exec.
Backticks in markdown files (README.md, SKILL.md) are for code formatting, not actual shell execution. Backticks in Python string literals are documentation examples.
Verified by reading code - no subprocess calls found, only markdown code blocks and string literals