T09 · Insecure Skill Coding Practices
- Location
index.js:20- Finding
WordPress Application Password Stored in Plaintext Shared-Workspace JSON
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This SEO skill is mostly purpose-aligned, but it asks users to store reusable WordPress publishing credentials in local shared project state and relies on network-capable dependencies without enough safety constraints.
Install only if you are comfortable giving this skill WordPress draft-publishing authority. Use a dedicated low-privilege WordPress account, prefer HTTPS-only sites, avoid administrator credentials, rotate or revoke the application password after use, and review any external dependencies or Rank Math plugin before connecting production sites.
index.js:20WordPress Application Password Stored in Plaintext Shared-Workspace JSON
index.js:191WordPress Basic Authentication Lacks Mandatory TLS and Destination Validation
skill.json:33Privileged External Skills and WordPress Plugin Are Not Version-Pinned
The natural-language content of the skill is consistently Italian, including operational and safety instructions, but the file does not offer users an explicit language/locale choice. Under the policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale restriction is clearly justified.
The skill tells the user that no secondary storage is used, yet elsewhere instructs saving WordPress credentials and project strategy data under the shared workspace. That is a misleading security disclosure: users may provide secrets under false assumptions about persistence, increasing the chance of unintended credential exposure to other tools, agents, or users with access to the shared folder.
The stylistic rules prescribe specific writing conventions such as sentence-length mixing, active-voice ratio, and community-citation requirements as universal output constraints. In a general-purpose humanizer configuration, this can impose a language/locale-specific writing norm without offering user choice or documenting a justified regional scope.
The trigger list contains multiple generic phrases such as "Plan my strategy," "Draft an article," and "Generate schema" that are likely to match ordinary user requests unrelated to this specific skill. Overly broad activation can cause the skill to run in unintended contexts, exposing its file-system permissions and downstream dependencies more often than necessary and increasing the chance of unauthorized actions or data handling.
L05 states there is 'trasparenza totale sulle chiamate di rete', but the document later only names delegated analytics/search dependencies and does not transparently describe how the skill's own WordPress REST API interactions are performed despite claiming onboarding for WordPress credentials in L34. This is a documentation-to-intent mismatch because the text asserts complete disclosure of network behavior while leaving at least one material network interaction path underexplained.
The instruction 'Use the configured 'language' for all text generation' hard-codes output language behavior based on prior configuration. This can violate language/locale choice expectations unless the user explicitly opted into that locale, rather than the skill forcing it implicitly.
No suspicious patterns detected.