copilotd-e2e-verification
Verifies copilotd orchestration changes using live issues, PRs, and worktree reconciliation.
Install
mkdir -p .claude/skills/copilotd-e2e-verification && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10677" && unzip -o skill.zip -d .claude/skills/copilotd-e2e-verification && rm skill.zipInstalls to .claude/skills/copilotd-e2e-verification
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Perform real end-to-end validation of copilotd issue and pull request orchestration using live GitHub artifacts.Key capabilities
- →Validate copilotd orchestration
- →Test PR dispatch rules
- →Verify session lifecycle
- →Check worktree handling
- →Drive feedback loops
How it works
The skill orchestrates a live reconciliation daemon using isolated homes and temporary GitHub artifacts to verify that issues and PRs move through the expected lifecycle.
Inputs & outputs
When to use copilotd-e2e-verification
- →Validate copilotd changes
- →Test PR orchestration
- →Verify session lifecycle
- →Check worktree handling
About this skill
copilotd end-to-end verification
Use this skill when validating substantial copilotd orchestration changes, especially changes to dispatch rules, reconciliation, session lifecycle, worktree handling, prompt callbacks, or GitHub issue/PR feedback loops.
Goal
Verify copilotd as a live reconciliation daemon, not just by build or command smoke tests. A good verification proves that real GitHub issues and pull requests move through the expected lifecycle, Copilot sessions can call back into copilotd, worktrees and state converge correctly, and temporary artifacts are cleaned up.
Optimum approach
- Use an isolated copilotd home. Set
COPILOTD_HOMEto a disposable directory such as.\copilotd-home-e2eor another task-specific path. Do not use the user's normal~\.copilotdstate. - Start with local CLI validation. Build the branch, then verify
config,rules add/list/update/delete, invalid rule arguments,status,session list --all, and JSON persistence before creating live artifacts. - Use a real but safe target repository. Prefer a repo already cloned locally and writable by the user. Configure
repo_homeso copilotd resolves the existing clone and creates sibling<repo>_sessionsworktrees. - Create explicit temporary labels. Use unique labels such as
copilotd-e2e-ready,copilotd-e2e-clarify, andcopilotd-e2e-prso rules match only the verification artifacts. - Create at least two issue scenarios.
- A ready-to-implement issue with small, deterministic acceptance criteria that should lead to a branch, commit, PR,
session pr, andWaitingForReview. - An intentionally ambiguous issue that should lead to
session comment,WaitingForFeedback, a real clarification reply, and re-dispatch.
- A ready-to-implement issue with small, deterministic acceptance criteria that should lead to a branch, commit, PR,
- Create a PR rule that observes the issue-created PRs. Add a PR dispatch rule using
--kind pr, a temporary PR label,--base, and a safe branch strategy such asread-onlyfor validation-only sessions. - Drive the full feedback loop. After issue sessions create PRs, let the PR rule launch PR-root validation sessions. Ensure those sessions comment on the PR. Then add a manual PR comment or review from a trusted user without a copilotd marker so the original issue-owned
WaitingForReviewsession re-dispatches, pushes a follow-up commit, and returns toWaitingForReview. - Observe state and GitHub together. Cross-check
state.json,copilotd session list --all, issue comments, PR comments, PR labels, PR commits, and local git worktrees. Do not trust a single surface. - Keep a journal. Record every issue, workaround, and stop-worthy finding as it happens, including exact issue/PR numbers and whether the behavior was expected or a product problem.
- Clean up aggressively. Close temporary PRs without merging, close temporary issues, delete temporary branches/labels, stop daemon processes, remove isolated homes and temporary publish folders, prune worktrees, and verify the target repo returns to a clean default branch.
Important setup details
- Run from source via
.\copilotd.ps1first, as this matches normal development validation. - If unattended Copilot sessions block on callback commands like
dotnet run --project <copilotd-source> --no-build -- session ..., publish copilotd outside the source tree and prepend that publish directory toPATH. Starting the daemon from a path outside the source tree makes callback prompts usecopilotdinstead of adotnet run --project ...command outside the target repo trust scope. - Ensure Copilot trusted folders include both the target repo and the sibling
<repo>_sessionsdirectory. Missing trust should be treated as a real preflight/environment finding, then fixed so validation can continue. - Disable control sessions in the isolated config unless the control session itself is under test. This avoids extra remote sessions and unrelated worktrees.
- Use low polling intervals such as
--interval 15during verification, and enable--log-level debugso reconciliation decisions are visible. - If testing self-update is not in scope, set
COPILOTD_DISABLE_SELF_UPDATES=1or pass--disable-self-updates.
Suggested live flow
- Build the branch under test.
- Create isolated
config.jsonwith:repoHomepointing at the parent folder that contains the target clone.maxInstancesset high enough for the planned issue and PR sessions.enableControlSessionset tofalseunless needed.- one or more issue rules scoped to temporary labels and the target repo.
- one PR rule scoped to a temporary PR label, target repo, and base branch.
- Create temporary labels in the target repo.
- Create the ready and ambiguous issues.
- Start copilotd with the isolated home.
- Confirm the daemon matches the issues, creates pending sessions, creates worktrees, and launches Copilot processes.
- For the ambiguous issue, confirm a copilotd-authored issue comment appears and state enters
WaitingForFeedback; reply with precise requirements and confirm re-dispatch. - For ready issue sessions, confirm commits are pushed, PRs are opened, PRs get the PR-rule label, and issue sessions run
session prand enterWaitingForReview. - Confirm PR-root sessions are created for the PRs and use the expected branch strategy/worktree layout.
- Confirm PR-root sessions complete and leave useful validation comments.
- Add manual trusted PR feedback to the PRs and confirm the original issue-owned sessions re-dispatch with
RedispatchCountincremented, pushes follow-up commits, and returns toWaitingForReview. - Close PRs and issues, then confirm reconciliation marks sessions completed and cleans up issue and PR worktrees.
What to inspect
copilotd statuscopilotd session list --allcopilotd session info <owner/repo#number>COPILOTD_HOME\state.json- daemon logs under
COPILOTD_HOME\logs\daemon_* - recent Copilot logs under
~\.copilot\logswhen a session appears stuck - target repo
git worktree list - target repo branch lists for stale
copilotd/*branches - GitHub issue comments, PR comments, PR labels, PR commits, and PR state
Success criteria
- Issue rules and PR rules match only intended temporary artifacts.
- Ready issues produce working branches, commits, PRs, and
WaitingForReviewstate. - Ambiguous issues ask a clarifying question, wait, and resume from a real issue reply.
- PR rules dispatch PR-root sessions with the expected PR context and branch strategy.
- PR feedback from a trusted non-copilotd comment re-dispatches the original issue-owned session.
- Follow-up commits update the existing PR, not a new PR.
- Closing or unmatching subjects completes sessions and cleans up local worktrees/branches.
- All temporary GitHub and local artifacts are removed or explicitly retained for root-cause analysis.
Cleanup checklist
- Close temporary PRs with a "do not merge" comment.
- Close temporary issues with a verification cleanup comment.
- Delete temporary remote branches and run
git fetch --prune. - Delete temporary labels.
- Stop copilotd and any shell wrappers used to host it.
- Remove isolated
COPILOTD_HOMEfolders and temporary publish folders. - Run
git worktree listin the target repo and remove only worktrees created by this verification. - Confirm the target repo and copilotd repo have clean
git statusoutput.
Reporting findings
Lead with what was verified, then list findings separately from environment prerequisites. For each issue, include:
- the observed behavior,
- the expected behavior,
- whether it was blocking or worked around,
- the exact workaround used, and
- any artifacts retained for diagnosis.
Do not fix product bugs during verification unless the user explicitly asks for follow-up implementation work.
When not to use it
- →Production environment validation
- →Testing self-update logic
Prerequisites
Limitations
- →Requires isolated COPILOTD_HOME
- →Requires manual cleanup of artifacts
How it compares
It performs end-to-end verification of the daemon's reconciliation logic using real GitHub artifacts, rather than relying on unit tests.
Compared to similar skills
copilotd-e2e-verification side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| copilotd-e2e-verification (this skill) | 0 | 3mo | No flags | Advanced |
| dev | 0 | 4mo | Review | Intermediate |
| tmux-terminal | 3 | 5mo | Review | Advanced |
| webapp-testing | 353 | 3mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
dev
serithemage
Development workflow guide. Covers build, test, lint, format commands, package structure, Git hooks, TDD methodology, and coding conventions. Use when setting up dev environment, running tests, or following project conventions.
tmux-terminal
mikeyobrien
Interactive terminal control via tmux for TUI apps, prompts, and long-running CLI workflows.
webapp-testing
anthropics
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
dev-browser
SawyerHood
Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.
applescript
martinholovsky
Expert in AppleScript and JavaScript for Automation (JXA) for macOS system scripting. Specializes in secure script execution, application automation, and system integration. HIGH-RISK skill due to shell command execution and system-wide control capabilities.
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.