From 87f88d356b342c401e72f1618373eeb374f8a220 Mon Sep 17 00:00:00 2001 From: Khaliq Date: Wed, 10 Jun 2026 17:35:56 +0200 Subject: [PATCH 1/6] feat(skill): add agentworkforce-repo-map skill Canonical map of all AgentWorkforce GitHub org repos, their roles, responsibilities, key issue signals, routing rules, and multi-repo patterns. Referenced by the repo-router persona and any other persona that needs to route work to the right repo. Co-Authored-By: Claude Sonnet 4.6 --- skills/agentworkforce-repo-map/SKILL.md | 94 +++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 skills/agentworkforce-repo-map/SKILL.md diff --git a/skills/agentworkforce-repo-map/SKILL.md b/skills/agentworkforce-repo-map/SKILL.md new file mode 100644 index 0000000..9fe38c0 --- /dev/null +++ b/skills/agentworkforce-repo-map/SKILL.md @@ -0,0 +1,94 @@ +--- +name: agentworkforce-repo-map +description: Canonical map of all AgentWorkforce GitHub org repos, their roles, responsibilities, and key signals. Read this before routing any issue or deciding which repo to open a PR in. Use as a seed index — always verify against the live org with `gh repo list AgentWorkforce` since new repos are created frequently. +--- + +# AgentWorkforce Repo Map + +This skill is the canonical reference for which repo owns what in the AgentWorkforce GitHub organization. Read it before routing an issue, spawning an agent, or opening a PR. + +## How to verify against the live org + +```bash +# List all repos with descriptions +gh repo list AgentWorkforce --limit 100 --json name,description + +# Read a specific repo's README +gh api repos/AgentWorkforce/{repo}/contents/README.md --jq '.content' | base64 -d + +# Read package.json +gh api repos/AgentWorkforce/{repo}/contents/package.json --jq '.content' | base64 -d + +# List top-level directory structure +gh api repos/AgentWorkforce/{repo}/contents --jq '[.[] | {name, type}]' +``` + +## Core repos + +### `pear` +**Role**: Desktop application — the primary user-facing product. +**Stack**: Electron, TypeScript, React, relayfile mount client. +**Owns**: Claude Code session UI, renderer process, PTY I/O, relayfile mount integration, integration event rendering (Slack/Linear/GitHub panels), Pear app settings, local persona installation. +**Key signals in issues**: "pear", "desktop", "renderer", "mount", "PTY", "session", "UI", "Electron", "integration panel", "local", "writeback path", "integration-remote-paths". + +### `cloud` +**Role**: Backend — Cloudflare Workers API and integration orchestration. +**Stack**: Cloudflare Workers, TypeScript, D1, KV, Durable Objects, Nango, Hono. +**Owns**: REST API, Slack/Linear/GitHub webhook consumers, Nango connection management, picker options, worker dispatch, relay worker identity, conversation sandbox, proactive agent triggers. +**Key signals in issues**: "cloud", "API", "worker", "Slack", "Linear", "webhook", "Nango", "cf-", "KV", "D1", "Durable Object", "picker", "integration event", "cloud worker". + +### `agents` +**Role**: Autonomous agent harnesses deployed as persistent workers. +**Stack**: TypeScript, agent-relay SDK, relayfile. +**Owns**: pr-reviewer agent, merge-on-green logic, agent harness framework, agents deployed as long-running relay workers. +**Key signals in issues**: "pr-reviewer", "merge-on-green", "agent harness", "autonomous agent", "review bot", "persistent agent", "relay worker". + +### `workforce` +**Role**: Tooling for building, installing, and running agent personas. +**Stack**: TypeScript, Node.js monorepo (pnpm workspaces). +**Owns**: persona packages (`@agentworkforce/persona-*`), CLI (`agentworkforce install`), runtime, deploy tooling, workload router, persona-kit, harness-kit. +**Key signals in issues**: "persona", "CLI", "runtime", "deploy", "workforce", "install", "agentworkforce", "persona-kit", "harness", "workload router". + +### `relay` +**Role**: The core relay product — server, broker, SDK, protocol. +**Stack**: Go (server), TypeScript (SDK). +**Owns**: relay server, broker, `@agent-relay/sdk`, relay protocol, agent registration, message routing, workspace management. +**Key signals in issues**: "relay", "broker", "SDK", "@agent-relay/sdk", "relay server", "subscription", "workspace", "agent registration", "message routing". + +### `relayfile-adapters` +**Role**: TypeScript packages that sync external providers into the relayfile mount. +**Stack**: TypeScript, Cloudflare Workers. +**Owns**: provider adapters (Linear, Slack, GitHub, Notion), writeback contract implementation, mount sync, event emission, adapter publish/deploy pipeline. +**Key signals in issues**: "relayfile", "adapter", "sync", "provider", "writeback protocol", "mount sync", "event emission", "relayfile-adapter", "@relayfile/". + +### `skills` +**Role**: Skill packs consumed by agent personas at runtime. +**Stack**: Markdown (SKILL.md files), PRPM package manager. +**Owns**: `@agent-relay/` and `@agent-workforce/` skill namespaces, skill authoring tooling, skill discovery. +**Key signals in issues**: "skill", "SKILL.md", "skill pack", "@agent-relay/skill", "@agent-workforce/skill", "skills repo". + +## Routing rules + +| Issue surface | Primary repo | Secondary repo (if applicable) | +|---|---|---| +| Desktop UI, session rendering, local mount | `pear` | — | +| Slack/Linear webhook, API endpoint, Nango | `cloud` | — | +| PR reviewer, merge automation, agent harness | `agents` | — | +| Persona authoring, CLI, runtime deploy | `workforce` | — | +| Relay protocol, broker, SDK | `relay` | — | +| Writeback contract, provider sync | `relayfile-adapters` | — | +| Skill content | `skills` | — | +| Slack feature end-to-end | `cloud` + `pear` | cloud = webhook/dispatch, pear = mount/render | +| New integration (e.g. Jira) | `relayfile-adapters` + `cloud` | adapter = sync, cloud = Nango connection | +| New persona | `workforce` | — | + +## Multi-repo issues + +When an issue spans multiple repos, spawn one implementer per repo in parallel. Common patterns: +- **New Slack integration feature**: `cloud` (webhook + API) + `pear` (mount rendering) +- **New external provider**: `relayfile-adapters` (adapter) + `cloud` (Nango connection setup) +- **Agent behavior + UI**: `agents` (harness logic) + `pear` (rendering the agent's output) + +## Disambiguation + +If an issue is ambiguous, use `gh api repos/AgentWorkforce/{repo}/contents` to check directory structure of candidate repos before deciding. For example: if an issue mentions "writeback" it could be `pear` (path construction) or `relayfile-adapters` (sync protocol) — check which layer the bug is in. From 722705120acaddfbd56e51026549ddc22895e0ea Mon Sep 17 00:00:00 2001 From: "agent-relay-code[bot]" Date: Wed, 10 Jun 2026 15:37:15 +0000 Subject: [PATCH 2/6] chore: apply pr-reviewer fixes for #74 --- memory/workspace/.relay/state.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory/workspace/.relay/state.json b/memory/workspace/.relay/state.json index 39ae268..d655eb6 100644 --- a/memory/workspace/.relay/state.json +++ b/memory/workspace/.relay/state.json @@ -1 +1 @@ -{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-09T10:05:25.332197247Z","lastSuccessfulReconcileAt":"2026-06-09T10:05:25.332197247Z","staleAfter":"2026-06-09T10:05:35.332197247Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":111},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"}} \ No newline at end of file +{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-10T15:37:10.908315317Z","lastSuccessfulReconcileAt":"2026-06-10T15:37:10.908315317Z","staleAfter":"2026-06-10T15:37:20.908315317Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":46},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"},"outbox":{"pending":0,"needsAttention":0,"failed":0,"acked":0}} \ No newline at end of file From 8891f759d49e508d32fed146bdec8f76fd1ae919 Mon Sep 17 00:00:00 2001 From: "agent-relay-code[bot]" Date: Wed, 10 Jun 2026 15:40:31 +0000 Subject: [PATCH 3/6] chore: apply pr-reviewer fixes for #74 --- memory/workspace/.relay/state.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory/workspace/.relay/state.json b/memory/workspace/.relay/state.json index d655eb6..dee727c 100644 --- a/memory/workspace/.relay/state.json +++ b/memory/workspace/.relay/state.json @@ -1 +1 @@ -{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-10T15:37:10.908315317Z","lastSuccessfulReconcileAt":"2026-06-10T15:37:10.908315317Z","staleAfter":"2026-06-10T15:37:20.908315317Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":46},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"},"outbox":{"pending":0,"needsAttention":0,"failed":0,"acked":0}} \ No newline at end of file +{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-10T15:40:29.726484769Z","lastSuccessfulReconcileAt":"2026-06-10T15:40:29.726484769Z","staleAfter":"2026-06-10T15:40:39.726484769Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":95},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"},"outbox":{"pending":0,"needsAttention":0,"failed":0,"acked":0}} \ No newline at end of file From 3e80c10481dfdfca11f93b7ac6cbf6d137df70bf Mon Sep 17 00:00:00 2001 From: "agent-relay-code[bot]" Date: Wed, 10 Jun 2026 15:53:52 +0000 Subject: [PATCH 4/6] chore: apply pr-reviewer fixes for #74 --- memory/workspace/.relay/state.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory/workspace/.relay/state.json b/memory/workspace/.relay/state.json index dee727c..878269c 100644 --- a/memory/workspace/.relay/state.json +++ b/memory/workspace/.relay/state.json @@ -1 +1 @@ -{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-10T15:40:29.726484769Z","lastSuccessfulReconcileAt":"2026-06-10T15:40:29.726484769Z","staleAfter":"2026-06-10T15:40:39.726484769Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":95},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"},"outbox":{"pending":0,"needsAttention":0,"failed":0,"acked":0}} \ No newline at end of file +{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-10T15:53:49.856256677Z","lastSuccessfulReconcileAt":"2026-06-10T15:53:49.856256677Z","staleAfter":"2026-06-10T15:53:59.856256677Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":56},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"},"outbox":{"pending":0,"needsAttention":0,"failed":0,"acked":0}} \ No newline at end of file From 72d167b7f283ca6aa8acfa4456944d35159f0cc6 Mon Sep 17 00:00:00 2001 From: "agent-relay-code[bot]" Date: Wed, 10 Jun 2026 16:03:41 +0000 Subject: [PATCH 5/6] chore: apply pr-reviewer fixes for #74 --- README.md | 1 + memory/workspace/.relay/state.json | 2 +- prpm.json | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3faf8df..14e12a6 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Package metadata lives in [prpm.json](prpm.json). The repo currently publishes ` | [workspace-layout](skills/workspace-layout/SKILL.md) | 1.0.1 | Navigate a relayfile mount via root and per-provider `LAYOUT.md` files plus `by-*` alias indexes instead of `find`/`grep -r`. | | [adding-swarm-patterns](skills/adding-swarm-patterns/SKILL.md) | 1.0.0 | Checklist for extending agent-relay with a new swarm pattern — TypeScript types, JSON schema, YAML template, and pattern/template docs. | | [creating-cloud-persona](skills/creating-cloud-persona/SKILL.md) | 1.0.4 | Create or update a Workforce cloud persona with `persona.json`, `agent.ts`, vendored examples, and production-correctness checks. | +| [agentworkforce-repo-map](skills/agentworkforce-repo-map/SKILL.md) | 1.0.0 | Route AgentWorkforce issues to the right owning repo using repo roles, key signals, and multi-repo routing rules. | | [openclaw-orchestrator](skills/openclaw-orchestrator/SKILL.md) | 1.0.0 | Run headless multi-agent orchestration sessions via Agent Relay — spawn teams across Claude/Codex/Gemini/Pi/Droid, create channels, and manage agent lifecycle. | ## Slash Commands diff --git a/memory/workspace/.relay/state.json b/memory/workspace/.relay/state.json index 878269c..a58adc3 100644 --- a/memory/workspace/.relay/state.json +++ b/memory/workspace/.relay/state.json @@ -1 +1 @@ -{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-10T15:53:49.856256677Z","lastSuccessfulReconcileAt":"2026-06-10T15:53:49.856256677Z","staleAfter":"2026-06-10T15:53:59.856256677Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":56},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"},"outbox":{"pending":0,"needsAttention":0,"failed":0,"acked":0}} \ No newline at end of file +{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-09T10:05:25.332197247Z","lastSuccessfulReconcileAt":"2026-06-09T10:05:25.332197247Z","staleAfter":"2026-06-09T10:05:35.332197247Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":111},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"}} diff --git a/prpm.json b/prpm.json index f0f4dbd..e4bea5a 100644 --- a/prpm.json +++ b/prpm.json @@ -356,6 +356,23 @@ "skills/creating-cloud-persona/references/workforce/packages/runtime/src/types.ts" ] }, + { + "name": "agentworkforce-repo-map", + "version": "1.0.0", + "description": "Use before routing an AgentWorkforce issue, spawning an agent, or opening a PR. Maps AgentWorkforce GitHub org repos to their roles, responsibilities, issue signals, and multi-repo routing rules, with live-org verification commands.", + "format": "claude", + "subtype": "skill", + "tags": [ + "agentworkforce", + "repo-routing", + "triage", + "github", + "skills" + ], + "files": [ + "skills/agentworkforce-repo-map/SKILL.md" + ] + }, { "name": "openclaw-orchestrator", "version": "1.0.0", From d2dbaf997c9ce094d65c2b5b65b2c24ca7ee40e6 Mon Sep 17 00:00:00 2001 From: "agent-relay-code[bot]" Date: Wed, 10 Jun 2026 16:11:28 +0000 Subject: [PATCH 6/6] chore: apply pr-reviewer fixes for #74 --- memory/workspace/.relay/state.json | 2 +- prpm.json | 2 +- skills/agentworkforce-repo-map/SKILL.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/memory/workspace/.relay/state.json b/memory/workspace/.relay/state.json index a58adc3..39ae268 100644 --- a/memory/workspace/.relay/state.json +++ b/memory/workspace/.relay/state.json @@ -1 +1 @@ -{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-09T10:05:25.332197247Z","lastSuccessfulReconcileAt":"2026-06-09T10:05:25.332197247Z","staleAfter":"2026-06-09T10:05:35.332197247Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":111},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"}} +{"workspaceId":"rw_7ccfea89","remoteRoot":"/memory/workspace","localRoot":"/home/daytona/workspace/memory/workspace","mode":"poll","syncMode":"mirror","intervalMs":5000,"lastReconcileAt":"2026-06-09T10:05:25.332197247Z","lastSuccessfulReconcileAt":"2026-06-09T10:05:25.332197247Z","staleAfter":"2026-06-09T10:05:35.332197247Z","status":"ready","states":{"stale":false,"offline":false,"hasConflicts":false,"hasPendingWriteback":false},"pendingWriteback":0,"pendingConflicts":0,"deniedPaths":0,"counters":{"snapshotDeleteBlocked":111},"circuit":{"open":false,"openedAt":"0001-01-01T00:00:00Z","windowMs":60000,"cooldownMs":30000,"threshold":5,"nextRetry":"0001-01-01T00:00:00Z"}} \ No newline at end of file diff --git a/prpm.json b/prpm.json index e4bea5a..1e4b9c6 100644 --- a/prpm.json +++ b/prpm.json @@ -359,7 +359,7 @@ { "name": "agentworkforce-repo-map", "version": "1.0.0", - "description": "Use before routing an AgentWorkforce issue, spawning an agent, or opening a PR. Maps AgentWorkforce GitHub org repos to their roles, responsibilities, issue signals, and multi-repo routing rules, with live-org verification commands.", + "description": "Use before routing an AgentWorkforce issue, spawning an agent, or opening a PR. Maps core AgentWorkforce GitHub repos to their roles, responsibilities, issue signals, and multi-repo routing rules, with live-org verification commands.", "format": "claude", "subtype": "skill", "tags": [ diff --git a/skills/agentworkforce-repo-map/SKILL.md b/skills/agentworkforce-repo-map/SKILL.md index 9fe38c0..208837c 100644 --- a/skills/agentworkforce-repo-map/SKILL.md +++ b/skills/agentworkforce-repo-map/SKILL.md @@ -1,11 +1,11 @@ --- name: agentworkforce-repo-map -description: Canonical map of all AgentWorkforce GitHub org repos, their roles, responsibilities, and key signals. Read this before routing any issue or deciding which repo to open a PR in. Use as a seed index — always verify against the live org with `gh repo list AgentWorkforce` since new repos are created frequently. +description: Core routing map for AgentWorkforce GitHub repos, their roles, responsibilities, and key signals. Read this before routing any issue or deciding which repo to open a PR in. Use as a seed index — always verify against the live org with `gh repo list AgentWorkforce` since new repos are created frequently. --- # AgentWorkforce Repo Map -This skill is the canonical reference for which repo owns what in the AgentWorkforce GitHub organization. Read it before routing an issue, spawning an agent, or opening a PR. +This skill is the core routing reference for which AgentWorkforce repo owns common product and platform surfaces. It is not an exhaustive inventory of every org repo; read it before routing an issue, spawning an agent, or opening a PR, then verify candidates against the live org. ## How to verify against the live org