{"data":{"skill":{"slug":"screenci-screenci","name":"screenci","icon":"📦","repo":"https://github.com/screenci/screenci/tree/main/skills/screenci/","status":"approved","author":"screenci","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"cabc8b79-b1e2-49fc-aafc-47ff0f9ddf8f","skill_id":"a8f26506-8663-46d2-97c3-3acedf95c2d0","version":2,"content_hash":"v2:c8087c390737c925f044151a66c0aaa504351b63:71545a536187a4b4945477786aedbf325bac52c39dc4e62061120c60b1cbcac1:9815fd18240a5119c95aad31a865f97df449a347918ce4d1e80cc5a985a46ba1:815587a9f855905dd8480d3177f6ca6b","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"The audit confirms real external command, secret-handling, and screen-recording upload risks in the ScreenCI workflow. Most Ruby backtick detections are Markdown false positives, but record commands upload captured screens and SCREENCI_SECRET is written to screenci/.env. SKILL.md also contains suspicious XML-like closing tags that should be removed.","remediation":[{"issue":"Automatic recording upload","severity":"high","suggestion":"Require explicit user confirmation immediately before npx screenci record, and state that the result uploads to ScreenCI."},{"issue":"SCREENCI_SECRET handling","severity":"high","suggestion":"Avoid passing secrets as command arguments. Prefer protected local environment setup and verify .env files are excluded from version control."},{"issue":"External CLI execution","severity":"medium","suggestion":"Pin ScreenCI CLI versions instead of using latest and document what each command changes before it runs."},{"issue":"Prompt boundary markup","severity":"high","suggestion":"Remove the stray </content> and </invoke> lines from SKILL.md to avoid prompt boundary confusion."}],"risk_factor_evidence":[{"factor":"filesystem","evidence":[{"file":"references/init.md","line_end":41,"line_start":41},{"file":"references/record.md","line_end":26,"line_start":26},{"file":"references/record.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":123,"line_start":123},{"file":"SKILL.md","line_end":125,"line_start":125},{"file":"SKILL.md","line_end":126,"line_start":126}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":33,"line_start":24},{"file":"SKILL.md","line_end":35,"line_start":33},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":41,"line_start":39},{"file":"SKILL.md","line_end":42,"line_start":41},{"file":"SKILL.md","line_end":43,"line_start":42},{"file":"SKILL.md","line_end":44,"line_start":43},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":49,"line_start":45},{"file":"SKILL.md","line_end":50,"line_start":49},{"file":"SKILL.md","line_end":51,"line_start":50},{"file":"SKILL.md","line_end":51,"line_start":51},{"file":"SKILL.md","line_end":76,"line_start":53},{"file":"SKILL.md","line_end":80,"line_start":76},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":93,"line_start":92},{"file":"SKILL.md","line_end":94,"line_start":93},{"file":"SKILL.md","line_end":95,"line_start":94},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":96,"line_start":96},{"file":"SKILL.md","line_end":100,"line_start":100},{"file":"SKILL.md","line_end":117,"line_start":102},{"file":"SKILL.md","line_end":121,"line_start":117},{"file":"SKILL.md","line_end":121,"line_start":121},{"file":"SKILL.md","line_end":123,"line_start":123},{"file":"SKILL.md","line_end":125,"line_start":125},{"file":"SKILL.md","line_end":126,"line_start":126},{"file":"SKILL.md","line_end":132,"line_start":128},{"file":"SKILL.md","line_end":132,"line_start":132},{"file":"SKILL.md","line_end":134,"line_start":133},{"file":"SKILL.md","line_end":134,"line_start":134},{"file":"SKILL.md","line_end":135,"line_start":135},{"file":"SKILL.md","line_end":136,"line_start":136},{"file":"SKILL.md","line_end":138,"line_start":138}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":136,"line_start":136}]}],"critical_findings":[],"high_findings":[{"title":"Environment file access","locations":[{"file":"references/init.md","line_end":41,"line_start":41}],"confidence":0.9,"description":"- If the user already has a `SCREENCI_SECRET` from an existing account, pass it as init's first posi","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"SCREENCI_SECRET is an organization upload credential and the instruction passes it into project setup. Handling that secret in commands and env files is a real sensitive-data risk."},{"title":"Screen capture upload","locations":[{"file":"references/init.md","line_end":54,"line_start":54}],"confidence":0.96,"description":"npx screenci record # capture the final recording and upload","review_kind":"security","source_category":"blocker","source_severity":"high","confidence_reasoning":"The command comment says npx screenci record captures the final recording and uploads it. This can send captured application screens to an external ScreenCI service."},{"title":"Environment file access","locations":[{"file":"references/record.md","line_end":26,"line_start":26}],"confidence":0.91,"description":"To upload straight to an existing organization instead, get `SCREENCI_SECRET` into `screenci/.env` b","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The instruction handles SCREENCI_SECRET for organization uploads. The credential could be exposed through the env file or surrounding workflow."},{"title":"Environment file access","locations":[{"file":"references/record.md","line_end":29,"line_start":29}],"confidence":0.91,"description":"- Or ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.env`. The org se","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The line explicitly directs use of SCREENCI_SECRET from a secrets page. This is valid product setup, but it is still sensitive credential handling."},{"title":"Screen capture upload","locations":[{"file":"references/record.md","line_end":3,"line_start":3}],"confidence":0.9,"description":"Use `screenci record` to capture ScreenCI videos from `.screenci.ts` scripts.","review_kind":"security","source_category":"blocker","source_severity":"high","confidence_reasoning":"The file defines screenci record as the way to capture ScreenCI videos, and the same workflow documents upload behavior. Screen capture of app flows can include private data."},{"title":"Screen capture upload","locations":[{"file":"references/record.md","line_end":55,"line_start":55}],"confidence":0.94,"description":"npx screenci record # capture the final recording","review_kind":"security","source_category":"blocker","source_severity":"high","confidence_reasoning":"The command captures the final recording, and the record documentation states successful recordings upload. This is a real screen-capture upload workflow."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":125,"line_start":125}],"confidence":0.9,"description":"1. **Pass it to init:** `npm init screenci@latest <SCREENCI_SECRET> -- --yes` writes it into `screen","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line instructs running npm init screenci@latest with SCREENCI_SECRET as an argument. This executes an npm package while placing a credential into a project env file."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":134,"line_start":134}],"confidence":0.94,"description":"3. Run `npx screenci record` yourself once tests pass. Do not stop and ask the user to record. It up","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line instructs the agent to run npx screenci record itself and notes it uploads immediately. This combines external command execution with third-party screen capture upload."},{"title":"Environment file access","locations":[{"file":"SKILL.md","line_end":123,"line_start":123}],"confidence":0.92,"description":"To upload straight to an existing organization, get `SCREENCI_SECRET` into `screenci/.env` before th","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The line handles SCREENCI_SECRET before upload. This is a credential for organization recording uploads, so exposure would affect account resources."},{"title":"Environment file access","locations":[{"file":"SKILL.md","line_end":125,"line_start":125}],"confidence":0.93,"description":"1. **Pass it to init:** `npm init screenci@latest <SCREENCI_SECRET> -- --yes` writes it into `screen","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The line passes SCREENCI_SECRET to an npm init command and writes it into screenci/.env. Passing secrets on command lines and storing them locally is sensitive."},{"title":"Environment file access","locations":[{"file":"SKILL.md","line_end":126,"line_start":126}],"confidence":0.92,"description":"2. **Secrets page:** ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The line asks for SCREENCI_SECRET from a secrets page and stores it in screenci/.env. This is real credential handling, even if it supports a normal product workflow."},{"title":"Prompt Injection Attempt Detected","locations":[{"file":"SKILL.md","line_end":144,"line_start":142}],"confidence":0.78,"description":"SKILL.md ends with XML-like closing text \"</content>\" and \"</invoke>\" after the task reference. These tags could try to close prompt wrappers and change how the skill is interpreted.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The exact closing tags appear in the skill file and are not normal Markdown instructions. There is no explicit override command, so confidence is high but not absolute."},{"title":"Autonomous Screen Recording Upload","locations":[{"file":"SKILL.md","line_end":134,"line_start":134},{"file":"references/record.md","line_end":37,"line_start":33}],"confidence":0.96,"description":"The skill instructs the agent to run npx screenci record itself and states that it uploads immediately. This can send captured application screens to ScreenCI without a separate final confirmation.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The file directly says to run record yourself and that it uploads immediately. The record reference independently states successful recordings upload and return a ScreenCI URL."}],"medium_findings":[{"title":"Hidden file access","locations":[{"file":"references/init.md","line_end":41,"line_start":41}],"confidence":0.86,"description":"- If the user already has a `SCREENCI_SECRET` from an existing account, pass it as init's first posi","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The instruction writes SCREENCI_SECRET into screenci/.env through the init flow. That is intentional env-file handling and can expose a credential if copied, logged, or committed."},{"title":"Hidden file access","locations":[{"file":"references/record.md","line_end":26,"line_start":26}],"confidence":0.88,"description":"To upload straight to an existing organization instead, get `SCREENCI_SECRET` into `screenci/.env` b","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The line instructs putting SCREENCI_SECRET into screenci/.env before recording. This is direct local env-file access for a sensitive credential."},{"title":"Hidden file access","locations":[{"file":"references/record.md","line_end":29,"line_start":29}],"confidence":0.88,"description":"- Or ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.env`. The org se","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The line asks the user to copy SCREENCI_SECRET into screenci/.env. That is deliberate secret storage in an env file and needs careful handling."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":33,"line_start":24}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The Bash block includes npx screenci test and npx screenci record. These commands execute local or npm-provided code, and record can upload the generated capture."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":121,"line_start":121}],"confidence":0.82,"description":"`record` needs no account: without a `SCREENCI_SECRET` it uploads under a local, anonymous trial ses","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line describes the record command uploading under an anonymous trial session. That confirms the external command has network upload behavior even without an account."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":134,"line_start":133}],"confidence":0.76,"description":"2. Run `npx screenci test` until it passes. Fix selectors/flow/narration and rerun until green.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line instructs running npx screenci test repeatedly. That is expected for this skill, but it still executes external CLI and project code."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":138,"line_start":138}],"confidence":0.58,"description":"`screenci init` (or `npm init screenci`) scaffolds a new project and fails on purpose if one already","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line documents screenci init and npm init screenci commands that scaffold project files. It is a legitimate workflow, but it still represents local external command execution."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":123,"line_start":123}],"confidence":0.89,"description":"To upload straight to an existing organization, get `SCREENCI_SECRET` into `screenci/.env` before th","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The line tells the agent to get SCREENCI_SECRET into screenci/.env. This is direct env-file handling for a secret used by the recording upload flow."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":125,"line_start":125}],"confidence":0.9,"description":"1. **Pass it to init:** `npm init screenci@latest <SCREENCI_SECRET> -- --yes` writes it into `screen","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The npm init command writes SCREENCI_SECRET into screenci/.env. Writing credentials into an env file is a real filesystem risk if not protected."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":126,"line_start":126}],"confidence":0.9,"description":"2. **Secrets page:** ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The instruction asks the user to copy SCREENCI_SECRET into screenci/.env. That is intentional sensitive env-file storage and needs consent and gitignore protection."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":136,"line_start":136}],"confidence":0.69,"description":"5. Report the URL `record` printed (starts with the app's domain, e.g. `https://app.screenci.com/rec","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The hardcoded app.screenci.com URL is an expected result link, not hidden code. It still confirms that recordings are handled by an external ScreenCI web service."}],"dangerous_patterns":[{"title":"Screen capture upload","locations":[{"file":"references/init.md","line_end":54,"line_start":54}],"confidence":0.96,"description":"npx screenci record # capture the final recording and upload","review_kind":"security","source_category":"blocker","source_severity":"high","confidence_reasoning":"The command comment says npx screenci record captures the final recording and uploads it. This can send captured application screens to an external ScreenCI service."},{"title":"Screen capture upload","locations":[{"file":"references/record.md","line_end":3,"line_start":3}],"confidence":0.9,"description":"Use `screenci record` to capture ScreenCI videos from `.screenci.ts` scripts.","review_kind":"security","source_category":"blocker","source_severity":"high","confidence_reasoning":"The file defines screenci record as the way to capture ScreenCI videos, and the same workflow documents upload behavior. Screen capture of app flows can include private data."},{"title":"Screen capture upload","locations":[{"file":"references/record.md","line_end":55,"line_start":55}],"confidence":0.94,"description":"npx screenci record # capture the final recording","review_kind":"security","source_category":"blocker","source_severity":"high","confidence_reasoning":"The command captures the final recording, and the record documentation states successful recordings upload. This is a real screen-capture upload workflow."}],"files_scanned":3,"total_lines":258,"audit_model":"codex","audited_at":"2026-07-08T08:29:53.561+00:00","created_at":"2026-07-08T08:38:57.769812+00:00","static_findings":[{"id":"filesystem:references/init.md:41:hidden-file-access","file":"references/init.md","pattern":"Hidden file access","snippet":"- If the user already has a `SCREENCI_SECRET` from an existing account, pass it as init's first posi","category":"filesystem","line_end":41,"severity":"medium","line_start":41},{"id":"sensitive:references/init.md:41:environment-file-access","file":"references/init.md","pattern":"Environment file access","snippet":"- If the user already has a `SCREENCI_SECRET` from an existing account, pass it as init's first posi","category":"sensitive","line_end":41,"severity":"high","line_start":41},{"id":"blocker:references/init.md:54:screen-capture-upload","file":"references/init.md","pattern":"Screen capture upload","snippet":"npx screenci record # capture the final recording and upload","category":"blocker","line_end":54,"severity":"high","line_start":54},{"id":"filesystem:references/record.md:26:hidden-file-access","file":"references/record.md","pattern":"Hidden file access","snippet":"To upload straight to an existing organization instead, get `SCREENCI_SECRET` into `screenci/.env` b","category":"filesystem","line_end":26,"severity":"medium","line_start":26},{"id":"filesystem:references/record.md:29:hidden-file-access","file":"references/record.md","pattern":"Hidden file access","snippet":"- Or ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.env`. The org se","category":"filesystem","line_end":29,"severity":"medium","line_start":29},{"id":"sensitive:references/record.md:26:environment-file-access","file":"references/record.md","pattern":"Environment file access","snippet":"To upload straight to an existing organization instead, get `SCREENCI_SECRET` into `screenci/.env` b","category":"sensitive","line_end":26,"severity":"high","line_start":26},{"id":"sensitive:references/record.md:29:environment-file-access","file":"references/record.md","pattern":"Environment file access","snippet":"- Or ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.env`. The org se","category":"sensitive","line_end":29,"severity":"high","line_start":29},{"id":"blocker:references/record.md:3:screen-capture-upload","file":"references/record.md","pattern":"Screen capture upload","snippet":"Use `screenci record` to capture ScreenCI videos from `.screenci.ts` scripts.","category":"blocker","line_end":3,"severity":"high","line_start":3},{"id":"blocker:references/record.md:55:screen-capture-upload","file":"references/record.md","pattern":"Screen capture upload","snippet":"npx screenci record # capture the final recording","category":"blocker","line_end":55,"severity":"high","line_start":55},{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"description: Create, show, and guide with ScreenCI videos in an already-initialized project by editi","category":"external_commands","line_end":3,"severity":"medium","line_start":3},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use this skill when the task is about ScreenCI video recording in an existing project: creating a vi","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If the user gives a URL for video context, use the `playwright-cli` skill first to discover the re","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The project is already initialized. Add or edit scripts in `recordings/`. If you are creating new vi","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":"```bash","category":"external_commands","line_end":33,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":35,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`test` forwards normal `playwright test` arguments and still injects the resolved `screenci.config.t","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"ScreenCI uses Playwright-style `.screenci.ts` files plus recording helpers:","category":"external_commands","line_end":41,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `video()` declares one output video per test.","category":"external_commands","line_end":42,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `hide()` cuts setup and loading sections from the final recording.","category":"external_commands","line_end":43,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `autoZoom()` follows navigation and click-driven flows with smooth camera motion. Use it for movem","category":"external_commands","line_end":44,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `zoomTo()` / `resetZoom()` hold a fixed frame for forms and steady editing sections.","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `video.narration({ ... })` is mandatory (see below).","category":"external_commands","line_end":49,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `video.values(...)` for app-managed text or localized copy the app does not populate itself.","category":"external_commands","line_end":50,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `video.audio(...)` for background music or sound effects that should mix under the recording.","category":"external_commands","line_end":51,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `selected(name, options)` inside `video.overlays(...)` when the video should reuse another ScreenC","category":"external_commands","line_end":51,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```ts","category":"external_commands","line_end":76,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":80,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Declare `video.narration({ ... })` on every video and speak throughout the demo. Pass a flat `cue ","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Trigger cues from the `narration` fixture: `await narration.key()` runs the full line before movin","category":"external_commands","line_end":82,"severity":"medium","line_start":82},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use inline speech tags when needed: `[pronounce: ...]`, `[short pause]`, `[medium pause]`, `[long ","category":"external_commands","line_end":83,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Hide initial setup.** Wrap page load, auth, navigation to the start page, loading spinners, and ","category":"external_commands","line_end":93,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Navigate visibly with clicks** after hidden setup, not `page.goto()`.","category":"external_commands","line_end":94,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Prefer mouse-driven selection after typing** into search boxes, comboboxes, autocomplete, or com","category":"external_commands","line_end":95,"severity":"medium","line_start":94},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Prefer native Playwright APIs over `page.evaluate()`** when a locator method already covers the ","category":"external_commands","line_end":95,"severity":"medium","line_start":95},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Prefer default action options.** For `autoZoom()` and locator actions (`click`, `fill`, `pressSe","category":"external_commands","line_end":96,"severity":"medium","line_start":96},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Prefer stable manual zoom for edit-heavy sections; use `autoZoom()` for movement between targets, an","category":"external_commands","line_end":100,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```ts","category":"external_commands","line_end":117,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":121,"severity":"medium","line_start":117},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`record` needs no account: without a `SCREENCI_SECRET` it uploads under a local, anonymous trial ses","category":"external_commands","line_end":121,"severity":"medium","line_start":121},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"To upload straight to an existing organization, get `SCREENCI_SECRET` into `screenci/.env` before th","category":"external_commands","line_end":123,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Pass it to init:** `npm init screenci@latest <SCREENCI_SECRET> -- --yes` writes it into `screen","category":"external_commands","line_end":125,"severity":"medium","line_start":125},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **Secrets page:** ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.","category":"external_commands","line_end":126,"severity":"medium","line_start":126},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Renders without an account, and renders on the free tier, include a ScreenCI watermark. Do not add a","category":"external_commands","line_end":132,"severity":"medium","line_start":128},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Add or edit `.screenci.ts` files in `recordings/` (remove `example.screenci.ts` if creating new v","category":"external_commands","line_end":132,"severity":"medium","line_start":132},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Run `npx screenci test` until it passes. Fix selectors/flow/narration and rerun until green.","category":"external_commands","line_end":134,"severity":"medium","line_start":133},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. Run `npx screenci record` yourself once tests pass. Do not stop and ask the user to record. It up","category":"external_commands","line_end":134,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. ScreenCI writes `.screenci/<video-name>/recording.mp4` and `data.json` per video.","category":"external_commands","line_end":135,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:136:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. Report the URL `record` printed (starts with the app's domain, e.g. `https://app.screenci.com/rec","category":"external_commands","line_end":136,"severity":"medium","line_start":136},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`screenci init` (or `npm init screenci`) scaffolds a new project and fails on purpose if one already","category":"external_commands","line_end":138,"severity":"medium","line_start":138},{"id":"network:SKILL.md:136:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"5. Report the URL `record` printed (starts with the app's domain, e.g. `https://app.screenci.com/rec","category":"network","line_end":136,"severity":"low","line_start":136},{"id":"filesystem:SKILL.md:123:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"To upload straight to an existing organization, get `SCREENCI_SECRET` into `screenci/.env` before th","category":"filesystem","line_end":123,"severity":"medium","line_start":123},{"id":"filesystem:SKILL.md:125:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"1. **Pass it to init:** `npm init screenci@latest <SCREENCI_SECRET> -- --yes` writes it into `screen","category":"filesystem","line_end":125,"severity":"medium","line_start":125},{"id":"filesystem:SKILL.md:126:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"2. **Secrets page:** ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.","category":"filesystem","line_end":126,"severity":"medium","line_start":126},{"id":"sensitive:SKILL.md:123:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"To upload straight to an existing organization, get `SCREENCI_SECRET` into `screenci/.env` before th","category":"sensitive","line_end":123,"severity":"high","line_start":123},{"id":"sensitive:SKILL.md:125:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"1. **Pass it to init:** `npm init screenci@latest <SCREENCI_SECRET> -- --yes` writes it into `screen","category":"sensitive","line_end":125,"severity":"high","line_start":125},{"id":"sensitive:SKILL.md:126:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"2. **Secrets page:** ask the user to copy `SCREENCI_SECRET` from their secrets page into `screenci/.","category":"sensitive","line_end":126,"severity":"high","line_start":126},{"id":"sensitive:SKILL.md:82:certificate-key-files","file":"SKILL.md","pattern":"Certificate/key files","snippet":"- Trigger cues from the `narration` fixture: `await narration.key()` runs the full line before movin","category":"sensitive","line_end":82,"severity":"high","line_start":82}],"finding_verdicts":[{"id":"filesystem:references/init.md:41:hidden-file-access","reason":"The instruction writes SCREENCI_SECRET into screenci/.env through the init flow. That is intentional env-file handling and can expose a credential if copied, logged, or committed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"sensitive:references/init.md:41:environment-file-access","reason":"SCREENCI_SECRET is an organization upload credential and the instruction passes it into project setup. Handling that secret in commands and env files is a real sensitive-data risk.","verdict":"confirmed","severity":"high","confidence":0.9},{"id":"blocker:references/init.md:54:screen-capture-upload","reason":"The command comment says npx screenci record captures the final recording and uploads it. This can send captured application screens to an external ScreenCI service.","verdict":"confirmed","severity":"high","confidence":0.96},{"id":"filesystem:references/record.md:26:hidden-file-access","reason":"The line instructs putting SCREENCI_SECRET into screenci/.env before recording. This is direct local env-file access for a sensitive credential.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"filesystem:references/record.md:29:hidden-file-access","reason":"The line asks the user to copy SCREENCI_SECRET into screenci/.env. That is deliberate secret storage in an env file and needs careful handling.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:references/record.md:26:environment-file-access","reason":"The instruction handles SCREENCI_SECRET for organization uploads. The credential could be exposed through the env file or surrounding workflow.","verdict":"confirmed","severity":"high","confidence":0.91},{"id":"sensitive:references/record.md:29:environment-file-access","reason":"The line explicitly directs use of SCREENCI_SECRET from a secrets page. This is valid product setup, but it is still sensitive credential handling.","verdict":"confirmed","severity":"high","confidence":0.91},{"id":"blocker:references/record.md:3:screen-capture-upload","reason":"The file defines screenci record as the way to capture ScreenCI videos, and the same workflow documents upload behavior. Screen capture of app flows can include private data.","verdict":"confirmed","severity":"high","confidence":0.9},{"id":"blocker:references/record.md:55:screen-capture-upload","reason":"The command captures the final recording, and the record documentation states successful recordings upload. This is a real screen-capture upload workflow.","verdict":"confirmed","severity":"high","confidence":0.94},{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The Bash block includes npx screenci test and npx screenci record. These commands execute local or npm-provided code, and record can upload the generated capture.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"The detector matched a Markdown TypeScript example fence, not Ruby or shell backtick execution. The example shows ScreenCI and Playwright API usage rather than command dispatch.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The detector matched a Markdown TypeScript example fence, not Ruby or shell backtick execution. The example shows ScreenCI and Playwright API usage rather than command dispatch.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The detector matched Markdown inline code naming ScreenCI or Playwright APIs. This location documents API calls and does not execute a shell command.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The detector matched a Markdown TypeScript example fence, not Ruby or shell backtick execution. The example shows ScreenCI and Playwright API usage rather than command dispatch.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","reason":"The detector matched a Markdown TypeScript example fence, not Ruby or shell backtick execution. The example shows ScreenCI and Playwright API usage rather than command dispatch.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","reason":"The line describes the record command uploading under an anonymous trial session. That confirms the external command has network upload behavior even without an account.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks in documentation, not executable Ruby or shell code. No command injection vector is present at this location.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","reason":"The line instructs running npm init screenci@latest with SCREENCI_SECRET as an argument. This executes an npm package while placing a credential into a project env file.","verdict":"confirmed","severity":"high","confidence":0.9},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks in documentation, not executable Ruby or shell code. No command injection vector is present at this location.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:132:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"The line instructs running npx screenci test repeatedly. That is expected for this skill, but it still executes external CLI and project code.","verdict":"confirmed","severity":"medium","confidence":0.76},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The line instructs the agent to run npx screenci record itself and notes it uploads immediately. This combines external command execution with third-party screen capture upload.","verdict":"confirmed","severity":"high","confidence":0.94},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:136:ruby-shell-backtick-execution","reason":"The detector matched Markdown backticks around file names, command names, or explanatory text. This specific location is documentation and has no shell interpolation or command execution.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","reason":"The line documents screenci init and npm init screenci commands that scaffold project files. It is a legitimate workflow, but it still represents local external command execution.","verdict":"confirmed","severity":"medium","confidence":0.58},{"id":"network:SKILL.md:136:hardcoded-url","reason":"The hardcoded app.screenci.com URL is an expected result link, not hidden code. It still confirms that recordings are handled by an external ScreenCI web service.","verdict":"confirmed","severity":"low","confidence":0.69},{"id":"filesystem:SKILL.md:123:hidden-file-access","reason":"The line tells the agent to get SCREENCI_SECRET into screenci/.env. This is direct env-file handling for a secret used by the recording upload flow.","verdict":"confirmed","severity":"medium","confidence":0.89},{"id":"filesystem:SKILL.md:125:hidden-file-access","reason":"The npm init command writes SCREENCI_SECRET into screenci/.env. Writing credentials into an env file is a real filesystem risk if not protected.","verdict":"confirmed","severity":"medium","confidence":0.9},{"id":"filesystem:SKILL.md:126:hidden-file-access","reason":"The instruction asks the user to copy SCREENCI_SECRET into screenci/.env. That is intentional sensitive env-file storage and needs consent and gitignore protection.","verdict":"confirmed","severity":"medium","confidence":0.9},{"id":"sensitive:SKILL.md:123:environment-file-access","reason":"The line handles SCREENCI_SECRET before upload. This is a credential for organization recording uploads, so exposure would affect account resources.","verdict":"confirmed","severity":"high","confidence":0.92},{"id":"sensitive:SKILL.md:125:environment-file-access","reason":"The line passes SCREENCI_SECRET to an npm init command and writes it into screenci/.env. Passing secrets on command lines and storing them locally is sensitive.","verdict":"confirmed","severity":"high","confidence":0.93},{"id":"sensitive:SKILL.md:126:environment-file-access","reason":"The line asks for SCREENCI_SECRET from a secrets page and stores it in screenci/.env. This is real credential handling, even if it supports a normal product workflow.","verdict":"confirmed","severity":"high","confidence":0.92},{"id":"sensitive:SKILL.md:82:certificate-key-files","reason":"The text is a narration fixture method named narration.key(), not a certificate, private key, or key file path. No credential file access appears at this location.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[{"title":"Prompt Injection Attempt Detected","severity":"high","locations":[{"file":"SKILL.md","line_end":144,"line_start":142}],"confidence":0.78,"description":"SKILL.md ends with XML-like closing text \"</content>\" and \"</invoke>\" after the task reference. These tags could try to close prompt wrappers and change how the skill is interpreted.","confidence_reasoning":"The exact closing tags appear in the skill file and are not normal Markdown instructions. There is no explicit override command, so confidence is high but not absolute."},{"title":"Autonomous Screen Recording Upload","severity":"high","locations":[{"file":"SKILL.md","line_end":134,"line_start":134},{"file":"references/record.md","line_end":37,"line_start":33}],"confidence":0.96,"description":"The skill instructs the agent to run npx screenci record itself and states that it uploads immediately. This can send captured application screens to ScreenCI without a separate final confirmation.","confidence_reasoning":"The file directly says to run record yourself and that it uploads immediately. The record reference independently states successful recordings upload and return a ScreenCI URL."}],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":11,"capabilityReviewCount":13,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}