{"id":"cmuxhphtu03kmad070ytogp7n","slug":"canvas","publicId":"bee776a5-606f-493e-b8d7-bbf10cb32b39","name":"canvas","description":"Fetch Canvas LMS courses and assignments via API token.","version":"1.0.0","author":"community","license":"MIT","compatibility":"","status":"completed","overallGrade":"C","scannerVersion":11,"fileCount":2,"hasSkillMd":true,"hasScripts":true,"hasReferences":false,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/productivity/canvas","createdAt":"2026-10-07T02:30:06.869Z","completedAt":"2026-10-07T02:30:06.866Z","visibility":"public","publishedAt":"2026-06-08T14:45:44.936Z","category":"","frameworks":[],"badgeStatus":"conditional","downloadCount":0,"verdictRationale":{"summary":"Skill has warnings: 1 warning in security or structure checks.","verdict":"warn","scanners":[{"source":"vettd","weight":1,"verdict":"warn"},{"source":"cisco","weight":0.8,"verdict":"warn"}],"consensus":"warn","warnTriggers":["References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":[]},"verdictPolicyVersion":"consensus-v1","skillId":"cmq5bpg7t00o6ad06ls1jzrxj","findings":[{"id":"cmuxhphtu03kpad073p0rlv5l","source":"cisco","category":"security","label":"Sensitive source reaches a network sink","detail":"scripts/canvas_api.py:51 — Correlated sensitive_environment → network behavior across scripts/canvas_api.py.","severity":"high","ruleId":"CORRELATED_SENSITIVE_NETWORK_FLOW","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"c274f2e3a25f8191cde16f19a5a2a285","filepath":"scripts/canvas_api.py"},{"id":"cmuxhphtu03kqad07jnknonty","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/canvas_api.py:51 — Pattern detected: requests.get(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"50025e44154261f636278edc61bd7a1d","filepath":"scripts/canvas_api.py"},{"id":"cmuxhphtu03knad0768dflzth","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":"cmuxhphtu03koad07uup3p6qo","source":"cisco","category":"security","label":"Undeclared network usage","detail":"SKILL.md — Skill code uses network libraries but doesn't declare network requirement","severity":"medium","ruleId":"TOOL_ABUSE_UNDECLARED_NETWORK","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"16553ad68e1e8ade5e1f2387f1770caa","filepath":"SKILL.md"}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"C","findingCount":3,"criticalCount":0,"highCount":1},{"source":"vettd","status":"success","verdict":null,"grade":"B","findingCount":1,"criticalCount":0,"highCount":0}],"user":{"name":"Justin Pacella","image":"https://avatars.githubusercontent.com/u/97124458?v=4"},"repository":{"owner":"NousResearch","name":"hermes-agent"},"freshness":{"status":"verified_unchanged","reason":null,"retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-21T06:22:13.599Z","lastVerifiedAt":"2026-10-21T06:22:13.599Z","lastChangeDetectedAt":"2026-08-25T11:24:23.461Z","scannedHash":"06588c262b7d1a135b9e792b14fb3d71ac2fbfac","latestUpstreamHash":"06588c262b7d1a135b9e792b14fb3d71ac2fbfac","nextCheckDueAt":"2026-10-22T08:25:40.419Z"},"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":752,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body"}]},"rows":[{"origin":"signal","id":"cmuxhpifl03oiad07kpzikc6l","subjectType":"skill_audit","subjectId":"cmuxhphtu03kmad070ytogp7n","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/static-context-tokens","severity":null,"label":"Static context tokens","detail":null,"valueNum":752,"valueText":null,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body","derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:30:04.000Z","payload":null},{"origin":"signal","id":"cmuxhpju203y5ad073hg9ae6g","subjectType":"skill_audit","subjectId":"cmuxhphtu03kmad070ytogp7n","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-07T02:30:04.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":"cmuxhpiis03phad072lp0gv9p","subjectType":"skill_audit","subjectId":"cmuxhphtu03kmad070ytogp7n","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-07T02:30:04.000Z","payload":null},{"origin":"signal","id":"cmuxhpj8403u6ad07e524437a","subjectType":"skill_audit","subjectId":"cmuxhphtu03kmad070ytogp7n","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-name","severity":null,"label":"Declared skill name","detail":null,"valueNum":null,"valueText":"canvas","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:30:04.000Z","payload":null},{"origin":"signal","id":"cmuxhpjwo03ypad07zqn84hvw","subjectType":"skill_audit","subjectId":"cmuxhphtu03kmad070ytogp7n","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/cli-help","severity":null,"label":"CLI help","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:30:04.000Z","payload":null},{"origin":"signal","id":"cmuxhpjz703z1ad070nb8j6sr","subjectType":"skill_audit","subjectId":"cmuxhphtu03kmad070ytogp7n","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/structured-output","severity":null,"label":"Structured output","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:30:04.000Z","payload":null}]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":29,"publisherSupplied":["name","description","author","version","license"]}