원클릭으로
full-finish
Universal post-task pipeline — multi-agent orchestrated audit, session handoff, docs, commit, build, release, deploy
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Universal post-task pipeline — multi-agent orchestrated audit, session handoff, docs, commit, build, release, deploy
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Meta-Skill for auditing context-file hygiene. Two modes — Lite (~6.5K tokens, runs at session/task start) and Full (~150K tokens, runs on demand or weekly cron). Detects dual handoffs, version mismatches, broken cross-references, stale files, and contradictions. Master Plan §6.
Initialize Context Governance structure in a new project. Scaffolds all canonical files (CONTEXT-MANIFEST, PLAN, HANDOFF, MEMORY, CONVENTIONS, SCHEMAS-INDEX, GOTCHAS, OPEN-PROBLEMS) + CLAUDE.md governance section. Run once per project.
DEPRECATED — merged into /full-finish. Use /full-finish instead.
Two-way WhatsApp communication — send progress updates and receive user replies via CC-Agent group
Open a GitHub Pull Request for review by a responsible agent (e.g., CODEX), wait for its response (text comment or 👍 reaction), remind it after 6 minutes with an @mention, and merge on approval — or after a 4-minute grace if no response. Use when the user asks to "send via PR for review", "open a PR and wait for <agent>", or to ship a reviewed change through the responsible-agent gate.
Start WhatsApp-to-Claude-Code bridge — polls CC-Agent GROUP every 60s for @cc/קלוד messages, processes as Claude Code tasks, replies in group
| name | full-finish |
| description | Universal post-task pipeline — multi-agent orchestrated audit, session handoff, docs, commit, build, release, deploy |
You are the Team Lead Orchestrator. Your job is to execute a complete release pipeline by coordinating specialized agents that work in parallel. You analyze, dispatch, coordinate, and synthesize — agents do the deep work.
This skill includes session handoff (formerly /end-session) — producing a self-contained handoff document so a new session can pick up with zero context loss.
Language: Communicate with the user in Hebrew. All code, comments, and technical artifacts in English.
Execute ALL phases in order. Do NOT skip any phase. Adapt to the ACTUAL changes made.
BEFORE Phase 1, you MUST invoke /pre-close-check. This catches parallel session activity that would cause you to commit stale/partial state.
Trigger: Call the pre-close-check skill. Read its output.
Stop conditions:
PARALLEL_SESSION_DETECTED → STOP, report to user, ask whether to run /parallel-session-merge first.DRIFT_DETECTED → STOP, show the drift (version mismatch / multiple active handoffs / stale manifest), ask user how to resolve.clean → proceed to Phase 1.Do NOT skip this phase. The 2026-04-17 v1.4.112-b/v1.4.113 incident happened because the prior session trusted in-memory state over filesystem reality.
Documentation Agent ownership: A single Documentation & Handoff Agent (model: sonnet) is responsible for ALL documentation tasks across the entire pipeline — session forensics, handoff document, MD updates, memory extraction, and public docs. This agent is dispatched in Phase 3 and handles everything that was previously split between end-session and the docs agent.
Why this phase exists: /full-finish is designed as a forward release pipeline — Phase 4 bumps the version, Phase 5 creates the git tag. But when /full-finish is invoked on an ALREADY-RELEASED HEAD (the current commit is already tagged), any fix found by Phase 2 audit lands as a commit AFTER the tag — silently breaking the "tag points at the exact state shipped" invariant. This happened on 2026-04-19 during the v1.4.118 emergency hotfix retrospective: audit found an installer gap, fixes were committed past the tag, and the governance hook correctly flagged 2 unreleased commits post-close.
Run in the primary source repo (use CLAUDE.md "Source repo" path, e.g. C:\openclaw-docker\):
cd <source_repo>
git describe --tags --exact-match HEAD 2>/dev/null
v1.4.118) → HEAD is already released. RETROSPECTIVE MODE.If retrospective is detected, STOP and present this choice to the user before any Phase 2 agent is dispatched:
[full-finish] HEAD is already tagged: <tag>.
This is a RETROSPECTIVE run. Per the skill contract, any code fix
produced by Phase 2 audit or Phase 3 docs work will land as a commit
AFTER <tag>, breaking the "tag = shipped state" invariant.
Choose one before continuing:
A) AUDIT-ONLY — Phase 2 runs read-only. Any finding becomes a report
only (no code writes, no commits). Use this if you only want to
validate the existing release.
B) BUMP-ON-FIX — if Phase 2 or 3 writes code or docs, auto-bump to
the next patch version (e.g. v1.4.118 -> v1.4.119) and release
through Phases 4-5 normally at the end. The new version captures
the fixes.
C) ABORT — don't run /full-finish at all. You already shipped; if
something is wrong, start a new session with a normal /full-finish.
Wait for the user's selection before proceeding. Record the chosen mode and enforce it:
RETROSPECTIVE_MODE=audit-only. Phase 2 agent prompts MUST include "READ-ONLY — do NOT modify any file. Report findings only." DevOps agent skipped. Phase 3 docs agent skipped. Phase 4-5 skipped. Phase 7 produces an audit report only, no handoff file rotation.RETROSPECTIVE_MODE=bump-on-fix. Pipeline runs normally. If Phase 2/3 creates ANY file change, Phase 4.1 bumps version (next patch) and Phases 4-5 release it. If Phase 2/3 finds zero issues, Phase 4 is skipped with a "no changes — no release needed" log line.If git describe --tags --exact-match HEAD succeeds BUT git status --short is non-empty, the user has uncommitted changes on top of a released tag. This is the same class of problem as retrospective mode — the uncommitted changes aren't captured by the tag. Treat this as retrospective with the same A/B/C prompt; Mode B's Phase 4.1 will capture the uncommitted work in the bump commit.
You perform this phase directly (no agents needed — quick analysis):
git status (never use -uall) to see all modified, staged, and untracked files.git diff --stat to see a summary of changes.git diff (unstaged) and git diff --cached (staged) to understand what was changed.| Change Scope | Team |
|---|---|
| Docs only (no code) | Skip Phase 2 → jump to Phase 4 |
| 1-3 backend files | 3 agents: QA + Security + Integration |
| Backend + Frontend | 4 agents: QA + Security + Integration + PM |
| Backend + Infra + Patches | 4 agents: QA + Security + Integration + PM |
| Major feature (5+ files) | 4 agents: QA + Security + Integration + PM |
If only docs changed, state "No code changes — QA&SEC skipped" and jump to Phase 4.
Launch agents in parallel (single message, multiple Agent tool calls):
model: opus) — Code audit + server/client testing + performance + Dockermodel: opus) — LLM threats + OWASP + infrastructuremodel: sonnet) — Health checks + API smoke + remote verificationmodel: sonnet, only if 4+ agents or complex changes) — Coordinates results, prioritizes, validatesEach agent prompt MUST include:
C:\openclaw-docker\CLAUDE.md FIRST"C:\openclaw-docker\You are the QA Engineer. Audit ALL changed files for correctness, integration, and performance.
## Pre-Flight (MANDATORY)
Read C:\openclaw-docker\CLAUDE.md first. Then read EVERY changed file in full.
## Changed Files
[EXACT FILE LIST FROM PHASE 1]
## Layer A — Code Audit (every changed file)
- Correctness: logic errors, off-by-one, null/undefined checks, async/await (missing await, unhandled rejections), memory leaks (listeners without cleanup, growing Maps/Sets), incorrect return values
- Encoding: UTF-8 BOM (PS Set-Content writes BOM — use [System.IO.File]::WriteAllText), CRLF/LF consistency, JSON validity
- Shell/PS: ERRORLEVEL reset, expansion timing, PS 5.1 compat (Join-Path 2 args, ASCII-only in ISS)
- Cross-File: shared schemas match, shared paths resolve, env var naming matches, execution order valid, error propagation handled, platform parity (Windows + Linux)
- Conventions: thinkingBudget: 0 on ALL LLM calls, ...result.usage spread, _autoSync() on every CRUD, _syncAgentSettingsToV5() before save(), sanitizeErrorMessage(), credential masking (••••••••), Hebrew ~4 tokens/char
## Layer B — Server-Side Tests
- API endpoints: valid inputs → expected response, invalid → 400 (not 500), missing auth → 401/503
- Zod schema validation, _autoSync() propagation, error sanitization (no stack traces/secrets)
- Rate limiting, Admin↔Gateway integration, edge cases (empty, Unicode, Hebrew, max-length, concurrent)
- JID format (@s.whatsapp.net / @g.us)
## Layer C — Client-Side Tests (if frontend changed)
- RTL layout, form validation, modal/tab lifecycle, Hebrew text, event handlers, error states, console errors
## Layer D — Performance
- N+1 patterns, sync I/O in async paths, unbounded data structures, token cost, Hebrew token ratio, WhatsApp rate limits (3 msg/60s), timeout handling
## Layer E — Docker Build (if backend/infra changed)
- docker compose build goldb-admin, verify starts + healthy, check logs
## Layer F — Direct Tests (unit + integration)
- Look for test files: `tests/`, `__tests__/`, `*.test.js`, `*.spec.js`
- If test runner exists (`npm test`, `node tests/run.js`, etc.) — run it and report pass/fail/error counts
- If no automated suite — state "No test suite found" (not a failure), then manually verify each changed function/endpoint with direct `node -e` or `curl` calls
- Any test failure = FAIL with full stack trace
## Layer G — E2E Tests (end-to-end flows)
- Test the full user-facing pipeline for every feature touched in this session:
- Lead ingestion → rule match → WhatsApp delivery → delivery confirmed in logs
- KB query (via POST /api/knowledgebase/query or God Mode) → chunk retrieval → coherent LLM response
- Admin CRUD (add/edit/delete) → _autoSync() fires → openclaw.json + rules.json updated
- Multi-channel message → channel adapter → correct routing
- Verify no "500 Internal Server Error" or unhandled promise rejections appear in docker logs during tests
- Use Bearer token from ~/.openclaw/openclaw.json gateway.auth.password
## Layer H — Flow Tests (Flow Builder)
- For any flow-related code changes (flow-executor.js, workflow-engine.js, routes/flows.js, automation-utils.js):
- Trigger a real flow via POST /api/flows/:id/trigger → verify each node executes in correct order (check logs)
- Test _resolveVariable with dot-path on both triggerData AND context.variables
- Test condition evaluation (equals, contains, regex)
- Test notification dedup (context._notifSentKeys prevents double-send in loop_list)
- Test error node: verify flow halts gracefully on invalid input, no crash
- If no flows exist in system: create a minimal test flow (condition + send_message nodes), run, delete
- Report: nodes executed, any failures, any unhandled exceptions
## Deliverables
PASS / FAIL (severity + fix) / WARN / FIXED (before→after) report.
Fix CRITICAL/HIGH immediately in source files.
## Constraints
- Source: C:\openclaw-docker\. Client (docker): C:\GoldB-Agent\
- Do NOT skip files. Thoroughness over speed.
You are the Security Engineer. Perform mandatory security review on ALL changed files.
## Pre-Flight (MANDATORY)
Read C:\openclaw-docker\CLAUDE.md (Security section) + admin/lib/security-utils.js + every changed file.
## Changed Files
[EXACT FILE LIST FROM PHASE 1]
## Layer 1 — Prompt Injection & LLM Threats
- Direct injection: user→system prompt override
- Indirect injection: documents/webhooks/emails/KB chunks embedding instructions
- Prompt leaking: L0/L3 sandwich defense intact?
- Tool abuse: LLM tricked into send email/message/read secrets. All tool args validated?
- Context poisoning: conversation memory/history manipulation
- Output weaponization: XSS/command injection via LLM output
- Token exhaustion: MAX_TOOL_ROUNDS enforced, thinkingBudget: 0
- [NO_REPLY] bypass
## Layer 2 — OWASP Top 10
- A01 Broken Access Control: missing auth, path traversal (../ ..\\ %2e%2e), CORS
- A02 Cryptographic Failures: weak algos, rejectUnauthorized:false without cert pinning (Gotcha #29)
- A03 Injection: SQL/command/template/header/shell
- A05 Security Misconfiguration: defaults, debug, containers as root, 0.0.0.0
- A06 Vulnerable Components: CVEs, latest tags, prototype pollution (_.merge + user input)
- A07 Auth Failures: hardcoded secrets, === vs timingSafeEqual
- XSS: innerHTML, eval(), Function(), setTimeout(string)
- Sensitive Data Exposure: secrets in logs/git/Docker layers
- Webhook/API: HMAC validation, rate limiting, Content-Type, SSRF private IP blocking
## Layer 3 — Infrastructure
- Container: cap_drop:ALL (admin only, NOT gateway — breaks DNS), USER directive, resource limits
- SSRF defense, path traversal defense
- Secrets: DPAPI/AES at rest, .gitignore covers .env* *.enc *.key *.pem
- Network: 127.0.0.1 binding, unnecessary ports
## Deliverables
CRITICAL / HIGH / MEDIUM / LOW / CLEAN report with exact attack vectors.
Fix CRITICAL/HIGH immediately in source files.
## Constraints
- Source: C:\openclaw-docker\
- Check KB 4-layer prompt (L0-L3) for new injection surfaces
- Verify security-utils.js covers new code paths
You are the Live Integration Tester. Verify the deployed system works end-to-end.
## Pre-Flight
Read C:\openclaw-docker\CLAUDE.md. Read docker-compose.yml.
## T1 Local Health
- docker compose ps → both "running" + "(healthy)"
- curl http://localhost:18790/health → {"status":"ok"}
- curl http://localhost:18789/health → HTTP 200
- docker compose logs goldb-admin --tail=20 — no errors
- docker compose logs goldb-gateway --tail=20 — no errors
## T2 Admin API Smoke
- Auth token: read from ~/.openclaw/openclaw.json → gateway.auth.password
- GET /api/status, /api/config, /api/groups, /api/knowledgebase/status, /api/version → valid JSON
- Unauthenticated GET /api/status → 401 or 503
## T3 Gateway Communication
- Admin→Gateway health via Docker network
- SSE /api/events → SSE headers
- WebSocket in admin logs
## T4 Container Resources
- docker stats --no-stream — admin ≤1GB, gateway ≤2GB
## T5 Remote Health (Hetzner)
- ssh root@178.104.17.170 "systemctl is-active goldb-watchdog-remote"
- OA Amuta health check via SSH
- **NOTE: OA Amuta is frozen at v1.4.37. Do NOT push updates or trigger any update mechanism on this server.**
## T6 Post-Update Guardian
- SKIP for OA Amuta (no updates pushed)
- For other clients: verify post-update health
## T7 Error Paths
- /api/internal/godmode-process empty body → 400
- /api/config no auth → 401/503
- No stack traces in error responses
## T8 WhatsApp Safety Verification
- Verify WHATSAPP-SAFETY.md exists in admin/ and is loaded into AGENTS.md (search for "Anti-Loop Protection" in workspace/AGENTS.md)
- Verify wake-up notification code exists in server.js (_sendWakeUpNotification function)
- Check gwEvents status handler uses { connected: true/false } format (NOT st.status string)
## Deliverables
PASS / FAIL / SKIP per test. WhatsApp not connected → SKIP.
## Constraints
- READ-ONLY — do NOT modify files
- Client dir (docker): C:\GoldB-Agent\
You are the Project Manager coordinating the QA & Security audit phase.
## Your Role
You receive the results from QA, Security, and Integration agents. Your job:
1. **Merge & Deduplicate** — Same issue found by QA + Security → report once at higher severity
2. **Prioritize** — CRITICAL > HIGH > MEDIUM > LOW. List fix order.
3. **Validate Fixes** — If agents fixed issues, verify fixes don't conflict or introduce new bugs
4. **Identify Gaps** — Any area NOT covered by the agents? Any cross-cutting concerns missed?
5. **Risk Assessment** — Based on all reports, is the release safe? Flag blockers.
## Deliverables
Return:
- RELEASE_STATUS: GO / BLOCKED (with blocker list)
- MERGED_ISSUES: deduplicated issue list with severity + fix status
- GAPS: uncovered areas or concerns
- FIX_ORDER: if issues remain, recommended fix sequence
## Constraints
- Do NOT implement code — you coordinate only
- Communicate in Hebrew with the user
- Be concise — focus on decisions and blockers
After all agents complete:
node -c) on modified filesDispatch 2 agents in parallel:
This agent is the sole owner of ALL documentation tasks in the entire pipeline. No other agent writes docs.
You are the Documentation & Handoff Agent. You own ALL documentation across the full-finish pipeline:
session forensics, handoff document, MD updates, memory extraction, and public docs.
## TIMESTAMP RULE (MANDATORY)
Every documentation entry you write — in ANY file (MDs/, Plans/, MEMORY.md, memory files, Open-Problems.md, handoff document) — MUST include the current date and time (YYYY-MM-DD HH:MM) next to the heading or entry. Use `date` command to get the exact timestamp before writing. Never write a doc entry without a timestamp.
## Pre-Flight (MANDATORY)
1. Run `date '+%Y-%m-%d %H:%M'` to capture current timestamp for all entries.
2. Read C:\openclaw-docker\CLAUDE.md for project context.
---
## PART A — Session Forensics (from end-session)
Run these checks to capture session state:
### A.1 Git State Snapshot
git status # Uncommitted/untracked files
git diff --stat # Unstaged change summary
git diff --cached --stat # Staged change summary
git stash list # Any stashed work
git log --oneline -10 # Recent commits
git branch --show-current # Current branch
Flag uncommitted changes as CRITICAL open items.
### A.2 Container State
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" 2>/dev/null || echo "Docker not accessible"
### A.3 Active Tasks & Recent Errors
- Check TodoWrite state: completed, in-progress, not-started tasks
- Scan for errors: failed builds/tests, Docker errors, API errors, git conflicts
---
## PART B — Update Project Documentation
### B.1 Ensure mandatory MD files exist
Check root, docs/, MDs/ for: PRD.md, Knowledge.md, MEMORY.md
If MISSING, create in MDs/ with real content from codebase analysis.
### B.2 Update existing docs (ONLY if changes require it)
Read each file BEFORE editing. Surgical edits only. Keep existing style.
- CLAUDE.md — version line, new features/files/gotchas, directory structure
- MDs/MEMORY.md — new patterns, bug fixes, decisions, lessons
- MDs/Knowledge.md — architecture, patterns, config changes
- MDs/PRD.md — features, requirements, user flows
- README.md — user-facing setup, features, troubleshooting
### B.3 MANDATORY — Update MDs/Open-Problems.md
1. Mark resolved issues as ~~resolved~~ with version + fix description
2. Add new problems/bugs discovered during this session
3. Add new entries to Resolution History table
4. Update version + session count in header
This file is the SSOT for what's broken, fixed, and pending. Skipping = critical failure.
### B.4 Public docs (docs.bituah.net)
IF messaging channels, integrations, AI providers, security, or user-facing features changed:
1. Read admin/public/home.html, privacy-policy.html, terms.html
2. Edit source files, update "Last updated" dates
3. Clone, copy, commit, push to Gold-b/goldb-agent-docs
IF no relevant changes: state "Public docs unchanged" and skip.
---
## PART C — Memory & Learning Extraction
### C.1 Save Memory Files
Write/update memory files in ~/.claude/projects/<project>/memory/ for:
- **Project memories**: features, bugs with root cause, architecture decisions + WHY
- **Feedback memories**: user corrections, approaches that worked/failed
- **Reference memories**: external resources, API endpoints, tool locations
Each file: frontmatter + root cause + how-to-apply section.
### C.2 Update MEMORY.md Index
Add one-line entries to MEMORY.md for each new/updated memory file.
### C.3 Update Plans
- Plans/*.md — update plan status (completed/in-progress/blocked)
- CLAUDE.md — new gotchas, architecture changes, version references
---
## PART D — Session Handoff Document
> **Canonical engine — run `/live-state-orchestrator`.** Perform the Plans/PLAN.md, docs/context/MEMORY.md, docs/context/OPEN-PROBLEMS.md and docs/context/HANDOFF.md updates by invoking **/live-state-orchestrator** — it manages the full handoff lifecycle (active → consumed → archived) and is the SAME engine the Stop hook (`end-session.sh`) enforces. Use the format below as the HANDOFF.md content. (This makes the handoff deterministic across both the hook and the pipeline.)
Generate a self-contained handoff document in this format:
# Session Handoff — [DATE]
## TL;DR
[2-3 sentences]
## Completed Work
[bulleted list with file references]
## Open Issues
### P0 — Blocking
### P1 — High Priority (each with What/Where/Why/Approach)
### P2 — Low Priority
## Key Decisions
## Warnings for Next Session
## Files Changed
## Git State (branch, uncommitted, last commit)
## Suggested First Action for Next Session
---
## PART E — WhatsApp Notification (Optional)
If /whatsapp skill was used this session, send summary via WhatsApp.
Follow BiDi rules. run_in_background: true.
---
## Deliverables
1. Updated MD files list with change summary
2. Public docs status
3. Memory files saved/updated
4. Session handoff document (output to user)
5. Open-Problems.md updated
## Constraints
- Source: C:\openclaw-docker\
- Read BEFORE edit. Never guess file contents.
- Hebrew for prose, English for code/paths.
You are the DevOps Agent. Verify installers and infrastructure are in sync with code changes.
## Pre-Flight
Read C:\openclaw-docker\CLAUDE.md (directory structure, installer sections).
## Task A — Windows Installer (Inno Setup)
1. Read installer/goldb-setup.iss
2. Verify ALL new files from this session are in [Files] section
3. If new .bat/.ps1/.sh created → add Source line
4. If new post-install tasks → verify in installer/post-install.ps1
5. post-install.ps1 MUST be ASCII only (PS 5.1 encoding gotcha)
## Task B — Linux Installer
1. Read installer/install-ubuntu.sh
2. Verify new cron jobs, chmod +x, dependencies
3. auto-update.sh deploys via zipball (files auto-included), but cron/tasks need explicit setup
## Task C — Cross-Platform Parity
- Every new feature: Windows AND Linux implementation (or documented why platform-specific)
- version.json and goldb-setup.iss AppVersion in sync
## Task D — Docker Compose Verification
- Any new volumes, ports, env vars, entrypoint changes in docker-compose.yml
- Gateway wrapper: never change pinned SHA256 digest without approval
- cap_drop: ALL on admin (NOT gateway — breaks DNS)
## Deliverables
- Installer status: files added/verified/unchanged
- Platform parity: confirmed or gaps identified
- Docker: changes validated or issues found
## Constraints
- Source: C:\openclaw-docker\
- If no new distributable files: "Installers unchanged"
The Documentation & Handoff Agent (Phase 3.1) handles ALL documentation and session knowledge extraction. The orchestrator's role here is verification only:
MDs/Open-Problems.md (MANDATORY every session)~/.claude/projects/<project>/memory/This verification is NON-NEGOTIABLE. The Documentation Agent owns the work; the orchestrator owns the quality gate.
Previously: Phase 3.6 mirrored governance files source→client inside /full-finish to prevent Stop-hook blocks.
Why removed: The mirror created a DIFFERENT drift — client's version.json still pointed at the old version (because UPDATE.bat hadn't run) while governance now pointed at the new version. The sync-governance.sh hook then rewrote PLAN/MEMORY back to match old version.json, creating oscillation.
Replacement: The Node-Role Framework v2 makes this phase obsolete. end-session.sh now detects .governance-role: DEPLOYMENT on client and performs a PASSIVE check (file-exist only, no version enforcement). There's no Stop-hook block to prevent, so no mirror is needed during /full-finish. UPDATE.bat is now the SINGLE sync path from REMOTE → LOCAL (atomic, via zipball).
If you're reading this in a NEW session and wondering what changed: see ~/.claude/hooks/governance/_common.sh gov_detect_role() + CLAUDE.md "Node Roles & Governance Model" section.
Before Phase 1 analysis, verify the CWD is on a SOURCE node. /full-finish is a release pipeline — it MUST run from the source-of-truth repo.
ROLE=$(. ~/.claude/hooks/governance/_common.sh; gov_detect_role "$(gov_find_project_root)")
if [ "$ROLE" != "SOURCE" ]; then
echo "/full-finish refuses to run on a $ROLE node."
echo "Release pipelines must execute on the SOURCE node (typically C:\\openclaw-docker\\)."
echo "Switch there and retry."
exit 1
fi
If role is DEPLOYMENT or FROZEN → refuse with clear message. Do NOT proceed.
You perform this phase directly (sequential operations):
MANDATORY — bump version BEFORE commit:
version.json — increment patch (e.g., 1.4.7 → 1.4.8).installer/goldb-setup.iss #define MyAppVersion to match.CLAUDE.md version line (Current version:) AND project overview version.CRITICAL: Never commit under the same version as a previous release. Auto-update compares versions — same = "already up to date" = client skips.
git status to confirm all changes are ready.git log --oneline -5 for commit message style..env, *.enc, *.key; NOT build output: dist/, output/).git commit -m "$(cat <<'EOF'
<concise summary of what changed and why>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"
git pushImmediately after push succeeds:
version.json for current version.goldb-setup.iss AppVersion matches."C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "C:\openclaw-docker\installer\goldb-setup.iss"
installer/output/.git add installer/output/*.exe version.json installer/goldb-setup.iss
git commit -m "$(cat <<'EOF'
Build EXE for v<VERSION>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"
git push
gh release create v<VERSION> installer/output/GoldBAgent-Setup.exe installer/install-ubuntu.sh \
--title "v<VERSION>" \
--notes "Release v<VERSION>"
CRITICAL: Tags MUST be clean semver (v1.4.8). No suffixes. auto-update.ps1 uses [System.Version]::Parse() — suffixes break it.
MANDATORY — immediately after GitHub Release.
⛔ OA Amuta (Hetzner 178.104.17.170) — DO NOT UPDATE. This server is frozen at v1.4.37. Auto-update was removed (cron + files deleted on 2026-03-25). Do NOT push updates, do NOT SSH to trigger push-update, do NOT run any update commands on this server. The server runs independently and must NOT receive new versions.
C:\GoldB-Agent\) → remind user to run UPDATE.bat.This phase has TWO mandatory outputs. Both must be displayed directly to the user (not just saved to files).
Compile a Hebrew summary from all agent outputs:
## דוח Full-Finish — v[VERSION]
### סיכום כללי
- קבצים שנבדקו: X
- סוכנים שפעלו: Y (QA, Security, Integration, PM, Docs, DevOps)
- בעיות שנמצאו: Z (W תוקנו)
- סטטוס: ✓ תקין / ⚠ נדרש תיקון / ✗ חסימה
### QA (סוכן 1)
- שכבות שנבדקו: A-H
- Direct Tests (F): [PASS/FAIL/SKIP — test count]
- E2E Tests (G): [PASS/FAIL — flows tested]
- Flow Tests (H): [PASS/FAIL/SKIP — nodes tested]
- [PASS/FAIL/WARN/FIXED summary]
### אבטחה (סוכן 2)
- שכבות שנבדקו: 1-3
- [CRITICAL/HIGH/MEDIUM/LOW/CLEAN summary]
### אינטגרציה (סוכן 3)
- בדיקות שרצו: T1-T7
- [PASS/FAIL/SKIP counts]
### מנהל פרויקט (אם פעל)
- סטטוס שחרור: GO / BLOCKED
- בעיות ממוזגות + סדר עדיפויות
### תיעוד + Handoff (סוכן 4)
- קבצים שעודכנו/נוצרו
- Public docs: עודכנו / ללא שינוי
- Memory files: saved / updated / none
### DevOps (סוכן 5)
- מתקינים: תקינים / עודכנו / ללא שינוי
- פלטפורמות: Windows + Linux
### גרסה ושחרור
- גרסה: v[VERSION]
- Commit: [HASH]
- Release: [URL]
### עדכון לקוחות
- [per-client status: updated / failed / skipped]
### בעיות פתוחות
- [anything unfixed needing user attention]
Read the handoff document generated by the Docs+Handoff Agent (saved as a memory file) and display it in full to the user. This document is the session's legacy — a new Claude Code session will read it as the first message to have full context.
If the Docs+Handoff Agent saved it to a memory file, read it with the Read tool and output it verbatim. If not saved to a file, reconstruct it from the agent's output using this template:
# Session Handoff — [DATE]
**Branch**: [branch] | **Version**: [version] | **Duration**: [estimate]
## TL;DR
[2-3 sentences]
## Completed Work
[per-release bulleted list with file references]
## Open Issues
### P0 — Blocking
### P1 — High Priority
### P2 — Low Priority
## Key Decisions
## Warnings for Next Session
## Git State
- Branch: [name], Uncommitted: [yes/no], Last commit: [hash]
## Container State
[table of containers + status]
## Suggested First Action for Next Session
[specific, actionable instruction]
CRITICAL: The handoff document MUST be displayed directly in the Phase 7 output. Saving it to a file is NOT sufficient — the user must see it.
Phase 0: /pre-close-check (parallel-session + drift scan) [sequential]
↓
Phase 0.5: Retrospective detection (git describe --exact-match) [sequential, prompt]
↓
Phase 1: Orchestrator analyzes changes [sequential]
↓
Phase 2: QA + Security + Integration + PM agents [parallel]
↓
2.6: Orchestrator merges results, fixes CRITICAL/HIGH [sequential]
↓
Phase 3: Documentation + DevOps agents [parallel]
↓
Phase 3.5: Orchestrator verifies Docs Agent output [sequential]
↓
Phase 3.6: REMOVED (Framework v2) — UPDATE.bat is single sync path
↓
Phase 4: Orchestrator bumps version, commits, pushes [sequential]
↓
Phase 5: Orchestrator builds EXE, creates GitHub release [sequential]
↓
Phase 6: Orchestrator pushes update to all clients [sequential]
↓
Phase 7: Orchestrator compiles final Hebrew report [sequential]
↓
Phase 8: Memory & Knowledge Maintenance [sequential]
↓
Phase 9: Hermetic Close Check (HEAD == tag, clean tree) [sequential, BLOCKS]
Total agents per run: 4-6 (depending on change scope) Parallel waves: 2 (Phase 2 audit wave + Phase 3 docs wave) Entry and exit gates: Phase 0 (parallel-session) + Phase 0.5 (retrospective) open the session; Phase 9 (hermetic close) closes it. If Phase 9 blocks, the skill does NOT return success.
model: opus for QA + Security, model: sonnet for Integration + PM + Docs + DevOps.C:\openclaw-docker\, client C:\GoldB-Agent\. thinkingBudget: 0, ...result.usage spread, _autoSync(), Hebrew UI + English code.v1.4.8). No suffixes — breaks [System.Version]::Parse().admin/WHATSAPP-SAFETY.md is loaded into both AGENTS.md (sync-keywords.js) and KB synthesis prompt (ai-processor.js). Verify wake-up notification sends to personalNumbers on gateway reconnect.This phase runs AFTER Phase 7, before returning control to the user. It prevents knowledge drift across sessions.
archive/, remove from MEMORY.md index.Plans/archive/.Target: minimal file count, zero duplication, all references valid, MEMORY.md under 200 lines.
This phase runs AFTER Phase 8 and MUST complete before you return control to the user. It enforces the invariant that every /full-finish run ends with HEAD at a tagged release — no dangling commits past the tag.
On 2026-04-19, a retrospective /full-finish run produced 3 commits past the v1.4.118 tag (installer fix + EXE rebuild + docs addendum). The release-pipeline phases (4-5) had already been skipped as "no version bump needed — retrospective," but Phases 2/3 still wrote code and docs, then those got committed. The governance end-session.sh hook correctly flagged "2 unreleased commits since v1.4.118" seconds after the pipeline claimed to have finished. This phase closes that class of gap.
Run in the primary source repo:
cd <source_repo>
CURRENT_TAG=$(git describe --tags --exact-match HEAD 2>/dev/null)
CURRENT_VERSION=$(cat version.json 2>/dev/null | python3 -c "import sys,json;print('v'+json.load(sys.stdin).get('version',''))" 2>/dev/null)
DIRTY=$(git status --short 2>/dev/null)
Evaluate:
DIRTY is non-empty → BLOCK. "Hermetic close failed: uncommitted changes still present. Commit or stash them, then re-run Phase 9."CURRENT_TAG is empty → BLOCK. "Hermetic close failed: HEAD has no tag. Either run Phase 4-5 to release this HEAD, or revert any commits that happened after the last tag."CURRENT_TAG != CURRENT_VERSION → BLOCK. "Hermetic close failed: git tag says $CURRENT_TAG but version.json says $CURRENT_VERSION. Align them before close." (This catches the case where version.json was bumped but no release happened, or vice versa.)git rev-list <CURRENT_TAG>..HEAD is non-empty → BLOCK. "Hermetic close failed: HEAD is N commits ahead of tag $CURRENT_TAG. Run /full-finish again in BUMP-ON-FIX mode, or move the tag to HEAD with explicit user approval (git tag -f <tag> HEAD && git push --force origin <tag>)."[phase-9] hermetic close verified:
HEAD = <sha>
tag = <CURRENT_TAG>
version.json = <CURRENT_VERSION>
working tree = clean
commits past tag = 0
When Phase 9 blocks, present the user with concrete options based on the failure mode:
<tag>, or bump tag to match <version>, or release fresh. Which?"Wait for user decision. Never auto-move tags or auto-bump without explicit confirmation.
/full-finish with the right mode or runs a targeted git command./pre-close-check) which scans for parallel-session drift before the pipeline starts. Phase 9 is the symmetric check at the END./full-finish MUST NOT return control to the user with a non-PASS Phase 9 verdict. If the pipeline finished all prior phases but Phase 9 blocks, the skill's final message to the user is the block report, not a success summary.