T09 · Insecure Skill Coding Practices
- Location
memory-template.md:68- Finding
Persistent Memory Policy Permits Plaintext Secret Storage
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a coherent trend-monitoring helper that uses disclosed public web sources and local notes, with a small plaintext-secret storage wording issue users should avoid.
Install only if you want an agent to monitor public trend sources using your topic keywords and keep local monitoring state in ~/trending-now. Before enabling heartbeat mode, set clear topics, sources, active hours, timezone, and language scope. Do not allow the skill to store credentials or secrets in its Markdown memory files.
memory-template.md:68Persistent Memory Policy Permits Plaintext Secret Storage
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
Without scope, trend monitoring becomes noisy and low trust.
### 2. Use HEARTBEAT.md as the Operating Contract
Always maintain topic and output rules in `HEARTBEAT.md`.
Every cycle must follow one contract:
- actionable update -> send structured message
- no meaningful change -> return `HEARTBEAT_OK`
The template asks users to record 'when this skill should auto-activate' and 'when this skill should stay silent' but provides no specific trigger phrases, scope constraints, or negative examples. This can lead to overly broad or inconsistent activation criteria that may overlap with ordinary conversation and cause unintended invocation.
The natural-language field 'language_scope: english | multilingual' presents English-only operation as a built-in option without any instruction to obtain user preference or justify the restriction. This risks a language/locale policy violation because it can bias the skill toward a specific language by default.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
mkdir -p ~/trending-now
touch ~/trending-now/{memory.md,topics.md,runs.md,alerts.md}
chmod 700 ~/trending-now
chmod 600 ~/trending-now/{memory.md,topics.md,runs.md,alerts.md}
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
mkdir -p ~/trending-now touch ~/trending-now/{memory.md,topics.md,runs.md,alerts.md} chmod 700 ~/trending-now chmod 600 ~/trending-now/{memory.md,topics.md,runs.md,alerts.md}
5. If `memory.md` is empty, initialize it from `memory-template.md`.
The markdown sets Timezone | Europe/Madrid as a default operating locale, which is a natural-language locale constraint. The file does not indicate that this locale is optional, user-configurable, or justified as region-specific, so it may violate language/locale policy expectations.