본문으로 건너뛰기
cccskills
무료GitHub에 공개

homebrew

Add released versions of Apache SkyWalking AI Sessionizer to its Homebrew tap, Formula/ on main in apache/skywalking-ai-sessionizer. Writes asz@VERSION from the voted packages, moves asz to the newest version, checks every formula with brew, and opens a pull request to main in this repository. Use after a version is published, or to add older released versions.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHub
설치 방법 보기

포함된 파일(2)

  • SKILL.md8.2 KB
  • asz.rb4.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Homebrew tap

Formula/ on main in this repository is the tap. It holds:

From 0.5.0 one formula installs both binaries. Before it there were two, fetching the identical archive and the identical checksum and installing one binary each, which only invited a machine to end up with asz of one version and the recorder of another. A version before 0.5.0 keeps the two-formula shape it was released with, and its formulae stay as they are.

  • asz@VERSION.rb for every released version from 0.5.0, and asz@VERSION.rb with asz-claude-code@VERSION.rb for the versions before it, which stay as they were released, keg-only, so an exact version stays installable;
  • asz.rb for the newest version.

asz.rb beside this file is the template. A formula installs the voted binary package for the machine, macOS or Linux on arm64 or amd64, from the version's GitHub release, with archive.apache.org as its mirror. That URL keeps working after the version leaves the download site. Users run:

brew trust https://github.com/apache/skywalking-ai-sessionizer
brew tap apache/skywalking-ai-sessionizer https://github.com/apache/skywalking-ai-sessionizer
brew install apache/skywalking-ai-sessionizer/asz
brew install apache/skywalking-ai-sessionizer/asz@0.4.0

Homebrew 7 loads a tap that is not its own only after brew trust, and this tap must be trusted by its URL, because the repository is not named homebrew-skywalking-ai-sessionizer. The check below needs no trust: it names each formula in full, which Homebrew takes as trusting that one.

The user names one version or several. Each must be released: voted, on the download site or the archive, and its GitHub release promoted. 0.5.0 is the first version the template fits, because it installs asz-changes, which a package before 0.5.0 does not hold. A version before 0.5.0 is in Formula/ already, with the formulae it was released with; never write it again. This runs on macOS with Homebrew. It changes nothing but a pull request to main in this repository.

A local proxy can break HTTPS to Apache hosts, so the commands below go around it.

1. Check the versions are released

for v in <versions>; do
  for u in "https://downloads.apache.org/skywalking/ai-sessionizer/$v/" "https://archive.apache.org/dist/skywalking/ai-sessionizer/$v/"; do
    curl --noproxy '*' -s -o /dev/null -w "$v $u %{http_code}\n" "$u"
  done
  gh release view "v$v" --repo apache/skywalking-ai-sessionizer --json isPrerelease --jq '"v'"$v"' prerelease=\(.isPrerelease)"'
done

Each version must answer 200 on one of the two sites, and its GitHub release must not be a prerelease. Otherwise stop and tell the user.

2. Branch from main

Work in a worktree, so changes in the main clone are left alone. W is a scratch directory.

git fetch origin
git worktree add -b homebrew-<versions> <scratch dir>/asz origin/main
cd <scratch dir>/asz
W=<scratch dir>/homebrew

3. Download and check the packages

A formula names the sha256 of each package, so each must be the voted file, and must hold what the formula installs. A package that fails here would fail for everyone on its platform.

for v in <versions>; do
  mkdir -p "$W/$v"
  for p in darwin-arm64 darwin-amd64 linux-arm64 linux-amd64; do
    f=apache-skywalking-ai-sessionizer-$v-bin-$p.tgz
    for g in "$f" "$f.sha512"; do
      curl --noproxy '*' -fsSL -o "$W/$v/$g" "https://downloads.apache.org/skywalking/ai-sessionizer/$v/$g" ||
        curl --noproxy '*' -fsSL -o "$W/$v/$g" "https://archive.apache.org/dist/skywalking/ai-sessionizer/$v/$g"
    done
    (cd "$W/$v" && shasum -a 512 -c "$f.sha512")
    tar -tvzf "$W/$v/$f" | awk '($NF == "asz" || $NF == "asz-changes") && $1 ~ /^-rwx/ {n++}
      $NF == "LICENSE" || $NF == "NOTICE" {m++} $NF ~ /^licenses\/./ {l = 1}
      END {if (n != 2 || m != 2 || !l) {print "missing a file the formula installs"; exit 1}}'
  done
done

Stop at the first failure and tell the user.

4. Write the formulae

