T09 · Insecure Skill Coding Practices
- Location
scripts/shopify-blog-seo-admin.mjs:406- Finding
Approved update content is not bound to the reviewed report content
- Content
View full analysis
`- ${escapeHtml(change.area || "Change")}: ${escapeHtml(change.summary || change)}
`).join("") || "- No candidate changes were supplied.
"; const research = (plan.research || []).map((item) => `- ${escapeHtml(item.title || item.publisher || item.url || "Source")} — ${escapeHtml(item.supports || item.note || "")}
`).join("") || "- No research sources attached.
"; const findings = rows.map(([priority, area, problem, recommendation]) => `${priority}${escapeHtml(area)}${escapeHtml(problem)}${escapeHtml(recommendation)}`).join("") || `No deterministic blocking findings.`; ``` ```js if (command === "apply") { const plan = await readJson(args.input || "-"); if (!plan.articleId && !plan.article?.id) throw new Error("APPROVAL_PLAN_INVALID: articleId is required."); const article = {}; const updates = plan.updates || plan.candidate?.updates || {}; for (const key of ["body", "summary"]) if (updates[key] !== undefined) article[key] = key === "body" ? safeArticleHtml(updates[key]) : String(updates[key]); if (!Object.keys(article).length) throw new Error("APPROVAL_PLAN_INVALID: updates.body ...[truncated 2823 chars]- Remediation
View remediation
