Planning with files
Analysis
The skill’s planning-file workflow is mostly coherent, but it automatically reads local agent session histories and runs a helper script through broad, unpinned cache paths, which deserves careful review before installation.
Findings (3)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
command: "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"& (Get-ChildItem -Path (Join-Path ~ '.claude/plugins/cache') -Filter check-complete.ps1 -Recurse -EA 0 | Select-Object -First 1).FullName\" 2>/dev/null || sh \"$(ls $HOME/.claude/plugins/cache/*/*/*/scripts/check-complete.sh 2>/dev/null | head -1)\" 2>/dev/null || true"
The automatic Stop hook executes a PowerShell or shell script found by recursively searching the shared plugin cache, rather than executing this skill’s reviewed script by a fixed path. The PowerShell branch also uses ExecutionPolicy Bypass and references check-complete.ps1, which is not present in the provided manifest.
if [ -f task_plan.md ]; then echo '[planning-with-files] ACTIVE PLAN — current state:'; head -50 task_plan.md; ... echo '[planning-with-files] Read findings.md for research context. Continue from the current phase.'; fi
The skill intentionally injects project-local planning-file contents into the agent’s context and tells the agent to continue from that phase. This matches the planning purpose, but it makes those files influential instructions.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
return Path.home() / '.claude' / 'projects' / sanitized
...
sessions_dir = Path(os.path.expanduser(os.getenv('CODEX_SESSIONS_DIR', '~/.codex/sessions')))
...
sessions = sorted(sessions_dir.rglob('rollout-*.jsonl'), key=safe_stat_mtime, reverse=True)
...
with open(session_file, 'r', encoding='utf-8', errors='replace') as f:The recovery script locates Claude and Codex session-storage directories and reads JSONL session files. Those logs can contain prior conversation context, tool outputs, file paths, and other sensitive work history.
