Skip to content

Add a "configure go-live env vars" skill to walk users through azd env set for M365 + Teams #22

@paulyuk

Description

@paulyuk

Problem

Going live today requires the user to manually run ~5 azd env set commands and hunt down:

  • MAILBOX_OWNER_EMAIL – their own UPN
  • TEAMS_TEAM_ID – from the channel link's groupId=
  • TEAMS_CHANNEL_ID – the 19:...@thread.tacv2 segment of the channel link
  • TEAMS_MENTION_USER_ID – their AAD object id (az ad signed-in-user show)
  • TEAMS_MENTION_NAME – their display name

We have infra/scripts/discover-teams-ids.{sh,ps1} and a doc block in README.md §5, but the user still has to:

  1. Know the script exists.
  2. Paste a Teams channel URL from their browser.
  3. Glue the outputs together.
  4. Re-run azd provision / azd up.

This is the #1 friction point right after azd up.

Proposal

Add a Copilot skill (under .github/skills/ or wherever this repo registers skills — see skills/) named something like configure-go-live that:

  1. Detects current azd env get-values and reports which of the 5 vars are unset / placeholder.
  2. Prompts the user for a Teams channel URL and extracts TEAMS_TEAM_ID + TEAMS_CHANNEL_ID via regex.
  3. Runs az ad signed-in-user show to auto-fill TEAMS_MENTION_USER_ID + TEAMS_MENTION_NAME (and offers MAILBOX_OWNER_EMAIL from userPrincipalName).
  4. Shows the diff (old → new) and asks for confirmation before issuing the azd env set calls.
  5. Offers to run azd provision (or azd up) afterward, and reminds the user to run ./infra/scripts/authorize-connectors.sh the first time.

Acceptance

  • A user with a fresh clone + azd up already run can go from DRY RUN → LIVE in a single skill invocation.
  • Skill is idempotent (re-running it just re-confirms / updates whatever's stale).
  • Works on both bash and PowerShell hosts.

Related

  • README.md §5 (Go live)
  • docs/configuration.md (Go live with real M365)
  • infra/scripts/discover-teams-ids.{sh,ps1}
  • skills/teams-channels.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions