{"data":{"skill":{"slug":"kunchenguid-lavish","name":"lavish","icon":"📦","repo":"https://github.com/kunchenguid/lavish-axi/tree/8a0e25402a1d461d37b95c92c6c5f3ce8f143fc4/skills/lavish","status":"approved","author":"kunchenguid","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"7f43c850-0ddf-4a23-89bb-0ca79455b994","skill_id":"c0fd90df-baa8-4ad4-a221-b397a722f570","version":1,"content_hash":"v3:6887c2ead4c74300240c16e1d85ef6f6c827a820:0cde4d7527df05c29a34a4553a7dc9654f876bcd6f316d8033edf8024098daf5:ef19ec55a059370d45a1bca93697d89104575f83a58e45e76e6734d166ea9b41:736b696c6c732f6b756e6368656e677569642f6c6176697368:173303300d89b8598048e3b1494f6fde","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"Most static findings are false positives caused by Markdown code spans. Confirmed risks include unpinned npx execution and public third-party sharing without an explicit consent gate. No prompt injection or malicious reconnaissance was found.","remediation":[{"issue":"The workflow repeatedly executes an unpinned package with npx.","severity":"medium","suggestion":"Pin an audited lavish-axi version and integrity value, and require confirmation before downloading or executing it."},{"issue":"The share command publishes artifacts publicly by default without requiring user consent.","severity":"high","suggestion":"Require explicit informed consent, check for sensitive data, and make password-protected sharing the default."},{"issue":"Passwords and bearer tokens can be supplied as command-line arguments.","severity":"medium","suggestion":"Accept secrets through protected standard input or environment variables, and warn against command-line secret arguments."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":47,"line_start":47},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":50,"line_start":50},{"file":"SKILL.md","line_end":62,"line_start":62},{"file":"SKILL.md","line_end":64,"line_start":64},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":67,"line_start":67},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":69,"line_start":69},{"file":"SKILL.md","line_end":70,"line_start":70},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":72,"line_start":72},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":77,"line_start":77},{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":81,"line_start":81},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":84,"line_start":84},{"file":"SKILL.md","line_end":85,"line_start":85},{"file":"SKILL.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":18,"line_start":18}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":83,"line_start":83}]}],"critical_findings":[],"high_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":83,"line_start":83}],"confidence":0.99,"description":"- Run `npx -y lavish-axi share <html-file> [--password <pw>] [--token <t>]` to publish the artifact ","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The command executes package code and can upload an artifact to a public third-party service."},{"title":"Public Third-Party Publishing Without Consent Gate","locations":[{"file":"SKILL.md","line_end":83,"line_start":83}],"confidence":0.98,"description":"The share command publishes artifacts to ht-ml.app publicly by default, but the workflow does not require explicit user consent or a sensitive-data check.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"Line 83 explicitly states that sharing uses a third-party service and that links are public by default."}],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":14,"line_start":14}],"confidence":0.96,"description":"Lavish Editor helps agents turn rich HTML artifacts into collaborative human review surfaces. Whenev","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The workflow explicitly runs unpinned lavish-axi code through npx, creating package supply-chain and arbitrary code execution exposure."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":16,"line_start":16}],"confidence":0.97,"description":"You do not need lavish-axi installed globally - invoke it with `npx -y lavish-axi <html-file>`.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This line explicitly directs unattended npx download and execution of lavish-axi without a pinned version."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":17,"line_start":17}],"confidence":0.91,"description":"If lavish-axi output shows a follow-up command starting with `lavish-axi`, run it as `npx -y lavish-","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The agent is directed to transform CLI output into another npx command, extending trust to package-generated instructions."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":34,"line_start":34}],"confidence":0.98,"description":"2. Run `npx -y lavish-axi <html-file>` to open or resume a review session in the browser.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This instruction executes unpinned lavish-axi package code through npx."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":36,"line_start":36}],"confidence":0.98,"description":"3. Run `npx -y lavish-axi poll <html-file>` to long-poll for the user's annotations and queued promp","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line directs execution of the unpinned package and starts a long-running poll process."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":49,"line_start":49}],"confidence":0.98,"description":"6. Run `npx -y lavish-axi end <html-file>` when the review is finished.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This line explicitly executes the unpinned lavish-axi package through npx to end a session."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":62,"line_start":62}],"confidence":0.98,"description":"Run `npx -y lavish-axi playbook <id>` for focused, detailed guidance on any of these.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This instruction runs an unpinned package command to retrieve playbook guidance."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":64,"line_start":64}],"confidence":0.96,"description":"For flows, architecture, state, or sequence diagrams, do not hand-build boxes-and-arrows from div/fl","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line explicitly invokes the unpinned package design command before generating diagrams."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":76,"line_start":76}],"confidence":0.98,"description":"- Run `npx -y lavish-axi <html-file>` to open or resume a Lavish Editor session. If the user explici","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This line instructs the agent to execute unpinned lavish-axi code through npx."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":79,"line_start":79}],"confidence":0.98,"description":"- Run `npx -y lavish-axi poll <html-file>` to wait for user feedback. It long-polls and stays silent","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line executes an unpinned package command and starts a persistent polling process."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":81,"line_start":81}],"confidence":0.98,"description":"- Run `npx -y lavish-axi end <html-file>` to end a session as the agent - ending it this way still a","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This instruction executes the unpinned package through npx to end a session."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":82,"line_start":82}],"confidence":0.98,"description":"- Run `npx -y lavish-axi export <html-file> [--out <path>]` to write a portable copy of the artifact","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This instruction executes package code and writes an exported artifact to a supplied filesystem path."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":84,"line_start":84}],"confidence":0.97,"description":"- Run `npx -y lavish-axi stop` to shut down the background server (it also self-stops when idle or a","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This line executes the unpinned package through npx to stop its background server."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":85,"line_start":85}],"confidence":0.98,"description":"- Run `npx -y lavish-axi playbook <playbook_id>` for focused artifact guidance. One artifact often c","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This line executes an unpinned package command to retrieve playbook guidance."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":86,"line_start":86}],"confidence":0.97,"description":"- Lavish does not auto-inject any design system - artifacts stay portable so they render identically","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The instruction executes the unpinned design command and may provide remote CDN references for generated artifacts."},{"title":"Shell command substitution","locations":[{"file":"SKILL.md","line_end":18,"line_start":18}],"confidence":0.99,"description":"In restricted subprocess sandboxes, CI, or agent harnesses where `npx -y` exits opaquely (for exampl","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Both fallback commands use shell substitution to resolve npm paths before executing package code."},{"title":"Secrets Exposed Through Command-Line Arguments","locations":[{"file":"SKILL.md","line_end":83,"line_start":83}],"confidence":0.95,"description":"The share command accepts passwords and bearer tokens as arguments, which may expose secrets through shell history or process listings.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"Line 83 directly documents password and token flags; command-line secrets commonly remain visible to local process and history mechanisms."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":83,"line_start":83}],"confidence":0.99,"description":"- Run `npx -y lavish-axi share <html-file> [--password <pw>] [--token <t>]` to publish the artifact ","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The skill explicitly targets ht-ml.app for artifact uploads, and the service is third-party and public by default."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":88,"audit_model":"codex","audited_at":"2026-08-23T08:22:50.025+00:00","created_at":"2026-08-23T09:25:00.617338+00:00","static_findings":[{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Lavish Editor helps agents turn rich HTML artifacts into collaborative human review surfaces. Whenev","category":"external_commands","line_end":14,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"You do not need lavish-axi installed globally - invoke it with `npx -y lavish-axi <html-file>`.","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"If lavish-axi output shows a follow-up command starting with `lavish-axi`, run it as `npx -y lavish-","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"In restricted subprocess sandboxes, CI, or agent harnesses where `npx -y` exits opaquely (for exampl","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"If the request above is non-empty, the user invoked `/lavish` explicitly - build an HTML artifact fo","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Create the HTML artifact (default location `.lavish/<name>.html` in the working directory).","category":"external_commands","line_end":33,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Run `npx -y lavish-axi <html-file>` to open or resume a review session in the browser.","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"If the output carries a `self_paint_warning`, fix the unpainted page surface and save before polling","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. Run `npx -y lavish-axi poll <html-file>` to long-poll for the user's annotations and queued promp","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"On the first poll, prefer `--agent-reply \"<one-line summary of what you built and what to review fir","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Browser-detected layout issues are filed passively in the user's Layout issues inbox and arrive as a","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Never use `nohup`, shell `&`, `disown`, redirected fire-and-forget processes, or a detached terminal","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. If poll returns feedback, apply the user's prompts. A `layout-warnings` prompt is an explicit rep","category":"external_commands","line_end":47,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. Apply human feedback, then poll again with `--agent-reply \"<message>\"` to reply in the browser an","category":"external_commands","line_end":48,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. Run `npx -y lavish-axi end <html-file>` when the review is finished.","category":"external_commands","line_end":49,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"7. `Send & End` ends the session. Its final feedback is still delivered once. After that response, p","category":"external_commands","line_end":50,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Run `npx -y lavish-axi playbook <id>` for focused, detailed guidance on any of these.","category":"external_commands","line_end":62,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For flows, architecture, state, or sequence diagrams, do not hand-build boxes-and-arrows from div/fl","category":"external_commands","line_end":64,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `diagram` - Map relationships, flows, state, and architecture","category":"external_commands","line_end":66,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `table` - Turn dense records into scan-friendly review surfaces","category":"external_commands","line_end":67,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `comparison` - Show options, tradeoffs, and current vs target behavior","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `plan` - Explain a product or technical plan before implementation","category":"external_commands","line_end":69,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `code` - Render source code, code files, patches, PR diffs, and before/after code inside Lavish ar","category":"external_commands","line_end":70,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `input` - Must be used when the agent needs to collect user input on decisions, choices, preferenc","category":"external_commands","line_end":71,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `slides` - Create a deliberate presentation when slides are requested","category":"external_commands","line_end":72,"severity":"medium","line_start":72},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `npx -y lavish-axi <html-file>` to open or resume a Lavish Editor session. If the user explici","category":"external_commands","line_end":76,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Unless the user specifies another location, create HTML artifacts in the current working directory","category":"external_commands","line_end":77,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Lavish serves the html file through a local express.js server. If your html needs to reference oth","category":"external_commands","line_end":78,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `npx -y lavish-axi poll <html-file>` to wait for user feedback. It long-polls and stays silent","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Rendered Mermaid diagrams in `.mermaid` containers become embedded, editable Excalidraw whiteboard","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `npx -y lavish-axi end <html-file>` to end a session as the agent - ending it this way still a","category":"external_commands","line_end":81,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `npx -y lavish-axi export <html-file> [--out <path>]` to write a portable copy of the artifact","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":"- Run `npx -y lavish-axi share <html-file> [--password <pw>] [--token <t>]` to publish the artifact ","category":"external_commands","line_end":83,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `npx -y lavish-axi stop` to shut down the background server (it also self-stops when idle or a","category":"external_commands","line_end":84,"severity":"medium","line_start":84},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `npx -y lavish-axi playbook <playbook_id>` for focused artifact guidance. One artifact often c","category":"external_commands","line_end":85,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Lavish does not auto-inject any design system - artifacts stay portable so they render identically","category":"external_commands","line_end":86,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:18:shell-command-substitution","file":"SKILL.md","pattern":"Shell command substitution","snippet":"In restricted subprocess sandboxes, CI, or agent harnesses where `npx -y` exits opaquely (for exampl","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:18:template-literal-with-command-substitution","file":"SKILL.md","pattern":"Template literal with command substitution","snippet":"In restricted subprocess sandboxes, CI, or agent harnesses where `npx -y` exits opaquely (for exampl","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"network:SKILL.md:83:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Run `npx -y lavish-axi share <html-file> [--password <pw>] [--token <t>]` to publish the artifact ","category":"network","line_end":83,"severity":"low","line_start":83},{"id":"blocker:SKILL.md:64:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"For flows, architecture, state, or sequence diagrams, do not hand-build boxes-and-arrows from div/fl","category":"blocker","line_end":64,"severity":"low","line_start":64},{"id":"blocker:SKILL.md:80:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Rendered Mermaid diagrams in `.mermaid` containers become embedded, editable Excalidraw whiteboard","category":"blocker","line_end":80,"severity":"low","line_start":80},{"id":"blocker:SKILL.md:86:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Lavish does not auto-inject any design system - artifacts stay portable so they render identically","category":"blocker","line_end":86,"severity":"low","line_start":86},{"id":"blocker:SKILL.md:83:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"- Run `npx -y lavish-axi share <html-file> [--password <pw>] [--token <t>]` to publish the artifact ","category":"blocker","line_end":83,"severity":"low","line_start":83}],"finding_verdicts":[{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"The workflow explicitly runs unpinned lavish-axi code through npx, creating package supply-chain and arbitrary code execution exposure.","verdict":"confirmed","severity":"medium","confidence":0.96},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"This line explicitly directs unattended npx download and execution of lavish-axi without a pinned version.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The agent is directed to transform CLI output into another npx command, extending trust to package-generated instructions.","verdict":"confirmed","severity":"medium","confidence":0.91},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"The backticks delimit Markdown code spans, not Ruby or shell execution syntax; command substitution is assessed separately.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The backticks format the slash-command name in prose and do not execute a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The backticks format a relative output path; no command is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"This instruction executes unpinned lavish-axi package code through npx.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The code span names a warning field and contains no executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The line directs execution of the unpinned package and starts a long-running poll process.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The code span documents a fixed CLI option and does not independently invoke a command.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The backticks format response labels only; no external process is launched.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"The line explicitly prohibits the listed shell commands and operators rather than executing them.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The code span names a feedback tag and contains no command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The code span contains only a CLI option example; the surrounding prose does not provide shell execution syntax.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"This line explicitly executes the unpinned lavish-axi package through npx to end a session.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The backticks format a browser action label and do not represent shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"This instruction runs an unpinned package command to retrieve playbook guidance.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"The line explicitly invokes the unpinned package design command before generating diagrams.","verdict":"confirmed","severity":"medium","confidence":0.96},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","reason":"The code span is a playbook identifier, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"This line instructs the agent to execute unpinned lavish-axi code through npx.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The backticks format a relative directory path and contain no command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The code spans format a path character and do not execute an external process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The line executes an unpinned package command and starts a persistent polling process.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The code span identifies a Mermaid CSS class and does not invoke a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"This instruction executes the unpinned package through npx to end a session.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","reason":"This instruction executes package code and writes an exported artifact to a supplied filesystem path.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The command executes package code and can upload an artifact to a public third-party service.","verdict":"confirmed","severity":"high","confidence":0.99},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","reason":"This line executes the unpinned package through npx to stop its background server.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"This line executes an unpinned package command to retrieve playbook guidance.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"The instruction executes the unpinned design command and may provide remote CDN references for generated artifacts.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:18:shell-command-substitution","reason":"Both fallback commands use shell substitution to resolve npm paths before executing package code.","verdict":"confirmed","severity":"medium","confidence":0.99},{"id":"external_commands:SKILL.md:18:template-literal-with-command-substitution","reason":"The source is Markdown, not a programming-language template literal; shell substitution is assessed by its dedicated finding.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:83:hardcoded-url","reason":"The skill explicitly targets ht-ml.app for artifact uploads, and the service is third-party and public by default.","verdict":"confirmed","severity":"low","confidence":0.99},{"id":"blocker:SKILL.md:64:system-reconnaissance","reason":"The line discusses diagram construction and a design command; it does not enumerate host or user information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:80:system-reconnaissance","reason":"The line documents Mermaid and Excalidraw behavior without collecting system information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:86:system-reconnaissance","reason":"Inspecting project design files serves artifact styling and does not enumerate host, network, account, or privilege information.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:83:network-reconnaissance","reason":"The line uploads to one documented service; it does not scan, enumerate, or probe network resources.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Public Third-Party Publishing Without Consent Gate","severity":"high","locations":[{"file":"SKILL.md","line_end":83,"line_start":83}],"confidence":0.98,"description":"The share command publishes artifacts to ht-ml.app publicly by default, but the workflow does not require explicit user consent or a sensitive-data check.","confidence_reasoning":"Line 83 explicitly states that sharing uses a third-party service and that links are public by default."},{"title":"Secrets Exposed Through Command-Line Arguments","severity":"medium","locations":[{"file":"SKILL.md","line_end":83,"line_start":83}],"confidence":0.95,"description":"The share command accepts passwords and bearer tokens as arguments, which may expose secrets through shell history or process listings.","confidence_reasoning":"Line 83 directly documents password and token flags; command-line secrets commonly remain visible to local process and history mechanisms."}],"subject_marketplace_commit_sha":"6887c2ead4c74300240c16e1d85ef6f6c827a820","subject_content_hash":"0cde4d7527df05c29a34a4553a7dc9654f876bcd6f316d8033edf8024098daf5","subject_tree_hash":"ef19ec55a059370d45a1bca93697d89104575f83a58e45e76e6734d166ea9b41","subject_plugin_path":"skills/kunchenguid/lavish","audit_payload_hash":"173303300d89b8598048e3b1494f6fde","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"6887c2ead4c74300240c16e1d85ef6f6c827a820","contentHash":"0cde4d7527df05c29a34a4553a7dc9654f876bcd6f316d8033edf8024098daf5","treeHash":"ef19ec55a059370d45a1bca93697d89104575f83a58e45e76e6734d166ea9b41","pluginPath":"skills/kunchenguid/lavish","auditPayloadHash":"173303300d89b8598048e3b1494f6fde"},"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/kunchenguid-lavish/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":2,"capabilityReviewCount":18,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}