sync-skills-lock

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

sync-skills-lock

sync-skills-lock

ルート直下の
skills-lock.json
computedHash
を、upstream リポジトリの現状と照合して更新します。
将根目录下
skills-lock.json
中的
computedHash
与上游(upstream)仓库的当前状态进行比对并更新。

対象ファイル

目标文件

  • ルート: 呼び出し元リポジトリ直下の
    skills-lock.json
    — このスキルが唯一編集するファイル
  • 除外: submodule 配下の
    skills-lock.json
    — submodule 境界を跨がないため 絶対に触らない
  • 根目录:调用方仓库根目录下的
    skills-lock.json
    — 本技能唯一会编辑的文件
  • 排除项:子模块(submodule)下的
    skills-lock.json
    — 为不跨越子模块边界,绝对不会修改

前提条件

前提条件

  • gh
    CLI がインストールされ、認証済みであること
  • ルート直下の
    skills-lock.json
    が存在すること
  • 已安装
    gh
    CLI并完成认证
  • 根目录下存在
    skills-lock.json

フロー

流程

Step 1: 引数を確認する

Step 1: 确认参数

bash
TARGET="$ARGUMENTS"  # 空なら全スキル対象
引数ありの場合は該当スキルのみ処理、なしの場合は
skills-lock.json
の全エントリを対象にします。
bash
TARGET="$ARGUMENTS"  # 为空则处理所有技能
若有参数则仅处理对应技能,若无参数则处理
skills-lock.json
中的所有条目。

Step 2: upstream 一覧を集計する

Step 2: 汇总上游仓库列表

skills-lock.json
を読み、
source
フィールドごとにスキルをグルーピングします(同一リポへの fetch を 1 回にまとめるため)。
Fandhe-AI/agent-cli-skills:
  - create-commit
  - create-issue
  - ...
读取
skills-lock.json
,按
source
字段对技能进行分组(为了将同一仓库的fetch操作合并为一次)。
Fandhe-AI/agent-cli-skills:
  - create-commit
  - create-issue
  - ...

Step 3: upstream を取得する

Step 3: 获取上游仓库

安全弁: clone 前に必ず
source
フィールドが信頼された prefix で始まっていることを確認します。本スキルは
Fandhe-AI/
で始まる source のみを許可します(
contribute-skill
と同じポリシー)。想定外の source は skip してユーザーに警告します。
skills-lock.json
の改ざん・誤設定によって untrusted リポジトリから clone することを防ぐためです。
bash
undefined
安全机制:克隆前必须确认
source
字段以可信前缀开头。本技能仅允许以
Fandhe-AI/
开头的source(与contribute-skill采用相同策略)。对于非预期的source将跳过并向用户发出警告。这是为了防止因
skills-lock.json
被篡改或配置错误而从不信任的仓库克隆内容。
bash
undefined

source の検証(Fandhe-AI/ で始まらないエントリは skip)

source验证(不以Fandhe-AI/开头的条目将被跳过)

