Back to list
troykelly

worker-protocol

by troykelly

Opinionated GitHub-native development workflow with 28 skills for autonomous, issue-driven software development with Claude Code

5🍴 0📅 Jan 16, 2026

SKILL.md


name: worker-protocol description: Defines behavior protocol for spawned worker agents. Injected into worker prompts. Covers startup, progress reporting, exit conditions, and handover preparation. allowed-tools:

  • Bash
  • Read
  • Edit
  • Write
  • Grep
  • Glob
  • mcp__github__*
  • mcp__git__*
  • mcp__memory__* model: opus

Worker Protocol

Behavioral contract for spawned worker agents. Embedded in worker prompts by worker-dispatch.

Core principle: Single-purpose, self-documenting, graceful exit.

Worker Identity

PropertyExamplePurpose
worker_idworker-1701523200-123Unique identifier
issue123Assigned issue
attempt1Which attempt

Worktree Isolation (FIRST)

CRITICAL: Workers MUST operate in isolated worktrees. Never work in the main repository.

Verify Worktree Before ANY Work

# FIRST thing every worker does - verify isolation
verify_worktree() {
  # Check we're in a worktree, not main repo
  WORKTREE_ROOT=$(git worktree list --porcelain | grep "^worktree" | head -1 | cut -d' ' -f2)
  CURRENT_DIR=$(pwd)

  if [ "$WORKTREE_ROOT" = "$CURRENT_DIR" ] && git worktree list | grep -q "$(pwd).*\["; then
    echo "✓ In isolated worktree: $(pwd)"
  else
    echo "ERROR: Not in an isolated worktree!"
    echo "Current: $(pwd)"
    echo "Worktrees: $(git worktree list)"
    exit 1
  fi

  # Verify on feature branch, not main
  BRANCH=$(git branch --show-current)
  if [[ "$BRANCH" == "main" || "$BRANCH" == "master" ]]; then
    echo "ERROR: On $BRANCH branch - must be on feature branch!"
    exit 1
  fi

  echo "✓ On branch: $BRANCH"
}

If NOT in a worktree: STOP. Post error to issue. Exit immediately.

Workers must NEVER:

  • Work directly in the main repository
  • Create branches in main repo
  • Modify files that other workers might touch

Startup Checklist

Workers MUST execute this checklist before starting work:

  • Verify worktree isolation (see above - MUST be first)
  • Read assigned issue completely
  • Check issue comments for context/history
  • Verify on correct feature branch (git branch --show-current)
  • Check worktree is clean (git status)
  • Run existing tests to verify baseline (pnpm test or equivalent)
  • Post startup comment to issue

Startup comment template:

**Worker Started**

| Property | Value |
|----------|-------|
| Worker ID | `[WORKER_ID]` |
| Attempt | [N] |
| Branch | `[BRANCH]` |

**Understanding:** [1-2 sentence summary of what issue requires]

**Approach:** [Brief planned approach]

---
*Orchestration: [ORCHESTRATION_ID]*

Progress Reporting

Post to issue on: start, milestone, blocker, completion

**Status:** [Implementing|Testing|Blocked|Complete] | Turns: [N]/100
- [x] Completed item
- [ ] Current item

Exit Conditions

Exit when ANY occurs. Return structured JSON and post appropriate comment.

1. COMPLETED (Success)

**Worker Complete** ✅

**PR Created:** #[PR_NUMBER]
**Issue:** #[ISSUE]
**Branch:** `[BRANCH]`

**Summary:** [1-2 sentences describing what was implemented]

**Tests:** [N] passing | Coverage: [X]%

---
*Worker: [WORKER_ID] | Turns: [N]/100*

Return: {"status": "COMPLETED", "pr": [PR_NUMBER], "summary": "..."}

2. BLOCKED (External Dependency)

Only after exhausting all options:

**Worker Blocked** 🚫

**Reason:** [Clear description of blocker]

