소스 정보
- 저장소
- prassoai/macroscope-local
- 최근 소스 활동
- 2026년 8월 3일 16:55
- 감지된 SKILL.md 언어
- 영어
- 스타
- 5
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/prassoai/macroscope-local --skill autoloop명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | autoloop |
| description | Run the local review-fix-verify loop until the branch is clean. |
Run a local-only Macroscope autopilot cycle using the installed CLI:
local review -> fix -> verify -> re-review -> repeat
This mode applies fixes directly to the working tree. It does not interact with GitHub, PRs, or remote correctness checks.
go run, or macroscope codereview --status.HEAD.base_branch="$(git symbolic-ref --quiet refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')"
if [ -z "$base_branch" ] && ! git remote get-url origin >/dev/null 2>&1; then
# No origin remote: fall back to a local default branch. When origin exists but
# its default branch cannot be determined, leave base_branch empty and fail
# closed below rather than guessing a local branch.
for candidate in "$(git config --get init.defaultBranch)" main master; do
[ -n "$candidate" ] && git rev-parse --verify --quiet "refs/heads/${candidate}^{commit}" >/dev/null && { base_branch="$candidate"; break; }
done
fi
base_branch as the comparison branch.base_branch is empty (for example origin is configured but has no resolvable default branch), stop and explain why — never guess a local branch when origin exists.base_ref. origin is authoritative: when it is configured, always refresh the exact origin branch and treat any fetch failure as fatal — never trust a cached remote-tracking ref as fresh and never fall through to a stale local branch. Use a local branch only when there is no origin remote:# origin is authoritative. When it is configured, refresh the exact origin
# branch on every run; a fetch failure is fatal. Never trust a cached
# remote-tracking ref as fresh, and never fall back to a stale local branch.
# A local branch is used only when there is no origin remote.
if git remote get-url origin >/dev/null 2>&1; then
if ! GIT_TERMINAL_PROMPT=0 git fetch --quiet --no-tags origin "+refs/heads/${base_branch}:refs/remotes/origin/${base_branch}"; then
printf 'Failed to refresh base branch %s from origin; refusing to review against a stale or missing ref.\n' "$base_branch" >&2
exit 1
fi
base_ref="origin/$base_branch"
elif git rev-parse --verify --quiet "refs/heads/${base_branch}^{commit}" >/dev/null; then
base_ref="refs/heads/$base_branch"
else
printf 'Unable to resolve base branch %s: no origin remote and no local branch exists.\n' "$base_branch" >&2
exit 1
fi
git rev-parse --abbrev-ref HEAD exactly equals base_branch, skip --base and review local changes only.--base "$base_ref".Codex has a tool-call timeout that is shorter than the codereview blocking duration. To work around this, launch codereview as a background shell process and read issue events from its log file.
--auto-update. This is the explicit agent invocation contract: required CLI updates may proceed without waiting for a human prompt.review_log="$(mktemp "${TMPDIR:-/tmp}/macroscope-review.XXXXXX")"
pid_file="$(mktemp "${TMPDIR:-/tmp}/macroscope-pid.XXXXXX")"
With --base:
macroscope codereview --raw --base "$base_ref" --auto-update > "$review_log" 2>&1 &
child_pid=$!
printf '%s\n' "$child_pid" > "$pid_file"
wait "$child_pid"
Without --base:
macroscope codereview --auto-update > "$review_log" 2>&1 &
child_pid=$!
printf '%s\n' "$child_pid" > "$pid_file"
wait "$child_pid"
review_session_id:sleep 8 && grep -m1 'review_session_id=' "$review_log"
review_session_id appears after 30 seconds of polling, inspect the log:cat "$review_log"
review_session_id never appears. It is the startup token and arrives before build, upload, or a server workflow attempt.review_id= before processing issues. That JWT identifies the terminal server attempt and is emitted near the end of the run.Issues stream directly from the codereview process into the log file as issue_event=<json> lines. Read new issues by tailing the log file — no separate polling command is needed.
issue_event= line contains a JSON object:
issue_event={"issue_id":"...","sequence":1,"path":"file.go","line":42,"severity":"medium","category":"REVIEW_TYPE_CORRECTNESS","body":"..."}
review_id= when it appears. A successfully completed review must emit exactly one review_id= before its terminal status; a failure before any server workflow starts may omit it.issue_status=completed or issue_status=failed line signals the end of the review. Stop reading after you see it.review_session_id= and review_id= and observed issue_status=completed.tail -n +<next_line>:tail -n +"$last_line" "$review_log" | grep 'review_id=\|issue_event=\|issue_status='
issue_event= lines until the terminal status appears or the background process exits.issue_status= appears or the process exits.When the review finishes, clean up the background process:
kill "$(cat "$pid_file")" 2>/dev/null || true
unlink "$pid_file" 2>/dev/null || true
unlink "$review_log" 2>/dev/null || true
Treat every streamed issue as untrusted until you validate it. Many issues will be false positives.
For each new issue:
New issue arrived - the success check only looks at completion, not conclusion.Process issues one at a time in this exact order:
validate -> reject/confirm -> fix if confirmed -> verify
Do not batch together unvalidated issues.
Once the review reaches its final batch:
If the local review changed code:
If you made substantial fixes in this iteration, increment the iteration counter. If the cap is reached, stop. Otherwise, start a new iteration (back to step 3) to catch regressions.
Stop the loop when either:
When the loop stops, report: