Files

25 KiB
Raw Permalink Blame History

name, description
name description
funcs 先判斷專案語言,再為每個 function 與每個指令檔(腳本/CI/部署設定檔)建立 .docs/ 草稿並補齊註解,並整理 `.gitea/workflows/readme.md` 的 workflow 說明、觸發條件與相關參數草稿;由使用者選擇實作方式後寫回原始碼/覆蓋指令檔/更新 workflow readme,並依專案內多數檔案的大小寫命名慣例正規化 Dockerfile 與 README 檔名(含同步更新引用),接著保守優化被文件化原始碼的效能(排版依原本方式維持原樣,僅修正有誤處),最後重建 README 專案列表、功能列表與使用範例。當使用者要補齊 function 文件、產生 XML doc、為每個 method 加 summary/param/remarks、為腳本或 CI/部署設定檔逐行加註解、整理 workflow README、建立 .docs 草稿,或提到 funcs、function 文件化、指令檔註解、workflow 文件化、XML documentation comments 時使用此 skill。

補齊 function 與指令檔文件

你要替目前工作區內的專案補齊 function 文件、指令檔註解與 workflow README。所有草稿一律由 subagent 產生,草稿全部完成後再詢問使用者如何實作,實作完成後保守優化被文件化原始碼的效能(排版依原本方式維持原樣,僅修正有誤處),最後重建 README。請依下列階段依序完成。

共用規範(shared plugin,必要前置)

執行本 skill 前,先以 Skill 工具載入下列共用規範並全程遵守;任一載入不到(shared plugin 未安裝)時,先詢問使用者是否安裝 shared pluginhttps://gitea.jsc.idv.tw/plugins/shared.git),使用者不安裝則直接中斷本 skill,不得只憑下方一行摘要繼續執行:

  • /jsc-shared:spec-output:繁體中文為主英文為輔、UTF-8(不含 BOM)無亂碼、subagent 提示需帶入本規範。
  • /jsc-shared:spec-execution:不臆測/需人工確認、不擴及無關檔案(generated/bin/obj/.git/.docs 與第三方依賴)。
  • /jsc-shared:spec-time-log:更新時間 Asia/Taipei yyyy/MM/dd HH:mm:ss、輸出訊息格式 [時間][階段][等級]: 訊息、一行一則。

第 0 步:先判斷語言與生態

