with one click
arch-migrate
// Execute a migration task from a GitHub issue through to a PR, or fix unresolved review comments on an existing migration PR. Reads scope and acceptance criteria from the issue body.
// Execute a migration task from a GitHub issue through to a PR, or fix unresolved review comments on an existing migration PR. Reads scope and acceptance criteria from the issue body.
Research a migration task, create a GitHub sub-issue with scope and acceptance criteria, and update the task backlog. Takes a task ID from docs/MIGRATION_TASKS.md, explores the codebase, creates an issue in blockscout/frontend, links it to the parent migration issue, and commits the status update.
Create a well-structured pull request with proper description, labels, and reviewers
| name | arch-migrate |
| description | Execute a migration task from a GitHub issue through to a PR, or fix unresolved review comments on an existing migration PR. Reads scope and acceptance criteria from the issue body. |
You are executing a step of the Blockscout frontend client architecture migration.
The skill can ONLY be invoked as: /arch-migrate <issue-number> ("execute" mode) or /arch-migrate fix <pr-number> ("fix review comments" mode).
Use whichever GitHub access method is available in your environment โ in order of preference:
gh CLI โ if available and authenticated (gh auth status succeeds), use it for all GitHub operations.gh is unavailable, use the MCP tools provided by the GitHub MCP server.curl โ if neither above is available, use the GitHub REST API directly with curl and a GITHUB_TOKEN env var.Detect availability once at the start and stick with that method throughout. Do not mix methods.
Execute (/arch-migrate <issue>): fetch the GitHub issue and execute the migration through to a PR.
Fix (/arch-migrate fix <pr>): address unresolved review comments on an existing PR.
Fetch the issue body from blockscout/frontend using the available GitHub tool. The issue number is the argument passed to the skill.
Also read:
client/ARCH_REDESIGN.md โ naming conventions (ยง2), dependency rules (ยง8), execution rules (ยง10)docs/GLOSSARY.md โ domain terminologyThe issue body contains the Scope, Findings, and Acceptance criteria for this task. That is your working spec.
Read all source files listed in the issue Scope. Understand what they export and what tests exist.
ARCH_REDESIGN.md ยง6 migration map.useCamelCase.ts. Everything else: kebab-case.## Files to delete list in the issue as your checklist โ work through it item by item. If an entry is a folder, delete the entire folder (rm -rf). If an entry is a file, delete that file.## Files to delete is gone. For any that still exist, delete them now.pnpm lint:tsc # must pass
pnpm lint:eslint:fix # must pass
Fix errors if any (warnings are acceptable).
If a dependency is not yet migrated, leave its import at the old path and list it explicitly in the PR description as a follow-up for the relevant future task.
[Migration] <task-id>: ...).migration/<task-id>-<short-slug> (e.g. migration/1-1-client-api)main.[Migration <task-id>] <task title>main.Closes #<issue-number> โ on the first line, so GitHub auto-closes the issue on mergepnpm lint:tsc passing, pnpm lint:eslint clean within client/, all source files/folders deleted from old pathsrefactoring/arch-migrate fix <pr> โ address unresolved review comments only.
blockscout/frontend using the available GitHub tool. If using gh:gh api graphql -f query='
{
repository(owner: "blockscout", name: "frontend") {
pullRequest(number: <pr>) {
reviewThreads(first: 50) {
nodes {
isResolved
path
line
comments(first: 5) {
nodes { body author { login } }
}
}
}
}
}
}'
If using the GitHub MCP server, call list_review_comments_on_pull_request (for inline comments) and get_pull_request_reviews (for review-level comments), then filter to unresolved threads manually. If using the REST API, GET /repos/blockscout/frontend/pulls/<pr>/comments returns inline comments; filter by in_reply_to_id to group threads.
Keep only threads where isResolved: false. Skip everything else โ the reviewer marks threads resolved when they are no longer relevant.