Multi-agent repo setup

Multi-agent repo setup: best practices for configuring a repository to be worked on by Claude (iOS and GitHub Issues) and Copilot (Spaces and GitHub Issues)

2026-03-29 · agentic-ai multi-agent tools-infrastructure · medium · source → · wiki →
key claims
  1. The Copilot coding agent reads both `.github/copilot-instructions.md` and `AGENTS.md` when both are present at the repository root; both files are combined additively, giving complete instruction coverage from either file independently
  2. The absence of `.github/workflows/copilot-setup-steps.yml` means the Copilot coding agent starts in a bare Ubuntu environment without Python dependencies, without the virtual environment, and without the `.github/skills/` submodule, this is a silent failure that prevents the agent from running `make check` or `make test` as required by the existing instructions
  3. Claude Code GitHub Actions (`anthropics/claude-code-action`) reads `CLAUDE.md` via Claude Code's normal file-discovery walk; it does not read `.github/copilot-instructions.md`, meaning the current single-file approach leaves Claude Code without any project instructions
  4. The Claude-via-GitHub-Issues surface requires `ANTHROPIC_API_KEY` (or equivalent Bedrock/Vertex credentials) and a GitHub App (`APP_ID`, `APP_PRIVATE_KEY`); none are in this repo's credential table, so this surface is blocked under the current no-new-credentials constraint
  5. Copilot Spaces can launch Copilot coding agent tasks that write code and create pull requests; Spaces itself is a Q&A tool that does not auto-read per-repo instruction files, but when it launches a coding agent task, that agent respects the repository's configuration files
  6. Claude Code on iOS is a full coding agent that can write code, create commits, and open pull requests in cloud-based sandboxed environments; it does not auto-load instruction files at session start but can discover and use `CLAUDE.md` and other files during execution
  7. `AGENTS.md` is a Linux Foundation-stewarded open standard supported by over 20 tools (including GitHub Copilot, OpenAI Codex, Cursor, and Claude Code) and present in over 60,000 repositories; adding a thin pointer file at the root costs nothing and restores coverage for all AGENTS.md-native agents
  8. ADR-0006's consolidation to `.github/copilot-instructions.md` was correct for Copilot-only usage; adding `AGENTS.md` (as a pointer) and `CLAUDE.md` extends coverage to Claude Code surfaces without contradicting ADR-0006's intent of a single canonical instruction file

Research Question

What are the best practices for setting up a GitHub repository so that it can be worked on effectively by multiple Artificial Intelligence (AI) agents, specifically: (1) Claude via the iOS Claude app, (2) Claude via GitHub Issues assigned to Claude, (3) Copilot via Copilot Spaces, and (4) Copilot via GitHub Issues assigned to the Copilot coding agent, with consistent instruction loading, environment setup, and quality outcomes across all four surfaces?

Findings

Executive Summary

The repository currently serves the Copilot coding agent only partially: .github/copilot-instructions.md loads correctly, but the agent starts without Python dependencies and without the .github/skills/ submodule because no copilot-setup-steps.yml exists. Three additions cover all currently-reachable surfaces: copilot-setup-steps.yml (fixes the Copilot coding agent environment), CLAUDE.md at root (enables Claude Code on iOS and pre-positions for Claude Code GitHub Actions when credentials are added), and AGENTS.md at root (restores cross-vendor compatibility). The Claude-via-GitHub-Issues surface is currently blocked by missing credentials (ANTHROPIC_API_KEY and a GitHub App) and cannot be enabled within the current constraint of no new credentials. Copilot Spaces can launch coding agent tasks that respect repo configuration; Claude Code on iOS is a full coding agent that can discover and use instruction files during execution.

Key Findings

  1. The Copilot coding agent reads both .github/copilot-instructions.md and AGENTS.md when both are present at the repository root; both files are combined additively, giving complete instruction coverage from either file independently.
  2. The absence of .github/workflows/copilot-setup-steps.yml means the Copilot coding agent starts in a bare Ubuntu environment without Python dependencies, without the virtual environment, and without the .github/skills/ submodule, this is a silent failure that prevents the agent from running make check or make test as required by the existing instructions.
  3. Claude Code GitHub Actions (anthropics/claude-code-action) reads CLAUDE.md via Claude Code's normal file-discovery walk; it does not read .github/copilot-instructions.md, meaning the current single-file approach leaves Claude Code without any project instructions.
  4. The Claude-via-GitHub-Issues surface requires ANTHROPIC_API_KEY (or equivalent Bedrock/Vertex credentials) and a GitHub App (APP_ID, APP_PRIVATE_KEY); none are in this repo's credential table, so this surface is blocked under the current no-new-credentials constraint.
  5. Copilot Spaces can launch Copilot coding agent tasks that write code and create pull requests; Spaces itself is a Q&A tool that does not auto-read per-repo instruction files, but when it launches a coding agent task, that agent respects the repository's configuration files.
  6. Claude Code on iOS is a full coding agent that can write code, create commits, and open pull requests in cloud-based sandboxed environments; it does not auto-load instruction files at session start but can discover and use CLAUDE.md and other files during execution.
  7. AGENTS.md is a Linux Foundation-stewarded open standard supported by over 20 tools (including GitHub Copilot, OpenAI Codex, Cursor, and Claude Code) and present in over 60,000 repositories; adding a thin pointer file at the root costs nothing and restores coverage for all AGENTS.md-native agents.
  8. ADR-0006's consolidation to .github/copilot-instructions.md was correct for Copilot-only usage; adding AGENTS.md (as a pointer) and CLAUDE.md extends coverage to Claude Code surfaces without contradicting ADR-0006's intent of a single canonical instruction file.
  9. Submodule checkout inside copilot-setup-steps.yml should use COPILOT_GITHUB_TOKEN rather than the default GITHUB_TOKEN because the Copilot coding agent's auto-provided token is scoped to the current repository and may not have read access to the private davidamitchell/Skills submodule.

Assumptions

Analysis

The four surfaces split into different categories. Code-writing agents: Copilot coding agent (auto-loads .github/copilot-instructions.md and AGENTS.md), Claude Code on iOS (can discover CLAUDE.md during execution), and Claude Code GitHub Actions (reads CLAUDE.md). Context/launch tools: Copilot Spaces (can launch Copilot coding agents). Each code-writing agent has different instruction-loading behavior; the minimum viable configuration must accommodate all patterns.

For code-writing agents, the priority order is: (1) fix the environment gap (copilot-setup-steps.yml) because a misconfigured environment causes test failures even with perfect instructions; (2) enable Claude Code surfaces (CLAUDE.md) for iOS sessions and future GitHub Actions; (3) restore cross-vendor compatibility (AGENTS.md). The credential constraint is a hard blocker on Claude Code GitHub Actions, it cannot be resolved by file additions alone.

The "thin pointer" pattern for AGENTS.md (pointing to .github/copilot-instructions.md) and CLAUDE.md (importing or summarising the same instructions) preserves ADR-0006's intent of a single canonical instruction source while allowing each agent's native discovery mechanism to locate relevant content. Full duplication across files risks drift; a pointer or import pattern avoids it.

Risks, Gaps, and Uncertainties

Open Questions


sources

Starting points, papers, articles, videos, repos, docs.


Connected items

Loading…

View full knowledge graph →