AGENT SKILL

share

Shares (or unshares) a Microsoft App with users via `ms app share` / `ms app unshare`. Use when updating app access control.

License 许可
MIT
最近更新
2026-11-06
Stars
★ 36
Forks
12

01 前言 Front Matter

name
share
description
Shares (or unshares) a Microsoft App with users via `ms app share` / `ms app unshare`. Use when updating app access control.
allowed-tools
Read Grep Glob Bash AskUserQuestion

03 SKILL.md 正文

? Shared Instructions: shared-instructions.md — Cross-cutting concerns. Always confirm before share/unshare.

Share / Unshare

Adds or removes user access to the app in the current directory. The CLI resolves emails via Microsoft Graph; entries that don't resolve are returned as warnings (the RP call still succeeds for the resolved entries).

Workflow

  1. Memory Bank → 2. Verify Project + Env → 3. Mode (share / unshare) → 4. Collect Emails → 5. Confirm → 6. Run → 7. Surface Partial-Success Envelope

Step 1: Check Memory Bank

Read memory-bank.md for app slug, GUID, and environment.

Step 2: Verify Project + Env

test -f ms.config.json || { echo "Not in a Microsoft App workspace."; exit 1; }
BIN=ms
$BIN auth status                                         # must report the expected UPN

Step 3: Mode

Ask whether the user wants to share (add access) or unshare (remove access). Default to share unless the prompt obviously indicates removal.

Step 4: Collect Emails

Accept a comma-separated email list. Validate basic shape (user@domain) before passing through; don't try to resolve them yourself — ms handles Graph resolution and will return warnings for unresolved entries.

If the user passes Object GUIDs (already-resolved principals), pass them through as-is — the CLI accepts both forms.

Step 5: Confirm

Show the user exactly what will run, then ask for confirmation:

"About to share <app-name> with: alice@contoso.com, bob@contoso.com. Confirm?"

Wait for explicit yes. Never auto-proceed — ACL changes affect production users.

Step 6: Run

Share:

$BIN app share "alice@contoso.com,bob@contoso.com"

Unshare:

$BIN app unshare "alice@contoso.com,bob@contoso.com"

The command reads the app ID from ms.config.json.

Step 7: Surface Partial-Success Envelope

The CLI returns a JSON envelope with partialFailure: boolean and warnings: []. When partialFailure: true:

  • The RP call succeeded — share state is updated for resolved users.
  • Warnings list the unresolved entries (typo'd email, account doesn't exist in the tenant, Graph couldn't find them, etc.).

Print warnings verbatim and ask the user whether to re-run with corrected entries:

Share completed with warnings:
  - 'bob@contso.com' could not be resolved (Graph returned 404).
  - 'charlie@partner.com' is not a member of this tenant.

Share state updated for: alice@contoso.com (1 of 3 resolved).

Would you like to retry the 2 unresolved entries with corrections?

If the user confirms, loop back to Step 4 with the corrected list. Don't retry automatically — typos and tenant-membership issues need human resolution.


Edge Cases

Situation Action
User passes a single email Run as-is; the envelope still applies (just with one entry).
User passes a mix of emails and Object GUIDs Pass through as one comma-separated list — the CLI accepts both.
ms app share returns non-zero (not a partial-failure envelope) A hard error (auth, env, app-not-found). Surface verbatim and STOP. Do not retry.
User says "share with everyone" Decline — there is no "everyone" semantic. Ask for an explicit list.

04 同仓库更多 Skills

microsoft
microsoft/managed-apps

state

Store and query a Microsoft Managed App's built-in state and file attachments with `ms project state` CLI schema commands and generated TypeScript clients. First, with the user signed in to the CLI, run `ms feature status --name state --json`; if `feature.enabled` is not `true`, recommend an alternative connector or data source.

★ 36
microsoft
microsoft/managed-apps

share-link

Manages tenant-wide share links for a Microsoft App via `ms app share link create`, `ms app share link list`, and `ms app share link revoke`. Use when you want to distribute app access via a URL instead of named principals.

★ 36
microsoft
microsoft/managed-apps

play

Opens a Microsoft App in the browser via `ms app play`. Use when opening the live deployed version or a cloud-hosted preview (main branch or specific commit SHA) without starting a local dev server.

★ 36
microsoft
microsoft/managed-apps

list-connectors

Lists connectors available in the active environment — including whether each is allowed or blocked by your organization's policy — plus the connection-bound data sources already wired into a Microsoft App. Use when discovering connectors and their operations before adding data sources.

★ 36
microsoft
microsoft/managed-apps

list-apps

Discovers managed apps in the active environment via `ms app list --json` and optional `ms app show --json`. Use when listing or locating apps.

★ 36
microsoft
microsoft/managed-apps

dev

Runs a Microsoft App locally with hot reload via `ms app dev`. Use when starting or restarting local development and surfacing the App Player URL.

★ 36