name: software-list-export
description: "Export installed software to CSV with versions and likely download URLs. Invoke when the user wants a machine inventory or reinstall list for a new computer."
Software List Export
Use for software inventory and migration prep. Output one CSV the user can review and use as a reinstall checklist on a new computer.
Workflow
- Detect the operating system first: Windows, macOS, or Linux.
- Ask the user first where to save the CSV file and the possible filename (both are optional), otherwise use the current directory, and default name is
software-list-{timestamp}.csv. Use current time as the {timestamp}. - Collect installed software from native sources:
- Windows: Use
scripts/export-software-list.ps1. If fail, prefer winget list, then supplement with uninstall registry entries for software not covered by winget. The checked-in script already implements this Windows workflow and prints raw structured records to stdout. - macOS: prefer
brew list and brew list --cask, include mas list if available, then supplement with /Applications and ~/Applications. - Linux: prefer the distro package manager (
apt, dnf, pacman, zypper), then include flatpak and snap when present.
- Normalize software names, merge duplicates, and keep the most useful version/source details.
- Rank results by yourself, not in the script, you should think, sort and edit the csv directly. The model should place the most user-oriented software first. End-user apps should come before runtimes, redistributables, drivers, SDKs, language packs, browser helpers, and other support components. End user apps often has meanful names.
- For each item, add a likely download or package home URL when it can be determined with reasonable confidence. Do not fabricate URLs. If the URL is not provided directly by CLI or package-manager output, note in
comments that the URL may not be a real download URL. - After processing the raw records, export the final results to a CSV with the columns
name,version,download_url,comments. - Tell the user the path to the CSV file.
Platform Notes
- Windows PowerShell 5 compatibility matters. Avoid newer syntax such as
?? that is only available in later PowerShell versions. scripts/export-software-list.ps1 is Windows-only. Do not run it on macOS or Linux.scripts/export-software-list.ps1 is a raw collector, not a full exporter. It prints structured CLI output and does not write the final CSV file.- On Windows,
winget list output is column-aligned text and may contain wrapped or localized content. Prefer parsing by header column positions instead of splitting on repeated spaces. - Use uninstall registry entries as the conservative fallback on Windows when
winget data is incomplete or ambiguous. - If a URL comes from registry metadata, heuristics, or other non-CLI sources, treat it as a likely vendor or product URL rather than a guaranteed installer link.
- If terminal output shows PSReadLine rendering errors but the export command still reports a valid CSV path and successful completion, treat the export as successful and report the file path to the user.
- When encoding may affect non-ASCII app names, prefer UTF-8 output for the CSV.
- On Windows, common non-user-facing items include
Microsoft Visual C++ Redistributable, .NET, SDK runtimes/targeting packs, drivers, updates, WebView runtimes, and OEM helper components. Push these behind user-facing apps instead of showing them first.
Output Example
name,version,download_url,comments
"TRAE","1.0.0","https://trae.com/","Detected from local installation. Likely reinstallable manually from vendor site."
"Git","2.49.0","https://git-scm.com/downloads","Detected from package manager. Likely reinstallable automatically."
Scripts
- Primary helper:
scripts/export-software-list.ps1 - Scope: Windows only
- Expected usage: run the script on Windows, capture its structured CLI output, then let the model rank/filter the records and write the final CSV separately.
Rules
- Use the language that the user asked for.
- DO NOT read, delete, or modify any files except the CSV file you are creating or editing.
- If there is any agreement required, ask the user first.
- On Windows, prefer running the checked-in helper script before inventing new export logic during the task.
- On macOS and Linux, do not use the Windows helper script.
- Prefer system-native inventory sources before heuristics.
- Keep the helper script focused on collection. Let the model handle ranking, user-facing ordering, and final CSV writing.
- Mark uncertainty in
comments when version, source, or reinstall path is incomplete. - If the URL is not provided in CLI or package-manager output, state in
comments that the URL may not be real or may be a vendor/product page instead of a direct download. - If a package manager export is available, note in
comments whether the app is likely reinstallable automatically or only manually. - On Windows, prefer reliability over coverage: avoid aggressive matching that creates false duplicates between registry entries and
winget results. - Prefer a user-friendly ordering. Sort user-facing apps first, and de-prioritize infrastructure entries such as redistributables, runtimes, frameworks, patches, drivers, SDKs, and similar dependencies.