**What I tried:**
1. [Approach 1] - [Why it didn't work]
2. [Approach 2] - [Why it didn't work]

**Required to unblock:**
- [ ] [Specific action needed from human/external]

**Cannot proceed because:** [Why this is a true blocker, not just hard]

---
*Worker: [WORKER_ID] | Attempt: [N]*

Return: {"status": "BLOCKED", "pr": null, "summary": "Blocked: [reason]"}

3. HANDOVER (Turn Limit)

At 85-90 turns, prepare handover:

**Handover Required** 🔄

**Turns Used:** [N]/100
**Reason:** Approaching turn limit

Handover context posted below. Replacement worker will continue.

---
*Worker: [WORKER_ID]*

Then post full handover with <!-- HANDOVER:START --> markers per worker-handover skill.

Return: {"status": "HANDOVER", "pr": null, "summary": "Handover at [N] turns"}

4. FAILED (Needs Research)

When implementation fails after good-faith effort:

**Worker Failed - Research Needed** 🔬

**Failure:** [What failed]
**Attempt:** [N]

**What I tried:**
1. [Approach 1] - [Result]
2. [Approach 2] - [Result]

**Error:**

[Error output]


**Hypothesis:** [What might be wrong]

**Research needed:**
- [ ] [Specific question to research]

---
*Worker: [WORKER_ID] | Triggering research cycle*

Return: {"status": "FAILED", "pr": null, "summary": "Failed: [reason]"}

Review Gate (MANDATORY)

Before creating ANY PR:

  1. Complete comprehensive-review (7 criteria)
  2. Post review artifact to issue: <!-- REVIEW:START --> ... <!-- REVIEW:END -->
  3. Address ALL findings (Unaddressed: 0)
  4. Status: COMPLETE

PreToolUse hook BLOCKS gh pr create without valid review artifact.

Security-Sensitive Files

If modifying: **/auth/**, **/api/**, **/*password*, **/*token*, **/*secret*

→ Complete security-review and include in artifact.

Behavioral Rules

DO:

  • Work ONLY on assigned issue
  • TDD: tests first
  • Commit frequently with descriptive messages
  • Post progress to issue
  • Complete review before PR
  • Handover at 90+ turns

DO NOT:

  • Start other issues
  • Modify unrelated code
  • Skip tests
  • Create PR without review artifact
  • Continue past 100 turns

Commit Format

[type]: [description] (#[ISSUE])

Worker: [WORKER_ID]

Types: feat, fix, test, refactor, docs

PR Creation

Prerequisite: Review artifact in issue comments with status COMPLETE.

# Verify review exists
gh api "/repos/$OWNER/$REPO/issues/$ISSUE/comments" \
  --jq '[.[] | select(.body | contains("<!-- REVIEW:START -->"))] | length'

PR body:

## Summary
[1-2 sentences]

Closes #[ISSUE]

## Changes
- [Change 1]
- [Change 2]

## Review
Review artifact: See issue #[ISSUE]

---
Worker: `[WORKER_ID]`

Turn Awareness

TurnsAction
0-80Normal work
80-90Monitor, prepare handover if needed
90+Finalize and handover

Handover Trigger

At 90+ turns or when context valuable for next attempt:

  1. Post handover to issue with <!-- HANDOVER:START --> markers
  2. Commit all work
  3. Exit with {"status": "HANDOVER", ...}

See worker-handover for full format.

Integration

Workers MUST follow these skills:

SkillPurpose
issue-driven-developmentCore workflow
strict-typingType requirements (no any)
ipv6-firstNetwork requirements
tdd-full-coverageTesting approach
clean-commitsCommit standards
worker-handoverHandover format
comprehensive-reviewCode review (MANDATORY before PR)
apply-all-findingsAddress all review findings
security-reviewFor security-sensitive files
deferred-findingFor tracking deferred findings
review-gatePR creation gate

Enforced by: PreToolUse hook on gh pr create, Stop hook for review verification

Score

Total Score

65/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon