Back to skill

Security audit

Morning Pages Facilitator

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward morning-writing prompt generator with no hidden access, persistence, or external side effects.

Safe to install for its stated use. Be aware that any focus, topic, or page/time text you provide may be echoed back in the generated Markdown, so do not feed it untrusted text and then treat the result as authoritative instructions.

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

Warning
Location
handler.py:74
Finding

Unescaped Caller Input Permits Markdown Template and Prompt Injection

Content
View full analysis
str: page_target = _pick_text(data, ['page_target', 'pages']) if page_target: return page_target if 'page' in page_target.lower() else f'{page_target} pages' time_target = _pick_text(data, ['time', 'minutes', 'duration']) if time_target: lower = time_target.lower() if 'minute' in lower or 'page' in lower: return time_target return f'{time_target} minutes' ``` ```python def handle(inputs): meta = _load_skill_meta('skill') data = _coerce_dict(inputs) raw = _normalize_inputs(inputs) focus = _pick_text(data, ['focus', 'theme', 'topic']) obstacle = _pick_text(data, ['obstacle', 'stuckness'], _detect_one(raw, OBSTACLE_RULES, 'Freeze on page one')) container = _extract_container(data, raw) writing_rule = 'Keep the pen or cursor moving, do not edit while writing, and write the next honest sentence even if it feels repetitive.' if obstacle == 'Self-editing': writing_rule = 'Write without polishing or crossing out, and let awkward sentences stay awkward until the session ends.' elif obstacle == 'Over-analysis': writing_rule = 'Stay with raw observation, not interpretation, until the timer or page target ends.' cues = _build_cues(obstacle, focus) gentle_focus = focus if focus else 'Whatever feels loudest in your mind this morning.' return f"""# Morning Pages Session ## Container - Time or page target: {container} - Writing rule: {writing_rule} - Gentle focus, if helpful: {gentle_focus} ## Starter Cues - {cues[0]} - {cues[1]} - {cues[2]} ## After Writing - One phrase that stood out: Circle or copy one line that surprised you. - One feel ...[truncated 2813 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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

Static analysis

No suspicious patterns detected.