Merge develop
三份 manifest 取分支上的較高版號:develop 那邊到 0.3.6,這條分支本來就是為了 讓開那一號才升到 0.3.7,取低的等於把版號往回退。 行為清單第 10 行兩邊各改了同一行的不同地方,合起來留:develop 加的是委派 清單檢核多判一種填錯的 probe、以及修法要回該技能的存取庫核對過再改寫;這條 分支加的是第一組多跑一項腳本路徑檢查。兩件事互不相干,取任一邊都會弄丟另 一邊。外部呼叫那一行 develop 沒動過,直接取分支上的。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+80
-13
@@ -4,12 +4,13 @@
|
||||
# 用法: check-delegate.sh [<plugins-root>]
|
||||
# 不給參數就交給 tools/plugins-root.sh 推導根目錄,判準與 list-skills.sh 完全相同。
|
||||
#
|
||||
# 檢查四項:
|
||||
# 檢查五項:
|
||||
# 1. 一一對應 — 清單一支技能一列,跟 list-skills.sh 的實際技能不多不少,也不重複。
|
||||
# 2. 欄位齊全 — 11 欄,每一欄非空;四種結論各自的必填欄位都填了,不該填的填 -。
|
||||
# 2. 欄位齊全 — 12 欄,每一欄非空;四種結論各自的必填欄位都填了,不該填的填 -。
|
||||
# 3. 欄位可填值 — verdict、way、trigger、recur、origin 只認固定詞彙;next 要指到
|
||||
# 一支真的存在的技能。指到不存在的技能,助理會一路重試一支叫不出來的東西。
|
||||
# 4. 版本號與來源 — 只印提示,不影響結束碼,理由見下。
|
||||
# 4. 唯讀指令 — probe 的填法與那一支腳本在不在,判準見下。
|
||||
# 5. 版本號與來源 — 只印提示,不影響結束碼,理由見下。
|
||||
#
|
||||
# 為什麼要這支: 技能組每天在動,手工盤點只會過期。清單缺一列,助理就永遠不知道那支技能
|
||||
# 存在;清單多一列,助理會去觸發一支不存在的技能,而且失敗不會自動暫停。這兩件事靠眼睛
|
||||
@@ -23,11 +24,25 @@
|
||||
# 知道它待複核。它是「已經有結論、但要再確認一次」,不是「漏填」。列成缺失會讓清單從
|
||||
# 第一天就是紅的,紅到全部複核完為止,這段期間所有真的缺失都會被蓋掉。
|
||||
#
|
||||
# probe 什麼算缺失、什麼只算提示: 缺失的判準只有一條——這一列照著跑,無人值守那一輪會出事。
|
||||
# 四種算缺失:
|
||||
# 一、way 含 invoke 或這一列不交,probe 卻填了指令。種入那一支會改拿指令當待辦簿的動作,
|
||||
# 整支交出於是變成只跑一支腳本,那支技能該寫的頁一頁都不會寫,而且看起來完全正常。
|
||||
# 二、way 只有 patrol 或 remind,probe 卻是減號。那幾列的動作原本一律退回只提醒,
|
||||
# 等於判過要交、實際什麼都沒交出去。接不上就寫 pending 並講明理由,別留減號。
|
||||
# 三、指令裡有金錢符號或波浪號,或用了 root、cli、repo 以外的代入點。前者在無人值守
|
||||
# 那一輪解不出來也進不了允許清單,後者代不進去會原樣送進指令,兩種都是靜靜失敗。
|
||||
# 四、指令指到的腳本在本機不存在。助理每一輪都會叫不到它,而失敗不會自動暫停。
|
||||
# 兩種只算提示:
|
||||
# 一、pending:{理由}。入口還沒接上是判過的結論,跟 origin=seed 同一類,不是漏填。
|
||||
# 二、指令指到的 domain 本機沒有裝。那是這台機器少裝一個 domain,不是清單填錯——
|
||||
# 算成缺失的話,只裝半套的機器每一輪都亮紅,真的填錯反而看不見。
|
||||
#
|
||||
# 輸出: 缺失一行一個,格式 {清單路徑}:{domain}/{name}:{說明}(stderr);
|
||||
# 提示同格式(stdout),讓呼叫端分得開缺失與提示;統計摘要走 stderr。
|
||||
# 結束碼: 0=清單與實際技能一一對應、必填欄位齊全(可能帶提示,提示不影響這一碼)
|
||||
# 1=缺列、多列、重複列、欄位空著、欄位值不合法,或 next 指到不存在的技能,
|
||||
# 清單在 stderr
|
||||
# 1=缺列、多列、重複列、欄位空著、欄位值不合法、next 指到不存在的技能,
|
||||
# 或 probe 填錯欄位、指到不存在的腳本、用了認不得的代入點,清單在 stderr
|
||||
# 2=用法錯誤(本腳本最多吃一個參數)
|
||||
# 3=找不到 tools/delegate-spec.tsv、推導不出根目錄,或列不出任何技能——
|
||||
# **什麼都沒查**,不等於通過
|
||||
@@ -63,8 +78,9 @@ TAB=$(printf '\t')
|
||||
cut -f1,2 "$TMPD/raw.txt" | LC_ALL=C sort > "$TMPD/skills.txt"
|
||||
[ -s "$TMPD/skills.txt" ] || { echo "掃不到任何技能:$ROOT" >&2; exit 3; }
|
||||
|
||||
# 各 domain 的現行版本號。domain 名以 plugin.json 的 name 為準,checkout 目錄名只是退路:
|
||||
# 目錄名是誰 clone 誰決定的,換一台機器就可能叫別的名字。
|
||||
# 各 domain 的現行版本號與本機目錄。domain 名以 plugin.json 的 name 為準,checkout 目錄名
|
||||
# 只是退路:目錄名是誰 clone 誰決定的,換一台機器就可能叫別的名字。第三欄記那個目錄,
|
||||
# probe 要拿它把 {root}/jsc-{domain} 換成本機的實際位置,才驗得到腳本在不在。
|
||||
: > "$TMPD/versions.txt"
|
||||
for p in "$ROOT"/*/plugin.json; do
|
||||
[ -f "$p" ] || continue
|
||||
@@ -75,7 +91,7 @@ for p in "$ROOT"/*/plugin.json; do
|
||||
*) continue ;;
|
||||
esac
|
||||
[ -n "$v" ] || continue
|
||||
printf '%s\t%s\n' "${n#jsc-}" "$v" >> "$TMPD/versions.txt"
|
||||
printf '%s\t%s\t%s\n' "${n#jsc-}" "$v" "${p%/plugin.json}" >> "$TMPD/versions.txt"
|
||||
done
|
||||
|
||||
# 清單資料列:# 開頭的註解與空行都不算。
|
||||
@@ -112,7 +128,7 @@ while IFS="$TAB" read -r d n; do
|
||||
report "$d/$n" '清單多這一列,本機沒有這支技能。請刪掉,否則助理會去觸發叫不出來的技能'
|
||||
done < "$TMPD/extra.txt"
|
||||
|
||||
# --- 2~4. 逐列查欄位。多出來的列上面已經報過,這裡跳過,同一個缺陷不印兩遍。 ---
|
||||
# --- 2~5. 逐列查欄位。多出來的列上面已經報過,這裡跳過,同一個缺陷不印兩遍。 ---
|
||||
awk -F"$TAB" \
|
||||
-v SPEC="$SPEC" -v SKILLS="$TMPD/skills.txt" -v VERS="$TMPD/versions.txt" \
|
||||
-v FAILS="$TMPD/fail-row.txt" -v HINTS="$TMPD/hint.txt" '
|
||||
@@ -139,23 +155,44 @@ function trig_ok(t, e) {
|
||||
if (t ~ /^after:..*$/) { e = substr(t, 7); sub(/:.*$/, "", e); return (e in EV) }
|
||||
return 0
|
||||
}
|
||||
# probe 裡認不得的代入點,回傳第一個;全部認得回傳空字串。認不得的代入點代不進去,
|
||||
# 會原樣送進指令,於是那一輪安安靜靜跑錯東西。
|
||||
function ph_bad(s, t, p) {
|
||||
t = s
|
||||
while (match(t, /\{[^}]*\}/)) {
|
||||
p = substr(t, RSTART + 1, RLENGTH - 2)
|
||||
if (!(p in PH)) return p
|
||||
t = substr(t, RSTART + RLENGTH)
|
||||
}
|
||||
return ""
|
||||
}
|
||||
# probe 的第一個非環境變數指派詞,也就是腳本路徑本身。
|
||||
function script_of(s, n, a, i) {
|
||||
n = split(s, a, " ")
|
||||
for (i = 1; i <= n; i++) {
|
||||
if (a[i] ~ /^[A-Za-z_][A-Za-z0-9_]*=/) continue
|
||||
return a[i]
|
||||
}
|
||||
return ""
|
||||
}
|
||||
BEGIN {
|
||||
split("full slice cond none", a, " "); for (i in a) VERDICT[a[i]] = 1
|
||||
split("invoke patrol remind", b, " "); for (i in b) WAY[b[i]] = 1
|
||||
split("seed judged", c, " "); for (i in c) ORIGIN[c[i]] = 1
|
||||
split("worklog-written wp-merged stage-entered analyze-completed hook-error session-start session-end", \
|
||||
d, " "); for (i in d) EV[d[i]] = 1
|
||||
split("root cli repo", e, " "); for (i in e) PH[e[i]] = 1
|
||||
}
|
||||
FILENAME == SKILLS { sk[$1 "\t" $2] = 1; next }
|
||||
FILENAME == VERS { cur[$1] = $2; next }
|
||||
FILENAME == VERS { cur[$1] = $2; ddir[$1] = $3; next }
|
||||
{
|
||||
key = $1 "/" $2
|
||||
if (NF != 11) { bad(key, "這一列有 " NF " 欄,合約規定 11 欄"); next }
|
||||
if (NF != 12) { bad(key, "這一列有 " NF " 欄,合約規定 12 欄"); next }
|
||||
if (!(($1 "\t" $2) in sk)) next
|
||||
verdict = $3; way = $4; slice = $5; human = $6
|
||||
trig = $7; rec = $8; nxt = $9; ver = $10; org = $11
|
||||
trig = $7; rec = $8; nxt = $9; ver = $10; org = $11; probe = $12
|
||||
|
||||
for (i = 1; i <= 11; i++)
|
||||
for (i = 1; i <= 12; i++)
|
||||
if ($i == "") bad(key, "第 " i " 欄是空的。TSV 沒有空格這種值,不填就寫一個減號")
|
||||
|
||||
if (!(verdict in VERDICT)) {
|
||||
@@ -202,6 +239,36 @@ FILENAME == VERS { cur[$1] = $2; next }
|
||||
if (ver !~ /^[0-9]+(\.[0-9]+)*$/) bad(key, "version 要是 plugin 版本號,實際是「" ver "」")
|
||||
else if (($1 in cur) && vlt(ver, cur[$1]))
|
||||
hint(key, "判定時記的版本號 " ver " 落後 jsc-" $1 " 現行的 " cur[$1] ",要複判")
|
||||
|
||||
# --- probe:那一段唯讀盤點實際要跑的指令。判準見檔頭「什麼算缺失、什麼只算提示」。 ---
|
||||
if (verdict == "none" || way ~ /(^|,)invoke(,|$)/) {
|
||||
if (probe != "-")
|
||||
bad(key, "way 含 invoke 或這一列不交,probe 要寫 -,實際是「" probe "」。填了指令,種入那一支會改拿指令當動作,整支交出就變成只跑一支腳本")
|
||||
} else if (probe == "-") {
|
||||
bad(key, "way 只有 patrol 或 remind,probe 不可以是 -:沒有指令的那幾筆一律退回只提醒,等於判過要交卻什麼都沒交出去。接不上就寫 pending:{理由}")
|
||||
}
|
||||
|
||||
if (probe ~ /^pending:/) {
|
||||
if (probe == "pending:") bad(key, "pending 後面要寫不接的理由,留白的話下一輪分不出是刻意還是漏填")
|
||||
else hint(key, "probe=" probe ":唯讀盤點的入口還沒接上,待接線")
|
||||
} else if (probe != "-") {
|
||||
if (probe ~ /[$~]/)
|
||||
bad(key, "probe 裡有金錢符號或波浪號,實際是「" probe "」。那兩種寫法在無人值守那一輪解不出來,也進不了允許清單,會被靜靜擋掉")
|
||||
p2 = ph_bad(probe)
|
||||
if (p2 != "")
|
||||
bad(key, "probe 用了認不得的代入點「{" p2 "}」,只認 {root}、{cli}、{repo}。代不進去的字面值會原樣送進指令")
|
||||
sp = script_of(probe)
|
||||
if (sp !~ /^\{root\}\/jsc-[a-z0-9-]+\/..*$/)
|
||||
bad(key, "probe 的腳本路徑要寫成 {root}/jsc-{domain}/… ,實際是「" sp "」")
|
||||
else {
|
||||
pd = sp; sub(/^\{root\}\/jsc-/, "", pd); sub(/\/.*$/, "", pd)
|
||||
rest = sp; sub(/^\{root\}\/jsc-[a-z0-9-]+\//, "", rest)
|
||||
if (!(pd in ddir))
|
||||
hint(key, "probe 指到的 jsc-" pd " 本機沒有裝,這一列的腳本這一次驗不到")
|
||||
else if (system("test -f '\''" ddir[pd] "/" rest "'\''") != 0)
|
||||
bad(key, "probe 指到的腳本不存在:" ddir[pd] "/" rest "。助理每一輪都會叫不到它,而失敗不會自動暫停")
|
||||
}
|
||||
}
|
||||
}
|
||||
' "$TMPD/skills.txt" "$TMPD/versions.txt" "$TMPD/rows.txt"
|
||||
|
||||
|
||||
+64
-36
@@ -7,7 +7,7 @@
|
||||
# 有被各 CLI 的技能驗證擋掉的風險。新增或刪除技能時同時補上或刪掉這一列,
|
||||
# tools/check-delegate.sh 才對得起來;缺列的技能,助理永遠不知道它存在。
|
||||
#
|
||||
# 欄位:domain<TAB>name<TAB>verdict<TAB>way<TAB>slice<TAB>human<TAB>trigger<TAB>recur<TAB>next<TAB>version<TAB>origin
|
||||
# 欄位:domain<TAB>name<TAB>verdict<TAB>way<TAB>slice<TAB>human<TAB>trigger<TAB>recur<TAB>next<TAB>version<TAB>origin<TAB>probe
|
||||
# domain 技能所屬 domain,去掉開頭的 jsc-。形狀比照 list-skills.sh 第一欄
|
||||
# name 技能名。形狀比照 list-skills.sh 第二欄,兩欄合起來就是一支技能的身分
|
||||
# verdict full=全交 slice=切片交 cond=條件式交 none=不交
|
||||
@@ -35,39 +35,67 @@
|
||||
# 當成缺失的話每次發版整個 domain 都亮紅,提示很快就被當雜訊忽略
|
||||
# origin seed=依既有盤點種入、待複核 judged=正式走過決策樹判定。
|
||||
# seed 只印成待複核提示,不算缺失;技能有異動時就地走一次決策樹,轉成 judged
|
||||
# probe 那一段唯讀盤點實際要跑的指令。只認三種寫法:
|
||||
# 一、一行指令。腳本路徑一律寫成 {root}/jsc-{domain}/… 開頭。{root} 是種入那一支
|
||||
# 拿到的字面絕對根目錄,由它自己代入;那一層的目錄名以 jsc-{domain} 為準,
|
||||
# 找不到就退回不帶前綴的 {domain},比照它找這一份清單本身的作法。
|
||||
# 指令裡不可以出現金錢符號或波浪號:那兩種寫法在無人值守那一輪解不出來,
|
||||
# 也進不了允許清單,會被靜靜擋掉。要帶環境變數就寫在指令最前面,
|
||||
# 例如 JSC_READONLY=1。另外兩個代入點,一個目標跑一次:{cli} 是助理偵測到的
|
||||
# CLI 代號,{repo} 是助理掃到的存取庫工作目錄。這三個以外的大括號一律算填錯——
|
||||
# 代不進去的字面值會原樣送進指令。
|
||||
# 填之前一定要真的跑一次那一行,不能照技能文件的措辭抄。實際踩過兩次:
|
||||
# 一次抄來的子命令那支腳本根本沒有,跑起來是用法錯誤;一次抄來的子命令會
|
||||
# 在標準輸入沒人關閉時無限等待,換成同一支的另一個子命令才回得來。兩種都
|
||||
# 不會在種入那一刻報錯,要等無人值守那一輪才發作,而那一輪沒有人在看。
|
||||
# 二、pending:{理由}。這一段切得出唯讀盤點,入口還沒接上;冒號後面寫不接的理由,
|
||||
# 留白的話下一輪分不出是刻意還是漏填。
|
||||
# 三、-。這一列沒有唯讀盤點入口。
|
||||
# 哪一種列填哪一種:way 含 invoke 的列與不交的列一律填 -。觸發的意思是呼叫整支
|
||||
# 技能,這一欄填了指令會讓種入那一支改拿指令當待辦簿的動作,於是整支交出變成
|
||||
# 只跑一支腳本,那支技能該寫的頁一頁都不會寫,而且看起來完全正常。way 只有
|
||||
# patrol 或 remind 的列一定要有值:那幾列的動作原本一律退回只提醒,有值才有
|
||||
# 事情做。
|
||||
# 為什麼要連網的先不填:連網要金鑰,金鑰一過期就讓那一項每輪失敗,或每輪靜靜
|
||||
# 回報沒事——後者更難查。純本機讀取本來一輪都不會失敗。先填會連網的那一種,等於
|
||||
# 用一批每輪報錯的項目把真的發現蓋掉。所以要連網的先寫 pending,理由寫清楚,
|
||||
# 等入口與金鑰都有著落再換成指令。
|
||||
# 檢核怎麼看:pending 只印成待接線提示,不算缺失,同 origin=seed 那一條——它是
|
||||
# 「判過、知道還沒接」,不是漏填。填錯欄位、指到不存在的腳本、用了認不得的
|
||||
# 代入點,都算缺失。
|
||||
#
|
||||
ask ask slice patrol 唯讀查 QUESTION_CONTENTS,確認要交辦的事是不是早就有答案 問答本身。助理在背景問不到人,沒有人在場就收不到答案 at:now every:1d jsc-gitea:wiki 0.1.3 seed
|
||||
assist assistant none - - 助理本身。讓它自我發動,一輪巡檢會在背景又叫起另一輪,誰都停不下來 - - jsc-log:stats 0.1.6 seed
|
||||
cli delegate cond invoke 條件是這一項任務唯讀:唯讀巡檢可以委派給別支 CLI,省當前 CLI 的額度。條件不成立,也就是會改檔案的任務,一律不委派;委派失敗就退回自己跑 判斷哪一項算唯讀、額度要不要省,還有委派給哪一支 CLI at:now every:1d jsc-log:stats 0.3.4 seed
|
||||
cli deploy slice remind 遠端有新版就提醒 安裝、更新、卸除、要求重啟 at:now every:1d jsc-hooks:hooks-install 0.3.4 seed
|
||||
cli doctor cond invoke 條件式:只有在 doctor 呼叫自家 tools/ 與 templates/ 的路徑不再帶版本號之後才可以交。交出的那一段是定期整輪健檢、寫 CHECK_{HASH}。條件不成立時的行為:一律不交,維持人在現場叫用 修——那是 jsc-cli:setup,逐項確認。另外,條件沒滿足之前整支都留在人手上:doctor 自家腳本走的是 CLI 載入技能時給的外掛基底目錄,那條路徑帶版本號、進不了允許清單,無人值守的每一輪都會無聲卡在第一支腳本 at:now every:7d jsc-cli:setup 0.3.4 seed
|
||||
cli models slice invoke 定期跑 model-tags.sh sync 重建能力標籤表,並盤點各 CLI 可用模型 換模型、改設定 at:now every:7d jsc-cli:doctor 0.3.4 seed
|
||||
cli setup none - - 改設定與接線,要逐項確認 - - jsc-cli:doctor 0.3.4 seed
|
||||
git commit none - - 對外不可逆 - - jsc-git:pr 0.1.5 seed
|
||||
git pr none - - 對外不可逆 - - jsc-log:worklog 0.1.5 seed
|
||||
gitea html-export none - - 要人指定是哪一頁或哪一個議題。助理在背景猜不到,猜錯就匯出別人的頁 - - jsc-gitea:html-style 0.2.5 seed
|
||||
gitea html-style none - - 版型與樣式是使用者的偏好,要逐項確認才寫得下去 - - jsc-gitea:html-export 0.2.5 seed
|
||||
gitea repo-sync slice patrol 盤點哪些存取庫落後遠端、哪些還沒同步下來 clone 與 update——會動工作目錄 at:now every:1d jsc-git:pr 0.2.5 seed
|
||||
gitea wiki none - - 助理的手腳,不獨立排程。助理所有 wiki 讀寫都經過它,一律附加 - - jsc-gitea:html-export 0.2.5 seed
|
||||
gitea wiki-to-issue none - - 對外不可逆 - - jsc-sdlc:analyze 0.2.5 seed
|
||||
hooks hooks-install slice patrol wire-cli.sh status 唯讀盤點接線 重新接線 at:now every:1d jsc-hooks:repair 0.4.4 seed
|
||||
hooks repair slice invoke 巡檢抓到 hook 錯誤就發動修復 診斷、改哪一支、開 PR,全照 repair 自己的流程 after:hook-error every:1h jsc-git:pr 0.4.4 seed
|
||||
log learn slice patrol 發動技能前先查過去教訓,也就是 consult 那一段 記錄教訓的判斷。哪一次值得留下來要人說 at:now every:1d jsc-log:worklog 0.1.9 seed
|
||||
log report slice invoke 週期到了就產週報、月報、年報 報告要不要改寫、要不要送人看 at:now every:7d jsc-log:learn 0.1.9 seed
|
||||
log stats full invoke - - at:now every:7d jsc-log:report 0.1.9 seed
|
||||
log worklog slice patrol,remind 任務結束時收口計時與 token,補進 worklog-pending;該寫沒寫就催 寫日誌本體——狀態、細節、難處要人給 after:session-end every:1h jsc-log:learn 0.1.9 seed
|
||||
meta skill-check cond invoke 條件是只交機械檢核那一段:腳本語法、manifest 版本一致、README 技能清單與實際技能對得上。條件不成立的那一段,也就是語意審查與流程效率判斷,一律不交,那要讀完整份 SKILL.md 語意審查、流程與成本效率判斷,還有要不要套用建議 at:now every:7d jsc-meta:skill-update 0.3.1 seed
|
||||
meta skill-delete none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed
|
||||
meta skill-new none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed
|
||||
meta skill-update none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed
|
||||
meta skillset-update none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed
|
||||
meta ste100-sync slice patrol,remind 定期比對上游版本,落後就提醒 套用上游變更 at:now every:7d jsc-meta:skill-check 0.3.1 seed
|
||||
meta tooling-guide full invoke - - at:now every:7d jsc-meta:skill-check 0.3.1 seed
|
||||
pkg pkg-update slice patrol 用 list-packages.sh、latest-version.sh 唯讀盤點落後最新穩定版的套件 升版、跑建置與測試 at:now every:7d jsc-review:code-review 0.1.0 seed
|
||||
review api-doc none - - 審查要判斷,判準要讀完整份文件與程式碼;助理在背景判不出來 - - jsc-git:pr 0.1.3 seed
|
||||
review code-review none - - 審查要判斷,而且要不要照著改由呼叫端決定 - - jsc-review:api-doc 0.1.3 seed
|
||||
review comment-cleanup none - - 會改專案檔案 - - jsc-git:commit 0.1.3 seed
|
||||
sdlc analyze slice patrol,remind 盤點 ANALYZE_CONTENTS 未完成的分析並先把選項清單備好;另巡檢分析頁勾選與工作包議題狀態對不對得上 分析本體全部要決策。勾選與議題對不上時要對齊哪一邊,是真實來源衝突,也要人判 at:now every:1d jsc-sdlc:implement 0.3.2 seed
|
||||
sdlc implement slice patrol,remind wp-gate.sh check-deps 盤點哪些工作包可以開始;階段鎖殘留就提醒 挑工作包、寫程式碼、開 PR。鎖檔不自己刪 at:now every:1d jsc-log:worklog 0.3.2 seed
|
||||
sdlc maintain none - - 核心是決策與寫程式碼 - - jsc-log:worklog 0.3.2 seed
|
||||
sdlc plan slice patrol,remind 盤點 PLAN_CONTENTS 還沒分析的計畫,先把選項清單備好 規劃本體全部要決策 at:now every:1d jsc-sdlc:analyze 0.3.2 seed
|
||||
ask ask slice patrol 唯讀查 QUESTION_CONTENTS,確認要交辦的事是不是早就有答案 問答本身。助理在背景問不到人,沒有人在場就收不到答案 at:now every:1d jsc-gitea:wiki 0.1.3 seed pending:要連 wiki 讀 QUESTION 目錄頁,得帶金鑰
|
||||
assist assistant none - - 助理本身。讓它自我發動,一輪巡檢會在背景又叫起另一輪,誰都停不下來 - - jsc-log:stats 0.1.6 seed -
|
||||
cli delegate cond invoke 條件是這一項任務唯讀:唯讀巡檢可以委派給別支 CLI,省當前 CLI 的額度。條件不成立,也就是會改檔案的任務,一律不委派;委派失敗就退回自己跑 判斷哪一項算唯讀、額度要不要省,還有委派給哪一支 CLI at:now every:1d jsc-log:stats 0.3.4 seed -
|
||||
cli deploy slice remind 遠端有新版就提醒 安裝、更新、卸除、要求重啟 at:now every:1d jsc-hooks:hooks-install 0.3.4 seed pending:查遠端發佈版本要連 Gitea 並帶金鑰
|
||||
cli doctor cond invoke 條件式:只有在 doctor 呼叫自家 tools/ 與 templates/ 的路徑不再帶版本號之後才可以交。交出的那一段是定期整輪健檢、寫 CHECK_{HASH}。條件不成立時的行為:一律不交,維持人在現場叫用 修——那是 jsc-cli:setup,逐項確認。另外,條件沒滿足之前整支都留在人手上:doctor 自家腳本走的是 CLI 載入技能時給的外掛基底目錄,那條路徑帶版本號、進不了允許清單,無人值守的每一輪都會無聲卡在第一支腳本 at:now every:7d jsc-cli:setup 0.3.4 seed -
|
||||
cli models slice invoke 定期跑 model-tags.sh sync 重建能力標籤表,並盤點各 CLI 可用模型 換模型、改設定 at:now every:7d jsc-cli:doctor 0.3.4 seed -
|
||||
cli setup none - - 改設定與接線,要逐項確認 - - jsc-cli:doctor 0.3.4 seed -
|
||||
git commit none - - 對外不可逆 - - jsc-git:pr 0.1.5 seed -
|
||||
git pr none - - 對外不可逆 - - jsc-log:worklog 0.1.5 seed -
|
||||
gitea html-export none - - 要人指定是哪一頁或哪一個議題。助理在背景猜不到,猜錯就匯出別人的頁 - - jsc-gitea:html-style 0.2.5 seed -
|
||||
gitea html-style none - - 版型與樣式是使用者的偏好,要逐項確認才寫得下去 - - jsc-gitea:html-export 0.2.5 seed -
|
||||
gitea repo-sync slice patrol 盤點哪些存取庫落後遠端、哪些還沒同步下來 clone 與 update——會動工作目錄 at:now every:1d jsc-git:pr 0.2.5 seed pending:repo-sync.sh 會 clone 與 pull,沒有唯讀子命令;盤點落後也要連遠端
|
||||
gitea wiki none - - 助理的手腳,不獨立排程。助理所有 wiki 讀寫都經過它,一律附加 - - jsc-gitea:html-export 0.2.5 seed -
|
||||
gitea wiki-to-issue none - - 對外不可逆 - - jsc-sdlc:analyze 0.2.5 seed -
|
||||
hooks hooks-install slice patrol wire-cli.sh status 唯讀盤點接線 重新接線 at:now every:1d jsc-hooks:repair 0.4.4 seed JSC_READONLY=1 {root}/jsc-hooks/tools/wire-cli.sh status {cli}
|
||||
hooks repair slice invoke 巡檢抓到 hook 錯誤就發動修復 診斷、改哪一支、開 PR,全照 repair 自己的流程 after:hook-error every:1h jsc-git:pr 0.4.4 seed -
|
||||
log learn slice patrol 發動技能前先查過去教訓,也就是 consult 那一段 記錄教訓的判斷。哪一次值得留下來要人說 at:now every:1d jsc-log:worklog 0.1.9 seed pending:要連 wiki 讀 LEARN 目錄頁,得帶金鑰
|
||||
log report slice invoke 週期到了就產週報、月報、年報 報告要不要改寫、要不要送人看 at:now every:7d jsc-log:learn 0.1.9 seed -
|
||||
log stats full invoke - - at:now every:7d jsc-log:report 0.1.9 seed -
|
||||
log worklog slice patrol,remind 任務結束時收口計時與 token,補進 worklog-pending;該寫沒寫就催 寫日誌本體——狀態、細節、難處要人給 after:session-end every:1h jsc-log:learn 0.1.9 seed pending:worklog-pending.sh 七個子命令全部要先給工作階段雜湊,沒有不帶參數的盤點入口,掃不出「該寫沒寫」的那幾筆
|
||||
meta skill-check cond invoke 條件是只交機械檢核那一段:腳本語法、manifest 版本一致、README 技能清單與實際技能對得上。條件不成立的那一段,也就是語意審查與流程效率判斷,一律不交,那要讀完整份 SKILL.md 語意審查、流程與成本效率判斷,還有要不要套用建議 at:now every:7d jsc-meta:skill-update 0.3.1 seed -
|
||||
meta skill-delete none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed -
|
||||
meta skill-new none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed -
|
||||
meta skill-update none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed -
|
||||
meta skillset-update none - - 改技能組本身,等於助理改自己 - - jsc-meta:skill-check 0.3.1 seed -
|
||||
meta ste100-sync slice patrol,remind 定期比對上游版本,落後就提醒 套用上游變更 at:now every:7d jsc-meta:skill-check 0.3.1 seed pending:比對上游版本要連上游站台
|
||||
meta tooling-guide full invoke - - at:now every:7d jsc-meta:skill-check 0.3.1 seed -
|
||||
pkg pkg-update slice patrol 用 list-packages.sh、latest-version.sh 唯讀盤點落後最新穩定版的套件 升版、跑建置與測試 at:now every:7d jsc-review:code-review 0.1.0 seed {root}/jsc-pkg/tools/list-packages.sh {repo}
|
||||
review api-doc none - - 審查要判斷,判準要讀完整份文件與程式碼;助理在背景判不出來 - - jsc-git:pr 0.1.3 seed -
|
||||
review code-review none - - 審查要判斷,而且要不要照著改由呼叫端決定 - - jsc-review:api-doc 0.1.3 seed -
|
||||
review comment-cleanup none - - 會改專案檔案 - - jsc-git:commit 0.1.3 seed -
|
||||
sdlc analyze slice patrol,remind 盤點 ANALYZE_CONTENTS 未完成的分析並先把選項清單備好;另巡檢分析頁勾選與工作包議題狀態對不對得上 分析本體全部要決策。勾選與議題對不上時要對齊哪一邊,是真實來源衝突,也要人判 at:now every:1d jsc-sdlc:implement 0.3.2 seed pending:要連 wiki 讀 ANALYZE 目錄頁,得帶金鑰
|
||||
sdlc implement slice patrol,remind wp-gate.sh check-deps 盤點哪些工作包可以開始;階段鎖殘留就提醒 挑工作包、寫程式碼、開 PR。鎖檔不自己刪 at:now every:1d jsc-log:worklog 0.3.2 seed {root}/jsc-hooks/hooks/sdlc-gate.sh wp-report
|
||||
sdlc maintain none - - 核心是決策與寫程式碼 - - jsc-log:worklog 0.3.2 seed -
|
||||
sdlc plan slice patrol,remind 盤點 PLAN_CONTENTS 還沒分析的計畫,先把選項清單備好 規劃本體全部要決策 at:now every:1d jsc-sdlc:analyze 0.3.2 seed pending:要連 wiki 讀 PLAN 目錄頁,得帶金鑰
|
||||
|
||||
|
Reference in New Issue
Block a user