Skip to content

feat(ai): Add SharePoint Embedded agent skills for autonomous setup#216

Open
gnjoseph wants to merge 1 commit intomainfrom
feature/spe-agent-skills
Open

feat(ai): Add SharePoint Embedded agent skills for autonomous setup#216
gnjoseph wants to merge 1 commit intomainfrom
feature/spe-agent-skills

Conversation

@gnjoseph
Copy link
Copy Markdown
Collaborator

@gnjoseph gnjoseph commented Apr 22, 2026

Summary

Agent Skills package (agentskills.io spec) for autonomous SharePoint Embedded setup. Two user interactions (az login + browser sign-in), zero portal visits, zero secrets.

What it does

  1. Azure CLI login
  2. Entra app registration (public client, SPE permissions)
  3. Interactive browser auth (auth code + PKCE)
  4. Container type + tenant registration
  5. Container + proof file + preview link

Usage

Agent:

Read AI/skills/full-setup/SKILL.md and set up SPE on my tenant

Manual:

cd AI/skills/full-setup
.\spe-setup.ps1

Prerequisites

Azure CLI, PowerShell 5.1+, tenant admin access

Adds an Agent Skills package (agentskills.io spec) that enables AI coding agents
to set up a complete SharePoint Embedded environment autonomously.

What it does (Steps 1-5):
1. Azure CLI login (interactive browser)
2. Entra app registration with SPE permissions (public client, no secrets)
3. SPE token via interactive browser login (auth code + PKCE, device code fallback)
4. Container type creation + tenant registration
5. Container creation, activation, proof file upload, preview link

Security:
- Interactive auth (auth code + PKCE) as primary flow, not device code
- BYO App validates public client before auth
- Read-Host confirmation before all delete operations
- ExecutionPolicy consent check before running
- v1.0 Graph API endpoints where available (beta-only endpoints documented)

Usage:
  Give an AI agent: 'Read AI/skills/full-setup/SKILL.md and set up SPE on my tenant'
  Or run manually: cd AI/skills/full-setup && .\spe-setup.ps1

Prerequisites: Azure CLI, PowerShell 5.1+, tenant admin access

for ($attempt = 1; $attempt -le $MaxRetries; $attempt++) {
try {
return Invoke-RestMethod @params
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we set, for example, a User-Agent header here that would give us an idea of which requests are coming from this skill?

Comment thread AI/skills/SKILL.md
Comment on lines +15 to +17
| [container-management/](container-management/SKILL.md) | Day-2 container operations (list, inspect, archive, delete, permissions) |
| [content-operations/](content-operations/SKILL.md) | File and folder operations inside containers |
| [billing-setup/](billing-setup/SKILL.md) | Production billing configuration |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These files don't exist.

Comment thread AI/skills/SKILL.md
Give an agent this prompt:

```
Read Skills/full-setup/SKILL.md and run the SPE setup scripts to set up SharePoint Embedded on my tenant.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Casing of Skills doesn't match the skills folder name

Comment thread AI/skills/SKILL.md
Or run it yourself:

```powershell
cd Skills/full-setup
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Casing of Skills doesn't match the skills folder name

Comment thread AI/skills/SKILL.md

- Azure CLI (`az --version`)
- PowerShell 5.1+ or 7+
- Tenant admin access (Global Admin or Application Admin)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By the way this is worded, it seems that an Application Admin is sufficient for this process. Is that true?


Present **every line** from the RESULT block as a markdown table. Do not drop URL lines.

## Step-specific notes
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The term "Step" for this skill is overloaded. Internally there are 9 steps, but the files are named in a way that they seem to represent the steps too.

Perhaps call the higher level ones Stages or relabel inner steps as substeps (that is, instead of 02 script containing steps 2 and 3, it has just step 2 but has sub-steps 2.1 and 2.2)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants