{"data":{"skill":{"slug":"makeitsay-makeitsay","name":"makeitsay","icon":"📦","repo":"https://github.com/makeitsay/makeitsay-mcp/tree/8a76f98649ab6e76ba9a169c6eb2bdbd7a51f042/skills/makeitsay","status":"approved","author":"MakeItSay","authorVersion":"1.0.0","skillstoreRevision":1},"audit":{"id":"66a79d63-65b5-4301-92c4-e4e47c2b93be","skill_id":"f3dc1189-22fb-4666-bbb2-e7883d329891","version":1,"content_hash":"v3:82e8fe3365ae1a18fe8c3d0dfc15710cb69fd1a9:1b31733ca3a4979b65a842973a85f87c5082eea8fef480424d54ff932edbacce:e1111092e4cc2d2d268832649d7ef86df0c63fb6b376351c9114bcd23a381c89:736b696c6c732f6d616b6569747361792f6d616b656974736179:2832236be15aa145434c8d78a5d7bda6","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 37 static findings are false positives: Markdown backticks, documented service URLs, and expected API authentication do not establish unsafe behavior. Images are processed by MakeItSay through authenticated HTTPS requests. No evidence found of prompt injection, unauthorized credential disclosure, or unrelated data collection in SKILL.md.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":41,"line_start":35},{"file":"SKILL.md","line_end":43,"line_start":41},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":45,"line_start":45},{"file":"SKILL.md","line_end":50,"line_start":47},{"file":"SKILL.md","line_end":54,"line_start":50},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":55,"line_start":55},{"file":"SKILL.md","line_end":61,"line_start":61},{"file":"SKILL.md","line_end":63,"line_start":62},{"file":"SKILL.md","line_end":63,"line_start":63},{"file":"SKILL.md","line_end":65,"line_start":64},{"file":"SKILL.md","line_end":66,"line_start":65},{"file":"SKILL.md","line_end":67,"line_start":66},{"file":"SKILL.md","line_end":67,"line_start":67},{"file":"SKILL.md","line_end":68,"line_start":68}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":33,"line_start":33},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":40,"line_start":40},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":62,"line_start":62},{"file":"SKILL.md","line_end":70,"line_start":70}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":61,"line_start":61}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":71,"audit_model":"codex","audited_at":"2026-10-27T01:53:47.865+00:00","created_at":"2026-10-27T14:12:43.353145+00:00","static_findings":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- The user needs an API key from https://makeitsay.com/account/api, set as `MAKEITSAY_API_KEY`. Neve","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Cost: 1 credit per image, however many lines change. Failed edits and texts that are not found cos","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"If the `makeitsay` MCP server is connected (tools `replace_text`, `scan_text`, `get_edit`, `get_cred","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. If you are not sure how the text is written in the image, call `scan_text` first. It returns ever","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Call `replace_text` with `image_url` (public https) or `image_base64` and `replacements`: a list ","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. It waits up to 50 seconds. If the status is still `working`, call `get_edit` with the `edit_id` u","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. When `ready`, `result_url` is the edited PNG for one hour. Download it right away if the user wan","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. If a `from` is not found, nothing is charged and the error lists the lines that were read. Pick t","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Without MCP, call the API with curl. The base is `https://makeitsay.com/api/v1`.","category":"external_commands","line_end":33,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":41,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":43,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For a local file, send multipart with a `file` field and `replacements` as a JSON string. The respon","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Poll until the status is `ready` or `failed` (a failed edit returns the credit):","category":"external_commands","line_end":45,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":50,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":54,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `POST /api/v1/scans` (file, `image_url` or `image_base64`) returns `lines` with `text` and `box`, ","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `GET /api/v1/credits` returns `{ \"credits\": n }`.","category":"external_commands","line_end":55,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 401 | `unauthorized` | Key missing, wrong or revoked; ask the user to check `MAKEITSAY_API_KEY`. |","category":"external_commands","line_end":61,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 402 | `insufficient_credits` | No credits left. Point the user to https://makeitsay.com/pricing. |","category":"external_commands","line_end":63,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 400 | `text_not_found` | A `from` is not in the image; the response has `missing` and `lines`. Use","category":"external_commands","line_end":63,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 400 | `image_fetch_failed` | The URL could not be downloaded over https in 10 seconds; send the fi","category":"external_commands","line_end":65,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 400, 413, 415 | `bad_image` | Not a PNG or JPG, or outside the size limits. |","category":"external_commands","line_end":66,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 422 | `document` | An ID or official document; refused and not charged. Tell the user. |","category":"external_commands","line_end":67,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| 429 | `rate_limited`, `quota`, `too_many` | Over 120 requests a minute, over the scan limit, or th","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":"| 503 | `not_open`, `busy` | Switched off for now; try later. |","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"network:SKILL.md:15:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- The user needs an API key from https://makeitsay.com/account/api, set as `MAKEITSAY_API_KEY`. Neve","category":"network","line_end":15,"severity":"low","line_start":15},{"id":"network:SKILL.md:33:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Without MCP, call the API with curl. The base is `https://makeitsay.com/api/v1`.","category":"network","line_end":33,"severity":"low","line_start":33},{"id":"network:SKILL.md:36:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"curl https://makeitsay.com/api/v1/edits \\","category":"network","line_end":36,"severity":"low","line_start":36},{"id":"network:SKILL.md:40:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"-d '{ \"image_url\": \"https://example.com/menu.jpg\", \"replacements\": [ { \"from\": \"$12\", \"to\": \"$14\" } ","category":"network","line_end":40,"severity":"low","line_start":40},{"id":"network:SKILL.md:48:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"curl https://makeitsay.com/api/v1/edits/<id> \\","category":"network","line_end":48,"severity":"low","line_start":48},{"id":"network:SKILL.md:62:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| 402 | `insufficient_credits` | No credits left. Point the user to https://makeitsay.com/pricing. |","category":"network","line_end":62,"severity":"low","line_start":62},{"id":"network:SKILL.md:70:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Full docs: https://makeitsay.com/docs/api and https://makeitsay.com/docs/mcp","category":"network","line_end":70,"severity":"low","line_start":70},{"id":"env_access:SKILL.md:3:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"description: Change or remove the words in a screenshot or photo with MakeItSay and keep the origina","category":"env_access","line_end":3,"severity":"high","line_start":3},{"id":"env_access:SKILL.md:15:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"- The user needs an API key from https://makeitsay.com/account/api, set as `MAKEITSAY_API_KEY`. Neve","category":"env_access","line_end":15,"severity":"high","line_start":15},{"id":"env_access:SKILL.md:37:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"-H \"Authorization: Bearer $MAKEITSAY_API_KEY\" \\","category":"env_access","line_end":37,"severity":"high","line_start":37},{"id":"env_access:SKILL.md:49:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"-H \"Authorization: Bearer $MAKEITSAY_API_KEY\"","category":"env_access","line_end":49,"severity":"high","line_start":49},{"id":"env_access:SKILL.md:61:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"| 401 | `unauthorized` | Key missing, wrong or revoked; ask the user to check `MAKEITSAY_API_KEY`. |","category":"env_access","line_end":61,"severity":"high","line_start":61}],"finding_verdicts":[{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"Backticks format an environment variable name in Markdown, not executable shell substitution. The same line explicitly prohibits printing or saving the key.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Backticks mark credit-check tool and HTTP endpoint names in documentation. No shell execution syntax is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"This line lists MCP server and tool names using Markdown inline code. It contains no Ruby code or shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The backticks identify the scan_text tool in prose describing OCR and scan limits. They do not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"Inline Markdown formats tool arguments and replacement data for the intended image-editing workflow. No dynamic shell evaluation is shown.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"Backticks surround job status values and MCP polling identifiers. This is workflow documentation, not shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The ready and result_url identifiers are formatted as inline Markdown. Downloading the requested output is documented without executable backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"The backticks identify the from field in error-handling prose. The instruction asks for user confirmation when matching text is uncertain.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The backticks format the documented HTTPS API base URL. Mentioning curl for the intended service does not establish command injection.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The match begins at a Markdown bash fence, not shell substitution. Its curl example uses a fixed HTTPS endpoint and single-quoted JSON.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"This match spans a closing Markdown code fence and multipart upload documentation. Neither contains executable backtick substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"Inline code marks multipart fields, response identifiers, and the idempotency header. These are documented request parameters, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"Backticks format ready and failed status values in polling instructions. There is no command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"A Markdown fence encloses an illustrative curl status request to MakeItSay. No Ruby execution or evaluated user input is shown.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"This match spans a closing code fence and subsequent endpoint documentation. Markdown delimiters are not shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"Backticks format the scan endpoint and response fields. The line documents OCR functionality without executing commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The credit endpoint and illustrative response use Markdown inline code. They are not evaluated as shell expressions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"Backticks format an authentication error and environment variable in a troubleshooting table. No command execution is instructed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"The matched table rows format error codes and request fields as Markdown. They describe billing and text-matching errors, not shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"Inline code identifies text_not_found and response fields. The line describes retrying an image edit with recognized text.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"The match covers Markdown-formatted image error codes in a table. File or base64 submission is the intended fallback, not shell evaluation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"Backticks format image-validation and document-refusal error names. No executable shell content appears in these rows.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"The table documents document refusal and rate limits using inline code. It does not contain Ruby or shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The backticks surround rate-limit error names. The associated instruction is to wait, not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The not_open and busy values are Markdown-formatted service errors. No command substitution is present.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:15:hardcoded-url","reason":"The HTTPS URL directs users to the named service's API-key account page. It is not a destination for unrelated secret uploads.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:33:hardcoded-url","reason":"This is the declared MakeItSay HTTPS API base for the skill's core functionality. No unrelated host or hidden transfer is shown.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:36:hardcoded-url","reason":"The request sends the selected image reference and replacements to the documented image-editing endpoint. This is expected service use, not covert exfiltration.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:40:hardcoded-url","reason":"The example.com image URL is illustrative input inside a sample request. It is not an operational collection endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:48:hardcoded-url","reason":"The URL is the documented HTTPS endpoint for polling an existing edit. It does not send unrelated files or credentials to another service.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:62:hardcoded-url","reason":"The pricing URL is a user-facing link for insufficient credits. It instructs no automatic purchase or data upload.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:70:hardcoded-url","reason":"Both HTTPS URLs point to documentation on the named service's domain. They are reference links, not exfiltration instructions.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:3:generic-api-secret-keys","reason":"The description names the required MAKEITSAY_API_KEY environment variable. It contains no literal secret or instruction to collect unrelated credentials.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:15:generic-api-secret-keys","reason":"This setup instruction names the service-specific key and explicitly forbids printing it or writing it into a file. No secret value appears.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:37:generic-api-secret-keys","reason":"The service-specific environment variable supplies a Bearer header to MakeItSay over HTTPS. This is intended authentication, not credential harvesting.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:49:generic-api-secret-keys","reason":"The same service-specific key authenticates an edit-status request to MakeItSay over HTTPS. No unrelated recipient or credential disclosure is shown.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:61:generic-api-secret-keys","reason":"Troubleshooting asks the user to check the configured key after authentication fails. It does not request that the key be revealed.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"82e8fe3365ae1a18fe8c3d0dfc15710cb69fd1a9","subject_content_hash":"1b31733ca3a4979b65a842973a85f87c5082eea8fef480424d54ff932edbacce","subject_tree_hash":"e1111092e4cc2d2d268832649d7ef86df0c63fb6b376351c9114bcd23a381c89","subject_plugin_path":"skills/makeitsay/makeitsay","audit_payload_hash":"2832236be15aa145434c8d78a5d7bda6","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"82e8fe3365ae1a18fe8c3d0dfc15710cb69fd1a9","contentHash":"1b31733ca3a4979b65a842973a85f87c5082eea8fef480424d54ff932edbacce","treeHash":"e1111092e4cc2d2d268832649d7ef86df0c63fb6b376351c9114bcd23a381c89","pluginPath":"skills/makeitsay/makeitsay","auditPayloadHash":"2832236be15aa145434c8d78a5d7bda6"},"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/makeitsay-makeitsay/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}