{"data":{"skill":{"slug":"tdw8147-crypto-resumable-handover","name":"resumable-handover","icon":"📦","repo":"https://github.com/tdw8147-crypto/skill-delivery-kit/tree/30eb4e17579f14a1ee3b7c7511ef744fbccdf9a9/resumable-handover","status":"approved","author":"tdw8147-crypto","authorVersion":null,"skillstoreRevision":1,"license":"MIT"},"licenseCorrection":null,"audit":{"id":"d87a56df-0490-47d6-89af-300414d5abaf","skill_id":"bcb970b2-463e-4e41-95c7-5d75220a150b","version":1,"content_hash":"v3:49206052f5367e5f3dd84308f3cc05ffcc48cb3c:e426ae042e0836fd3dd5db706f679bf598c24588db7863ada9e04dbcf22c2ad7:65479924d04c5aefda1f79a17a283efec18e309b54de80087b6f91f06a108069:736b696c6c732f746477383134372d63727970746f2f726573756d61626c652d68616e646f766572:055c90f20c6923b08aa25f95c055808e","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 25 static findings are false positives involving documentation links, installation paths, Markdown formatting, example prose, or readable Chinese text. No evidence found of malicious execution, data exfiltration, hidden payloads, or prompt injection. The workflow documents remaining actions and explicitly prohibits executing them during handover.","remediation":[],"risk_factor_evidence":[{"factor":"filesystem","evidence":[{"file":"README.md","line_end":26,"line_start":26},{"file":"README.md","line_end":37,"line_start":37},{"file":"README.md","line_end":38,"line_start":38},{"file":"README.md","line_end":37,"line_start":37},{"file":"README.md","line_end":38,"line_start":38}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":99,"line_start":77},{"file":"SKILL.md","line_end":107,"line_start":99},{"file":"SKILL.md","line_end":107,"line_start":107},{"file":"SKILL.md","line_end":109,"line_start":108},{"file":"SKILL.md","line_end":119,"line_start":109},{"file":"SKILL.md","line_end":120,"line_start":119},{"file":"SKILL.md","line_end":122,"line_start":120},{"file":"SKILL.md","line_end":128,"line_start":122},{"file":"SKILL.md","line_end":129,"line_start":128},{"file":"SKILL.md","line_end":129,"line_start":129},{"file":"SKILL.md","line_end":141,"line_start":139},{"file":"SKILL.md","line_end":141,"line_start":141},{"file":"SKILL.md","line_end":154,"line_start":142},{"file":"SKILL.md","line_end":154,"line_start":154}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":4,"total_lines":419,"audit_model":"codex","audited_at":"2026-11-10T10:47:28.388+00:00","created_at":"2026-11-10T17:29:38.765366+00:00","static_findings":[{"id":"filesystem:README.md:26:path-traversal-sequence","file":"README.md","pattern":"Path traversal sequence","snippet":"First-delivery all-criteria pass rate, without → with the skill: **GPT 23.1% → 100.0%; DeepSeek 66.7","category":"filesystem","line_end":26,"severity":"high","line_start":26},{"id":"filesystem:README.md:37:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"- **Claude Code:** Put `resumable-handover/SKILL.md` under `~/.claude/skills/`.","category":"filesystem","line_end":37,"severity":"high","line_start":37},{"id":"filesystem:README.md:38:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"- **Codex:** Put `resumable-handover/SKILL.md` under `~/.agents/skills/`.","category":"filesystem","line_end":38,"severity":"high","line_start":38},{"id":"filesystem:README.md:37:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"- **Claude Code:** Put `resumable-handover/SKILL.md` under `~/.claude/skills/`.","category":"filesystem","line_end":37,"severity":"medium","line_start":37},{"id":"filesystem:README.md:38:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"- **Codex:** Put `resumable-handover/SKILL.md` under `~/.agents/skills/`.","category":"filesystem","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. **Name a real backup or say none.** An invented restore location is useless when the trigger fire","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If a criterion is missing, mark it `not provided`; don't invent one.","category":"external_commands","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If the change has no backup, say `none`; if unknown, say `not provided`.","category":"external_commands","line_end":71,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```markdown","category":"external_commands","line_end":99,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":107,"severity":"medium","line_start":99},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Input.** `review/body.md` records a body-content pass for `guide-r6.pdf`.","category":"external_commands","line_end":107,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Revision r7 replaces only the cover. `exports/guide-r7.pdf` exists but nobody opened it.","category":"external_commands","line_end":109,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Acceptance means a rendered guide with no clipped title. The cover backup is `backup/cover-r6.svg`.","category":"external_commands","line_end":119,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Finished: `review/body.md` covers r6 body content, unchanged in r7. It does not cover the r7 cover","category":"external_commands","line_end":120,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> First action: open `exports/guide-r7.pdf`; done when the cover is visible and title clipping can b","category":"external_commands","line_end":122,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Change: cover only. Backup: `backup/cover-r6.svg`. Restore trigger: clipped title in the r7 previe","category":"external_commands","line_end":128,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Input.** Report r3 totals passed in `checks/totals.txt`.","category":"external_commands","line_end":129,"severity":"medium","line_start":128},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The staging index update is independent. Import `im-42` to staging timed out at 14:10 UTC; submitted","category":"external_commands","line_end":129,"severity":"medium","line_start":129},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Finished: report r3 totals pass in `checks/totals.txt`.","category":"external_commands","line_end":141,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Import: paused until the operator reopens the window; outcome unknown. Original: `im-42`, staging,","category":"external_commands","line_end":141,"severity":"medium","line_start":141},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> After reopening: check `im-42` once in its original status view or retain unknown if unavailable. ","category":"external_commands","line_end":154,"severity":"medium","line_start":142},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| “Backup should be in the archive” | Give the recorded location, `none`, or `not provided`. |","category":"external_commands","line_end":154,"severity":"medium","line_start":154},{"id":"blocker:SKILL.md:129:at-command-scheduling","file":"SKILL.md","pattern":"at command scheduling","snippet":"The staging index update is independent. Import `im-42` to staging timed out at 14:10 UTC; submitted","category":"blocker","line_end":129,"severity":"medium","line_start":129},{"id":"blocker:SKILL.md:47:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Keep unrelated facts and avoid re-confirming settled points.","category":"blocker","line_end":47,"severity":"low","line_start":47},{"id":"obfuscation:SKILL.zh.md:1:heuristic-high-file-entropy-7-58-bits-possible-b","file":"SKILL.zh.md","pattern":"[HEURISTIC] High file entropy (7.58 bits) - possible binary/encrypted content","snippet":"File: SKILL.zh.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"filesystem:README.md:26:path-traversal-sequence","reason":"The parent-directory segment is a relative Markdown link to supporting documentation. It is not used in a filesystem operation or an untrusted path.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:README.md:37:hidden-file-in-home-directory","reason":"README.md describes placing the skill in a user-level Claude Code skills directory. It does not request secret access or covert persistence.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:README.md:38:hidden-file-in-home-directory","reason":"README.md lists a user-level skills directory as an installation destination for Codex. No executable operation or access to private files appears here.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:README.md:37:hidden-file-access","reason":"The hidden directory is an explicit installation destination, not a target for reading sensitive data. This line contains documentation rather than executable file access.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:README.md:38:hidden-file-access","reason":"The directory reference explains where to install the skill. There is no command to enumerate hidden files or extract user data.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"Backticks format the literal status label not provided in Markdown. The rule requires honest backup reporting and contains no executable expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The backticked phrase is a missing-information label in prose. It is not Ruby or shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"Backticks mark the textual backup statuses none and not provided. The following instruction explicitly prohibits performing restoration or remaining actions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"This is a fenced Markdown handover template containing headings and placeholders. It contains no shell script, Ruby code, or executable substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","reason":"The triple backticks close a Markdown template, followed by ordinary explanatory prose and an example. They do not delimit an executable command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"Inline backticks identify example review and PDF filenames. The line describes historical evidence rather than executing those paths.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"Backticks format example export and backup paths in a document-review scenario. No command interpreter or executable statement is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"The range contains a backup path and contrasting handover examples. These are quoted documentation, not instructions to invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The example names evidence and a PDF preview as a successor's next action. Backticks are Markdown formatting, not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"This quoted handover example describes opening a PDF and conditional recovery. The skill explicitly requires documenting remaining actions without executing them.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"The range formats example backup and evidence paths and introduces another worked example. No Ruby or shell expression is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","reason":"Backticks mark an example evidence filename and import identifier. Both appear in scenario prose, without command execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","reason":"The line records an example import identifier, timeout time, and checksum. Inline Markdown does not execute these values.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"This quoted example lists historical evidence and original request metadata. Backticks format filenames and identifiers, not executable instructions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","reason":"Backticks identify an existing import request and its checksum. The example preserves identity to prevent replay, without invoking a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","reason":"The range recommends checking the original request and explicitly says not to resend. Other backticks format a missing-backup label in a table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","reason":"Backticks format the literal backup statuses none and not provided in a Markdown table. No command substitution is present.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:129:at-command-scheduling","reason":"The phrase at 14:10 UTC reports an example timeout timestamp. It does not invoke the at scheduler or create a scheduled job.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:47:system-reconnaissance","reason":"The sentence asks the writer to preserve unrelated facts and avoid repeating settled questions. It contains no system inspection or reconnaissance operation.","verdict":"false_positive","confidence":1},{"id":"obfuscation:SKILL.zh.md:1:heuristic-high-file-entropy-7-58-bits-possible-b","reason":"SKILL.zh.md is readable Chinese Markdown matching the English workflow, template, and examples. No encoded payload, encrypted content, or hidden executable material is evident.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"49206052f5367e5f3dd84308f3cc05ffcc48cb3c","subject_content_hash":"e426ae042e0836fd3dd5db706f679bf598c24588db7863ada9e04dbcf22c2ad7","subject_tree_hash":"65479924d04c5aefda1f79a17a283efec18e309b54de80087b6f91f06a108069","subject_plugin_path":"skills/tdw8147-crypto/resumable-handover","audit_payload_hash":"055c90f20c6923b08aa25f95c055808e","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"49206052f5367e5f3dd84308f3cc05ffcc48cb3c","contentHash":"e426ae042e0836fd3dd5db706f679bf598c24588db7863ada9e04dbcf22c2ad7","treeHash":"65479924d04c5aefda1f79a17a283efec18e309b54de80087b6f91f06a108069","pluginPath":"skills/tdw8147-crypto/resumable-handover","auditPayloadHash":"055c90f20c6923b08aa25f95c055808e"},"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/tdw8147-crypto-resumable-handover/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}}