Files
FastSync/.opencode/skills/release/SKILL.md
T
TapTap 5c8970c64f
CI / lint (pull_request) Successful in 1m29s
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / build-and-test (pull_request) Successful in 1m45s
chore(opencode): fix drifted agent/skill docs and repo hygiene
The agent and skill definitions had drifted badly from the current
codebase and tooling, repeating the same class of bug as the benchmark
tool (references to nonexistent scripts and invented flags):

- Replace the removed `python3 test.py` with the real integration
  command (`python3 -m pytest tests/integration/ -n 4 --dist=load
  -m "not setpriv"`) across agents and skills.
- Fix `feature-scout`'s fabricated CLI flag list (--host, --server-mode,
  --use-* etc.) using the authoritative src/client/usage.c flags.
- Fix `perf-analyst` benchmark flags (-m -c -> -j -z) and point at
  benchmark/bench.py instead of stale numbers.
- Correct `code-explainer` (no getopt_long; --sendfile not -f) and
  version drift in the release skill (1.1.0 -> 2.20.0).
- Replace GitHub/`gh` workflows with Gitea/`tea` (PRs target dev; issues
  via tea; branch strategy updated in all agents).
- Use the built-in `-DSANITIZER=address|thread` CMake option instead of
  hand-rolled -fsanitize flags.
- Add `-p 8080 --allow-unauthenticated` to plain-TCP server examples.
- Merge the redundant security-screener into security-auditor; drop the
  duplicate (16 agents remain).

Repo hygiene: gitignore `root/` and `test_partial_install_tmp/`, remove
the empty leftover trees, delete the tracked scratch scripts tmux.sh and
to_one_file.py, and note the compile_commands.json symlink in README.
2026-09-13 10:34:59 +02:00

2.8 KiB

name, description
name description
release Prepares a FastSync release — version bump, changelog, build verification, and git tagging. Use when the user says "prepare release", "bump version", "tag release", or wants to cut a new version.

Release Skill

Prepares a new release of FastSync. This skill CAN edit files, commit, and tag.

Workflow

Step 1: Determine Version

Ask the user or determine from context:

  • Major (X.0.0) — breaking protocol changes, incompatible CLI changes
  • Minor (x.Y.0) — new features, backward compatible
  • Patch (x.y.Z) — bug fixes, no protocol changes

Current version: PROTOCOL_VERSION "2.20.0" in src/shared/config.h

Step 2: Check Protocol Version

If the wire protocol changed, bump PROTOCOL_VERSION in src/shared/config.h:

#define PROTOCOL_VERSION "1.2.0"  // or "2.0.0" for breaking

Protocol version changes require:

  • Both client and server to be updated together
  • Backward compatibility considerations documented
  • Migration path clear

Step 3: Verify Build and Tests

rm -rf build
cmake -B build -S .
cmake --build build -j$(nproc)
./build/tests
python3 -m pytest tests/integration/ -n 4 --dist=load -m "not setpriv"

ALL tests must pass before release.

Step 4: Run Sanitizer Checks

# ASan
rm -rf build-asan
cmake -B build-asan -S . -DSANITIZER=address
cmake --build build-asan -j$(nproc)
./build-asan/tests

Step 5: Update README (If Needed)

Check if README needs updates:

  • New features documented
  • New CLI flags documented
  • Benchmark results updated
  • Build instructions current

Step 6: Create Release Commit

git add -A
git commit -m "Release vX.Y.Z

- <list of changes>
- Protocol version: X.Y.Z
- Tested: unit tests, integration tests, ASan"

Step 7: Tag the Release

git tag -a vX.Y.Z -m "Release vX.Y.Z"

Step 8: Push and Open dev → main PR

main is protected and only receives changes via dev → main PRs (see AGENTS.md). Never push directly to main.

# Push the release commit and tag to dev
git push origin dev
git push origin vX.Y.Z

# Open the dev → main release PR for review + CI
tea pr create --repo TapTap/FastSync --head dev --base main \
  --title "Release vX.Y.Z" \
  --description "Release vX.Y.Z"

Then wait for the full CI to pass and request review before the PR is merged to main.

Step 9: Report

=== RELEASE SUMMARY ===
Version: vX.Y.Z
Protocol: X.Y.Z
Commit: <hash>
Tag: vX.Y.Z
Changes:
  - <list of changes in this release>
Build: PASS
Tests: PASS (<passed>/<total>)
ASan: CLEAN

Rules

  • DO verify all tests pass before release
  • DO run sanitizer checks before release
  • DO update README if features changed
  • DO tag releases with annotated tags
  • DON'T release if tests fail
  • DON'T skip sanitizer checks
  • DON'T change code during release (only version bump + docs)