{"data":{"skill":{"slug":"sickn33-angular-state-management","name":"angular-state-management","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/angular-state-management","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"4c57be67-3e46-4a80-b2a7-e316433e1dfe","skill_id":"925580fa-9aff-4fdb-8432-165c15eab467","version":5,"content_hash":"v3:ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006:32ddc9343ed7e6416b2fb071a3267c590b820d00a03218bdaf797823d2032714:26ee07f078c6bf5ee707f0cda8a2a2269e68efb4583dcd97d2184a061b3f1e1b:736b696c6c732f7369636b6e33332f616e67756c61722d73746174652d6d616e6167656d656e74:da91967c429d173cd688f560ddb0fcfc","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 54 static findings are false positives caused by Markdown syntax, illustrative TypeScript, relative application endpoints, or official documentation links. No executable shell commands, system reconnaissance, prompt injection, data exfiltration, or malicious intent were 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":140,"line_start":140},{"file":"SKILL.md","line_end":511,"line_start":511},{"file":"SKILL.md","line_end":623,"line_start":623},{"file":"SKILL.md","line_end":632,"line_start":632},{"file":"SKILL.md","line_end":633,"line_start":633},{"file":"SKILL.md","line_end":634,"line_start":634},{"file":"SKILL.md","line_end":635,"line_start":635}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":50,"line_start":44},{"file":"SKILL.md","line_end":58,"line_start":50},{"file":"SKILL.md","line_end":87,"line_start":58},{"file":"SKILL.md","line_end":96,"line_start":91},{"file":"SKILL.md","line_end":100,"line_start":96},{"file":"SKILL.md","line_end":140,"line_start":100},{"file":"SKILL.md","line_end":158,"line_start":140},{"file":"SKILL.md","line_end":162,"line_start":158},{"file":"SKILL.md","line_end":227,"line_start":162},{"file":"SKILL.md","line_end":245,"line_start":236},{"file":"SKILL.md","line_end":253,"line_start":245},{"file":"SKILL.md","line_end":275,"line_start":253},{"file":"SKILL.md","line_end":279,"line_start":275},{"file":"SKILL.md","line_end":293,"line_start":279},{"file":"SKILL.md","line_end":295,"line_start":293},{"file":"SKILL.md","line_end":335,"line_start":295},{"file":"SKILL.md","line_end":337,"line_start":335},{"file":"SKILL.md","line_end":358,"line_start":337},{"file":"SKILL.md","line_end":360,"line_start":358},{"file":"SKILL.md","line_end":385,"line_start":360},{"file":"SKILL.md","line_end":389,"line_start":385},{"file":"SKILL.md","line_end":391,"line_start":389},{"file":"SKILL.md","line_end":410,"line_start":398},{"file":"SKILL.md","line_end":418,"line_start":410},{"file":"SKILL.md","line_end":472,"line_start":418},{"file":"SKILL.md","line_end":480,"line_start":472},{"file":"SKILL.md","line_end":534,"line_start":480},{"file":"SKILL.md","line_end":541,"line_start":534},{"file":"SKILL.md","line_end":552,"line_start":541},{"file":"SKILL.md","line_end":555,"line_start":552},{"file":"SKILL.md","line_end":561,"line_start":555},{"file":"SKILL.md","line_end":562,"line_start":561},{"file":"SKILL.md","line_end":562,"line_start":562},{"file":"SKILL.md","line_end":564,"line_start":564},{"file":"SKILL.md","line_end":595,"line_start":573},{"file":"SKILL.md","line_end":599,"line_start":595},{"file":"SKILL.md","line_end":623,"line_start":599},{"file":"SKILL.md","line_end":626,"line_start":623}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":3,"total_lines":697,"audit_model":"codex","audited_at":"2026-07-23T19:23:46.965+00:00","created_at":"2026-07-26T01:18:50.695151+00:00","static_findings":[{"id":"network:metadata.json:7:hardcoded-url","file":"metadata.json","pattern":"Hardcoded URL","snippet":"\"https://angular.dev/guide/signals\",","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://ngrx.io\",","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://ngrx.io/guide/signals\",","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://www.rx-angular.io\",","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://github.com/ngrx/platform\"","category":"network","line_end":11,"severity":"low","line_start":11},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- You need React state management → use `react-state-management`","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| **Local State**  | Component-specific, UI state | Signals, `signal()`   |","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":50,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":58,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":87,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`,","category":"external_commands","line_end":96,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":100,"severity":"medium","line_start":96},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":140,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"const user = await fetch(`/api/users/${id}`).then((r) => r.json());","category":"external_commands","line_end":158,"severity":"medium","line_start":140},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":162,"severity":"medium","line_start":158},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":227,"severity":"medium","line_start":162},{"id":"external_commands:SKILL.md:236:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`,","category":"external_commands","line_end":245,"severity":"medium","line_start":236},{"id":"external_commands:SKILL.md:245:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":253,"severity":"medium","line_start":245},{"id":"external_commands:SKILL.md:253:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":275,"severity":"medium","line_start":253},{"id":"external_commands:SKILL.md:275:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":279,"severity":"medium","line_start":275},{"id":"external_commands:SKILL.md:279:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":293,"severity":"medium","line_start":279},{"id":"external_commands:SKILL.md:293:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":295,"severity":"medium","line_start":293},{"id":"external_commands:SKILL.md:295:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":335,"severity":"medium","line_start":295},{"id":"external_commands:SKILL.md:335:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":337,"severity":"medium","line_start":335},{"id":"external_commands:SKILL.md:337:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":358,"severity":"medium","line_start":337},{"id":"external_commands:SKILL.md:358:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":360,"severity":"medium","line_start":358},{"id":"external_commands:SKILL.md:360:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":385,"severity":"medium","line_start":360},{"id":"external_commands:SKILL.md:385:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":389,"severity":"medium","line_start":385},{"id":"external_commands:SKILL.md:389:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":391,"severity":"medium","line_start":389},{"id":"external_commands:SKILL.md:398:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`,","category":"external_commands","line_end":410,"severity":"medium","line_start":398},{"id":"external_commands:SKILL.md:410:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":418,"severity":"medium","line_start":410},{"id":"external_commands:SKILL.md:418:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":472,"severity":"medium","line_start":418},{"id":"external_commands:SKILL.md:472:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":480,"severity":"medium","line_start":472},{"id":"external_commands:SKILL.md:480:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":534,"severity":"medium","line_start":480},{"id":"external_commands:SKILL.md:534:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"await firstValueFrom(this.http.delete(`/api/products/${id}`));","category":"external_commands","line_end":541,"severity":"medium","line_start":534},{"id":"external_commands:SKILL.md:541:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":552,"severity":"medium","line_start":541},{"id":"external_commands:SKILL.md:552:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Use `computed()` for derived data  | Auto-updates, memoized             |","category":"external_commands","line_end":555,"severity":"medium","line_start":552},{"id":"external_commands:SKILL.md:555:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Prefer `inject()` over constructor | Cleaner, works in factories        |","category":"external_commands","line_end":561,"severity":"medium","line_start":555},{"id":"external_commands:SKILL.md:561:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Store derived data                | Use `computed()`                                      |","category":"external_commands","line_end":562,"severity":"medium","line_start":561},{"id":"external_commands:SKILL.md:562:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Mutate signals directly           | Use `set()` or `update()`                             |","category":"external_commands","line_end":562,"severity":"medium","line_start":562},{"id":"external_commands:SKILL.md:564:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Mix RxJS and Signals chaotically  | Choose primary, bridge with `toSignal`/`toObservable` |","category":"external_commands","line_end":564,"severity":"medium","line_start":564},{"id":"external_commands:SKILL.md:573:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":595,"severity":"medium","line_start":573},{"id":"external_commands:SKILL.md:595:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":599,"severity":"medium","line_start":595},{"id":"external_commands:SKILL.md:599:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":623,"severity":"medium","line_start":599},{"id":"external_commands:SKILL.md:623:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"switchMap(filter => this.http.get(`/api/data?q=${filter}`))","category":"external_commands","line_end":626,"severity":"medium","line_start":623},{"id":"network:SKILL.md:140:fetch-api-call","file":"SKILL.md","pattern":"Fetch API call","snippet":"const user = await fetch(`/api/users/${id}`).then((r) => r.json());","category":"network","line_end":140,"severity":"low","line_start":140},{"id":"network:SKILL.md:511:http-https-get","file":"SKILL.md","pattern":"HTTP/HTTPS get","snippet":"this.http.get<Product[]>(\"/api/products\"),","category":"network","line_end":511,"severity":"low","line_start":511},{"id":"network:SKILL.md:623:http-https-get","file":"SKILL.md","pattern":"HTTP/HTTPS get","snippet":"switchMap(filter => this.http.get(`/api/data?q=${filter}`))","category":"network","line_end":623,"severity":"low","line_start":623},{"id":"network:SKILL.md:632:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Angular Signals Guide](https://angular.dev/guide/signals)","category":"network","line_end":632,"severity":"low","line_start":632},{"id":"network:SKILL.md:633:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [NgRx Documentation](https://ngrx.io/)","category":"network","line_end":633,"severity":"low","line_start":633},{"id":"network:SKILL.md:634:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [NgRx SignalStore](https://ngrx.io/guide/signals)","category":"network","line_end":634,"severity":"low","line_start":634},{"id":"network:SKILL.md:635:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [RxAngular](https://www.rx-angular.io/)","category":"network","line_end":635,"severity":"low","line_start":635},{"id":"blocker:SKILL.md:452:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"t.id === id ? { ...t, completed: !t.completed } : t,","category":"blocker","line_end":452,"severity":"low","line_start":452},{"id":"blocker:SKILL.md:530:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"data: s.data?.filter((p) => p.id !== id) ?? null,","category":"blocker","line_end":530,"severity":"low","line_start":530}],"finding_verdicts":[{"id":"network:metadata.json:7:hardcoded-url","reason":"The URL is an Angular documentation reference stored as metadata; no code sends a request or transmits data.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:8:hardcoded-url","reason":"The URL identifies the official NgRx documentation in a references array; it is not used by executable network logic.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:9:hardcoded-url","reason":"The URL is an official NgRx SignalStore reference in metadata, with no request or data transfer behavior.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:10:hardcoded-url","reason":"The RxAngular URL is a documentation reference only and is not consumed by executable code.","verdict":"false_positive","confidence":0.99},{"id":"network:metadata.json:11:hardcoded-url","reason":"The GitHub URL points to the public NgRx project and appears only as reference metadata.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The backticks format another skill name as inline Markdown and do not invoke Ruby, a shell, or any command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The backticks format the Angular signal() API in a Markdown table and have no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"This is the opening Markdown fence for a plain-text state selection guide, not a shell execution construct.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for a plain-text decision guide and does not execute commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The backticks open an illustrative TypeScript code block; they are Markdown syntax, not Ruby or shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The backtick closes an Angular component template literal inside a TypeScript example and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","reason":"This is a Markdown code-fence terminator for an Angular example, with no command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The backticks start a TypeScript documentation example and do not represent shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","reason":"The template literal builds a relative application API path inside illustrative TypeScript; it is not passed to a shell.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for the UserStore TypeScript example and cannot execute commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","reason":"The backticks open a TypeScript SignalStore example and are not executable shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:236:ruby-shell-backtick-execution","reason":"The backtick closes an Angular component template literal in documentation and does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:245:ruby-shell-backtick-execution","reason":"This is a Markdown code-fence terminator for a TypeScript example, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:253:ruby-shell-backtick-execution","reason":"The backticks open an NgRx TypeScript example and have no command execution behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:275:ruby-shell-backtick-execution","reason":"This is a Markdown fence closing an NgRx setup example, with no shell invocation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:279:ruby-shell-backtick-execution","reason":"The backticks begin an illustrative TypeScript action definition and are only Markdown formatting.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:293:ruby-shell-backtick-execution","reason":"This is a Markdown code-fence terminator and does not invoke an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:295:ruby-shell-backtick-execution","reason":"The backticks open an illustrative TypeScript reducer example and are not shell execution syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:335:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for a reducer example, with no external process behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:337:ruby-shell-backtick-execution","reason":"The backticks open a TypeScript selector example and do not execute any command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:358:ruby-shell-backtick-execution","reason":"This is a Markdown code-fence terminator for an NgRx selector example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:360:ruby-shell-backtick-execution","reason":"The backticks open a TypeScript effects example and have no shell or Ruby execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:385:ruby-shell-backtick-execution","reason":"This Markdown fence closes an NgRx effects example and cannot execute commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:389:ruby-shell-backtick-execution","reason":"The backticks open an illustrative TypeScript component example, not a command shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:398:ruby-shell-backtick-execution","reason":"The backtick closes an Angular HTML template literal within TypeScript documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:410:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for a component example and performs no command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:418:ruby-shell-backtick-execution","reason":"The backticks start a TypeScript ComponentStore example and are only Markdown formatting.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:472:ruby-shell-backtick-execution","reason":"This Markdown code fence closes the ComponentStore example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:480:ruby-shell-backtick-execution","reason":"The backticks open an illustrative TypeScript HTTP service example and do not launch a process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:534:ruby-shell-backtick-execution","reason":"The template literal builds a relative application delete endpoint in TypeScript and is never passed to a shell.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:541:ruby-shell-backtick-execution","reason":"This is a Markdown fence closing a TypeScript service example, not an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:552:ruby-shell-backtick-execution","reason":"The backticks format the computed() API name in a Markdown table and do not execute code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:555:ruby-shell-backtick-execution","reason":"The backticks format the inject() API name as inline Markdown, with no command invocation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:561:ruby-shell-backtick-execution","reason":"The backticks identify the computed() API in an anti-pattern table and are not executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:562:ruby-shell-backtick-execution","reason":"The backticks format Angular signal method names in prose and do not invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:564:ruby-shell-backtick-execution","reason":"The backticks format Angular interop API names in a Markdown table and cannot execute commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:573:ruby-shell-backtick-execution","reason":"The backticks open a TypeScript migration example and are Markdown code-fence syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:595:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for a migration example and does not execute commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:599:ruby-shell-backtick-execution","reason":"The backticks open a TypeScript Signals and RxJS interop example, not a command interpreter.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:623:ruby-shell-backtick-execution","reason":"The template literal creates a relative application query URL in TypeScript and is not used for shell execution.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:140:fetch-api-call","reason":"The fetch call is an illustrative Angular store example using a relative application endpoint; the skill itself does not perform the request.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:511:http-https-get","reason":"The HttpClient call demonstrates server-state loading from a relative application endpoint and does not contact an author-controlled host.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:623:http-https-get","reason":"The HttpClient call is documentation for filtered server state and targets only a relative application endpoint.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:632:hardcoded-url","reason":"The URL is a visible Markdown link to the official Angular Signals guide, not a hidden or automatic network request.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:633:hardcoded-url","reason":"The URL is a visible link to official NgRx documentation and does not transmit user data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:634:hardcoded-url","reason":"The URL is a visible official NgRx SignalStore reference, with no automatic request behavior.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:635:hardcoded-url","reason":"The URL is a visible RxAngular documentation reference and is not used for data transfer.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:452:system-reconnaissance","reason":"The line compares a todo identifier and toggles an in-memory completed flag; it does not inspect the host system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:530:system-reconnaissance","reason":"The line filters an in-memory product array by identifier and contains no system discovery or reconnaissance behavior.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","subject_content_hash":"32ddc9343ed7e6416b2fb071a3267c590b820d00a03218bdaf797823d2032714","subject_tree_hash":"26ee07f078c6bf5ee707f0cda8a2a2269e68efb4583dcd97d2184a061b3f1e1b","subject_plugin_path":"skills/sickn33/angular-state-management","audit_payload_hash":"da91967c429d173cd688f560ddb0fcfc","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","contentHash":"32ddc9343ed7e6416b2fb071a3267c590b820d00a03218bdaf797823d2032714","treeHash":"26ee07f078c6bf5ee707f0cda8a2a2269e68efb4583dcd97d2184a061b3f1e1b","pluginPath":"skills/sickn33/angular-state-management","auditPayloadHash":"da91967c429d173cd688f560ddb0fcfc"},"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-state-management/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}}