Use when applying or checking GitHub labels for agent assignment and status tracking. GitHub label taxonomy reference for the Chief of Staff Agent. Trigger with `/ecos-label-taxonomy`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/emasoft-chief-of-staff:ecos-label-taxonomyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides the label taxonomy relevant to the Chief of Staff Agent (ECOS) role. Each role plugin has its own label-taxonomy skill covering the labels that role manages.
This skill provides the label taxonomy relevant to the Chief of Staff Agent (ECOS) role. Each role plugin has its own label-taxonomy skill covering the labels that role manages.
gh) installed and authenticated.emasoft/team-registry.jsonCopy this checklist and track your progress:
gh issue view <number>gh issue edit --add-label.emasoft/team-registry.json if agent assignment changed| Output Type | Description | Example |
|---|---|---|
| Label Applied | Label successfully added to issue | assign:eoa-svgbbox-orchestrator |
| Label Removed | Old label removed before new one | status:pending removed |
| Status Updated | Issue status changed via label | status:in-progress applied |
| Verification | Confirmation of label state | Labels: assign:implementer-1, status:todo, priority:high |
| Registry Synced | Team registry updated to match labels | current_issues: [42, 43] in team-registry.json |
| Error | Cause | Solution |
|---|---|---|
| Label not found | Label doesn't exist in repo | Create label first with gh label create |
| Permission denied | Insufficient repo access | Verify GitHub token has repo scope |
| Duplicate assign labels | Multiple assign:* labels on issue | Remove old assign label before adding new |
| Registry out of sync | Labels don't match team-registry.json | Run sync check script to reconcile |
| gh CLI not authenticated | GitHub token expired or missing | Run gh auth login |
| Issue not found | Invalid issue number | Verify issue exists with gh issue list |
Scenario: ECOS spawns a new agent "implementer-1" and assigns it to issue #42.
# Step 1: Add assignment label
gh issue edit 42 --add-label "assign:implementer-1"
# Step 2: Update status from backlog to ready
gh issue edit 42 --remove-label "status:backlog" --add-label "status:todo"
# Step 3: Update team registry
jq '.agents["implementer-1"].current_issues += [42]' .emasoft/team-registry.json > temp.json && mv temp.json .emasoft/team-registry.json
# Step 4: Verify
gh issue view 42 --json labels --jq '.labels[].name'
# Output: assign:implementer-1, status:todo
Scenario: Agent "implementer-1" is being terminated. Clear all its assignments.
# Step 1: Find all issues assigned to agent
AGENT_ISSUES=$(gh issue list --label "assign:implementer-1" --json number --jq '.[].number')
# Step 2: Remove assignment and update status
for ISSUE in $AGENT_ISSUES; do
gh issue edit $ISSUE --remove-label "assign:implementer-1" --add-label "status:backlog"
echo "Cleared assignment from issue #$ISSUE"
done
# Step 3: Update team registry
jq 'del(.agents["implementer-1"])' .emasoft/team-registry.json > temp.json && mv temp.json .emasoft/team-registry.json
# Step 4: Verify no issues remain assigned
gh issue list --label "assign:implementer-1"
# Output: (empty)
Scenario: Agent reports it's blocked on issue #43. ECOS updates status and notifies.
# Step 1: Update status to blocked
gh issue edit 43 --remove-label "status:in-progress" --add-label "status:blocked"
# Step 2: Add comment explaining blocker
gh issue comment 43 --body "Agent blocked: waiting for external API credentials. Assigned to human for resolution."
# Step 3: Escalate to human if needed
gh issue edit 43 --add-label "assign:human"
# Step 4: Verify
gh issue view 43 --json labels --jq '.labels[].name'
# Output: assign:human, status:blocked, priority:high
assign:*)ECOS coordinates with EOA on agent assignments.
| Label | Description | When ECOS Is Involved |
|---|---|---|
assign:<agent-name> | Specific agent | When spawning/managing agents |
assign:orchestrator | EOA handling | When escalating to EOA |
assign:human | Human needed | When human intervention required |
ECOS Assignment Responsibilities:
The full workflow uses these 8 status columns:
| # | Column Code | Display Name | Label | Description |
|---|---|---|---|---|
| 1 | backlog | Backlog | status:backlog | Entry point for new tasks |
| 2 | todo | Todo | status:todo | Ready to start |
| 3 | in-progress | In Progress | status:in-progress | Active work |
| 4 | ai-review | AI Review | status:ai-review | Integrator agent reviews ALL tasks |
| 5 | human-review | Human Review | status:human-review | User reviews BIG tasks only (via EAMA) |
| 6 | merge-release | Merge/Release | status:merge-release | Ready to merge |
| 7 | done | Done | status:done | Completed |
| 8 | blocked | Blocked | status:blocked | Blocked at any stage |
Task Routing Rules:
| Label | When ECOS Sets It |
|---|---|
status:blocked | When pausing work (resource constraints) or agent reports blocker |
status:todo | When blocker resolved and task is ready to resume |
priority:*)ECOS uses priority for resource allocation:
priority:critical - Ensure agent assigned immediatelypriority:high - Prioritize in staffing decisionspriority:normal - Standard allocationpriority:low - Can wait for resourcesstatus:*)ECOS monitors all status changes:
status:blocked - May need to reassign or escalatestatus:in-progress - Track for timeout/health monitoringstatus:ai-review - Route to EIA if not alreadystatus:human-review - Escalated for user review via EAMAstatus:merge-release - Ready to merge/release# Assign new agent to issue
gh issue edit $ISSUE_NUMBER --add-label "assign:$NEW_AGENT_NAME"
gh issue edit $ISSUE_NUMBER --remove-label "status:backlog" --add-label "status:todo"
# Clear assignment from all agent's issues
AGENT_ISSUES=$(gh issue list --label "assign:$AGENT_NAME" --json number --jq '.[].number')
for ISSUE in $AGENT_ISSUES; do
gh issue edit $ISSUE --remove-label "assign:$AGENT_NAME" --add-label "status:backlog"
done
# Mark issue blocked
gh issue edit $ISSUE_NUMBER --remove-label "status:in-progress" --add-label "status:blocked"
# Reassign to human
gh issue edit $ISSUE_NUMBER --remove-label "assign:$AGENT_NAME" --add-label "assign:human"
ECOS maintains the team registry at .emasoft/team-registry.json. Labels should be synchronized:
{
"agents": {
"implementer-1": {
"session_name": "code-impl-01",
"status": "active",
"current_issues": [42, 43] // Should match assign:implementer-1 labels
}
}
}
# Find issues assigned to agent
LABELED=$(gh issue list --label "assign:implementer-1" --json number --jq '.[].number' | sort)
# Compare with registry
REGISTERED=$(jq -r '.agents["implementer-1"].current_issues | sort | .[]' .emasoft/team-registry.json)
# Should match
Step-by-step runbooks for executing individual label management operations. Use these when performing a specific label-related operation.
.emasoft/team-registry.json stays synchronized with GitHub issue assignment labels by detecting and resolving discrepancies| Action | Labels Involved |
|---|---|
| Spawn agent | Add assign:<agent>, update status:todo |
| Terminate agent | Remove assign:<agent>, set status:backlog |
| Agent blocked | Update to status:blocked |
| Resolve blocker | Update to status:todo or status:in-progress |
| Escalate to human | Add assign:human |
| Block work | Add status:blocked |
type:* - Set at issue creationeffort:* - Set during triage by EOAreview:* - Managed by EIApriority:* - Set by EOA or EAMA (ECOS can suggest changes)npx claudepluginhub emasoft/emasoft-plugins --plugin emasoft-chief-of-staffApplies GitHub label taxonomy for AI Maestro orchestration. Enforces cardinality rules for categories like status, priority, and type via CLI commands.
Triages GitHub issues assigned to you: fetches via GH CLI with cc-triage-scope label, builds dependency graph, categorizes resolved issues, and applies labels (cc-create-issue, cc-exec-issue, cc-update-issue).
Triage GitHub issues through a configurable label-based state machine. Moves issues between workflow states like triage_pending, awaiting_info, ready_for_agent, and ready_for_human.