{"data":{"skill":{"slug":"zhanlincui-systematic-debugging","name":"systematic-debugging","icon":"📦","repo":"https://github.com/ZhanlinCui/Ultimate-Agent-Skills-Collection/tree/main/systematic-debugging","status":"approved","author":"ZhanlinCui","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"048070e9-f53b-4139-9867-4c297ca0fe36","skill_id":"6ca150a5-42e7-48e3-804c-acca4d07749d","version":4,"content_hash":"v3:88a205c7f635a966e31156313b590d59007c5caa:4999cb851360485eca5074e727bbdd62ef20549c5d5b01216fcbf5831badb473:a21581dae61ffd8923bcde0bb233f43586575733bbf8280c47da70cfaf7cff5a:736b696c6c732f7a68616e6c696e6375692f73797374656d617469632d646562756767696e67:76e0cd5d93d1deb89b54df24e2130b81","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"I reviewed the static findings in context. The Ruby backtick, reconnaissance, environment-file, and device-file hits are false positives from Markdown fences, TypeScript template literals, safe NODE_ENV checks, and a manual test helper. One medium semantic issue remains because a debugging example can encourage logging environment and keychain state without redaction.","remediation":[{"issue":"Diagnostic example can leak environment or signing metadata.","severity":"medium","suggestion":"Change the example to log only SET or UNSET states, remove broad env output, and warn users to redact CI logs."},{"issue":"Helper script executes project tests for every matched file.","severity":"low","suggestion":"Mark find-polluter.sh as manual-only, require users to inspect the pattern, and document that it runs repository test code."},{"issue":"Executable helpers and documentation examples are mixed in the same skill package.","severity":"low","suggestion":"Label examples as non-install hooks and keep helper scripts documented with expected inputs and effects."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"condition-based-waiting-example.ts","line_end":36,"line_start":36},{"file":"condition-based-waiting-example.ts","line_end":79,"line_start":79},{"file":"condition-based-waiting-example.ts","line_end":128,"line_start":128},{"file":"condition-based-waiting.md","line_end":80,"line_start":74},{"file":"defense-in-depth.md","line_end":34,"line_start":31},{"file":"defense-in-depth.md","line_end":38,"line_start":34},{"file":"defense-in-depth.md","line_end":70,"line_start":64},{"file":"find-polluter.sh","line_end":22,"line_start":22},{"file":"find-polluter.sh","line_end":23,"line_start":23},{"file":"find-polluter.sh","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":20,"line_start":18},{"file":"SKILL.md","line_end":77,"line_start":20},{"file":"SKILL.md","line_end":87,"line_start":77},{"file":"SKILL.md","line_end":90,"line_start":87},{"file":"SKILL.md","line_end":106,"line_start":90},{"file":"SKILL.md","line_end":114,"line_start":106},{"file":"SKILL.md","line_end":179,"line_start":114},{"file":"SKILL.md","line_end":282,"line_start":179},{"file":"SKILL.md","line_end":283,"line_start":282},{"file":"SKILL.md","line_end":284,"line_start":283}]},{"factor":"filesystem","evidence":[{"file":"condition-based-waiting.md","line_end":55,"line_start":55},{"file":"CREATION-LOG.md","line_end":7,"line_start":7},{"file":"find-polluter.sh","line_end":42,"line_start":42}]},{"factor":"env_access","evidence":[{"file":"defense-in-depth.md","line_end":58,"line_start":58},{"file":"defense-in-depth.md","line_end":58,"line_start":58},{"file":"root-cause-tracing.md","line_end":77,"line_start":77},{"file":"root-cause-tracing.md","line_end":77,"line_start":77}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Diagnostic Logging May Expose Sensitive CI Context","locations":[{"file":"SKILL.md","line_end":105,"line_start":90}],"confidence":0.74,"description":"The debugging example tells users to inspect environment variables matching IDENTITY and keychain identity state. If copied into CI logs without redaction, this can expose signing or deployment metadata.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The commands are documentation examples and not auto-run, but the example explicitly logs environment and keychain state during signing diagnostics."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":11,"total_lines":1262,"audit_model":"codex","audited_at":"2026-07-08T16:02:43.186+00:00","created_at":"2026-07-16T11:02:02.349657+00:00","static_findings":[{"id":"external_commands:condition-based-waiting-example.ts:36:ruby-shell-backtick-execution","file":"condition-based-waiting-example.ts","pattern":"Ruby/shell backtick execution","snippet":"reject(new Error(`Timeout waiting for ${eventType} event after ${timeoutMs}ms`));","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:condition-based-waiting-example.ts:79:ruby-shell-backtick-execution","file":"condition-based-waiting-example.ts","pattern":"Ruby/shell backtick execution","snippet":"`Timeout waiting for ${count} ${eventType} events after ${timeoutMs}ms (got ${matchingEvents.length}","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:condition-based-waiting-example.ts:128:ruby-shell-backtick-execution","file":"condition-based-waiting-example.ts","pattern":"Ruby/shell backtick execution","snippet":"reject(new Error(`Timeout waiting for ${description} after ${timeoutMs}ms`));","category":"external_commands","line_end":128,"severity":"medium","line_start":128},{"id":"blocker:condition-based-waiting-example.ts:107:system-reconnaissance","file":"condition-based-waiting-example.ts","pattern":"System reconnaissance","snippet":"*     (e) => e.type === 'TOOL_RESULT' && e.data.id === 'call_123',","category":"blocker","line_end":107,"severity":"low","line_start":107},{"id":"external_commands:condition-based-waiting.md:74:ruby-shell-backtick-execution","file":"condition-based-waiting.md","pattern":"Ruby/shell backtick execution","snippet":"throw new Error(`Timeout waiting for ${description} after ${timeoutMs}ms`);","category":"external_commands","line_end":80,"severity":"medium","line_start":74},{"id":"filesystem:condition-based-waiting.md:55:node-js-fs-stat-operations","file":"condition-based-waiting.md","pattern":"Node.js fs stat operations","snippet":"| Wait for file | `waitFor(() => fs.existsSync(path))` |","category":"filesystem","line_end":55,"severity":"low","line_start":55},{"id":"filesystem:CREATION-LOG.md:7:hidden-file-access","file":"CREATION-LOG.md","pattern":"Hidden file access","snippet":"Extracted debugging framework from `/Users/jesse/.claude/CLAUDE.md`:","category":"filesystem","line_end":7,"severity":"medium","line_start":7},{"id":"external_commands:defense-in-depth.md:31:ruby-shell-backtick-execution","file":"defense-in-depth.md","pattern":"Ruby/shell backtick execution","snippet":"throw new Error(`workingDirectory does not exist: ${workingDirectory}`);","category":"external_commands","line_end":34,"severity":"medium","line_start":31},{"id":"external_commands:defense-in-depth.md:34:ruby-shell-backtick-execution","file":"defense-in-depth.md","pattern":"Ruby/shell backtick execution","snippet":"throw new Error(`workingDirectory is not a directory: ${workingDirectory}`);","category":"external_commands","line_end":38,"severity":"medium","line_start":34},{"id":"external_commands:defense-in-depth.md:64:ruby-shell-backtick-execution","file":"defense-in-depth.md","pattern":"Ruby/shell backtick execution","snippet":"`Refusing git init outside temp dir during tests: ${directory}`","category":"external_commands","line_end":70,"severity":"medium","line_start":64},{"id":"env_access:defense-in-depth.md:58:environment-variable-access-dot-notation","file":"defense-in-depth.md","pattern":"Environment variable access (dot notation)","snippet":"if (process.env.NODE_ENV === 'test') {","category":"env_access","line_end":58,"severity":"low","line_start":58},{"id":"env_access:defense-in-depth.md:58:environment-variable-object","file":"defense-in-depth.md","pattern":"Environment variable object","snippet":"if (process.env.NODE_ENV === 'test') {","category":"env_access","line_end":58,"severity":"low","line_start":58},{"id":"sensitive:defense-in-depth.md:58:environment-file-access","file":"defense-in-depth.md","pattern":"Environment file access","snippet":"if (process.env.NODE_ENV === 'test') {","category":"sensitive","line_end":58,"severity":"high","line_start":58},{"id":"blocker:defense-in-depth.md:5:system-reconnaissance","file":"defense-in-depth.md","pattern":"System reconnaissance","snippet":"When you fix a bug caused by invalid data, adding validation at one place feels sufficient. But that","category":"blocker","line_end":5,"severity":"low","line_start":5},{"id":"blocker:defense-in-depth.md:23:system-reconnaissance","file":"defense-in-depth.md","pattern":"System reconnaissance","snippet":"**Purpose:** Reject obviously invalid input at API boundary","category":"blocker","line_end":23,"severity":"low","line_start":23},{"id":"external_commands:find-polluter.sh:22:shell-command-substitution","file":"find-polluter.sh","pattern":"Shell command substitution","snippet":"TEST_FILES=$(find . -path \"$TEST_PATTERN\" | sort)","category":"external_commands","line_end":22,"severity":"medium","line_start":22},{"id":"external_commands:find-polluter.sh:23:shell-command-substitution","file":"find-polluter.sh","pattern":"Shell command substitution","snippet":"TOTAL=$(echo \"$TEST_FILES\" | wc -l | tr -d ' ')","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:find-polluter.sh:30:shell-command-substitution","file":"find-polluter.sh","pattern":"Shell command substitution","snippet":"COUNT=$((COUNT + 1))","category":"external_commands","line_end":30,"severity":"medium","line_start":30},{"id":"filesystem:find-polluter.sh:42:standard-device-file-access","file":"find-polluter.sh","pattern":"Standard device file access","snippet":"npm test \"$TEST_FILE\" > /dev/null 2>&1 || true","category":"filesystem","line_end":42,"severity":"low","line_start":42},{"id":"env_access:root-cause-tracing.md:77:environment-variable-access-dot-notation","file":"root-cause-tracing.md","pattern":"Environment variable access (dot notation)","snippet":"nodeEnv: process.env.NODE_ENV,","category":"env_access","line_end":77,"severity":"low","line_start":77},{"id":"env_access:root-cause-tracing.md:77:environment-variable-object","file":"root-cause-tracing.md","pattern":"Environment variable object","snippet":"nodeEnv: process.env.NODE_ENV,","category":"env_access","line_end":77,"severity":"low","line_start":77},{"id":"sensitive:root-cause-tracing.md:77:environment-file-access","file":"root-cause-tracing.md","pattern":"Environment file access","snippet":"nodeEnv: process.env.NODE_ENV,","category":"sensitive","line_end":77,"severity":"high","line_start":77},{"id":"blocker:root-cause-tracing.md:29:system-reconnaissance","file":"root-cause-tracing.md","pattern":"System reconnaissance","snippet":"- Unclear where invalid data originated","category":"blocker","line_end":29,"severity":"low","line_start":29},{"id":"blocker:root-cause-tracing.md:60:system-reconnaissance","file":"root-cause-tracing.md","pattern":"System reconnaissance","snippet":"**Where did empty string come from?**","category":"blocker","line_end":60,"severity":"low","line_start":60},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":20,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":77,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":87,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":90,"severity":"medium","line_start":87},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":106,"severity":"medium","line_start":90},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":114,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"See `root-cause-tracing.md` in this directory for the complete backward tracing technique.","category":"external_commands","line_end":179,"severity":"medium","line_start":114},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use the `superpowers:test-driven-development` skill for writing proper failing tests","category":"external_commands","line_end":282,"severity":"medium","line_start":179},{"id":"external_commands:SKILL.md:282:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **`root-cause-tracing.md`** - Trace bugs backward through call stack to find original trigger","category":"external_commands","line_end":283,"severity":"medium","line_start":282},{"id":"external_commands:SKILL.md:283:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **`defense-in-depth.md`** - Add validation at multiple layers after finding root cause","category":"external_commands","line_end":284,"severity":"medium","line_start":283},{"id":"blocker:SKILL.md:160:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Did it work? Yes → Phase 4","category":"blocker","line_end":160,"severity":"low","line_start":160},{"id":"blocker:test-pressure-2.md:25:at-command-scheduling","file":"test-pressure-2.md","pattern":"at command scheduling","snippet":"You're exhausted. You have dinner plans at 8:30pm (already late). Code review is tomorrow at 9am.","category":"blocker","line_end":25,"severity":"medium","line_start":25},{"id":"blocker:test-pressure-3.md:64:system-reconnaissance","file":"test-pressure-3.md","pattern":"System reconnaissance","snippet":"- Shows you did \"due diligence\"","category":"blocker","line_end":64,"severity":"low","line_start":64},{"id":"blocker:test-pressure-3.md:47:network-reconnaissance","file":"test-pressure-3.md","pattern":"Network reconnaissance","snippet":"- Insist on following systematic process","category":"blocker","line_end":48,"severity":"low","line_start":47}],"finding_verdicts":[{"id":"external_commands:condition-based-waiting-example.ts:36:ruby-shell-backtick-execution","reason":"This is a TypeScript template literal inside an Error message, not shell backtick execution. It never invokes a shell or external command.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:condition-based-waiting-example.ts:79:ruby-shell-backtick-execution","reason":"This is a multiline TypeScript template literal used to format a timeout error. No command interpreter is called and no user input is executed.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:condition-based-waiting-example.ts:128:ruby-shell-backtick-execution","reason":"This is a TypeScript template literal in an exception message. It is not Ruby backtick execution or shell command execution.","verdict":"false_positive","confidence":0.97},{"id":"blocker:condition-based-waiting-example.ts:107:system-reconnaissance","reason":"The line is a predicate example matching an event id. It does not collect system information or enumerate host resources.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:condition-based-waiting.md:74:ruby-shell-backtick-execution","reason":"This is a TypeScript template literal in a documentation example. It formats a timeout message and does not execute a shell.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:condition-based-waiting.md:55:node-js-fs-stat-operations","reason":"The fs.existsSync call appears in a table as a polling example for waiting on a file. It is illustrative documentation and does not access sensitive files by itself.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:CREATION-LOG.md:7:hidden-file-access","reason":"The line documents historical source material from a hidden Claude file path. There is no script or instruction that reads this hidden file during skill use.","verdict":"false_positive","confidence":0.86},{"id":"external_commands:defense-in-depth.md:31:ruby-shell-backtick-execution","reason":"This is a TypeScript template literal used in a validation error inside a code example. It does not invoke external commands.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:defense-in-depth.md:34:ruby-shell-backtick-execution","reason":"This is another TypeScript template literal in an error message. The snippet is validation documentation, not shell execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:defense-in-depth.md:64:ruby-shell-backtick-execution","reason":"This is a TypeScript template literal in an example guard message. No command substitution or shell execution occurs.","verdict":"false_positive","confidence":0.96},{"id":"env_access:defense-in-depth.md:58:environment-variable-access-dot-notation","reason":"The example checks process.env.NODE_ENV only to restrict git initialization during tests. It does not read secrets or transmit environment data.","verdict":"false_positive","confidence":0.91},{"id":"env_access:defense-in-depth.md:58:environment-variable-object","reason":"The environment access is limited to NODE_ENV in a defensive test guard. This is a common safe pattern and not credential access.","verdict":"false_positive","confidence":0.91},{"id":"sensitive:defense-in-depth.md:58:environment-file-access","reason":"The snippet reads process.env.NODE_ENV, not an environment file such as .env. It is a documentation example for test-only safety checks.","verdict":"false_positive","confidence":0.92},{"id":"blocker:defense-in-depth.md:5:system-reconnaissance","reason":"The phrase discusses invalid data in a debugging guide. It does not instruct host reconnaissance or system inventory collection.","verdict":"false_positive","confidence":0.94},{"id":"blocker:defense-in-depth.md:23:system-reconnaissance","reason":"This line describes API boundary validation. It is not reconnaissance and does not gather information about the user system.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:find-polluter.sh:22:shell-command-substitution","reason":"The command substitution captures a find result for a manual debugging helper and quotes the user-supplied pattern. It does not eval or execute user-controlled shell text.","verdict":"false_positive","confidence":0.79},{"id":"external_commands:find-polluter.sh:23:shell-command-substitution","reason":"This command substitution counts the previously generated file list with wc. It is normal shell scripting and has no command injection behavior.","verdict":"false_positive","confidence":0.84},{"id":"external_commands:find-polluter.sh:30:shell-command-substitution","reason":"This line is arithmetic expansion that increments a counter, not shell command substitution. It cannot execute external commands.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:find-polluter.sh:42:standard-device-file-access","reason":"The /dev/null reference only discards npm test output in a manually run script. It does not read device data or hide background execution.","verdict":"false_positive","confidence":0.93},{"id":"env_access:root-cause-tracing.md:77:environment-variable-access-dot-notation","reason":"The example logs NODE_ENV as debugging context. It does not access sensitive environment variables or send data outside the process.","verdict":"false_positive","confidence":0.9},{"id":"env_access:root-cause-tracing.md:77:environment-variable-object","reason":"The environment object access is limited to NODE_ENV in a diagnostic example. This is low-risk contextual logging, not secret harvesting.","verdict":"false_positive","confidence":0.9},{"id":"sensitive:root-cause-tracing.md:77:environment-file-access","reason":"The line reads process.env.NODE_ENV, not an environment file. No .env file or secret-bearing configuration file is accessed.","verdict":"false_positive","confidence":0.91},{"id":"blocker:root-cause-tracing.md:29:system-reconnaissance","reason":"The phrase refers to tracing invalid application data. It does not instruct system reconnaissance or host enumeration.","verdict":"false_positive","confidence":0.94},{"id":"blocker:root-cause-tracing.md:60:system-reconnaissance","reason":"The line asks where an empty string came from in a code path. It is debugging guidance, not reconnaissance.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"The static hit is a Markdown code fence around plain text. It is not executable code and does not invoke a command shell.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"The line is a Markdown fence delimiter, not backtick command execution. No runtime hook executes this content.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"This is a Markdown code block used for process guidance. The delimiter itself is not shell execution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","reason":"The hit is another Markdown fence delimiter. It does not run commands or interpolate user-controlled shell input.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","reason":"The static pattern matched a Markdown bash fence, not an executable installer hook. The separate concern about copied diagnostic logging is covered as a semantic finding.","verdict":"false_positive","confidence":0.86},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"This is the closing delimiter for a Markdown code block. It is not Ruby backtick execution or command substitution.","verdict":"false_positive","confidence":0.95},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"The line uses inline Markdown backticks around a local documentation filename. It does not execute the referenced file or any shell command.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","reason":"The line names a related skill in inline Markdown backticks. This is a reference, not command execution.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:282:ruby-shell-backtick-execution","reason":"The line lists a support document in inline Markdown backticks. There is no shell invocation or dynamic execution path.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:SKILL.md:283:ruby-shell-backtick-execution","reason":"The line lists another support document in inline Markdown backticks. It is a static reference, not executable content.","verdict":"false_positive","confidence":0.94},{"id":"blocker:SKILL.md:160:system-reconnaissance","reason":"The line is a decision point in the debugging workflow. It does not perform or instruct system reconnaissance.","verdict":"false_positive","confidence":0.94},{"id":"blocker:test-pressure-2.md:25:at-command-scheduling","reason":"The phrase says dinner plans are at 8:30pm in a pressure-test scenario. It is not the Unix at scheduler and does not schedule commands.","verdict":"false_positive","confidence":0.97},{"id":"blocker:test-pressure-3.md:64:system-reconnaissance","reason":"The phrase \"due diligence\" appears in a social-pressure debugging test. It does not instruct host or system enumeration.","verdict":"false_positive","confidence":0.94},{"id":"blocker:test-pressure-3.md:47:network-reconnaissance","reason":"The line tells the reader to follow a debugging process during a scenario. It contains no network scanning, probing, or enumeration instruction.","verdict":"false_positive","confidence":0.94}],"semantic_findings":[{"title":"Diagnostic Logging May Expose Sensitive CI Context","severity":"medium","locations":[{"file":"SKILL.md","line_end":105,"line_start":90}],"confidence":0.74,"description":"The debugging example tells users to inspect environment variables matching IDENTITY and keychain identity state. If copied into CI logs without redaction, this can expose signing or deployment metadata.","confidence_reasoning":"The commands are documentation examples and not auto-run, but the example explicitly logs environment and keychain state during signing diagnostics."}],"subject_marketplace_commit_sha":"88a205c7f635a966e31156313b590d59007c5caa","subject_content_hash":"4999cb851360485eca5074e727bbdd62ef20549c5d5b01216fcbf5831badb473","subject_tree_hash":"a21581dae61ffd8923bcde0bb233f43586575733bbf8280c47da70cfaf7cff5a","subject_plugin_path":"skills/zhanlincui/systematic-debugging","audit_payload_hash":"76e0cd5d93d1deb89b54df24e2130b81","confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":"88a205c7f635a966e31156313b590d59007c5caa","contentHash":"4999cb851360485eca5074e727bbdd62ef20549c5d5b01216fcbf5831badb473","treeHash":"a21581dae61ffd8923bcde0bb233f43586575733bbf8280c47da70cfaf7cff5a","pluginPath":"skills/zhanlincui/systematic-debugging","auditPayloadHash":"76e0cd5d93d1deb89b54df24e2130b81"},"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":"medium","confirmedFindingCount":1,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":true}}