msstore-cli
Microsoft Store Developer CLI (msstore) for publishing Windows applications to the Microsoft Store. Use when asked to configure Store credentials, list Store apps, check submission status, publish submissions, manage package flights, set up CI/CD for Store publishing, or integrate with Partner Center. Supports Windows App SDK/WinUI, UWP, .NET MAUI, Flutter, Electron, React Native, and PWA applications.
What this skill does
# Microsoft Store Developer CLI (msstore)
The Microsoft Store Developer CLI (`msstore`) is a cross-platform command-line interface for publishing and managing applications in the Microsoft Store. It integrates with Partner Center APIs and supports automated publishing workflows for various application types.
## When to Use This Skill
Use this skill when you need to:
- Configure Store credentials for API access
- List applications in your Store account
- Check the status of a submission
- Publish submissions to the Store
- Package applications for Store submission
- Initialize projects for Store publishing
- Manage package flights (beta testing)
- Set up CI/CD pipelines for automated Store publishing
- Manage gradual rollouts of submissions
- Update submission metadata programmatically
## Prerequisites
- Windows 10+, macOS, or Linux
- .NET 9 Desktop Runtime (Windows) or .NET 9 Runtime (macOS/Linux)
- Partner Center account with appropriate permissions
- Azure AD app registration with Partner Center API access
- msstore CLI installed via one of these methods:
- **Microsoft Store**: [Download](https://www.microsoft.com/store/apps/9P53PC5S0PHJ)
- **WinGet**: `winget install "Microsoft Store Developer CLI"`
- **Manual**: Download from [GitHub Releases](https://aka.ms/msstoredevcli/releases)
### Partner Center Setup
Before using msstore, you need to create an Azure AD application with Partner Center access:
1. Go to [Partner Center](https://partner.microsoft.com/dashboard)
2. Navigate to **Account settings** > **User management** > **Azure AD applications**
3. Create a new application and note the **Tenant ID**, **Client ID**, and **Client Secret**
4. Grant the application appropriate permissions (Manager or Developer role)
## Core Commands Reference
### info - Print Configuration
Display the current credential configuration.
```bash
msstore info
```
**Options:**
| Option | Description |
| ------ | ----------- |
| `-v, --verbose` | Print verbose output |
### reconfigure - Configure Credentials
Configure or update Microsoft Store API credentials.
```bash
msstore reconfigure [options]
```
**Options:**
| Option | Description |
| ------ | ----------- |
| `-t, --tenantId` | Azure AD Tenant ID |
| `-s, --sellerId` | Partner Center Seller ID |
| `-c, --clientId` | Azure AD Application Client ID |
| `-cs, --clientSecret` | Client Secret for authentication |
| `-ct, --certificateThumbprint` | Certificate thumbprint (alternative to client secret) |
| `-cfp, --certificateFilePath` | Certificate file path (alternative to client secret) |
| `-cp, --certificatePassword` | Certificate password |
| `--reset` | Reset credentials without full reconfiguration |
**Examples:**
```bash
# Configure with client secret
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --clientSecret $CLIENT_SECRET
# Configure with certificate
msstore reconfigure --tenantId $TENANT_ID --sellerId $SELLER_ID --clientId $CLIENT_ID --certificateFilePath ./cert.pfx --certificatePassword MyPassword
```
### settings - CLI Settings
Change settings of the Microsoft Store Developer CLI.
```bash
msstore settings [options]
```
**Options:**
| Option | Description |
| ------ | ----------- |
| `-t, --enableTelemetry` | Enable (true) or disable (false) telemetry |
#### Set Publisher Display Name
```bash
msstore settings setpdn <publisherDisplayName>
```
Sets the default Publisher Display Name for the `init` command.
### apps - Application Management
List and retrieve application information.
#### List Applications
```bash
msstore apps list
```
Lists all applications in your Partner Center account.
#### Get Application Details
```bash
msstore apps get <productId>
```
**Arguments:**
| Argument | Description |
| -------- | ----------- |
| `productId` | The Store product ID (e.g., 9NBLGGH4R315) |
**Example:**
```bash
# Get details of a specific app
msstore apps get 9NBLGGH4R315
```
### submission - Submission Management
Manage Store submissions.
| Sub-Command | Description |
| ----------- | ----------- |
| `status` | Get submission status |
| `get` | Get submission metadata and package info |
| `getListingAssets` | Get listing assets of a submission |
| `updateMetadata` | Update submission metadata |
| `poll` | Poll submission status until complete |
| `publish` | Publish a submission |
| `delete` | Delete a submission |
#### Get Submission Status
```bash
msstore submission status <productId>
```
#### Get Submission Details
```bash
msstore submission get <productId>
```
#### Update Metadata
```bash
msstore submission updateMetadata <productId> <metadata>
```
Where `<metadata>` is a JSON string with the updated metadata. Because JSON contains characters that shells interpret (quotes, braces, etc.), you must quote and/or escape the value appropriately:
- **Bash/Zsh**: Wrap the JSON in single quotes so the shell passes it through literally.
```bash
msstore submission updateMetadata 9NBLGGH4R315 '{"description":"My updated app"}'
```
- **PowerShell**: Use single quotes (or escape double quotes inside a double-quoted string).
```powershell
msstore submission updateMetadata 9NBLGGH4R315 '{"description":"My updated app"}'
```
- **cmd.exe**: Escape each inner double quote with a backslash.
```cmd
msstore submission updateMetadata 9NBLGGH4R315 "{\"description\":\"My updated app\"}"
```
> **Tip:** For complex or multi-line metadata, save the JSON to a file and pass its contents instead to avoid quoting issues:
> ```bash
> msstore submission updateMetadata 9NBLGGH4R315 "$(cat metadata.json)"
> ```
**Options:**
| Option | Description |
| ------ | ----------- |
| `-s, --skipInitialPolling` | Skip initial status polling |
#### Publish Submission
```bash
msstore submission publish <productId>
```
#### Poll Submission
```bash
msstore submission poll <productId>
```
Polls until the submission status is PUBLISHED or FAILED.
#### Delete Submission
```bash
msstore submission delete <productId>
```
**Options:**
| Option | Description |
| ------ | ----------- |
| `--no-confirm` | Skip confirmation prompt |
### init - Initialize Project for Store
Initialize a project for Microsoft Store publishing. Automatically detects project type and configures Store identity.
```bash
msstore init <pathOrUrl> [options]
```
**Arguments:**
| Argument | Description |
| -------- | ----------- |
| `pathOrUrl` | Project directory path or PWA URL |
**Options:**
| Option | Description |
| ------ | ----------- |
| `-n, --publisherDisplayName` | Publisher Display Name |
| `--package` | Also package the project |
| `--publish` | Package and publish (implies --package) |
| `-f, --flightId` | Publish to a specific flight |
| `-prp, --packageRolloutPercentage` | Gradual rollout percentage (0-100) |
| `-a, --arch` | Architecture(s): x86, x64, arm64 |
| `-o, --output` | Output directory for packages |
| `-ver, --version` | Version to use when building |
**Supported Project Types:**
- Windows App SDK / WinUI 3
- UWP
- .NET MAUI
- Flutter
- Electron
- React Native for Desktop
- PWA (Progressive Web Apps)
**Examples:**
```bash
# Initialize WinUI project
msstore init ./my-winui-app
# Initialize PWA
msstore init https://contoso.com --output ./pwa-package
# Initialize and publish
msstore init ./my-app --publish
```
### package - Package for Store
Package an application for Microsoft Store submission.
```bash
msstore package <pathOrUrl> [options]
```
**Arguments:**
| Argument | Description |
| -------- | ----------- |
| `pathOrUrl` | Project directory path or PWA URL |
**Options:**
| Option | Description |
| ------ | ----------- |
| `-o, --output` | Output directory for the package |
| `-a, --arch` | Architecture(s): x86, x64, arm64 |
| `-ver, --version` | Version for the package |
**Examples:**
```bash
# Package for default architecture
msstore package ./my-app
# Package for multiple architectures
msstore package ./my-app --arcRelated in Web Dev
generating-lwc-components
IncludedLightning Web Components with PICKLES methodology and 165-point scoring. Use this skill when the user creates or edits LWC components, builds wire service patterns, or writes Jest tests for LWC. TRIGGER when: user creates/edits LWC components, touches lwc/**/*.js, .html, .css, .js-meta.xml files, or asks about wire service, SLDS, or Jest LWC tests. DO NOT TRIGGER when: Apex classes (use generating-apex), Aura components, or Visualforce.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Set up queries with useQuery, mutations with useMutation, configure QueryClient caching strategies, implement optimistic updates, and handle infinite scroll with useInfiniteQuery. Use when: setting up data fetching in React projects, migrating from v4 to v5, or fixing object syntax required errors, query callbacks removed issues, cacheTime renamed to gcTime, isPending vs isLoading confusion, keepPreviousData removed problems.
document-processor-api
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
nutrient-document-processing
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Covers useMutationState, simplified optimistic updates, throwOnError, network mode (offline/PWA), and infiniteQueryOptions. Use when setting up data fetching, fixing v4→v5 migration errors (object syntax, gcTime, isPending, keepPreviousData), or debugging SSR/hydration issues with streaming server components.
accelint-nextjs-best-practices
IncludedNext.js performance optimization and best practices. Use when writing Next.js code (App Router or Pages Router); implementing Server Components, Server Actions, or API routes; optimizing RSC serialization, data fetching, or server-side rendering; reviewing Next.js code for performance issues; fixing authentication in Server Actions; or implementing Suspense boundaries, parallel data fetching, or request deduplication.