work-item-workflow
Skill50 starsChanged 16 days agoMITView on GitHub
Work item workflow for implementation. Use when starting work on a GitHub issue or Azure DevOps work item to verify assignee, dependencies, priority, and capacity. Do not use for creating new work items (use work-item-creation), for suggesting the next task (use next-task), or when the work source is only tasks.md without an issue/work item.
We split this skill into the rules it gives an agent
23 rules. About 0 are common, 18 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈18
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
tasks.md only: if no issue or work item ID is reachable from the current context.
- Distinctive: line 15
When in doubt between the two, choose board mode and read the work item.
- Very specific: line 19
Identify platform: Read .memory/board-config.md or detect from remote (git config --get remote.origin.url)
- Distinctive: line 37
When the work item has no assignee, do not skip this step.
- Very specific: line 39
GitHub: Call github/issue_write with method: "update", the issue number, and assignees: ["<current-user-login>"] (the login obtained in …
- Very specific: line 40
Azure DevOps: Call ado/wit_update_work_item to set the System.AssignedTo field to the current user.
- Distinctive: line 42
If the assignment call fails (permission error, user lookup empty, API error), STOP and report the failure rather than silently proceeding …
- Very specific: line 49
GitHub: Add label status:in-progress
- Distinctive: line 51
Check the parent User Story:
- Distinctive: line 52
If the parent is not yet in the active state, update it as well
- Distinctive: line 58
GitHub: Look for "Depends on: #NNN" in the body
- Distinctive: line 59
Azure DevOps: Look for links of type "Predecessor"
- Distinctive: line 73
Search for available tasks (no assignee, same feature)
- Distinctive: line 74
If there are tasks with higher priority available:
- Distinctive: line 88
Search for in-progress tasks assigned to the current user
- Distinctive: line 89
If the user already has 3 or more tasks in progress:
- Distinctive: line 102
Read tasks.md for the task list and execution plan
- Distinctive: line 111
When synchronizing with the board, the agent should:
- Distinctive: line 123
Add labels and incorporate into the plan
- Distinctive: line 131
When synchronizing with the board, check and propose cascade closures:
- Distinctive: line 141
Always ask before closing (do not close automatically)
- Distinctive: line 149
Use sub-issues for parent-child hierarchy
- Very specific: line 155
Dependencies: use ado/wit_work_items_link with link type Predecessor/Successor
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Work Item Workflow
Work Source Detection
Classify the work source before any other action. Resolve in this priority order:
- GitHub Issue or Azure DevOps Work Item if a numeric ID is referenced anywhere in the user's message, the recent conversation, or the tasks.md being implemented (e.g., "implement issue #42", "#15", "work item 1234", "task 5678", or a tasks.md row that links to
#1690). Any such reference activates board mode for the entire implementation, even if the user phrases the request as "implement the Terraform task" or "continue the work". - tasks.md only if no issue or work item ID is reachable from the current context. Skip this skill.
When in doubt between the two, choose board mode and read the work item. Reading is read-only and cheap; silently skipping board updates is the failure this skill exists to prevent.
Reading the Work Item
- Identify platform: Read
.memory/board-config.mdor detect from remote (git config --get remote.origin.url) - Get current user:
- GitHub:
gh api user --jq '.login' - Azure DevOps:
az account show --query user.name -o tsvor ask the user
- GitHub:
- Read work item via MCP: Extract title, description, assignee, acceptance criteria, state, and tags/labels
Required Checks
Execute in order. If any check blocks, STOP and inform the user.
1. Assignee check
| Situation | Action |
| Assigned to another dev | STOP: "Work item already assigned to [name]." |
| No assignee | Assign current user (see below), then inform: "Assigned this task to you." |
| Assigned to the current user | Proceed |
When the work item has no assignee, do not skip this step. Execute the assignment before moving to the State update check:
- GitHub: Call
github/issue_writewithmethod: "update", the issue number, andassignees: ["<current-user-login>"](the login obtained in step "Get current user"). - Azure DevOps: Call
ado/wit_update_work_itemto set theSystem.AssignedTofield to the current user.
If the assignment call fails (permission error, user lookup empty, API error), STOP and report the failure rather than silently proceeding to later checks. The downstream flow (state update, branch creation, PR linkage) assumes the work item is owned by the current user.
2. State update
State transitions are mandatory, not advisory. If the board MCP is unreachable, surface a blocking error rather than skipping the transition.
- Move the task to the active state:
- GitHub: Add label
status:in-progress - Azure DevOps: Change State per process template (invoke
board-configskill for details; typical:NewtoActive)
- GitHub: Add label
- Check the parent User Story:
- If the parent is not yet in the active state, update it as well
- Inform: "User Story #[ID] moved to In Progress."
- Confirm the transition succeeded by re-reading the work item and verifying the new state. If the read shows the old state, retry once and then surface the failure to the user before any code is written.
3. Dependency check
- GitHub: Look for "Depends on: #NNN" in the body
- Azure DevOps: Look for links of type "Predecessor"
- For each unfinished dependency (open issue / state != Done|Closed):
This task has unfinished dependencies: - #[ID]: [title] (state: [state]) [V] View dependency details [O] Work on another task [I] Ignore and continue anyway (not recommended)
4. Priority check
- Search for available tasks (no assignee, same feature)
- If there are tasks with higher priority available:
There are higher priority tasks available: - #[ID]: [title] (P1) Requested task: #[ID] (P2) [P] Pick the higher priority task (recommended) [C] Continue with the requested task
5. Capacity check
- Search for in-progress tasks assigned to the current user
- If the user already has 3 or more tasks in progress:
You already have [N] tasks in progress: - #[ID]: [title] [F] Finish a task before picking up another (recommended) [C] Continue and pick up another task
tasks.md (when no issue/work item is mentioned)
- Identify the current feature by checking the
docs/features/directory. If the user specified a feature, use it. - Read tasks.md for the task list and execution plan
- Proceed with the implementation flow
Main Execution Rule
Developers should work on only one task at a time. Work happens at the task level, not at the feature, user story, or epic level directly.
Board Synchronization
When synchronizing with the board, the agent should:
- List ALL issues/work items in the repository/project
- Identify feature-related issues using multiple strategies:
- By label/tag:
feature:<name>,type:user-story,type:task - By title: contains the feature name or keywords
- By content: mentions files or concepts from the plan
- By label/tag:
- Classify found issues:
- With copilot-generated label: Issues created by the agent (managed)
- Without labels, related: Manual issues that appear related
- Without labels, unrelated: Issues from other features/contexts
- For unlabeled issues that appear related, ask the user:
- Add labels and incorporate into the plan
- Ignore (not from this feature)
- Mark as duplicate of a planned task
- Map current state: User Stories and Tasks (open, in progress, closed)
- Present summary to user with comparison between board and plan
Cascade Closure
When synchronizing with the board, check and propose cascade closures:
| Condition | Action |
| All tasks of a User Story closed | Propose closing the User Story |
| All User Stories of a Feature closed | Propose closing the Feature |
| All Features of an Epic closed | Propose closing the Epic |
Closure Rules
- Always ask before closing (do not close automatically)
- Show summary of what will be closed
- Validate that there are no orphan tasks/US before closing
Work Item Hierarchy
GitHub
- Use sub-issues for parent-child hierarchy
- For dependencies between tasks, use the "Dependencies" section in the body:
Depends on: #123
Azure DevOps
- Parent-Child: use
ado/wit_add_child_work_items - Dependencies: use
ado/wit_work_items_linkwith link typePredecessor/Successor
In this repository26 other files it gives its agents.
- .github/copilot-instructions.mdCopilot instructions
- .github/plugins/devsquad/hooks/templates/.github/copilot-instructions.mdCopilot instructions
- adr-workflowSkill
- board-configSkill
- complexity-analysisSkill
- debugging-recoverySkill
- deep-clarificationSkill
- diagram-designSkill
- documentation-styleSkill
- domain-glossarySkill
- engineering-practicesSkill
- git-branchSkill
- git-commitSkill
- harness-learningsSkill
- init-configSkill
- init-docsSkill
- init-scaffoldSkill
- lsp-setupSkill
- next-taskSkill
- pull-requestSkill
- quality-gateSkill
- reasoningSkill
- security-reviewSkill
- test-disciplineSkill
- triage-workflowSkill
- work-item-creationSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

