Token导航 LogoToken导航

Agent Skill · 前端设计

ado-resource-validator(ado 资源验证器)

ado-resource-validator 用于记录任务执行中的错误、用户纠正、经验和能力缺口,适合在 Codex、Claude、Cursor、Gemini CLI 中希望让 Agent 持续沉淀问题、修正和最佳实践时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

ado-resource-validator 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为调用外部服务;许可证为 MIT,暂无第三方扫描结果,按安装量在前端设计类的 10,216 个 Skill 里排第 7,200。

总安装 408周安装 17GitHub Stars 127下载 136核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ado-resource-validator(ado 资源验证器)
来源仓库:https://github.com/anton-abyzov/specweave
仓库路径:skills/ado-resource-validator
安装命令:
npx skills add https://github.com/anton-abyzov/specweave --skill ado-resource-validator
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/anton-abyzov/specweave --skill ado-resource-validator

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

此技能通过以下方式确保您的 Azure DevOps 配置始终有效: ✅ 验证项目 - 检查项目是否存在,提示选择或创建 ✅ 支持多种策略 - 每个团队项目、基于区域路径、基于团队 ✅ 自动创建资源 - 项目、区域路径、团队(具有异步处理) ✅ 组织规格 - 根据项目创建文件夹结构 ✅ 清晰的错误消息 - 针对所有失败的可行指导 ✅ 处理 ADO 异步行为 - 轮询项目创建完成情况 结果:零手动 Azure DevOps 设置 - 系统处理一切,包括 ADO 的异步项目创建!

技能版本:1.1.0 推出:SpecWeave v0.17.0 最后更新:2025-11-11 v1.1.0 主要变更:添加了实现细节、异步项目创建处理、JIRA 比较 每周安装量 17 号 存储库 安东阿比佐夫 GitHub 之星 127 第一次看到 2026 年 1 月 22 日

来源仓库内路径:skills/ado-resource-validator

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/anton-abyzov/specweave --skill ado-resource-va…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要调用外部服务,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

ado-resource-validator 怎么安装?

在终端执行 npx skills add https://github.com/anton-abyzov/specweave --skill ado-resource-validator。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

ado-resource-validator 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

ado-resource-validator 需要什么权限?

权限级别是调用外部服务。该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

ado-resource-validator 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

ado-resource-validator 用的人多吗?

公开数据是累计安装 408 次,近一周安装 17 次,下载 136 次,GitHub 127 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

ado-resource-validator 安全吗?

没有查到第三方扫描结果,安全性无法从公开资料判断,安装前请自行审查源码、依赖和命令行为。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。

先想清楚的地方

  • 没有第三方扫描结果,安全性只能靠自己读源码判断。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 要求有安全扫描结论才肯安装的团队。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
ado-resource-validator

ado 资源验证器 · 本页

408127调用外部服务MIT未收录

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Azure DevOps Resource Validator Skill

Purpose: Validate and auto-create Azure DevOps projects and resources, ensuring.env configuration is correct.

Auto-Activation: Triggers when Azure DevOps setup or validation is needed.

What This Skill Does

This skill ensures your Azure DevOps configuration in .env is valid and all resources exist. It's smart enough to:

  1. Validate Azure DevOps projects - Check if projects exist (multiple for project-per-team)
  2. Prompt for action - Select existing project or create new one
  3. Validate area paths - Check if area paths exist (for area-path-based strategy)
  4. Create missing area paths - Auto-create area paths if missing
  5. Validate teams - Check if teams exist (for team-based strategy)
  6. Update.env with correct values - Ensure configuration is valid

When This Skill Activates

✅ Automatically activates when:

  • You set up Azure DevOps integration for the first time
  • You run /sw-ado:sync and resources are missing
  • Your .env has invalid Azure DevOps configuration
  • You mention "ado setup" or "azure devops validation"

Azure DevOps Configuration Structure

Required.env Variables

AZURE_DEVOPS_PAT=your_token_here
AZURE_DEVOPS_ORG=yourorganization
AZURE_DEVOPS_STRATEGY=project-per-team  # or area-path-based, team-based

Strategy-Specific Variables

Strategy 1: Project-per-team (Multiple Projects)

AZURE_DEVOPS_STRATEGY=project-per-team
AZURE_DEVOPS_PROJECTS=WebApp,MobileApp,Platform

→ Validates that WebApp, MobileApp, and Platform projects exist

Strategy 2: Area-path-based (One Project, Multiple Area Paths)

