aai-cli Microsoft 365
aai-labs/agent-barn
Guides work with Outlook, OneDrive, SharePoint, Teams, Excel, To Do and Planner through aai-cli's Microsoft Graph commands, starting from which service owns the data.
Classifies files in a SharePoint document library by reading their content and matching them to known content types (Contracts, Invoices, Purchase Orders).
$ npx skills add pnp/sharepoint-skills --skill file-classifier -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pnp/sharepoint-skills file-classifier --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pnp/sharepoint-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Skills/file-classifier/file-classifier .claude/skills/file-classifier && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "file-classifier" agent skill from https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifier into .claude/skills/file-classifier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "file-classifier", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifierType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pnp/sharepoint-skills --skill file-classifier -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pnp/sharepoint-skills file-classifier --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pnp/sharepoint-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/Skills/file-classifier/file-classifier .agents/skills/file-classifier && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "file-classifier" agent skill from https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifier into .agents/skills/file-classifier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "file-classifier", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pnp/sharepoint-skills --skill file-classifier -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pnp/sharepoint-skills file-classifier --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pnp/sharepoint-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/Skills/file-classifier/file-classifier .cursor/skills/file-classifier && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "file-classifier" agent skill from https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifier into .cursor/skills/file-classifier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "file-classifier", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pnp/sharepoint-skills.git --path Skills/file-classifier/file-classifier--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pnp/sharepoint-skills --skill file-classifier -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pnp/sharepoint-skills file-classifier --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pnp/sharepoint-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/Skills/file-classifier/file-classifier .gemini/skills/file-classifier && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "file-classifier" agent skill from https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifier into .gemini/skills/file-classifier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "file-classifier", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pnp/sharepoint-skills file-classifierInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pnp/sharepoint-skills --skill file-classifier -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pnp/sharepoint-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/Skills/file-classifier/file-classifier .github/skills/file-classifier && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "file-classifier" agent skill from https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifier into .github/skills/file-classifier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "file-classifier", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pnp/sharepoint-skills --skill file-classifier -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pnp/sharepoint-skills file-classifier --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pnp/sharepoint-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/Skills/file-classifier/file-classifier .opencode/skills/file-classifier && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "file-classifier" agent skill from https://github.com/pnp/sharepoint-skills/tree/main/Skills/file-classifier/file-classifier into .opencode/skills/file-classifier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "file-classifier", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
file-classifierClassifies files in a SharePoint document library by reading their content and matching them to known content types (Contracts, Invoices, Purchase Orders).
File Classifier is an agent skill from pnp/sharepoint-skills. Classifies files in a SharePoint document library by reading their content and matching them to known content types (Contracts, Invoices, Purchase Orders). Creates a File classification Choice column plus 5 metadata columns per content type, extracts values from each file, and writes them back automatically. Use when the user asks to classify, categorize, tag, or auto-label files in a library, or to set up content types with metadata extraction. Trigger phrases: classify files, classify documents, classify…
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering Forms and invoices and Cloud office suites. It works with Microsoft SharePoint. The repository describes itself as: Skills for Copilot in SharePoint. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit aa9eb14. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
File Classifier loads about 4.1k tokens when it runs. Until then it costs about 166 tokens; SKILL.md has 2,003 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pnp/sharepoint-skills at commit aa9eb14, republished under its MIT licence (© pnp). 2,003 words, ~4,104 tokens.
.claude/skills/file-classifier/SKILL.md (or your agent's skills folder).Classify one or more files in a SharePoint document library by reading their content and matching them to a known set of content types. Then:
If the "File classification" column or any metadata columns do not exist, create them as autofill columns with metadata extraction prompts so future uploads are handled automatically.
Classify by document PURPOSE and STRUCTURE — not by keywords alone.
Many contracts include payment terms that reference invoices (e.g., "payment due within 30 days of invoice date"). The word "invoice" appearing in a document does NOT make it an Invoice. Use the structural signals below to determine the correct type.
A Contracts document is a bilateral or multilateral agreement where two or more named parties accept mutual obligations.
Structural signals — look for ALL of these:
A Contract may contain payment terms, fee schedules, or the word "invoice" — this is normal and does NOT change the classification. If the primary purpose of the document is to establish a legal relationship between parties, it is Contracts.
An Invoice is a standalone billing document from a single vendor requesting payment for goods or services already delivered or rendered.
Structural signals — look for ALL of these:
An Invoice is issued by one party to another to trigger a payment. It does not contain signature blocks for two parties, termination clauses, or liability caps.
A Purchase Order is a buyer-issued authorization directing a vendor to supply specific goods or services at agreed terms.
Structural signals — look for ALL of these:
Assign exactly one of:
Map recognized subtypes to their parent type. Never create separate classification values for subtypes.
→ Contracts:
→ Purchase Orders:
→ Invoices:
When uncertain between Contracts and Invoices: if the document has signature blocks for two or more parties and governs ongoing obligations, it is Contracts. If it has a single invoice number and exists solely to request payment, it is Invoices.
Each content type has exactly 5 metadata columns following the pattern: Identifier, Key Party, Critical Date, Financial Amount, Status.
VendorSupplierName (InternalName: VendorSupplierName) is shared across Invoices and Purchase Orders. Before creating any column, check the library schema by internal name. If a column with the same internal name already exists, skip creation and reuse it. Never create a duplicate column.
Apply these when a value cannot be found in the document:
get_list_schema on the target library.create_or_update_list:cat_file. Batch multiple files in a single call.create_or_update_list:get_datetime_info to format before updating.update_list_items_v2.User: "Classify the files in this library"
Agent actions:
File content extraction can fail for individual files — corrupt documents, password protection, unsupported formats, transient cat_file errors, or content too large for a single read. The run must not abort on a single-file failure.
Rules:
cat_file fails for a file, capture the error, mark that file's classification as Unclassified, and move on to the next file. Do not roll back classifications already written.Unclassified and no metadata columns are populated for it. Never guess values to keep the row "complete".Unclassified with the failure reason recorded in the final report.velocity-motors-legal-services-invoice.docx → Unclassified | read failed: password protected.Classified X of Y files. Z failures (see above). so the user can see at a glance whether the run needs follow-up.© pnp, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in Skills/file-classifier/file-classifier of pnp/sharepoint-skills.
Open the folder on GitHubat commit aa9eb14
File Classifier next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| File Classifier this skillpnp/sharepoint-skills | 131 | — | ~4.1k | Automated safety check: Pass | MIT | |
| aai-cli Microsoft 365aai-labs/agent-barn | 109 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Add Excelmicrosoft/power-platform-skills | 967 | — | ~796 | Automated safety check: Notes | MIT | |
| Colleague DistillationZhixiangLuo/10xProductivity | 478 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Msgraphcodemie-ai/codemie-code | 294 | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Workiqmicrosoft/work-iq | 1k | — | ~15k | Automated safety check: Pass | Custom licence |
aai-labs/agent-barn
Guides work with Outlook, OneDrive, SharePoint, Teams, Excel, To Do and Planner through aai-cli's Microsoft Graph commands, starting from which service owns the data.
microsoft/power-platform-skills
Adds Excel Online (Business) connector to a Power Apps code app.
ZhixiangLuo/10xProductivity
Distill a colleague into a reusable AI skill (work + persona) using tool connections — Slack, Slack AI, Jira, GHE, Bitbucket, Confluence, SharePoint, Teams, Outlook, Notion, Linear, Google Docs, and…
codemie-ai/codemie-code
Work with Microsoft 365 services via the Graph API — emails, calendar events, SharePoint sites (read and write), Teams chats and channel messages, OneDrive files, OneNote notebooks, Planner task…
microsoft/work-iq
WorkIQ tools for Microsoft 365 workplace data and actions. An agent skill from microsoft/work-iq.
microsoft/work-iq
WorkIQ tools for Microsoft 365 workplace data and actions. An agent skill from microsoft/work-iq.
pnp/sharepoint-skills
Generates a polished, self-contained HTML heatmap scorecard — a weighted comparison matrix where entities (rows) are scored across dimensions (columns), with computed totals, rank badges, and a…
pnp/sharepoint-skills
Analyze the current SharePoint document library in read-only mode and produce a structured summary of files, folders, file types, recent activity, naming issues, and organization recommendations.
pnp/sharepoint-skills
Audits SharePoint pages, news posts, and hyperlink fields for broken or risky links and saves a self-contained HTML link-health report to the site.
pnp/sharepoint-skills
Analyze selected construction images, create missing object metadata columns, and write concise visual metadata back to SharePoint columns using explicit image-analysis, list-schema, list-update…
pnp/sharepoint-skills
Renders a polished, self-contained HTML briefing from any data source — SharePoint lists, uploaded documents, or a verbal description.
pnp/sharepoint-skills
Generates a polished, self-contained HTML executive report or dashboard from any data source — SharePoint lists, CSV exports, or a user description.
Works with
Categories
Classifies files in a SharePoint document library by reading their content and matching them to known content types (Contracts, Invoices, Purchase Orders). File Classifier is an agent skill from pnp/sharepoint-skills. Classifies files in a SharePoint document library by reading their content and matching them to known content types (Contracts, Invoices, Purchase Orders).
File Classifier fits situations like: the user asks to classify; auto-label files in a library; set up content types with metadata extraction; phrases: classify files.
Run `npx skills add pnp/sharepoint-skills --skill file-classifier -a claude-code`. Or copy the skill folder (Skills/file-classifier/file-classifier in pnp/sharepoint-skills) into .claude/skills/file-classifier in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pnp/sharepoint-skills --skill file-classifier -a codex`. Or copy the skill folder (Skills/file-classifier/file-classifier in pnp/sharepoint-skills) into .agents/skills/file-classifier in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pnp/sharepoint-skills --skill file-classifier -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/file-classifier, .gemini/skills/file-classifier, .github/skills/file-classifier and .opencode/skills/file-classifier in your project.
SKILL.md names no scripts, command-line tools or credentials: File Classifier is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
File Classifier is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with File Classifier: aai-cli Microsoft 365 (aai-labs/agent-barn, 109 stars), Add Excel (microsoft/power-platform-skills, 967 stars), Colleague Distillation (ZhixiangLuo/10xProductivity, 478 stars) and Msgraph (codemie-ai/codemie-code, 294 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pnp (a GitHub organization) maintains it in pnp/sharepoint-skills, which has 131 GitHub stars. The repository holds 51 skills in this directory. The repository was last updated on October 6, 2026.
Source: pnp/sharepoint-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.