{"data":{"skill":{"slug":"sickn33-angular-best-practices","name":"angular-best-practices","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/angular-best-practices","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"0a0115dd-8f6e-4475-ac09-929d09b963be","skill_id":"0b7518bc-7c49-46de-a9af-34bf80a024c4","version":5,"content_hash":"v3:ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006:61b76f8df919177aa06d431c664f7170565d9f6da802a33331bb71667287f0a3:1e692691f688c65fea8bc7c41af8420127c229da6f844cf614b0da9f7fd07f75:736b696c6c732f7369636b6e33332f616e67756c61722d626573742d707261637469636573:b34dfebafb11c622030f5b0170b5e1cb","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 77 static findings are false positives from documentation links, Angular examples, Markdown fences, and TypeScript template literals. The skill contains guidance, not executable automation. No prompt injection, credential handling, data exfiltration, or unsafe network target was found.","remediation":[],"risk_factor_evidence":[{"factor":"network","evidence":[{"file":"metadata.json","line_end":7,"line_start":7},{"file":"metadata.json","line_end":8,"line_start":8},{"file":"metadata.json","line_end":9,"line_start":9},{"file":"metadata.json","line_end":10,"line_start":10},{"file":"metadata.json","line_end":11,"line_start":11},{"file":"SKILL.md","line_end":156,"line_start":156},{"file":"SKILL.md","line_end":361,"line_start":361},{"file":"SKILL.md","line_end":556,"line_start":556},{"file":"SKILL.md","line_end":557,"line_start":557},{"file":"SKILL.md","line_end":558,"line_start":558},{"file":"SKILL.md","line_end":559,"line_start":559}]},{"factor":"scripts","evidence":[{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":178,"line_start":178},{"file":"SKILL.md","line_end":221,"line_start":221}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":48,"line_start":44},{"file":"SKILL.md","line_end":56,"line_start":48},{"file":"SKILL.md","line_end":61,"line_start":56},{"file":"SKILL.md","line_end":65,"line_start":61},{"file":"SKILL.md","line_end":68,"line_start":65},{"file":"SKILL.md","line_end":80,"line_start":71},{"file":"SKILL.md","line_end":89,"line_start":83},{"file":"SKILL.md","line_end":93,"line_start":89},{"file":"SKILL.md","line_end":98,"line_start":93},{"file":"SKILL.md","line_end":113,"line_start":98},{"file":"SKILL.md","line_end":140,"line_start":113},{"file":"SKILL.md","line_end":144,"line_start":140},{"file":"SKILL.md","line_end":159,"line_start":144},{"file":"SKILL.md","line_end":167,"line_start":159},{"file":"SKILL.md","line_end":189,"line_start":167},{"file":"SKILL.md","line_end":193,"line_start":189},{"file":"SKILL.md","line_end":203,"line_start":193},{"file":"SKILL.md","line_end":207,"line_start":203},{"file":"SKILL.md","line_end":214,"line_start":207},{"file":"SKILL.md","line_end":218,"line_start":214},{"file":"SKILL.md","line_end":227,"line_start":218},{"file":"SKILL.md","line_end":235,"line_start":227},{"file":"SKILL.md","line_end":245,"line_start":235},{"file":"SKILL.md","line_end":249,"line_start":245},{"file":"SKILL.md","line_end":254,"line_start":249},{"file":"SKILL.md","line_end":262,"line_start":260},{"file":"SKILL.md","line_end":266,"line_start":262},{"file":"SKILL.md","line_end":280,"line_start":266},{"file":"SKILL.md","line_end":284,"line_start":280},{"file":"SKILL.md","line_end":304,"line_start":284},{"file":"SKILL.md","line_end":312,"line_start":304},{"file":"SKILL.md","line_end":324,"line_start":312},{"file":"SKILL.md","line_end":328,"line_start":324},{"file":"SKILL.md","line_end":339,"line_start":328},{"file":"SKILL.md","line_end":343,"line_start":339},{"file":"SKILL.md","line_end":361,"line_start":343},{"file":"SKILL.md","line_end":370,"line_start":361},{"file":"SKILL.md","line_end":378,"line_start":370},{"file":"SKILL.md","line_end":393,"line_start":378},{"file":"SKILL.md","line_end":397,"line_start":393},{"file":"SKILL.md","line_end":411,"line_start":397},{"file":"SKILL.md","line_end":419,"line_start":411},{"file":"SKILL.md","line_end":422,"line_start":419},{"file":"SKILL.md","line_end":432,"line_start":422},{"file":"SKILL.md","line_end":439,"line_start":432},{"file":"SKILL.md","line_end":443,"line_start":439},{"file":"SKILL.md","line_end":460,"line_start":443},{"file":"SKILL.md","line_end":468,"line_start":460},{"file":"SKILL.md","line_end":494,"line_start":468},{"file":"SKILL.md","line_end":498,"line_start":494}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":3,"total_lines":637,"audit_model":"codex","audited_at":"2026-07-23T19:16:54.547+00:00","created_at":"2026-07-26T01:18:32.538886+00:00","static_findings":[{"id":"network:metadata.json:7:hardcoded-url","file":"metadata.json","pattern":"Hardcoded URL","snippet":"\"https://angular.dev/best-practices\",","category":"network","line_end":7,"severity":"low","line_start":7},{"id":"network:metadata.json:8:hardcoded-url","file":"metadata.json","pattern":"Hardcoded URL","snippet":"\"https://angular.dev/guide/performance\",","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"network:metadata.json:9:hardcoded-url","file":"metadata.json","pattern":"Hardcoded URL","snippet":"\"https://angular.dev/guide/zoneless\",","category":"network","line_end":9,"severity":"low","line_start":9},{"id":"network:metadata.json:10:hardcoded-url","file":"metadata.json","pattern":"Hardcoded URL","snippet":"\"https://angular.dev/guide/ssr\",","category":"network","line_end":10,"severity":"low","line_start":10},{"id":"network:metadata.json:11:hardcoded-url","file":"metadata.json","pattern":"Hardcoded URL","snippet":"\"https://web.dev/performance\"","category":"network","line_end":11,"severity":"low","line_start":11},{"id":"scripts:SKILL.md:173:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"import(\"./admin/admin.routes\").then((m) => m.ADMIN_ROUTES),","category":"scripts","line_end":173,"severity":"medium","line_start":173},{"id":"scripts:SKILL.md:178:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"import(\"./dashboard/dashboard.component\").then(","category":"scripts","line_end":178,"severity":"medium","line_start":178},{"id":"scripts:SKILL.md:221:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"const { Chart } = await import('chart.js');","category":"scripts","line_end":221,"severity":"medium","line_start":221},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":48,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"template: `<div>{{ count() }}</div>`,","category":"external_commands","line_end":56,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"template: `<div>{{ count }}</div>`, // Checked every cycle","category":"external_commands","line_end":61,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":65,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":68,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`,","category":"external_commands","line_end":80,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`,","category":"external_commands","line_end":89,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":93,"severity":"medium","line_start":89},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":98,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":113,"severity":"medium","line_start":98},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":140,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":144,"severity":"medium","line_start":140},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":159,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:159:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":167,"severity":"medium","line_start":159},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":189,"severity":"medium","line_start":167},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":193,"severity":"medium","line_start":189},{"id":"external_commands:SKILL.md:193:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```html","category":"external_commands","line_end":203,"severity":"medium","line_start":193},{"id":"external_commands:SKILL.md:203:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":207,"severity":"medium","line_start":203},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":214,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:214:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":218,"severity":"medium","line_start":214},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":227,"severity":"medium","line_start":218},{"id":"external_commands:SKILL.md:227:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":235,"severity":"medium","line_start":227},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```html","category":"external_commands","line_end":245,"severity":"medium","line_start":235},{"id":"external_commands:SKILL.md:245:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":249,"severity":"medium","line_start":245},{"id":"external_commands:SKILL.md:249:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":254,"severity":"medium","line_start":249},{"id":"external_commands:SKILL.md:260:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`","category":"external_commands","line_end":262,"severity":"medium","line_start":260},{"id":"external_commands:SKILL.md:262:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":266,"severity":"medium","line_start":262},{"id":"external_commands:SKILL.md:266:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":280,"severity":"medium","line_start":266},{"id":"external_commands:SKILL.md:280:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":284,"severity":"medium","line_start":280},{"id":"external_commands:SKILL.md:284:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":304,"severity":"medium","line_start":284},{"id":"external_commands:SKILL.md:304:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":312,"severity":"medium","line_start":304},{"id":"external_commands:SKILL.md:312:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":324,"severity":"medium","line_start":312},{"id":"external_commands:SKILL.md:324:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":328,"severity":"medium","line_start":324},{"id":"external_commands:SKILL.md:328:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```html","category":"external_commands","line_end":339,"severity":"medium","line_start":328},{"id":"external_commands:SKILL.md:339:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":343,"severity":"medium","line_start":339},{"id":"external_commands:SKILL.md:343:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":361,"severity":"medium","line_start":343},{"id":"external_commands:SKILL.md:361:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"return this.http.get<Data>(`/api/${key}`).pipe(","category":"external_commands","line_end":370,"severity":"medium","line_start":361},{"id":"external_commands:SKILL.md:370:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":378,"severity":"medium","line_start":370},{"id":"external_commands:SKILL.md:378:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```html","category":"external_commands","line_end":393,"severity":"medium","line_start":378},{"id":"external_commands:SKILL.md:393:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":397,"severity":"medium","line_start":393},{"id":"external_commands:SKILL.md:397:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":411,"severity":"medium","line_start":397},{"id":"external_commands:SKILL.md:411:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":419,"severity":"medium","line_start":411},{"id":"external_commands:SKILL.md:419:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":422,"severity":"medium","line_start":419},{"id":"external_commands:SKILL.md:422:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"template: `<span>{{ userName() }}</span>`,","category":"external_commands","line_end":432,"severity":"medium","line_start":422},{"id":"external_commands:SKILL.md:432:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"template: `<span>{{ state().user.name }}</span>`,","category":"external_commands","line_end":439,"severity":"medium","line_start":432},{"id":"external_commands:SKILL.md:439:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":443,"severity":"medium","line_start":439},{"id":"external_commands:SKILL.md:443:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":460,"severity":"medium","line_start":443},{"id":"external_commands:SKILL.md:460:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":468,"severity":"medium","line_start":460},{"id":"external_commands:SKILL.md:468:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":494,"severity":"medium","line_start":468},{"id":"external_commands:SKILL.md:494:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":498,"severity":"medium","line_start":494},{"id":"external_commands:SKILL.md:498:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":501,"severity":"medium","line_start":498},{"id":"external_commands:SKILL.md:501:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"template: `<div>{{ data().name }}</div>`,","category":"external_commands","line_end":509,"severity":"medium","line_start":501},{"id":"external_commands:SKILL.md:509:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"template: `<div>{{ data?.name }}</div>`,","category":"external_commands","line_end":523,"severity":"medium","line_start":509},{"id":"external_commands:SKILL.md:523:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":531,"severity":"medium","line_start":523},{"id":"external_commands:SKILL.md:531:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [ ] `changeDetection: ChangeDetectionStrategy.OnPush`","category":"external_commands","line_end":532,"severity":"medium","line_start":531},{"id":"external_commands:SKILL.md:532:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [ ] `standalone: true`","category":"external_commands","line_end":533,"severity":"medium","line_start":532},{"id":"external_commands:SKILL.md:533:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [ ] Signals for state (`signal()`, `input()`, `output()`)","category":"external_commands","line_end":533,"severity":"medium","line_start":533},{"id":"external_commands:SKILL.md:534:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [ ] `inject()` for dependencies","category":"external_commands","line_end":535,"severity":"medium","line_start":534},{"id":"external_commands:SKILL.md:535:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [ ] `@for` with `track` expression","category":"external_commands","line_end":535,"severity":"medium","line_start":535},{"id":"network:SKILL.md:156:http-https-get","file":"SKILL.md","pattern":"HTTP/HTTPS get","snippet":"this.http.get(\"/api/profile\").subscribe();","category":"network","line_end":156,"severity":"low","line_start":156},{"id":"network:SKILL.md:361:http-https-get","file":"SKILL.md","pattern":"HTTP/HTTPS get","snippet":"return this.http.get<Data>(`/api/${key}`).pipe(","category":"network","line_end":361,"severity":"low","line_start":361},{"id":"network:SKILL.md:556:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Angular Performance Guide](https://angular.dev/best-practices/performance)","category":"network","line_end":556,"severity":"low","line_start":556},{"id":"network:SKILL.md:557:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Zoneless Angular](https://angular.dev/guide/experimental/zoneless)","category":"network","line_end":557,"severity":"low","line_start":557},{"id":"network:SKILL.md:558:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Angular SSR Guide](https://angular.dev/guide/ssr)","category":"network","line_end":558,"severity":"low","line_start":558},{"id":"network:SKILL.md:559:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Change Detection Deep Dive](https://angular.dev/guide/change-detection)","category":"network","line_end":559,"severity":"low","line_start":559},{"id":"blocker:SKILL.md:142:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"### Avoid Client-Side Waterfalls in SSR","category":"blocker","line_end":142,"severity":"low","line_start":142},{"id":"blocker:SKILL.md:205:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"### Avoid Barrel File Re-exports","category":"blocker","line_end":205,"severity":"low","line_start":205},{"id":"blocker:SKILL.md:335:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"<app-product-grid />","category":"blocker","line_end":335,"severity":"low","line_start":335},{"id":"blocker:SKILL.md:395:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"### Avoid Complex Template Expressions","category":"blocker","line_end":395,"severity":"low","line_start":395}],"finding_verdicts":[{"id":"network:metadata.json:7:hardcoded-url","reason":"This is an Angular or web.dev documentation reference in metadata, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:8:hardcoded-url","reason":"This is an Angular or web.dev documentation reference in metadata, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:9:hardcoded-url","reason":"This is an Angular or web.dev documentation reference in metadata, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:10:hardcoded-url","reason":"This is an Angular or web.dev documentation reference in metadata, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:11:hardcoded-url","reason":"This is an Angular or web.dev documentation reference in metadata, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"scripts:SKILL.md:173:dynamic-import-expression","reason":"This fixed module specifier demonstrates Angular code splitting; it does not load user-controlled code or execute during skill use.","verdict":"false_positive","confidence":0.99},{"id":"scripts:SKILL.md:178:dynamic-import-expression","reason":"This fixed module specifier demonstrates Angular code splitting; it does not load user-controlled code or execute during skill use.","verdict":"false_positive","confidence":0.99},{"id":"scripts:SKILL.md:221:dynamic-import-expression","reason":"This fixed module specifier demonstrates Angular code splitting; it does not load user-controlled code or execute during skill use.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:159:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:193:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:203:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:214:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:227:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:245:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:249:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:260:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:262:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:266:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:280:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:284:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:304:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:312:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:324:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:328:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:339:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:343:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:361:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:370:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:378:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:393:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:397:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:411:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:419:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:422:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:432:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:439:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:443:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:460:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:468:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:494:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:498:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:501:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:509:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:523:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:531:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:532:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:533:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:534:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:535:ruby-shell-backtick-execution","reason":"The match is Markdown fencing, inline code, or a TypeScript template literal in an example; no Ruby, shell, or command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:156:http-https-get","reason":"This relative URL appears only in an illustrative Angular HttpClient example; the skill does not execute the request or contact an external host.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:361:http-https-get","reason":"This relative URL appears only in an illustrative Angular HttpClient example; the skill does not execute the request or contact an external host.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:556:hardcoded-url","reason":"This is a Markdown link to official Angular documentation, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:557:hardcoded-url","reason":"This is a Markdown link to official Angular documentation, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:558:hardcoded-url","reason":"This is a Markdown link to official Angular documentation, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:559:hardcoded-url","reason":"This is a Markdown link to official Angular documentation, not a network request or executable instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:142:system-reconnaissance","reason":"The matched text describes Angular performance guidance and contains no host, process, account, or environment reconnaissance instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:205:system-reconnaissance","reason":"The matched text describes Angular performance guidance and contains no host, process, account, or environment reconnaissance instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:335:system-reconnaissance","reason":"The matched text describes Angular performance guidance and contains no host, process, account, or environment reconnaissance instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:395:system-reconnaissance","reason":"The matched text describes Angular performance guidance and contains no host, process, account, or environment reconnaissance instruction.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","subject_content_hash":"61b76f8df919177aa06d431c664f7170565d9f6da802a33331bb71667287f0a3","subject_tree_hash":"1e692691f688c65fea8bc7c41af8420127c229da6f844cf614b0da9f7fd07f75","subject_plugin_path":"skills/sickn33/angular-best-practices","audit_payload_hash":"b34dfebafb11c622030f5b0170b5e1cb","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","contentHash":"61b76f8df919177aa06d431c664f7170565d9f6da802a33331bb71667287f0a3","treeHash":"1e692691f688c65fea8bc7c41af8420127c229da6f844cf614b0da9f7fd07f75","pluginPath":"skills/sickn33/angular-best-practices","auditPayloadHash":"b34dfebafb11c622030f5b0170b5e1cb"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/sickn33-angular-best-practices/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}