AZURE_DEVOPS_STRATEGY=area-path-based
AZURE_DEVOPS_PROJECT=MainProduct
AZURE_DEVOPS_AREA_PATHS=Frontend,Backend,Mobile

→ Validates MainProduct project exists → Creates area paths if missing: MainProduct\Frontend, MainProduct\Backend, MainProduct\Mobile

Strategy 3: Team-based (One Project, Multiple Teams)

AZURE_DEVOPS_STRATEGY=team-based
AZURE_DEVOPS_PROJECT=MainProduct
AZURE_DEVOPS_TEAMS=Alpha Team,Beta Team,Gamma Team

→ Validates MainProduct project exists → Creates teams if missing: Alpha Team, Beta Team, Gamma Team

NEW: Per-Project Configuration (Advanced - Multiple Projects × Resources)

# Multiple projects with their own area paths and teams
AZURE_DEVOPS_STRATEGY=project-per-team
AZURE_DEVOPS_PROJECTS=Backend,Frontend,Mobile

# Per-project area paths (hierarchical naming)
AZURE_DEVOPS_AREA_PATHS_Backend=API,Database,Cache
AZURE_DEVOPS_AREA_PATHS_Frontend=Web,Admin,Public
AZURE_DEVOPS_AREA_PATHS_Mobile=iOS,Android,Shared

# Per-project teams (optional)
AZURE_DEVOPS_TEAMS_Backend=Alpha,Beta
AZURE_DEVOPS_TEAMS_Frontend=Gamma

→ Validates 3 projects exist: Backend, Frontend, Mobile → Creates area paths per project:

  • Backend\API, Backend\Database, Backend\Cache
  • Frontend\Web, Frontend\Admin, Frontend\Public
  • Mobile\iOS, Mobile\Android, Mobile\Shared → Creates teams per project:
  • Backend: Alpha, Beta
  • Frontend: Gamma

Naming Convention: {PROVIDER}_{RESOURCE_TYPE}_{PROJECT_NAME}

Validation Flow

Step 1: Strategy Detection

Read.env and detect strategy:

AZURE_DEVOPS_STRATEGY=project-per-team

Result:

🔍 Detected strategy: Project-per-team
   Projects to validate: WebApp, MobileApp, Platform

Step 2: Project Validation (Project-per-team)

Check if projects exist:

# API calls to Azure DevOps
GET https://dev.azure.com/{org}/_apis/projects/WebApp
GET https://dev.azure.com/{org}/_apis/projects/MobileApp
GET https://dev.azure.com/{org}/_apis/projects/Platform

If all projects exist:

✅ All projects validated:
   • WebApp (ID: abcd1234)
   • MobileApp (ID: efgh5678)
   • Platform (ID: ijkl9012)

If some projects don't exist:

⚠️ Projects not found:
   ✅ WebApp (exists)
   ❌ MobileApp (not found)
   ❌ Platform (not found)

What would you like to do?
1. Create missing projects
2. Select existing projects
3. Fix project names manually
4. Cancel

Your choice [1]:

Option 1: Create Missing Projects:

📦 Creating Azure DevOps projects...

Creating project: MobileApp...
✅ Project created: MobileApp (ID: mnop3456)

Creating project: Platform...
✅ Project created: Platform (ID: qrst7890)

✅ All projects now exist!

Option 2: Select Existing Projects:

Available projects in organization:
1. WebApp
2. ApiGateway
3. AuthService
4. NotificationService
5. DataPipeline

Select projects (comma-separated numbers) [2,3]:

✅ Updated .env: AZURE_DEVOPS_PROJECTS=WebApp,ApiGateway,AuthService

Step 3: Area Path Validation (Area-path-based)

Scenario: One project with area paths

AZURE_DEVOPS_STRATEGY=area-path-based
AZURE_DEVOPS_PROJECT=MainProduct
AZURE_DEVOPS_AREA_PATHS=Frontend,Backend,Mobile,QA

Validation:

Checking project: MainProduct...
✅ Project "MainProduct" exists

Checking area paths...
  ✅ MainProduct\Frontend (exists)
  ✅ MainProduct\Backend (exists)
  ⚠️ MainProduct\Mobile (not found)
  ⚠️ MainProduct\QA (not found)

📦 Creating missing area paths...
✅ Created: MainProduct\Mobile
✅ Created: MainProduct\QA

✅ All area paths validated/created successfully

Step 4: Team Validation (Team-based)

Scenario: One project with multiple teams

