add-data-source
Guide the user to add a data source, connection, or API connector to a Canvas App via Power Apps Studio, then verify and…
Adds Office 365 Outlook connector to a Power Apps code app. Use when accessing calendars, sending emails, reading inbox, or managing Outlook events.
Claude Code
$ npx -y skills add microsoft/power-platform-skills --skill add-office365 --agent claude-code
Codex
$ npx skills add microsoft/power-platform-skills --skill add-office365 -a codex -y
Cursor
$ npx skills add microsoft/power-platform-skills --skill add-office365 -a cursor -y
Gemini CLI
$ npx skills add microsoft/power-platform-skills --skill add-office365 -a gemini-cli -y
GitHub Copilot
$ npx skills add microsoft/power-platform-skills --skill add-office365 -a github-copilot -y
OpenCode
$ npx skills add microsoft/power-platform-skills --skill add-office365 -a opencode -y
Windsurf
$ npx skills add microsoft/power-platform-skills --skill add-office365 -a windsurf -y
name: add-office365 description: Adds Office 365 Outlook connector to a Power Apps code app. Use when accessing calendars, sending emails, reading inbox, or managing Outlook events. user-invocable: true allowed-tools: Read, Edit, Write, Grep, Glob, Bash, LSP, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, Skill model: sonnet
**📋 Shared Instructions: [shared-instructions.md](../../shared/shared-instructions.md)** - Cross-cutting concerns.
1. Check Memory Bank -> 2. Add Connector -> 3. Review Generated Service -> 4. Configure -> 5. Build -> 6. Update Memory Bank
---
Check for `memory-bank.md` per [shared-instructions.md](../../shared/shared-instructions.md).
Get the connection as described in [connector-reference.md](../../shared/connector-reference.md#connections).
**CLI 1.3.0+ (`PA_INLINE_CONNECTIONS=yes`):** tell the user that adding Office 365 Outlook may create a connection with their account, then run the add without `-c` and handle the result with the outcome table in connector-reference.md:
pa app add data-source --connector office365 --non-interactive
**Older CLIs:** run `/list-connections` to find the Office 365 Outlook connection ID (API name contains `office365`; if none exists, create one with `pa connection create` as described in connector-reference.md), then:
pa app add data-source --connector office365 -c <connection-id>
The generated service file (`src/generated/services/Office365OutlookService.ts`) is large. **Use `Grep` to find specific methods** instead of reading the entire file:
Grep pattern="async \w+" path="src/generated/services/Office365OutlookService.ts"
Key methods (sorted by common usage):
| Method | Purpose | Key Parameters | | ------------------------- | -------------------------- | -------------------------------------------------------- | | `GetEventsCalendarViewV2` | Get events in a date range | `calendarId`, `startDateTimeOffset`, `endDateTimeOffset` | | `V3CalendarPostItem` | Create a calendar event | `table` (calendar ID), `item` (CalendarEventHtmlClient) | | `CalendarDeleteItem` | Delete an event | `table` (calendar ID), `id` (event ID) | | `CalendarPatchItem` | Update an event | `table`, `id`, `item` | | `V2CalendarGetTables` | List available calendars | (none) |
| Method | Purpose | Key Parameters | | ----------------- | ------------------ | ---------------------------------------- | | `SendEmailV2` | Send an email | `emailMessage` (body, to, subject, etc.) | | `GetEmails` | Get inbox emails | `folderPath`, `fetchOnlyUnread`, `top` | | `GetEmail` | Get single email | `messageId` | | `MarkAsRead` | Mark email as read | `messageId` | | `ReplyToV3` | Reply to an email | `messageId`, `body` | | `Flag` / `Unflag` | Flag/unflag email | `messageId` |
| Method | Purpose | | ------------------- | -------------------- | | `GetContactFolders` | List contact folders | | `ContactGetTables` | List contact tables |
Ask the user what Office 365 Outlook operations they need (skip if already specified by caller).
**Calendar -- Get events for a date range:**
import { Office365OutlookService } from "../generated/services/Office365OutlookService";
const result = await Office365OutlookService.GetEventsCalendarViewV2(
"Calendar", // calendarId -- "Calendar" for default
startDate.toISOString(),
endDate.toISOString()
);
const events = result.data?.value || [];**Calendar -- Create an event:**
await Office365OutlookService.V3CalendarPostItem("Calendar", {
Subject: "Focus Time",
Start: "2025-06-15T10:00:00", // ISO 8601 format
End: "2025-06-15T11:00:00",
ShowAs: "Busy",
Importance: "Normal",
IsAllDay: false,
Body: "<p>Blocked for focus work</p>",
Reminder: 5
});**Calendar -- Delete an event:**
await Office365OutlookService.CalendarDeleteItem("Calendar", eventId);**Email -- Send an email:**
await Office365OutlookService.SendEmailV2({
To: "<recipient-address>",
Subject: "Subject line",
Body: "<p>HTML email body</p>",
Importance: "Normal"
});**Key types:**
| Type | Purpose | | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | `CalendarEventClientReceiveStringEnums` | Read model -- has `Subject`, `Start`, `End`, `Id`, `ShowAs`, `IsAllDay`, `Organizer` | | `CalendarEventHtmlClient` | Write model -- requires `Subject`, `Start`, `End`; optional `Body`, `ShowAs`, `Importance`, `Reminder` | | `EntityListResponse_CalendarEventClientReceiveStringEnums` | Response wrapper -- access events via `.value` |
**Response pattern:**
const result = await Office365OutlookService.GetEventsCalendarViewV2(...);
if (result.success) {
const events = result.data?.value || [];
} else {
console.error("Failed:", result.error);
}npm run build
Fix TypeScript errors before proceeding. Do NOT deploy yet.
Plugins from Microsoft that teach AI assistants, such as GitHub Copilot and Claude Code, to build on Power Platform.
Guide the user to add a data source, connection, or API connector to a Canvas App via Power Apps Studio, then verify and…
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles staged experience design,…
Configure the Canvas Authoring MCP server for the current coauthoring session. Use before starting to edit a canvas app with the…
Use this skill when the user wants to "report a bug", "file an issue", "report an issue", "submit a bug report", or report any…
Adds Azure DevOps connector to a Power Apps code app. Use when querying work items, creating bugs, managing pipelines, or making…
Adds any Power Platform connector to a Power Apps code app. Generic fallback for connectors not covered by a specific skill.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.