agentleFS
MicrosoftKnown publishermicrosoft/devsquad-copilot/.github/plugins/devsquad/skills/work-item-workflow/SKILL.md

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
  1. Distinctive:

    tasks.md only: if no issue or work item ID is reachable from the current context.

    line 13
  2. Distinctive:

    When in doubt between the two, choose board mode and read the work item.

    line 15
  3. Very specific:

    Identify platform: Read .memory/board-config.md or detect from remote (git config --get remote.origin.url)

    line 19
  4. Distinctive:

    When the work item has no assignee, do not skip this step.

    line 37
  5. Very specific:

    GitHub: Call github/issue_write with method: "update", the issue number, and assignees: ["<current-user-login>"] (the login obtained in …

    line 39
  6. Very specific:

    Azure DevOps: Call ado/wit_update_work_item to set the System.AssignedTo field to the current user.

    line 40
  7. Distinctive:

    If the assignment call fails (permission error, user lookup empty, API error), STOP and report the failure rather than silently proceeding …

    line 42
  8. Very specific:

    GitHub: Add label status:in-progress

    line 49
  9. Distinctive:

    Check the parent User Story:

    line 51
  10. Distinctive:

    If the parent is not yet in the active state, update it as well

    line 52
  11. Distinctive:

    GitHub: Look for "Depends on: #NNN" in the body

    line 58
  12. Distinctive:

    Azure DevOps: Look for links of type "Predecessor"

    line 59
  13. Distinctive:

    Search for available tasks (no assignee, same feature)

    line 73
  14. Distinctive:

    If there are tasks with higher priority available:

    line 74
  15. Distinctive:

    Search for in-progress tasks assigned to the current user

    line 88
  16. Distinctive:

    If the user already has 3 or more tasks in progress:

    line 89
  17. Distinctive:

    Read tasks.md for the task list and execution plan

    line 102
  18. Distinctive:

    When synchronizing with the board, the agent should:

    line 111
  19. Distinctive:

    Add labels and incorporate into the plan

    line 123
  20. Distinctive:

    When synchronizing with the board, check and propose cascade closures:

    line 131
  21. Distinctive:

    Always ask before closing (do not close automatically)

    line 141
  22. Distinctive:

    Use sub-issues for parent-child hierarchy

    line 149
  23. Very specific:

    Dependencies: use ado/wit_work_items_link with link type Predecessor/Successor

    line 155

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Work Item Workflow

Work Source Detection

Classify the work source before any other action. Resolve in this priority order:

  1. 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".
  2. 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

  1. Identify platform: Read .memory/board-config.md or detect from remote (git config --get remote.origin.url)
  2. Get current user:
    • GitHub: gh api user --jq '.login'
    • Azure DevOps: az account show --query user.name -o tsv or ask the user
  3. 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

SituationAction
Assigned to another devSTOP: "Work item already assigned to [name]."
No assigneeAssign current user (see below), then inform: "Assigned this task to you."
Assigned to the current userProceed

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_write with method: "update", the issue number, and assignees: ["<current-user-login>"] (the login obtained in step "Get current user").
  • Azure DevOps: Call ado/wit_update_work_item to set the System.AssignedTo field 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-config skill for details; typical: New to Active)
  • 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)

  1. Identify the current feature by checking the docs/features/ directory. If the user specified a feature, use it.
  2. Read tasks.md for the task list and execution plan
  3. 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:

  1. List ALL issues/work items in the repository/project
  2. 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
  3. 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
  4. 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
  5. Map current state: User Stories and Tasks (open, in progress, closed)
  6. Present summary to user with comparison between board and plan

Cascade Closure

When synchronizing with the board, check and propose cascade closures:

ConditionAction
All tasks of a User Story closedPropose closing the User Story
All User Stories of a Feature closedPropose closing the Feature
All Features of an Epic closedPropose 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_link with link type Predecessor/Successor

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.