AZURE_DEVOPS_STRATEGY=team-based
AZURE_DEVOPS_PROJECT=MainProduct
AZURE_DEVOPS_TEAMS=Alpha Team,Beta Team,Gamma Team

Validation:

Checking project: MainProduct...
✅ Project "MainProduct" exists

Checking teams...
  ✅ Alpha Team (exists)
  ⚠️ Beta Team (not found)
  ⚠️ Gamma Team (not found)

📦 Creating missing teams...
✅ Created: Beta Team
✅ Created: Gamma Team

✅ All teams validated/created successfully

Usage Examples

Example 1: Fresh Azure DevOps Setup (Project-per-team)

Scenario: New setup with multiple projects for different teams

Action: Run /sw-ado:sync

What Happens:

🔍 Validating Azure DevOps configuration...

Strategy: Project-per-team
Checking projects: WebApp, MobileApp, Platform...

⚠️ Projects not found:
   • WebApp
   • MobileApp
   • Platform

What would you like to do?
1. Create new projects
2. Select existing projects
3. Cancel

Your choice [1]: 1

📦 Creating Azure DevOps projects...

Creating project: WebApp
  Description: Web application frontend
  Process template: Agile
✅ Created: WebApp (ID: proj-001)

Creating project: MobileApp
  Description: Mobile application
  Process template: Agile
✅ Created: MobileApp (ID: proj-002)

Creating project: Platform
  Description: Backend platform services
  Process template: Agile
✅ Created: Platform (ID: proj-003)

🎉 Azure DevOps configuration complete! All resources ready.

Example 2: Migrate from Single to Multi-Project

Scenario: Currently using single project, want to split into multiple

Current.env:

AZURE_DEVOPS_PROJECT=MainProduct

New.env:

AZURE_DEVOPS_STRATEGY=project-per-team
AZURE_DEVOPS_PROJECTS=MainProduct-Frontend,MainProduct-Backend,MainProduct-Mobile

What Happens:

🔍 Detected strategy change: team-based → project-per-team

Validating new projects...
  ✅ MainProduct-Frontend (exists from previous split)
  ⚠️ MainProduct-Backend (not found)
  ⚠️ MainProduct-Mobile (not found)

Would you like to:
1. Create missing projects
2. Keep single project with area paths instead
3. Cancel

Your choice [1]: 1

📦 Creating projects...
✅ Created: MainProduct-Backend
✅ Created: MainProduct-Mobile

💡 Tip: You can now organize specs by project:
   .specweave/docs/internal/specs/MainProduct-Frontend/
   .specweave/docs/internal/specs/MainProduct-Backend/
   .specweave/docs/internal/specs/MainProduct-Mobile/

Example 3: Area Path Setup

Scenario: Large monolithic project with area-based organization

Action: Setup area paths for team organization

What Happens:

🔍 Validating Azure DevOps configuration...

Strategy: Area-path-based
Project: EnterpriseApp
Area Paths: Core, UserManagement, Billing, Reports, Analytics

Checking project: EnterpriseApp...
✅ Project exists

Checking area paths...
  ✅ EnterpriseApp\Core
  ✅ EnterpriseApp\UserManagement
  ⚠️ EnterpriseApp\Billing (not found)
  ⚠️ EnterpriseApp\Reports (not found)
  ⚠️ EnterpriseApp\Analytics (not found)

📦 Creating area paths...

Creating: EnterpriseApp\Billing
✅ Area path created with default team

Creating: EnterpriseApp\Reports
✅ Area path created with default team

Creating: EnterpriseApp\Analytics
✅ Area path created with default team

✅ All area paths ready!

Work items will be organized by area:
  • Billing features → EnterpriseApp\Billing
  • Report features → EnterpriseApp\Reports
  • Analytics features → EnterpriseApp\Analytics

Implementation Details

Location: src/utils/external-resource-validator.ts

Core Classes:

// Main validator class
export class AzureDevOpsResourceValidator {
  private pat: string;
  private organization: string;
  private envPath: string;

  constructor(envPath: string = '.env') {
    this.envPath = envPath;
    const env = this.loadEnv();
    this.pat = env.AZURE_DEVOPS_PAT || '';
    this.organization = env.AZURE_DEVOPS_ORG || '';
  }

  // Main validation entry point
  async validate(): Promise<AzureDevOpsValidationResult> {
    const env = this.loadEnv();
    const strategy = env.AZURE_DEVOPS_STRATEGY || 'project-per-team';

    // Validate based on strategy
    if (strategy === 'project-per-team') {
      return this.validateMultipleProjects(projectNames);
    } else if (strategy === 'area-path-based') {
      return this.validateAreaPaths(projectName, areaPaths);
    } else if (strategy === 'team-based') {
      return this.validateTeams(projectName, teams);
    }
  }
}

