@tyhld/conductor 0.12.2 → 0.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-prompt.js +5 -1
- package/dist/cli.js +1 -1
- package/package.json +1 -1
- package/sales-template/README.md +2 -1
- package/sales-template/install.sh +103 -21
- package/sales-template/setup.sh +88 -15
- package/skills/conductor-craftsman/SKILL.md +7 -1
package/dist/build-prompt.js
CHANGED
|
@@ -129,7 +129,11 @@ export function buildCraftsmanPrompt(input) {
|
|
|
129
129
|
'・秘密(.env の中身)を画面にも報告にも出さない。',
|
|
130
130
|
'',
|
|
131
131
|
'■ 締め方',
|
|
132
|
-
|
|
132
|
+
// ★合流の作法は職人の鉄則7と同じ形にする(便 4a5bbb9f)。片方だけ古いと、
|
|
133
|
+
// 職人は毎便読む鉄則と、ここで渡される文の【両方】を受け取って食い違う。
|
|
134
|
+
'・テストが緑になってから push → プルリクエストを作成 → `gh pr merge <番号> --auto --merge --delete-branch`。',
|
|
135
|
+
' (「auto-merge が使えない」と断られたリポだけ、CI が緑なのを確かめてから `gh pr merge <番号> --merge --delete-branch`)',
|
|
136
|
+
'・★`--admin` など保護を迂回する旗は使わない。保護が理由で合流できないときは、回避せず報告して止まる。',
|
|
133
137
|
'・報告は簡潔に(変更したファイル・要点・確かめた結果)。専門用語はできるだけ避ける。',
|
|
134
138
|
'・途中で人の判断が要るところに当たったら、無理に進めず outcome=blocked で終え、理由を1行で書く。',
|
|
135
139
|
'',
|
package/dist/cli.js
CHANGED
|
@@ -373,7 +373,7 @@ function runSetupCommand(argv) {
|
|
|
373
373
|
if (!existsSync(setup)) {
|
|
374
374
|
fail(`インストーラが見つかりません: ${setup}\n` +
|
|
375
375
|
' 配布物が壊れている可能性があります。次の1行で入れ直してください:\n' +
|
|
376
|
-
' npm i -g @tyhld/conductor');
|
|
376
|
+
' npm i -g @tyhld/conductor --@tyhld:registry=https://registry.npmjs.org');
|
|
377
377
|
}
|
|
378
378
|
const r = spawnSync('bash', [setup, ...argv], { stdio: 'inherit' });
|
|
379
379
|
process.exit(r.status ?? 1);
|
package/package.json
CHANGED
package/sales-template/README.md
CHANGED
|
@@ -236,7 +236,8 @@ APPLY=1 bash scripts/update-allowed-domains.sh # 内容に納得したら適用
|
|
|
236
236
|
**設計思想: 「危険だけ確実に止める・それ以外は自動許可」**
|
|
237
237
|
|
|
238
238
|
- 赤(deny): 取り返しのつかない操作(force push、本番DB破壊、rm -rf 等)を問答無用でブロック
|
|
239
|
-
- 黄(ask):
|
|
239
|
+
- 黄(ask): 本番デプロイ・本番DB実行・main への直接 push など、実行自体は正当だが人間の確認が欲しい操作
|
|
240
|
+
(★PR のマージはここに入りません。職人が合流まで行います=ADR-007。ただし保護を迂回する旗(`--admin` 等)は使わず、CI が緑になってから合流します=職人の鉄則7)
|
|
240
241
|
- 白(allow): ビルド・テスト・git 操作・ファイル閲覧など、日常開発で安全な操作を自動許可
|
|
241
242
|
|
|
242
243
|
## セットアップ手順
|
|
@@ -77,10 +77,17 @@ NODE_MAJOR_WANTED=24
|
|
|
77
77
|
# (2026-09-16 11:01 に3現場で発生)、逆に本当に止まる2種(端末で Enter が要る/
|
|
78
78
|
# 続きの指示が要る)も同じ文面で出るので、何をすればよいか分からなかった。
|
|
79
79
|
# 0.12.1 で3種を分けた。下限を上げないと 0.12.0 の機に届かない。
|
|
80
|
+
# 【0.12.3 へ上げた理由(えふさん確定 2026-09-16・便 4a5bbb9f)】
|
|
81
|
+
# 0.12.2 までの職人の鉄則7は「その他のリポは gh pr merge --admin」と★指示していた。
|
|
82
|
+
# --admin は branch protection(CI が通っていない物を main に入れない仕組み)を迂回する旗で、
|
|
83
|
+
# 保護を足した日から「赤いまま本番の元が変わる」。実測 2026-09-16: 会話の記録で
|
|
84
|
+
# gh pr merge 1,225 回のうち 513 回が --admin(13 現場・11 日間)。
|
|
85
|
+
# 0.12.3 で鉄則7を「まず auto merge/使えないリポは通常の合流/--admin は使わない」に直した。
|
|
86
|
+
# ★鉄則は npm の配布物(skills/)に入っているので、下限を上げないと古い鉄則のまま回り続ける。
|
|
80
87
|
# ★食い違うと「入口は通したのに設置係が止める」が起きる。テストで同一を固定してある。
|
|
81
88
|
# ★公開 npm の latest より新しい値を書かないこと(書くと全員が設置できなくなる)。
|
|
82
89
|
# package.json の版を超えていないことをテストで固定してある。
|
|
83
|
-
MIN_CONDUCTOR_VERSION="0.12.
|
|
90
|
+
MIN_CONDUCTOR_VERSION="0.12.3"
|
|
84
91
|
|
|
85
92
|
# nvm の版は固定する(毎回ちがう版が降ってくると再現しない)。
|
|
86
93
|
NVM_VERSION='v0.40.1'
|
|
@@ -254,6 +261,57 @@ conductor_version() {
|
|
|
254
261
|
fi
|
|
255
262
|
}
|
|
256
263
|
|
|
264
|
+
# ═════════════════════════════════════════════════════════════════════════════
|
|
265
|
+
# ★采配くん本体の取得元(この4行と2つの関数が【正本】・えふさん確定 2026-09-16)
|
|
266
|
+
#
|
|
267
|
+
# 【なぜ要るか(実測 2026-09-16・便 9858450b)】
|
|
268
|
+
# 開発機は私設の部品(@tyhld/auth 等)を GitHub Packages から取るため、
|
|
269
|
+
# `@tyhld` の取得先そのものが GitHub Packages を向いている。
|
|
270
|
+
# npm config get @tyhld:registry -> https://npm.pkg.github.com
|
|
271
|
+
# npm view @tyhld/conductor version -> 0.5.0 (GitHub Packages の古い版)
|
|
272
|
+
# npm view @tyhld/conductor version --@tyhld:registry=https://registry.npmjs.org
|
|
273
|
+
# -> 0.12.3 (公開 npm の今の版)
|
|
274
|
+
# この状態で `npm update -g @tyhld/conductor` を打つと、GitHub Packages の 0.5.0 を
|
|
275
|
+
# 入れ直す。だから「更新しました」と出たあとに「版が古すぎます」で止まっていた。
|
|
276
|
+
#
|
|
277
|
+
# 【決めたこと】★`@tyhld` の設定そのものは変えない(他の社内部品は GitHub Packages のまま)。
|
|
278
|
+
# 本体を取る・更新する・版を問い合わせるときだけ、そのコマンド1回に限って公開 npm を
|
|
279
|
+
# 明示する。`--@tyhld:registry=…` はそのコマンドの中だけで効き、~/.npmrc も
|
|
280
|
+
# npm の全体設定も1文字も書き換えない。
|
|
281
|
+
# ★この指定は「そのコマンドで @tyhld のものを取るとき」に効くので、本体と他の社内部品を
|
|
282
|
+
# 【同じ1回のコマンドで】入れてはいけない。下の関数は本体だけを扱う。
|
|
283
|
+
#
|
|
284
|
+
# 【お客さま機では何も変わらない】`@tyhld` の設定を持たない機は、もともと公開 npm を見る。
|
|
285
|
+
# 明示しても指す先は同じなので、動きは1ミリも変わらない。
|
|
286
|
+
# ═════════════════════════════════════════════════════════════════════════════
|
|
287
|
+
# >>> registry-pin >>> ★この印の間が正本。2つの台本で1文字も違わないことをテストが固定する。
|
|
288
|
+
CONDUCTOR_PKG="@tyhld/conductor"
|
|
289
|
+
CONDUCTOR_REGISTRY="https://registry.npmjs.org"
|
|
290
|
+
# ★npm へ渡す1個の旗。これを付けた回だけ、本体の取得先が公開 npm になる。
|
|
291
|
+
CONDUCTOR_REGISTRY_ARG="--@tyhld:registry=${CONDUCTOR_REGISTRY}"
|
|
292
|
+
|
|
293
|
+
# 公開 npm が「いま配っている版」を問い合わせる(取れなければ空)。
|
|
294
|
+
# ★これが「今回入れるはずの版」の正本。固定の下限ではなく、取得元に聞いた値を使う。
|
|
295
|
+
conductor_published_version() {
|
|
296
|
+
local v
|
|
297
|
+
v="$(npm view "$CONDUCTOR_PKG" version "$CONDUCTOR_REGISTRY_ARG" 2>/dev/null | tr -d '[:space:]')"
|
|
298
|
+
if [[ "$v" =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
|
|
299
|
+
printf '%s' "${BASH_REMATCH[0]}"
|
|
300
|
+
fi
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
# 本体を入れる/更新する。引数があればその版、無ければ公開 npm の今の版。
|
|
304
|
+
# ★版を決め打ちで渡すので「@latest と書いたのに別の版が入った」が起こせない。
|
|
305
|
+
conductor_npm_install() {
|
|
306
|
+
local want="${1:-}"
|
|
307
|
+
if [[ -z "$want" ]]; then
|
|
308
|
+
npm install -g "$CONDUCTOR_PKG" "$CONDUCTOR_REGISTRY_ARG"
|
|
309
|
+
else
|
|
310
|
+
npm install -g "${CONDUCTOR_PKG}@${want}" "$CONDUCTOR_REGISTRY_ARG"
|
|
311
|
+
fi
|
|
312
|
+
}
|
|
313
|
+
# <<< registry-pin <<<
|
|
314
|
+
|
|
257
315
|
# apt の道具が「もう使える」か。
|
|
258
316
|
#
|
|
259
317
|
# ★名前が入っているかだけでは足りない。python3-venv は【まとめ役の名前】で、実体は
|
|
@@ -359,7 +417,7 @@ if [[ "${2:-}" == --profile* ]]; then
|
|
|
359
417
|
|
|
360
418
|
試作の現場を作るときは、先に采配くんを入れてから次のように打ってください:
|
|
361
419
|
|
|
362
|
-
npm i -g @tyhld/conductor
|
|
420
|
+
npm i -g @tyhld/conductor --@tyhld:registry=https://registry.npmjs.org
|
|
363
421
|
conductor setup ${SITE} --profile proto
|
|
364
422
|
|
|
365
423
|
USAGE
|
|
@@ -385,7 +443,7 @@ Mac をお使いのようです。この1行の入口は Windows(WSL2 + Ubuntu
|
|
|
385
443
|
|
|
386
444
|
Mac では、次の2行で設置してください。
|
|
387
445
|
|
|
388
|
-
npm i -g @tyhld/conductor
|
|
446
|
+
npm i -g @tyhld/conductor --@tyhld:registry=https://registry.npmjs.org
|
|
389
447
|
conductor setup <お仕事の名前>
|
|
390
448
|
|
|
391
449
|
(先に Homebrew で tmux を、npm で Claude Code を入れてログインしておいてください)
|
|
@@ -735,27 +793,56 @@ step '⑨ 采配くん本体を入れる'
|
|
|
735
793
|
# 公開 npm には 0.3.0 しか出ておらず、お客さまはそれを掴んでいた。0.3.0 は古い鍵名
|
|
736
794
|
# (CONDUCTOR_SHARED_SECRET)を読むので、いまの接続情報では「未設定です」で落ちる。
|
|
737
795
|
# =ここで気づかないと「設置は成功したのに指示が1つも届かない」で終わる。
|
|
796
|
+
# ★入れる版は「公開 npm に聞いた版」(えふさん確定 2026-09-16)。取得元は上の正本に任せる。
|
|
797
|
+
CONDUCTOR_WANT="$(conductor_published_version)"
|
|
798
|
+
|
|
738
799
|
if [[ "$DRY_RUN" == "1" ]]; then
|
|
739
800
|
if have conductor; then
|
|
740
801
|
CONDUCTOR_VER="$(conductor_version)"
|
|
741
|
-
if [[ -n "$
|
|
742
|
-
skip "采配くん本体は入っています(${CONDUCTOR_VER}
|
|
802
|
+
if [[ -n "$CONDUCTOR_WANT" && "$CONDUCTOR_VER" == "$CONDUCTOR_WANT" ]]; then
|
|
803
|
+
skip "采配くん本体は入っています(${CONDUCTOR_VER} = 公開 npm の ${CONDUCTOR_WANT})"
|
|
743
804
|
else
|
|
744
|
-
plan "
|
|
805
|
+
plan "采配くん本体を ${CONDUCTOR_WANT:-最新版} へ揃えます(いま ${CONDUCTOR_VER:-不明})"
|
|
745
806
|
fi
|
|
746
807
|
else
|
|
747
|
-
plan
|
|
808
|
+
plan "采配くん本体を入れます(${CONDUCTOR_PKG}@${CONDUCTOR_WANT:-最新版}・取得先 ${CONDUCTOR_REGISTRY})"
|
|
748
809
|
fi
|
|
749
|
-
elif have conductor && [[ -n "$(conductor_version)" ]]
|
|
750
|
-
|
|
751
|
-
skip "采配くん本体は入っています($(conductor_version)
|
|
810
|
+
elif have conductor && [[ -n "$CONDUCTOR_WANT" ]] && [[ "$(conductor_version)" == "$CONDUCTOR_WANT" ]]; then
|
|
811
|
+
# ★一致していれば何もしない。下限ではなく「公開 npm の今の版と同じか」で見る。
|
|
812
|
+
skip "采配くん本体は入っています($(conductor_version) = 公開 npm の ${CONDUCTOR_WANT})"
|
|
752
813
|
record "采配くん本体: 済み($(conductor_version))"
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
814
|
+
else
|
|
815
|
+
if have conductor; then
|
|
816
|
+
say " いま入っている版: $(conductor_version || echo '読み取れません')(公開 npm は ${CONDUCTOR_WANT:-不明})"
|
|
817
|
+
doing '采配くん本体を新しくします'
|
|
818
|
+
else
|
|
819
|
+
doing '采配くん本体を入れます'
|
|
820
|
+
fi
|
|
821
|
+
conductor_npm_install "$CONDUCTOR_WANT" \
|
|
822
|
+
|| die "采配くん本体を入れられませんでした(取得先 ${CONDUCTOR_REGISTRY}・インターネット接続をご確認ください)"
|
|
823
|
+
have conductor || die '采配くん本体を入れましたが呼び出せません(PATH の設定をご確認ください)'
|
|
757
824
|
CONDUCTOR_VER="$(conductor_version)"
|
|
825
|
+
# ★入れた版と、実際に動く版が一致するか(★この便の要・便 9858450b)。
|
|
826
|
+
# 合否は固定の下限ではなく、取得元に聞いた版との一致で決める。
|
|
827
|
+
if [[ -n "$CONDUCTOR_WANT" && -n "$CONDUCTOR_VER" && "$CONDUCTOR_VER" != "$CONDUCTOR_WANT" ]]; then
|
|
828
|
+
halt "$(cat <<MSG
|
|
829
|
+
入れた版と、実際に動く版が違います。
|
|
830
|
+
|
|
831
|
+
期待した版(${CONDUCTOR_REGISTRY} が配っている版): ${CONDUCTOR_WANT}
|
|
832
|
+
実際に動く版 : ${CONDUCTOR_VER}
|
|
833
|
+
実行ファイルの場所:
|
|
834
|
+
$(command -v -a conductor 2>/dev/null | sed 's/^/ /' || echo ' (見つかりません)')
|
|
835
|
+
|
|
836
|
+
★別の取得先から入った物が、PATH の先にいます。次の1行で入れ直してください。
|
|
837
|
+
|
|
838
|
+
npm install -g ${CONDUCTOR_PKG}@${CONDUCTOR_WANT} ${CONDUCTOR_REGISTRY_ARG}
|
|
839
|
+
|
|
840
|
+
それでも直らないときは、この画面をそのままサポートへお送りください。
|
|
841
|
+
MSG
|
|
842
|
+
)"
|
|
843
|
+
fi
|
|
758
844
|
if [[ -n "$CONDUCTOR_VER" ]] && version_lt "$CONDUCTOR_VER" "$MIN_CONDUCTOR_VERSION"; then
|
|
845
|
+
# ★下限の確認は今までの役割のまま残す(配布そのものが止まっている場合の受け皿)。
|
|
759
846
|
halt "$(cat <<MSG
|
|
760
847
|
采配くん本体の版が古すぎます(いま ${CONDUCTOR_VER} / ${MIN_CONDUCTOR_VERSION} 以上が必要です)。
|
|
761
848
|
新しくしようとしましたが、取ってこられませんでした。
|
|
@@ -764,18 +851,13 @@ elif have conductor; then
|
|
|
764
851
|
|
|
765
852
|
次の1行をお試しください。
|
|
766
853
|
|
|
767
|
-
npm install -g @
|
|
854
|
+
npm install -g ${CONDUCTOR_PKG}@latest ${CONDUCTOR_REGISTRY_ARG}
|
|
768
855
|
|
|
769
856
|
それでも直らないときは、この画面をそのままサポートへお送りください。
|
|
770
857
|
MSG
|
|
771
858
|
)"
|
|
772
859
|
fi
|
|
773
|
-
record "采配くん本体:
|
|
774
|
-
else
|
|
775
|
-
run '采配くん本体を入れます' npm install -g @tyhld/conductor \
|
|
776
|
-
|| die '采配くん本体を入れられませんでした(インターネット接続をご確認ください)'
|
|
777
|
-
have conductor || die '采配くん本体を入れましたが呼び出せません(PATH の設定をご確認ください)'
|
|
778
|
-
record "采配くん本体: 入れた($(conductor_version))"
|
|
860
|
+
record "采配くん本体: 用意した(${CONDUCTOR_VER:-不明})"
|
|
779
861
|
fi
|
|
780
862
|
|
|
781
863
|
# ═════════════════════════════════════════════════════════════════════════════
|
package/sales-template/setup.sh
CHANGED
|
@@ -102,7 +102,7 @@ PROJECT_DIR="${2:-$HOME/projects/$SITE}"
|
|
|
102
102
|
# 食い違うと「入口は通したのに設置係が止める」が起きる。テストで同一を固定してある。
|
|
103
103
|
# ★公開 npm の latest より新しい値を書かないこと(書くと全員が設置できなくなる)。
|
|
104
104
|
# package.json の版を超えていないことをテストで固定してある。
|
|
105
|
-
MIN_CONDUCTOR_VERSION="0.12.
|
|
105
|
+
MIN_CONDUCTOR_VERSION="0.12.3"
|
|
106
106
|
|
|
107
107
|
# ─── ヘルパ ───────────────────────────────────────────────────────────────────
|
|
108
108
|
fail() { echo; echo "[setup] エラー: $1" >&2; exit 1; }
|
|
@@ -134,6 +134,57 @@ conductor_version() {
|
|
|
134
134
|
printf '%s' "${BASH_REMATCH[0]}"
|
|
135
135
|
fi
|
|
136
136
|
}
|
|
137
|
+
# ═════════════════════════════════════════════════════════════════════════════
|
|
138
|
+
# ★采配くん本体の取得元(この4行と2つの関数が【正本】・えふさん確定 2026-09-16)
|
|
139
|
+
#
|
|
140
|
+
# 【なぜ要るか(実測 2026-09-16・便 9858450b)】
|
|
141
|
+
# 開発機は私設の部品(@tyhld/auth 等)を GitHub Packages から取るため、
|
|
142
|
+
# `@tyhld` の取得先そのものが GitHub Packages を向いている。
|
|
143
|
+
# npm config get @tyhld:registry -> https://npm.pkg.github.com
|
|
144
|
+
# npm view @tyhld/conductor version -> 0.5.0 (GitHub Packages の古い版)
|
|
145
|
+
# npm view @tyhld/conductor version --@tyhld:registry=https://registry.npmjs.org
|
|
146
|
+
# -> 0.12.3 (公開 npm の今の版)
|
|
147
|
+
# この状態で `npm update -g @tyhld/conductor` を打つと、GitHub Packages の 0.5.0 を
|
|
148
|
+
# 入れ直す。だから「更新しました」と出たあとに「版が古すぎます」で止まっていた。
|
|
149
|
+
#
|
|
150
|
+
# 【決めたこと】★`@tyhld` の設定そのものは変えない(他の社内部品は GitHub Packages のまま)。
|
|
151
|
+
# 本体を取る・更新する・版を問い合わせるときだけ、そのコマンド1回に限って公開 npm を
|
|
152
|
+
# 明示する。`--@tyhld:registry=…` はそのコマンドの中だけで効き、~/.npmrc も
|
|
153
|
+
# npm の全体設定も1文字も書き換えない。
|
|
154
|
+
# ★この指定は「そのコマンドで @tyhld のものを取るとき」に効くので、本体と他の社内部品を
|
|
155
|
+
# 【同じ1回のコマンドで】入れてはいけない。下の関数は本体だけを扱う。
|
|
156
|
+
#
|
|
157
|
+
# 【お客さま機では何も変わらない】`@tyhld` の設定を持たない機は、もともと公開 npm を見る。
|
|
158
|
+
# 明示しても指す先は同じなので、動きは1ミリも変わらない。
|
|
159
|
+
# ═════════════════════════════════════════════════════════════════════════════
|
|
160
|
+
# >>> registry-pin >>> ★この印の間が正本。2つの台本で1文字も違わないことをテストが固定する。
|
|
161
|
+
CONDUCTOR_PKG="@tyhld/conductor"
|
|
162
|
+
CONDUCTOR_REGISTRY="https://registry.npmjs.org"
|
|
163
|
+
# ★npm へ渡す1個の旗。これを付けた回だけ、本体の取得先が公開 npm になる。
|
|
164
|
+
CONDUCTOR_REGISTRY_ARG="--@tyhld:registry=${CONDUCTOR_REGISTRY}"
|
|
165
|
+
|
|
166
|
+
# 公開 npm が「いま配っている版」を問い合わせる(取れなければ空)。
|
|
167
|
+
# ★これが「今回入れるはずの版」の正本。固定の下限ではなく、取得元に聞いた値を使う。
|
|
168
|
+
conductor_published_version() {
|
|
169
|
+
local v
|
|
170
|
+
v="$(npm view "$CONDUCTOR_PKG" version "$CONDUCTOR_REGISTRY_ARG" 2>/dev/null | tr -d '[:space:]')"
|
|
171
|
+
if [[ "$v" =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
|
|
172
|
+
printf '%s' "${BASH_REMATCH[0]}"
|
|
173
|
+
fi
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
# 本体を入れる/更新する。引数があればその版、無ければ公開 npm の今の版。
|
|
177
|
+
# ★版を決め打ちで渡すので「@latest と書いたのに別の版が入った」が起こせない。
|
|
178
|
+
conductor_npm_install() {
|
|
179
|
+
local want="${1:-}"
|
|
180
|
+
if [[ -z "$want" ]]; then
|
|
181
|
+
npm install -g "$CONDUCTOR_PKG" "$CONDUCTOR_REGISTRY_ARG"
|
|
182
|
+
else
|
|
183
|
+
npm install -g "${CONDUCTOR_PKG}@${want}" "$CONDUCTOR_REGISTRY_ARG"
|
|
184
|
+
fi
|
|
185
|
+
}
|
|
186
|
+
# <<< registry-pin <<<
|
|
187
|
+
|
|
137
188
|
step() { echo; echo "══════════════════════════════════════════════════════════"; echo "[setup] $1"; echo "══════════════════════════════════════════════════════════"; }
|
|
138
189
|
|
|
139
190
|
# ─── OS の見分けと、OS ごとに違う道具(★ADR-019・案C) ───────────────────────
|
|
@@ -312,15 +363,24 @@ fi
|
|
|
312
363
|
# ─── ② conductor 本体インストール ────────────────────────────────────────────
|
|
313
364
|
step "② conductor 本体インストール"
|
|
314
365
|
|
|
315
|
-
#
|
|
316
|
-
#
|
|
366
|
+
# 取得元は上の正本(CONDUCTOR_REGISTRY_ARG)に任せる。★ここに取得先を書かない。
|
|
367
|
+
#
|
|
368
|
+
# ★入れる版を先に決める(えふさん確定 2026-09-16・「最新版という曖昧な指定だけにしない」)。
|
|
369
|
+
# 公開 npm に「いま配っている版」を聞き、その版を名指しで入れる。入れ終わったら、
|
|
370
|
+
# PATH 上で実際に動く conductor の版と【一致するか】を見る。一致しなければ失敗にする。
|
|
371
|
+
# ★合否を固定の下限で決めない。取得元に聞いた値と実際の値の一致が正本。
|
|
372
|
+
CONDUCTOR_WANT="$(conductor_published_version)"
|
|
373
|
+
if [[ -z "$CONDUCTOR_WANT" ]]; then
|
|
374
|
+
warn "公開 npm に版を問い合わせられませんでした(ネットワークの一時的な不調)。版の名指しはせずに進みます。"
|
|
375
|
+
fi
|
|
376
|
+
|
|
317
377
|
if command -v conductor >/dev/null 2>&1; then
|
|
318
|
-
echo "[setup] conductor
|
|
319
|
-
npm update -g @tyhld/conductor || warn "npm update に失敗しました。続行します。"
|
|
378
|
+
echo "[setup] conductor は既にインストール済みです。${CONDUCTOR_WANT:-最新版} へ揃えます..."
|
|
320
379
|
else
|
|
321
|
-
echo "[setup]
|
|
322
|
-
npm install -g @tyhld/conductor || fail "npm install -g @tyhld/conductor に失敗しました。ネットワーク接続を確認してください。"
|
|
380
|
+
echo "[setup] ${CONDUCTOR_PKG} をグローバルインストールします(${CONDUCTOR_WANT:-最新版})..."
|
|
323
381
|
fi
|
|
382
|
+
conductor_npm_install "$CONDUCTOR_WANT" \
|
|
383
|
+
|| fail "采配くん本体を入れられませんでした(取得先: ${CONDUCTOR_REGISTRY})。ネットワーク接続をご確認ください。"
|
|
324
384
|
|
|
325
385
|
# conductor コマンドの存在を再確認
|
|
326
386
|
if ! command -v conductor >/dev/null 2>&1; then
|
|
@@ -328,23 +388,36 @@ if ! command -v conductor >/dev/null 2>&1; then
|
|
|
328
388
|
fi
|
|
329
389
|
echo "[setup] conductor: $(conductor --version 2>/dev/null || command -v conductor)"
|
|
330
390
|
|
|
331
|
-
# ---
|
|
332
|
-
#
|
|
333
|
-
#
|
|
334
|
-
#
|
|
335
|
-
#
|
|
391
|
+
# --- ★入れた版と、実際に動く版が一致するかを確かめる(★この便の要) ----------
|
|
392
|
+
# 【なぜ要るか(実測 2026-09-16・便 9858450b)】開発機は @tyhld の取得先が GitHub Packages を
|
|
393
|
+
# 向いているため、`npm update -g @tyhld/conductor` が古い 0.5.0 を入れ直していた。
|
|
394
|
+
# 「更新しました」と出たあとに「版が古すぎます」で止まる、という分かりにくい形だった。
|
|
395
|
+
# ★取得先を明示しただけでは足りない。入れ終わったあとに【実際に動く版】を見て、
|
|
396
|
+
# 期待と違えば成功にしない。これが再発を構造的に止める。
|
|
397
|
+
# ★一致判定なので、期待より新しい版が動いていても失敗にする(別経路の取り違えが見える)。
|
|
398
|
+
# >>> version-match >>> ★この印の間はテストが切り出して単体で流す。動かすときは消さない。
|
|
336
399
|
CONDUCTOR_VER="$(conductor_version)"
|
|
337
400
|
if [[ -z "$CONDUCTOR_VER" ]]; then
|
|
338
401
|
warn "conductor の版を読み取れませんでした(続行します)。"
|
|
402
|
+
elif [[ -n "$CONDUCTOR_WANT" && "$CONDUCTOR_VER" != "$CONDUCTOR_WANT" ]]; then
|
|
403
|
+
fail "入れた版と、実際に動く版が違います。
|
|
404
|
+
期待した版(${CONDUCTOR_REGISTRY} が配っている版): ${CONDUCTOR_WANT}
|
|
405
|
+
実際に動く版 : ${CONDUCTOR_VER}
|
|
406
|
+
実行ファイルの場所 :
|
|
407
|
+
$(command -v -a conductor 2>/dev/null | sed 's/^/ /' || echo ' (見つかりません)')
|
|
408
|
+
★別の取得先から入った物が PATH の先にいます。次の1行で入れ直してください:
|
|
409
|
+
npm install -g ${CONDUCTOR_PKG}@${CONDUCTOR_WANT} ${CONDUCTOR_REGISTRY_ARG}"
|
|
339
410
|
elif version_lt "$CONDUCTOR_VER" "$MIN_CONDUCTOR_VERSION"; then
|
|
411
|
+
# ★下限の確認は今までの役割のまま残す(配布そのものが止まっている場合の受け皿)。
|
|
340
412
|
fail "采配くん本体の版が古すぎます(いま ${CONDUCTOR_VER} / ${MIN_CONDUCTOR_VERSION} 以上が必要です)。
|
|
341
413
|
更新を試しましたが、新しい版を取ってこられませんでした。
|
|
342
414
|
★古い版のままでは、設置できても指示が1つも届きません(鍵の名前が違うため)。
|
|
343
415
|
次の1行をお試しのうえ、それでも直らないときはサポートへご連絡ください:
|
|
344
|
-
npm install -g @
|
|
416
|
+
npm install -g ${CONDUCTOR_PKG}@latest ${CONDUCTOR_REGISTRY_ARG}"
|
|
345
417
|
else
|
|
346
|
-
echo "[setup] conductor の版: OK(${CONDUCTOR_VER}
|
|
418
|
+
echo "[setup] conductor の版: OK(${CONDUCTOR_VER}${CONDUCTOR_WANT:+ = 公開 npm の ${CONDUCTOR_WANT}})"
|
|
347
419
|
fi
|
|
420
|
+
# <<< version-match <<<
|
|
348
421
|
|
|
349
422
|
# ─── ③ node symlink ──────────────────────────────────────────────────────────
|
|
350
423
|
step "③ node の場所を常駐から見えるようにする"
|
|
@@ -710,7 +783,7 @@ PROTO_GEN="$SCRIPT_DIR/../dist/proto-profile.js"
|
|
|
710
783
|
if [[ "$PROFILE" == "proto" ]]; then
|
|
711
784
|
[[ -f "$PROTO_GEN" ]] || fail "試作の型の正本が見つかりません: $PROTO_GEN
|
|
712
785
|
配布物が壊れている可能性があります。次の1行で入れ直してください:
|
|
713
|
-
npm i -g @tyhld/conductor"
|
|
786
|
+
npm i -g @tyhld/conductor --@tyhld:registry=https://registry.npmjs.org"
|
|
714
787
|
PROTO_SETTINGS="$CLAUDE_DIR/.settings.proto.$$"
|
|
715
788
|
node "$PROTO_GEN" settings > "$PROTO_SETTINGS" \
|
|
716
789
|
|| fail "試作の型の設定を作れませんでした(node \"$PROTO_GEN\" settings)"
|
|
@@ -18,7 +18,13 @@ description: 采配くんの便(プロンプト末尾に CONDUCTOR_JOB:<id>
|
|
|
18
18
|
4. **壁に当たったら止まる** — サンドボックス制約・保護されたパスに当たったら回避せず中断して報告する(★通信で塞がれたときの読み方は鉄則12)。
|
|
19
19
|
5. **エージェント設定に書き込まない** — `.mcp.json`、`.claude/` 配下、hooks 等のエージェント設定パスには書き込まない。
|
|
20
20
|
6. **本番に触らない** — 本番DB・deploy・secret に触らない。SQL/DDL は作って提示のみ(適用は人間)。
|
|
21
|
-
7.
|
|
21
|
+
7. **便の終点はマージまで(★保護を迂回しない)** — push → PR作成 → **CI が緑であることを確かめてから**合流する。手順は2段で、リポの名前は覚えなくてよい。
|
|
22
|
+
- ① まず `gh pr merge <番号> --auto --merge --delete-branch`。**CI が緑になった時点で自動的に合流する**(赤のままなら合流されない=待てばよい)。
|
|
23
|
+
- ② 「auto-merge が使えない」と断られたリポだけ、`gh pr checks <番号>` で**CI が緑なのを自分で確かめてから** `gh pr merge <番号> --merge --delete-branch`。
|
|
24
|
+
- ★**`--admin` など保護を迂回する旗は、通常運用では使わない。** branch protection は「CI が通っていない物を main に入れない」ための仕組みで、迂回すると**赤いまま本番の元が変わる**。旗を1つ付けるだけで、その現場の唯一の歯止めが外れる。
|
|
25
|
+
- ★**保護が理由で合流できないときは、回避せずそこで止めて報告する**(人の手番)。別の旗を探さない。
|
|
26
|
+
- ★CI が赤いときは、直してから合流する。直せない理由が分かったら、状態を報告して止まる。
|
|
27
|
+
- ★「この便のマージは人間が行う」と指示に書かれていれば、**その指示が優先**(ADR-007)。
|
|
22
28
|
8. **ブラウザ検品(Playwright)の作法** — ★取りに行かない。PCに1回だけ入れた共有の道具を指すだけ(ADR-010)。
|
|
23
29
|
- ① **起動は必ず `chromium_sandbox=False`**(`--no-sandbox`)。付けないと起動できない。
|
|
24
30
|
- ② **道具は共有の場所を使う。自分でダウンロードしない。** python は `$HOME/.tyhld/pw-venv/bin/python`、`PLAYWRIGHT_BROWSERS_PATH` は `$HOME/.tyhld/pw-browsers`。**無ければそこで止めて「人の手番=`APPLY=1 bash scripts/pw-browser-install.sh`」と報告する。** `playwright install` も `pip install playwright` も職人は実行しない(毎便まるごとダウンロードが走り、便が遅くなる。通信自体は鉄則12のとおり許可済みだが、取りに行かないのが本筋=ADR-010)。
|