From code-apps-preview
Adds Azure DevOps connector to Power Apps code apps for querying work items, creating bugs, managing pipelines, and ADO REST API calls via fixed TypeScript service.
npx claudepluginhub microsoft/power-platform-skills --plugin code-apps-previewThis skill is limited to using the following tools:
**๐ Shared Instructions: [shared-instructions.md](${CLAUDE_PLUGIN_ROOT}/shared/shared-instructions.md)** - Cross-cutting concerns.
Adds any Power Platform connector to Power Apps code apps as generic fallback for connectors without dedicated skills. Delegates common ones like SharePoint, Teams, Excel to specific skills.
Manage Azure DevOps projects, repos, pipelines, builds, pull requests, work items, artifacts, and service endpoints using Azure CLI extension.
Interacts with Azure DevOps repositories, pull requests, and APIs using AZURE_DEVOPS_TOKEN. Manages git pushes, PR creation/updates for code hosted on Azure DevOps.
Share bugs, ideas, or general feedback.
๐ Shared Instructions: shared-instructions.md - Cross-cutting concerns.
Check for memory-bank.md per shared-instructions.md.
First, find the connection ID (see connector-reference.md):
Run the /list-connections skill. Find the Azure DevOps connection in the output. If none exists, direct the user to create one using the environment-specific Connections URL โ construct it from the active environment ID in context (from power.config.json or a prior step): https://make.powerapps.com/environments/<environment-id>/connections โ + New connection โ search for the connector โ Create.
pwsh -NoProfile -Command "pac code add-data-source -a azuredevops -c <connection-id>"
The generated code has a known issue: the HttpRequest method uses parameters as the parameter name, but the API expects body. Rename parameters to body in these 3 files:
Use the Edit tool to rename parameters to body in each file:
1. src/generated/services/AzureDevOpsService.ts:
Find the HttpRequest method. Rename the parameter and its usage:
// BEFORE (generated):
async HttpRequest(parameters: any) {
const params = { parameters: parameters, ... };
// AFTER (fixed):
async HttpRequest(body: any) {
const params = { body: body, ... };
2. .power/appschemas/dataSourceInfo.ts:
Find the visualstudioteamservices โ HttpRequest โ parameters section. Rename the property key:
// BEFORE (generated):
HttpRequest: {
parameters: {
parameters: { ... }
// AFTER (fixed):
HttpRequest: {
parameters: {
body: { ... }
3. .power/schemas/visualstudioteamservices/visualstudioteamservices.Schema.json:
Find the /{connectionId}/httprequest โ post โ parameters array. Change the name field:
// BEFORE (generated):
{ "name": "parameters", "in": "body", ... }
// AFTER (fixed):
{ "name": "body", "in": "body", ... }
Ask the user what Azure DevOps operations they need (query work items, create items, trigger pipelines, etc.).
HttpRequest -- make arbitrary ADO REST API calls:
await AzureDevOpsService.HttpRequest({
Uri: "https://dev.azure.com/{org}/{project}/_apis/wit/wiql?api-version=7.2",
Method: "POST",
Body: JSON.stringify({
query:
"SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.TeamProject] = @project"
})
});
Docs: Azure DevOps REST API
Use Grep to find specific methods in src/generated/services/AzureDevOpsService.ts (generated files can be very large -- see connector-reference.md).
npm run build
Fix TypeScript errors before proceeding. Do NOT deploy yet.
Update memory-bank.md with: connector added, HttpRequest fix applied, build status.