// Public API function
export async function validateAzureDevOpsResources(
  envPath: string = '.env'
): Promise<AzureDevOpsValidationResult> {
  const validator = new AzureDevOpsResourceValidator(envPath);
  return validator.validate();
}

Key Implementation Features:

  1. Async Project Creation (ADO-specific): // ADO creates projects asynchronously - need to poll for completion async createProject(name: string): Promise<AzureDevOpsProject> {const result = await this.callAzureDevOpsApi('projects?api-version=7.0', 'POST', body); // Wait for project to be fully created (ADO async behavior) await this.waitForProjectCreation(result.id); return {id: result.id, name, description};} // Poll until project is in 'wellFormed' state private async waitForProjectCreation(projectId: string): Promise<void> {const maxAttempts = 30; // 30 seconds max wait for (let i = 0; i < maxAttempts; i++) {const project = await this.getProject(projectId); if (project.state === 'wellFormed') {return; // Project is ready!} await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second} throw new Error('Project creation timeout');}
  2. Interactive Prompts (when resources missing): ` const {action} = await inquirer.prompt([{type: 'select', name: 'action', message: Project "${projectName}" not found. What would you like to do?, choices: [{name: 'Create new project', value: 'create'}, {name: 'Select existing project', value: 'select'}, {name: 'Skip this project', value: 'skip'}, {name: 'Cancel', value: 'cancel'}]}]); `
  3. Automatic.env Updates: ` // After creating projects, update.env updateEnv(key: string, value: string): void {const envContent = fs.readFileSync(this.envPath, 'utf-8'); const updated = envContent.replace(new RegExp(^${key}=.*$, 'm'), ${key}=${value}); fs.writeFileSync(this.envPath, updated);} `

CLI Command

Automatic validation (during setup):

# Runs automatically during specweave init
npx specweave init

# Also runs automatically before sync
/sw-ado:sync 0014

Manual validation:

# Via skill activation
"Can you validate my Azure DevOps configuration?"

# Via TypeScript directly
npx tsx -e "import { validateAzureDevOpsResources } from './dist/utils/external-resource-validator.js'; await validateAzureDevOpsResources();"

# Via CLI (future command - planned)
specweave validate-ado

Validation output:

interface AzureDevOpsValidationResult {
  valid: boolean;
  strategy: 'project-per-team' | 'area-path-based' | 'team-based';
  projects: Array<{
    name: string;
    id: string;
    exists: boolean;
  }>;
  created: string[];      // Names of newly created resources
  envUpdated: boolean;    // Whether .env was modified
}

// Example output:
{
  valid: true,
  strategy: 'project-per-team',
  projects: [
    { name: 'WebApp', id: 'proj-001', exists: true },
    { name: 'MobileApp', id: 'proj-002', exists: true, created: true },
    { name: 'Platform', id: 'proj-003', exists: true, created: true }
  ],
  created: ['MobileApp', 'Platform'],
  envUpdated: false
}

Smart Project Detection

Auto-detect Based on Work Item Patterns

The skill can intelligently suggest project organization based on your existing work items:

// Analyze existing work items
const workItems = await analyzeWorkItems(org, project);

// Detect patterns
const patterns = {
  byArea: workItems.groupBy('areaPath'),      // Area-based organization
  byTeam: workItems.groupBy('assignedTeam'),  // Team-based organization
  byType: workItems.groupBy('workItemType')   // Type-based organization
};

// Suggest strategy
if (patterns.byArea.length > 3) {
  console.log('💡 Detected area-based organization');
  console.log('   Suggested strategy: area-path-based');
} else if (patterns.byTeam.length > 2) {
  console.log('💡 Detected team-based organization');
  console.log('   Suggested strategy: team-based or project-per-team');
}

Project Creation API

Azure DevOps REST API (v7.0):

Create Project

POST https://dev.azure.com/{org}/_apis/projects?api-version=7.0
Content-Type: application/json
Authorization: Basic {base64(":PAT")}

{
  "name": "MobileApp",
  "description": "Mobile application project",
  "capabilities": {
    "versioncontrol": {
      "sourceControlType": "Git"
    },
    "processTemplate": {
      "templateTypeId": "adcc42ab-9882-485e-a3ed-7678f01f66bc"  # Agile
    }
  }
}

