Use when implementation is complete and all tests pass — guides the disciplined process of verifying, documenting, and landing a change on trunk
Verify → Review evidence → Document → Commit → Confirm.
Announce: "I'm using the landing-a-change skill to complete this work."
Artifact-cached skip: If inside a sprint (CLAVAIN_BEAD_ID set), check whether tests already passed at current HEAD:
BEAD_ID="${CLAVAIN_BEAD_ID:-}"
if [[ -n "$BEAD_ID" ]]; then
test_sha=$(clavain-cli get-artifact "$BEAD_ID" "test-pass-sha" 2>/dev/null) || test_sha=""
current_sha=$(git rev-parse HEAD)
if [[ "$test_sha" == "$current_sha" ]]; then
echo "Tests verified at $test_sha (current HEAD). Skipping re-run."
# Skip to Step 2
fi
fi
If HEAD moved since the last recorded test pass, or no test-pass-sha artifact exists, or not in a sprint: run the full test suite (go test ./... / npm test / pytest / cargo test). If tests fail, stop and fix. Do not proceed.
If a plan existed, invoke verification-before-completion skill. Otherwise proceed.
console.log, fmt.Println, etc.)If deploy-relevant, consider invoking fd-safety.
question: "Implementation verified. How would you like to land this?"
options:
- Commit and push
- Commit locally
- Changelog first (runs /clavain:changelog)
- Review first (show git diff, return to this step)
Commit and push / Commit locally:
git add <specific files> # NOT git add .
git commit -m "feat(scope): description
Co-Authored-By: Claude <noreply@anthropic.com>"
git push # only for "Commit and push"
Commit locally leaves associated beads open. A close is only eligible after
the implementation commit is visible on the remote.
Changelog first: Run /clavain:changelog, then commit.
Review first: Show git diff --stat && git diff, return to Step 4.
After push succeeds and inside a sprint (CLAVAIN_BEAD_ID set), run a lightweight canary check on the merged state:
if [[ -n "${CLAVAIN_BEAD_ID:-}" ]] && [[ "${CLAVAIN_SKIP_CANARY:-}" != "true" ]]; then
source "${CLAUDE_PLUGIN_ROOT}/hooks/lib-sprint.sh" 2>/dev/null || true
if ! sprint_canary_check "$CLAVAIN_BEAD_ID"; then
echo "⚠ Post-merge canary FAILED. Sprint NOT recorded as successful."
echo " Fix the issue and re-run, or set CLAVAIN_SKIP_CANARY=true to override."
# Do NOT close the bead or record success
fi
fi
If canary fails: warn user, emit quality_failure event to Interspect, do NOT record sprint as successful. If canary passes: normal flow continues.
Only after the push and post-push canary succeed, close each selected bead through the canonical gate:
for bead_id in <issue-ids>; do
"${CLAUDE_PLUGIN_ROOT}/scripts/gates/bead-close.sh" "$bead_id" "Landed in pushed commit $(git rev-parse --short HEAD)"
done
bd dolt push
git push
The wrapper verifies any installed-runtime evidence requirement before changing tracker state. If it rejects a bead, leave that bead open and report the gate.
Run /clavain:compound or note insights in project memory files.
git add . — stage specific filesSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer