{"id":"cmvinjkpm1iz7ad07z0nc3ary","slug":"writing-skills","publicId":"55b548d1-12f6-418c-8573-0c3c4af44477","name":"writing-skills","description":"Use when creating new skills, editing existing skills, or verifying skills work before deployment","version":"","author":"obra","license":"MIT","compatibility":"","status":"completed","overallGrade":"F","scannerVersion":11,"fileCount":10,"hasSkillMd":true,"hasScripts":false,"hasReferences":true,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/obra/superpowers/tree/main/skills/writing-skills","createdAt":"2026-10-21T21:56:38.169Z","completedAt":"2026-10-21T21:56:38.167Z","visibility":"public","publishedAt":"2026-08-20T18:35:07.716Z","category":"","frameworks":[],"badgeStatus":"flagged","downloadCount":0,"verdictRationale":{"summary":"Skill failed: 1 hard fail in security or structure checks.","verdict":"fail","scanners":[{"source":"vettd","weight":1,"verdict":"fail"},{"source":"cisco","weight":0.8,"verdict":"fail"}],"consensus":"fail","warnTriggers":["References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":["Shell execution without sandboxing"]},"verdictPolicyVersion":"consensus-v1","skillId":"cmt1v1mba7v4oad09ryur3tpj","findings":[{"id":"cmvinjkpm1izbad07akel32vi","source":"cisco","category":"security","label":"Node.js child_process module usage for shell command execution","detail":"render-graphs.js:18 — Pattern detected: from 'child_process'","severity":"critical","ruleId":"COMMAND_INJECTION_JS_CHILD_PROCESS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ea1aaa33eea9c6ec007169d1a7a163a4","filepath":"render-graphs.js"},{"id":"cmvinjkpm1iz8ad0720y5df45","source":"vettd","category":"security","label":"Shell execution without sandboxing","detail":"Detected in render-graphs.js:18 — `import { execFileSync } from 'child_process';`","severity":"critical","ruleId":"VTD-0018","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"b893e96e915f612d730dfcf5596959b5","filepath":"render-graphs.js"},{"id":"cmvinjkpm1iz9ad07c1pvykoh","source":"vettd","category":"security","label":"References external URL — review for indirect prompt injection risk","detail":"External URL(s) detected in SKILL.md — referenced content can change after audit","severity":"medium","ruleId":"VTD-0088","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42638a8b7e9fc5df27449992eaebc724","filepath":"SKILL.md"},{"id":"cmvinjkpm1izcad073be2c5vp","source":"cisco","category":"security","label":"Node.js filesystem access candidate for sensitive-flow correlation","detail":"render-graphs.js:121 — Pattern detected: fs.readFileSync(","severity":"low","ruleId":"DATA_EXFIL_JS_FS_ACCESS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"9bb35d6c88335fff6f1ba65e277390b2","filepath":"render-graphs.js"},{"id":"cmvinjkpm1izdad07ct31yfng","source":"cisco","category":"security","label":"Node.js filesystem access candidate for sensitive-flow correlation","detail":"render-graphs.js:142 — Pattern detected: fs.writeFileSync(","severity":"low","ruleId":"DATA_EXFIL_JS_FS_ACCESS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"9bb35d6c88335fff6f1ba65e277390b2","filepath":"render-graphs.js"},{"id":"cmvinjkpm1izead071v1zo4li","source":"cisco","category":"security","label":"Node.js filesystem access candidate for sensitive-flow correlation","detail":"render-graphs.js:147 — Pattern detected: fs.writeFileSync(","severity":"low","ruleId":"DATA_EXFIL_JS_FS_ACCESS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"9bb35d6c88335fff6f1ba65e277390b2","filepath":"render-graphs.js"},{"id":"cmvinjkpm1izfad07ipywgpl7","source":"cisco","category":"security","label":"Node.js filesystem access candidate for sensitive-flow correlation","detail":"render-graphs.js:158 — Pattern detected: fs.writeFileSync(","severity":"low","ruleId":"DATA_EXFIL_JS_FS_ACCESS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"9bb35d6c88335fff6f1ba65e277390b2","filepath":"render-graphs.js"},{"id":"cmvinjkpm1izaad070thoebp3","source":"cisco","category":"security","label":"Skill does not specify a license","detail":"SKILL.md — Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.","severity":"info","ruleId":"MANIFEST_MISSING_LICENSE","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"592f7ac7731768f0fd0bba83f30850f9","filepath":"SKILL.md"}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"F","findingCount":6,"criticalCount":1,"highCount":1},{"source":"vettd","status":"success","verdict":null,"grade":"F","findingCount":2,"criticalCount":1,"highCount":1}],"user":{"name":"Justin Pacella","image":"https://avatars.githubusercontent.com/u/97124458?v=4"},"repository":{"owner":"obra","name":"superpowers"},"freshness":{"status":"verified_unchanged","reason":null,"retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-21T21:56:38.491Z","lastVerifiedAt":"2026-10-21T21:56:38.491Z","lastChangeDetectedAt":"2026-10-21T21:53:03.505Z","scannedHash":"660ede63b84ce5d07ef28cccc2973165e2ca06e2","latestUpstreamHash":"660ede63b84ce5d07ef28cccc2973165e2ca06e2","nextCheckDueAt":"2026-10-22T22:22:45.463Z"},"signalCategories":[{"category":"safety","label":"Safety","form":"graded","verdict":null,"rows":[]},{"category":"reliability","label":"Reliability & Quality","form":"graded","verdict":null,"rows":[]},{"category":"performance","label":"Performance","form":"measured","verdict":{"form":"measured","magnitudes":[{"ruleId":"performance/static-context-tokens","label":"Static context tokens","value":3654,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body"}]},"rows":[{"origin":"signal","id":"cmvinjkst1izmad07mitve4kj","subjectType":"skill_audit","subjectId":"cmvinjkpm1iz7ad07z0nc3ary","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/static-context-tokens","severity":null,"label":"Static context tokens","detail":null,"valueNum":3654,"valueText":null,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body","derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-21T21:56:37.000Z","payload":null},{"origin":"signal","id":"cmvinjkw11j0gad07rw61oo0e","subjectType":"skill_audit","subjectId":"cmvinjkpm1iz7ad07z0nc3ary","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/progressive-disclosure","severity":null,"label":"Progressive disclosure","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-21T21:56:37.000Z","payload":null}]},{"category":"cost","label":"Cost","form":"measured","verdict":null,"rows":[]},{"category":"compatibility","label":"Compatibility","form":"unjudged","verdict":{"form":"unjudged"},"rows":[{"origin":"signal","id":"cmvinjkt01izoad07jxnrjl1l","subjectType":"skill_audit","subjectId":"cmvinjkpm1iz7ad07z0nc3ary","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-environment-assumptions","severity":null,"label":"Declared environment assumptions","detail":null,"valueNum":null,"valueText":"","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-21T21:56:37.000Z","payload":null},{"origin":"signal","id":"cmvinjku51j00ad07tn5bzh8z","subjectType":"skill_audit","subjectId":"cmvinjkpm1iz7ad07z0nc3ary","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-name","severity":null,"label":"Declared skill name","detail":null,"valueNum":null,"valueText":"writing-skills","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-21T21:56:37.000Z","payload":null}]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":30,"publisherSupplied":["name","description","author","version","license"]}