Response:
{
  "id": "proj-002",
  "name": "MobileApp",
  "state": "wellFormed"
}

Create Area Path

POST https://dev.azure.com/{org}/{project}/_apis/wit/classificationnodes/areas?api-version=7.0
Content-Type: application/json

{
  "name": "Frontend",
  "attributes": {
    "startDate": null,
    "finishDate": null
  }
}

Response:
{
  "id": 123,
  "name": "Frontend",
  "path": "\\MainProduct\\Area\\Frontend"
}

Create Team

POST https://dev.azure.com/{org}/_apis/projects/{projectId}/teams?api-version=7.0
Content-Type: application/json

{
  "name": "Alpha Team",
  "description": "Alpha development team"
}

Response:
{
  "id": "team-001",
  "name": "Alpha Team",
  "projectName": "MainProduct"
}

Configuration Examples

Example 1: Microservices Architecture (Project-per-team)

Before (.env):

AZURE_DEVOPS_ORG=mycompany
AZURE_DEVOPS_PAT=xxx

After validation:

AZURE_DEVOPS_ORG=mycompany
AZURE_DEVOPS_PAT=xxx
AZURE_DEVOPS_STRATEGY=project-per-team
AZURE_DEVOPS_PROJECTS=AuthService,UserService,PaymentService,NotificationService

Folder structure created:

.specweave/docs/internal/specs/
├── AuthService/
│   └── spec-001-oauth-implementation.md
├── UserService/
│   └── spec-001-user-management.md
├── PaymentService/
│   └── spec-001-stripe-integration.md
└── NotificationService/
    └── spec-001-email-notifications.md

Example 2: Monolithic Application (Area-path-based)

Before (.env):

AZURE_DEVOPS_PROJECT=ERP

After validation:

AZURE_DEVOPS_ORG=enterprise
AZURE_DEVOPS_PAT=xxx
AZURE_DEVOPS_STRATEGY=area-path-based
AZURE_DEVOPS_PROJECT=ERP
AZURE_DEVOPS_AREA_PATHS=Finance,HR,Inventory,Sales,Reports

Work item organization:

ERP
├── Finance/          → Finance module features
├── HR/               → HR module features
├── Inventory/        → Inventory management
├── Sales/            → Sales module features
└── Reports/          → Reporting features

Example 3: Platform Teams (Team-based)

Before (.env):

AZURE_DEVOPS_PROJECT=Platform

After validation:

AZURE_DEVOPS_ORG=techcorp
AZURE_DEVOPS_PAT=xxx
AZURE_DEVOPS_STRATEGY=team-based
AZURE_DEVOPS_PROJECT=Platform
AZURE_DEVOPS_TEAMS=Infrastructure,Security,Data,DevOps

Team assignments:

  • Infrastructure Team → Cloud resources, networking
  • Security Team → Auth, compliance, auditing
  • Data Team → Databases, analytics, ML
  • DevOps Team → CI/CD, monitoring, tooling

Error Handling

Error 1: Invalid Credentials

Symptom: API calls fail with 401 Unauthorized

Solution:

❌ Azure DevOps API authentication failed

Please check:
1. AZURE_DEVOPS_PAT is correct
2. Token has not expired
3. AZURE_DEVOPS_ORG is correct

Generate new token at:
https://dev.azure.com/{org}/_usersSettings/tokens

Error 2: Insufficient Permissions

Symptom: Cannot create projects (403 Forbidden)

Solution:

❌ Insufficient permissions to create projects

You need:
- Project Collection Administrator role (for creating projects)
- Project Administrator role (for area paths and teams)

Contact your Azure DevOps administrator to request permissions.

Error 3: Project Name Conflicts

Symptom: Project creation fails (name exists)

Solution:

❌ Project name "WebApp" already exists

Options:
1. Use a different project name
2. Select the existing project
3. Add a suffix (e.g., WebApp-v2)

Your choice [2]:

Error 4: Organization Limits

Symptom: Cannot create more projects

Solution:

❌ Organization project limit reached (250 projects)

Consider:
1. Using area-path-based strategy (one project)
2. Archiving old projects
3. Upgrading organization plan

Contact Azure DevOps support for limit increases.

Integration with SpecWeave Workflow

Automatic Validation

When using /sw-ado:sync, validation runs automatically:

/sw-ado:sync 0014

# Internally calls:
1. validateAzureDevOpsResources()
2. Fix missing projects/area paths/teams
3. Create folder structure for specs
4. Proceed with sync

Manual Validation