T=.claude/skills/homebrew
for v in <versions>; do
  sum() { shasum -a 256 "$W/$v/apache-skywalking-ai-sessionizer-$v-bin-$1.tgz" | cut -d ' ' -f 1; }
  mkdir -p "$W/formula-$v"
  for f in asz; do
    sed -e "s/@VERSION@/$v/g" \
      -e "s/@DARWIN_ARM64_SHA256@/$(sum darwin-arm64)/" -e "s/@DARWIN_AMD64_SHA256@/$(sum darwin-amd64)/" \
      -e "s/@LINUX_ARM64_SHA256@/$(sum linux-arm64)/" -e "s/@LINUX_AMD64_SHA256@/$(sum linux-amd64)/" \
      "$T/$f.rb" > "$W/formula-$v/$f.rb"
  done
  # Homebrew names a versioned formula's class after its file: asz@0.4.0 is
  # AszAT040. keg_only keeps it from clashing with the current formula.
  for c in Asz:asz; do
    C=${c%%:*} V=${c%%:*}AT$(printf '%s' "$v" | tr -d .) perl -pe \
      's/^class \Q$ENV{C}\E < Formula$/class $ENV{V} < Formula/; s/^(  license "Apache-2\.0"\n)/$1\n  keg_only :versioned_formula\n/' \
      "$W/formula-$v/${c#*:}.rb" > "$W/formula-$v/${c#*:}@$v.rb"
  done
  grep -n '@[A-Z0-9_]*@' "$W/formula-$v"/*.rb && echo "a placeholder is left"
done
current=""
if [ -f Formula/asz.rb ]; then current=$(sed -nE 's#.*/releases/download/v([0-9.]+)/.*#\1#p' Formula/asz.rb | head -1); fi
newest=$(printf '%s\n' $current <versions> | sort -V | tail -1)
echo "current: ${current:-none}, newest: $newest"

asz.rb moves only forward: to $newest, when it is one of the given versions. Adding an older version never moves them back.

5. Check them with Homebrew

The check installs every new formula from its real GitHub release URL, and removes it afterwards. It must not touch the user's own install. If any of these is installed, stop, tell the user, and do not uninstall it:

for f in asz $(for v in <versions>; do printf 'asz@%s ' "$v"; done); do
  brew list --formula "$f" >/dev/null 2>&1 && echo "$f is installed"
done

Then, in a local tap:

export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 HOMEBREW_NO_ENV_HINTS=1
tap=aszcheck/formulae
brew tap-new --no-git "$tap"
dir=$(brew --repository "$tap")/Formula
for v in <versions>; do cp "$W/formula-$v/asz@$v.rb" "$dir/"; done
if [ "$newest" != "$current" ]; then cp "$W/formula-$newest/asz.rb" "$dir/"; fi
env -u http_proxy -u https_proxy -u all_proxy brew style "$tap"
for f in "$dir"/*.rb; do
  n=$tap/$(basename "$f" .rb)
  env -u http_proxy -u https_proxy -u all_proxy brew audit --strict --formula "$n"
  env -u http_proxy -u https_proxy -u all_proxy brew install --formula "$n"
  brew test "$n"
done
for v in <versions>; do
  "$(brew --prefix "asz@$v")/bin/asz" version
  "$(brew --prefix "asz@$v")/bin/asz-changes" version
done

Every step must pass, and each binary must print its version. When asz.rb moved, the asz and asz-changes on $(brew --prefix)/bin must print $newest, and link into the asz keg, not a versioned one. Then remove everything the check installed, whether it passed or not:

for f in "$dir"/*.rb; do brew uninstall --formula "$tap/$(basename "$f" .rb)"; done
brew untap "$tap"

6. Put them into Formula/

mkdir -p Formula
for v in <versions>; do cp "$W/formula-$v/asz@$v.rb" Formula/; done
if [ "$newest" != "$current" ]; then cp "$W/formula-$newest/asz.rb" Formula/; fi
git status --short

Only files under Formula/ may change.

7. Open the pull request to main

git add Formula
git commit -m "Homebrew formulae for <versions>"
git push -u origin homebrew-<versions>
gh pr create --repo apache/skywalking-ai-sessionizer --base main --title "Homebrew formulae for <versions>"

The commit message and the pull request carry no AI attribution: no Co-Authored-By line and no "Generated with" line. Say in the pull request which versions were added, which version the asz formula installs now, and that the check passed.

8. After the merge

Anyone who tapped runs brew update, then brew upgrade asz. Tell the user the pull request link, and remove the worktree and W once it is merged.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

apt

무료

Add released versions of Apache SkyWalking AI Sessionizer to its apt repository, static/apt in apache/skywalking-website, which the website serves at https://skywalking.apache.org/apt. Verifies the voted .deb packages, adds them to the index with apt-ftparchive, signs the index with the release manager's key, writes the .htaccess redirects, installs through them with apt, and opens a pull request to apache/skywalking-website. Use after a version is published.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/skywalking-ai-sessionizer72026년 10월 19일 업데이트

collect

무료

Collect this machine's local Claude Code conversation data with the asz collector. Resolves the local Claude data directory (honouring CLAUDE_CONFIG_DIR and XDG_CONFIG_HOME), builds the binary, lists what is discoverable, and lands everything into the storage root. Use when asked to collect, backfill, re-collect, or inspect local Claude Code sessions, or to check what the collector can see.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/skywalking-ai-sessionizer72026년 10월 19일 업데이트

pypi

무료

Publish a released version of the Apache SkyWalking AI Sessionizer LangChain plugin, apache-skywalking-asz-langchain, to PyPI. Says what a release manager sets up before the first upload, downloads the voted source package, verifies it, builds the source distribution and the wheel from plugins/langchain inside it, checks and installs them, and uploads them with twine. Use after a version is published.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/skywalking-ai-sessionizer72026년 10월 19일 업데이트

apache의 스킬 모두 보기

이 스킬의 문제 신고