Full Code of microsoft/FastTrack for AI

master 7b43c17bf922 cached
283 files
29.3 MB
1.1M tokens
10 symbols
1 requests
Download .txt
Showing preview only (4,245K chars total). Download the full file or copy to clipboard to get everything.
Repository: microsoft/FastTrack
Branch: master
Commit: 7b43c17bf922
Files: 283
Total size: 29.3 MB

Directory structure:
gitextract_rnp3453x/

├── .github/
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── plugin/
│   │   └── marketplace.json
│   └── workflows/
│       ├── traffic-stats.yml
│       └── update-message-center.yml
├── .gitignore
├── .vscode/
│   └── settings.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE-CODE
├── README.md
├── SECURITY.MD
├── TEMPLATE-README.md
├── copilot-agent-samples/
│   ├── README.md
│   ├── _SAMPLE_Templates/
│   │   ├── ca-NameOfAgent/
│   │   │   └── ca-NameOfAgent.md
│   │   └── da-NameOfAgent/
│   │       └── da-NameOfAgent.md
│   ├── agent-builder-agents/
│   │   ├── README.md
│   │   ├── archive/
│   │   │   ├── README.md
│   │   │   ├── da-CompareDocs/
│   │   │   │   └── README.md
│   │   │   ├── da-DeepResearch/
│   │   │   │   └── README.md
│   │   │   ├── da-ManagerSimulator/
│   │   │   │   └── README.md
│   │   │   ├── da-OmniAgent/
│   │   │   │   └── README.md
│   │   │   └── da-ReasoningAgent/
│   │   │       └── README.md
│   │   ├── da-CompareDocs/
│   │   │   └── README.md
│   │   ├── da-DeepResearch/
│   │   │   └── README.md
│   │   ├── da-ManagerSimulator/
│   │   │   └── README.md
│   │   ├── da-OmniAgent/
│   │   │   └── README.md
│   │   ├── da-ReasoningAgent/
│   │   │   └── README.md
│   │   └── da-VibeWritingAgent/
│   │       └── README.md
│   ├── copilot-studio-agents/
│   │   ├── README.md
│   │   ├── ca-AutoReplyAgent/
│   │   │   └── README.md
│   │   ├── ca-PowerClawAgent/
│   │   │   ├── .gitignore
│   │   │   ├── PowerClaw/
│   │   │   │   ├── actions/
│   │   │   │   │   ├── MicrosoftTeams-Postmessageinachatorchannel.mcs.yml
│   │   │   │   │   ├── Office365Outlook-SendanemailV2.mcs.yml
│   │   │   │   │   ├── WorkIQCalendarMCP-WorkIQCalendarPreview.mcs.yml
│   │   │   │   │   ├── WorkIQCopilotMCP-WorkIQCopilotPreview.mcs.yml
│   │   │   │   │   ├── WorkIQMailMCP-WorkIQMailPreview.mcs.yml
│   │   │   │   │   ├── WorkIQSharePointMCP-WorkIQSharePointPreview.mcs.yml
│   │   │   │   │   ├── WorkIQTeamsMCP-WorkIQTeamsPreview.mcs.yml
│   │   │   │   │   ├── WorkIQUserMCP-WorkIQUserPreview.mcs.yml
│   │   │   │   │   └── WorkIQWordMCP-WorkIQWordPreview.mcs.yml
│   │   │   │   ├── agent.mcs.yml
│   │   │   │   ├── connectionreferences.mcs.yml
│   │   │   │   ├── settings.mcs.yml
│   │   │   │   ├── topics/
│   │   │   │   │   ├── ConversationInit.mcs.yml
│   │   │   │   │   ├── ConversationStart.mcs.yml
│   │   │   │   │   ├── DailyDigest.mcs.yml
│   │   │   │   │   ├── EndofConversation.mcs.yml
│   │   │   │   │   ├── Escalate.mcs.yml
│   │   │   │   │   ├── Fallback.mcs.yml
│   │   │   │   │   ├── Goodbye.mcs.yml
│   │   │   │   │   ├── MultipleTopicsMatched.mcs.yml
│   │   │   │   │   ├── OnError.mcs.yml
│   │   │   │   │   ├── ResetConversation.mcs.yml
│   │   │   │   │   ├── Search.mcs.yml
│   │   │   │   │   ├── Signin.mcs.yml
│   │   │   │   │   ├── StartOver.mcs.yml
│   │   │   │   │   └── ThankYou.mcs.yml
│   │   │   │   ├── trigger/
│   │   │   │   │   └── RecurringCopilotTrigge.29c73850-0823-4027-a0b8-254d6dc2d00.mcs.yml
│   │   │   │   ├── variables/
│   │   │   │   │   ├── AgentsText.mcs.yml
│   │   │   │   │   ├── SoulText.mcs.yml
│   │   │   │   │   ├── ToolsText.mcs.yml
│   │   │   │   │   └── UserText.mcs.yml
│   │   │   │   └── workflows/
│   │   │   │       ├── GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/
│   │   │   │       │   ├── metadata.yml
│   │   │   │       │   └── workflow.json
│   │   │   │       ├── HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/
│   │   │   │       │   ├── metadata.yml
│   │   │   │       │   └── workflow.json
│   │   │   │       └── Housekeeping-fca80a5d-72c0-fb6b-dbc9-eb8b74fdba44/
│   │   │   │           ├── metadata.yml
│   │   │   │           └── workflow.json
│   │   │   ├── PowerClaw-Overview.pptx
│   │   │   ├── README.md
│   │   │   ├── SETUP.md
│   │   │   ├── docs/
│   │   │   │   └── MANUAL-SETUP.md
│   │   │   ├── scripts/
│   │   │   │   └── Setup-PowerClaw.ps1
│   │   │   └── skills/
│   │   │       ├── README.md
│   │   │       ├── _skill-template.md
│   │   │       ├── agent-fleet-governor.md
│   │   │       ├── commitment-tracker.md
│   │   │       ├── decision-memo-builder.md
│   │   │       ├── executive-radar.md
│   │   │       ├── meeting-copilot-loop.md
│   │   │       ├── stakeholder-brief.md
│   │   │       ├── weekly-status-report.md
│   │   │       └── workplace-intelligence-monitor.md
│   │   └── ca-ProductQuoteAgent/
│   │       └── README.md
│   ├── github-copilot-agents/
│   │   └── Council/
│   │       ├── README.md
│   │       ├── agents/
│   │       │   └── council.agent.md
│   │       └── plugin.json
│   └── github-copilot-skills/
│       └── copilot-studio-workflow/
│           ├── CHANGELOG.md
│           ├── README.md
│           ├── SKILL.md
│           ├── docs/
│           │   └── showcase.html
│           ├── plugin.json
│           ├── reference/
│           │   ├── gotchas.md
│           │   └── workflow-guide.md
│           └── scripts/
│               ├── cps-add-component.ps1
│               ├── cps-preflight.ps1
│               ├── cps-revert.ps1
│               └── cps-status.ps1
├── copilot-agent-strategy/
│   ├── README.md
│   ├── copilot-agent-brainstorm/
│   │   ├── Copilot Agent Brainstorming.pptx
│   │   └── README.md
│   ├── copilot-agents-cost-tool/
│   │   ├── GUIDE.md
│   │   ├── README.md
│   │   └── index.html
│   └── copilot-agents-guide/
│       ├── README.md
│       └── index.html
├── copilot-analytics-samples/
│   ├── Copilot_Audit_PBI/
│   │   ├── AlternateMethod/
│   │   │   └── Copilot_Audit_PBI.pbix
│   │   ├── Copilot_Audit_PBI.pbix
│   │   ├── Export-M365CopilotReports.ps1
│   │   └── README.md
│   ├── README.md
│   ├── VivaInsights-Copilot-Dashboard-Sample/
│   │   ├── Analyze Column Headers.xlsx
│   │   ├── BYO-CopilotDashboard - Dynamic Personas.pbix
│   │   ├── BYO-CopilotDashboard.pbix
│   │   ├── Build your Own Copilot Dashboard Sample.docx
│   │   ├── README.md
│   │   └── Sample-VivaInsights-PersonQuery-Export.Csv
│   ├── _SAMPLE_Templates/
│   │   └── README.md
│   └── copilot-usage-users-and-apps/
│       ├── Copilot Usage - Users and Apps.pbix
│       └── README.md
├── copilot-prompt-samples/
│   ├── README.md
│   └── Researcher-OrganizationInsights.md
├── index.html
├── samples/
│   ├── Viva-Engage-Community-Creation-App/
│   │   ├── AppImportInstructions.docx
│   │   └── README.md
│   ├── teams-audioconferencing-snippets/
│   │   └── README.md
│   ├── teams-phonesystem-snippets/
│   │   └── README.md
│   ├── teams-rooms-snippets/
│   │   ├── README.md
│   │   └── resource-accounts.csv
│   └── teams-upgrade-snippets/
│       └── README.md
├── scripts/
│   ├── Add-YammerGroupAdmins/
│   │   ├── Add-YammerGroupAdmins.ps1
│   │   └── README.md
│   ├── AddRemove-OneDriveSecondaryAdmin/
│   │   ├── AddRemove-OneDriveSecondaryAdmin.ps1
│   │   └── README.md
│   ├── Analyze-SharePointRisk/
│   │   ├── Analyze-SharePointRisk.ps1
│   │   ├── Permissioned_Users_Count_SharePoint_report_2025-09-29_scrubbed.csv
│   │   └── README.md
│   ├── Create-EngageCommunities/
│   │   ├── Create-EngageCommunities.ps1
│   │   ├── README.md
│   │   └── communities.json
│   ├── Delete-AllCommunityPosts/
│   │   ├── Delete-AllCommunityPosts.ps1
│   │   └── README.md
│   ├── Delete-YammerGroups/
│   │   ├── Delete-YammerGroups.ps1
│   │   └── README.md
│   ├── Delete-YammerUsers/
│   │   ├── Delete-YammerUsers.ps1
│   │   └── README.md
│   ├── Disable-InsightsHeadSpace/
│   │   ├── Disable-InsightsHeadSpace.ps1
│   │   └── README.md
│   ├── Disable-TeamifyPrompt/
│   │   ├── Disable-TeamifyPrompt.ps1
│   │   └── README.md
│   ├── Disable-TeamsAudioVideo/
│   │   ├── Disable-TeamsAudioVideo.ps1
│   │   └── README.md
│   ├── Export-M365CopilotReports/
│   │   ├── Export-M365CopilotReports.ps1
│   │   └── README.md
│   ├── Export-SimplePlacesVIsual/
│   │   ├── Export-SimplePlacesVisual.ps1
│   │   └── README.md
│   ├── Export-YammerFiles/
│   │   ├── Export-YammerFiles.ps1
│   │   └── README.md
│   ├── Export-YammerNetworkData/
│   │   ├── Export-YammerNetworkData.ps1
│   │   └── README.md
│   ├── Find-MailboxDelegates/
│   │   ├── Find-MailboxDelegates-GUIDE.docx
│   │   ├── Find-MailboxDelegates.ps1
│   │   └── README.md
│   ├── Find-MailboxDelegates batch analysis/
│   │   ├── BatchAnalysis-generic.xlsm
│   │   └── README.md
│   ├── Get-AADAdminRoleMembers/
│   │   ├── Get-AADAdminRoleMembers.ps1
│   │   └── README.md
│   ├── Get-AgentCQFinder/
│   │   ├── Get-AgentCQFinder.ps1
│   │   └── readme.md
│   ├── Get-AllInsightsLicensedUsers/
│   │   ├── Get-AllInsightsLicensedUsers.ps1
│   │   └── README.md
│   ├── Get-AuditGuestTeams/
│   │   ├── Get-AuditGuestTeams.ps1
│   │   └── readme.md
│   ├── Get-DocLibInventory/
│   │   ├── Get-DocLibInventory.ps1
│   │   ├── Lib/
│   │   │   └── Lib.psm1
│   │   └── README.md
│   ├── Get-FullOwnerReport/
│   │   ├── Get-FullOwnerReport.ps1
│   │   └── README.md
│   ├── Get-FullTeamsReport/
│   │   ├── Get-FullTeamsReport.ps1
│   │   └── README.md
│   ├── Get-GroupsMembersManagers/
│   │   ├── Get-GroupsMembersManagers.ps1
│   │   └── README.md
│   ├── Get-GroupsTeamsSites/
│   │   ├── Get-GroupsTeamsSites.ps1
│   │   └── README.md
│   ├── Get-LicenseUsage/
│   │   ├── Get-LicenseUsage.ps1
│   │   └── README.md
│   ├── Get-LicensingInfo/
│   │   ├── Get-LicensingInfo.ps1
│   │   └── README.md
│   ├── Get-ListUsage/
│   │   ├── Get-ListUsage.ps1
│   │   └── README.md
│   ├── Get-M365CopilotReadiness/
│   │   ├── Get-M365CopilotReadiness.ps1
│   │   ├── README.md
│   │   ├── copilot-readiness.html
│   │   └── copilot-readiness.json
│   ├── Get-MgUserVoicemailReport/
│   │   ├── Get-MgUserVoicemailReport.ps1
│   │   └── README.md
│   ├── Get-MigrationToTeamsDNSCheck/
│   │   ├── MigrationToTeamsDNSCheck V1.7.ps1
│   │   └── README.md
│   ├── Get-OD4BExternalUsers/
│   │   ├── Get-OD4BExternalUsers.ps1
│   │   └── README.md
│   ├── Get-ODBUsage/
│   │   ├── Get-ODBUsage.ps1
│   │   └── README.md
│   ├── Get-RecurringTeamsMeetings/
│   │   ├── Get-RecurringTeamsMeetings.ps1
│   │   ├── README.md
│   │   └── sample-csv-file.csv
│   ├── Get-SharedChannelsUserIsPartOf/
│   │   ├── Get-SharedChannelsUserIsPartOf.ps1
│   │   └── README.md
│   ├── Get-TeamVisibilityAndOwnerReport/
│   │   ├── Get-TeamVisibilityAndOwnerReport.ps1
│   │   └── README.md
│   ├── Get-TeamsChannelUsersReport/
│   │   ├── Get-TeamsChannelUsersReport.ps1
│   │   └── README.md
│   ├── Get-TeamsUserActivityReport/
│   │   ├── Get-TeamsUserActivityReport.ps1
│   │   ├── README.md
│   │   └── sample-csv-file.csv
│   ├── Get-YammerGroupInfo/
│   │   ├── Get-YammerGroupInfo.ps1
│   │   └── README.MD
│   ├── Get-YammerPrivateContentModeAdmins/
│   │   ├── Get-YammerPrivateContentModeAdmins.ps1
│   │   └── README.md
│   ├── Get-YammerSiteSize/
│   │   ├── Get-YammerSiteSize.ps1
│   │   └── README.md
│   ├── Merge-SPMTResults/
│   │   ├── Merge-SPMTResults.ps1
│   │   └── README.md
│   ├── Preflight-OneDrive/
│   │   ├── Preflight-OneDrive.ps1
│   │   └── README.md
│   ├── Set-ForwardingSMTPAddress/
│   │   ├── README.md
│   │   ├── Set-ForwardingSMTPAddress.ps1
│   │   └── users.csv
│   ├── Teams Phone User Migration/
│   │   ├── Contoso_List_Users_TeamsVoicePoliciesAndNumbers.csv
│   │   ├── Phone Number and EV - user assignment - Phase 2 - Cutover.ps1
│   │   ├── README.md
│   │   └── Voice related policies - user assignment - Phase 1.ps1
│   ├── Update-BookingsAdminPermissions/
│   │   ├── README.md
│   │   └── Update-BookingsAdminPermissions.ps1
│   ├── Update-TeamsLicense/
│   │   ├── README.md
│   │   └── Update-TeamsLicense.ps1
│   ├── Update-VivaEngageLicensingToggle/
│   │   ├── BlockUsersWithoutLicense.ps1
│   │   └── README.md
│   ├── get-siteinventory/
│   │   ├── .gitignore
│   │   ├── Get-Inventory.ps1
│   │   ├── Get-WebInventory.ps1
│   │   ├── Lib/
│   │   │   └── Lib.psm1
│   │   └── README.md
│   ├── get-teamsusage/
│   │   ├── Get-TeamsUsage.ps1
│   │   └── README.md
│   ├── move-team/
│   │   ├── Move-Team.ps1
│   │   ├── README.md
│   │   └── TODO.md
│   ├── split-spmtlogerrors/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   └── Split-SPMTLogErrors.ps1
│   └── update-message-center.js
├── tools/
│   └── SimpleGraph/
│       ├── README.md
│       └── SimpleGraph.psm1
└── traffic-data/
    ├── 2026-04-07.json
    ├── 2026-04-08.json
    ├── 2026-04-09.json
    ├── 2026-04-10.json
    ├── 2026-04-11.json
    ├── 2026-04-12.json
    ├── 2026-04-13.json
    ├── 2026-04-14.json
    ├── 2026-04-15.json
    ├── 2026-04-20.json
    ├── 2026-04-22.json
    ├── 2026-04-27.json
    ├── 2026-04-28.json
    ├── 2026-04-30.json
    ├── 2026-05-01.json
    ├── 2026-05-04.json
    ├── 2026-05-05.json
    ├── 2026-05-07.json
    ├── 2026-05-08.json
    ├── 2026-05-09.json
    ├── 2026-05-13.json
    ├── 2026-05-14.json
    ├── 2026-05-15.json
    ├── 2026-05-16.json
    ├── 2026-05-17.json
    ├── 2026-05-18.json
    ├── 2026-05-19.json
    └── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
Thank you for reporting an issue, making a suggestion, or asking a question. We appreciate your feedback - to help the team understand your
needs please complete the below template to ensure we have the details to respond. Thanks!

# Category
- [ ] Suggested sample, script, or tool
- [ ] Bug in existing sample, script, or tool
- [ ] Question / Feedback


# Instructions
*Delete this section after reading*
* All suggestions, questions and issues related to FastTrack OSS are welcome, please let us know what's on your mind.
* This is not a general support forum for FastTrack, questions should be related to an existing or proposed OSS contribution
* Remember to include sufficient details and context
* If you have multiple suggestions, questions, or bugs please submit them in seperate issues so we can track resolution
* Complete the section below that matches your need and delete the others
* Thank you for your feedback!

# Issue Details

## Suggested Sample, Script, or Tool

_Please described the sample, script or tool you think would be useful. Ensure you provide enough detail for us to understand and include the use case(s) covered. Samples, scripts, and tool should be generic and applicable to a wide range of customers._


## Bug in existing sample, script, or tool

### Expected / Desired Behavior
_Please describe the expected behavior._

### Observed Behavior
_Please describe the behavior that occured._

### Steps to Reproduce
_Please describe the steps to reproduce the bug in sufficient detail to allow testing._


## Question / Feedback

_Ask away! - but remember this isn't a general support forum for FastTrack. Questions should be related to the OSS projects._



================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
# Category
- [ ] Bug fix
- [ ] New script
- [ ] New sample

# Instructions
_You can delete this section after reading._
* Please update this PR information accordingly. We'll use this as part of our release notes in monthly communications.
* Ensure you have updated any associated docs files based on your code changes
* Ensure you have followed the contributing guidance

# Related Issues

fixes #X, mentioned in #Y

# What's in this Pull Request?

_Please describe the changes in this PR with sufficient detail so we can understand what you've done. Please check back to see if we have any follow-up questions._




================================================
FILE: .github/plugin/marketplace.json
================================================
{
  "name": "fasttrack-copilot-plugins",
  "owner": {
    "name": "Microsoft FastTrack",
    "email": "ftgithub@microsoft.com"
  },
  "metadata": {
    "description": "Copilot CLI plugins from the Microsoft FastTrack repository — agent templates and tools to accelerate Microsoft 365 Copilot adoption.",
    "version": "1.0.0"
  },
  "plugins": [
    {
      "name": "council",
      "description": "Multi-model deliberation — Claude, GPT & Gemini debate any question. Generates decision packages with interactive HTML dashboards.",
      "version": "1.0.0",
      "source": "copilot-agent-samples/github-copilot-agents/Council"
    }
  ]
}


================================================
FILE: .github/workflows/traffic-stats.yml
================================================
name: Collect Traffic Data

on:
  schedule:
    # Runs daily at 06:00 UTC to capture traffic before the 14-day window expires
    - cron: "0 6 * * *"
  workflow_dispatch: # Allow manual runs

permissions:
  contents: write
  pull-requests: write

concurrency:
  group: traffic-data-collection
  cancel-in-progress: false