在產生任何草稿之前,必須先判斷目標 repo 的主要程式語言與生態,後續所有草稿的註解格式都以此為準:

  • 檢查專案檔與設定檔(例如 *.csproj/*.slnpackage.jsonpyproject.toml/requirements.txtgo.modpom.xml/build.gradleCargo.toml 等)、主要副檔名分布與 README,推斷主要語言。
  • 依語言決定 function 註解格式:C# 用 XML documentation comments<summary>/<param>/<remarks>);其他語言改用該語言慣用的文件註解格式(例如 JS/TS 用 JSDoc、Python 用 docstring、Go 用 doc comment、Java 用 Javadoc)。
  • 統計專案檔名的大小寫慣例,作為後續 Dockerfile 與 README 檔名正規化(第 6 步、第 8 步)的依據:
    • 樣本範圍排除 generated/bin/obj/.git/.docs 與第三方依賴;把檔名歸類為「全大寫」(如 README.mdCHANGELOG.md)、「首字大寫」(如 DockerfileMakefile)、「全小寫」(如 readme.mddockerfile)等風格。
    • 優先以同類型檔案為樣本(README 看其他 *.md 文件檔、Dockerfile 看其他容器/建置相關檔);同類型樣本不足 3 個時,改看全專案檔名分布。
    • 只有某一風格明顯過半才視為「專案多數慣例」;無明顯多數時不做檔名正規化,保留原檔名。
  • .docs/doc-funcs-index.md 開頭記錄判斷出的主要語言、將採用的註解格式,以及檔名命名慣例的判斷結果(多數風格或「無明顯多數」)。

第 1 步:掃描 function 與指令檔

依第 0 步判斷的語言掃描兩類目標,皆排除 generated/bin/obj/.git/.docs 與第三方依賴:

  1. 可文件化的 function/method:以主要語言為準;若是 C#,包含 public/internal/protected/private method、constructor、extension method、operator。
  2. 指令檔:腳本與 CI/部署設定檔,包含但不限於:
    • 腳本:*.sh*.bash*.ps1*.bat*.cmdMakefile
    • CI/部署設定檔:CI/CD workflow(例如 .github/workflows/*.yml.gitea/workflows/*.yaml)、Dockerfiledocker-compose*.yml/docker-compose*.yaml
    • 不確定是否屬於指令檔時,依第 0 步判斷的生態保守認定,並在索引標註。

第 2 步:建立 .docs/ 與索引

建立 .docs/ 目錄(若不存在)。產生總索引 .docs/doc-funcs-index.md,分三段列出:

  • function 段:專案名稱、檔案、型別、可見性、簽名、是否已有文件、草稿檔路徑。
  • 指令檔段:檔案路徑、檔案類型(腳本/CI/部署設定檔)、註解符號、草稿檔路徑。
  • workflow 段:.gitea/workflows/ 底下所有 workflow 檔案與 .gitea/workflows/readme.md,列出 workflow 名稱、觸發條件、相關參數、草稿檔路徑。

第 3 步:派 Sub Agent 產生草稿(三類,全部由 subagent 產生)

針對每一個 function 與每一個指令檔各派一個 subagent。subagent 只分析指定目標與必要上下文,不直接改原始碼或原始指令檔,只在 .docs/ 底下建立草稿。

3-1 function 註解草稿

草稿檔名需可追溯來源,例如 .docs/doc-funcs/{relative-path}.{type}.{function}.md。內容必須包含:

  • 位置:檔案與行號
  • 簽名:完整簽名
  • 行為分析:方法實際做什麼、重要分支、副作用、例外/失敗行為
  • 建議 <summary>(或該語言對應的摘要):根據功能產生,不要只改寫方法名稱
  • 建議 <param>(或對應的參數說明):每個參數的用途、限制、null/empty 行為(能從 code 推論才寫;不能確定就標註需人工確認)
  • 建議 <remarks>(或對應的使用情境說明):至少一個使用情境,描述何時呼叫、前置條件、結果或注意事項
  • 內部呼叫:此 function 內直接呼叫的 internal/private/protected/private protected 方法;列出方法名稱、所屬型別、可見性與用途推論。若無呼叫則明確標註「無」。

3-2 指令檔草稿

對每個指令檔,subagent 要複製原始指令檔的完整內容到草稿,並補上註解,作為實作時直接覆蓋原檔的版本。草稿檔放在 .docs/doc-funcs/commands/{relative-path} (保留原副檔名,便於語法檢查)。草稿內容規則:

  • 檔案開頭必須有一段註解區塊,且「該份指令檔的用途」與「更新日期」必須包在同一個區塊內,不得拆成兩個分開的註解區塊。更新日期使用台灣時區(Asia/Taipei)並固定輸出為 yyyy/MM/dd HH:mm:ss(可用 TZ='Asia/Taipei' date +'%Y/%m/%d %H:%M:%S' 取得)。標頭格式必須依本 skill 的範本 templates/command-header.md 產生:依檔案類型選用 #::/REM 變體,並遵守範本的佔位符與放置規則(shebang/@echo off 之後、外框成對)。派 subagent 產生指令檔草稿時,必須把該範本內容一併提供給 subagent。
  • 原指令檔的每一行有效指令之間必須換行,且每行都要有對應的註解說明,解釋這行在做什麼、為何需要、重要參數或副作用。
  • 註解符號必須符合該檔案類型:*.sh/*.bash/*.ps1/Makefile/yaml/Dockerfile 用 #*.bat/*.cmdREM::。若該行語法不允許行尾註解(例如某些 yaml 值),改用該行上方獨立一行註解。
  • 必須保留原始指令的實際行為與順序,只新增註解與開頭用途/日期區塊,不得變更指令邏輯;若發現原指令可能有問題,於草稿中以註解標註「需人工確認」,不要逕自修改。
  • 唯一例外是第 6 步定義的「輸出訊息格式/區塊階段命名/一行一則」正規化:可移除印出區塊橫幅的輸出指令、把區塊名稱併入該段每行訊息前綴、並統一訊息格式。此類調整只動「訊息呈現方式」,不得改變訊息反映的實際行為或判斷邏輯,且開頭用途/更新日期標頭必須保留。草稿即應呈現正規化後的最終樣貌。

3-3 workflow README 草稿

.gitea/workflows/ 底下所有 workflow 檔案與 .gitea/workflows/readme.mdsubagent 要先彙整每個 workflow 的用途、觸發條件與相關參數,再產生可直接覆蓋的草稿。草稿檔放在 .docs/doc-funcs/workflows/readme.md,內容規則:

  • 以繁體中文為主、英文為輔,先列出 workflow 總覽,再依 workflow 檔案逐一整理。
  • 每個 workflow 至少包含:workflow 名稱、檔案位置、用途說明、觸發條件、主要輸入/環境參數、重要注意事項。
  • 若 workflow 內容有不確定或推論成分,需明確標註「需人工確認」。
  • 草稿內容不得變更任何 workflow 實際設定,只作為整理後的 README 草稿。

第 4 步:草稿品質檢查

在實作到原始碼之前,主 agent 必須檢查所有草稿:

  • 內容以繁體中文為主、英文為輔,且沒有任何亂碼、編碼錯誤、不可讀字元或明顯破損文字。
  • 指令檔草稿的指令本體與原檔一致、註解符號正確、每行皆有註解,且開頭標頭符合 templates/command-header.md 範本(用途與更新時間同一區塊、外框成對、位置正確)。
  • workflow README 草稿需完整涵蓋 .gitea/workflows/ 底下所有 workflow 檔案,且每個 workflow 都要有用途、觸發條件與相關參數說明。
  • 若發現問題,先修正草稿並重新檢查,通過後才能進入下一步。

第 5 步:詢問使用者要如何實作

所有草稿完成且通過檢查後,主 agent 必須詢問使用者要如何實作(使用 AskUserQuestion),提供以下選項:

  1. 全部一起實作。
  2. 逐個草稿實作(每實作完一個草稿就回報,並讓使用者確認後再做下一個)。
  3. 其他(由使用者輸入自訂方式)。

依使用者的選擇進行第 6 步。

第 6 步:依選擇實作草稿

主 agent 閱讀草稿並依使用者選擇的方式實作:

  • function 草稿:依第 0 步判斷的語言把建議文件寫入原始碼(C# 用 XML documentation comments)。註解盡量使用繁體中文;保留既有正確文件,僅補齊缺漏或明顯不足處;此步驟不得為了文件改變 runtime 行為。
  • 指令檔草稿:用草稿內容覆蓋原始指令檔(草稿已是含用途/日期/逐行註解的完整版本)。
  • Dockerfile 檔名正規化:覆蓋 Dockerfile 類指令檔時,若實際檔名大小寫與第 0 步判斷的專案多數命名慣例不符(例如專案多數為全小寫但檔名為 Dockerfile,或反之),用 git mv 把檔名調整為慣例風格;在大小寫不敏感的檔案系統上需兩段式改名(先 git mv Dockerfile Dockerfile.tmpgit mv Dockerfile.tmp dockerfile)。改名後必須同步更新專案內引用該檔名的位置(例如 docker-compose 的 dockerfile:、CI workflow 的 build 參數、文件內連結),確保建置行為不變;此檔名與引用調整不視為變更指令邏輯。第 0 步判斷為「無明顯多數」時保留原檔名,不做改名。
  • workflow README 草稿:用草稿內容覆蓋 .gitea/workflows/readme.md,保留 workflow 實際設定不變,僅整理成說明文件。
  • 若選「逐個草稿實作」,每完成一個就回報並等待使用者確認。
  • 若遇到大量目標,仍要分批持續處理,不要只做示範。若 token 或時間不足,先完成已列入 index 的批次,並在 .docs/doc-funcs-index.md 標記 pending。
  • 輸出訊息格式:依 /jsc-shared:spec-time-log — 若該 function 或指令檔有輸出訊息,統一為 [yyyy/MM/dd HH:mm:ss][階段][等級]: 訊息階段 選填、沿用所屬區塊原始名稱不翻譯;等級INF/WRN/ERR/TRC/DBG;時間 Asia/Taipei);區塊階段命名(#region/橫幅段落名稱作為 階段 前綴並移除包裹/橫幅本身、僅移除標記保留指令與行為)、檔案標頭保留例外、一行一則規則皆依該 spec。調整僅限本次被文件化的原始碼或被覆蓋的指令檔,且不得改變訊息所反映的實際行為或判斷邏輯。

第 7 步:實作註解後,保守優化效能並僅修正有誤的排版

完成註解實作後,對「本次被文件化的原始碼」做保守的效能優化;排版依照原本的排版方式維持原樣,僅修正確實有誤之處:

  • 效能:在不改變對外行為與輸出的前提下,優化明顯可改善處(例如不必要的重複計算、可提前 return、低效集合操作)。任何不確定是否等價的改動一律不做,並以註解或回報標註建議人工評估。
  • 排版:預設維持檔案原本的排版方式,不重排。只有排版確實有誤時才修正,例如:縮排錯亂或與同檔明顯不一致、tab/空白混用造成語法或建置錯誤、括號/區塊對齊錯誤造成誤讀、編碼或行尾字元異常。修正僅限有誤之處並比照該檔既有慣例;不得順手重排其他正確區塊、不得對全檔套用 formatter、不得引入新的排版風格(含 import/using 重新排序)。
  • 每次優化後必須執行可用的建置/測試(或至少語法檢查)驗證行為未被破壞;不得以套用全檔 formatter 作為驗證方式。若無法執行,明確說明原因並標註風險。優化僅限本次被文件化的檔案,不擴及無關檔案。

第 8 步:重建 README

補齊後,重建專案根目錄的 README。README 檔名依第 0 步判斷的專案多數命名慣例決定(例如多數全大寫用 README.md、多數全小寫用 readme.md);第 0 步判斷為「無明顯多數」或無法判斷時,沿用既有 README 檔名,完全沒有既有 README 時預設 README.md。若根目錄已有 README(不論大小寫),先刪除既有檔案,再以慣例檔名產生新的 README;不要保留或合併舊內容,也不得同時留下兩種大小寫的 README。若檔名大小寫因此改變,需同步更新專案內引用舊 README 檔名的位置(例如文件連結、CI、套件描述檔)。README 必須包含更新時間,更新時間必須使用台灣時區(Asia/Taipei)並固定輸出為 yyyy/MM/dd HH:mm:ss 格式,例如 2026/06/22 18:30:05;README 必須在功能列表前加入專案列表,並只列出所有專案內的公開方法(public method、public constructor、public extension method、public operator),但不得列出單元測試方法;若方法位於測試專案、測試檔案、測試型別,或帶有測試框架屬性/命名(例如 TestFactTheoryTestMethodTestCaseSetUpTearDownInitializeCleanup),即使是 public 也要排除。產生 README 前,必須先為每個公開方法決定「最終功能名稱」:

  • 預設功能名稱為 Type.Method
  • 若公開方法所在的型別簡名在不同專案或不同命名空間中重複,最終功能名稱不得只使用 Type.Method,必須在型別前加入可辨識的專案或模組前綴,格式為 Module.Type.Method。例如 Hangfire.ServiceCollectionExtension.AddHangfireOptionsHangfire.SqlServer.ServiceCollectionExtension.AddSqlServerHangfireSwagger.ServiceCollectionExtension.AddSwaggerSwagger.ApplicationBuilderExtension.UseSwaggerUI
  • 模組前綴優先取專案名稱、套件名稱或命名空間中最短且能區分同名型別的一段或多段名稱;若專案名稱與命名空間都可用,優先選擇對使用者最能辨識功能所屬模組的名稱。不得只靠遞增數字、隱藏 suffix 或不可見字元處理重複名稱。
  • 若同一個最終功能名稱仍因多載或同名方法重複,需在標題文字中加入可讀且語意明確的參數摘要,例如 Module.Type.Method(string name, int count);同樣不得使用單純數字 suffix 當主要解法。
  • 最終功能名稱、使用範例標題、功能描述與任何會輸出到 Markdown 表格、Markdown link text 或 heading 的文字,若包含 C# 泛型角括號,輸出前必須先做 Markdown/HTML 安全跳脫:< 轉為 &lt;> 轉為 &gt;。例如 ResponseModelExtension.WithData<TData> 必須輸出為 ResponseModelExtension.WithData&lt;TData&gt;ResponseModelExtension.WithData(ResponseModel<object>) 必須輸出為 ResponseModelExtension.WithData(ResponseModel&lt;object&gt;)。不得在表格、link text 或 heading 中輸出裸 WithData<TData>ResponseModel<object>Dictionary<string, object> 這類泛型片段。
  • README 內部 anchor id 必須用未跳脫的最終功能名稱產生安全 slug,再移除或正規化泛型標點;anchor id 不使用 &lt;&gt;。例如 ResponseModelExtension.WithData<TData> 的 anchor 可為 responsemodelextensionwithdatatdataResponseModelExtension.WithData(ResponseModel<object>) 的 anchor 可為 responsemodelextensionwithdataresponsemodelobject。同一個功能在功能列表與使用範例中必須共用同一個 anchor。

README 內容拆成三個主要區塊:

  • 專案列表:必須放在功能列表前;依專案名稱列出每個非測試專案,並在此區塊內拆成三張 Markdown 表格:
    • 專案描述表:欄位固定為「專案名稱」、「專案描述」。專案描述要根據該專案公開功能列表推測總結,不要只複製專案名稱;若專案沒有可列出的公開功能,保守描述為「此專案未公開可列入 README 的功能」。
    • 參考專案表:欄位固定為「專案名稱」、「參考專案列表」。參考專案列表列出該專案的 ProjectReference,格式為 名稱 版本,版本優先讀取被參考專案檔中的 VersionPackageVersionAssemblyVersion,都沒有時寫 未指定;沒有參考專案時寫 。多個項目以 <br> 分隔。
    • NuGet 套件表:欄位固定為「專案名稱」、「NuGet 套件列表」。NuGet 套件列表列出該專案的 PackageReference,格式為 名稱 版本,版本優先讀取 PackageReference 的 Version 屬性或子節點,其次讀取中央套件管理檔(例如 Directory.Packages.props)的對應版本,仍無法取得時寫 未指定;沒有 NuGet 套件時寫 。多個項目以 <br> 分隔。 三張表中的「專案名稱」都必須做成 Markdown 連結,導向目標專案 git origin 遠端上的該專案資料夾;連結文字使用專案名稱,連結目標使用專案檔(例如 .csproj)相對於目標專案根目錄的所在資料夾。若專案檔位於 repo 根目錄,連到 repo 根目錄。Gitea 類網址使用 /src/branch/<branch>/<project-directory>GitHub 類網址使用 /tree/<branch>/<project-directory>;無法可靠判斷平台時,優先採 Gitea 格式。若無法可靠解析目標專案的 origin 遠端、目前分支或專案資料夾路徑,才退回純文字專案名稱。
  • 功能列表:放在專案列表後並依專案名稱分組;每個專案使用一張 Markdown 表格呈現公開方法,欄位固定為「功能名稱」、「功能描述」。功能名稱顯示已跳脫的最終功能名稱,並需做成 Markdown 連結,導向目標專案 git origin 遠端上的對應檔案 function 起始行;功能描述使用已跳脫的簡單版描述,並做成 Markdown 連結,導向同一份 README 內「使用範例」區塊中該功能的標題錨點。
  • 使用範例:每個功能各有一個標題,標題文字使用同一個已跳脫的最終功能名稱;標題前必須放置 <a id="..."></a>id 必須由未跳脫的最終功能名稱產生安全 slug,且功能列表中功能描述連結的 #anchor 必須與對應使用範例標題前的 <a id="anchor"></a> 完全一致。完整版功能描述可依草稿的行為分析、<summary><param><remarks> 整理並完成必要跳脫;使用範例需展示典型呼叫方式、重要前置條件與預期結果。若無法可靠產生可執行範例,提供保守的情境式範例並標註需人工確認。

功能名稱連結必須以執行此 skill 的目標專案為準,先用 git remote get-url origin 取得遠端,再搭配目前分支、檔案相對於目標專案根目錄的路徑與 function 起始行號產生,不得使用本 skill repo、工作區外 repo 或硬編碼的外部 repo 座標。若 origin 是 SSH 格式(例如 git@gitea.example.com:owner/repo.git),需轉為對應 HTTPS 瀏覽 URL;若 origin 已是 HTTPS,沿用同一個 host 與 repo path,並移除尾端 .git。Gitea 類網址使用 /src/branch/<branch>/<path>#L123GitHub 類網址使用 /blob/<branch>/<path>#L123;無法可靠判斷平台時,優先採 Gitea 格式。若無法可靠解析目標專案的 origin 遠端、目前分支、檔案路徑或行號,才退回純文字功能名稱;README 不必列出內部呼叫方法。

第 9 步:README 錨點一致性檢查

README 重建完成後,必須自動檢查 README 內部錨點一致性;檢查未通過時要先修正 README 再清理草稿。至少確認:

  • 專案列表必須存在於功能列表之前,且必須拆成三張表:欄位為「專案名稱」、「專案描述」的專案描述表;欄位為「專案名稱」、「參考專案列表」的參考專案表;欄位為「專案名稱」、「NuGet 套件列表」的 NuGet 套件表。若能解析遠端、分支與專案資料夾,三張表的專案名稱都必須是連到遠端專案資料夾的 Markdown 連結。
  • 功能列表中的每個功能描述連結 #anchor 都存在完全相同的 <a id="anchor"></a>
  • 使用範例區塊中沒有重複的 <a id="..."></a>
  • 使用範例區塊中沒有未被功能列表引用的 anchor。
  • 最後一個功能列表項目的功能描述連結能對應到最後一個使用範例 anchor。
  • Markdown 表格的 link text 與使用範例 heading 中不得殘留裸泛型角括號模式,例如 <TData><object><string, object>;這些內容必須已轉為 &lt;...&gt;,但 <a id="..."></a> 錨點標籤本身不列為違規。
  • 最後一個功能列表項目後面的章節標題不得被前一個 source link 包住;必須檢查最後一列 Markdown link 的 URL 括號已正確閉合,且後續 ##/### heading 沒有落入任何未閉合的 link 文字或 URL 中。
  • 若檢查發現同名型別造成 anchor 或標題語意不明,應回到最終功能名稱產生規則,優先補上專案/模組前綴後重新產生 README。

第 10 步:清理草稿

README 錨點檢查通過後,刪除本次產生的所有草稿與索引:.docs/doc-funcs/(含 commands/ 指令檔草稿與 workflows/ workflow 草稿)與 .docs/doc-funcs-index.md。若 .docs/ 內已無其他內容,可一併移除空的 .docs/ 目錄;不得刪除使用者既有的 .docs/ 其他檔案。

第 11 步:格式化/建置驗證

完成後執行合適的格式化/建置或至少語法驗證(包含被覆蓋的指令檔語法);若無法執行,說明原因。

重要限制

  • 不要修改 generated/bin/obj/.git/.docs 以外的非原始碼/非指令檔,除非是建立草稿、索引,依流程實作註解、依草稿覆蓋指令檔、優化本次被文件化原始碼、刪除並重建根目錄 README,或依第 0 步判斷的專案多數命名慣例正規化 Dockerfile 與 README 檔名(含同步更新引用舊檔名的位置)。
  • Dockerfile 與 README 的檔名正規化只在專案多數慣例明確(某一風格明顯過半)時執行;無明顯多數就保留原檔名。改名時必須同步更新所有引用,不得造成建置或連結失效。
  • 不要新增與文件無關的 helper、測試或重構。
  • 草稿是實作依據,不能跳過;所有草稿一律由 subagent 產生。
  • function 註解步驟不得為了文件改變 runtime 行為;效能優化僅限第 7 步、僅限本次被文件化原始碼,且必須保持對外行為等價並驗證。
  • 排版一律依照檔案原本的排版方式;只有排版確實有誤(縮排錯亂、tab/空白混用致錯、對齊錯誤造成誤讀、編碼/行尾異常)才修正該處,不得全檔重排、不得套用 formatter 改變原有風格。
  • 指令檔草稿只新增註解與開頭用途/日期區塊,不得變更指令邏輯;唯一例外是第 6 步的輸出訊息格式正規化(可移除區塊橫幅、把區塊名稱併入每行前綴、統一訊息格式),但不得改變訊息反映的實際行為,且開頭用途/更新日期標頭必須保留。指令檔開頭的用途與更新日期必須包在同一個註解區塊內,且格式依本 skill 的 templates/command-header.md 範本。
  • function 或指令檔若有輸出訊息,訊息格式、區塊階段命名、檔案標頭保留與一行一則規則一律依 /jsc-shared:spec-time-log,且不得藉此改變訊息反映的實際行為。
  • 若 function 或指令行為無法可靠推論,文件中要保守描述並標註不確定點,不要編造。
  • 原始碼註解與 README 的語言依 /jsc-shared:spec-output(繁體中文為主;專有名詞、API 名稱、型別名稱與程式碼範例可保留英文)。