Complete workflow for verifying and committing Brane SDK changes. Run after implementing fixes/features to verify impact, test affected modules, and prepare for commit.
This skill orchestrates the complete verification-to-commit workflow for Brane SDK changes.
Related Skills:
/brane-impact - Detailed impact analysis and test discovery (invoked automatically in Step 2)After implementing a fix or feature, invoke /brane-ship to:
brane-impact skill logic)First, identify what changed using git:
git status
git diff --name-only HEAD~1 | grep '\.java$'
Determine the primary module(s) affected and severity:
| Module | Impact | Downstream |
|--------|--------|------------|
| brane-primitives | HIGH | ALL modules |
| brane-core | HIGH | rpc, contract |
| brane-rpc | MEDIUM | contract |
| brane-contract | LOW | none |
Run the impact analysis script (leverages brane-impact skill knowledge):
./.claude/scripts/verify_change.sh
This shows:
ALL THREE TEST LAYERS ARE MANDATORY. NEVER SKIP ANY.
Run tests in topological order based on the affected module:
| If Changed | Run Tests |
|------------|-----------|
| brane-primitives | ./gradlew :brane-primitives:test :brane-core:test :brane-rpc:test :brane-contract:test |
| brane-core | ./gradlew :brane-core:test :brane-rpc:test :brane-contract:test |
| brane-rpc | ./gradlew :brane-rpc:test :brane-contract:test |
| brane-contract | ./gradlew :brane-contract:test |
Start Anvil (no permission needed) and run integration tests:
# Start Anvil in background (if not already running)
anvil &
# Run integration tests
./scripts/test_integration.sh
Run full E2E smoke tests:
./scripts/test_smoke.sh
Rule: If ANY test fails at ANY layer, STOP. Fix the issue before proceeding.
Run the pre-commit verification:
./.claude/scripts/pre_commit_check.sh
This ensures all affected modules compile and tests pass.
If all checks pass, create the commit:
git add -A
git commit -m "type(scope): description [TICKET-ID]"
git push
Follow conventional commit format:
fix(rpc): - Bug fix in rpc modulefeat(core): - New feature in core modulerefactor(contract): - Refactoring in contract moduledocs(*) - Documentation changestest(*) - Test additions/fixesbrane-primitives (no deps)
|
v
brane-core (BouncyCastle, Jackson)
|
v
brane-rpc (Netty, Disruptor)
|
v
brane-contract
|
v
brane-examples / brane-smoke
When module X changes, all modules below X in the graph must be tested.
# Full workflow (analyze + test + check)
./.claude/scripts/verify_change.sh --run
# Quick (compile only, skip tests)
./.claude/scripts/pre_commit_check.sh --quick
# Single module test
./gradlew :brane-rpc:test
# Specific test class
./gradlew :brane-rpc:test --tests "sh.brane.rpc.BraneTest"
# Integration tests (requires Anvil)
./scripts/test_integration.sh
When /brane-ship is invoked, follow these steps:
git status to see staged/unstaged changesgit diff --name-only to identify changed files./.claude/scripts/verify_change.shanvil &./gradlew :{module}:test for affected + downstream modules./scripts/test_integration.sh./scripts/test_smoke.shCRITICAL: Never skip integration or smoke tests. All three layers are equally important.
./.claude/scripts/pre_commit_check.shgit diff --stat summary/brane-docs firstgit add -A && git commit -m "..." && git push| Failure Type | Action | |--------------|--------| | Compilation error | Show error, suggest fix, do not proceed | | Test failure | Show failed test, do not proceed to commit | | Pre-commit check fails | Show which module failed, do not commit |
Never skip failing tests. Never use --no-verify unless explicitly requested.
After implementing a fix:
User: I fixed the logIndex null issue in LogParser
User: /brane-ship
Claude: [Runs full workflow, tests brane-rpc + brane-contract, commits]
Quick verify without commit:
User: /brane-ship --no-commit
Claude: [Runs analysis and tests only, skips commit step]
Specify module explicitly:
User: /brane-ship brane-core
Claude: [Tests brane-core and all downstream modules]
Search 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