# Dataverse Skills
[](https://opensource.org/licenses/MIT)
Build, query, and manage [Microsoft Dataverse](https://learn.microsoft.com/en-us/power-apps/maker/data-platform/data-platform-intro) and linked Dynamics 365 Finance and Operations environments through natural language. The plugin teaches AI coding agents to drive the Dataverse MCP server, Dataverse CLI, Python SDK, and PAC CLI — from designing data models and answering CRM questions to deploying Dataverse solutions and Finance and Operations deployable packages.
| Skill | What it does |
|---|---|
| **dv-connect** | One-time setup that installs the Dataverse CLI, Python SDK, and PAC CLI; authenticates against your Dataverse environment; and registers the Dataverse MCP server with your agent. |
| **dv-query** | Reads, filters, paginates, and aggregates Dataverse records. Handles natural-language questions like *"show me my open deals"*, multi-page result sets, and pandas DataFrame loading for notebook analysis. |
| **dv-data** | Single-record CRUD plus bulk import — CSV loads, multi-table imports with foreign-key dependencies, upsert by alternate key, and AI-generated sample data. |
| **dv-metadata** | Authors and edits the Dataverse data model: tables, columns, relationships, forms, and views. |
| **dv-solution** | Manages solution lifecycle — create, export, import, promote across environments, and validate deployments. |
| **erp-xpp** | Handles the Finance and Operations X++ lifecycle: model and metadata authoring, matching SDK installation, compile/build, deployable package deployment, database synchronization, and verification of custom services/APIs, runnable X++ classes, and public OData data entities. |
| **erp-sql** | Requests explicitly approved temporary Reader-only SQL access to Finance and Operations unified development environments (UDEs), verifies sqlcmd connectivity, and reads user-selected physical tables with bounded previews and reusable sessions, without exposing the password. |
| **dv-admin** | Environment-level administration: bulk delete, retention/archival, organization settings, OrgDB settings, recycle bin, audit, and the allowlisted PPAC toggles. |
| **dv-security** | Assigns security roles, manages user access, adds application users, configures business units, and handles admin self-elevation. |
| **dv-overview** | Cross-cutting rules and tool routing; loaded before any other skill to direct each request to the right specialist. |
Browse [`.github/plugins/dataverse/skills/`](.github/plugins/dataverse/skills/) for the full source.
## Prerequisites
A Microsoft Dataverse environment, available through Power Apps, Dynamics 365, or Power Platform plans, or via the free [Power Apps Developer Plan](https://learn.microsoft.com/en-us/power-platform/developer/plan).
## Install
### Quick install — any agent, incl. JetBrains (npx)
One command installs **all** Dataverse skills and lets you choose which agent(s) to add them to:
```bash
npx skills add microsoft/Dataverse-skills -s "*"
```
- `-s "*"` installs every Dataverse skill (skips the per-skill prompt).
- You'll be prompted to pick which **agent(s)** to install into (Codex, GitHub Copilot, Claude Code, Cursor, …).
- Add `-g` to install **globally** so the skills are available in every project on your machine:
```bash
npx skills add microsoft/Dataverse-skills -s "*" -g
```
This works with any agent that reads local skills. JetBrains IDEs also have a native listing -- see [JetBrains IDEs](#jetbrains-ides-pycharm-rider). After installing, ask your agent to **"Connect to Dataverse"** — the `dv-connect` skill fetches the helper scripts and walks through authentication and MCP registration.
The per-marketplace installs below are alternatives for agents that have a dedicated plugin listing.
### GitHub Copilot
```bash
/plugin install dataverse@awesome-copilot
```
### Claude Code
```bash
/plugin install dataverse@claude-plugins-official
```
### Gemini CLI
Install the extension from the public repository. Gemini CLI selects the
generic extension archive attached to the latest GitHub Release:
```bash
gemini extensions install https://github.com/microsoft/Dataverse-skills --skip-settings
gemini extensions config dataverse DATAVERSE_URL --scope workspace
```
Enter the Dataverse environment URL when the configuration command prompts.
The value is stored in local Gemini extension settings and is not committed to
the repository. Restart Gemini after installation, then verify discovery:
```text
/extensions list
/skills list
```
```bash
gemini mcp list
```
Update or uninstall the extension with:
```bash
gemini extensions update dataverse
gemini extensions uninstall dataverse
```
The release archive is generated from `.github/plugins/dataverse/` when a new
plugin version reaches `main`; the repository does not track a second skills or
scripts tree.
### Codex
**Codex app and ChatGPT**
1. Open **Plugins**.
2. Search for **Microsoft Dataverse** in the OpenAI plugin directory.
3. Open the `dataverse` plugin and select **Install**.
**Codex CLI**
Install directly from the OpenAI-curated marketplace:
```bash
codex plugin add dataverse@openai-curated
```
Alternatively, run `/plugins`, search for **Microsoft Dataverse**, and install
`dataverse` from the `openai-curated` marketplace.
### Cursor
**From agent chat**
```bash
/add-plugin dataverse
```
**From the marketplace UI**
1. Open **Settings → Plugins** in Cursor.
2. Search the Marketplace for **Dataverse**.
3. Open **Microsoft Dataverse** and select **Add to Cursor**.
The listing is published at [cursor.com/marketplace/microsoft-dataverse](https://cursor.com/marketplace/microsoft-dataverse).
### Google Antigravity
Install the native plugin directly from its canonical directory in this repository:
```bash
agy plugin install https://github.com/microsoft/Dataverse-skills/tree/main/.github/plugins/dataverse
```
If the Gemini extension is already installed, import the same plugin with
`agy plugin import gemini` instead.
Restart `agy`, then use `/skills` to verify discovery. Invoke `/dv-connect` to
select an environment and register the Dataverse MCP server with `agy mcp add`;
verify it with `agy mcp list` after restarting.
### JetBrains IDEs (PyCharm, Rider)
Requires JetBrains AI Assistant with Claude Agent or Codex.
1. Open **Settings | Tools | AI Assistant | Skills**.
2. Search for **dataverse**.
3. Select **dataverse** and click **Install**.
Then ask the agent to **"Connect to Dataverse"** to install the full `dv-*` skill set and set up authentication and MCP. The listing is published at [JetBrains/skills](https://github.com/JetBrains/skills/tree/main/dataverse).
## Verify the install
After installation, ask your agent:
> "Connect to Dataverse"
The `dv-connect` skill walks through tool checks, authentication, and MCP registration. When it finishes, you should see a `dataverse-<orgname>` MCP server (or Gemini's bundled `dataverse` server), and `pac auth list` should show your active environment.
## Try these prompts
After the connect flow finishes, describe what you want — the plugin picks MCP, the Dataverse CLI, the Python SDK, or PAC CLI for you.
- *"Show me my open deals over $100K closing this quarter"*
- *"Import this CSV into the contacts table"*
- *"Create a customer feedback table with name, rating, and comment columns"*
- *"Pull the schema and pack it into a solution"*
- *"Create a runnable X++ class, compile it, and deploy its Finance and Operations package"*
- *"Get temporary Reader access and connect sqlcmd to my Finance and Operations developer database"*
- *"Bulk delete activities older than 2024"*
- *"Add a teammate to the sales team on the dev environment"*
## Safety & Security
The plugin is designed around a least-privilege model — it cannot exceed the permissions of the authenticated user. Key safeguards:
- **MCP authorization** — MCP access requires developer auth, tenant admin consent, and per-environment allowlisting; other plugin tools (SDK, PAC CLI) authenticate directly.
- **Security role enforcement** — every API call is authorized server-side by Dataverse; the plugin cannot bypass or escalate permissions.
- **Application-level telemetry only** — outbound Dataverse requests may carry application metadata (plugin / version / skill / agent labels) so server-side dashboards can attribute traffic. No prompts, tool arguments, or record data are transmitted.
- **Token security** — credentials are stored in your OS native credential store or held in memory only; never passed to external services.
For the full safety model — including confirmation flows, logging, irreversible operation handling, and planned improvements — see [docs/safety-and-guardrails.md](docs/safety-and-guardrails.md).
## Contributing
We welcome contributions — new skills, improvements to existing ones, and bug fixes. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines and local-development instructions.
## Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
trademarks or logos is subject to and must follow
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
Any use of third-party trademarks or logos are subject to those third-party's policies.
## License
This project is licensed under the [MIT License](LICENSE).
## 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.