microsoft/grab-my-files
Bundle every file the agent produced in this session into a single timestamped .zip and hand it back as a download. Use when the user asks to "export all produced files", "zip my files", "package everything you made", "bundle my files", "give me all the files", or similar. Files are read from /app/created/. Do NOT use to fetch a single named file the user can already download on its own, to create or convert a file, or to save/persist files to SharePoint, OneDrive, or Dataverse — those are separate flows, not a local zip-and-download.
npx skills add https://github.com/microsoft/cat-agent-skills --skill grab-my-files
Invoke when the user says anything like:
If the user names a subset ("just the PDFs", "only the report"), honor that and zip
only the matching files, but still follow the rules below.
/app/created/ recursively so nested outputs(e.g. /app/created/charts/foo.png) are included, not just top-level files.
all_files_produced_*.zip), and.DS_Store, Thumbs.db, *.tmp, dotfiles).first, then delete any *other* all_files_produced_*.zip in /app/created/.
Doing it in this order means a failed build never destroys the user's previous
bundle, and no old export gets nested inside the new one.
produced files to export and stop — do not create an empty zip.
all_files_produced_<YYYYMMDD_HHMMSS>.zip — a sortable,UTC timestamp — and write it to /app/created/.
restore to the same subfolders they came from.
.zip to the user as a download — don't justreport that it was created. In Copilot Studio, writing the file to /app/created/
surfaces it as a downloadable attachment; make sure the user gets that link.
After the zip is written, reply with:
> I've packaged 3 file(s) into all_files_produced_20260724_215812.zip:
> - onboarding_overview.pdf
> - onboarding_overview.docx
> - charts/headcount.png
>
> It's attached above and ready to download. 📦
Take microsoft/grab-my-files from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.