# Resolve Board

> Bring the Atlas board current in one shot — dispatch the hourly Atlas sync workflow (hosted in this agents repo) now (upstream state sync) and run the local link-upstream-chips sweep (clickable issue↔PR chips). Use when the board looks stale or after a batch of agent/upstream activity.

- Skill: `meridianlabs-ai/resolve-board` (Agent Skill)
- Install (CLI): `npx skillmds@latest add meridianlabs-ai/resolve-board`
- Raw SKILL.md: https://api.skillmd.com/api/skills/meridianlabs-ai/resolve-board/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: meridianlabs-ai (https://skillmd.com/u/meridianlabs-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/meridianlabs-ai/resolve-board

---


# Resolve the Atlas board

Runs the two reconciliation mechanisms on demand instead of waiting for their
natural cadence (the sync runs hourly at :17; chips only land when the local
sweep runs). Both are idempotent — running this at any time is safe.

Set `SKILL_DIR` to the absolute directory containing this loaded `SKILL.md`. Resolve symlinks to find the agents checkout:

```sh
AGENTS=$(dirname "$(dirname "$(realpath "$SKILL_DIR")")")
```

## Step 1 — dispatch the Atlas sync and wait

The sync is hosted in THIS repo (migrated from the fork 2026-08-26 — it
is org-wide board infrastructure and every write rides the org PAT).

```sh
gh workflow run atlas-sync.yml --repo meridianlabs-ai/agents
sleep 10
RID=$(gh run list --repo meridianlabs-ai/agents --workflow atlas-sync.yml \
        --limit 1 --json databaseId --jq '.[0].databaseId')
# poll to completion (typically < 2 min; timeout-minutes is 15)
gh run watch "$RID" --repo meridianlabs-ai/agents --exit-status || true
```

Pull its summary — the actions it took (stage moves, closes/reopens,
skips) live in the run output:

```sh
gh run view "$RID" --repo meridianlabs-ai/agents --log 2>/dev/null \
  | sed -n '/=== Atlas sync summary ===/,/^$/p'
```

If the run FAILED at preflight, MARVIN_TOKEN has a permissions problem
(project scope) — surface that to the user rather than continuing.

## Step 2 — run the chip sweep

```sh
cd "$AGENTS/scripts/link-upstream-chips" && node index.mjs
```

- Links every pending chip: External proxies ↔ upstream PRs, and fork agent
  PRs (`claude/issue-N-*`) ↔ their issues (whose `Fixes` refs are inert on the
  fork — non-default base branch).
- If it exits with "Not signed in", the ~2-week browser session expired: run
  `node index.mjs --login`, let the user complete the GitHub sign-in in the
  window that opens, then rerun the sweep.
- `FAILED`/`WRONG LINK` lines need eyes — the script never clicks a
  non-matching result, so failures mean the Development-panel markup changed
  (`--headed` to debug) or a genuinely missing search result.

## Step 3 — report

One short summary combining both: sync actions taken (or "no changes"), chips
linked (or "none pending"), plus anything needing the user (expired login,
preflight failure, WRONG LINK).

## Notes

- The sync only manages issues assigned to `ransomr` (pilot scoping) and only
  those with an `Upstream PR` field for the promotion tail; promotion
  bookkeeping itself is the `promote` skill's job.
- Neither mechanism touches Agent / Review transitions driven by
  the agent workflows — this skill reconciles the upstream tail and the chips,
  not the agent lifecycle.