case "$SOURCE" in Fandhe-AI/*) ;; # OK *) echo "警告: 想定外の source: $SOURCE — このスキルは skip します" continue ;; esac

リポジトリごとに以下を実行:

```bash
UID_VAL=$(id -u)
TS=$(date +%Y%m%d-%H%M%S)
WORKDIR="/tmp/claude-${UID_VAL}/sync-skills-${TS}"
mkdir -p "$WORKDIR"
case "$SOURCE" in Fandhe-AI/*) ;; # 验证通过 *) echo "警告: 非预期的source: $SOURCE — 本技能将跳过该条目" continue ;; esac

针对每个仓库执行以下操作:

```bash
UID_VAL=$(id -u)
TS=$(date +%Y%m%d-%H%M%S)
WORKDIR="/tmp/claude-${UID_VAL}/sync-skills-${TS}"
mkdir -p "$WORKDIR"

sandbox 環境では各コマンドに GIT_SSL_NO_VERIFY=1 を前置する(詳細: docs/sandbox-tls.md)

在sandbox环境中,需在各命令前添加GIT_SSL_NO_VERIFY=1(详情: docs/sandbox-tls.md)

gh repo clone Fandhe-AI/<repo> "$WORKDIR/<repo>"
undefined
gh repo clone Fandhe-AI/<repo> "$WORKDIR/<repo>"
undefined

Step 4: 各スキルの SHA256 を計算する

Step 4: 计算各技能的SHA256哈希值

upstream 側のスキルパスを特定し(
skills/<name>/
もしくは
.agents/skills/<name>/
)、配下の全ファイルから安定した順で SHA256 を計算します。
ハッシュの対象は
SKILL.md
単体か配下全体かを upstream の規約に合わせます(初期実装では
SKILL.md
のみを対象とし、今後
references/
等を含める場合は方針を明記してからアップデートします)。
bash
undefined
确定上游仓库中的技能路径(
skills/<name>/
.agents/skills/<name>/
),并按稳定顺序计算该路径下所有文件的SHA256哈希值。
哈希计算的对象需符合上游仓库的规范(初期实现仅以
SKILL.md
为计算对象,未来若需包含
references/
等目录,需明确方针后再进行更新)。
bash
undefined

SKILL.md 単体の例

仅计算SKILL.md哈希值的示例

sha256sum "$WORKDIR/<repo>/skills/<name>/SKILL.md" | awk '{print $1}'
undefined
sha256sum "$WORKDIR/<repo>/skills/<name>/SKILL.md" | awk '{print $1}'
undefined

Step 5: 差分を表示する

Step 5: 显示差异

計算した新しい
computedHash
と現在の
computedHash
を比較し、テーブルで表示します。
| スキル名            | 現在の hash (頭10字) | 新しい hash (頭10字) | 差分 |
|--------------------|---------------------|---------------------|------|
| create-commit      | 80e2dd2232          | 80e2dd2232          | なし |
| contribute-skill   | (未登録)           | xxxxxxxxxx          | 新規 |
将计算得到的新
computedHash
与当前的
computedHash
进行比较,并以表格形式展示。
| 技能名            | 当前哈希值(前10位) | 新哈希值(前10位) | 差异 |
|--------------------|---------------------|---------------------|------|
| create-commit      | 80e2dd2232          | 80e2dd2232          | 无 |
| contribute-skill   | (未注册)           | xxxxxxxxxx          | 新增 |

Step 6: ユーザーに承認を求める

Step 6: 请求用户确认

差分がある場合のみ、ユーザーに「この更新を適用してよいか」を確認します。承認がなければ中止します。
仅当存在差异时,向用户确认是否应用该更新。若无确认则中止操作。

Step 7:
skills-lock.json
を更新する

Step 7: 更新
skills-lock.json

呼び出し元リポジトリ直下の
skills-lock.json
のみを更新します。submodule 配下の
skills-lock.json
絶対に触りません(submodule 境界を跨がない)。
bash
undefined
仅更新调用方仓库根目录下的
skills-lock.json
绝对不会修改子模块下的
skills-lock.json
(不跨越子模块边界)。
bash
undefined

jq を使う例

使用jq的示例

jq '.skills."create-commit".computedHash = "<new-hash>"'
skills-lock.json > skills-lock.json.tmp && mv skills-lock.json.tmp skills-lock.json

JSON のフォーマット(インデント、キー順)は既存形式を維持します。
jq '.skills."create-commit".computedHash = "<new-hash>"'
skills-lock.json > skills-lock.json.tmp && mv skills-lock.json.tmp skills-lock.json

JSON的格式(缩进、键顺序)将保持原有格式。

Step 8: コミット提案

Step 8: 提交建议

bash
git add skills-lock.json
git commit -m "$(cat <<'EOF'
chore(skills-lock): upstream の最新ハッシュと同期

<変更内容の要約>
EOF
)"
ユーザーに commit してよいか確認します。差分がなかった場合はコミットせずその旨を伝えます。
bash
git add skills-lock.json
git commit -m "$(cat <<'EOF'
chore(skills-lock): 与上游最新哈希值同步

<变更内容摘要>
EOF
)"
向用户确认是否进行提交。若无差异则不提交并告知用户。

注意事項

注意事项

  • ルートの
    skills-lock.json
    のみを編集
    :submodule 配下は手を付けない
  • source prefix 検証 (必須)
    source
    Fandhe-AI/
    で始まらないエントリは clone せず skip する(
    contribute-skill
    と同じ安全弁)。
    skills-lock.json
    の改ざんや誤設定から防御するため
  • upstream の path 構造を事前確認
    skills/<name>/
    .agents/skills/<name>/
  • ハッシュ算出対象の一貫性:上流側との合意が必要。初期は
    SKILL.md
    のみを推奨
  • sandbox 環境での
    GIT_SSL_NO_VERIFY=1
    併用
    :詳細は後述の「sandbox 環境での実行」節を参照
  • 新スキルの取扱い:ローカルに存在するが upstream に未登録のスキル(
    contribute-skill
    ,
    sync-skills-lock
    自身など)は、upstream マージ後に登録する。マージ前に
    computedHash
    を勝手に書き込まない
  • 仅编辑根目录的
    skills-lock.json
    :不修改子模块下的文件
  • source前缀验证(必须)
    source
    不以
    Fandhe-AI/
    开头的条目将跳过不克隆(与contribute-skill采用相同的安全机制)。用于防御
    skills-lock.json
    被篡改或配置错误的情况
  • 提前确认上游路径结构:确认是
    skills/<name>/
    还是
    .agents/skills/<name>/
  • 哈希计算对象的一致性:需与上游达成共识。初期推荐仅以
    SKILL.md
    为计算对象
  • sandbox环境需配合
    GIT_SSL_NO_VERIFY=1
    使用
    :详情请参考后文的「sandbox环境执行」章节
  • 新技能的处理:本地存在但上游未注册的技能(如contribute-skill、sync-skills-lock自身等),需在上游合并后再进行注册。不会擅自写入
    computedHash

sandbox 環境での実行

sandbox环境执行

sandbox で本スキルを実行する場合、ネットワーク越しの GitHub 操作には
GIT_SSL_NO_VERIFY=1
の併用を検討してください。本スキルの主なリモート操作は
gh repo clone
で、「リモート書き込み」判定は 要(本スキルは read-only) です。コマンド分類の詳細と TLS 検証無効化の注意事項は
docs/sandbox-tls.md
を参照してください。
在sandbox环境中执行本技能时,对于跨网络的GitHub操作,建议配合使用
GIT_SSL_NO_VERIFY=1
。本技能的主要远程操作为
gh repo clone
,「远程写入」判定为否(本技能为只读操作)。命令分类详情及TLS验证禁用的注意事项请参考
docs/sandbox-tls.md

既存スキルとの関係

与现有技能的关系

  • contribute-skill
    でスキル改修が upstream にマージされた後に本スキルを実行する運用を推奨
  • create-commit
    の Conventional Commits を踏襲(Step 8)
  • 推荐在contribute-skill的技能修改合并到上游仓库后,再执行本技能
  • 遵循
    create-commit
    的Conventional Commits规范(Step 8)