Agent skill
ado-assign-testing
Distribute reviewed work items to team members for testing
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/ado-assign-testing
SKILL.md
Testing Assignment Skill
Assign reviewed ADO work items to team members for testing. Distributes items evenly while respecting the rule: never assign to the person who resolved or reviewed the item.
Arguments
--users "email1,email2,..."- Comma-separated list of team member emails to receive assignments
Process
1. Fetch Reviewed Items
curl -s http://localhost:3010/api/sprint/reviewed-items
Returns JSON with sprintName and items[] containing:
id,title,state,type,urlassignedTo- current assignee (skip if already set)resolvedBy- display name of resolverreviewedBy- display name of reviewer
2. Get Credentials from .env
Read C:\dev\ai\orch\.env for:
ADO_ORG- Azure DevOps organizationADO_PAT- Personal access tokenADO_PROJECT- Project name (e.g., BBNew)
3. Name-to-Email Mapping (Blue Billywig)
const nameToEmail = {
'Guido Hultink': '[email protected]',
'Martijn Bots': '[email protected]',
'Janroel Koppen': '[email protected]',
'Vincent van Laar': '[email protected]',
'Jan ten Haaf': '[email protected]',
'Max Mulder': '[email protected]',
'Simon Smulders': '[email protected]',
'Peter van der Spek': '[email protected]',
'Olaf Timme': '[email protected]'
};
4. Distribution Algorithm
Write a Node.js script in scratchpad:
// Track assignments per user
const userCounts = {};
users.forEach(u => userCounts[u] = 0);
const assignments = [];
const skipped = [];
items.forEach(item => {
// Skip items already assigned
if (item.assignedTo) {
skipped.push({id: item.id, reason: 'Already assigned to ' + item.assignedTo});
return;
}
const resolverEmail = nameToEmail[item.resolvedBy] || '';
const reviewerEmail = nameToEmail[item.reviewedBy] || '';
// Filter eligible users (not resolver, not reviewer)
const eligible = users.filter(u => u !== resolverEmail && u !== reviewerEmail);
if (eligible.length === 0) {
skipped.push({id: item.id, reason: 'No eligible users'});
return;
}
// Pick user with fewest assignments
eligible.sort((a, b) => userCounts[a] - userCounts[b]);
const assignee = eligible[0];
userCounts[assignee]++;
assignments.push({id: item.id, assignee});
});
5. Execute Assignments
ADO API to update AssignedTo:
async function assignItem(id, assignee) {
const url = `https://dev.azure.com/${ADO_ORG}/${PROJECT}/_apis/wit/workitems/${id}?api-version=7.1`;
const auth = Buffer.from(':' + ADO_PAT).toString('base64');
const body = [{ op: 'replace', path: '/fields/System.AssignedTo', value: assignee }];
const response = await fetch(url, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json-patch+json',
'Authorization': `Basic ${auth}`
},
body: JSON.stringify(body)
});
return response.ok;
}
6. Report Results
Output markdown table:
## Testing Assignment Complete
**Sprint:** [Sprint Name]
**Total Items:** N assigned
**Skipped:** N
**Users:** N
### Assignments by User
| User | Items | Work Item IDs |
|------|-------|---------------|
| [email protected] | 5 | #123, #456, ... |
Rules
- Never assign to resolver - The person in
resolvedByshould not test their own work - Never assign to reviewer - The person in
reviewedByalready reviewed it - Even distribution - Balance items across all eligible users
- Skip already assigned - Items with
assignedToset are skipped - Skip if impossible - If all selected users are ineligible, skip the item
Known Issues
reviewedByfield requiresADO_REVIEWED_BY_FIELD=Microsoft.VSTS.Common.ReviewedByin .env (NOT Custom.ReviewedBy)- Server must be restarted after .env changes
Example
/ado-assign-testing --users "[email protected],[email protected],[email protected]"
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?