{
  "schemaVersion": "1.0",
  "item": {
    "slug": "trash-cli",
    "name": "Trash Cli",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/xlionjuan/trash-cli",
    "canonicalUrl": "https://clawhub.ai/xlionjuan/trash-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/trash-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trash-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "trash-cli",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T04:48:55.189Z",
      "expiresAt": "2026-05-17T04:48:55.189Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trash-cli",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=trash-cli",
        "contentDisposition": "attachment; filename=\"trash-cli-1.0.5.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "trash-cli"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/trash-cli"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/trash-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/trash-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/trash-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/trash-cli/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "trash-cli",
        "body": "A command line interface to the freedesktop.org trashcan. It trashes files recording the original path, deletion date, and permissions. It uses the same trashcan used by KDE, GNOME, and XFCE."
      },
      {
        "title": "Installation",
        "body": "# Via Homebrew (Linux/macOS)\nbrew install trash-cli\n\n# Via pip\npip install trash-cli\n\n# Via apt (Debian/Ubuntu)\nsudo apt install trash-cli\n\n# Via pacman (Arch Linux)\nsudo pacman -S trash-cli\n\n# Via dnf (Fedora)\nsudo dnf install trash-cli"
      },
      {
        "title": "Commands Overview",
        "body": "CommandDescriptiontrash-putMove files/directories to trashtrash-listList trashed filestrash-restoreRestore trashed filestrash-emptyPermanently delete trashed filestrash-rmRemove specific files from trash"
      },
      {
        "title": "trash-put",
        "body": "Move files or directories to the trash can.\n\ntrash-put <file>           # Trash a file\ntrash-put <dir>/           # Trash a directory\ntrash-put -f <file>        # Silently ignore nonexistent files\ntrash-put -v <file>        # Verbose output"
      },
      {
        "title": "Options",
        "body": "-f, --force - Silently ignore nonexistent files\n-v, --verbose - Explain what is being done\n--trash-dir TRASHDIR - Use TRASHDIR as trash folder"
      },
      {
        "title": "Notes",
        "body": "Unlike rm, trash-put does not require -R for directories\nFiles trashed from home partition go to ~/.local/share/Trash/\nFiles from other partitions go to $partition/.Trash/$uid or $partition/.Trash-$uid"
      },
      {
        "title": "trash-list",
        "body": "List all trashed files.\n\ntrash-list                          # List all trashed files\ntrash-list | grep <pattern>         # Search for specific files\ntrash-list --all-users              # List trashcans of all users"
      },
      {
        "title": "Output Format",
        "body": "2008-06-01 10:30:48 /home/user/bar\n2008-06-02 21:50:41 /home/user/baz\n\nFormat: deletion_date original_path"
      },
      {
        "title": "trash-restore",
        "body": "Restore trashed files to their original location.\n\ntrash-restore                       # Interactive restore\ntrash-restore --overwrite          # Overwrite existing files\ntrash-restore --sort date          # Sort by date (default)\ntrash-restore --sort path          # Sort by path"
      },
      {
        "title": "Interactive Mode",
        "body": "$ trash-restore\n0 2007-08-30 12:36:00 /home/andrea/foo\n1 2007-08-30 12:39:41 /home/andrea/bar\n2 2007-08-30 12:39:41 /home/andrea/baz\nWhat file to restore [0..2]: 0\n\nEnter the number to restore that file\nUse 0-2,3 to restore multiple files\nUse --overwrite to replace existing files"
      },
      {
        "title": "trash-empty",
        "body": "Permanently remove files from trash.\n\ntrash-empty                 # Remove ALL trashed files\ntrash-empty 7              # Remove files older than 7 days\ntrash-empty 1              # Remove files older than 1 day"
      },
      {
        "title": "Examples",
        "body": "# Delete everything in trash\ntrash-empty\n\n# Keep only files from the last 7 days\ntrash-empty 7\n\n# Keep only today's files\ntrash-empty 1"
      },
      {
        "title": "trash-rm",
        "body": "Remove specific files from trash (by pattern).\n\ntrash-rm <pattern>         # Remove files matching pattern\ntrash-rm '*.o'             # Remove all .o files\ntrash-rm foo               # Remove all files named \"foo\"\ntrash-rm /full/path        # Remove by original path\n\nNote: Use quotes to protect pattern from shell expansion.\n\ntrash-rm '*.log'          # Correct\ntrash-rm *.log            # Wrong - shell will expand"
      },
      {
        "title": "Replace rm with trash-put",
        "body": "Add to .bashrc or .zshrc:\n\n# Remind yourself not to use rm directly\nalias rm='echo \"Use trash-put instead!\"; false'\n\n# Or use a safer alias\nalias rm='trash-put'\n\nTo bypass the alias when you really need rm:\n\n\\rm file.txt"
      },
      {
        "title": "Recovery Workflow",
        "body": "Check what's in trash: trash-list\nFind your file: trash-list | grep <filename>\nRestore: trash-restore"
      },
      {
        "title": "Trash Location",
        "body": "Home partition: ~/.local/share/Trash/\nOther partitions: $mount_point/.Trash/$uid or $mount_point/.Trash-$uid"
      },
      {
        "title": "Limitations",
        "body": "Does not support BRTFS volumes\nCannot trash files from read-only filesystems"
      },
      {
        "title": "Creating a top-level .Trash directory",
        "body": "If you need to create a trash directory on a different partition:\n\nsudo mkdir --parent /.Trash\nsudo chmod a+rw /.Trash\nsudo chmod +t /.Trash"
      },
      {
        "title": "Should I alias rm to trash-put?",
        "body": "The author advises against this. Although trash-put seems compatible with rm, it has different semantics that will cause problems. For example, while rm requires -R for deleting directories, trash-put does not.\n\nInstead, use a warning alias:\n\nalias rm='echo \"This is not the command you are looking for.\"; false'\n\nTo bypass when you really need rm:\n\n\\rm file.txt"
      },
      {
        "title": "See Also",
        "body": "Official GitHub\nFreeDesktop.org Trash Spec"
      }
    ],
    "body": "trash-cli\n\nA command line interface to the freedesktop.org trashcan. It trashes files recording the original path, deletion date, and permissions. It uses the same trashcan used by KDE, GNOME, and XFCE.\n\nInstallation\n# Via Homebrew (Linux/macOS)\nbrew install trash-cli\n\n# Via pip\npip install trash-cli\n\n# Via apt (Debian/Ubuntu)\nsudo apt install trash-cli\n\n# Via pacman (Arch Linux)\nsudo pacman -S trash-cli\n\n# Via dnf (Fedora)\nsudo dnf install trash-cli\n\nCommands Overview\nCommand\tDescription\ntrash-put\tMove files/directories to trash\ntrash-list\tList trashed files\ntrash-restore\tRestore trashed files\ntrash-empty\tPermanently delete trashed files\ntrash-rm\tRemove specific files from trash\ntrash-put\n\nMove files or directories to the trash can.\n\ntrash-put <file>           # Trash a file\ntrash-put <dir>/           # Trash a directory\ntrash-put -f <file>        # Silently ignore nonexistent files\ntrash-put -v <file>        # Verbose output\n\nOptions\n-f, --force - Silently ignore nonexistent files\n-v, --verbose - Explain what is being done\n--trash-dir TRASHDIR - Use TRASHDIR as trash folder\nNotes\nUnlike rm, trash-put does not require -R for directories\nFiles trashed from home partition go to ~/.local/share/Trash/\nFiles from other partitions go to $partition/.Trash/$uid or $partition/.Trash-$uid\ntrash-list\n\nList all trashed files.\n\ntrash-list                          # List all trashed files\ntrash-list | grep <pattern>         # Search for specific files\ntrash-list --all-users              # List trashcans of all users\n\nOutput Format\n2008-06-01 10:30:48 /home/user/bar\n2008-06-02 21:50:41 /home/user/baz\n\n\nFormat: deletion_date original_path\n\ntrash-restore\n\nRestore trashed files to their original location.\n\ntrash-restore                       # Interactive restore\ntrash-restore --overwrite          # Overwrite existing files\ntrash-restore --sort date          # Sort by date (default)\ntrash-restore --sort path          # Sort by path\n\nInteractive Mode\n$ trash-restore\n0 2007-08-30 12:36:00 /home/andrea/foo\n1 2007-08-30 12:39:41 /home/andrea/bar\n2 2007-08-30 12:39:41 /home/andrea/baz\nWhat file to restore [0..2]: 0\n\nEnter the number to restore that file\nUse 0-2,3 to restore multiple files\nUse --overwrite to replace existing files\ntrash-empty\n\nPermanently remove files from trash.\n\ntrash-empty                 # Remove ALL trashed files\ntrash-empty 7              # Remove files older than 7 days\ntrash-empty 1              # Remove files older than 1 day\n\nExamples\n# Delete everything in trash\ntrash-empty\n\n# Keep only files from the last 7 days\ntrash-empty 7\n\n# Keep only today's files\ntrash-empty 1\n\ntrash-rm\n\nRemove specific files from trash (by pattern).\n\ntrash-rm <pattern>         # Remove files matching pattern\ntrash-rm '*.o'             # Remove all .o files\ntrash-rm foo               # Remove all files named \"foo\"\ntrash-rm /full/path        # Remove by original path\n\n\nNote: Use quotes to protect pattern from shell expansion.\n\ntrash-rm '*.log'          # Correct\ntrash-rm *.log            # Wrong - shell will expand\n\nSafety Tips\nReplace rm with trash-put\n\nAdd to .bashrc or .zshrc:\n\n# Remind yourself not to use rm directly\nalias rm='echo \"Use trash-put instead!\"; false'\n\n# Or use a safer alias\nalias rm='trash-put'\n\n\nTo bypass the alias when you really need rm:\n\n\\rm file.txt\n\nRecovery Workflow\nCheck what's in trash: trash-list\nFind your file: trash-list | grep <filename>\nRestore: trash-restore\nTrash Location\nHome partition: ~/.local/share/Trash/\nOther partitions: $mount_point/.Trash/$uid or $mount_point/.Trash-$uid\nLimitations\nDoes not support BRTFS volumes\nCannot trash files from read-only filesystems\nFAQ\nCreating a top-level .Trash directory\n\nIf you need to create a trash directory on a different partition:\n\nsudo mkdir --parent /.Trash\nsudo chmod a+rw /.Trash\nsudo chmod +t /.Trash\n\nShould I alias rm to trash-put?\n\nThe author advises against this. Although trash-put seems compatible with rm, it has different semantics that will cause problems. For example, while rm requires -R for deleting directories, trash-put does not.\n\nInstead, use a warning alias:\n\nalias rm='echo \"This is not the command you are looking for.\"; false'\n\n\nTo bypass when you really need rm:\n\n\\rm file.txt\n\nSee Also\nOfficial GitHub\nFreeDesktop.org Trash Spec"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/xlionjuan/trash-cli",
    "publisherUrl": "https://clawhub.ai/xlionjuan/trash-cli",
    "owner": "xlionjuan",
    "version": "1.0.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/trash-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/trash-cli",
    "agentUrl": "https://openagent3.xyz/skills/trash-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/trash-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/trash-cli/agent.md"
  }
}