Versioned security assessment

Report ID: SA-64CA8AF0

7/8/2026, 12:44:31 PM

doc-sync-tool security assessment v5

Skill Security Certification Report

Audit History
Audit model: codex Latest published report
Skill name
doc-sync-tool
Version
v5
Maintainer
ZhanlinCui
Coverage
13 Files scanned · 1,747 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

High

2 confirmed security findings require attention.

Installation context

Check the current Skill page

This page summarizes report evidence only. The Skill page provides the canonical install advisory.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static alerts are false positives from Markdown examples, JavaScript template literals, ANSI color codes, and hardcoded helper commands. Confirmed risks involve local file writes, watch-triggered synchronization, predictable test temporary paths, and unreviewed propagation of AI agent instruction files. No prompt injection attempt, network access, or credential exfiltration was found in the reviewed files.

Report position

Latest published report

Latest refers to the report sequence, not to artifact currentness.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

13 Files scanned · 1,747 Lines analyzed

10 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Commit and path bound

  2. Artifact

    Content and tree hashes bound

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Not recorded by this audit

Filesystem access

May read or write local files.

Observed in 27 evidence locations

Env variables

May read values from the process environment.

Not recorded by this audit

External commands

May invoke commands or programs outside the Skill.

Observed in 69 evidence locations

Capability review items (8)
Medium
Node.js fs operations
fs.renameSync(file, newPath);
fs.renameSync renames every discovered Agents.md file under the current tree and can overwrite AGENTS.md without a prompt. This is an intended helper, but it creates real data-integrity risk.
Medium
Node.js fs operations
fs.renameSync(file, newPath);
fs.renameSync renames every discovered Gemini.md file under the current tree and can overwrite GEMINI.md without a prompt. This is an intended helper, but it creates real data-integrity risk.
Medium
Node.js fs operations
fs.writeFileSync(targetFilePath, content, 'utf8');
writeFileSync overwrites an existing target agent file when content differs from the selected newest source. There is no diff, backup, or confirmation gate.
Medium
Node.js fs operations
fs.writeFileSync(targetFilePath, content, 'utf8');
writeFileSync creates missing agent instruction files from the selected source content. This modifies the repository automatically and can propagate unwanted instructions.
Medium
Synchronous file operations
fs.writeFileSync(targetFilePath, content, 'utf8');
The synchronous write overwrites an existing target agent file without review. The risk is the write behavior, not the synchronous API choice.
Medium
Synchronous file operations
fs.writeFileSync(targetFilePath, content, 'utf8');
The synchronous write creates target agent files automatically without approval. This can spread incorrect or malicious instruction content.
Medium
Temp directory access
TEST_DIR="/tmp/doc-sync-test-$(date +%s)"
The test script uses a predictable /tmp path based on the current timestamp and later removes it recursively. This is test-only, but predictable temp paths are unsafe on shared systems.
Medium
File system watching
const watcher = fs.watch(dir, { recursive: true }, (eventType, filename) => {
fs.watch monitors the project tree and triggers synchronization on matching file changes. Persistent automatic sync increases the chance of unreviewed overwrites.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (2)

RISK-001 High
Unreviewed Agent Instruction Overwrite
The sync logic selects the newest AGENTS.md, CLAUDE.md, or GEMINI.md file and writes its content to companion files without a diff, backup, or confirmation. This can propagate malicious or mistaken agent instructions across tools.
The code explicitly sorts by modification time and writes source content into other agent files. Watch mode automatically triggers the same sync path after file changes.
RISK-002 Medium
Broad Recursive Project Modification Scope
The tool scans from the current working directory or a wrapper-selected target directory, then recursively processes matching files. Running it from a broad parent directory can modify many projects unexpectedly.
CONFIG.scanPath is process.cwd(), scanDirectory recurses through child directories, and run-sync.sh changes into a caller-provided target before running sync.js.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    Unreviewed overwrites of agent instruction files
    Add dry-run mode, diff output, explicit confirmation, and automatic backups before writeFileSync updates target files.
  2. FIX-002
    Medium
    Broad recursive scan and watch scope
    Require an explicit project root, reject home or filesystem-root targets, and print the exact scope before syncing.
  3. FIX-003
    Medium
    Rename helpers can modify many files recursively
    Add collision checks, dry-run output, and backups, or remove the rename helpers from the published skill.
  4. FIX-004
    Medium
    Predictable temporary test directory
    Use mktemp or fs.mkdtemp for test directories and clean up only paths created by the test process.
  5. FIX-005
    Low
    Documentation and implementation use inconsistent filename casing
    Update documentation and tests to match uppercase target filenames, or explicitly support both casing styles.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
64ca8af0f54a325752f08bd54e52151061ea659a
Content hash
fb5be90b49c216aa6718a455f6462f71e19f2d300cb541c52fb52f9d436d140e
Tree hash
dff97cc728f161b1187a6231d18977bb7fc66c0522e2f269fddfaffe57c70320
Skill path
skills/zhanlincui/doc-sync-tool
Audit payload hash
0d9bbd523d07b5394b0848b56bee9a6d

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable