{"data":{"skill":{"slug":"sickn33-fp-ts-react","name":"fp-ts-react","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/fp-ts-react","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"a0e5d4a2-81b2-4003-99e1-d2059fe2ff1a","skill_id":"6fb38d91-58c9-4e79-ac75-e7f74f95fcb2","version":5,"content_hash":"v3:88a8e9a07f4c54ab105c1c41b6267c287146b07b:d7f6f66566963b05fc0546c4c4c1aae2060bbb8a6b8dee1fd4460fe925edccdb:4c0a68e8baa3f90285a760aa8056d7c1b721e505c1c5915080097657cbbb5742:736b696c6c732f7369636b6e33332f66702d74732d7265616374:14b0c0a7894683739c5bf497eab99191","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 85 static findings are false positives in Markdown documentation and TypeScript examples. Backticks format code or form template literals, while fetch calls use illustrative relative endpoints. No prompt injection, secret access, obfuscation, reconnaissance, or hidden command behavior was found.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":80,"line_start":40},{"file":"SKILL.md","line_end":84,"line_start":80},{"file":"SKILL.md","line_end":105,"line_start":84},{"file":"SKILL.md","line_end":111,"line_start":105},{"file":"SKILL.md","line_end":111,"line_start":111},{"file":"SKILL.md","line_end":135,"line_start":115},{"file":"SKILL.md","line_end":139,"line_start":135},{"file":"SKILL.md","line_end":217,"line_start":139},{"file":"SKILL.md","line_end":221,"line_start":217},{"file":"SKILL.md","line_end":238,"line_start":221},{"file":"SKILL.md","line_end":248,"line_start":238},{"file":"SKILL.md","line_end":259,"line_start":248},{"file":"SKILL.md","line_end":305,"line_start":259},{"file":"SKILL.md","line_end":309,"line_start":305},{"file":"SKILL.md","line_end":312,"line_start":309},{"file":"SKILL.md","line_end":314,"line_start":312},{"file":"SKILL.md","line_end":318,"line_start":314},{"file":"SKILL.md","line_end":322,"line_start":318},{"file":"SKILL.md","line_end":338,"line_start":322},{"file":"SKILL.md","line_end":344,"line_start":338},{"file":"SKILL.md","line_end":348,"line_start":344},{"file":"SKILL.md","line_end":377,"line_start":348},{"file":"SKILL.md","line_end":381,"line_start":377},{"file":"SKILL.md","line_end":401,"line_start":381},{"file":"SKILL.md","line_end":414,"line_start":401},{"file":"SKILL.md","line_end":418,"line_start":414},{"file":"SKILL.md","line_end":430,"line_start":418},{"file":"SKILL.md","line_end":436,"line_start":430},{"file":"SKILL.md","line_end":440,"line_start":436},{"file":"SKILL.md","line_end":450,"line_start":440},{"file":"SKILL.md","line_end":454,"line_start":450},{"file":"SKILL.md","line_end":469,"line_start":454},{"file":"SKILL.md","line_end":473,"line_start":469},{"file":"SKILL.md","line_end":475,"line_start":473},{"file":"SKILL.md","line_end":477,"line_start":475},{"file":"SKILL.md","line_end":493,"line_start":477},{"file":"SKILL.md","line_end":503,"line_start":493},{"file":"SKILL.md","line_end":533,"line_start":503},{"file":"SKILL.md","line_end":537,"line_start":533},{"file":"SKILL.md","line_end":554,"line_start":537},{"file":"SKILL.md","line_end":558,"line_start":554},{"file":"SKILL.md","line_end":579,"line_start":558},{"file":"SKILL.md","line_end":587,"line_start":579},{"file":"SKILL.md","line_end":606,"line_start":587}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":258,"line_start":258},{"file":"SKILL.md","line_end":401,"line_start":401},{"file":"SKILL.md","line_end":5,"line_start":5},{"file":"SKILL.md","line_end":793,"line_start":793},{"file":"SKILL.md","line_end":794,"line_start":794},{"file":"SKILL.md","line_end":795,"line_start":795},{"file":"SKILL.md","line_end":796,"line_start":796},{"file":"SKILL.md","line_end":797,"line_start":797}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":803,"audit_model":"codex","audited_at":"2026-07-23T22:33:46.941+00:00","created_at":"2026-07-26T12:23:03.117885+00:00","static_findings":[{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Option` | Value might be missing (user not loaded yet) |","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `Either` | Operation might fail (form validation) |","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `TaskEither` | Async operation might fail (API calls) |","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `RemoteData` | Need to show loading/error/success states |","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `pipe` | Chaining multiple transformations |","category":"external_commands","line_end":30,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `Option` instead of `null | undefined` for clearer intent.","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":80,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":84,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":105,"severity":"medium","line_start":84},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":111,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Either is perfect for validation: `Left` = errors, `Right` = valid data.","category":"external_commands","line_end":111,"severity":"medium","line_start":111},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":135,"severity":"medium","line_start":115},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":139,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":217,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:217:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":221,"severity":"medium","line_start":217},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":238,"severity":"medium","line_start":221},{"id":"external_commands:SKILL.md:238:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":248,"severity":"medium","line_start":238},{"id":"external_commands:SKILL.md:248:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":259,"severity":"medium","line_start":248},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"if (!res.ok) throw new Error(`HTTP ${res.status}`)","category":"external_commands","line_end":305,"severity":"medium","line_start":259},{"id":"external_commands:SKILL.md:305:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":309,"severity":"medium","line_start":305},{"id":"external_commands:SKILL.md:309:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":312,"severity":"medium","line_start":309},{"id":"external_commands:SKILL.md:312:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"fetchJson<User>(`/api/users/${userId}`),","category":"external_commands","line_end":314,"severity":"medium","line_start":312},{"id":"external_commands:SKILL.md:314:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"fetchJson<Post[]>(`/api/users/${userId}/posts`),","category":"external_commands","line_end":318,"severity":"medium","line_start":314},{"id":"external_commands:SKILL.md:318:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":322,"severity":"medium","line_start":318},{"id":"external_commands:SKILL.md:322:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":338,"severity":"medium","line_start":322},{"id":"external_commands:SKILL.md:338:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":344,"severity":"medium","line_start":338},{"id":"external_commands:SKILL.md:344:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Stop using `{ data, loading, error }` booleans. Use a proper state machine.","category":"external_commands","line_end":348,"severity":"medium","line_start":344},{"id":"external_commands:SKILL.md:348:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":377,"severity":"medium","line_start":348},{"id":"external_commands:SKILL.md:377:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":381,"severity":"medium","line_start":377},{"id":"external_commands:SKILL.md:381:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":401,"severity":"medium","line_start":381},{"id":"external_commands:SKILL.md:401:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"fetch(`/api/users/${userId}`).then(r => r.json())","category":"external_commands","line_end":414,"severity":"medium","line_start":401},{"id":"external_commands:SKILL.md:414:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":418,"severity":"medium","line_start":414},{"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":430,"severity":"medium","line_start":418},{"id":"external_commands:SKILL.md:430:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":436,"severity":"medium","line_start":430},{"id":"external_commands:SKILL.md:436:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"fp-ts values like `O.some(1)` create new objects each render. React sees them as \"changed\".","category":"external_commands","line_end":440,"severity":"medium","line_start":436},{"id":"external_commands:SKILL.md:440:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":450,"severity":"medium","line_start":440},{"id":"external_commands:SKILL.md:450:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":454,"severity":"medium","line_start":450},{"id":"external_commands:SKILL.md:454:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":469,"severity":"medium","line_start":454},{"id":"external_commands:SKILL.md:469:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":473,"severity":"medium","line_start":469},{"id":"external_commands:SKILL.md:473:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":475,"severity":"medium","line_start":473},{"id":"external_commands:SKILL.md:475:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":477,"severity":"medium","line_start":475},{"id":"external_commands:SKILL.md:477:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":493,"severity":"medium","line_start":477},{"id":"external_commands:SKILL.md:493:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":503,"severity":"medium","line_start":493},{"id":"external_commands:SKILL.md:503:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":533,"severity":"medium","line_start":503},{"id":"external_commands:SKILL.md:533:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":537,"severity":"medium","line_start":533},{"id":"external_commands:SKILL.md:537:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":554,"severity":"medium","line_start":537},{"id":"external_commands:SKILL.md:554:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":558,"severity":"medium","line_start":554},{"id":"external_commands:SKILL.md:558:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":579,"severity":"medium","line_start":558},{"id":"external_commands:SKILL.md:579:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":587,"severity":"medium","line_start":579},{"id":"external_commands:SKILL.md:587:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":606,"severity":"medium","line_start":587},{"id":"external_commands:SKILL.md:606:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":610,"severity":"medium","line_start":606},{"id":"external_commands:SKILL.md:610:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":662,"severity":"medium","line_start":610},{"id":"external_commands:SKILL.md:662:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":666,"severity":"medium","line_start":662},{"id":"external_commands:SKILL.md:666:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":695,"severity":"medium","line_start":666},{"id":"external_commands:SKILL.md:695:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":703,"severity":"medium","line_start":695},{"id":"external_commands:SKILL.md:703:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":725,"severity":"medium","line_start":703},{"id":"external_commands:SKILL.md:725:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":729,"severity":"medium","line_start":725},{"id":"external_commands:SKILL.md:729:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":737,"severity":"medium","line_start":729},{"id":"external_commands:SKILL.md:737:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":741,"severity":"medium","line_start":737},{"id":"external_commands:SKILL.md:741:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":759,"severity":"medium","line_start":741},{"id":"external_commands:SKILL.md:759:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":763,"severity":"medium","line_start":759},{"id":"external_commands:SKILL.md:763:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```typescript","category":"external_commands","line_end":773,"severity":"medium","line_start":763},{"id":"external_commands:SKILL.md:773:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":781,"severity":"medium","line_start":773},{"id":"external_commands:SKILL.md:781:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Value might not exist | `Option<T>` |","category":"external_commands","line_end":782,"severity":"medium","line_start":781},{"id":"external_commands:SKILL.md:782:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Operation might fail (sync) | `Either<E, A>` |","category":"external_commands","line_end":783,"severity":"medium","line_start":782},{"id":"external_commands:SKILL.md:783:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Async operation might fail | `TaskEither<E, A>` |","category":"external_commands","line_end":784,"severity":"medium","line_start":783},{"id":"external_commands:SKILL.md:784:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Need loading/error/success UI | `RemoteData<E, A>` |","category":"external_commands","line_end":785,"severity":"medium","line_start":784},{"id":"external_commands:SKILL.md:785:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Form with multiple validations | `Either` with validation applicative |","category":"external_commands","line_end":786,"severity":"medium","line_start":785},{"id":"external_commands:SKILL.md:786:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Dependency injection | Context + `ReaderTaskEither` |","category":"external_commands","line_end":787,"severity":"medium","line_start":786},{"id":"external_commands:SKILL.md:787:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Prevent re-renders with fp-ts | `useMemo` or `fp-ts-react-stable-hooks` |","category":"external_commands","line_end":787,"severity":"medium","line_start":787},{"id":"network:SKILL.md:258:fetch-api-call","file":"SKILL.md","pattern":"Fetch API call","snippet":"const res = await fetch(url)","category":"network","line_end":258,"severity":"low","line_start":258},{"id":"network:SKILL.md:401:fetch-api-call","file":"SKILL.md","pattern":"Fetch API call","snippet":"fetch(`/api/users/${userId}`).then(r => r.json())","category":"network","line_end":401,"severity":"low","line_start":401},{"id":"network:SKILL.md:5:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"source: \"https://github.com/whatiskadudoing/fp-ts-skills\"","category":"network","line_end":5,"severity":"low","line_start":5},{"id":"network:SKILL.md:793:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **[fp-ts](https://github.com/gcanti/fp-ts)** - Core library","category":"network","line_end":793,"severity":"low","line_start":793},{"id":"network:SKILL.md:794:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **[fp-ts-react-stable-hooks](https://github.com/mblink/fp-ts-react-stable-hooks)** - Stable hooks","category":"network","line_end":794,"severity":"low","line_start":794},{"id":"network:SKILL.md:795:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **[@devexperts/remote-data-ts](https://github.com/devexperts/remote-data-ts)** - RemoteData","category":"network","line_end":795,"severity":"low","line_start":795},{"id":"network:SKILL.md:796:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **[io-ts](https://github.com/gcanti/io-ts)** - Runtime type validation","category":"network","line_end":796,"severity":"low","line_start":796},{"id":"network:SKILL.md:797:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **[zod](https://github.com/colinhacks/zod)** - Schema validation (works great with fp-ts)","category":"network","line_end":797,"severity":"low","line_start":797},{"id":"sensitive:SKILL.md:231:certificate-key-files","file":"SKILL.md","pattern":"Certificate/key files","snippet":"return Object.keys(errors).length > 0","category":"sensitive","line_end":231,"severity":"high","line_start":231},{"id":"blocker:SKILL.md:111:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Either is perfect for validation: `Left` = errors, `Right` = valid data.","category":"blocker","line_end":111,"severity":"low","line_start":111},{"id":"blocker:SKILL.md:124:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":": E.left('Invalid email address')","category":"blocker","line_end":124,"severity":"low","line_start":124},{"id":"blocker:SKILL.md:182:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"submitToServer(valid)         // Submit valid data","category":"blocker","line_end":182,"severity":"low","line_start":182},{"id":"blocker:SKILL.md:427:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"// ✅ GOOD: Only valid states exist","category":"blocker","line_end":427,"severity":"low","line_start":427},{"id":"blocker:SKILL.md:515:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"track: (event: string, data?: object) => void","category":"blocker","line_end":516,"severity":"low","line_start":515},{"id":"obfuscation:SKILL.md:1:heuristic-multiple-bracket-chains-8-jsfuck-obfus","file":"SKILL.md","pattern":"[HEURISTIC] Multiple bracket chains (8) - JSFuck/obfuscation pattern","snippet":"())), ([]), ([])","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:217:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:238:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:248:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:305:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:309:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:312:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:314:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:318:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:322:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:338:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:344:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:348:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:377:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:381:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:401:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:414:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:418:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:430:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:436:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:440:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:450:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:454:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:469:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:473:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:475:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:477:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:493:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:503:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:533:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:537:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:554:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:558:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:579:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:587:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:606:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:610:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:662:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:666:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:695:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:703:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:725:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:729:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:737:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:741:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:759:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:763:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:773:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:781:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:782:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:783:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:784:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:785:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:786:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:787:ruby-shell-backtick-execution","reason":"The backticks are Markdown formatting, fenced sample delimiters, or TypeScript template literals. They do not invoke Ruby, a shell, or any command executor.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:258:fetch-api-call","reason":"This fetch appears only in a TypeScript teaching example and uses its caller-provided URL. The skill itself performs no request and transmits no secret.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:401:fetch-api-call","reason":"This fetch is illustrative React code targeting a relative application route. It does not contact a fixed external host or expose sensitive data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:5:hardcoded-url","reason":"The URL is source metadata pointing to the skill's public GitHub repository. It is not a runtime destination or an exfiltration endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:793:hardcoded-url","reason":"The URL is a Markdown reference to the public fp-ts GitHub repository. No automatic request or data transmission is instructed.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:794:hardcoded-url","reason":"The URL is a Markdown reference to the public stable-hooks GitHub repository. No automatic request or data transmission is instructed.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:795:hardcoded-url","reason":"The URL is a Markdown reference to the public RemoteData library repository. No automatic request or data transmission is instructed.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:796:hardcoded-url","reason":"The URL is a Markdown reference to the public io-ts GitHub repository. No automatic request or data transmission is instructed.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:797:hardcoded-url","reason":"The URL is a Markdown reference to the public Zod GitHub repository. No automatic request or data transmission is instructed.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:SKILL.md:231:certificate-key-files","reason":"Object.keys is the standard JavaScript property-enumeration API in a form-validation example. The line does not reference certificates, private keys, or filesystem data.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:111:system-reconnaissance","reason":"The text explains Either's Left and Right branches for form validation. It does not inspect the host, environment, accounts, or installed software.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:124:system-reconnaissance","reason":"The line returns an ordinary user-facing validation error for an invalid email. It performs no system discovery.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:182:system-reconnaissance","reason":"The line calls a placeholder application submission function with validated form data. It does not inspect or enumerate the system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:427:system-reconnaissance","reason":"This is a comment describing valid RemoteData states in a TypeScript example. It contains no reconnaissance command or host inspection.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:515:system-reconnaissance","reason":"The line declares the type of an injected analytics callback. It neither invokes analytics nor gathers system information.","verdict":"false_positive","confidence":0.99},{"id":"obfuscation:SKILL.md:1:heuristic-multiple-bracket-chains-8-jsfuck-obfus","reason":"Line 1 is only a YAML front-matter delimiter. The file contains readable Markdown and TypeScript examples, with no encoded payload, JSFuck expression, or dynamic evaluation.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","subject_content_hash":"d7f6f66566963b05fc0546c4c4c1aae2060bbb8a6b8dee1fd4460fe925edccdb","subject_tree_hash":"4c0a68e8baa3f90285a760aa8056d7c1b721e505c1c5915080097657cbbb5742","subject_plugin_path":"skills/sickn33/fp-ts-react","audit_payload_hash":"14b0c0a7894683739c5bf497eab99191","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","contentHash":"d7f6f66566963b05fc0546c4c4c1aae2060bbb8a6b8dee1fd4460fe925edccdb","treeHash":"4c0a68e8baa3f90285a760aa8056d7c1b721e505c1c5915080097657cbbb5742","pluginPath":"skills/sickn33/fp-ts-react","auditPayloadHash":"14b0c0a7894683739c5bf497eab99191"},"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-fp-ts-react/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}}