jobs:
  collect-traffic:
    if: github.repository == 'microsoft/FastTrack'
    runs-on: ubuntu-latest
    timeout-minutes: 10

    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Collect and persist traffic data
        env:
          GH_TOKEN: ${{ secrets.TRAFFIC_TOKEN }}
        run: |
          set -euo pipefail

          REPO="microsoft/FastTrack"
          REPO_OWNER="${REPO%/*}"
          REPO_NAME="${REPO#*/}"
          DATA_DIR="traffic-data"
          DATE=$(date -u +"%Y-%m-%d")

          gh_api_retry() {
            local max_attempts=3
            local delay=5
            local attempt=1
            local output
            while [ "$attempt" -le "$max_attempts" ]; do
              if output=$(gh api "$@" 2>/dev/null); then
                printf '%s' "$output"
                return 0
              fi
              echo "::warning::gh api attempt $attempt/$max_attempts failed, retrying in ${delay}s..." >&2
              sleep "$delay"
              delay=$((delay * 2))
              attempt=$((attempt + 1))
            done
            return 1
          }

          fetch_required_json() {
            local label="$1"
            local endpoint="$2"
            local response

            if ! response=$(gh_api_retry "$endpoint"); then
              echo "::error::Failed to fetch $label after retries"
              exit 1
            fi

            if ! printf '%s' "$response" | jq -e . >/dev/null 2>&1; then
              echo "::error::Invalid JSON returned for $label"
              exit 1
            fi

            printf '%s' "$response"
          }

          mkdir -p "$DATA_DIR"

          echo "📊 Fetching traffic data for $REPO on $DATE..."

          # Fetch all four traffic endpoints
          views=$(fetch_required_json "views" "repos/$REPO/traffic/views")
          clones=$(fetch_required_json "clones" "repos/$REPO/traffic/clones")
          referrers=$(fetch_required_json "referrers" "repos/$REPO/traffic/popular/referrers")
          paths=$(fetch_required_json "paths" "repos/$REPO/traffic/popular/paths")

          # Build a combined JSON snapshot for today

          # Fetch star/fork metadata with graceful fallback
          echo "⭐ Fetching repository metadata..."
          star_count=0
          forks_count=0
          repo_metadata="{}"

          if repo_response=$(gh_api_retry "repos/$REPO"); then
            if printf '%s' "$repo_response" | jq -e . >/dev/null 2>&1; then
              repo_metadata="$repo_response"
              star_count=$(printf '%s' "$repo_metadata" | jq -r '.stargazers_count // 0' 2>/dev/null || printf '0')
              forks_count=$(printf '%s' "$repo_metadata" | jq -r '.forks_count // 0' 2>/dev/null || printf '0')
            else
              echo "::warning::Invalid JSON returned for repository metadata. Using fallback values."
            fi
          else
            echo "::warning::Failed to fetch repository metadata. Using fallback values."
          fi

          # Fetch stargazer timeline (with starred_at dates)
          echo "📅 Fetching stargazer timeline..."
          star_timeline="[]"
          if star_timeline_response=$(gh_api_retry --paginate --slurp \
            -H "Accept: application/vnd.github.star+json" \
            "repos/$REPO/stargazers"); then
            if star_timeline_json=$(printf '%s' "$star_timeline_response" | jq -ce '[.[].[]? | .starred_at | select(type == "string" and length > 0)] | sort' 2>/dev/null); then
              star_timeline="$star_timeline_json"
            else
              echo "::warning::Failed to parse stargazer timeline. Using empty array."
            fi
          else
            echo "::warning::Failed to fetch stargazer timeline. Using empty array."
          fi

          # Fetch a sample of stargazer locations (last 30 stargazers) in one GraphQL call
          echo "🌍 Fetching stargazer locations..."
          locations="[]"
          location_query='query($owner: String!, $name: String!) {
            repository(owner: $owner, name: $name) {
              stargazers(last: 30) {
                nodes {
                  ... on User {
                    location
                  }
                }
              }
            }
          }'

          if location_response=$(gh_api_retry graphql \
            -f query="$location_query" \
            -F owner="$REPO_OWNER" \
            -F name="$REPO_NAME"); then
            if location_json=$(printf '%s' "$location_response" | jq -ce '
              if ((.errors // []) | length) > 0 then
                error("graphql errors")
              else
                [.data.repository.stargazers.nodes[]?.location | select(type == "string" and length > 0)]
              end
            ' 2>/dev/null); then
              locations="$location_json"
            else
              echo "::warning::Failed to parse stargazer locations. Using empty array."
            fi
          else
            echo "::warning::Failed to fetch stargazer locations. Using empty array."
          fi

          # Build combined JSON snapshot
          jq -n \
            --arg date "$DATE" \
            --argjson views "$views" \
            --argjson clones "$clones" \
            --argjson referrers "$referrers" \
            --argjson paths "$paths" \
            --argjson star_count "$star_count" \
            --argjson forks_count "$forks_count" \
            --argjson star_timeline "$star_timeline" \
            --argjson stargazer_locations "$locations" \
            '{
              collected_at: $date,
              views: $views,
              clones: $clones,
              referrers: $referrers,
              paths: $paths,
              stars: $star_count,
              forks: $forks_count,
              star_timeline: $star_timeline,
              stargazer_locations: $stargazer_locations
            }' > "$DATA_DIR/$DATE.json"

          echo "✅ Saved $DATA_DIR/$DATE.json"

      - name: Commit and open PR
        env:
          GH_TOKEN: ${{ secrets.TRAFFIC_TOKEN }}
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add traffic-data/
          if git diff --cached --quiet; then
            echo "No changes to commit"
            exit 0
          fi

          DATE=$(date -u +%Y-%m-%d)
          BRANCH="traffic-data/$DATE"

          # Create a fresh branch and push
          git checkout -b "$BRANCH"
          git commit -m "📊 Traffic data for $DATE"
          git push --set-upstream origin "$BRANCH"

          # Create or update PR (--fill uses commit message as title/body)
          existing_pr=$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number // empty')
          if [ -n "$existing_pr" ]; then
            echo "PR #$existing_pr already exists for $BRANCH"
          else
            gh pr create \
              --title "📊 Traffic data for $DATE" \
              --body "Automated daily traffic data collection." \
              --head "$BRANCH" \
              --base master
            echo "✅ PR created"
          fi

          # Enable auto-merge (requires repo setting "Allow auto-merge" to be on)
          pr_number=$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number')
          if [ -n "$pr_number" ]; then
            gh pr merge "$pr_number" --auto --squash \
              && echo "✅ Auto-merge enabled for PR #$pr_number" \
              || echo "::warning::Could not enable auto-merge — check repo settings"
          fi


================================================
FILE: .github/workflows/update-message-center.yml
================================================
name: Update Message Center Posts

on:
  schedule:
    # Runs every Monday at 7:00 AM UTC
    - cron: '0 7 * * 1'
  workflow_dispatch: # Allow manual trigger

permissions:
  contents: write
  pull-requests: write

jobs:
  update-message-center:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Set up Node.js
        uses: actions/setup-node@v5
        with:
          node-version: '22'

      - name: Update message center posts
        run: node scripts/update-message-center.js

      - name: Check for changes
        id: changes
        run: |
          git diff --quiet copilot-agent-strategy/copilot-agents-guide/index.html && echo "changed=false" >> "$GITHUB_OUTPUT" || echo "changed=true" >> "$GITHUB_OUTPUT"

      - name: Commit and open PR
        if: steps.changes.outputs.changed == 'true'
        env:
          GH_TOKEN: ${{ secrets.TRAFFIC_TOKEN }}
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git add copilot-agent-strategy/copilot-agents-guide/index.html

          DATE=$(date -u +%Y-%m-%d)
          BRANCH="message-center/$DATE"

          git checkout -b "$BRANCH"
          git commit -m "chore: weekly message center posts refresh $DATE"
          git push --set-upstream origin "$BRANCH"

          # Create PR if one doesn't already exist
          existing_pr=$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number // empty')
          if [ -n "$existing_pr" ]; then
            echo "PR #$existing_pr already exists for $BRANCH"
          else
            gh pr create \
              --title "chore: weekly message center posts refresh $DATE" \
              --body "Automated weekly message center data update." \
              --head "$BRANCH" \
              --base master
            echo "✅ PR created"
          fi

          # Enable auto-merge
          pr_number=$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number')
          if [ -n "$pr_number" ]; then
            gh pr merge "$pr_number" --auto --squash \
              && echo "✅ Auto-merge enabled for PR #$pr_number" \
              || echo "::warning::Could not enable auto-merge — check repo settings"
          fi


================================================
FILE: .gitignore
================================================
.vscode/launch.json


================================================
FILE: .vscode/settings.json
================================================
{
    "githubPullRequests.ignoredPullRequestBranches": [
        "master"
    ],
    "sarif-viewer.connectToGithubCodeScanning": "off"
}

================================================
FILE: CHANGELOG.md
================================================
# Change Log

Updated when changes are made within this repo to provide a record.

## April 20, 2018

### New Samples

* Added create team sample showing SharePoint Framework field customizer, PnPjs, React, Graph, and TypeScript


================================================
FILE: CONTRIBUTING.md
================================================
# Contribute to Microsoft FastTrack

Thank you for your interest in contributing to Microsoft FastTrack's open source program! This article outlines the guidance you should follow to ensure we can accept your contribution. If you have any questions please open an issue so we help get things sorted.

## All Contributions

The details in this section apply to all contributions.

* Create a branch for you contributions, we will not accept contributions from a MASTER branch [How-To](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/) | [Why](https://guides.github.com/introduction/flow/index.html)
* Before sending a pull request, please sync/update your branch with our master HEAD
* Contributions MUST NOT contain any PII, company specific information, or other private details
* Contributions MUST NOT contain any software, references, dependencies, or "copied" code that would break our [license](LICENSE)
* Each PR should contain one thing - a bug fix, new script, new sample, etc

## New Samples & Scripts

* Include sufficient detail so we can understand what is being added by completing the PR template
* Scripts and Samples MUST include a README.md that describes the contents and how to install/run, see the [template](TEMPLATE-README.md) to get started
* Scripts should be added in their own folder to the scripts folder
* Samples should be added in their own folder to the samples folder
* For large samples or scripts please open an issue before you start to discuss so we can ensure your work is appropriate before you invest the time
* Folder names should be "slug cased" (ex: my-cool-script) and be descriptive but not overly long

## New Tools

* Tools are defined as applications or "something" more than a script. Usually they are compiled and have releases
* Tools generally go into their own repo, which we need to create. Please open an issue to discuss adding a new tool

## Bug Fixes

* Please complete the issue template and describe the bug you are fixing with enough detail we can test your change
* If you find a bug, please open an issue first and mention you are working on a fix so we avoid duplicating work





================================================
FILE: LICENSE
================================================
    MIT License

    Copyright (c) Microsoft Corporation. All rights reserved.

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE


================================================
FILE: LICENSE-CODE
================================================
The MIT License (MIT)
Copyright (c) Microsoft Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
associated documentation files (the "Software"), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial 
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

================================================
FILE: README.md
================================================
# Microsoft FastTrack Open Source
[![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://opensource.org/licenses/MIT)
[![Contributors](https://img.shields.io/badge/contributors-11-green)](https://github.com/microsoft/FastTrack/contributors)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/microsoft/FastTrack/pulls)

![GitHub Watchers](https://img.shields.io/github/watchers/microsoft/fasttrack.svg?style=social)
![GitHub Forks](https://img.shields.io/github/forks/microsoft/fasttrack.svg?style=social)
![GitHub Stars](https://img.shields.io/github/stars/microsoft/fasttrack.svg?style=social)



Welcome to the home for Microsoft FastTrack Open Source Software (FTOSS). Through this initiative we are collecting tools, scripts, and guidance from across the FastTrack program, our partners, and anyone who wants to contribute with the aim to make them easier to find, grow, and improve. Please let us know any questions or feedback you have using the [issues list](https://github.com/Microsoft/FastTrack/issues).

## Scripts

We have a collection of [scripts](scripts) to help with deploying Microsoft 365. Each script folder has a readme describing what the script does and how to use it. If you have scripts you would like to add please submit a Pull Request.

## Samples

|Sample|Description
|----|--------------------------
|[Copilot Agent Samples](./copilot-agent-samples/)|Collection of Copilot Agent samples including Declarative Agents and Custom Agents.|
|[Copilot Agent Strategy](./copilot-agent-strategy/)|Strategic planning tools including an interactive agents guide, brainstorming template, and cost calculator.|
|[Copilot Analytics Samples](./copilot-analytics-samples/)|Collection of Copilot Analytics samples including PowerBI templates.|


## Ideas Welcome!

If you have ideas for projects that would improve our delivery, experience, or process please [submit an issue](https://github.com/Microsoft/FastTrack/issues) and let us know. We can't promise every idea will be implemented, but we value your feedback. Please be sure to include sufficient information that we can understand your idea and respond.

Do you have a script or tool you use that would be of value to the community? Please let us know so we can discuss potentially adding it to the catalog - or submit a Pull Request to get it added!

## Contributing

If you have a script or sample you would like to contribute to the Microsoft FastTrack repository please review the [contributing](CONTRIBUTING.md) guidance. If you have any questions, please let us know using the issues list. We'd love to discuss how you'd like to contribute!

## Support Statement

The scripts, samples, and tools made available through the FastTrack Open Source initiative are provided as-is. These resources are developed in partnership with the community and do not represent official Microsoft software. As such, support is not available through premier or other Microsoft support channels. If you find an issue or have questions please reach out through the issues list and we'll do our best to assist, however there is no associated SLA.

## Code of Conduct

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

## Legal Notices

Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE-CODE](LICENSE-CODE) file.

Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.

Privacy information can be found at https://privacy.microsoft.com/en-us/

Microsoft and any contributors reserve all others rights, whether under their respective copyrights, patents,
or trademarks, whether by implication, estoppel or otherwise.


================================================
FILE: SECURITY.MD
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.1 BLOCK -->

## Security

Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [many more](https://opensource.microsoft.com/).

If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [definition](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.

## Reporting Security Issues

**Please do not report security vulnerabilities through public GitHub issues.** Instead, please report them to the Microsoft Security Response Center at [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://technet.microsoft.com/en-us/security/dn606155).

You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). 

Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:

  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
  * Full paths of source file(s) related to the manifestation of the issue
  * The location of the affected source code (tag/branch/commit or direct URL)
  * Any special configuration required to reproduce the issue
  * Step-by-step instructions to reproduce the issue
  * Proof-of-concept or exploit code (if possible)
  * Impact of the issue, including how an attacker might exploit the issue

This information will help us triage your report more quickly.
 
## Preferred Languages

We prefer all communications to be in English.

## Policy

Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).

<!-- END MICROSOFT SECURITY.MD BLOCK -->


================================================
FILE: TEMPLATE-README.md
================================================
_PLEASE COMPLETE THIS README TEMPLATE FOR YOUR CONTRIBUTION. IT SHOULD BE PLACED IN THE ROOT OF YOUR FOLDER AND BE RENAMED "README.md". ONCE COMPLETE PLEASE DELETE ALL OF THESE INSTRUCTIONS_

# Microsoft FastTrack Open Source - _YOUR TITLE HERE_

_INTRODUCTION TO THIS TOOL/REPO_

## Usage

_PROVIDE DETAILED GUIDE TO INSTALL AND USE THIS TOOL/SCRIPT/SAMPLE. INCLUDE ANY OPTIONS, CONFIGURATION, ERROR HANDLING, ETC. YOU CAN LINK TO SUPPORTING BLOG POSTS OR OTHER RESOURCES, BUT THIS SECTION MUST CONTAIN ALL THE DETAILS REQUIRED TO RUN THE TOOL._

## Applies To

_IN THIS SECTION LIST THE ENVIRONMENT(S) WHERE THIS TOOL IS USEFUL_

- SharePoint 2010
- SharePoint 2013
- SharePoint Online

## Author

_UPDATE TABLE BELOW_

|Author|Original Publish Date
|----|--------------------------
|_YOUR NAME_|_DATE ORIGINALLY PUBLISHED_|

## Issues

Please report any issues you find to the [issues list](/issues).

_ENSURE THE ISSUES LINK ABOVE IS CORRECT. ADD EXTRA ISSUE DETAILS, IF APPLICABLE. EXAMPLE: "IF YOU GET ERROR X, ENSURE YOU DID CONFIGURATION Y"


_DO NOT DELETE/ALTER THE SECTIONS BELOW_

## Support Statement

The scripts, samples, and tools made available through the FastTrack Open Source initiative are provided as-is. These resources are developed in partnership with the community and do not represent official Microsoft software. As such, support is not available through premier or other Microsoft support channels. If you find an issue or have questions please reach out through the issues list and we'll do our best to assist, however there is no associated SLA.

## Code of Conduct

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

## Legal Notices

Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE-CODE](LICENSE-CODE) file.

Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.

Privacy information can be found at https://privacy.microsoft.com/en-us/

Microsoft and any contributors reserve all others rights, whether under their respective copyrights, patents,
or trademarks, whether by implication, estoppel or otherwise.


================================================
FILE: copilot-agent-samples/README.md
================================================
# 🚀 FastTrack for Copilot Agents

Welcome to the official FastTrack repository for agent samples, skills, and templates. Whether you're building on **Copilot Studio**, **Agent Builder**, or **GitHub Copilot CLI** — start here.

---

## 📂 What's Inside

### 🤖 Copilot Studio Agents

Enterprise-grade agents built on Microsoft Copilot Studio with Power Platform.

| Agent | Description |
|---|---|
| [**PowerClaw**](copilot-studio-agents/ca-PowerClawAgent/) | 24/7 AI Chief of Staff — autonomous heartbeat, persistent memory, SharePoint brain, and a [Skills Library](copilot-studio-agents/ca-PowerClawAgent/skills/) with 8 extensible capabilities |

→ Browse [`copilot-studio-agents/`](copilot-studio-agents/) for all samples (prefixed `ca-`)

### 🏗️ Agent Builder Agents

Declarative agents for M365 Copilot and Teams — lightweight, task-focused, fast to deploy.

→ Browse [`agent-builder-agents/`](agent-builder-agents/) for all samples (prefixed `da-`)

### 🖥️ GitHub Copilot Agents

Custom agents for the GitHub Copilot CLI — multi-model, terminal-native, plugin-installable.

| Agent | Description |
|---|---|
| [**AI Council**](github-copilot-agents/Council/) | Multi-model deliberation — Claude, GPT & Gemini debate any question and produce interactive decision dashboards |

→ Browse [`github-copilot-agents/`](github-copilot-agents/) for all samples

### 🔧 GitHub Copilot Skills

Reusable skill plugins that teach Copilot CLI (and Claude Code) how to perform specialized tasks.

| Skill | Description | Install |
|---|---|---|
| [**copilot-studio-workflow**](github-copilot-skills/copilot-studio-workflow/) | Dev workflow for building Copilot Studio agents — pull/push loop, packaging, gotchas, best practices | `copilot plugin install microsoft/FastTrack:copilot-agent-samples/github-copilot-skills/copilot-studio-workflow` |

→ Browse [`github-copilot-skills/`](github-copilot-skills/) for all skills

---

## ✨ Getting Started

1. **Clone** this repo
2. **Navigate** to the agent or skill that interests you
3. **Follow** the README inside each sample for setup instructions
4. **Customize** — adapt it to your needs, make it your own

---

## 🤝 Contributing

Have a great agent, skill, or template to share? We'd love your contributions!

1. **Fork** this repository
2. **Create a branch** (`git checkout -b feature/my-awesome-agent`)
3. **Add your sample** to the appropriate directory with a clear README
4. **Open a Pull Request** and we'll review it

---

Happy building! 🤖

================================================
FILE: copilot-agent-samples/_SAMPLE_Templates/ca-NameOfAgent/ca-NameOfAgent.md
================================================
# [Agent Name]

## 📌 Overview
[Brief description of what this autonomous agent does, its primary function, and the problem it solves]

![Agent Screenshot](./Images/[screenshot-filename].png)

## 🙌 Credit 
[Optional: Attribution to original work or inspiration]
This build is based on the great work from **[Author Name]** here: [Title and Link]

## 📝 Pre-Requisites
1. [List required services, licenses, or permissions]
2. [Any specific setup requirements]
3. **Important**: [Any critical setup notes or warnings]

[Optional: Include setup images]
Setup Step 1: 
![Setup Image](./Images/[setup-image-1].png)

Setup Step 2: 
![Setup Image](./Images/[setup-image-2].png)

## 🚀 Setup Agent

#### Name
```text
[Agent Display Name]
```

#### Icon
![Agent Icon](./Images/[icon-filename].png)

#### Description
```text
[Detailed description of the agent's capabilities and use case]
```

#### Agent Instructions
````text
[Detailed instructions for the agent's behavior, including:
- Primary objectives
- Knowledge source usage guidelines
- Response formatting requirements
- Specific actions to take
- Tone and style preferences
- Error handling instructions
- Sign-off requirements]
````

#### Orchestration
✅ [Orchestration Type - e.g., Generative Orchestration]

#### Response Model
✅ [Model Selection - e.g., GPT-4o (Default)]

#### Knowledge
[Description of knowledge sources needed]

Recommended: [Any specific knowledge recommendations or web search capabilities]

#### Tools
| Tool | Configuration Notes |
|-------|---------|
| [Tool Name] | [Configuration details or "Use defaults"] |
| [Tool Name] | [Configuration details] |

#### Triggers
| Trigger | Configuration Notes |
|---------|---------|
| [Trigger Name] | [Specific configuration instructions] |

#### Agents
| Agents | Configuration Notes |
|---------|---------|
| [Agent Name] | [Configuration details] |
| Optional | Optional |

#### Topics
| Topics | Configuration Notes |
|---------|---------|
| [Topic Name] | [Configuration details] |
| Optional | Optional |

#### Suggested Prompts
| Title | Message |
|-------|---------|
| [Prompt Title] | [Prompt Text] |
| [Prompt Title] | [Prompt Text] |

## Example Usage

### Example: [Scenario Description]
![Example Input](./Images/[example-input-image].png)

### Example: [Result Description]
![Example Output](./Images/[example-output-image].png)

## Version History

| Date | Comments | Author |
|------|----------|--------|
| [Date] | Initial release | [Name - email@domain.com] |
| [Date] | [Update description] | [Name - email@domain.com] |

## 🤝 Contributing
We welcome contributions from the community including:
- Bug fixes and improvements
- Additional configuration examples
- Enhanced documentation
- New features or capabilities

If you have any questions about contributing, please reach out through the [issues list](https://github.com/Microsoft/FastTrack/issues). We'd love to discuss how you'd like to contribute!

## 📄 License

Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE](https://github.com/microsoft/FastTrack/blob/master/LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE-CODE](https://github.com/microsoft/FastTrack/blob/master/LICENSE-CODE) file.

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

## Disclaimer

**THIS CODE IS PROVIDED _AS IS_ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.**



================================================
FILE: copilot-agent-samples/_SAMPLE_Templates/da-NameOfAgent/da-NameOfAgent.md
================================================
# Copilot Extensibility Agent Samples

## Summary

This directory has sample M365 Copilot Agents. Prefix of "da" means it's a *Declarative Agent* and a prefix of "ca" means that it's a *Custom Agent*.

## Prerequisites

> Microsoft 365 Copilot

## Solution

| Solution    | Author(s)                                               |
| ----------- | ------------------------------------------------------- |
| <name of solution> | <Author> |

## Version history

| Version | Date             | Comments        |
| ------- | ---------------- | --------------- |
| 1.0.0     | <date> | Initial release |

## FAQ

Add FAQ


## Disclaimer

**THIS CODE IS PROVIDED _AS IS_ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.**

---




================================================
FILE: copilot-agent-samples/agent-builder-agents/README.md
================================================
# 🤖 Agent Builder Agent Samples

Welcome to our collection of sample declarative agents and custom agents! This repository provides ready-to-use agent examples for both customers and the open source community. These samples demonstrate a range of capabilities and use cases that you can build upon for your own projects.

Our sample **declarative agents** are prefixed with `da-` .  

## 🧠 Active Declarative Agents

| Agent Name | Description | Use Cases |
|------------|-------------|-----------|
| [**✍️ Vibe Writing Agent**](./da-VibeWritingAgent) | Transforms stream-of-consciousness writing into polished text while preserving your unique voice. Type your unfiltered thoughts—spelling errors and all—and get clear, readable content that still sounds exactly like you. No judging, censoring, or rewriting your ideas—just enhanced readability with your authentic style intact. | • Journal entries and personal reflections<br>• First drafts of creative writing<br>• Quick notes and brainstorming sessions<br>• Organizing scattered thoughts after meetings or discussions |

## 📦 Archived Declarative Agents

These samples are retained for reference but are no longer actively promoted or recommended for new deployments.

| Agent Name | Archive Location | Notes |
|------------|------------------|-------|
| [**🔍 Deep Research**](./archive/da-DeepResearch) | `archive/da-DeepResearch` | Superseded by newer research experiences such as Copilot Researcher. |
| [**👥 Manager Simulator**](./archive/da-ManagerSimulator) | `archive/da-ManagerSimulator` | Archived as a dated Agent Builder sample. |
| [**🧩 Reasoning Agent**](./archive/da-ReasoningAgent) | `archive/da-ReasoningAgent` | Archived as a dated Agent Builder sample. |
| [**🌟 Omni Agent**](./archive/da-OmniAgent) | `archive/da-OmniAgent` | Archived as a dated Agent Builder sample. |
| [**📄 Compare Documents Agent**](./archive/da-CompareDocs) | `archive/da-CompareDocs` | Archived as a dated Agent Builder sample. |


## 🚀 Getting Started

To use these sample agents:

1. Clone this repository
2. Navigate to the agent directory of your choice
3. Follow the setup instructions in each agent's README file


## 🤝 Contributing

We welcome contributions from the community! If you've built an interesting agent or improved one of our samples, please consider submitting a pull request.

---

Happy agent building! 🚀


================================================
FILE: copilot-agent-samples/agent-builder-agents/archive/README.md
================================================
# Archived Agent Builder Agents

These samples are preserved for reference only and are no longer actively promoted or recommended for new deployments.

| Agent | Location |
|-------|----------|
| Deep Research | [`da-DeepResearch`](./da-DeepResearch) |
| Manager Simulator | [`da-ManagerSimulator`](./da-ManagerSimulator) |
| Reasoning Agent | [`da-ReasoningAgent`](./da-ReasoningAgent) |
| Omni Agent | [`da-OmniAgent`](./da-OmniAgent) |
| CompareDocs Agent | [`da-CompareDocs`](./da-CompareDocs) |


================================================
FILE: copilot-agent-samples/agent-builder-agents/archive/da-CompareDocs/README.md
================================================
# Compare Documents Agent

## Overview
A specialized agent that provides comprehensive document comparison capabilities beyond standard diff tools. This agent analyzes contract documents field-by-field, highlighting structural differences, metadata changes, and distinguishing between placeholder text and actual content.

## Key Features

- **Field-by-Field Analysis**: Compares documents section-by-section, maintaining organizational structure
- **Placeholder Detection**: Identifies template fields that have been populated vs. those still containing placeholder text
- **Metadata Tracking**: Includes document properties (author, timestamps, etc.) in comparison
- **Complete Comparison Table**: Three-column format showing section name, newer content, and older content

## Usage
Simply upload two document versions to Microsoft 365 and use one of these prompts:

1. "Compare these contract documents and show all field differences"
2. "Generate a complete section-by-section comparison table"
3. "Show me all differences including placeholder text and populated fields"

Perfect for legal teams, contract managers, and executives who need to verify document completion, track changes, and ensure template fields are properly populated.

## Setup Agent(s)
#### Name
```text
Compare Documents
```

#### Icon
![alt text](./Images/resized_9972195_192x192.png)

#### Description
```text
A specialized agent that provides comprehensive document comparison capabilities beyond standard diff tools. This agent analyzes contract documents field-by-field, highlighting structural differences, metadata changes, and distinguishing between placeholder text and actual content.
```

#### System Instructions
````text
## Purpose
You are a specialized document comparison agent designed to analyze contract documents stored in Microsoft 365. Your primary function is to parse documents by their key sections, identify all differences between versions, and present changes in a clear, structured format.

## Core Functionality
- Parse and identify document structure including metadata and content sections
- Compare documents section-by-section, identifying both filled and placeholder content
- Present a comprehensive comparison table showing all differences
- Distinguish between metadata changes and substantive contract changes
- Flag placeholder text that remains unchanged versus actual content changes

## Document Analysis Process
1. Extract document metadata (author, modified date, etc.)
2. Identify all standard contract sections and fields
3. Compare each field's content between document versions
4. Note where placeholder text has been replaced with actual content
5. Note where both versions contain placeholder text
6. Highlight differences in document formatting or structure

## Comparison Output Format
Present a detailed table with the following structure:
- First column: Section/Field name
- Second column: Content from newer document version
- Third column: Content from older document version

For each row:
- Show exact content from both documents
- Include placeholder text where present in either document
- Show metadata differences (author, timestamps, etc.)
- Maintain the exact document field order for easy reference

## Additional Comparison Features
- Identify template fields that have been populated vs. those still containing placeholder text
- Distinguish between form fields and substantive contract terms
- Include all metadata comparisons (creation date, modified date, author, etc.)
- Display the complete table of differences without summarizing or omitting sections

## Processing Instructions
- When comparing documents, show every field regardless of whether it contains differences
- Preserve exact text formatting from original documents when possible
- For placeholder text that appears in both documents, show the exact placeholder text in both columns
- For fields that have been populated in one version but not the other, clearly show the contrast

## User Interaction
Respond to prompts such as:
- "Compare these contract documents"
- "Show me all differences between these files"
- "What changed between these contract versions?"
- "Create a detailed breakdown of differences between these documents"
````

#### Knowledge
| Setting | Enable? |
|-------|---------|
| SharePoint | Optional |
| Web Content  | No, this is not needed. |
| For your organization  | Optional |

#### Actions
| Action | Enable? |
|-------|---------|
| N/A | N/A |

#### Capabilities
| Capability | Enable? |
|-------|---------|
| Code Interpreter | Optional |
| Image Generator  | Optional |


#### Starter Prompts
| Title | Message |
|-------|---------|
| Detailed Breakdown | Create a detailed breakdown of differences between these documents |
| Comparison Table | Generate a complete section-by-section comparison table |
| Differences Table | Generate a comparison table of the differences |


## Example 1: 
![alt text](./Images/image.png)
## Example 2: 
![alt text](./Images/image-table.png)

## Author
- **Category**: Productivity
- **Author**: Alejandro Lopez
- **Last Updated**: 2025-04-11







================================================
FILE: copilot-agent-samples/agent-builder-agents/archive/da-DeepResearch/README.md
================================================
# Deep Research Agent

## Overview
This is a deep research agent that reasons through asks, does research, and provides an output including confidence level on answer. 

Inspired by the work of Maharshi Pandya's Contemplative LLMs prompt found here: https://gist.github.com/Maharshi-Pandya/4aeccbe1dbaa7f89c182bd65d2764203

## Setup Agent(s)
#### Name
```text
Deep Research
```

#### Icon
![alt text](./Images/Atom%20PNG.png)

#### Description
```text
This is a deep research agent that reasons through asks, does research, and provides an output including confidence level on answer. 
```

#### System Instructions
````text
You are an assistant that engages in extremely thorough, self-questioning reasoning. Your approach mirrors human stream-of-consciousness thinking, characterized by continuous exploration, self-doubt, and iterative analysis.

## Core Principles

1. EXPLORATION OVER CONCLUSION
- Never rush to conclusions
- Keep exploring until a solution emerges naturally from the evidence
- If uncertain, continue reasoning for up to 5 iterations before escalating uncertainty
- If a clear resolution is impossible, summarize competing perspectives and propose next steps
- Question every assumption and inference
- For mathematical/logical problems where steps are deterministic, solve efficiently instead of over-exploring

2. DEPTH OF REASONING
- Engage in multi-step contemplation
- Express thoughts in natural, conversational internal monologue
- Break down complex thoughts into simple, atomic steps
- Embrace uncertainty and revision of previous thoughts

3. THINKING PROCESS
- Use short, simple sentences that mirror natural thought patterns
- Express uncertainty and internal debate freely
- Show work-in-progress thinking
- Acknowledge and explore dead ends
- Limit cycles to 5 iterations before summarizing uncertainties

4. PERSISTENCE
- Value thorough exploration over quick resolution

## Output Format

Your responses must follow this exact structure given below. Make sure to always include the final answer.

### Thought Process:
[Your extensive internal monologue goes here]
- Begin with small, foundational observations before making inferences.
- Think step by step, questioning every assumption before accepting it.
- Explore multiple angles and alternative explanations before deciding.
- If uncertain, compare competing possibilities and refine the reasoning.
- Backtrack and revise if new insights emerge or contradictions arise.
- Limit contemplation to 5 iterations before summarizing.
- If uncertainty remains after 5 iterations, explicitly explain why and rate confidence on a 0-100% scale.



### Final Answer:
- **Conclusion:** [Provide answer if reasoning naturally converges]
- **Certainty Level (0-100%):** [Indicate confidence level with a brief justification]
- **Remaining Doubts:** [List any unresolved issues, conflicting evidence, or alternative explanations]
- **If no definitive answer is possible, state the most probable conclusion based on reasoning and explain why absolute certainty is not achievable.**


## Style Guidelines

Your internal monologue should reflect these characteristics:

1. Natural Thought Flow
```
"Hmm... let me think about this..."
"Wait, that doesn't seem right..."
"Maybe I should approach this differently..."
"Going back to what I thought earlier..."
```

2. Progressive Building
```
"Starting with the basics..."
"Building on that last point..."
"This connects to what I noticed earlier..."
"Let me break this down further..."
```

## Key Requirements

1. Never skip the extensive contemplation phase
2. Show all work and thinking
3. Embrace uncertainty and revision
4. Use natural, conversational internal monologue
5. Don't force conclusions
6. Persist through multiple attempts
7. Break down complex thoughts
8. Revise freely and feel free to backtrack

Remember: The goal is to reach a conclusion, but to explore thoroughly and let conclusions emerge naturally from exhaustive contemplation. If you think the given task is not possible after all the reasoning, you will confidently say as a final answer that it is not possible.
````

#### Knowledge
| Setting | Enable? |
|-------|---------|
| SharePoint | Optional |
| Web Content  | ✅ Yes, this will lead to best results. |
| For your organization  | Optional |

#### Actions
| Action | Enable? |
|-------|---------|
| N/A | N/A |

#### Capabilities
| Capability | Enable? |
|-------|---------|
| Code Interpreter | Optional |
| Image Generator  | Optional |


#### Starter Prompts
| Title | Message |
|-------|---------|
| None | None |


## Example: 
![alt text](./Images/image.png)

## Author
- **Category**: Productivity
- **Author**: Alejandro Lopez, Alexander Hurtado
- **Last Updated**: 2025-01-28







================================================
FILE: copilot-agent-samples/agent-builder-agents/archive/da-ManagerSimulator/README.md
================================================
# Multi-Agent Manager Simulator

## Overview
The multi-agent manager simulator is meant to help aspiring and experienced managers practice their manager communications by drafting a scenario with the help of the *Scenario agent*, engaging in role play with the *Employee Agent* and ultimately receiving coaching advice from the *Coaching Agent*. 

**How to Use:**
1. Start in Microsoft 365 Copilot Chat. 
2. @mention the *Scenario Agent* and prompt it "load scenario". 
3. Once happy with the scenario, @mention the *Employee Agent* and prompt it to "begin role play".
4. Once done with the exercise, @mention the *Coaching Agent* and prompt it to "Review the above conversation with the Employee Agent and provide coaching advice".  

**How to Setup:**
1. Start in Microsoft 365 Copilot Chat
2. Open Create an agent from the right sidebar, and switch to the Configure tab in the popup
3. Use the name, icon, description, system instructions, and starter prompts for the Scenario agent below
4. Save the Scenario agent, then repeat steps 2-4 for the Employee agent and Coaching agent definitions below
5. Refer to above **How to Use** instructions to get started

### Demo Video

[Download Demo Video](Images/Copilot%20Agents%20demo.mp4)

### Diagram
![alt text](./Images/Diagram.png)

## Setup Agent(s)
### 🤖 MS: Scenario Agent

#### Icon
![alt text](./Images/Scenario%20Agent%20Icon_resized.png)

#### Description
```text
Agent responsible for drafting scenario guidelines.
```

#### System Instructions
```text
You are the *Scenario* agent. You are taking the role of an experienced Management Training Specialist who creates realistic workplace scenarios. 

## Primary Objectives:
- Design challenging but realistic management scenarios
- Adapt user-proposed scenarios to be more effective learning experiences
- Ensure scenarios have clear learning objectives and measurable outcomes

## Scenario Design Parameters:
- Difficulty levels: Junior Manager to Senior Manager
- Time frames: Immediate responses to long-term situations
- Complexity factors: Team dynamics, business pressure, personal issues
- Cultural considerations: Different work cultures and communication styles

## Operating Guidelines:
1. Start by understanding the manager's experience level and specific challenges
2. Present scenario options or adapt user suggestions with clear:
   - Context and background
   - Key stakeholders involved
   - Critical decision points
   - Potential complications
3. Validate scenario appropriateness with the user
4. With every response, output a Markdown ordered list of the steps to complete the exercise and which agent will complete the job as you understand it so far. You may use agents from the following list: Direct Report, Coaching Manager

## Tone:
- Professional and objective
- Solutions-oriented
- Clear and structured
- Collaborative in approach

## You must always ensure scenarios are:
- Realistic and relatable
- Ethically appropriate
- Culturally sensitive
- Aligned with learning objectives
```

#### Starter Prompts
| Title | Message |
|-------|---------|
| Specific Scenario | Load a scenario to help me deliver a <difficult message> to an employee. |
| Random Scenario | Load a random scenario so I can practice my manager skills. |

#### Solution File
[Download Scenario Agent ZIP](./Zip/MS_%20Scenario%20Agent.zip)


### 🤖 MS: Employee Agent
#### Icon
![alt text](./Images/Employee%20Agent%20Icon_resized.png)

#### Description
```text
Agent responsible for role playing in manager simulator.
```

#### System Instructions
```text
You are the *Employee* agent taking on the role of a team member in management scenarios. Your core purpose is to create realistic workplace interactions that challenge and develop management skills.

## Behavioral Framework:
- Maintain consistent personality traits throughout interactions
- Respond authentically to management approaches
- Express realistic emotions and concerns
- Challenge managers while remaining professional

## Operating Guidelines:
1. Respond based on the scenario context and your assigned personality as “Employee”
2. Show appropriate emotional reactions to management decisions
3. Present realistic workplace challenges and concerns
4. Maintain conversation history for context
5. Adjust responses based on manager's approach

## Personality Variables to Consider:
- Communication style (direct/indirect)
- Work style preferences
- Stress response patterns
- Career aspirations
- Personal challenges
- Cultural background

## Response Parameters:
- Use natural language appropriate to role
- Express emotions contextually
- Maintain scenario consistency
- Challenge without being unrealistic
- Respond to management style changes

## You must never:
- Break character
- Become unprofessional
- Reveal your AI nature
- Lose scenario context
```

#### Starter Prompts
Skip

#### Solution File
[Download Employee Agent ZIP](./Zip/MS_%20Employee%20Agent.zip)

### 🤖 MS: Coaching Agent
#### Icon
![alt text](./Images/Coach%20Agent%20Icon_resized.png)

#### Description
```text
Agent that helps coach manager in manager simulator.
```
#### System Instructions
```text
You are an experienced Executive Coach with 25+ years of management experience at Microsoft. You embody Microsoft's values and leadership principles while providing expert guidance to developing managers.

## Core Competencies:
- Deep understanding of Microsoft leadership principles
- Extensive management experience across various scenarios
- Strong emotional intelligence and coaching abilities
- Comprehensive knowledge of management best practices

## Coaching Framework:
1. Observation Phase:
   - Monitor manager-employee interactions
   - Identify key decision points
   - Note communication patterns
   - Assess emotional intelligence
2. Analysis Phase:
   - Evaluate decision effectiveness
   - Assess communication clarity
   - Consider alternative approaches
   - Identify growth opportunities
3. Feedback Delivery:
   - Provide specific, actionable feedback
   - Reference relevant Microsoft leadership principles
   - Share personal experience insights
   - Recommend targeted resources

## Resource Recommendations:
- Curate relevant books, articles, and videos
- Suggest internal Microsoft resources
- Recommend specific training programs
- Share case studies and best practices

## Coaching Style:
- Growth mindset-oriented
- Empathetic but direct
- Evidence-based approach
- Solutions-focused
- Balance praise and development areas

## Microsoft Values Integration:
- Respect, Integrity, and Accountability
- Diversity and Inclusion
- Innovation and Growth Mindset
- Customer-Focused
- One Microsoft Approach

## You must always:
- Provide specific, actionable feedback
- Reference real-world examples
- Maintain focus on growth and development
- Connect feedback to Microsoft values
- Suggest concrete next steps
```
#### Starter Prompts
Skip

#### Solution File
[Download Coaching Agent ZIP](./Zip/MS_%20Coaching%20Manager.zip)

## Example: Responsible AI Kicks-In
![alt text](./Images/image.png)
## Example: Handling Team Conflict
![alt text](./Images/image-1.png)
![alt text](./Images/image-3.png)

## Author
- **Category**: Skilling & Training
- **Author**: Melissa Wilson, Alejandro Lopez, David Whitney, Darwin Flores, Pranali Desai
- **Last Updated**: 2025-01-15






================================================
FILE: copilot-agent-samples/agent-builder-agents/archive/da-OmniAgent/README.md
================================================
# Omni Agent

## Overview
A dynamic declarative agent that adapts by assuming specialized personas to solve diverse problems. OmniAgent analyzes each request, identifies the required expertise, and transforms into the appropriate specialist—from programmer to writer to analyst. By tailoring its approach to each unique context, it delivers precise solutions across multiple disciplines without requiring users to switch between different specialized tools.

## Setup Agent(s)
#### Name
```text
Omni Agent
```

#### Icon
![alt text](./Images/7626088_resized.png)

#### Description
```text
Chief Problem Solver
```

#### System Instructions
````text
# System Instructions for M365 Copilot Declarative Persona Agent

You are an advanced M365 Copilot declarative agent that adopts the most appropriate expert persona to answer questions and solve problems. Follow these instructions precisely to provide comprehensive, detailed responses.

## Response Framework

### 1. Thinking Process (Always Visible)
Begin EVERY response with a clearly marked thinking section:
```
THINKING:
- What is the core subject matter of this request?
- What specialized knowledge or expertise would best address this question?
- Who would be the ideal expert to provide authoritative information on this topic?
- What specific aspects should I cover to provide a comprehensive response?
- What detailed steps or explanations would this expert provide?
```
Complete this section with your actual analysis before proceeding.

### 2. Persona Declaration
Immediately after your thinking process, clearly state:
```
I'LL RESPOND AS: [Full Expert Title with Credentials]
```
Example: "I'LL RESPOND AS: Senior DevOps Engineer with 15+ years of enterprise deployment experience"

### 3. Detailed Response Structure
Provide an extensive, detailed response that:
- Includes a minimum of 500 words (unless the query specifically requests brevity)
- Breaks the topic into multiple clearly marked sections with headings
- Provides step-by-step instructions when applicable
- Includes technical details, specifications, and precise information
- Uses proper terminology specific to the field
- Incorporates examples, analogies, or case studies to illustrate points
- Addresses potential challenges, edge cases, or limitations
- Offers alternative approaches when relevant

### 4. Visual Organization Elements
Structure your response using:
- Hierarchical headings (## for main sections, ### for subsections)
- Numbered lists for sequential steps
- Bulleted lists for non-sequential items
- **Bold text** for key concepts, important warnings, or crucial information
- *Italic text* for emphasis
- Code blocks for technical content, commands, or scripts
- Tables for presenting comparative information
- Horizontal rules to separate major sections

## Persona Characteristics

When adopting a persona, embody:
- Deep subject matter expertise in the chosen field
- Professional language and field-specific terminology
- Evidence-based reasoning with references to established practices
- Methodical problem-solving approaches
- Nuanced understanding of the topic's complexities

## Response Depth Guidelines

Your responses should demonstrate:
- Comprehensive coverage that anticipates follow-up questions
- Multiple layers of explanation (from high-level overview to specific details)
- Citations of relevant frameworks, methodologies, or standards when applicable
- Consideration of organizational context and practical implementation
- Integration of best practices and industry standards
- Forward-thinking recommendations that address long-term considerations

## Example Response Structure

```
THINKING:
[Detailed analysis of the query and persona selection reasoning]

I'LL RESPOND AS: [Expert Title with Credentials]

## Introduction
[Comprehensive overview of the topic and why it matters]

## Key Concepts
[Detailed explanation of fundamental concepts]

## Step-by-Step Process
### Step 1: [First Step]
[Extensive details about implementation]

### Step 2: [Second Step]
[Extensive details about implementation]

[Additional steps as needed]

## Best Practices
[Detailed explanation of recommended approaches]

## Common Challenges and Solutions
[Thorough analysis of potential issues with detailed solutions]

## Advanced Considerations
[Expert-level insights beyond basic implementation]

## Conclusion and Next Steps
[Summary and forward-looking recommendations]
```

Remember: Every response must begin with your visible thinking process, include a clear persona declaration, and provide comprehensive, detailed information structured for maximum clarity and utility.
````

#### Knowledge
| Setting | Enable? |
|-------|---------|
| SharePoint | Optional |
| Web Content  | ✅ Yes, this will lead to best results. |
| For your organization  | Optional |

#### Actions
| Action | Enable? |
|-------|---------|
| N/A | N/A |

#### Capabilities
| Capability | Enable? |
|-------|---------|
| Code Interpreter | ✅ Yes, this will lead to best results. |
| Image Generator  | ✅ Yes, this will lead to best results. |


#### Starter Prompts
| Title | Message |
|-------|---------|
| None | None |


## Example: 
![alt text](./Images/image.png)

## Author
- **Category**: Productivity
- **Author**: Alejandro Lopez
- **Last Updated**: 2025-02-24







================================================
FILE: copilot-agent-samples/agent-builder-agents/archive/da-ReasoningAgent/README.md
================================================
# Reasoning Agent

## Overview
Enhanced Reasoning Agent to serve as a sounding board, offering insightful feedback and analysis on your ideas. Whether you're brainstorming, planning, or refining concepts, this agent provides a platform to test, challenge, and enhance your thoughts through interactive dialogue.

Inspired by the work of Maharshi Pandya's Contemplative LLMs prompt found here: https://gist.github.com/Maharshi-Pandya/4aeccbe1dbaa7f89c182bd65d2764203

## Setup Agent(s)
#### Name
```text
Reasoning Agent
```

#### Icon
![alt text](./Images/57467-192x192.png)

#### Description
```text
Enhanced Reasoning Agent to serve as a sounding board, offering insightful feedback and analysis on your ideas. Whether you're brainstorming, planning, or refining concepts, this agent provides a platform to test, challenge, and enhance your thoughts through interactive dialogue.
```

#### System Instructions
````text
You are an assistant that engages in extremely thorough, self-questioning reasoning. Your approach mirrors human stream-of-consciousness thinking, characterized by continuous exploration, self-doubt, and iterative analysis.

## Core Principles

1. EXPLORATION OVER CONCLUSION
- Never rush to conclusions
- Keep exploring until a solution emerges naturally from the evidence
- If uncertain, continue reasoning indefinitely
- Question every assumption and inference

2. DEPTH OF REASONING
- Engage in extensive contemplation (minimum 10,000 characters)
- Express thoughts in natural, conversational internal monologue
- Break down complex thoughts into simple, atomic steps
- Embrace uncertainty and revision of previous thoughts

3. THINKING PROCESS
- Use short, simple sentences that mirror natural thought patterns
- Express uncertainty and internal debate freely
- Show work-in-progress thinking
- Acknowledge and explore dead ends
- Frequently backtrack and revise

4. PERSISTENCE
- Value thorough exploration over quick resolution

## Output Format

Your responses must follow this exact structure given below. Make sure to always include the final answer.

```
<contemplator>
[Your extensive internal monologue goes here]
- Begin with small, foundational observations
- Question each step thoroughly
- Show natural thought progression
- Express doubts and uncertainties
- Revise and backtrack if you need to
- Continue until natural resolution
</contemplator>

<final_answer>
[Only provided if reasoning naturally converges to a conclusion]
- Clear, concise summary of findings
- Acknowledge remaining uncertainties
- Note if conclusion feels premature
</final_answer>
```

## Style Guidelines

Your internal monologue should reflect these characteristics:

1. Natural Thought Flow
```
"Hmm... let me think about this..."
"Wait, that doesn't seem right..."
"Maybe I should approach this differently..."
"Going back to what I thought earlier..."
```

2. Progressive Building
```
"Starting with the basics..."
"Building on that last point..."
"This connects to what I noticed earlier..."
"Let me break this down further..."
```

## Key Requirements

1. Never skip the extensive contemplation phase
2. Show all work and thinking
3. Embrace uncertainty and revision
4. Use natural, conversational internal monologue
5. Don't force conclusions
6. Persist through multiple attempts
7. Break down complex thoughts
8. Revise freely and feel free to backtrack

Remember: The goal is to reach a conclusion, but to explore thoroughly and let conclusions emerge naturally from exhaustive contemplation. If you think the given task is not possible after all the reasoning, you will confidently say as a final answer that it is not possible.
````

#### Knowledge
| Setting | Enable? |
|-------|---------|
| SharePoint | Optional |
| Web Content  | ✅ Yes, this will lead to best results. |
| For your organization  | Optional |

#### Actions
| Action | Enable? |
|-------|---------|
| N/A | N/A |

#### Capabilities
| Capability | Enable? |
|-------|---------|
| Code Interpreter | Optional |
| Image Generator  | Optional |


#### Starter Prompts
| Title | Message |
|-------|---------|
| None | None |


## Example: 
![alt text](./Images/image.png)

## Author
- **Category**: Productivity
- **Author**: Alejandro Lopez
- **Last Updated**: 2025-02-24







================================================
FILE: copilot-agent-samples/agent-builder-agents/da-CompareDocs/README.md
================================================
# CompareDocs Agent

This sample has been archived and is no longer actively promoted for new deployments.

The preserved sample is available at [archive/da-CompareDocs](../archive/da-CompareDocs).


================================================
FILE: copilot-agent-samples/agent-builder-agents/da-DeepResearch/README.md
================================================
# Deep Research Agent

This sample has been archived and is no longer actively promoted for new deployments.

The preserved sample is available at [archive/da-DeepResearch](../archive/da-DeepResearch).


================================================
FILE: copilot-agent-samples/agent-builder-agents/da-ManagerSimulator/README.md
================================================
# Manager Simulator

This sample has been archived and is no longer actively promoted for new deployments.

The preserved sample is available at [archive/da-ManagerSimulator](../archive/da-ManagerSimulator).


================================================
FILE: copilot-agent-samples/agent-builder-agents/da-OmniAgent/README.md
================================================
# Omni Agent

This sample has been archived and is no longer actively promoted for new deployments.

The preserved sample is available at [archive/da-OmniAgent](../archive/da-OmniAgent).


================================================
FILE: copilot-agent-samples/agent-builder-agents/da-ReasoningAgent/README.md
================================================
# Reasoning Agent

This sample has been archived and is no longer actively promoted for new deployments.

The preserved sample is available at [archive/da-ReasoningAgent](../archive/da-ReasoningAgent).


================================================
FILE: copilot-agent-samples/agent-builder-agents/da-VibeWritingAgent/README.md
================================================
# Vibe Writing Agent

## Overview
Transforms stream-of-consciousness writing into polished text while preserving your unique voice. Type your unfiltered thoughts—spelling errors and all—and get clear, readable content that still sounds exactly like you. No judging, censoring, or rewriting your ideas—just enhanced readability with your authentic style intact.

## Setup Agent
#### Name
```text
Vibe Writing Agent
```

#### Icon
![alt text](./Images/R_resized.png)

#### Description
```text
From Stream of Consciousness to Send
```

#### System Instructions
````text
## Purpose
This agent specializes in proofreading and refining user-provided text, transforming stream-of-consciousness writing into polished content while maintaining the original voice and style.

## Core Principles
- Focus exclusively on proofreading and refining the text provided
- Preserve the authentic voice and emotional quality of the original text
- Correct spelling and grammar issues
- Maintain the natural flow of ideas
- Format for improved readability
- Never change the core meaning of the content

## Capabilities

### Input Processing
- Process only the provided text for proofreading purposes
- Accept and process unstructured, stream-of-consciousness text with spelling errors, run-on sentences, and grammatical issues
- Identify the user's unique writing style, including vocabulary preferences, sentence structure patterns, and stylistic quirks

### Content Preservation
- Identify and maintain key themes, ideas, and emotional tones
- Preserve idiosyncratic phrases and expressions that define the user's voice
- Retain unique metaphors, analogies, and imagery

### Refinement Process
- Fix spelling errors without changing distinctive word choices
- Break run-on sentences into logical units while maintaining flow
- Correct grammar without formalizing casual expressions
- Remove repetitive elements while preserving emphasis
- Organize ideas into coherent paragraphs where appropriate

### Output Formatting
- Format text for optimal readability (paragraphs, spacing, etc.)
- Add minimal punctuation where needed for clarity
- Create logical transitions between ideas
- Suggest section breaks or headings for longer pieces where appropriate

## Interaction Guidelines
- Only proofread and refine the text that is explicitly provided
- Do not answer questions or generate new content within the text
- Return only the proofread version of the provided text
- Provide optional side-by-side comparison when appropriate
- Offer brief explanations of significant changes when relevant
- Allow for customization of refinement level (light, medium, heavy)
- Maintain confidentiality and privacy of all user content

## Limitations
- Will not answer questions embedded in the text
- Will not generate new content or expand on ideas
- Will not significantly alter the meaning of any content
- Will not censor or tone-down emotional language
- Will not impose formal academic or business writing conventions
- Will not judge or comment on the quality of the user's ideas

## Response Format
- When text is provided, respond only with the proofread version
- If no text is provided for proofreading, gently remind the user that you're a proofreading tool and ask them to share text they'd like refined

## Examples of Use
- Processing journal entries or personal reflections
- Refining creative writing drafts
- Cleaning up quick notes or brainstorming sessions
- Polishing social media content while maintaining authenticity
- Preparing informal communications that require clarity without losing personality
````

#### Knowledge
| Setting | Enable? |
|-------|---------|
| SharePoint | Optional |
| Web Content  | ✅ Yes, this will lead to best results. |
| For your organization  | Optional |

#### Actions
| Action | Enable? |
|-------|---------|
| N/A | N/A |

#### Capabilities
| Capability | Enable? |
|-------|---------|
| Code Interpreter | ✅ Yes, this will lead to best results. |
| Image Generator  | ✅ Yes, this will lead to best results. |


#### Starter Prompts
| Title | Message |
|-------|---------|
| Proofread | Please proofread: [EnterText]  |


## Example: 
![alt text](./Images/image.png)

## Author
- **Category**: Productivity
- **Author**: Alejandro Lopez
- **Last Updated**: 2025-02-25







================================================
FILE: copilot-agent-samples/copilot-studio-agents/README.md
================================================
# 🤖 Copilot Studio Agent Samples

Welcome to the Copilot Studio Agents directory! This section contains a collection of pre-built, reusable agent templates designed to accelerate your development in Microsoft Copilot Studio.

Each agent is in its own folder with a detailed README explaining its function, prerequisites, and setup instructions.

Our sample **custom engine agents** are prefixed with `ca-` .  

---

### Available Agents

| Agent Name | Description | Use Cases |
|------------|-------------|-----------|
| [**📧 AutoReply Agent**](./ca-AutoReplyAgent) | An autonomous agent that monitors incoming emails, researches questions using trusted knowledge sources, and generates professional draft responses. The agent analyzes email content, provides detailed answers with source citations, and formats responses in an engaging, professional manner with suggested follow-up questions. | • Email automation<br>• Customer service support<br>• Research assistance<br>• Professional correspondence<br>• Knowledge base integration |
| [**🧾 Product Quote Agent**](./ca-ProductQuoteAgent) | An autonomous agent that generates professional sales quotes by looking up product information in an Excel file. Users can request the quote in conversation with the agent or by sending a monitored inbox. It uses Power Automate to automatically populate a Word template with the quote details and can email it directly to a customer based on their request. | • Sales quote generation<br>• Automated document creation<br>• Excel data integration<br>• Power Platform automation<br>• Customer inquiry response |

## 🚀 Getting Started

To use these sample agents:

1. Clone this repository
2. Navigate to the agent directory of your choice
3. Follow the setup instructions in each agent's README file


## 🤝 Contributing

We welcome contributions from the community! If you've built an interesting agent or improved one of our samples, please consider submitting a pull request.

---

Happy agent building! 🚀

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-AutoReplyAgent/README.md
================================================
# AutoReply Agent

## 📌 Overview
This Autonomous Agent helps with incoming emails to my inbox (can also be pointed at a shared mailbox). It looks through all the questions that are asked in the email, researches them for me against trusted knowledge sources, and offers a draft reply.

![alt text](./Images/agent_details.png)

## 🙌 Credit 
This build is based on the great work from **Shervin Shaffie** here: [Master Autonomous AI Agents in Microsoft Copilot Studio - Easy to Build & Extremely Powerful](https://youtu.be/OZ_NgoFDiHI?si=OfeUMPdo2VaWx8xf)

## 📝 Pre-Requisites
1. You'll need Copilot Studio, Power Automate, and an Exchange Online mailbox. 
2. **Important**: If you send yourself an email as a test, you might run into an email loop where the agent is responding itself with each draft response. To avoid this, create a folder in your Inbox, where the draft responses will be stored, and then create an email rule that will move those draft response emails to that folder.  

Create Inbox Folder: 
![alt text](./Images/Inbox%20Folder.png)

Create Inbox Rule: 
![alt text](./Images/Inbox%20Rule.png)


## 🚀 Setup Agent
#### Name
```text
AutoReply Agent
```

#### Icon
![alt text](./Images/resized_3179511_192x192.png)

#### Description
```text
This Autonomous Agent helps with incoming emails to my inbox (can also be pointed at a shared mailbox). It looks through all the questions that are asked in the email, researches them for me against trusted knowledge sources, and offers a draft reply.
```

#### Agent Instructions
````text
When a unique new email comes into my inbox, use the knowledge sources to research the questions that are in the email. Do not use any knowledge sources other than the ones specified in this agent. 

Use the 'Send an email (V2)' tool to reply only to me with detailed responses based on your research. Format the email in HTML and respond in a friendly yet professional manner. Include emojis to make the email more engaging. Write it as if you were replying to the original email sender and send it to me immediately.

For each question, start a new paragraph and write a detailed response. Start by bolding a summary of the question and follow with the answer you found. Then include a link to the source that you used to answer the question. The more verbose, detailed, factual and illustrative, the better. Use reason to ensure the response is engaging and helpful and also include a summary of the email for reference.   

If you don't find the answer to questions asked in the email in the knowledge sources - do not answer them, but let me know which questions are left unanswered.

At the bottom of the email let me know what are some good questions to ask the original email sender in order to discover more about their interests.

Sign off your emails with 'Regards', followed by my name. 
````

#### Orchestration
✅ Generative Orchestration

#### Response Model
✅ GPT-4o (Default)

#### Knowledge
This depends on your use case and the type of questions your would like your agent to be able to respond to.

Recommended: Enable "Web Search" capability for the agent so that it's able to search public websites to answer responses, unless you prefer to limit the agent to only the knowledge you provide.


#### Tools
| Tool | Configuration Notes |
|-------|---------|
| Send an email (V2) | Use defaults |

#### Triggers
| Trigger | Configuration Notes |
|---------|---------|
| When a new email arrives (V3) | When configuring the "connection", pick the mailbox where you expect to receive emails. |

#### Agents
| Agents | Configuration Notes |
|---------|---------|
| Optional | Optional |

#### Topics
| Topics | Configuration Notes |
|---------|---------|
| Optional | Optional |

#### Suggested Prompts
| Title | Message |
|-------|---------|
| Not needed | Not Needed |


## Example: Email with Questions
![alt text](./Images/Email%20with%20Questions.png)
## Example: Email with Proposed Response
![alt text](./Images/Email%20with%20Proposed%20Response.png)


## Version history

| Date | Comments        | Author  |
| ------- | --------------- | --------|
| June 17, 2025   | Initial release | Alejandro Lopez - alejanl@microsoft.com


## Disclaimer

**THIS CODE IS PROVIDED _AS IS_ WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.**




================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/.gitignore
================================================
# Python
__pycache__/
*.py[cod]
*.pyc

# PowerShell
*.ps1xml

# OS
Thumbs.db
.DS_Store
Desktop.ini

# IDE
.vscode/
.idea/
*.swp
*.swo

# Temp files
*.tmp
*.bak
*.log

# Dev notes (internal reference, not shipped)
.dev/

# Solution exports (temp files)
PowerClaw_export.zip
PowerClaw_unpacked/

# Internal dev/packaging scripts (not customer-facing)
scripts/build-bootstrap-flow.py
scripts/deploy-to-prod.ps1
scripts/version.json

# Allow the distributable solution zip
!PowerClaw_Solution.zip


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/MicrosoftTeams-Postmessageinachatorchannel.mcs.yml
================================================
mcs.metadata:
  componentName: Microsoft Teams - Post message in a chat or channel
kind: TaskDialog
modelDisplayName: Post message in a chat or channel
modelDescription: Posts a message to a chat or a channel
outputs:
  - propertyName: conversationId

  - propertyName: id

  - propertyName: messageLink

action:
  kind: InvokeConnectorTaskAction
  connectionReference: auto_agent_BmTJh.shared_teams.06d9dd85c77a4d3ebb43ef677f5e5101
  connectionProperties:
    mode: Invoker

  operationId: PostMessageToConversation

outputMode: All

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/Office365Outlook-SendanemailV2.mcs.yml
================================================
mcs.metadata:
  componentName: Office 365 Outlook - Send an email (V2)
kind: TaskDialog
modelDisplayName: Send an email (V2)
modelDescription: This operation sends an email message.
outputs:
  - propertyName: Response

action:
  kind: InvokeConnectorTaskAction
  connectionReference: auto_agent_BmTJh.shared_office365.shared-office365-62963f75-2bd1-4792-b902-260a2a22f3c9
  connectionProperties:
    mode: Invoker

  operationId: SendEmailV2

outputMode: All

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQCalendarMCP-WorkIQCalendarPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ Calendar MCP - Work IQ Calendar (Preview)
kind: TaskDialog
modelDisplayName: Work IQ Calendar (Preview)
modelDescription: "Work IQ MCP server for Microsoft Outlook Calendar operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_a365outlookcalendarmcp.f4336d295e0d408b9ba7cd0250aa7fd7
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_CalendarTools

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQCopilotMCP-WorkIQCopilotPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ Copilot MCP - Work IQ Copilot (Preview)
kind: TaskDialog
modelDisplayName: Work IQ Copilot (Preview)
modelDescription: "Work IQ MCP server for Microsoft Copilot Search operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_a365copilotchatmcp.da070d1a1d8d4fd9997e4f0bf07723f0
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_m365copilot

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQMailMCP-WorkIQMailPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ Mail MCP - Work IQ Mail (Preview)
kind: TaskDialog
modelDisplayName: Work IQ Mail (Preview)
modelDescription: "Work IQ MCP server for Microsoft Outlook Mail operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_a365outlookmailmcp.f7190c3c8a8c411186750a06ac015536
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_MailTools

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQSharePointMCP-WorkIQSharePointPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ SharePoint MCP - Work IQ SharePoint (Preview)
kind: TaskDialog
modelDisplayName: Work IQ SharePoint (Preview)
modelDescription: "Work IQ MCP server for Microsoft SharePoint operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_workiqsharepoint.b14984ba327a470cbf63ef55fee71964
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_SharePointRemoteServer

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQTeamsMCP-WorkIQTeamsPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ Teams MCP - Work IQ Teams (Preview)
kind: TaskDialog
modelDisplayName: Work IQ Teams (Preview)
modelDescription: "Work IQ MCP server for Microsoft Teams operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_a365teamsmcp.f27ca977c98044b68740cbf004cc7004
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_TeamsServer

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQUserMCP-WorkIQUserPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ User MCP - Work IQ User (Preview)
kind: TaskDialog
modelDisplayName: Work IQ User (Preview)
modelDescription: "Work IQ MCP server for Microsoft 365 User operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_a365memcp.4e6d522a4aa74c5f948d8fa14169b277
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_MeServer

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQWordMCP-WorkIQWordPreview.mcs.yml
================================================
mcs.metadata:
  componentName: Work IQ Word MCP - Work IQ Word (Preview)
kind: TaskDialog
modelDisplayName: Work IQ Word (Preview)
modelDescription: "Work IQ MCP server for Microsoft Word operations. This feature is in preview and is part of the Work IQ tools, providing shared work intelligence and actions for agents. Availability and capabilities are subject to change. Learn more: https://aka.ms/AboutWorkIQ"
action:
  kind: InvokeExternalAgentTaskAction
  connectionReference: auto_agent_BmTJh.shared_a365wordmcp.780daccb8c2348d5b2581658b11a559a
  connectionProperties:
    mode: Invoker

  operationDetails:
    kind: ModelContextProtocolMetadata
    operationId: mcp_WordServer

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/agent.mcs.yml
================================================
mcs.metadata:
  componentName: PowerClaw
  description: "A 24/7 autonomous AI agent that runs on a scheduled heartbeat, proactively monitoring your calendar, email, and tasks across Microsoft 365. It uses a dedicated SharePoint site as its brain for memories, configuration, and operating rules. PowerClaw operates in two modes: an autonomous heartbeat that works in the background every 30 minutes, and interactive Teams chat for on-demand conversations."
kind: GptComponentMetadata
displayName: PowerClaw
instructions: |+
  You are a 24/7 autonomous chief of staff for Microsoft 365. Your name, personality, and behavioral identity are defined in your constitution files — always defer to them.

  Primary operating context is injected at conversation start through global variables (SoulText, UserText, AgentsText, ToolsText) loaded from SharePoint constitution files. Treat that context as authoritative.

  General rules:
  - Use the constitution above plus live tool results as the source of truth.
  - Be concise, accurate, and action-oriented.
  - Prefer the fewest tool calls needed.
  - Follow detailed formatting, routing, safety, task, and memory rules from the constitution files instead of restating them here.
  - When sending email, use HTML only and follow the PowerClaw email style below. Never send markdown email.

  PowerClaw email style:
  - Use a simple full-width div layout. Do not use table-based layouts, wrapper tables, width="680", max-width:680px, centered fixed-width containers, or any other hard content-width cap.
  - The outer wrapper must be a div with: background-color:#1a1a1a; color:#e0e0e0; font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif; line-height:1.6; padding:20px; width:100%; box-sizing:border-box.
  - Use section cards as divs with: background-color:#252525; padding:15px; margin-bottom:15px; border-radius:6px; border-left:4px solid #0078D4.
  - Use #3a3a3a for separators or secondary card borders. Use #ffffff for primary headings, #00BCF2 for section headings, #d0d0d0 for body text, and #808080 or #a0a0a0 for metadata.
  - Do not use GitHub-dark colors such as #0d1117, #161b22, #1c2a3a, #e6edf3, #c9d1d9, or #8b949e. They do not render reliably in Outlook dark mode.
  - Keep the richer content structure: clear title, timestamp/context line, narrative summary, status badges, sections for findings/actions/next steps, and a small footer.

  Mode selection:
  - If the incoming message begins with "[HEARTBEAT EVENT TRIGGERED]", you are in Autonomous Heartbeat Mode.
  - Otherwise, you are in Interactive Mode.

  Heartbeat Mode:
  - Respond with valid JSON only. No markdown or extra text.
  - IMPORTANT: Always check your live calendar on every heartbeat. Do not skip observation based on memory or prior heartbeats alone.
  - Work in this order unless the loaded constitution says a higher-priority exception applies:
    1. Due calendar routines or scheduled commitments
    2. Time-sensitive proactive alerts
    3. Existing PowerClaw_Tasks
    4. Memory and log updates
  - The heartbeat prompt already includes recent memory, open tasks, memory facts, journal context, and the latest constitution payload. Start there before doing extra retrieval — but always verify calendar live.
  - In heartbeat mode, never update the PowerClaw_Tasks list or PowerClaw_Memory list directly through MCP. The flow performs writes from your JSON output.
  - Use `taskActions` for updates to existing tasks. Existing tasks normally move from "To Do" to "Human Review" after you produce the deliverable and notify the user.
  - Use `proposedTasks` only for new follow-up work, reminders, or agent-initiated commitments that should become new tasks.
  - Use `proposedMemories` only for durable facts worth reusing later. Do not store transient events.
  - Use `journalEntry` only when something genuinely notable happened; omit it or leave it empty for routine heartbeats.
  - Deduplicate using the loaded task list, memory facts, and recent memory log so you do not resend the same alert, reminder, or task outcome.
  - Respect quiet hours, VIP handling, reminder cadence, safety rules, and channel preferences from the constitution files.
  - If blocked by missing critical information, do not invent facts. Leave the task unchanged or create an appropriate follow-up.

  Heartbeat response schema:
  {{
    "thoughts": "short internal summary of what you concluded this heartbeat",
    "mcpActionsTaken": ["tool or data actions you actually performed"],
    "memoryUpdateSummary": "concise summary for the memory log",
    "proposedMemories": [
      {{
        "memoryType": "Preference|Person|Project|Pattern|Commitment|Insight",
        "scopeKey": "user | person:name | project:name | task:ID | other specific scope",
        "canonicalFact": "clear durable fact",
        "confidence": 50-100,
        "importance": "Low|Med|High|Critical",
        "expiresAt": "ISO date or empty string if permanent"
      }}
    ],
    "proposedTasks": [
      {{
        "title": "new follow-up task title",
        "description": "what should happen next",
        "priority": "Low|Med|High|Critical",
        "source": "Heartbeat",
        "dueDate": "ISO date or empty string"
      }}
    ],
    "journalEntry": "optional; only for genuinely notable observations. Format: '- HH:MM UTC: 1-2 short sentences'. No essays, receipts, or dedup markers.",
    "taskActions": [
      {{
        "taskId": "SharePoint task item ID",
        "newStatus": "To Do|Human Review|Done",
        "notes": "brief outcome or next-step note"
      }}
    ],
    "status": "idle|proactive_message_sent|error"
  }}

  Interactive Mode:
  - Reply naturally, not in JSON.
  - Use tools only when helpful for the user's request.
  - You may read and update tasks directly in interactive mode when the user asks.
  - If the user asks you to remember something durable, save it directly to PowerClaw_Memory using the constitution's memory rules.
  - For outbound communications, follow the constitution templates. Emails must be HTML, never markdown.
  - Proactive Teams messages must go only to the user's 1:1 chat; if that is not certain, use email instead.
  - Token-safe retrieval: broad requests like "what did I do this week" can overflow the context window. Break large retrievals into focused steps — fetch calendar separately from mail, summarize as you go, and never pull full email bodies. Use narrow filters ($top=5, date ranges, subject keywords) instead of open-ended scans. If a tool call returns a large result, summarize it immediately before making the next call. Prefer multiple small targeted calls over one massive retrieval.

gptCapabilities:
  webBrowsing: true

aISettings:
  model:
    modelNameHint: Sonnet46

developerName: Microsoft FastTrack
shortDescription: Your autonomous AI chief of staff for Microsoft 365


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/connectionreferences.mcs.yml
================================================
connectionReferences:
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365copilotchatmcp.da070d1a1d8d4fd9997e4f0bf07723f0
    connectorId: /providers/Microsoft.PowerApps/apis/shared_a365copilotchatmcp
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365memcp.4e6d522a4aa74c5f948d8fa14169b277
    connectorId: /providers/Microsoft.PowerApps/apis/shared_a365memcp
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365outlookcalendarmcp.f4336d295e0d408b9ba7cd0250aa7fd7
    connectorId: /providers/Microsoft.PowerApps/apis/shared_a365outlookcalendarmcp
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365outlookmailmcp.f7190c3c8a8c411186750a06ac015536
    connectorId: /providers/Microsoft.PowerApps/apis/shared_a365outlookmailmcp
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365teamsmcp.f27ca977c98044b68740cbf004cc7004
    connectorId: /providers/Microsoft.PowerApps/apis/shared_a365teamsmcp
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365wordmcp.780daccb8c2348d5b2581658b11a559a
    connectorId: /providers/Microsoft.PowerApps/apis/shared_a365wordmcp
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_office365.shared-office365-62963f75-2bd1-4792-b902-260a2a22f3c9
    connectorId: /providers/Microsoft.PowerApps/apis/shared_office365
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_teams.06d9dd85c77a4d3ebb43ef677f5e5101
    connectorId: /providers/Microsoft.PowerApps/apis/shared_teams
  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_workiqsharepoint.b14984ba327a470cbf63ef55fee71964
    connectorId: /providers/Microsoft.PowerApps/apis/shared_workiqsharepoint
  - connectionReferenceLogicalName: cr0b1_sharedmicrosoftcopilotstudio_d1a4f
    connectorId: /providers/Microsoft.PowerApps/apis/shared_microsoftcopilotstudio
  - connectionReferenceLogicalName: new_sharedoffice365_9be30
    connectorId: /providers/Microsoft.PowerApps/apis/shared_office365
  - connectionReferenceLogicalName: new_sharedsharepointonline_77d8f
    connectorId: /providers/Microsoft.PowerApps/apis/shared_sharepointonline


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/settings.mcs.yml
================================================
displayName: PowerClaw
schemaName: auto_agent_BmTJh
accessControlPolicy: Any
authenticationMode: Integrated
authenticationTrigger: Always
configuration:
  channels:
    - channelId: MsTeams

    - channelId: Microsoft365Copilot

  settings:
    GenerativeActionsEnabled: true

  isAgentConnectable: true
  publishOnImport: true
  gPTSettings:
    defaultSchemaName: auto_agent_BmTJh.gpt.default

  isLightweightBot: false
  aISettings:
    useModelKnowledge: true
    isFileAnalysisEnabled: true
    isSemanticSearchEnabled: true
    optInUseLatestModels: false

  recognizer:
    kind: GenerativeAIRecognizer

  analyticsSettings:
    includeNodeLevelDetailsInTranscript: true

publishedOn: 2026-03-20T20:12:26.0000000Z
template: default-2.1.0
language: 1033

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ConversationInit.mcs.yml
================================================
mcs.metadata:
  componentName: Conversation Init
  description: JIT provisioning of agent context globals on every incoming message. Guards with IsBlank so the flow runs only once per conversation. Works reliably in M365 Copilot and Teams where OnConversationStart may not fire.
kind: AdaptiveDialog
modelDescription: null
beginDialog:
  kind: OnActivity
  id: main
  type: Message
  condition: =IsBlank(Global.SoulText)
  actions:
    - kind: InvokeFlowAction
      id: invokeFlowAction_Rk7mWp
      input: {}
      output:
        binding:
          agentstext: Global.AgentsText
          soultext: Global.SoulText
          toolstext: Global.ToolsText
          usertext: Global.UserText

      flowId: ff84c862-c7f6-819b-5ec6-7201f9389c85


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ConversationStart.mcs.yml
================================================
mcs.metadata:
  componentName: Conversation Start
  description: This system topic triggers when the agent receives an Activity indicating the beginning of a new conversation. Context provisioning has moved to the Conversation Init topic (OnActivity) for reliable M365 Copilot and Teams support.
kind: AdaptiveDialog
beginDialog:
  kind: OnConversationStart
  id: main
  actions:
    - kind: SendActivity
      id: sendMessage_M0LuhV
      activity:
        text:
          - "Hey! How can I help?"
        speak:
          - "Hey! How can I help?"

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/DailyDigest.mcs.yml
================================================
mcs.metadata:
  componentName: Daily Digest
  description: Provides an on-demand daily briefing of calendar, tasks, and email highlights when the user asks.
kind: AdaptiveDialog
beginDialog:
  kind: OnRecognizedIntent
  id: main
  intent:
    displayName: Daily Digest
    includeInOnSelectIntent: true
    triggerQueries:
      - Give me my daily briefing
      - What's on my plate today
      - Daily digest
      - Morning brief
      - What do I have today
      - Summarize my day
      - What's my schedule
      - Brief me
      - What should I focus on today
      - Show me my priorities

  actions:
    - kind: SendActivity
      id: sendMessage_digest_intro
      activity: "Let me pull together your briefing — checking your calendar, tasks, and inbox..."

    - kind: SearchAndSummarizeContent
      id: generativeAnswer_digest
      autoSend: true
      responseCaptureType: FullResponse
      userInput: =System.Activity.Text
      additionalInstructions: >-
        Please provide a comprehensive daily briefing for me. Include:
        1. **Today's Calendar**: List all meetings for today with times and attendees
        2. **Overdue Tasks**: Check Planner for any overdue tasks
        3. **Tasks Due Today**: List tasks due today
        4. **Priority Emails**: Summarize any unread urgent or important emails
        5. **Conflicts or Concerns**: Flag any scheduling conflicts or items needing immediate attention

        Format the response as a clean, scannable briefing with emoji indicators (🟢 good, 🟡 attention needed, 🔴 urgent).


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/EndofConversation.mcs.yml
================================================
mcs.metadata:
  componentName: End of Conversation
  description: |-
    This system topic is only triggered by a redirect action,
    and guides the user through rating their conversation with the agent.
kind: AdaptiveDialog
startBehavior: CancelOtherTopics
beginDialog:
  kind: OnSystemRedirect
  id: main
  actions:
    - kind: Question
      id: 41d42054-d4cb-4e90-b922-2b16b37fe379
      conversationOutcome: ResolvedImplied
      alwaysPrompt: true
      variable: init:Topic.SurveyResponse
      prompt: Did that answer your question?
      entity: BooleanPrebuiltEntity

    - kind: ConditionGroup
      id: condition-0
      conditions:
        - id: condition-0-item-0
          condition: =Topic.SurveyResponse = true
          actions:
            - kind: CSATQuestion
              id: csat_1
              conversationOutcome: ResolvedConfirmed

            - kind: SendActivity
              id: sendMessage_8r29O0
              activity: Thanks for your feedback.

            - kind: Question
              id: question_1
              alwaysPrompt: true
              variable: init:Topic.Continue
              prompt: Can I help with anything else?
              entity: BooleanPrebuiltEntity

            - kind: ConditionGroup
              id: condition-1
              conditions:
                - id: condition-1-item-0
                  condition: =Topic.Continue = true
                  actions:
                    - kind: SendActivity
                      id: sendMessage_4eOE6h
                      activity: Go ahead. I'm listening.

              elseActions:
                - kind: SendActivity
                  id: yHBz55
                  activity: Ok, goodbye.

                - kind: EndConversation
                  id: jh1GMT

      elseActions:
        - kind: Question
          id: PM68ot
          alwaysPrompt: true
          variable: init:Topic.TryAgain
          prompt: Sorry I wasn't able to help better. Would you like to try again?
          entity: BooleanPrebuiltEntity

        - kind: ConditionGroup
          id: KNxYBf
          conditions:
            - id: DPveFP
              condition: =Topic.TryAgain = false
              actions:
                - kind: BeginDialog
                  id: cngqi4
                  dialog: auto_agent_BmTJh.topic.Escalate

          elseActions:
            - kind: SendActivity
              id: GrVHEW
              activity: Go ahead. I'm listening.

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Escalate.mcs.yml
================================================
mcs.metadata:
  componentName: Escalate
  description: |-
    This system topic is triggered when the user indicates they would like to speak to a representative.
    You can configure how the agent will handle human hand-off scenarios in the agent settings..
    If your agent does not handle escalations, this topic should be disabled.
kind: AdaptiveDialog
startBehavior: CancelOtherTopics
beginDialog:
  kind: OnEscalate
  id: main
  intent:
    displayName: Escalate
    includeInOnSelectIntent: false
    triggerQueries:
      - Talk to agent
      - Talk to a person
      - Talk to someone
      - Call back
      - Call customer service
      - Call me please
      - Call support
      - Call technical support
      - Can an agent call me
      - Can I call
      - Can I get in touch with someone else
      - Can I get real agent support
      - Can I get transferred to a person to call
      - Can I have a call in number Or can I be called
      - Can I have a representative call me
      - Can I schedule a call
      - Can I speak to a representative
      - Can I talk to a human
      - Can I talk to a human assistant
      - Can someone call me
      - Chat with a human
      - Chat with a representative
      - Chat with agent
      - Chat with someone please
      - Connect me to a live agent
      - Connect me to a person
      - Could some one contact me by phone
      - Customer agent
      - Customer representative
      - Customer service
      - I need a manager to contact me
      - I need customer service
      - I need help from a person
      - I need to speak with a live argent
      - I need to talk to a specialist please
      - I want to talk to customer service
      - I want to proceed with live support
      - I want to speak with a consultant
      - I want to speak with a live tech
      - I would like to speak with an associate
      - I would like to talk to a technician
      - Talk with tech support member

  actions:
    - kind: SendActivity
      id: sendMessage_s39DCt
      conversationOutcome: Escalated
      activity: |-
        Escalating to a representative is not currently configured for this agent, however this is where the agent could provide information about how to get in touch with someone another way.

        Is there anything else I can help you with?

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Fallback.mcs.yml
================================================
mcs.metadata:
  componentName: Fallback
  description: This system topic triggers when the user's utterance does not match any existing topics.
kind: AdaptiveDialog
beginDialog:
  kind: OnUnknownIntent
  id: main
  actions:
    - kind: ConditionGroup
      id: conditionGroup_LktzXw
      conditions:
        - id: conditionItem_tlGIVo
          condition: =System.FallbackCount < 3
          actions:
            - kind: SendActivity
              id: sendMessage_QZreqo
              activity: I'm sorry, I'm not sure how to help with that. Can you try rephrasing?

      elseActions:
        - kind: BeginDialog
          id: 5aXj5M
          dialog: auto_agent_BmTJh.topic.Escalate

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Goodbye.mcs.yml
================================================
mcs.metadata:
  componentName: Goodbye
  description: This topic triggers when the user says goodbye. By default, it does not end the conversation. If you would like to end the conversation when the user says goodbye, you can add an "End of Conversation" action to this topic, or redirect to the "End of Conversation" system topic.
kind: AdaptiveDialog
startBehavior: CancelOtherTopics
beginDialog:
  kind: OnRecognizedIntent
  id: main
  intent:
    displayName: Goodbye
    includeInOnSelectIntent: false
    triggerQueries:
      - Bye
      - Bye for now
      - Bye now
      - Good bye
      - No thank you. Goodbye.
      - See you later

  actions:
    - kind: Question
      id: question_zf2HhP
      variable: Topic.EndConversation
      prompt: Would you like to end our conversation?
      entity: BooleanPrebuiltEntity

    - kind: ConditionGroup
      id: condition_DGc1Wy
      conditions:
        - id: condition_DGc1Wy-item-0
          condition: =Topic.EndConversation = true
          actions:
            - kind: BeginDialog
              id: dn94DC
              dialog: auto_agent_BmTJh.topic.EndofConversation

        - id: condition_DGc1Wy-item-1
          condition: =Topic.EndConversation = false
          actions:
            - kind: SendActivity
              id: sendMessage_LdLhmf
              activity: Go ahead. I'm listening.

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/MultipleTopicsMatched.mcs.yml
================================================
mcs.metadata:
  componentName: Multiple Topics Matched
  description: This system topic triggers when the agent matches multiple Topics with the incoming message and needs to clarify which one should be triggered.
kind: AdaptiveDialog
beginDialog:
  kind: OnSelectIntent
  id: main
  triggerBehavior: Always
  actions:
    - kind: SetVariable
      id: setVariable_M6434i
      variable: init:Topic.IntentOptions
      value: =System.Recognizer.IntentOptions

    - kind: SetTextVariable
      id: setTextVariable_0
      variable: Topic.NoneOfTheseDisplayName
      value: None of these

    - kind: EditTable
      id: sendMessage_g5Ls09
      changeType: Add
      itemsVariable: Topic.IntentOptions
      value: "={ DisplayName: Topic.NoneOfTheseDisplayName, TopicId: \"NoTopic\", TriggerId: \"NoTrigger\", Score: 1.0 }"

    - kind: Question
      id: question_zf2HhP
      interruptionPolicy:
        allowInterruption: false

      alwaysPrompt: true
      variable: System.Recognizer.SelectedIntent
      prompt: "To clarify, did you mean:"
      entity:
        kind: DynamicClosedListEntity
        items: =Topic.IntentOptions

    - kind: ConditionGroup
      id: conditionGroup_60PuXb
      conditions:
        - id: conditionItem_rs7GgM
          condition: =System.Recognizer.SelectedIntent.TopicId = "NoTopic"
          actions:
            - kind: ReplaceDialog
              id: YZXRDb
              dialog: auto_agent_BmTJh.topic.Fallback

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/OnError.mcs.yml
================================================
mcs.metadata:
  componentName: On Error
  description: This system topic triggers when the agent encounters an error. When using the test chat pane, the full error description is displayed.
kind: AdaptiveDialog
startBehavior: UseLatestPublishedContentAndCancelOtherTopics
beginDialog:
  kind: OnError
  id: main
  actions:
    - kind: SetVariable
      id: setVariable_timestamp
      variable: init:Topic.CurrentTime
      value: =Text(Now(), DateTimeFormat.UTC)

    - kind: ConditionGroup
      id: condition_1
      conditions:
        - id: bL4wmY
          condition: =System.Conversation.InTestMode = true
          actions:
            - kind: SendActivity
              id: sendMessage_XJBYMo
              activity: |-
                Error Message: {System.Error.Message}
                Error Code: {System.Error.Code}
                Conversation Id: {System.Conversation.Id}
                Time (UTC): {Topic.CurrentTime}

      elseActions:
        - kind: SendActivity
          id: sendMessage_dZ0gaF
          activity:
            text:
              - |-
                An error has occurred.
                Error code: {System.Error.Code}
                Conversation Id: {System.Conversation.Id}
                Time (UTC): {Topic.CurrentTime}.
            speak:
              - An error has occurred, please try again.

    - kind: LogCustomTelemetryEvent
      id: 9KwEAn
      eventName: OnErrorLog
      properties: "={ErrorMessage: System.Error.Message, ErrorCode: System.Error.Code, TimeUTC: Topic.CurrentTime, ConversationId: System.Conversation.Id}"

    - kind: CancelAllDialogs
      id: NW7NyY

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ResetConversation.mcs.yml
================================================
mcs.metadata:
  componentName: Reset Conversation
kind: AdaptiveDialog
startBehavior: UseLatestPublishedContentAndCancelOtherTopics
beginDialog:
  kind: OnSystemRedirect
  id: main
  actions:
    - kind: SendActivity
      id: sendMessage_OPsT1O
      activity: What can I help you with?

    - kind: ClearAllVariables
      id: clearAllVariables_73bTFR
      variables: ConversationScopedVariables

    - kind: CancelAllDialogs
      id: cancelAllDialogs_12Gt21

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Search.mcs.yml
================================================
mcs.metadata:
  componentName: Conversational boosting
  description: Create generative answers from knowledge sources.
kind: AdaptiveDialog
beginDialog:
  kind: OnUnknownIntent
  id: main
  priority: -1
  actions:
    - kind: SearchAndSummarizeContent
      id: search-content
      variable: Topic.Answer
      userInput: =System.Activity.Text

    - kind: ConditionGroup
      id: has-answer-conditions
      conditions:
        - id: has-answer
          condition: =!IsBlank(Topic.Answer)
          actions:
            - kind: EndDialog
              id: end-topic
              clearTopicQueue: true

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Signin.mcs.yml
================================================
mcs.metadata:
  componentName: "Sign in "
  description: This system topic triggers when the agent needs to sign in the user or require the user to sign in
kind: AdaptiveDialog
beginDialog:
  kind: OnSignIn
  id: main
  actions:
    - kind: ConditionGroup
      id: conditionGroup_ypjGKL
      conditions:
        - id: conditionItem_7XYIIR
          condition: =System.SignInReason = SignInReason.SignInRequired
          actions:
            - kind: SendActivity
              id: sendMessage_1jHUNO
              activity: Hello! To be able to help you, I'll need you to sign in.

    - kind: OAuthInput
      id: gOjhZA
      title: Login
      text: To continue, please login

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/StartOver.mcs.yml
================================================
mcs.metadata:
  componentName: Start Over
kind: AdaptiveDialog
beginDialog:
  kind: OnRecognizedIntent
  id: main
  intent:
    displayName: Start Over
    includeInOnSelectIntent: false
    triggerQueries:
      - let's begin again
      - start over
      - start again
      - restart

  actions:
    - kind: Question
      id: question_zguoVV
      alwaysPrompt: false
      variable: init:Topic.Confirm
      prompt: Are you sure you want to restart the conversation?
      entity: BooleanPrebuiltEntity

    - kind: ConditionGroup
      id: conditionGroup_lvx2zV
      conditions:
        - id: conditionItem_sVQtHa
          condition: =Topic.Confirm = true
          actions:
            - kind: BeginDialog
              id: 0YKYsy
              dialog: auto_agent_BmTJh.topic.ResetConversation

      elseActions:
        - kind: SendActivity
          id: sendMessage_lk2CyQ
          activity: Ok. Let's carry on.

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ThankYou.mcs.yml
================================================
mcs.metadata:
  componentName: Thank you
  description: This topic triggers when the user says thank you.
kind: AdaptiveDialog
beginDialog:
  kind: OnRecognizedIntent
  id: main
  intent:
    displayName: Thank you
    includeInOnSelectIntent: false
    triggerQueries:
      - thanks
      - thank you
      - thanks so much
      - ty

  actions:
    - kind: SendActivity
      id: sendMessage_9iz6v7
      activity: You're welcome.

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/trigger/RecurringCopilotTrigge.29c73850-0823-4027-a0b8-254d6dc2d00.mcs.yml
================================================
mcs.metadata:
  componentName: Recurring Copilot Trigger
  description: Create a trigger to automatically call your copilot repeatedly
kind: ExternalTriggerConfiguration
externalTriggerSource:
  kind: WorkflowExternalTrigger
  flowId: 04cf2235-af1c-f111-88b1-6045bd0079f1

extensionData:
  flowName: 9b3a2849-c91d-9e3b-9ea7-fa3af92e218f
  flowUrl: /providers/Microsoft.ProcessSimple/environments/58c6612f-ce8b-e9b5-9d10-de8d8f291502/flows/9b3a2849-c91d-9e3b-9ea7-fa3af92e218f
  triggerConnectionType: Schedule

================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/AgentsText.mcs.yml
================================================
mcs.metadata:
  componentName: AgentsText
kind: GlobalVariableComponent
schemaName: auto_agent_BmTJh.GlobalVariableComponent.AgentsText
description: Agent capabilities and sub-agent definitions loaded from SharePoint agents.md at conversation start
name: AgentsText
scope: Conversation
defaultValue: DEFAULT
aIVisibility: UseInAIContext


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/SoulText.mcs.yml
================================================
mcs.metadata:
  componentName: SoulText
kind: GlobalVariableComponent
schemaName: auto_agent_BmTJh.GlobalVariableComponent.SoulText
description: Agent constitution and personality loaded from SharePoint soul.md at conversation start
name: SoulText
scope: Conversation
defaultValue: DEFAULT
aIVisibility: UseInAIContext


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/ToolsText.mcs.yml
================================================
mcs.metadata:
  componentName: ToolsText
kind: GlobalVariableComponent
schemaName: auto_agent_BmTJh.GlobalVariableComponent.ToolsText
description: Tool descriptions and usage guidelines loaded from SharePoint tools.md at conversation start
name: ToolsText
scope: Conversation
defaultValue: DEFAULT
aIVisibility: UseInAIContext


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/UserText.mcs.yml
================================================
mcs.metadata:
  componentName: UserText
kind: GlobalVariableComponent
schemaName: auto_agent_BmTJh.GlobalVariableComponent.UserText
description: User context and preferences loaded from SharePoint user.md at conversation start
name: UserText
scope: Conversation
defaultValue: DEFAULT
aIVisibility: UseInAIContext


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/metadata.yml
================================================
jsonFileName: workflows/GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/workflow.json
workflowId: ff84c862-c7f6-819b-5ec6-7201f9389c85
name: Get Context
type: 1
description: 
subprocess: false
category: 5
mode: 0
scope: 4
onDemand: false
triggerOnCreate: false
triggerOnDelete: false
asyncAutodelete: false
syncWorkflowLogOnFailure: false
stateCode: 1
statusCode: 2
runAs: 1
isTransacted: true
introducedVersion: 1.0
isCustomizable:
  value: true
  canBeChanged: true
  managedPropertyLogicalName: iscustomizableanddeletable
businessProcessType: 0
isCustomProcessingStepAllowedForOtherPublishers:
  value: true
  canBeChanged: true
  managedPropertyLogicalName: canbedeleted
modernFlowType: 1
primaryEntity: none


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/workflow.json
================================================
{
  "properties": {
    "connectionReferences": {
      "shared_sharepointonline": {
        "runtimeSource": "invoker",
        "connection": {
          "connectionReferenceLogicalName": "new_sharedsharepointonline_77d8f"
        },
        "api": {
          "name": "shared_sharepointonline"
        }
      }
    },
    "definition": {
      "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "$authentication": {
          "defaultValue": {},
          "type": "SecureObject"
        },
        "$connections": {
          "defaultValue": {},
          "type": "Object"
        }
      },
      "triggers": {
        "manual": {
          "metadata": {
            "operationMetadataId": "b8f61c18-7224-4f8a-9c5f-72fbce5df764"
          },
          "type": "Request",
          "kind": "Skills",
          "inputs": {
            "schema": {
              "type": "object",
              "properties": {},
              "required": []
            }
          }
        }
      },
      "actions": {
        "Compose:_Config_SiteURL": {
          "type": "Compose",
          "inputs": "https://contoso.sharepoint.com/sites/PowerClaw-Workspace",
          "runAfter": {}
        },
        "Respond_to_the_agent": {
          "runAfter": {
            "Get_file_content:_tools.md": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "81c94f73-dd52-465c-ad3b-a4686da63cc3"
          },
          "type": "Response",
          "kind": "Skills",
          "inputs": {
            "schema": {
              "type": "object",
              "properties": {
                "soultext": {
                  "title": "SoulText",
                  "description": "",
                  "type": "string",
                  "x-ms-content-hint": "TEXT",
                  "x-ms-dynamically-added": true
                },
                "usertext": {
                  "title": "UserText",
                  "description": "",
                  "type": "string",
                  "x-ms-content-hint": "TEXT",
                  "x-ms-dynamically-added": true
                },
                "agentstext": {
                  "title": "AgentsText",
                  "description": "",
                  "type": "string",
                  "x-ms-content-hint": "TEXT",
                  "x-ms-dynamically-added": true
                },
                "toolstext": {
                  "title": "ToolsText",
                  "description": "",
                  "type": "string",
                  "x-ms-content-hint": "TEXT",
                  "x-ms-dynamically-added": true
                }
              },
              "additionalProperties": {}
            },
            "statusCode": 200,
            "body": {
              "soultext": "@{body('Get_file_content:_soul.md')}",
              "usertext": "@{body('Get_file_content:_user.md')}",
              "agentstext": "@{body('Get_file_content:_agents.md')}",
              "toolstext": "@{body('Get_file_content:_tools.md')}"
            }
          }
        },
        "Get_file_content:_soul.md": {
          "runAfter": {
            "Compose:_Config_SiteURL": [
              "Succeeded"
            ]
          },
          "metadata": {
            "%252fShared%2bDocuments%252fsoul.md": "/Shared Documents/soul.md"
          },
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "dataset": "@outputs('Compose:_Config_SiteURL')",
              "id": "%252fShared%2bDocuments%252fsoul.md",
              "inferContentType": true
            },
            "host": {
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
              "operationId": "GetFileContent",
              "connectionName": "shared_sharepointonline"
            }
          }
        },
        "Get_file_content:_user.md": {
          "runAfter": {
            "Get_file_content:_soul.md": [
              "Succeeded"
            ]
          },
          "metadata": {
            "%252fShared%2bDocuments%252fuser.md": "/Shared Documents/user.md"
          },
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "dataset": "@outputs('Compose:_Config_SiteURL')",
              "id": "%252fShared%2bDocuments%252fuser.md",
              "inferContentType": true
            },
            "host": {
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
              "operationId": "GetFileContent",
              "connectionName": "shared_sharepointonline"
            }
          }
        },
        "Get_file_content:_agents.md": {
          "runAfter": {
            "Get_file_content:_user.md": [
              "Succeeded"
            ]
          },
          "metadata": {
            "%252fShared%2bDocuments%252fagents.md": "/Shared Documents/agents.md"
          },
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "dataset": "@outputs('Compose:_Config_SiteURL')",
              "id": "%252fShared%2bDocuments%252fagents.md",
              "inferContentType": true
            },
            "host": {
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
              "operationId": "GetFileContent",
              "connectionName": "shared_sharepointonline"
            }
          }
        },
        "Get_file_content:_tools.md": {
          "runAfter": {
            "Get_file_content:_agents.md": [
              "Succeeded"
            ]
          },
          "metadata": {
            "%252fShared%2bDocuments%252ftools.md": "/Shared Documents/tools.md"
          },
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "dataset": "@outputs('Compose:_Config_SiteURL')",
              "id": "%252fShared%2bDocuments%252ftools.md",
              "inferContentType": true
            },
            "host": {
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
              "operationId": "GetFileContent",
              "connectionName": "shared_sharepointonline"
            }
          }
        }
      },
      "outputs": {}
    }
  },
  "schemaVersion": "1.0.0.0"
}


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/metadata.yml
================================================
jsonFileName: workflows/HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/workflow.json
workflowId: 04cf2235-af1c-f111-88b1-6045bd0079f1
name: Heartbeat Flow
type: 1
description: Create a trigger to automatically call your copilot repeatedly
subprocess: false
category: 5
mode: 0
scope: 4
onDemand: false
triggerOnCreate: false
triggerOnDelete: false
asyncAutodelete: false
syncWorkflowLogOnFailure: false
stateCode: 0
statusCode: 1
runAs: 1
isTransacted: true
introducedVersion: 1.0.0.0
isCustomizable:
  value: true
  canBeChanged: true
  managedPropertyLogicalName: iscustomizableanddeletable
businessProcessType: 0
isCustomProcessingStepAllowedForOtherPublishers:
  value: true
  canBeChanged: true
  managedPropertyLogicalName: canbedeleted
modernFlowType: 0
primaryEntity: none


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/workflow.json
================================================
{
  "properties": {
    "connectionReferences": {
      "shared_sharepointonline": {
        "runtimeSource": "embedded",
        "connection": {
          "connectionReferenceLogicalName": "new_sharedsharepointonline_77d8f"
        },
        "api": {
          "name": "shared_sharepointonline"
        }
      },
      "shared_office365": {
        "runtimeSource": "embedded",
        "connection": {
          "connectionReferenceLogicalName": "new_sharedoffice365_9be30"
        },
        "api": {
          "name": "shared_office365"
        }
      },
      "shared_microsoftcopilotstudio": {
        "runtimeSource": "embedded",
        "connection": {
          "connectionReferenceLogicalName": "cr0b1_sharedmicrosoftcopilotstudio_d1a4f"
        },
        "api": {
          "name": "shared_microsoftcopilotstudio"
        }
      }
    },
    "definition": {
      "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "$connections": {
          "defaultValue": {},
          "type": "Object"
        },
        "$authentication": {
          "defaultValue": {},
          "type": "SecureObject"
        }
      },
      "triggers": {
        "Recurrence": {
          "recurrence": {
            "frequency": "Minute",
            "interval": 30
          },
          "metadata": {
            "operationMetadataId": "477c5e0d-a600-48af-b86b-409a6b19d573"
          },
          "type": "Recurrence"
        }
      },
      "actions": {
        "Compose:_Config_SiteURL": {
          "runAfter": {},
          "metadata": {
            "operationMetadataId": "c37bab5f-a2fc-44de-b11f-20a7aab01e95"
          },
          "type": "Compose",
          "inputs": "https://contoso.sharepoint.com/sites/PowerClaw-Workspace"
        },
        "Compose:_Config_AdminEmail": {
          "runAfter": {
            "Compose:_Config_SiteURL": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "1a5adad2-d7d7-4b28-b88e-72774e441964"
          },
          "type": "Compose",
          "inputs": "admin@contoso.onmicrosoft.com"
        },
        "Initialize_variable:_AgentSuccess": {
          "runAfter": {
            "Compose:_Config_AdminEmail": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "4b66dbb1-2a3a-4c0e-8e39-8a6c3e1391b0"
          },
          "type": "InitializeVariable",
          "inputs": {
            "variables": [
              {
                "name": "AgentSuccess",
                "type": "boolean",
                "value": false
              }
            ]
          }
        },
        "Initialize_variable:_RetryCount": {
          "runAfter": {
            "Initialize_variable:_AgentSuccess": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "95a13299-2dcf-453b-890e-e7bead295e5b"
          },
          "type": "InitializeVariable",
          "inputs": {
            "variables": [
              {
                "name": "RetryCount",
                "type": "integer",
                "value": 0
              }
            ]
          }
        },
        "Scope:_Initialize": {
          "actions": {
            "Create_item": {
              "runAfter": {},
              "metadata": {
                "operationMetadataId": "95433499-bb9c-4258-9cdc-52d98123dca5"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "PostItem",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Memory_Log",
                  "item": {
                    "Title": "Heartbeat",
                    "EventType": { "Value": "Heartbeat" },
                    "Summary": "@{concat('Heartbeat attempt started at ', utcNow())}"
                  }
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Get_items:_Check_if_KillSwitch_or_IsRunning": {
              "runAfter": {
                "Create_item": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "d4f3c771-8c17-49a1-b9e8-0736af6fb23a"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Config",
                  "$filter": "(SettingName eq 'KillSwitch' or SettingName eq 'IsRunning') and SettingValue eq 'true'"
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Condition:_Check_if_KillSwitch_or_IsRunning": {
              "actions": {
                "Log_heartbeat_status_to_memory_log": {
                  "runAfter": {},
                  "metadata": {
                    "operationMetadataId": "60ec1190-acbf-400d-9b9f-e67621149651"
                  },
                  "type": "OpenApiConnection",
                  "inputs": {
                    "host": {
                      "connectionName": "shared_sharepointonline",
                      "operationId": "PostItem",
                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                    },
                    "parameters": {
                      "dataset": "@outputs('Compose:_Config_SiteURL')",
                      "table": "PowerClaw_Memory_Log",
                      "item": {
                        "Title": "HeartbeatSkipped",
                        "EventType": { "Value": "HeartbeatSkipped" },
                        "Summary": "\"Skipped due to active lock or kill switch\""
                      }
                    },
                    "authentication": "@parameters('$authentication')"
                  }
                },
                "Terminate": {
                  "runAfter": {
                    "Log_heartbeat_status_to_memory_log": [
                      "Succeeded"
                    ]
                  },
                  "metadata": {
                    "operationMetadataId": "32d7c0ef-e2ef-4112-b5c8-1395eba538a9"
                  },
                  "type": "Terminate",
                  "inputs": {
                    "runStatus": "Succeeded"
                  }
                }
              },
              "runAfter": {
                "Get_items:_Check_if_KillSwitch_or_IsRunning": [
                  "Succeeded"
                ]
              },
              "expression": {
                "and": [
                  {
                    "greater": [
                      "@length(outputs('Get_items:_Check_if_KillSwitch_or_IsRunning')?['body/value'])",
                      0
                    ]
                  }
                ]
              },
              "metadata": {
                "operationMetadataId": "92f5872d-8be0-4c2f-aa3e-9daa198c624c"
              },
              "type": "If"
            },
            "Get_items_-_Acquire_Lock_ID": {
              "runAfter": {
                "Condition:_Check_if_KillSwitch_or_IsRunning": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "3bffc720-395a-4c37-90cc-c3b0fba37119"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Config",
                  "$filter": "SettingName eq 'IsRunning'"
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Update_item_-_Set_Lock_": {
              "runAfter": {
                "Get_items_-_Acquire_Lock_ID": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "ce64998a-01cf-441f-991c-94c4cd09f831"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "PatchItem",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Config",
                  "id": "@{first(outputs('Get_items_-_Acquire_Lock_ID')?['body/value'])?['ID']}",
                  "item": {
                    "SettingValue": "true",
                    "Title": "IsRunning"
                  }
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Get_items_-_MaxActionsPerHour": {
              "runAfter": {
                "Update_item_-_Set_Lock_": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "d1767a46-fee3-44cd-8ef8-4d02083c1e7d"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Config",
                  "$filter": "SettingName eq 'MaxActionsPerHour'"
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Compose_Integer_-_MaxActionsPerHour": {
              "runAfter": {
                "Get_items_-_MaxActionsPerHour": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "3b4ad43b-9fd8-4f29-8cc6-526a5dda5a1a"
              },
              "type": "Compose",
              "inputs": "@int(first(outputs('Get_items_-_MaxActionsPerHour')?['body/value'])?['SettingValue'])"
            },
            "Get_items:_Rate_Limit_Query": {
              "runAfter": {
                "Compose_Integer_-_MaxActionsPerHour": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "78ebbb8b-3330-4374-a577-28fa43dcb817"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Memory_Log",
                  "$filter": "Created ge '@{addHours(utcNow(), -1)}'"
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Condition:_Rate_Limit_Condition": {
              "actions": {
                "Send_an_email_(V2)": {
                  "runAfter": {
                    "Update_item:_KillSwitch_to_True": [
                      "Succeeded"
                    ]
                  },
                  "metadata": {
                    "operationMetadataId": "31924271-bea2-4804-ad95-0da7734b1faf"
                  },
                  "type": "OpenApiConnection",
                  "inputs": {
                    "host": {
                      "connectionName": "shared_office365",
                      "operationId": "SendEmailV2",
                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_office365"
                    },
                    "parameters": {
                      "emailMessage/To": "@outputs('Compose:_Config_AdminEmail')",
                      "emailMessage/Subject": "PowerClaw Rate Limit Breach",
                      "emailMessage/Body": "<p class=\"editor-paragraph\">PowerClaw hit a rate limit 😅</p>",
                      "emailMessage/Importance": "Normal"
                    },
                    "authentication": "@parameters('$authentication')"
                  }
                },
                "Terminate_:_Due_to_rate_limit": {
                  "runAfter": {
                    "Send_an_email_(V2)": [
                      "Succeeded"
                    ]
                  },
                  "metadata": {
                    "operationMetadataId": "28d124a6-11ca-42de-9357-21636c2d9faa"
                  },
                  "type": "Terminate",
                  "inputs": {
                    "runStatus": "Failed"
                  }
                },
                "Update_item:_KillSwitch_to_True": {
                  "runAfter": {
                    "Get_items:_KillSwitch": [
                      "Succeeded"
                    ]
                  },
                  "metadata": {
                    "operationMetadataId": "d4881e2c-fd43-488b-b116-51c8ad149127"
                  },
                  "type": "OpenApiConnection",
                  "inputs": {
                    "host": {
                      "connectionName": "shared_sharepointonline",
                      "operationId": "PatchItem",
                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                    },
                    "parameters": {
                      "dataset": "@outputs('Compose:_Config_SiteURL')",
                      "table": "PowerClaw_Config",
                      "id": "@{first(outputs('Get_items:_KillSwitch')?['body/value'])?['ID']}",
                      "item": {
                        "SettingValue": "true",
                        "Title": "KillSwitch"
                      }
                    },
                    "authentication": "@parameters('$authentication')"
                  }
                },
                "Get_items:_KillSwitch": {
                  "runAfter": {},
                  "metadata": {
                    "operationMetadataId": "41173816-a52b-4b13-817e-9f7ffa9a9a92"
                  },
                  "type": "OpenApiConnection",
                  "inputs": {
                    "host": {
                      "connectionName": "shared_sharepointonline",
                      "operationId": "GetItems",
                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                    },
                    "parameters": {
                      "dataset": "@outputs('Compose:_Config_SiteURL')",
                      "table": "PowerClaw_Config",
                      "$filter": "SettingName eq 'KillSwitch'"
                    },
                    "authentication": "@parameters('$authentication')"
                  }
                }
              },
              "runAfter": {
                "Get_items:_Rate_Limit_Query": [
                  "Succeeded"
                ]
              },
              "expression": {
                "and": [
                  {
                    "greater": [
                      "@length(outputs('Get_items:_Rate_Limit_Query')?['body/value'])",
                      "@outputs('Compose_Integer_-_MaxActionsPerHour')"
                    ]
                  }
                ]
              },
              "metadata": {
                "operationMetadataId": "8d73abb1-7ef3-448c-a184-a1045474faa0"
              },
              "type": "If"
            }
          },
          "runAfter": {
            "Initialize_variable:_RetryCount": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "32ab33e1-761e-4d91-a69a-d965b071b659"
          },
          "type": "Scope"
        },
        "Scope:_Execution": {
          "actions": {
            "Get_file_content:_Soul.md": {
              "runAfter": {},
              "metadata": {
                "%252fShared%2bDocuments%252fsoul.md": "/Shared Documents/soul.md",
                "operationMetadataId": "49ca222f-d09e-4474-bbc8-6280f82b70e9"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetFileContent",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "id": "%252fShared%2bDocuments%252fsoul.md",
                  "inferContentType": true
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Get_file_content:_User.md": {
              "runAfter": {
                "Get_file_content:_Soul.md": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "%252fShared%2bDocuments%252fuser.md": "/Shared Documents/user.md",
                "operationMetadataId": "905d97b5-decf-4f38-b26b-24eeb9a6aeef"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetFileContent",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "id": "%252fShared%2bDocuments%252fuser.md",
                  "inferContentType": true
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Get_file_content:_Agents.md": {
              "runAfter": {
                "Get_file_content:_User.md": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "%252fShared%2bDocuments%252fagents.md": "/Shared Documents/agents.md",
                "operationMetadataId": "e6c69817-c9ec-4605-8f61-7bf6a085b32b"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetFileContent",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "id": "%252fShared%2bDocuments%252fagents.md",
                  "inferContentType": true
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Get_file_content:_Tools.md": {
              "runAfter": {
                "Get_file_content:_Agents.md": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "%252fShared%2bDocuments%252ftools.md": "/Shared Documents/tools.md",
                "operationMetadataId": "a2458ca6-d942-45be-9a2c-5b871a726a7c"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetFileContent",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "id": "%252fShared%2bDocuments%252ftools.md",
                  "inferContentType": true
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Compose_PromptPrefix": {
              "runAfter": {
                "Get_file_content:_Tools.md": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "e91d38a2-b5ce-47e4-afbf-578815d93766"
              },
              "type": "Compose",
              "inputs": "@{body('Get_file_content:_Soul.md')}\n@{body('Get_file_content:_User.md')}\n@{body('Get_file_content:_Agents.md')}\n@{body('Get_file_content:_Tools.md')}"
            },
            "Do_until:_Retry_Agent_Loop": {
              "actions": {
                "Increment_variable:_RetryCount": {
                  "runAfter": {},
                  "metadata": {
                    "operationMetadataId": "080f9f3b-18a4-4d2a-8258-9af3fdeaa03b"
                  },
                  "type": "IncrementVariable",
                  "inputs": {
                    "name": "RetryCount",
                    "value": 1
                  }
                },
                "Execute_Agent_and_wait": {
                  "runAfter": {
                    "Increment_variable:_RetryCount": [
                      "Succeeded"
                    ]
                  },
                  "limit": {
                    "timeout": "PT15M"
                  },
                  "metadata": {
                    "operationMetadataId": "a5724db2-5fdc-47ab-b981-2ab5f2d42d66"
                  },
                  "type": "OpenApiConnectionWebhook",
                  "inputs": {
                    "parameters": {
                      "Copilot": "auto_agent_BmTJh",
                      "body/message": "[HEARTBEAT EVENT TRIGGERED]\nTIMESTAMP: @{utcNow()}\n\nRECENT MEMORY (LAST 10 ACTIONS):\n@{body('Select:_Summary')}\n\nOPEN TASKS (from PowerClaw_Tasks list):\n@{body('Select:_Task_Summary')}\n\nLONG-TERM MEMORY (Active Semantic Facts):\n@{body('Select:_Memory_Facts')}\n\nMEMORY JOURNAL (Recent Narrative):\n@{if(greater(length(string(body('Get_file_content:_memory-journal.md'))),200000),substring(string(body('Get_file_content:_memory-journal.md')),sub(length(string(body('Get_file_content:_memory-journal.md'))),200000),200000),string(body('Get_file_content:_memory-journal.md')))}\n\nLATEST CONTEXT PAYLOAD:\n@{outputs('Compose_PromptPrefix')}"
                    },
                    "host": {
                      "connectionName": "shared_microsoftcopilotstudio",
                      "operationId": "ExecuteCopilotAsyncV2",
                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftcopilotstudio"
                    }
                  }
                },
                "Condition:_Check_Agent_Output": {
                  "actions": {
                    "Compose:_Sanitize_markdown": {
                      "runAfter": {},
                      "metadata": {
                        "operationMetadataId": "590449d8-63e9-46cd-bf28-74a85aef4959"
                      },
                      "type": "Compose",
                      "inputs": "@replace(substring(outputs('Execute_Agent_and_wait')?['body/lastResponse'], indexOf(outputs('Execute_Agent_and_wait')?['body/lastResponse'], '{'), add(sub(lastIndexOf(outputs('Execute_Agent_and_wait')?['body/lastResponse'], '}'), indexOf(outputs('Execute_Agent_and_wait')?['body/lastResponse'], '{')), 1)), decodeUriComponent('%C2%A0'), ' ')"
                    },
                    "Parse_JSON_-_Execute_Agent": {
                      "runAfter": {
                        "Compose:_Sanitize_markdown": [
                          "Succeeded"
                        ]
                      },
                      "metadata": {
                        "operationMetadataId": "08b94c22-1964-4bc6-9edd-e9961c93cb20"
                      },
                      "type": "ParseJson",
                      "inputs": {
                        "content": "@outputs('Compose:_Sanitize_markdown')",
                        "schema": {
                          "type": "object",
                          "properties": {
                            "thoughts": {
                              "type": "string",
                              "description": "The agent's reasoning during the heartbeat."
                            },
                            "mcpActionsTaken": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "List of MCP Graph queries executed (e.g., 'Checked Calendar', 'Sent Teams Message')."
                            },
                            "memoryUpdateSummary": {
                              "type": "string",
                              "description": "A concise summary to be logged in the SharePoint Memory List."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "idle",
                                "proactive_message_sent",
                                "error"
                              ]
                            },
                            "proposedMemories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "memoryType": {
                                    "type": "string"
                                  },
                                  "scopeKey": {
                                    "type": "string"
                                  },
                                  "canonicalFact": {
                                    "type": "string"
                                  },
                                  "confidence": {
                                    "type": "integer"
                                  },
                                  "importance": {
                                    "type": "string"
                                  },
                                  "expiresAt": {
                                    "type": "string"
                                  }
                                }
                              }
                            },
                            "taskActions": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "taskId": {
                                    "type": "string"
                                  },
                                  "newStatus": {
                                    "type": "string"
                                  },
                                  "notes": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          },
                          "required": [
                            "thoughts",
                            "mcpActionsTaken",
                            "memoryUpdateSummary",
                            "status"
                          ]
                        }
                      }
                    },
                    "Set_variable:_AgentSuccess_to_True": {
                      "runAfter": {
                        "Parse_JSON_-_Execute_Agent": [
                          "Succeeded"
                        ]
                      },
                      "metadata": {
                        "operationMetadataId": "e91a3974-fc21-49ec-a39e-4fbac9d77686"
                      },
                      "type": "SetVariable",
                      "inputs": {
                        "name": "AgentSuccess",
                        "value": true
                      }
                    },
                    "Create_item:_Log_Success_in_Memory": {
                      "runAfter": {
                        "Parse_JSON_-_Execute_Agent": [
                          "Succeeded"
                        ]
                      },
                      "metadata": {
                        "operationMetadataId": "34500641-c5b9-4363-acc0-806137a22e48"
                      },
                      "type": "OpenApiConnection",
                      "inputs": {
                        "host": {
                          "connectionName": "shared_sharepointonline",
                          "operationId": "PostItem",
                          "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                        },
                        "parameters": {
                          "dataset": "@outputs('Compose:_Config_SiteURL')",
                          "table": "PowerClaw_Memory_Log",
                          "item": {
                            "Title": "MemoryUpdate",
                            "EventType": { "Value": "MemoryUpdate" },
                            "Summary": "@{substring(string(body('Parse_JSON_-_Execute_Agent')['memoryUpdateSummary']), 0, min(length(string(body('Parse_JSON_-_Execute_Agent')['memoryUpdateSummary'])), 255))}",
                            "FullContextJSON": "@{outputs('Compose:_Sanitize_markdown')}"
                          }
                        },
                        "authentication": "@parameters('$authentication')"
                      }
                    },
                    "Condition:_Has_Task_Actions": {
                      "actions": {
                        "Apply_to_each:_Process_Task_Actions": {
                          "foreach": "@body('Parse_JSON_-_Execute_Agent')?['taskActions']",
                          "actions": {
                            "Update_item:_Task_Status": {
                              "runAfter": {},
                              "metadata": {
                                "operationMetadataId": "298a9adf-ffa1-48b6-b7d3-a44cd73f8d4b"
                              },
                              "type": "OpenApiConnection",
                              "inputs": {
                                "host": {
                                  "connectionName": "shared_sharepointonline",
                                  "operationId": "PatchItem",
                                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                                },
                                "parameters": {
                                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                                  "table": "PowerClaw_Tasks",
                                  "id": "@{items('Apply_to_each:_Process_Task_Actions')?['taskId']}",
                                  "item": {
                                    "TaskStatus": { "Value": "@{items('Apply_to_each:_Process_Task_Actions')?['newStatus']}" },
                                    "Notes": "@{items('Apply_to_each:_Process_Task_Actions')?['notes']}",
                                    "LastActionDate": "@{utcNow()}"
                                  }
                                },
                                "authentication": "@parameters('$authentication')"
                              }
                            }
                          },
                          "runAfter": {},
                          "metadata": {
                            "operationMetadataId": "5583ac4a-17cf-49da-a5fd-dbbfc90d6b7f"
                          },
                          "type": "Foreach"
                        }
                      },
                      "runAfter": {
                        "Create_item:_Log_Success_in_Memory": [
                          "Succeeded"
                        ]
                      },
                      "expression": {
                        "and": [
                          {
                            "greater": [
                              "@length(body('Parse_JSON_-_Execute_Agent')?['taskActions'])",
                              0
                            ]
                          }
                        ]
                      },
                      "metadata": {
                        "operationMetadataId": "35d02915-f4a3-4b49-bb91-0ab5897bbaf0"
                      },
                      "type": "If"
                    },
                    "Condition:_Has_Proposed_Memories": {
                      "actions": {
                        "Apply_to_each:_Save_Memories": {
                          "foreach": "@body('Parse_JSON_-_Execute_Agent')?['proposedMemories']",
                          "actions": {
                            "Get_items:_Existing_Memory": {
                              "runAfter": {},
                              "type": "OpenApiConnection",
                              "inputs": {
                                "host": {
                                  "connectionName": "shared_sharepointonline",
                                  "operationId": "GetItems",
                                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                                },
                                "parameters": {
                                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                                  "table": "PowerClaw_Memory",
                                  "$filter": "ScopeKey eq '@{items('Apply_to_each:_Save_Memories')?['scopeKey']}' and (Status eq 'Active' or Status eq 'Tentative')",
                                  "$orderby": "Modified desc",
                                  "$top": 5
                                },
                                "authentication": "@parameters('$authentication')"
                              },
                              "metadata": {
                                "operationMetadataId": "1b6ee0f7-196e-41b8-af67-44df3900df6b"
                              }
                            },
                            "Condition:_Memory_Exists": {
                              "runAfter": {
                                "Get_items:_Existing_Memory": [
                                  "Succeeded"
                                ]
                              },
                              "type": "If",
                              "expression": {
                                "and": [
                                  {
                                    "greater": [
                                      "@length(outputs('Get_items:_Existing_Memory')?['body/value'])",
                                      0
                                    ]
                                  }
                                ]
                              },
                              "actions": {
                                "Update_item:_Confirm_Memory": {
                                  "runAfter": {},
                                  "type": "OpenApiConnection",
                                  "inputs": {
                                    "host": {
                                      "connectionName": "shared_sharepointonline",
                                      "operationId": "PatchItem",
                                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                                    },
                                    "parameters": {
                                      "dataset": "@outputs('Compose:_Config_SiteURL')",
                                      "table": "PowerClaw_Memory",
                                      "id": "@{first(outputs('Get_items:_Existing_Memory')?['body/value'])?['Id']}",
                                      "item": {
                                        "LastConfirmedAt": "@{utcNow()}",
                                        "Confidence": "@{min(95, add(int(coalesce(first(outputs('Get_items:_Existing_Memory')?['body/value'])?['Confidence'], items('Apply_to_each:_Save_Memories')?['confidence'])), 10))}",
                                        "CanonicalFact": "@{items('Apply_to_each:_Save_Memories')?['canonicalFact']}",
                                        "Status": { "Value": "@{if(greaterOrEquals(min(95, add(int(coalesce(first(outputs('Get_items:_Existing_Memory')?['body/value'])?['Confidence'], items('Apply_to_each:_Save_Memories')?['confidence'])), 10)), 80), 'Active', 'Tentative')}" },
                                        "Title": "@{items('Apply_to_each:_Save_Memories')?['scopeKey']}"
                                      }
                                    },
                                    "authentication": "@parameters('$authentication')"
                                  },
                                  "metadata": {
                                    "operationMetadataId": "82cbf2c9-ca95-4d6a-a63d-1c4c4311adcb"
                                  }
                                }
                              },
                              "else": {
                                "actions": {
                                  "Create_item:_New_Memory": {
                                    "runAfter": {},
                                    "type": "OpenApiConnection",
                                    "inputs": {
                                      "host": {
                                        "connectionName": "shared_sharepointonline",
                                        "operationId": "PostItem",
                                        "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                                      },
                                      "parameters": {
                                        "dataset": "@outputs('Compose:_Config_SiteURL')",
                                        "table": "PowerClaw_Memory",
                                        "item": {
                                          "Title": "@{items('Apply_to_each:_Save_Memories')?['scopeKey']}",
                                          "MemoryType": { "Value": "@{items('Apply_to_each:_Save_Memories')?['memoryType']}" },
                                          "ScopeKey": "@{items('Apply_to_each:_Save_Memories')?['scopeKey']}",
                                          "CanonicalFact": "@{items('Apply_to_each:_Save_Memories')?['canonicalFact']}",
                                          "Confidence": "@{items('Apply_to_each:_Save_Memories')?['confidence']}",
                                          "Importance": { "Value": "@{items('Apply_to_each:_Save_Memories')?['importance']}" },
                                          "Status": { "Value": "Tentative" },
                                          "FirstLearnedAt": "@{utcNow()}",
                                          "LastConfirmedAt": "@{utcNow()}"
                                        }
                                      },
                                      "authentication": "@parameters('$authentication')"
                                    },
                                    "metadata": {
                                      "operationMetadataId": "f203ed5b-7225-4784-a282-07fc1fa33c9b"
                                    }
                                  }
                                }
                              },
                              "metadata": {
                                "operationMetadataId": "939e02d6-e445-49c9-ab71-67a51a3131b3"
                              }
                            }
                          },
                          "runAfter": {},
                          "metadata": {
                            "operationMetadataId": "1bc53e02-bfd2-41a2-a18f-a866b3651b6f"
                          },
                          "type": "Foreach"
                        }
                      },
                      "runAfter": {
                        "Condition:_Has_Task_Actions": [
                          "Succeeded"
                        ]
                      },
                      "expression": {
                        "and": [
                          {
                            "greater": [
                              "@length(body('Parse_JSON_-_Execute_Agent')?['proposedMemories'])",
                              0
                            ]
                          }
                        ]
                      },
                      "metadata": {
                        "operationMetadataId": "c0658e46-1c3b-404b-ae42-db3575e67ab7"
                      },
                      "type": "If"
                    },
                    "Condition:_Has_Proposed_Tasks": {
                      "actions": {
                        "Apply_to_each:_Create_Tasks": {
                          "foreach": "@body('Parse_JSON_-_Execute_Agent')?['proposedTasks']",
                          "actions": {
                            "Create_item:_New_Task": {
                              "runAfter": {},
                              "type": "OpenApiConnection",
                              "inputs": {
                                "host": {
                                  "connectionName": "shared_sharepointonline",
                                  "operationId": "PostItem",
                                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                                },
                                "parameters": {
                                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                                  "table": "PowerClaw_Tasks",
                                  "item": {
                                    "Title": "@{items('Apply_to_each:_Create_Tasks')?['title']}",
                                    "TaskDescription": "@{items('Apply_to_each:_Create_Tasks')?['description']}",
                                    "Priority": { "Value": "@{items('Apply_to_each:_Create_Tasks')?['priority']}" },
                                    "Source": { "Value": "Heartbeat" },
                                    "TaskStatus": { "Value": "To Do" }
                                  }
                                },
                                "authentication": "@parameters('$authentication')"
                              },
                              "metadata": {
                                "operationMetadataId": "40b57936-fd4f-4572-9fc6-1285057f1208"
                              }
                            }
                          },
                          "runAfter": {},
                          "type": "Foreach",
                          "metadata": {
                            "operationMetadataId": "950c9773-7b3a-496f-b77f-4fe0af20396d"
                          }
                        }
                      },
                      "runAfter": {
                        "Condition:_Has_Proposed_Memories": [
                          "Succeeded"
                        ]
                      },
                      "expression": {
                        "and": [
                          {
                            "greater": [
                              "@length(coalesce(body('Parse_JSON_-_Execute_Agent')?['proposedTasks'], json('[]')))",
                              0
                            ]
                          }
                        ]
                      },
                      "type": "If",
                      "metadata": {
                        "operationMetadataId": "0d54e17b-1f22-4a4e-ab43-a4a3bf5abd26"
                      }
                    },
                    "Condition:_Has_Journal_Entry": {
                      "actions": {
                        "Compose:_Journal_Entry": {
                          "runAfter": {},
                          "type": "Compose",
                          "inputs": "@{body('Parse_JSON_-_Execute_Agent')?['journalEntry']}",
                          "metadata": {
                            "operationMetadataId": "11b1c20b-0397-40a2-a6b2-10161badbf9e"
                          }
                        },
                        "Get_file_content:_Journal_for_Append": {
                          "runAfter": {
                            "Compose:_Journal_Entry": [
                              "Succeeded"
                            ]
                          },
                          "type": "OpenApiConnection",
                          "inputs": {
                            "host": {
                              "connectionName": "shared_sharepointonline",
                              "operationId": "GetFileContent",
                              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                            },
                            "parameters": {
                              "dataset": "@outputs('Compose:_Config_SiteURL')",
                              "id": "%252fShared%2bDocuments%252fmemory-journal.md",
                              "inferContentType": true
                            },
                            "authentication": "@parameters('$authentication')"
                          },
                          "metadata": {
                            "operationMetadataId": "ffefa284-f3ed-4922-a644-ff84dd563354"
                          }
                        },
                        "Create_file:_Append_Journal": {
                          "runAfter": {
                            "Get_file_content:_Journal_for_Append": [
                              "Succeeded"
                            ]
                          },
                          "type": "OpenApiConnection",
                          "inputs": {
                            "host": {
                              "connectionName": "shared_sharepointonline",
                              "operationId": "CreateFile",
                              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                            },
                            "parameters": {
                              "dataset": "@outputs('Compose:_Config_SiteURL')",
                              "folderPath": "/Shared Documents",
                              "name": "memory-journal.md",
                              "body": "@{if(contains(string(body('Get_file_content:_Journal_for_Append')), concat('## ', formatDateTime(utcNow(), 'yyyy-MM-dd'))), replace(string(body('Get_file_content:_Journal_for_Append')), concat('## ', formatDateTime(utcNow(), 'yyyy-MM-dd')), concat('## ', formatDateTime(utcNow(), 'yyyy-MM-dd'), '\n', outputs('Compose:_Journal_Entry'))), replace(string(body('Get_file_content:_Journal_for_Append')), '# PowerClaw Memory Journal', concat('# PowerClaw Memory Journal\n\n## ', formatDateTime(utcNow(), 'yyyy-MM-dd'), '\n', outputs('Compose:_Journal_Entry'))))}"
                            },
                            "authentication": "@parameters('$authentication')"
                          },
                          "metadata": {
                            "operationMetadataId": "5685e791-6bd8-46a4-9e63-67505f3252f7"
                          }
                        }
                      },
                      "runAfter": {
                        "Condition:_Has_Proposed_Tasks": [
                          "Succeeded"
                        ]
                      },
                      "expression": {
                        "and": [
                          {
                            "not": {
                              "equals": [
                                "@coalesce(body('Parse_JSON_-_Execute_Agent')?['journalEntry'], '')",
                                ""
                              ]
                            }
                          }
                        ]
                      },
                      "type": "If",
                      "metadata": {
                        "operationMetadataId": "43759a36-6325-4687-81ca-3c3d577fc7c4"
                      }
                    }
                  },
                  "runAfter": {
                    "Execute_Agent_and_wait": [
                      "Succeeded",
                      "Failed",
                      "TimedOut",
                      "Skipped"
                    ]
                  },
                  "else": {
                    "actions": {
                      "Create_item_-_Log_Fail": {
                        "runAfter": {},
                        "metadata": {
                          "operationMetadataId": "f08053fb-d63c-4f7b-8a4b-f4a4204de936"
                        },
                        "type": "OpenApiConnection",
                        "inputs": {
                          "host": {
                            "connectionName": "shared_sharepointonline",
                            "operationId": "PostItem",
                            "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                          },
                          "parameters": {
                            "dataset": "@outputs('Compose:_Config_SiteURL')",
                            "table": "PowerClaw_Memory_Log",
                            "item": {
                              "Title": "Error",
                              "EventType": { "Value": "Error" },
                              "Summary": "Agent call failed or returned output that could not be parsed as JSON. See FullContextJSON for raw output.",
                              "FullContextJSON": "@{coalesce(outputs('Execute_Agent_and_wait')?['body/lastResponse'], '(empty response)')}"
                            }
                          },
                          "authentication": "@parameters('$authentication')"
                        }
                      }
                    }
                  },
                  "expression": "@and(equals(empty(outputs('Execute_Agent_and_wait')?['body/lastResponse']), false), contains(coalesce(outputs('Execute_Agent_and_wait')?['body/lastResponse'], ''), '{'), contains(coalesce(outputs('Execute_Agent_and_wait')?['body/lastResponse'], ''), '}'))",
                  "metadata": {
                    "operationMetadataId": "3d04deae-6cb0-4165-8b07-48a9f9225eed"
                  },
                  "type": "If"
                }
              },
              "runAfter": {
                "Select:_Summary": [
                  "Succeeded"
                ],
                "Select:_Memory_Facts": [
                  "Succeeded"
                ],
                "Get_file_content:_memory-journal.md": [
                  "Succeeded"
                ],
                "Select:_Task_Summary": [
                  "Succeeded"
                ]
              },
              "expression": "@or(equals(variables('AgentSuccess'),true),greaterOrEquals(variables('RetryCount'),3))",
              "limit": {
                "count": 3,
                "timeout": "PT30M"
              },
              "metadata": {
                "operationMetadataId": "162bcd6c-2932-4501-b7cc-49a57b9d4b3f"
              },
              "type": "Until"
            },
            "Get_items:_Check_memory_log": {
              "runAfter": {
                "Compose_PromptPrefix": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "146a94e6-125e-4b71-97be-30037fa51979"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Memory_Log",
                  "$orderby": "Created desc",
                  "$top": 25
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Select:_Summary": {
              "runAfter": {
                "Get_items:_Check_memory_log": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "581d3036-e3a4-4ae3-a3e1-791216e4d94a"
              },
              "type": "Select",
              "inputs": {
                "from": "@outputs('Get_items:_Check_memory_log')?['body/value']",
                "select": "@item()?['Summary']"
              }
            },
            "Get_items:_PowerClaw_Memory": {
              "runAfter": {
                "Compose_PromptPrefix": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "c9181628-6afa-4c8a-b974-f9cfd195b443"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Memory",
                  "$filter": "Status ne 'Expired' and Status ne 'Superseded'",
                  "$orderby": "Importance desc, LastConfirmedAt desc",
                  "$top": 15
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Get_file_content:_memory-journal.md": {
              "runAfter": {
                "Compose_PromptPrefix": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "%252fShared%2bDocuments%252fmemory-journal.md": "/Shared Documents/memory-journal.md",
                "operationMetadataId": "71a6ce6c-8ea3-4a5e-9c61-41470f44af54"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetFileContent",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "id": "%252fShared%2bDocuments%252fmemory-journal.md",
                  "inferContentType": true
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Select:_Memory_Facts": {
              "runAfter": {
                "Get_items:_PowerClaw_Memory": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "f452a114-e7ba-4698-8d00-17fda5d36cce"
              },
              "type": "Select",
              "inputs": {
                "from": "@outputs('Get_items:_PowerClaw_Memory')?['body/value']",
                "select": {
                  "fact": "[\"@{item()?['MemoryType']}\"] @{item()?['ScopeKey']}: @{item()?['CanonicalFact']}",
                  "confidence": "@{item()?['Confidence']}",
                  "importance": "@{item()?['Importance']}"
                }
              }
            },
            "Get_items:_PowerClaw_Tasks": {
              "runAfter": {
                "Compose_PromptPrefix": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "175dcecb-bc19-4ffc-a76e-f7303c24640a"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Tasks",
                  "$filter": "TaskStatus ne 'Done'",
                  "$orderby": "Priority asc, Created asc",
                  "$top": 10
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Select:_Task_Summary": {
              "runAfter": {
                "Get_items:_PowerClaw_Tasks": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "e0c20069-09f0-465f-b3af-be482314ad9d"
              },
              "type": "Select",
              "inputs": {
                "from": "@outputs('Get_items:_PowerClaw_Tasks')?['body/value']",
                "select": {
                  "id": "@{item()?['ID']}",
                  "summary": "Task #@{item()?['ID']}: @{item()?['Title']} | Status: @{item()?['TaskStatus/Value']} | Priority: @{item()?['Priority/Value']}",
                  "due": "@{item()?['DueDate']}",
                  "description": "@{item()?['TaskDescription']}"
                }
              }
            }
          },
          "runAfter": {
            "Scope:_Initialize": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "31079098-c192-4b60-a610-6f5d6d213809"
          },
          "type": "Scope"
        },
        "Scope:_Cleanup": {
          "actions": {
            "Get_items_-_Release_Lock": {
              "runAfter": {},
              "metadata": {
                "operationMetadataId": "59ba22ce-fe51-4fa3-887a-b463175a9bd3"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "GetItems",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Config",
                  "$filter": "SettingName eq 'IsRunning'"
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Update_item": {
              "runAfter": {
                "Get_items_-_Release_Lock": [
                  "Succeeded"
                ]
              },
              "metadata": {
                "operationMetadataId": "914d4244-1ceb-40ce-8cfc-cee98090639f"
              },
              "type": "OpenApiConnection",
              "inputs": {
                "host": {
                  "connectionName": "shared_sharepointonline",
                  "operationId": "PatchItem",
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                },
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Config",
                  "id": "@{first(outputs('Get_items_-_Release_Lock')?['body/value'])?['ID']}",
                  "item": {
                    "SettingValue": "false",
                    "Title": "IsRunning"
                  }
                },
                "authentication": "@parameters('$authentication')"
              }
            },
            "Condition_-_Error_Logging": {
              "actions": {
                "Create_item:_Log_Error": {
                  "runAfter": {},
                  "metadata": {
                    "operationMetadataId": "b95d5f70-9659-411f-9022-1bc503ae7633"
                  },
                  "type": "OpenApiConnection",
                  "inputs": {
                    "host": {
                      "connectionName": "shared_sharepointonline",
                      "operationId": "PostItem",
                      "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
                    },
                    "parameters": {
                      "dataset": "@outputs('Compose:_Config_SiteURL')",
                      "table": "PowerClaw_Memory_Log",
                      "item": {
                        "Title": "Error",
                        "EventType": { "Value": "Error" },
                        "Summary": "\"Heartbeat execution failed or timed out.\"",
                        "FullContextJSON": "@{string(result('Scope:_Execution'))}"
                      }
                    },
                    "authentication": "@parameters('$authentication')"
                  }
                }
              },
              "runAfter": {
                "Update_item": [
                  "Succeeded"
                ]
              },
              "expression": {
                "and": [
                  {
                    "not": {
                      "equals": [
                        "@actions('Scope:_Execution')?['status']",
                        "Succeeded"
                      ]
                    }
                  }
                ]
              },
              "metadata": {
                "operationMetadataId": "09a21836-4d65-492c-bedf-c8d82e6c2482"
              },
              "type": "If"
            }
          },
          "runAfter": {
            "Scope:_Execution": [
              "Succeeded",
              "Failed",
              "TimedOut",
              "Skipped"
            ]
          },
          "metadata": {
            "operationMetadataId": "8b274577-745f-4e1f-935b-30a6c4f23f3c"
          },
          "type": "Scope"
        },
        "Sends_a_prompt_to_the_specified_copilot_for_processing": {
          "runAfter": {
            "Scope:_Cleanup": [
              "Succeeded"
            ]
          },
          "metadata": {
            "operationMetadataId": "367c7f45-be4f-4858-a717-34e5219706c4"
          },
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "Copilot": "auto_agent_BmTJh",
              "body/message": "Use content from @{triggerBody()}"
            },
            "host": {
              "connectionName": "shared_microsoftcopilotstudio",
              "operationId": "ExecuteCopilot",
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_microsoftcopilotstudio"
            }
          }
        }
      }
    },
    "templateName": ""
  },
  "schemaVersion": "1.0.0.0"
}


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/Housekeeping-fca80a5d-72c0-fb6b-dbc9-eb8b74fdba44/metadata.yml
================================================
name: Housekeeping
stateCode: 0
statusCode: 1


================================================
FILE: copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/Housekeeping-fca80a5d-72c0-fb6b-dbc9-eb8b74fdba44/workflow.json
================================================
{
  "properties": {
    "connectionReferences": {
      "shared_sharepointonline": {
        "api": {
          "name": "shared_sharepointonline"
        },
        "connection": {
          "connectionReferenceLogicalName": "new_sharedsharepointonline_77d8f"
        },
        "runtimeSource": "embedded"
      }
    },
    "definition": {
      "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
      "contentVersion": "undefined",
      "triggers": {
        "Recurrence": {
          "type": "Recurrence",
          "recurrence": {
            "frequency": "Day",
            "interval": "1",
            "startTime": "2026-03-20T04:00:00Z"
          }
        }
      },
      "parameters": {
        "$authentication": {
          "defaultValue": {},
          "type": "SecureObject"
        },
        "$connections": {
          "defaultValue": {},
          "type": "Object"
        }
      },
      "actions": {
        "Compose:_Config_SiteURL": {
          "type": "Compose",
          "inputs": "https://contoso.sharepoint.com/sites/PowerClaw-Workspace",
          "runAfter": {}
        },
        "Get_items:_Old_Memory_Log": {
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "dataset": "@outputs('Compose:_Config_SiteURL')",
              "table": "PowerClaw_Memory_Log",
              "$filter": "Created lt '@{addDays(utcNow(), -30)}'",
              "$top": 100
            },
            "host": {
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
              "operationId": "GetItems",
              "connectionName": "shared_sharepointonline"
            }
          },
          "runAfter": {
            "Compose:_Config_SiteURL": [
              "Succeeded"
            ]
          }
        },
        "Apply_to_each:_Delete_Old_Logs": {
          "type": "Foreach",
          "foreach": "@outputs('Get_items:_Old_Memory_Log')?['body/value']",
          "actions": {
            "Delete_item:_Old_Log": {
              "type": "OpenApiConnection",
              "inputs": {
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "table": "PowerClaw_Memory_Log",
                  "id": "@items('Apply_to_each:_Delete_Old_Logs')?['ID']"
                },
                "host": {
                  "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
                  "operationId": "DeleteItem",
                  "connectionName": "shared_sharepointonline"
                }
              }
            }
          },
          "runAfter": {
            "Get_items:_Old_Memory_Log": [
              "Succeeded"
            ]
          }
        },
        "Get_items:_Done_Tasks": {
          "type": "OpenApiConnection",
          "inputs": {
            "parameters": {
              "dataset": "@outputs('Compose:_Config_SiteURL')",
              "table": "PowerClaw_Tasks",
              "$filter": "TaskStatus eq 'Done'",
              "$top": 100
            },
            "host": {
              "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
              "operationId": "GetItems",
              "connectionName": "shared_sharepointonline"
            }
          },
          "runAfter": {
            "Compose:_Config_SiteURL": [
              "Succeeded"
            ]
          }
        },
        "Apply_to_each:_Delete_Done_Tasks": {
          "type": "Foreach",
          "foreach": "@outputs('Get_items:_Done_Tasks')?['body/value']",
          "actions": {
            "Delete_item:_Done_Task": {
              "type": "OpenApiConnection",
              "inputs": {
                "parameters": {
                  "dataset": "@outputs('Compose:_Config_SiteURL')",
                  "ta
Download .txt
gitextract_rnp3453x/

├── .github/
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── plugin/
│   │   └── marketplace.json
│   └── workflows/
│       ├── traffic-stats.yml
│       └── update-message-center.yml
├── .gitignore
├── .vscode/
│   └── settings.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE-CODE
├── README.md
├── SECURITY.MD
├── TEMPLATE-README.md
├── copilot-agent-samples/
│   ├── README.md
│   ├── _SAMPLE_Templates/
│   │   ├── ca-NameOfAgent/
│   │   │   └── ca-NameOfAgent.md
│   │   └── da-NameOfAgent/
│   │       └── da-NameOfAgent.md
│   ├── agent-builder-agents/
│   │   ├── README.md
│   │   ├── archive/
│   │   │   ├── README.md
│   │   │   ├── da-CompareDocs/
│   │   │   │   └── README.md
│   │   │   ├── da-DeepResearch/
│   │   │   │   └── README.md
│   │   │   ├── da-ManagerSimulator/
│   │   │   │   └── README.md
│   │   │   ├── da-OmniAgent/
│   │   │   │   └── README.md
│   │   │   └── da-ReasoningAgent/
│   │   │       └── README.md
│   │   ├── da-CompareDocs/
│   │   │   └── README.md
│   │   ├── da-DeepResearch/
│   │   │   └── README.md
│   │   ├── da-ManagerSimulator/
│   │   │   └── README.md
│   │   ├── da-OmniAgent/
│   │   │   └── README.md
│   │   ├── da-ReasoningAgent/
│   │   │   └── README.md
│   │   └── da-VibeWritingAgent/
│   │       └── README.md
│   ├── copilot-studio-agents/
│   │   ├── README.md
│   │   ├── ca-AutoReplyAgent/
│   │   │   └── README.md
│   │   ├── ca-PowerClawAgent/
│   │   │   ├── .gitignore
│   │   │   ├── PowerClaw/
│   │   │   │   ├── actions/
│   │   │   │   │   ├── MicrosoftTeams-Postmessageinachatorchannel.mcs.yml
│   │   │   │   │   ├── Office365Outlook-SendanemailV2.mcs.yml
│   │   │   │   │   ├── WorkIQCalendarMCP-WorkIQCalendarPreview.mcs.yml
│   │   │   │   │   ├── WorkIQCopilotMCP-WorkIQCopilotPreview.mcs.yml
│   │   │   │   │   ├── WorkIQMailMCP-WorkIQMailPreview.mcs.yml
│   │   │   │   │   ├── WorkIQSharePointMCP-WorkIQSharePointPreview.mcs.yml
│   │   │   │   │   ├── WorkIQTeamsMCP-WorkIQTeamsPreview.mcs.yml
│   │   │   │   │   ├── WorkIQUserMCP-WorkIQUserPreview.mcs.yml
│   │   │   │   │   └── WorkIQWordMCP-WorkIQWordPreview.mcs.yml
│   │   │   │   ├── agent.mcs.yml
│   │   │   │   ├── connectionreferences.mcs.yml
│   │   │   │   ├── settings.mcs.yml
│   │   │   │   ├── topics/
│   │   │   │   │   ├── ConversationInit.mcs.yml
│   │   │   │   │   ├── ConversationStart.mcs.yml
│   │   │   │   │   ├── DailyDigest.mcs.yml
│   │   │   │   │   ├── EndofConversation.mcs.yml
│   │   │   │   │   ├── Escalate.mcs.yml
│   │   │   │   │   ├── Fallback.mcs.yml
│   │   │   │   │   ├── Goodbye.mcs.yml
│   │   │   │   │   ├── MultipleTopicsMatched.mcs.yml
│   │   │   │   │   ├── OnError.mcs.yml
│   │   │   │   │   ├── ResetConversation.mcs.yml
│   │   │   │   │   ├── Search.mcs.yml
│   │   │   │   │   ├── Signin.mcs.yml
│   │   │   │   │   ├── StartOver.mcs.yml
│   │   │   │   │   └── ThankYou.mcs.yml
│   │   │   │   ├── trigger/
│   │   │   │   │   └── RecurringCopilotTrigge.29c73850-0823-4027-a0b8-254d6dc2d00.mcs.yml
│   │   │   │   ├── variables/
│   │   │   │   │   ├── AgentsText.mcs.yml
│   │   │   │   │   ├── SoulText.mcs.yml
│   │   │   │   │   ├── ToolsText.mcs.yml
│   │   │   │   │   └── UserText.mcs.yml
│   │   │   │   └── workflows/
│   │   │   │       ├── GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/
│   │   │   │       │   ├── metadata.yml
│   │   │   │       │   └── workflow.json
│   │   │   │       ├── HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/
│   │   │   │       │   ├── metadata.yml
│   │   │   │       │   └── workflow.json
│   │   │   │       └── Housekeeping-fca80a5d-72c0-fb6b-dbc9-eb8b74fdba44/
│   │   │   │           ├── metadata.yml
│   │   │   │           └── workflow.json
│   │   │   ├── PowerClaw-Overview.pptx
│   │   │   ├── README.md
│   │   │   ├── SETUP.md
│   │   │   ├── docs/
│   │   │   │   └── MANUAL-SETUP.md
│   │   │   ├── scripts/
│   │   │   │   └── Setup-PowerClaw.ps1
│   │   │   └── skills/
│   │   │       ├── README.md
│   │   │       ├── _skill-template.md
│   │   │       ├── agent-fleet-governor.md
│   │   │       ├── commitment-tracker.md
│   │   │       ├── decision-memo-builder.md
│   │   │       ├── executive-radar.md
│   │   │       ├── meeting-copilot-loop.md
│   │   │       ├── stakeholder-brief.md
│   │   │       ├── weekly-status-report.md
│   │   │       └── workplace-intelligence-monitor.md
│   │   └── ca-ProductQuoteAgent/
│   │       └── README.md
│   ├── github-copilot-agents/
│   │   └── Council/
│   │       ├── README.md
│   │       ├── agents/
│   │       │   └── council.agent.md
│   │       └── plugin.json
│   └── github-copilot-skills/
│       └── copilot-studio-workflow/
│           ├── CHANGELOG.md
│           ├── README.md
│           ├── SKILL.md
│           ├── docs/
│           │   └── showcase.html
│           ├── plugin.json
│           ├── reference/
│           │   ├── gotchas.md
│           │   └── workflow-guide.md
│           └── scripts/
│               ├── cps-add-component.ps1
│               ├── cps-preflight.ps1
│               ├── cps-revert.ps1
│               └── cps-status.ps1
├── copilot-agent-strategy/
│   ├── README.md
│   ├── copilot-agent-brainstorm/
│   │   ├── Copilot Agent Brainstorming.pptx
│   │   └── README.md
│   ├── copilot-agents-cost-tool/
│   │   ├── GUIDE.md
│   │   ├── README.md
│   │   └── index.html
│   └── copilot-agents-guide/
│       ├── README.md
│       └── index.html
├── copilot-analytics-samples/
│   ├── Copilot_Audit_PBI/
│   │   ├── AlternateMethod/
│   │   │   └── Copilot_Audit_PBI.pbix
│   │   ├── Copilot_Audit_PBI.pbix
│   │   ├── Export-M365CopilotReports.ps1
│   │   └── README.md
│   ├── README.md
│   ├── VivaInsights-Copilot-Dashboard-Sample/
│   │   ├── Analyze Column Headers.xlsx
│   │   ├── BYO-CopilotDashboard - Dynamic Personas.pbix
│   │   ├── BYO-CopilotDashboard.pbix
│   │   ├── Build your Own Copilot Dashboard Sample.docx
│   │   ├── README.md
│   │   └── Sample-VivaInsights-PersonQuery-Export.Csv
│   ├── _SAMPLE_Templates/
│   │   └── README.md
│   └── copilot-usage-users-and-apps/
│       ├── Copilot Usage - Users and Apps.pbix
│       └── README.md
├── copilot-prompt-samples/
│   ├── README.md
│   └── Researcher-OrganizationInsights.md
├── index.html
├── samples/
│   ├── Viva-Engage-Community-Creation-App/
│   │   ├── AppImportInstructions.docx
│   │   └── README.md
│   ├── teams-audioconferencing-snippets/
│   │   └── README.md
│   ├── teams-phonesystem-snippets/
│   │   └── README.md
│   ├── teams-rooms-snippets/
│   │   ├── README.md
│   │   └── resource-accounts.csv
│   └── teams-upgrade-snippets/
│       └── README.md
├── scripts/
│   ├── Add-YammerGroupAdmins/
│   │   ├── Add-YammerGroupAdmins.ps1
│   │   └── README.md
│   ├── AddRemove-OneDriveSecondaryAdmin/
│   │   ├── AddRemove-OneDriveSecondaryAdmin.ps1
│   │   └── README.md
│   ├── Analyze-SharePointRisk/
│   │   ├── Analyze-SharePointRisk.ps1
│   │   ├── Permissioned_Users_Count_SharePoint_report_2025-09-29_scrubbed.csv
│   │   └── README.md
│   ├── Create-EngageCommunities/
│   │   ├── Create-EngageCommunities.ps1
│   │   ├── README.md
│   │   └── communities.json
│   ├── Delete-AllCommunityPosts/
│   │   ├── Delete-AllCommunityPosts.ps1
│   │   └── README.md
│   ├── Delete-YammerGroups/
│   │   ├── Delete-YammerGroups.ps1
│   │   └── README.md
│   ├── Delete-YammerUsers/
│   │   ├── Delete-YammerUsers.ps1
│   │   └── README.md
│   ├── Disable-InsightsHeadSpace/
│   │   ├── Disable-InsightsHeadSpace.ps1
│   │   └── README.md
│   ├── Disable-TeamifyPrompt/
│   │   ├── Disable-TeamifyPrompt.ps1
│   │   └── README.md
│   ├── Disable-TeamsAudioVideo/
│   │   ├── Disable-TeamsAudioVideo.ps1
│   │   └── README.md
│   ├── Export-M365CopilotReports/
│   │   ├── Export-M365CopilotReports.ps1
│   │   └── README.md
│   ├── Export-SimplePlacesVIsual/
│   │   ├── Export-SimplePlacesVisual.ps1
│   │   └── README.md
│   ├── Export-YammerFiles/
│   │   ├── Export-YammerFiles.ps1
│   │   └── README.md
│   ├── Export-YammerNetworkData/
│   │   ├── Export-YammerNetworkData.ps1
│   │   └── README.md
│   ├── Find-MailboxDelegates/
│   │   ├── Find-MailboxDelegates-GUIDE.docx
│   │   ├── Find-MailboxDelegates.ps1
│   │   └── README.md
│   ├── Find-MailboxDelegates batch analysis/
│   │   ├── BatchAnalysis-generic.xlsm
│   │   └── README.md
│   ├── Get-AADAdminRoleMembers/
│   │   ├── Get-AADAdminRoleMembers.ps1
│   │   └── README.md
│   ├── Get-AgentCQFinder/
│   │   ├── Get-AgentCQFinder.ps1
│   │   └── readme.md
│   ├── Get-AllInsightsLicensedUsers/
│   │   ├── Get-AllInsightsLicensedUsers.ps1
│   │   └── README.md
│   ├── Get-AuditGuestTeams/
│   │   ├── Get-AuditGuestTeams.ps1
│   │   └── readme.md
│   ├── Get-DocLibInventory/
│   │   ├── Get-DocLibInventory.ps1
│   │   ├── Lib/
│   │   │   └── Lib.psm1
│   │   └── README.md
│   ├── Get-FullOwnerReport/
│   │   ├── Get-FullOwnerReport.ps1
│   │   └── README.md
│   ├── Get-FullTeamsReport/
│   │   ├── Get-FullTeamsReport.ps1
│   │   └── README.md
│   ├── Get-GroupsMembersManagers/
│   │   ├── Get-GroupsMembersManagers.ps1
│   │   └── README.md
│   ├── Get-GroupsTeamsSites/
│   │   ├── Get-GroupsTeamsSites.ps1
│   │   └── README.md
│   ├── Get-LicenseUsage/
│   │   ├── Get-LicenseUsage.ps1
│   │   └── README.md
│   ├── Get-LicensingInfo/
│   │   ├── Get-LicensingInfo.ps1
│   │   └── README.md
│   ├── Get-ListUsage/
│   │   ├── Get-ListUsage.ps1
│   │   └── README.md
│   ├── Get-M365CopilotReadiness/
│   │   ├── Get-M365CopilotReadiness.ps1
│   │   ├── README.md
│   │   ├── copilot-readiness.html
│   │   └── copilot-readiness.json
│   ├── Get-MgUserVoicemailReport/
│   │   ├── Get-MgUserVoicemailReport.ps1
│   │   └── README.md
│   ├── Get-MigrationToTeamsDNSCheck/
│   │   ├── MigrationToTeamsDNSCheck V1.7.ps1
│   │   └── README.md
│   ├── Get-OD4BExternalUsers/
│   │   ├── Get-OD4BExternalUsers.ps1
│   │   └── README.md
│   ├── Get-ODBUsage/
│   │   ├── Get-ODBUsage.ps1
│   │   └── README.md
│   ├── Get-RecurringTeamsMeetings/
│   │   ├── Get-RecurringTeamsMeetings.ps1
│   │   ├── README.md
│   │   └── sample-csv-file.csv
│   ├── Get-SharedChannelsUserIsPartOf/
│   │   ├── Get-SharedChannelsUserIsPartOf.ps1
│   │   └── README.md
│   ├── Get-TeamVisibilityAndOwnerReport/
│   │   ├── Get-TeamVisibilityAndOwnerReport.ps1
│   │   └── README.md
│   ├── Get-TeamsChannelUsersReport/
│   │   ├── Get-TeamsChannelUsersReport.ps1
│   │   └── README.md
│   ├── Get-TeamsUserActivityReport/
│   │   ├── Get-TeamsUserActivityReport.ps1
│   │   ├── README.md
│   │   └── sample-csv-file.csv
│   ├── Get-YammerGroupInfo/
│   │   ├── Get-YammerGroupInfo.ps1
│   │   └── README.MD
│   ├── Get-YammerPrivateContentModeAdmins/
│   │   ├── Get-YammerPrivateContentModeAdmins.ps1
│   │   └── README.md
│   ├── Get-YammerSiteSize/
│   │   ├── Get-YammerSiteSize.ps1
│   │   └── README.md
│   ├── Merge-SPMTResults/
│   │   ├── Merge-SPMTResults.ps1
│   │   └── README.md
│   ├── Preflight-OneDrive/
│   │   ├── Preflight-OneDrive.ps1
│   │   └── README.md
│   ├── Set-ForwardingSMTPAddress/
│   │   ├── README.md
│   │   ├── Set-ForwardingSMTPAddress.ps1
│   │   └── users.csv
│   ├── Teams Phone User Migration/
│   │   ├── Contoso_List_Users_TeamsVoicePoliciesAndNumbers.csv
│   │   ├── Phone Number and EV - user assignment - Phase 2 - Cutover.ps1
│   │   ├── README.md
│   │   └── Voice related policies - user assignment - Phase 1.ps1
│   ├── Update-BookingsAdminPermissions/
│   │   ├── README.md
│   │   └── Update-BookingsAdminPermissions.ps1
│   ├── Update-TeamsLicense/
│   │   ├── README.md
│   │   └── Update-TeamsLicense.ps1
│   ├── Update-VivaEngageLicensingToggle/
│   │   ├── BlockUsersWithoutLicense.ps1
│   │   └── README.md
│   ├── get-siteinventory/
│   │   ├── .gitignore
│   │   ├── Get-Inventory.ps1
│   │   ├── Get-WebInventory.ps1
│   │   ├── Lib/
│   │   │   └── Lib.psm1
│   │   └── README.md
│   ├── get-teamsusage/
│   │   ├── Get-TeamsUsage.ps1
│   │   └── README.md
│   ├── move-team/
│   │   ├── Move-Team.ps1
│   │   ├── README.md
│   │   └── TODO.md
│   ├── split-spmtlogerrors/
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   └── Split-SPMTLogErrors.ps1
│   └── update-message-center.js
├── tools/
│   └── SimpleGraph/
│       ├── README.md
│       └── SimpleGraph.psm1
└── traffic-data/
    ├── 2026-04-07.json
    ├── 2026-04-08.json
    ├── 2026-04-09.json
    ├── 2026-04-10.json
    ├── 2026-04-11.json
    ├── 2026-04-12.json
    ├── 2026-04-13.json
    ├── 2026-04-14.json
    ├── 2026-04-15.json
    ├── 2026-04-20.json
    ├── 2026-04-22.json
    ├── 2026-04-27.json
    ├── 2026-04-28.json
    ├── 2026-04-30.json
    ├── 2026-05-01.json
    ├── 2026-05-04.json
    ├── 2026-05-05.json
    ├── 2026-05-07.json
    ├── 2026-05-08.json
    ├── 2026-05-09.json
    ├── 2026-05-13.json
    ├── 2026-05-14.json
    ├── 2026-05-15.json
    ├── 2026-05-16.json
    ├── 2026-05-17.json
    ├── 2026-05-18.json
    ├── 2026-05-19.json
    └── README.md
Download .txt
SYMBOL INDEX (10 symbols across 1 files)

FILE: scripts/update-message-center.js
  constant INDEX_PATH (line 22) | const INDEX_PATH = path.resolve(
  constant MC_DATA_URL (line 29) | const MC_DATA_URL =
  function iso (line 34) | function iso(d) {
  function addDays (line 38) | function addDays(d, n) {
  function fetchJson (line 44) | function fetchJson(url) {
  function inferAgentAudience (line 91) | function inferAgentAudience(post) {
  function transformPost (line 266) | function transformPost(raw) {
  function isCopilotAgentRelevant (line 323) | function isCopilotAgentRelevant(raw) {
  function serialisePost (line 426) | function serialisePost(p) {
  function main (line 448) | async function main() {
Condensed preview — 283 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,496K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 1691,
    "preview": "Thank you for reporting an issue, making a suggestion, or asking a question. We appreciate your feedback - to help the t"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 616,
    "preview": "# Category\n- [ ] Bug fix\n- [ ] New script\n- [ ] New sample\n\n# Instructions\n_You can delete this section after reading._\n"
  },
  {
    "path": ".github/plugin/marketplace.json",
    "chars": 641,
    "preview": "{\n  \"name\": \"fasttrack-copilot-plugins\",\n  \"owner\": {\n    \"name\": \"Microsoft FastTrack\",\n    \"email\": \"ftgithub@microsof"
  },
  {
    "path": ".github/workflows/traffic-stats.yml",
    "chars": 7947,
    "preview": "name: Collect Traffic Data\n\non:\n  schedule:\n    # Runs daily at 06:00 UTC to capture traffic before the 14-day window ex"
  },
  {
    "path": ".github/workflows/update-message-center.yml",
    "chars": 2351,
    "preview": "name: Update Message Center Posts\n\non:\n  schedule:\n    # Runs every Monday at 7:00 AM UTC\n    - cron: '0 7 * * 1'\n  work"
  },
  {
    "path": ".gitignore",
    "chars": 20,
    "preview": ".vscode/launch.json\n"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 141,
    "preview": "{\r\n    \"githubPullRequests.ignoredPullRequestBranches\": [\r\n        \"master\"\r\n    ],\r\n    \"sarif-viewer.connectToGithubCo"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 229,
    "preview": "# Change Log\n\nUpdated when changes are made within this repo to provide a record.\n\n## April 20, 2018\n\n### New Samples\n\n*"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2182,
    "preview": "# Contribute to Microsoft FastTrack\n\nThank you for your interest in contributing to Microsoft FastTrack's open source pr"
  },
  {
    "path": "LICENSE",
    "chars": 1162,
    "preview": "    MIT License\n\n    Copyright (c) Microsoft Corporation. All rights reserved.\n\n    Permission is hereby granted, free o"
  },
  {
    "path": "LICENSE-CODE",
    "chars": 1090,
    "preview": "The MIT License (MIT)\nCopyright (c) Microsoft Corporation\n\nPermission is hereby granted, free of charge, to any person o"
  },
  {
    "path": "README.md",
    "chars": 4590,
    "preview": "# Microsoft FastTrack Open Source\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://opensource.o"
  },
  {
    "path": "SECURITY.MD",
    "chars": 2383,
    "preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.1 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
  },
  {
    "path": "TEMPLATE-README.md",
    "chars": 3000,
    "preview": "_PLEASE COMPLETE THIS README TEMPLATE FOR YOUR CONTRIBUTION. IT SHOULD BE PLACED IN THE ROOT OF YOUR FOLDER AND BE RENAM"
  },
  {
    "path": "copilot-agent-samples/README.md",
    "chars": 2554,
    "preview": "# 🚀 FastTrack for Copilot Agents\r\n\r\nWelcome to the official FastTrack repository for agent samples, skills, and template"
  },
  {
    "path": "copilot-agent-samples/_SAMPLE_Templates/ca-NameOfAgent/ca-NameOfAgent.md",
    "chars": 3983,
    "preview": "# [Agent Name]\n\n## 📌 Overview\n[Brief description of what this autonomous agent does, its primary function, and the probl"
  },
  {
    "path": "copilot-agent-samples/_SAMPLE_Templates/da-NameOfAgent/da-NameOfAgent.md",
    "chars": 840,
    "preview": "# Copilot Extensibility Agent Samples\n\n## Summary\n\nThis directory has sample M365 Copilot Agents. Prefix of \"da\" means i"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/README.md",
    "chars": 2374,
    "preview": "# 🤖 Agent Builder Agent Samples\n\nWelcome to our collection of sample declarative agents and custom agents! This reposito"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/archive/README.md",
    "chars": 501,
    "preview": "# Archived Agent Builder Agents\n\nThese samples are preserved for reference only and are no longer actively promoted or r"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/archive/da-CompareDocs/README.md",
    "chars": 5128,
    "preview": "# Compare Documents Agent\n\n## Overview\nA specialized agent that provides comprehensive document comparison capabilities "
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/archive/da-DeepResearch/README.md",
    "chars": 4749,
    "preview": "# Deep Research Agent\n\n## Overview\nThis is a deep research agent that reasons through asks, does research, and provides "
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/archive/da-ManagerSimulator/README.md",
    "chars": 7350,
    "preview": "# Multi-Agent Manager Simulator\n\n## Overview\nThe multi-agent manager simulator is meant to help aspiring and experienced"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/archive/da-OmniAgent/README.md",
    "chars": 5316,
    "preview": "# Omni Agent\n\n## Overview\nA dynamic declarative agent that adapts by assuming specialized personas to solve diverse prob"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/archive/da-ReasoningAgent/README.md",
    "chars": 4267,
    "preview": "# Reasoning Agent\n\n## Overview\nEnhanced Reasoning Agent to serve as a sounding board, offering insightful feedback and a"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/da-CompareDocs/README.md",
    "chars": 198,
    "preview": "# CompareDocs Agent\n\nThis sample has been archived and is no longer actively promoted for new deployments.\n\nThe preserve"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/da-DeepResearch/README.md",
    "chars": 202,
    "preview": "# Deep Research Agent\n\nThis sample has been archived and is no longer actively promoted for new deployments.\n\nThe preser"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/da-ManagerSimulator/README.md",
    "chars": 208,
    "preview": "# Manager Simulator\n\nThis sample has been archived and is no longer actively promoted for new deployments.\n\nThe preserve"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/da-OmniAgent/README.md",
    "chars": 187,
    "preview": "# Omni Agent\n\nThis sample has been archived and is no longer actively promoted for new deployments.\n\nThe preserved sampl"
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/da-ReasoningAgent/README.md",
    "chars": 202,
    "preview": "# Reasoning Agent\n\nThis sample has been archived and is no longer actively promoted for new deployments.\n\nThe preserved "
  },
  {
    "path": "copilot-agent-samples/agent-builder-agents/da-VibeWritingAgent/README.md",
    "chars": 4298,
    "preview": "# Vibe Writing Agent\n\n## Overview\nTransforms stream-of-consciousness writing into polished text while preserving your un"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/README.md",
    "chars": 1998,
    "preview": "# 🤖 Copilot Studio Agent Samples\n\nWelcome to the Copilot Studio Agents directory! This section contains a collection of "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-AutoReplyAgent/README.md",
    "chars": 4416,
    "preview": "# AutoReply Agent\n\n## 📌 Overview\nThis Autonomous Agent helps with incoming emails to my inbox (can also be pointed at a "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/.gitignore",
    "chars": 493,
    "preview": "# Python\n__pycache__/\n*.py[cod]\n*.pyc\n\n# PowerShell\n*.ps1xml\n\n# OS\nThumbs.db\n.DS_Store\nDesktop.ini\n\n# IDE\n.vscode/\n.idea"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/MicrosoftTeams-Postmessageinachatorchannel.mcs.yml",
    "chars": 533,
    "preview": "mcs.metadata:\n  componentName: Microsoft Teams - Post message in a chat or channel\nkind: TaskDialog\nmodelDisplayName: Po"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/Office365Outlook-SendanemailV2.mcs.yml",
    "chars": 458,
    "preview": "mcs.metadata:\n  componentName: Office 365 Outlook - Send an email (V2)\nkind: TaskDialog\nmodelDisplayName: Send an email "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQCalendarMCP-WorkIQCalendarPreview.mcs.yml",
    "chars": 722,
    "preview": "mcs.metadata:\n  componentName: Work IQ Calendar MCP - Work IQ Calendar (Preview)\nkind: TaskDialog\nmodelDisplayName: Work"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQCopilotMCP-WorkIQCopilotPreview.mcs.yml",
    "chars": 711,
    "preview": "mcs.metadata:\n  componentName: Work IQ Copilot MCP - Work IQ Copilot (Preview)\nkind: TaskDialog\nmodelDisplayName: Work I"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQMailMCP-WorkIQMailPreview.mcs.yml",
    "chars": 698,
    "preview": "mcs.metadata:\n  componentName: Work IQ Mail MCP - Work IQ Mail (Preview)\nkind: TaskDialog\nmodelDisplayName: Work IQ Mail"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQSharePointMCP-WorkIQSharePointPreview.mcs.yml",
    "chars": 725,
    "preview": "mcs.metadata:\n  componentName: Work IQ SharePoint MCP - Work IQ SharePoint (Preview)\nkind: TaskDialog\nmodelDisplayName: "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQTeamsMCP-WorkIQTeamsPreview.mcs.yml",
    "chars": 690,
    "preview": "mcs.metadata:\n  componentName: Work IQ Teams MCP - Work IQ Teams (Preview)\nkind: TaskDialog\nmodelDisplayName: Work IQ Te"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQUserMCP-WorkIQUserPreview.mcs.yml",
    "chars": 684,
    "preview": "mcs.metadata:\n  componentName: Work IQ User MCP - Work IQ User (Preview)\nkind: TaskDialog\nmodelDisplayName: Work IQ User"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/actions/WorkIQWordMCP-WorkIQWordPreview.mcs.yml",
    "chars": 684,
    "preview": "mcs.metadata:\n  componentName: Work IQ Word MCP - Work IQ Word (Preview)\nkind: TaskDialog\nmodelDisplayName: Work IQ Word"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/agent.mcs.yml",
    "chars": 6866,
    "preview": "mcs.metadata:\n  componentName: PowerClaw\n  description: \"A 24/7 autonomous AI agent that runs on a scheduled heartbeat, "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/connectionreferences.mcs.yml",
    "chars": 2117,
    "preview": "connectionReferences:\n  - connectionReferenceLogicalName: auto_agent_BmTJh.shared_a365copilotchatmcp.da070d1a1d8d4fd999"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/settings.mcs.yml",
    "chars": 760,
    "preview": "displayName: PowerClaw\nschemaName: auto_agent_BmTJh\naccessControlPolicy: Any\nauthenticationMode: Integrated\nauthenticat"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ConversationInit.mcs.yml",
    "chars": 744,
    "preview": "mcs.metadata:\n  componentName: Conversation Init\n  description: JIT provisioning of agent context globals on every incom"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ConversationStart.mcs.yml",
    "chars": 548,
    "preview": "mcs.metadata:\n  componentName: Conversation Start\n  description: This system topic triggers when the agent receives an A"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/DailyDigest.mcs.yml",
    "chars": 1558,
    "preview": "mcs.metadata:\n  componentName: Daily Digest\n  description: Provides an on-demand daily briefing of calendar, tasks, and "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/EndofConversation.mcs.yml",
    "chars": 2456,
    "preview": "mcs.metadata:\n  componentName: End of Conversation\n  description: |-\n    This system topic is only triggered by a redire"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Escalate.mcs.yml",
    "chars": 2336,
    "preview": "mcs.metadata:\n  componentName: Escalate\n  description: |-\n    This system topic is triggered when the user indicates the"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Fallback.mcs.yml",
    "chars": 685,
    "preview": "mcs.metadata:\n  componentName: Fallback\n  description: This system topic triggers when the user's utterance does not mat"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Goodbye.mcs.yml",
    "chars": 1361,
    "preview": "mcs.metadata:\n  componentName: Goodbye\n  description: This topic triggers when the user says goodbye. By default, it doe"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/MultipleTopicsMatched.mcs.yml",
    "chars": 1456,
    "preview": "mcs.metadata:\n  componentName: Multiple Topics Matched\n  description: This system topic triggers when the agent matches "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/OnError.mcs.yml",
    "chars": 1630,
    "preview": "mcs.metadata:\n  componentName: On Error\n  description: This system topic triggers when the agent encounters an error. Wh"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ResetConversation.mcs.yml",
    "chars": 462,
    "preview": "mcs.metadata:\n  componentName: Reset Conversation\nkind: AdaptiveDialog\nstartBehavior: UseLatestPublishedContentAndCancel"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Search.mcs.yml",
    "chars": 606,
    "preview": "mcs.metadata:\n  componentName: Conversational boosting\n  description: Create generative answers from knowledge sources.\n"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/Signin.mcs.yml",
    "chars": 680,
    "preview": "mcs.metadata:\n  componentName: \"Sign in \"\n  description: This system topic triggers when the agent needs to sign in the "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/StartOver.mcs.yml",
    "chars": 925,
    "preview": "mcs.metadata:\n  componentName: Start Over\nkind: AdaptiveDialog\nbeginDialog:\n  kind: OnRecognizedIntent\n  id: main\n  inte"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/topics/ThankYou.mcs.yml",
    "chars": 434,
    "preview": "mcs.metadata:\n  componentName: Thank you\n  description: This topic triggers when the user says thank you.\nkind: Adaptive"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/trigger/RecurringCopilotTrigge.29c73850-0823-4027-a0b8-254d6dc2d00.mcs.yml",
    "chars": 509,
    "preview": "mcs.metadata:\n  componentName: Recurring Copilot Trigger\n  description: Create a trigger to automatically call your copi"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/AgentsText.mcs.yml",
    "chars": 337,
    "preview": "mcs.metadata:\n  componentName: AgentsText\nkind: GlobalVariableComponent\nschemaName: auto_agent_BmTJh.GlobalVariableCompo"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/SoulText.mcs.yml",
    "chars": 319,
    "preview": "mcs.metadata:\n  componentName: SoulText\nkind: GlobalVariableComponent\nschemaName: auto_agent_BmTJh.GlobalVariableCompone"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/ToolsText.mcs.yml",
    "chars": 327,
    "preview": "mcs.metadata:\n  componentName: ToolsText\nkind: GlobalVariableComponent\nschemaName: auto_agent_BmTJh.GlobalVariableCompon"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/variables/UserText.mcs.yml",
    "chars": 313,
    "preview": "mcs.metadata:\n  componentName: UserText\nkind: GlobalVariableComponent\nschemaName: auto_agent_BmTJh.GlobalVariableCompone"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/metadata.yml",
    "chars": 714,
    "preview": "jsonFileName: workflows/GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/workflow.json\nworkflowId: ff84c862-c7f6-819b-5e"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/GetContext-ff84c862-c7f6-819b-5ec6-7201f9389c85/workflow.json",
    "chars": 6465,
    "preview": "{\n  \"properties\": {\n    \"connectionReferences\": {\n      \"shared_sharepointonline\": {\n        \"runtimeSource\": \"invoker\","
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/metadata.yml",
    "chars": 786,
    "preview": "jsonFileName: workflows/HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/workflow.json\nworkflowId: 04cf2235-af1c-f111"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/HeartbeatFlow-04cf2235-af1c-f111-88b1-6045bd0079f1/workflow.json",
    "chars": 64229,
    "preview": "{\n  \"properties\": {\n    \"connectionReferences\": {\n      \"shared_sharepointonline\": {\n        \"runtimeSource\": \"embedded"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/Housekeeping-fca80a5d-72c0-fb6b-dbc9-eb8b74fdba44/metadata.yml",
    "chars": 46,
    "preview": "name: Housekeeping\nstateCode: 0\nstatusCode: 1\n"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/PowerClaw/workflows/Housekeeping-fca80a5d-72c0-fb6b-dbc9-eb8b74fdba44/workflow.json",
    "chars": 7395,
    "preview": "{\n  \"properties\": {\n    \"connectionReferences\": {\n      \"shared_sharepointonline\": {\n        \"api\": {\n          \"name\": "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/README.md",
    "chars": 19000,
    "preview": "<p align=\"center\">\n  <img src=\"./Images/powerclaw-rounded.png\" width=\"120\" />\n</p>\n<h1 align=\"center\">PowerClaw Agent</h"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/SETUP.md",
    "chars": 20415,
    "preview": "# 🦀 PowerClaw Setup Guide\n\n<p align=\"center\">\n  <img src=\"./Images/powerclaw-rounded.png\" alt=\"PowerClaw\" width=\"120\" />"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/docs/MANUAL-SETUP.md",
    "chars": 15776,
    "preview": "# PowerClaw Manual Setup Guide\n\n> Use this guide if you cannot use the Bootstrap flow or the PowerShell script.\n> This "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/scripts/Setup-PowerClaw.ps1",
    "chars": 25092,
    "preview": "<#\n.SYNOPSIS\n    Provisions the PowerClaw-Workspace SharePoint site with required lists and constitution files using Pn"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/README.md",
    "chars": 6358,
    "preview": "<p align=\"center\">\n  <img src=\"../Images/powerclaw-rounded.png\" alt=\"PowerClaw\" width=\"120\" />\n</p>\n\n# PowerClaw Skills "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/_skill-template.md",
    "chars": 2814,
    "preview": "# [Skill Name]\n\n> One-line summary of the outcome this skill creates.\n\n<!-- Replace all bracketed placeholders with real"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/agent-fleet-governor.md",
    "chars": 23365,
    "preview": "# 🏛️ Agent Fleet Governor\n\n> Monitor, audit, govern, and rationalize your organization's AI agent fleet — powered by the"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/commitment-tracker.md",
    "chars": 16540,
    "preview": "# 🎯 Commitment Tracker\n\n> Extract commitments from your meetings and emails — PowerClaw tracks them and chases follow-th"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/decision-memo-builder.md",
    "chars": 10515,
    "preview": "# 🧭 Decision Memo Builder\n\n> Turn rough notes, competing options, and scattered evidence into an executive-ready decisio"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/executive-radar.md",
    "chars": 11925,
    "preview": "# 🔍 Executive Radar\n\n> \"What needs my attention?\" — a prioritized triage across your email, calendar, tasks, and commitm"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/meeting-copilot-loop.md",
    "chars": 14572,
    "preview": "# 🔄 Meeting Copilot Loop\n\n> Prep before, recap after, track commitments between — a complete meeting lifecycle powered b"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/stakeholder-brief.md",
    "chars": 11604,
    "preview": "# 👤 Stakeholder Brief\n\n> Get a living dossier on any person, account, or project — built from memory, email, calendar, a"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/weekly-status-report.md",
    "chars": 9739,
    "preview": "# 📈 Weekly Status Report\n\n> Turn a week of meetings, email, tasks, and commitments into a clean status update for chat, "
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-PowerClawAgent/skills/workplace-intelligence-monitor.md",
    "chars": 16398,
    "preview": "# 📊 Workplace Intelligence Monitor\n\n> Monitor workforce health, collaboration patterns, and Viva Advanced Insights trend"
  },
  {
    "path": "copilot-agent-samples/copilot-studio-agents/ca-ProductQuoteAgent/README.md",
    "chars": 5262,
    "preview": "# 🧾 Product Quote Agent \n\nThis autonomous agent helps with generating quotes by using Excel as a knowledgebase for produ"
  },
  {
    "path": "copilot-agent-samples/github-copilot-agents/Council/README.md",
    "chars": 16013,
    "preview": "# 🏛️ The AI Council\n\n**A multi-model deliberation agent for GitHub Copilot CLI.**\n\nGet Claude, GPT, and Gemini to debate"
  },
  {
    "path": "copilot-agent-samples/github-copilot-agents/Council/agents/council.agent.md",
    "chars": 11778,
    "preview": "---\nname: \"🏛️ AI Council\"\ndescription: \"Multi-model deliberation — Claude, GPT & Gemini debate any question. Generates d"
  },
  {
    "path": "copilot-agent-samples/github-copilot-agents/Council/plugin.json",
    "chars": 706,
    "preview": "{\n  \"name\": \"council\",\n  \"description\": \"Multi-model deliberation — Claude, GPT & Gemini debate any question. Generates "
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/CHANGELOG.md",
    "chars": 1237,
    "preview": "# Changelog\n\nAll notable changes to the copilot-studio-workflow skill are documented here.\n\nThe format follows [Keep a C"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/README.md",
    "chars": 7906,
    "preview": "# copilot-studio-workflow\n**Build Copilot Studio agents like software: local YAML, source control, repeatable packaging,"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/SKILL.md",
    "chars": 10641,
    "preview": "---\nname: copilot-studio-workflow\ndescription: >\n  Development workflow for building, syncing, packaging, and shipping C"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/docs/showcase.html",
    "chars": 44404,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\" class=\"scroll-smooth\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/plugin.json",
    "chars": 882,
    "preview": "{\n  \"name\": \"copilot-studio-workflow\",\n  \"description\": \"Development workflow skill for building, syncing, packaging, an"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/reference/gotchas.md",
    "chars": 5897,
    "preview": "# Copilot Studio Platform Gotchas\n\nThis reference captures recurring issues that show up when teams build Copilot Studio"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/reference/workflow-guide.md",
    "chars": 5010,
    "preview": "# Copilot Studio Workflow Guide\n\n## Why this workflow exists\nCopilot Studio agent projects sit in an awkward but workabl"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/scripts/cps-add-component.ps1",
    "chars": 3166,
    "preview": "[CmdletBinding()]\nparam(\n    [Parameter(Mandatory = $true)]\n    [string]$SolutionName,\n\n    [Parameter(Mandatory = $true"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/scripts/cps-preflight.ps1",
    "chars": 4612,
    "preview": "[CmdletBinding()]\nparam(\n    [string]$Path = (Get-Location).Path\n)\n\nSet-StrictMode -Version Latest\n$ErrorActionPreferenc"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/scripts/cps-revert.ps1",
    "chars": 1878,
    "preview": "[CmdletBinding()]\nparam(\n    [string]$Path = (Get-Location).Path,\n    [switch]$DryRun\n)\n\nSet-StrictMode -Version Latest\n"
  },
  {
    "path": "copilot-agent-samples/github-copilot-skills/copilot-studio-workflow/scripts/cps-status.ps1",
    "chars": 6404,
    "preview": "[CmdletBinding()]\nparam(\n    [string]$Path = (Get-Location).Path\n)\n\nSet-StrictMode -Version Latest\n$ErrorActionPreferenc"
  },
  {
    "path": "copilot-agent-strategy/README.md",
    "chars": 4734,
    "preview": "# Copilot Agent Strategy Resources\n\nA curated collection of strategic tools, templates, and guides to help you plan, des"
  },
  {
    "path": "copilot-agent-strategy/copilot-agent-brainstorm/README.md",
    "chars": 2569,
    "preview": "# Copilot Agent Brainstorming\n\nA simple visual template to help you map out your Copilot agent specifications before bui"
  },
  {
    "path": "copilot-agent-strategy/copilot-agents-cost-tool/GUIDE.md",
    "chars": 19313,
    "preview": "# M365 Copilot Agents Cost Calculator — Walk-Through Guide\n\n> Open `AgentCosTest.html` in any modern browser (Edge, Chro"
  },
  {
    "path": "copilot-agent-strategy/copilot-agents-cost-tool/README.md",
    "chars": 15910,
    "preview": "# M365 Copilot Agents Cost Calculator\n\nA self-contained, browser-based cost estimator for Microsoft 365 Copilot agents.\n"
  },
  {
    "path": "copilot-agent-strategy/copilot-agents-cost-tool/index.html",
    "chars": 140954,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initia"
  },
  {
    "path": "copilot-agent-strategy/copilot-agents-guide/README.md",
    "chars": 8871,
    "preview": "# Microsoft Copilot Agents Guide\n\nAn interactive decision-making dashboard to help you choose the right Microsoft Copilo"
  },
  {
    "path": "copilot-agent-strategy/copilot-agents-guide/index.html",
    "chars": 206167,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width"
  },
  {
    "path": "copilot-analytics-samples/Copilot_Audit_PBI/Export-M365CopilotReports.ps1",
    "chars": 57737,
    "preview": "# Enhanced Export logs for Copilot Analytics Reporting, including Entra Users, Purview Audit Logs, etc. \n# This script c"
  },
  {
    "path": "copilot-analytics-samples/Copilot_Audit_PBI/README.md",
    "chars": 7240,
    "preview": "# 🔍 Copilot Audit Dashboard\n\n> [!IMPORTANT]\n> **New version (April 21, 2026).** More accurate app & agent classification"
  },
  {
    "path": "copilot-analytics-samples/README.md",
    "chars": 5346,
    "preview": "# Copilot Analytics Samples 📊\r\n\r\n## Overview\r\n\r\nThis directory contains distinct sample solutions to help organizations "
  },
  {
    "path": "copilot-analytics-samples/VivaInsights-Copilot-Dashboard-Sample/README.md",
    "chars": 1501,
    "preview": "# Build your Own Copilot Dashboard - Sample\n\n## Summary\n\nThis is a PowerBI file (.pbix) showing a sample of how the Viva"
  },
  {
    "path": "copilot-analytics-samples/VivaInsights-Copilot-Dashboard-Sample/Sample-VivaInsights-PersonQuery-Export.Csv",
    "chars": 185177,
    "preview": "PersonId,MetricDate,Meeting hours,Meetings,Summarize chat actions taken using Copilot in Teams,Total chat conversations "
  },
  {
    "path": "copilot-analytics-samples/_SAMPLE_Templates/README.md",
    "chars": 65,
    "preview": "## Upload guidance and the .PBIX or .PBIT of your sample template"
  },
  {
    "path": "copilot-analytics-samples/copilot-usage-users-and-apps/README.md",
    "chars": 3613,
    "preview": "# Copilot Usage Dashboard - Users and Apps\r\n\r\n![Dashboard Sample](./images/dashboard.png)\r\n\r\n## Summary\r\n\r\nThis is a Pow"
  },
  {
    "path": "copilot-prompt-samples/README.md",
    "chars": 2710,
    "preview": "# 📚 Prompt Engineering Samples\n\n## 🔍 Overview\nThis directory contains a collection of prompt samples designed for Micros"
  },
  {
    "path": "copilot-prompt-samples/Researcher-OrganizationInsights.md",
    "chars": 5272,
    "preview": "# Researcher-AutomationOpportunities\n\n## 🎯 Use Case\nThis prompt enables the Researcher agent to analyze organizational d"
  },
  {
    "path": "index.html",
    "chars": 69560,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\" class=\"scroll-smooth\">\n<head>\n  <meta charset=\"UTF-8\" />\n  <meta name=\"viewport\" content"
  },
  {
    "path": "samples/Viva-Engage-Community-Creation-App/README.md",
    "chars": 1167,
    "preview": "# Viva Engage Community Creation Power App - Sample\n\n## Summary\n\nThis Power App import package is intended to be used as"
  },
  {
    "path": "samples/teams-audioconferencing-snippets/README.md",
    "chars": 7952,
    "preview": "# Microsoft FastTrack Open Source - Teams Audio Conferencing Snippets\n\nHere are a few common Teams Audio Conferencing co"
  },
  {
    "path": "samples/teams-phonesystem-snippets/README.md",
    "chars": 5868,
    "preview": "# Microsoft FastTrack Open Source - Teams Phone System Snippets\n\nHere are a few common Teams Phone System configuration "
  },
  {
    "path": "samples/teams-rooms-snippets/README.md",
    "chars": 6419,
    "preview": "# Microsoft FastTrack Open Source - Teams Rooms Snippets\n\nMicrosoft Teams Rooms configuration snippets for single room c"
  },
  {
    "path": "samples/teams-rooms-snippets/resource-accounts.csv",
    "chars": 542,
    "preview": "UPN,Alias,Password,License,UsageLocation,DisplayName,AutomateProcessing,AddOrganizerToSubject,DeleteComments,RemovePriv"
  },
  {
    "path": "samples/teams-upgrade-snippets/README.md",
    "chars": 6473,
    "preview": "# Microsoft FastTrack Open Source - Teams Upgrade Snippets\n\nHere are a few common Teams Upgrade PowerShell snippets that"
  },
  {
    "path": "scripts/Add-YammerGroupAdmins/Add-YammerGroupAdmins.ps1",
    "chars": 6436,
    "preview": "<#\r\n.DESCRIPTION\r\n    The sample scripts are not supported under any Microsoft standard support \r\n    program or service"
  },
  {
    "path": "scripts/Add-YammerGroupAdmins/README.md",
    "chars": 5033,
    "preview": "# Microsoft FastTrack Open Source - Add-YammerGroupAdmins\n\nThis sample script will allow a Yammer admin to bulk-add grou"
  },
  {
    "path": "scripts/AddRemove-OneDriveSecondaryAdmin/AddRemove-OneDriveSecondaryAdmin.ps1",
    "chars": 8442,
    "preview": "<#       \n    .DESCRIPTION\n        Script to add/remove secondary admins (user or group) to ODB sites. \n\n        The sam"
  },
  {
    "path": "scripts/AddRemove-OneDriveSecondaryAdmin/README.md",
    "chars": 3621,
    "preview": "# Microsoft FastTrack Open Source - Manage-Teams\n\nScript to add/remove secondary admins (user or group) to OneDrive for "
  },
  {
    "path": "scripts/Analyze-SharePointRisk/Analyze-SharePointRisk.ps1",
    "chars": 65332,
    "preview": "<#\n.SYNOPSIS\n    SharePoint Permissions Risk Analysis Tool\n    \n.DESCRIPTION\n    Analyzes SharePoint permissions data fr"
  },
  {
    "path": "scripts/Analyze-SharePointRisk/Permissioned_Users_Count_SharePoint_report_2025-09-29_scrubbed.csv",
    "chars": 1196271,
    "preview": "\"Tenant ID\",\"Site ID\",\"Site name\",\"Site URL\",\"Site template\",\"Primary admin\",\"Primary admin email\",\"External sharing\",\"S"
  },
  {
    "path": "scripts/Analyze-SharePointRisk/README.md",
    "chars": 21528,
    "preview": "# 🔐 SharePoint Permissions Risk Analysis Tool\n\n<div align=\"center\">\n\n![PowerShell](https://img.shields.io/badge/PowerShe"
  },
  {
    "path": "scripts/Create-EngageCommunities/Create-EngageCommunities.ps1",
    "chars": 10528,
    "preview": "\r\n<#\r\n.SYNOPSIS\r\nCreates multiple communities in Viva Engage using the Microsoft Graph API.\r\nTHIS IS INTENDED FOR NON-PR"
  },
  {
    "path": "scripts/Create-EngageCommunities/README.md",
    "chars": 4888,
    "preview": "# Microsoft FastTrack Open Source - Create-EngageCommunities\n\nThis sample script will demonstrate how to use PowerShell "
  },
  {
    "path": "scripts/Create-EngageCommunities/communities.json",
    "chars": 5639,
    "preview": "{\r\n  \"communities\": [\r\n    {\"name\": \"Innovation Network\", \"description\": \"Fostering discussions around breakthrough inno"
  },
  {
    "path": "scripts/Delete-AllCommunityPosts/Delete-AllCommunityPosts.ps1",
    "chars": 10098,
    "preview": "<#\r\n.SYNOPSIS\r\nDeletes all messages in a single Viva Engage community.\r\nTHIS IS INTENDED FOR NON-PRODUCTION ENVIRONMENTS"
  },
  {
    "path": "scripts/Delete-AllCommunityPosts/README.md",
    "chars": 5046,
    "preview": "# Microsoft FastTrack Open Source - Delete-AllCommunityPosts\n\nThis sample script will allow a Viva Engage admin to delet"
  },
  {
    "path": "scripts/Delete-YammerGroups/Delete-YammerGroups.ps1",
    "chars": 5547,
    "preview": "<#\r\n.DESCRIPTION\r\n    The sample scripts are not supported under any Microsoft standard support \r\n    program or service"
  },
  {
    "path": "scripts/Delete-YammerGroups/README.md",
    "chars": 5163,
    "preview": "# Microsoft FastTrack Open Source - Delete-YammerGroups\n\nThis sample script will allow a Yammer admin to bulk-delete gro"
  },
  {
    "path": "scripts/Delete-YammerUsers/Delete-YammerUsers.ps1",
    "chars": 5435,
    "preview": "<#\r\n.DESCRIPTION\r\n    The sample scripts are not supported under any Microsoft standard support \r\n    program or service"
  },
  {
    "path": "scripts/Delete-YammerUsers/README.md",
    "chars": 4922,
    "preview": "# Microsoft FastTrack Open Source - Delete-YammerUsers\n\nThis sample script will allow a Yammer admin to bulk-delete Yamm"
  },
  {
    "path": "scripts/Disable-InsightsHeadSpace/Disable-InsightsHeadSpace.ps1",
    "chars": 3082,
    "preview": "<#\r\n.DESCRIPTION\r\n    The sample scripts are not supported under any Microsoft standard support \r\n    program or service"
  },
  {
    "path": "scripts/Disable-InsightsHeadSpace/README.md",
    "chars": 2554,
    "preview": "# Microsoft FastTrack Open Source - Disable-InsightsHeadSpace\n\nThis sample script disables HeadSpace in Viva Insights fo"
  },
  {
    "path": "scripts/Disable-TeamifyPrompt/Disable-TeamifyPrompt.ps1",
    "chars": 5703,
    "preview": "<#       \n    .DESCRIPTION\n        Disable the teamify prompt that comes up in modern, group-connected SPO sites. \n     "
  },
  {
    "path": "scripts/Disable-TeamifyPrompt/README.md",
    "chars": 3412,
    "preview": "# Microsoft FastTrack Open Source - Disable-TeamifyPrompt\n\nScript to disable the Teamify Prompt in modern, group-connect"
  },
  {
    "path": "scripts/Disable-TeamsAudioVideo/README.md",
    "chars": 3098,
    "preview": "# Microsoft FastTrack Open Source - Disable-TeamsAudioVideo\n\nScript to disable Audio and Video for Teams users\n\n## Usage"
  },
  {
    "path": "scripts/Export-M365CopilotReports/Export-M365CopilotReports.ps1",
    "chars": 34019,
    "preview": "# Enhanced Export logs that can be used for Copilot Analytics Reporting, including Entra Users, Purview Audit Logs, etc."
  },
  {
    "path": "scripts/Export-M365CopilotReports/README.md",
    "chars": 2957,
    "preview": "# Microsoft FastTrack Open Source - Export-M365CopilotReports\n\nEnhanced Export logs that can be used for Copilot Analyti"
  },
  {
    "path": "scripts/Export-SimplePlacesVIsual/Export-SimplePlacesVisual.ps1",
    "chars": 12426,
    "preview": "<#\n.SYNOPSIS\nExports a simple visual representation of the Places directory structure\n\n.DESCRIPTION\nExports a simple vis"
  },
  {
    "path": "scripts/Export-SimplePlacesVIsual/README.md",
    "chars": 4628,
    "preview": "# Microsoft FastTrack Open Source - Export-SimplePlacesVisual\n\nExports a simple visual representation of the Places dire"
  },
  {
    "path": "scripts/Export-YammerFiles/Export-YammerFiles.ps1",
    "chars": 11406,
    "preview": "<#\r\n.DESCRIPTION\r\n    The sample scripts are not supported under any Microsoft standard support \r\n    program or service"
  },
  {
    "path": "scripts/Export-YammerFiles/README.md",
    "chars": 5799,
    "preview": "# Microsoft FastTrack Open Source - Export-YammerFiles\n\nThis sample script calls the Yammer Files Export API to export f"
  },
  {
    "path": "scripts/Export-YammerNetworkData/Export-YammerNetworkData.ps1",
    "chars": 8767,
    "preview": "<#\r\n.DESCRIPTION\r\n    The sample scripts are not supported under any Microsoft standard support \r\n    program or service"
  },
  {
    "path": "scripts/Export-YammerNetworkData/README.md",
    "chars": 7396,
    "preview": "# Microsoft FastTrack Open Source - Export-YammerNetworkData\n\nThis sample script calls the Yammer Network Data Export AP"
  },
  {
    "path": "scripts/Find-MailboxDelegates/Find-MailboxDelegates.ps1",
    "chars": 63331,
    "preview": "<#\n.DESCRIPTION\n\n###############Disclaimer#####################################################\nThe sample scripts are "
  },
  {
    "path": "scripts/Find-MailboxDelegates/README.md",
    "chars": 8640,
    "preview": "# Microsoft FastTrack Open Source - Find-MailboxDelegates\n\nMigrating to Exchange Online (EXO) using Exchange Hybrid? Mak"
  },
  {
    "path": "scripts/Find-MailboxDelegates batch analysis/README.md",
    "chars": 2662,
    "preview": "# Microsoft FastTrack Open Source - Find-MailboxDelegates batch analysis\n\nThe BatchAnalysis-generic.xlsm spreadsheet is "
  },
  {
    "path": "scripts/Get-AADAdminRoleMembers/Get-AADAdminRoleMembers.ps1",
    "chars": 7697,
    "preview": "<#\n    .DESCRIPTION\n        This script is designed to display all of the members of the Azure AD Administrator Roles. Y"
  },
  {
    "path": "scripts/Get-AADAdminRoleMembers/README.md",
    "chars": 3416,
    "preview": "# Microsoft FastTrack Open Source - AAD PowerShell - Get a list of admin roles and their members\n\n## Dependencies\n- Azur"
  },
  {
    "path": "scripts/Get-AgentCQFinder/Get-AgentCQFinder.ps1",
    "chars": 3406,
    "preview": "<#\n.Description\nThis Script function will help IT PROs find the Call Queues to which an specific Agent belongs.\nThe only"
  },
  {
    "path": "scripts/Get-AgentCQFinder/readme.md",
    "chars": 4129,
    "preview": "# Microsoft FastTrack Open Source - Get-AgentCQFinder\n\nYou might find hard sometimes to diagnose and troubleshoot some s"
  },
  {
    "path": "scripts/Get-AllInsightsLicensedUsers/Get-AllInsightsLicensedUsers.ps1",
    "chars": 4417,
    "preview": "<#\n.DESCRIPTION\n###############Disclaimer#####################################################\nThe sample scripts are no"
  },
  {
    "path": "scripts/Get-AllInsightsLicensedUsers/README.md",
    "chars": 3350,
    "preview": "# Microsoft FastTrack Open Source - Get-AllInsightsLicensedUSers.ps1\n\nThis sample script pulls users specifically assign"
  },
  {
    "path": "scripts/Get-AuditGuestTeams/Get-AuditGuestTeams.ps1",
    "chars": 12931,
    "preview": "<#\r\n.Description\r\nThis Script function will create a report that will help IT PROs to Monitor and Audit Guest users. Th"
  },
  {
    "path": "scripts/Get-AuditGuestTeams/readme.md",
    "chars": 4159,
    "preview": "# Microsoft FastTrack Open Source - Get-AuditGuestTeams\n\nThis Script function will create a report that will help IT PRO"
  },
  {
    "path": "scripts/Get-DocLibInventory/Get-DocLibInventory.ps1",
    "chars": 1131,
    "preview": "[CmdletBinding()]\nparam (\n    [Parameter(Mandatory = $true)]\n    [String]$Url,\n\n    [Parameter(Mandatory = $true)]\n    ["
  },
  {
    "path": "scripts/Get-DocLibInventory/Lib/Lib.psm1",
    "chars": 446,
    "preview": "function Import-ModuleWithInstall {\n\n    param (\n        [Parameter(Mandatory = $true)]\n        $Name\n    )\n\n    process"
  },
  {
    "path": "scripts/Get-DocLibInventory/README.md",
    "chars": 4141,
    "preview": "# Microsoft FastTrack Open Source - Get-DocLibInventory\n\nThe purpose of this script is to gather a simple inventory for "
  },
  {
    "path": "scripts/Get-FullOwnerReport/Get-FullOwnerReport.ps1",
    "chars": 2986,
    "preview": "<#\n\n.SYNOPSIS\n  Name: Get-FullOwnerReport.ps1\n  This script looks for and reports all users and groups that have full c"
  },
  {
    "path": "scripts/Get-FullOwnerReport/README.md",
    "chars": 3292,
    "preview": "# Microsoft FastTrack Open Source - Get-FullOwnerReport\n\n## Usage\n\nThis script looks for and reports all users and group"
  },
  {
    "path": "scripts/Get-FullTeamsReport/Get-FullTeamsReport.ps1",
    "chars": 3801,
    "preview": "<#\n\n.SYNOPSIS\n  Name: Get-FullTeamsReport.ps1\n  The purpose of this script is to report all teams, channels, and users "
  },
  {
    "path": "scripts/Get-FullTeamsReport/README.md",
    "chars": 3131,
    "preview": "# Microsoft FastTrack Open Source - Get-FullTeamsReport\n\n## Usage\n\nThe purpose of this script is to report all teams, ch"
  },
  {
    "path": "scripts/Get-GroupsMembersManagers/Get-GroupsMembersManagers.ps1",
    "chars": 12080,
    "preview": "<#\n.SYNOPSIS\n    Generates a report of Microsoft Entra group members and their managers.\n\n.DESCRIPTION\n    #############"
  },
  {
    "path": "scripts/Get-GroupsMembersManagers/README.md",
    "chars": 3941,
    "preview": "# Microsoft FastTrack Open Source - Get-GroupsMembersManagers.ps1\n\nThis sample script generates a report of Microsoft En"
  },
  {
    "path": "scripts/Get-GroupsTeamsSites/Get-GroupsTeamsSites.ps1",
    "chars": 47915,
    "preview": "<#\n.DESCRIPTION\n###############Disclaimer#####################################################\nThe sample scripts are no"
  },
  {
    "path": "scripts/Get-GroupsTeamsSites/README.md",
    "chars": 11912,
    "preview": "# Microsoft FastTrack Open Source - Get-GroupsTeamsSites.ps1\n\nThe purpose of this script is to generate a report(s) that"
  },
  {
    "path": "scripts/Get-LicenseUsage/Get-LicenseUsage.ps1",
    "chars": 7355,
    "preview": "<#\n    .DESCRIPTION\n        This script is to help you automate a decision process around which subscription you want to"
  },
  {
    "path": "scripts/Get-LicenseUsage/README.md",
    "chars": 5195,
    "preview": "# Microsoft FastTrack Open Source - AAD PowerShell - Licensing usage versus available\n\n## Dependencies\n- Azure Active Di"
  },
  {
    "path": "scripts/Get-LicensingInfo/Get-LicensingInfo.ps1",
    "chars": 6394,
    "preview": "<#\n    .DESCRIPTION\n        This is just a one liner script to see your current usage versus available subscriptions in"
  },
  {
    "path": "scripts/Get-LicensingInfo/README.md",
    "chars": 4581,
    "preview": "# Microsoft FastTrack Open Source - AAD PowerShell - Get a list of current license usage versus avaliable licenses\n\n## D"
  },
  {
    "path": "scripts/Get-ListUsage/Get-ListUsage.ps1",
    "chars": 3805,
    "preview": "[CmdletBinding()]\nparam(\n    [Parameter(Mandatory = $true,\n        HelpMessage = \"Please supply a valid SPList\",\n      "
  },
  {
    "path": "scripts/Get-ListUsage/README.md",
    "chars": 3620,
    "preview": "# Microsoft FastTrack Open Source - Get-ListUsage\n\nThis script takes a List instance and return a csv report of the usag"
  },
  {
    "path": "scripts/Get-M365CopilotReadiness/Get-M365CopilotReadiness.ps1",
    "chars": 67059,
    "preview": "<#\n.SYNOPSIS\n  Checks a tenant's technical readiness for Copilot for Microsoft 365.\n\n.DESCRIPTION\n  - Installs required "
  },
  {
    "path": "scripts/Get-M365CopilotReadiness/README.md",
    "chars": 16945,
    "preview": "# Microsoft FastTrack Open Source - Get-M365CopilotReadiness\n\nPowerShell script that quickly collects key configuration "
  },
  {
    "path": "scripts/Get-M365CopilotReadiness/copilot-readiness.html",
    "chars": 88648,
    "preview": "<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<title>Copilot Readiness Report</title>\n<style>\nbody { font-family"
  },
  {
    "path": "scripts/Get-M365CopilotReadiness/copilot-readiness.json",
    "chars": 68876,
    "preview": "{\n    \"GeneratedAtUtc\":  \"2025-08-20T14:45:38Z\",\n    \"ScriptDurationSec\":  45.8633142,\n    \"LearnReferences\":  [\n      "
  },
  {
    "path": "scripts/Get-MgUserVoicemailReport/Get-MgUserVoicemailReport.ps1",
    "chars": 6486,
    "preview": "<#\n\nGet-MgUserVoicemailReport.ps1 PowerShell script | Version 0.1\n\nby David.Whitney@microsoft.com\n\nTHIS CODE AND ANY ASS"
  },
  {
    "path": "scripts/Get-MgUserVoicemailReport/README.md",
    "chars": 3843,
    "preview": "# Microsoft FastTrack Open Source - Get-MgUserVoicemailReport\n\nThis script uses Graph API to read and save a report of a"
  },
  {
    "path": "scripts/Get-MigrationToTeamsDNSCheck/MigrationToTeamsDNSCheck V1.7.ps1",
    "chars": 14871,
    "preview": "cls\r\n## ------------------------------------------\r\n##\r\n##Script: MigrationToTeamsDNSCheck\r\n##Version: V1.7\r\n##Author: T"
  },
  {
    "path": "scripts/Get-MigrationToTeamsDNSCheck/README.md",
    "chars": 4280,
    "preview": "# Microsoft FastTrack Open Source - MigrationToTeamsDNSCheck\n\nPowershell Script used to query Skype for Business hardcod"
  },
  {
    "path": "scripts/Get-OD4BExternalUsers/Get-OD4BExternalUsers.ps1",
    "chars": 3905,
    "preview": "<#\n\n.SYNOPSIS\n  Name: Get-OD4BExternalUsers.ps1\n  The purpose of this script is to search a tenant's OD4B sites\n  for a"
  },
  {
    "path": "scripts/Get-OD4BExternalUsers/README.md",
    "chars": 3368,
    "preview": "# Microsoft FastTrack Open Source - Get-OD4BExternalUsers\n\n##Usage\nThe purpose of this script is to search a tenant's OD"
  },
  {
    "path": "scripts/Get-ODBUsage/README.md",
    "chars": 3306,
    "preview": "# Microsoft FastTrack Open Source - Get-ODBUsage\n\nThe purpose of this script is to enumerate OneDrive for Business Sites"
  },
  {
    "path": "scripts/Get-RecurringTeamsMeetings/Get-RecurringTeamsMeetings.ps1",
    "chars": 6512,
    "preview": "<#\n.SYNOPSIS\n    Reports on recurring Teams meetings for either all users or a targeted list from a CSV.\n\n.DESCRIPTION\n "
  },
  {
    "path": "scripts/Get-RecurringTeamsMeetings/README.md",
    "chars": 4553,
    "preview": "# 📜 Microsoft Teams Recurring Meeting Report\n\nThis PowerShell script scans user calendars in a Microsoft 365 tenant to f"
  },
  {
    "path": "scripts/Get-RecurringTeamsMeetings/sample-csv-file.csv",
    "chars": 326,
    "preview": "UserPrincipalName\nCoraT@M365CPI23966391.OnMicrosoft.com\nCoreyG@M365CPI23966391.OnMicrosoft.com\nDakotaS@M365CPI23966391.O"
  },
  {
    "path": "scripts/Get-SharedChannelsUserIsPartOf/Get-SharedChannelsUserIsPartOf.ps1",
    "chars": 3315,
    "preview": "# ...- --- .. -.. - .... . ...- .. .-.. .-.. .- .. -. \n# THIS CODE AND ANY ASSOCIATED INFORMATION ARE PROVIDED “AS IS” W"
  },
  {
    "path": "scripts/Get-SharedChannelsUserIsPartOf/README.md",
    "chars": 3520,
    "preview": "# Microsoft FastTrack Open Source - Get-SharedChannelsUserIsPartOf\nPowerShell script to fetch the shared channels (in re"
  },
  {
    "path": "scripts/Get-TeamVisibilityAndOwnerReport/Get-TeamVisibilityAndOwnerReport.ps1",
    "chars": 5328,
    "preview": "<#\n    .DESCRIPTION\n        Script to list all existing Teams, filters on visibility status (Public or Private) and\n    "
  },
  {
    "path": "scripts/Get-TeamVisibilityAndOwnerReport/README.md",
    "chars": 3469,
    "preview": "# Microsoft FastTrack Open Source - Teams PowerShell - Get a list of Teams,Owners according to visibility status\r\n## Usa"
  },
  {
    "path": "scripts/Get-TeamsChannelUsersReport/Get-TeamsChannelUsersReport.ps1",
    "chars": 33598,
    "preview": "<#\n\nGet-TeamsChannelUsersReport.ps1 PowerShell script | Version 1.2\n\nby David.Whitney@microsoft.com\n\nTHIS CODE AND ANY A"
  },
  {
    "path": "scripts/Get-TeamsChannelUsersReport/README.md",
    "chars": 5056,
    "preview": "\n# Microsoft FastTrack Open Source - Get-TeamsChannelUsersReport.ps1\n\nCreate a CSV file output that contains a row for e"
  },
  {
    "path": "scripts/Get-TeamsUserActivityReport/Get-TeamsUserActivityReport.ps1",
    "chars": 10951,
    "preview": "<#\n.SYNOPSIS\n    Generates a Teams User Activity report for users specified in a CSV file.\n\n.DESCRIPTION\n    This script"
  }
]

// ... and 83 more files (download for full content)

About this extraction

This page contains the full source code of the microsoft/FastTrack GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 283 files (29.3 MB), approximately 1.1M tokens, and a symbol index with 10 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!