Run validation independently:

# Via skill
"Validate my Azure DevOps configuration"

# Via TypeScript
npx tsx src/utils/external-resource-validator.ts --provider=ado

# Via CLI (future)
specweave validate-ado

Best Practices

✅ Choose the right strategy:

  • Project-per-team: Best for autonomous teams, microservices
  • Area-path-based: Best for monolithic apps, shared codebase
  • Team-based: Best for small organizations, simple structure

✅ Use descriptive names:

# Good
AZURE_DEVOPS_PROJECTS=UserManagement,PaymentProcessing,NotificationEngine

# Bad
AZURE_DEVOPS_PROJECTS=Proj1,Proj2,Proj3

✅ Document project mapping (in README):

## Azure DevOps Projects

- UserManagement: User authentication and profile management
- PaymentProcessing: Payment gateway integrations
- NotificationEngine: Email, SMS, and push notifications

✅ Keep.env in version control (gitignored tokens):

# Commit project structure
AZURE_DEVOPS_STRATEGY=project-per-team
AZURE_DEVOPS_PROJECTS=WebApp,MobileApp,Platform

# Don't commit sensitive data
AZURE_DEVOPS_PAT=<redacted>

Folder Organization

Based on strategy, the skill creates appropriate folder structure:

Project-per-team Structure

.specweave/docs/internal/specs/
├── WebApp/
│   ├── spec-001-user-interface.md
│   └── spec-002-responsive-design.md
├── MobileApp/
│   ├── spec-001-ios-features.md
│   └── spec-002-android-features.md
└── Platform/
    ├── spec-001-api-design.md
    └── spec-002-database-schema.md

Area-path-based Structure

.specweave/docs/internal/specs/MainProduct/
├── Frontend/
│   └── spec-001-ui-components.md
├── Backend/
│   └── spec-001-api-endpoints.md
└── Mobile/
    └── spec-001-mobile-sync.md

Team-based Structure

.specweave/docs/internal/specs/MainProduct/
├── AlphaTeam/
│   └── spec-001-feature-a.md
├── BetaTeam/
│   └── spec-001-feature-b.md
└── GammaTeam/
    └── spec-001-feature-c.md

Key Differences from JIRA

Azure DevOps vs JIRA Resource Creation:

AspectAzure DevOpsJIRA
Project CreationAsynchronous (polling required)Synchronous (immediate)
Creation Time5-30 seconds<1 second
Status TrackingPoll state field ('wellFormed')No polling needed
API ComplexityHigher (async handling)Lower (sync operations)
Board CreationAuto-created with projectRequires separate API call
Process TemplatesRequired (Agile, Scrum, CMMI)Not applicable

Why Async Matters:

When you create an ADO project, the API returns immediately with state: 'new', but the project isn't usable yet. The validator polls every 1 second (max 30 attempts) until state: 'wellFormed':

// Create project (returns immediately)
const project = await createProject('MobileApp'); // state: 'new'

// Poll until ready
await waitForProjectCreation(project.id); // Polls until state: 'wellFormed'

// Now safe to use!
console.log('✅ Project ready for work items');

Impact on UX:

  • JIRA: "✅ Project created" (instant)
  • ADO: "📦 Creating project... ⏳ Waiting for Azure DevOps to complete setup... ✅ Project ready!" (5-30s)

Summary

This skill ensures your Azure DevOps configuration is always valid by:

  1. ✅ Validating projects - Check if projects exist, prompt to select or create
  2. ✅ Supporting multiple strategies - Project-per-team, area-path-based, team-based
  3. ✅ Auto-creating resources - Projects, area paths, teams (with async handling)
  4. ✅ Organizing specs - Create folder structure based on projects
  5. ✅ Clear error messages - Actionable guidance for all failures
  6. ✅ Handles ADO async behavior - Polls for project creation completion

Result: Zero manual Azure DevOps setup - system handles everything, including ADO's async project creation!


Skill Version: 1.1.0 Introduced: SpecWeave v0.17.0 Last Updated: 2025-11-11 Key Changes v1.1.0: Added implementation details, async project creation handling, JIRA comparison

平台分布

Claude Code

30.6%
按下载量换算42

Antigravity

24.86%
按下载量换算34

Cursor

15.74%
按下载量换算21

Gemini CLI

11.39%
按下载量换算15

windsurf

7.34%
按下载量换算10

OpenCode

3.49%
按下载量换算5

安全审计

暂无安全审计结果可展示。

权限和风险

调用外部服务

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills