{"data":{"skill":{"slug":"iart-ai-micro-interaction","name":"micro-interaction","icon":"📦","repo":"https://github.com/iart-ai/web-animation-skills/tree/b6dba3eb759726845a44163ff0bad70dd9e7fbb6/skills/micro-interaction","status":"approved","author":"iart-ai","authorVersion":"0.1.0","skillstoreRevision":1,"license":null},"licenseCorrection":null,"audit":{"id":"5c9a3e2f-f964-4d80-a23e-47c547f9786e","skill_id":"365c75e3-36e3-4090-9159-4a36714b7fa0","version":1,"content_hash":"v3:c993c6abcbffafea2683d7748b53b3dfaf438415:f8ae0fc6137448bce51f689a13513a0a8742b1cbffa1b9f32ac723b46309e6e0:0e63c70fbf05e8ec33aef7432ee494db68054fbb5607a9abf130d8ddbe7502cb:736b696c6c732f696172742d61692f6d6963726f2d696e746572616374696f6e:5007dc03d9dc13ef6ccba7e147c9b47b","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 55 static findings are false positives involving documentation syntax, JavaScript template literals, animation guidance, or local screenshot verification. No evidence found of shell backtick execution, system reconnaissance, screenshot upload, credential theft, or prompt injection. Optional CDN imports and local Playwright usage support the documented demo workflow.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"references/framer-motion-recipes.md","line_end":94,"line_start":86},{"file":"references/framer-motion-recipes.md","line_end":101,"line_start":94},{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":42,"line_start":33},{"file":"SKILL.md","line_end":44,"line_start":42},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":64,"line_start":50},{"file":"SKILL.md","line_end":66,"line_start":64},{"file":"SKILL.md","line_end":70,"line_start":66},{"file":"SKILL.md","line_end":72,"line_start":70},{"file":"SKILL.md","line_end":74,"line_start":72},{"file":"SKILL.md","line_end":76,"line_start":74},{"file":"SKILL.md","line_end":78,"line_start":76},{"file":"SKILL.md","line_end":83,"line_start":78},{"file":"SKILL.md","line_end":85,"line_start":83},{"file":"SKILL.md","line_end":85,"line_start":85},{"file":"SKILL.md","line_end":91,"line_start":89},{"file":"SKILL.md","line_end":103,"line_start":91},{"file":"SKILL.md","line_end":105,"line_start":103},{"file":"SKILL.md","line_end":105,"line_start":105},{"file":"SKILL.md","line_end":116,"line_start":109},{"file":"SKILL.md","line_end":124,"line_start":116},{"file":"SKILL.md","line_end":124,"line_start":124},{"file":"SKILL.md","line_end":126,"line_start":126},{"file":"SKILL.md","line_end":129,"line_start":129},{"file":"SKILL.md","line_end":134,"line_start":132},{"file":"SKILL.md","line_end":138,"line_start":134},{"file":"SKILL.md","line_end":142,"line_start":138},{"file":"SKILL.md","line_end":144,"line_start":142},{"file":"SKILL.md","line_end":144,"line_start":144},{"file":"SKILL.md","line_end":148,"line_start":146},{"file":"SKILL.md","line_end":151,"line_start":148},{"file":"SKILL.md","line_end":152,"line_start":151},{"file":"SKILL.md","line_end":154,"line_start":152},{"file":"SKILL.md","line_end":161,"line_start":154},{"file":"SKILL.md","line_end":162,"line_start":161},{"file":"SKILL.md","line_end":162,"line_start":162},{"file":"SKILL.md","line_end":164,"line_start":163},{"file":"SKILL.md","line_end":165,"line_start":164},{"file":"SKILL.md","line_end":166,"line_start":165},{"file":"SKILL.md","line_end":167,"line_start":166},{"file":"SKILL.md","line_end":168,"line_start":167},{"file":"SKILL.md","line_end":172,"line_start":168},{"file":"SKILL.md","line_end":172,"line_start":172},{"file":"SKILL.md","line_end":173,"line_start":173}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":4,"total_lines":506,"audit_model":"codex","audited_at":"2026-11-06T15:33:15.777+00:00","created_at":"2026-11-09T15:35:10.360915+00:00","static_findings":[{"id":"blocker:references/css-recipes.md:69:system-reconnaissance","file":"references/css-recipes.md","pattern":"System reconnaissance","snippet":".btn:focus-visible { outline: 2px solid #3b82f6; outline-offset: 2px; }","category":"blocker","line_end":69,"severity":"low","line_start":69},{"id":"external_commands:references/framer-motion-recipes.md:86:ruby-shell-backtick-execution","file":"references/framer-motion-recipes.md","pattern":"Ruby/shell backtick execution","snippet":"<motion.img key={p.id} layoutId={`photo-${p.id}`} src={p.thumb}","category":"external_commands","line_end":94,"severity":"medium","line_start":86},{"id":"external_commands:references/framer-motion-recipes.md:94:ruby-shell-backtick-execution","file":"references/framer-motion-recipes.md","pattern":"Ruby/shell backtick execution","snippet":"<motion.img layoutId={`photo-${active.id}`} src={active.full} />","category":"external_commands","line_end":101,"severity":"medium","line_start":94},{"id":"blocker:references/framer-motion-recipes.md:183:system-reconnaissance","file":"references/framer-motion-recipes.md","pattern":"System reconnaissance","snippet":"- For frequently-updated values (cursor follow, scroll), use `useMotionValue` + `useSpring` instead ","category":"blocker","line_end":183,"severity":"low","line_start":183},{"id":"blocker:references/framer-motion-recipes.md:184:system-reconnaissance","file":"references/framer-motion-recipes.md","pattern":"System reconnaissance","snippet":"- `layout` is powerful but measure-heavy; avoid putting it on hundreds of simultaneously-animating n","category":"blocker","line_end":184,"severity":"low","line_start":184},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Animate `transform` and `opacity` only — they are GPU-composited (no layout/paint). Avoid animatin","category":"external_commands","line_end":21,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Give **instant** press feedback: `scale: 0.96` on tap with a fast spring.","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Respect `prefers-reduced-motion`: gate non-essential motion; keep opacity changes, drop large move","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Easing defaults: ease-out for entrances `cubic-bezier(0.16, 1, 0.3, 1)`; a tasteful overshoot is `","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"As of v11+, the package is imported as `motion/react` (the `framer-motion` name still works).","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```jsx","category":"external_commands","line_end":42,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":44,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Spring intuition: higher `stiffness` = faster; higher `damping` = less bounce. `stiffness: 400, damp","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Exit animations require `AnimatePresence` wrapping conditionally-rendered children, each with a stab","category":"external_commands","line_end":48,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```jsx","category":"external_commands","line_end":64,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":66,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For toasts/lists, use `mode=\"popLayout\"` so removed items don't hold space while exiting.","category":"external_commands","line_end":70,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`layout` automatically animates any layout change (position/size) using transforms — perfect for reo","category":"external_commands","line_end":72,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```jsx","category":"external_commands","line_end":74,"severity":"medium","line_start":72},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":76,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Shared-element transition across components: give two elements the same `layoutId` and Framer Motion","category":"external_commands","line_end":78,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```jsx","category":"external_commands","line_end":83,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":85,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Gotcha: a plain `layout` element distorts `border-radius` and text during scale. Add `layout` to dir","category":"external_commands","line_end":85,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Modern CSS can animate enter/exit and even `display` toggles without a library.","category":"external_commands","line_end":91,"severity":"medium","line_start":89},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```css","category":"external_commands","line_end":103,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":105,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`@starting-style` defines the \"before-open\" values so an element animates in on first appearance; `t","category":"external_commands","line_end":105,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```css","category":"external_commands","line_end":116,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":124,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> **Packaged helper** (`scripts/`): `scripts/seek-shot.sh anim.html 0 1.5 3` freezes the `?t=N` harn","category":"external_commands","line_end":124,"severity":"medium","line_start":124},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For a self-contained interaction demo (toggle, like button, toast, drawer) the deliverable is **one ","category":"external_commands","line_end":126,"severity":"medium","line_start":126},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- One `.html` file: your markup plus either CSS transitions/`@starting-style` or an inline `<script ","category":"external_commands","line_end":129,"severity":"medium","line_start":129},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Seek harness — pin a deterministic state.** A micro-interaction's \"frames\" are its states (idle / ","category":"external_commands","line_end":134,"severity":"medium","line_start":132},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```html","category":"external_commands","line_end":138,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"// Framer Motion: set the controlled prop from `s` (e.g. const [open]=useState(s===\"open\"))","category":"external_commands","line_end":142,"severity":"medium","line_start":138},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":144,"severity":"medium","line_start":142},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Verify loop — render → set state → screenshot → check:** open each meaningful state (`?state=idle`","category":"external_commands","line_end":144,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":148,"severity":"medium","line_start":146},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":151,"severity":"medium","line_start":148},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Opens standalone — no console errors, CDN React/`motion` (if used) resolves.","category":"external_commands","line_end":152,"severity":"medium","line_start":151},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. The `?state=` (or controlled-prop) freeze lands a deterministic, settled state.","category":"external_commands","line_end":154,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `prefers-reduced-motion` honored — large movement dropped, opacity/feedback kept.","category":"external_commands","line_end":161,"severity":"medium","line_start":154},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Press feedback | `whileTap={{ scale: 0.96 }}` spring 400/30 |","category":"external_commands","line_end":162,"severity":"medium","line_start":161},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Enter/exit | `AnimatePresence` + `initial/animate/exit` |","category":"external_commands","line_end":162,"severity":"medium","line_start":162},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Reorder / resize | `layout` prop (spring) |","category":"external_commands","line_end":164,"severity":"medium","line_start":163},{"id":"external_commands:SKILL.md:164:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Magic move | shared `layoutId` |","category":"external_commands","line_end":165,"severity":"medium","line_start":164},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Toast stack | `AnimatePresence mode=\"popLayout\"` |","category":"external_commands","line_end":166,"severity":"medium","line_start":165},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| No-JS enter | `@starting-style` + transition |","category":"external_commands","line_end":167,"severity":"medium","line_start":166},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Animate to display:none | `transition-behavior: allow-discrete` |","category":"external_commands","line_end":168,"severity":"medium","line_start":167},{"id":"external_commands:SKILL.md:168:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Accessibility | `prefers-reduced-motion` guard always |","category":"external_commands","line_end":172,"severity":"medium","line_start":168},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/framer-motion-recipes.md` — variants + stagger, `AnimatePresence` modes, `layout`/`lay","category":"external_commands","line_end":172,"severity":"medium","line_start":172},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/css-recipes.md` — `@starting-style`, `transition-behavior: allow-discrete`, popover/di","category":"external_commands","line_end":173,"severity":"medium","line_start":173},{"id":"blocker:SKILL.md:132:screen-capture-upload","file":"SKILL.md","pattern":"Screen capture upload","snippet":"**Seek harness — pin a deterministic state.** A micro-interaction's \"frames\" are its states (idle / ","category":"blocker","line_end":132,"severity":"high","line_start":132},{"id":"blocker:SKILL.md:21:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Animate `transform` and `opacity` only — they are GPU-composited (no layout/paint). Avoid animatin","category":"blocker","line_end":21,"severity":"low","line_start":21}],"finding_verdicts":[{"id":"blocker:references/css-recipes.md:69:system-reconnaissance","reason":"The CSS rule draws a keyboard focus outline with outline-offset. It does not inspect the host system.","verdict":"false_positive","confidence":1},{"id":"external_commands:references/framer-motion-recipes.md:86:ruby-shell-backtick-execution","reason":"The backticks form a JavaScript template literal for an image layoutId inside JSX. No shell command is executed.","verdict":"false_positive","confidence":1},{"id":"external_commands:references/framer-motion-recipes.md:94:ruby-shell-backtick-execution","reason":"The template literal constructs the active image layoutId for a shared-element transition. This is JavaScript string interpolation, not shell execution.","verdict":"false_positive","confidence":1},{"id":"blocker:references/framer-motion-recipes.md:183:system-reconnaissance","reason":"The text recommends useMotionValue and useSpring to reduce React renders during cursor or scroll updates. It requests no system information.","verdict":"false_positive","confidence":1},{"id":"blocker:references/framer-motion-recipes.md:184:system-reconnaissance","reason":"The text discusses the rendering cost of layout animation across many DOM nodes. Layout measurement is not host reconnaissance.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"Backticks format CSS property names in performance advice. They do not invoke a shell or execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The inline scale value describes press feedback for an animation. Markdown backticks are formatting, not command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The backticked prefers-reduced-motion identifier names an accessibility media feature. The instruction only limits nonessential animation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The backticked cubic-bezier values specify animation easing curves. They are CSS examples, not shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"Inline backticks format JavaScript package import names. No process execution appears in this package guidance.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"This Markdown fence encloses a JSX button animation example. Its handlers and spring settings do not execute shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The backticks close a JSX code fence and format spring parameters in the following prose. Neither syntax represents shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The line explains spring stiffness and damping using inline Markdown code. These numeric animation settings do not run commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"AnimatePresence and key are formatted as inline code while explaining exit animations. No executable shell expression is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The fenced JSX example conditionally renders a panel with opacity and position transitions. Markdown fences are not shell backticks.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"The matched text closes the panel example and formats an AnimatePresence mode. It contains no shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"The mode setting controls how exiting toast or list elements occupy layout space. Backticks only mark documentation syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The layout identifier describes automatic position and size animation. The nearby JSX fence has no command execution semantics.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","reason":"This code fence contains a motion.li element with a layout prop and spring settings. It is a JSX example, not shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The matched backticks close the JSX example and format layoutId in explanatory prose. No shell operation is requested.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The text explains matching layoutId values for shared-element animation. Inline code and a JSX fence are documentation formatting.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The fenced JSX mounts and unmounts elements with a shared layoutId. Its click handler only updates React state.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The backticks terminate a JSX block and format animation properties in the following note. They are not shell substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"Inline code names layout, border-radius, and related properties while discussing visual distortion. No process or shell API is used.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","reason":"The display property is formatted as Markdown code before a CSS example. This does not execute a command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The fenced CSS defines toast transitions and initial appearance values. The code fence is not executable shell syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The backticks close a CSS example and mark CSS identifiers in prose. No shell commands occur in this range.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The line explains starting styles and discrete CSS transitions with inline code formatting. It performs no external execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"The fenced CSS shortens animation and transition durations for reduced-motion preferences. No shell language is involved.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"This range closes the reduced-motion CSS and discusses UI states and screenshot helpers. Markdown backticks do not execute these references.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"The line documents helper commands for local screenshots and contact sheets, not shell backtick execution. The referenced helpers are absent from this package.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","reason":"Backticks format package and CDN names in standalone demo guidance. Optional browser module imports are not shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","reason":"Inline Markdown describes an HTML file and browser module imports. It contains no Ruby or shell backtick execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","reason":"The state query parameter is formatted as inline code before an HTML fence. It selects a demo state without invoking a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The HTML example reads a URL parameter and assigns a DOM dataset value. Its Markdown fence does not execute shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","reason":"Backticks inside a JavaScript comment format a state variable and example. The remaining code only sets a readiness flag.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","reason":"The backticks close an HTML example and format query parameters in visual verification instructions. No shell substitution occurs.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"The line describes screenshots of demo states and checks for animation artifacts. Backticks identify parameters and properties, not executable commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","reason":"The fenced command uses Playwright to screenshot a local demo into open.png. It is legitimate verification, not backtick execution or data upload.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","reason":"This is the closing fence of a local Playwright example followed by a demo checklist. The backticks themselves execute nothing.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","reason":"Inline code formats the motion package name and a state parameter in browser checks. No shell command substitution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The checklist asks for deterministic UI states and reduced-motion support. Backticks only format the relevant identifiers.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","reason":"The range documents accessibility, timing, and a press-animation setting. All backticks are Markdown formatting rather than shell syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","reason":"The table formats whileTap and AnimatePresence animation settings as inline code. These are React animation APIs, not shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","reason":"The table names AnimatePresence and animation lifecycle props. Inline backticks are documentation formatting.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","reason":"The table lists layout and layoutId props for reorder and shared-element transitions. It includes no shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:164:ruby-shell-backtick-execution","reason":"The backticks format shared layoutId and AnimatePresence mode settings. Both control visual transitions within React.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","reason":"The table documents toast layout mode and CSS starting styles. Inline code notation does not invoke commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","reason":"The table formats starting-style and transition-behavior CSS features. These browser styling features do not execute shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","reason":"The line names a CSS discrete-transition setting and a reduced-motion guard. Backticks are Markdown formatting only.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:168:ruby-shell-backtick-execution","reason":"The range contains an accessibility identifier and a reference document link. Neither is a shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","reason":"Backticks format a relative Markdown reference path and React API names. This line only describes reference material.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","reason":"The reference entry formats a relative file path and CSS feature names. It contains no executable shell expression.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:132:screen-capture-upload","reason":"The line defines a deterministic UI state for screenshots. The example writes a local image; no upload destination or transmission is specified.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:21:system-reconnaissance","reason":"The GPU reference explains compositing performance for transform and opacity animations. It does not query hardware or collect system information.","verdict":"false_positive","confidence":1}],"semantic_findings":[],"subject_marketplace_commit_sha":"c993c6abcbffafea2683d7748b53b3dfaf438415","subject_content_hash":"f8ae0fc6137448bce51f689a13513a0a8742b1cbffa1b9f32ac723b46309e6e0","subject_tree_hash":"0e63c70fbf05e8ec33aef7432ee494db68054fbb5607a9abf130d8ddbe7502cb","subject_plugin_path":"skills/iart-ai/micro-interaction","audit_payload_hash":"5007dc03d9dc13ef6ccba7e147c9b47b","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"c993c6abcbffafea2683d7748b53b3dfaf438415","contentHash":"f8ae0fc6137448bce51f689a13513a0a8742b1cbffa1b9f32ac723b46309e6e0","treeHash":"0e63c70fbf05e8ec33aef7432ee494db68054fbb5607a9abf130d8ddbe7502cb","pluginPath":"skills/iart-ai/micro-interaction","auditPayloadHash":"5007dc03d9dc13ef6ccba7e147c9b47b"},"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/iart-ai-micro-interaction/audits/1/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}}