Community程式設計與開發github.com

arminazimi/slipway-content

在 Slipway 網站上撰寫或編輯頁面、文件頁面或文章,或將其翻譯成另一種語言,使其通過 front matter 結構定義和 slipway doctor 的檢查。

slipway-content 是什麼?

這個技能讓 AI 代理能夠在 Slipway 靜態網站上編寫或編輯內容。Slipway 是一個基於 Markdown 和 Jekyll 的網站框架,內容由 front matter (YAML 元資料) 和 Markdown 主體組成。技能涵蓋了多種頁面類型:一般頁面(使用 `page` 版面)、文件頁面(使用 `doc` 版面,含側邊欄)、日期文章(`post`)以及首頁(`home`)。它嚴格要求遵循 front matter 結構定義——所有允許的鍵、型別和值都在 `reference/front-matter.md` 中列出,並禁止使用 Liquid 模板語言。 支援的功能包括:多語言翻譯(需在 `_config.yml` 中設定語言,並使用 `translation_key` 連結對應頁面)、草稿和排程文章(利用檔案名稱中的日期自動發布)、系列文章(透過 `series` 欄位)、以及自訂版型(如窄版、寬版、滿版,或使用 CSS 類別 `sl-wide` 和 `sl-bleed`)。 驗證流程分為三個步驟:首先使用 `validate.mjs` 腳本檢查 front matter,然後使用 `bundle exec jekyll build` 建置網站並修正錯誤,最後執行 `slipway doctor`,它會根據 `AGENTS.md`、`content-schemas.json`(如果存在)和來源映射來驗證網站。最終的目標是:編輯後的內容不產生任何比基準線更多的新問題或發現。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/arminazimi/slipway/tree/HEAD/skills/slipway-content

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

預覽

來自技能 README

建置時間圖表
slipway-content preview

說明文件

在 Slipway 網站上撰寫頁面和文章

Slipway 網站是由 Markdown 檔案和一塊 front matter 組成的。版面會處理其餘部分:標題、標題、目錄、日期和語言切換器。您根據結構定義撰寫 front matter,並用純 Markdown 撰寫文字。如果網站有 AGENTS.md,請先閱讀它;它與此技能不同的部分以此技能為準。

1. 取得基準線

先一次性取得主題的檢查檔案,放在網站以外的資料夾中:

git clone --depth 1 https://github.com/arminazimi/slipway "$HOME/.slipway"
cd "$HOME/.slipway" && npm ci && cd -

在您進行任何更改前執行第 6 節,並保留輸出。當您的編輯沒有新增任何問題和任何發現時,編輯才算完成。

2. 選擇版面與檔案

您正在撰寫的內容layout檔案
一般頁面(關於、聯絡)page<folder>/<page>.md,網址為 /<folder>/<page>.html
含側邊欄的文件頁面doc任意資料夾,通常是 docs/<page>.md,需有 permalink
有日期的文章post_posts/<date>-<slug>.md,其中 <date> 格式為 YYYY-MM-DD
首頁homeindex.md

文章的檔案名稱就是它的日期和網址;要更改標題請設定 title,切勿重新命名檔案。doc 頁面只有在 _data/navigation.yml 中的 docs 清單連結了它的 permalink 時才會顯示在側邊欄中;請按閱讀順序將它加入其中。請不要建立 search.json、feed.xml、sitemap.xml、404.md、tags.md 或 archive.md:這些檔案已經存在,而且它們刻意只有 front matter 而沒有文字。

關於文章的草稿、排程文章和編輯:草稿放在 _drafts/<slug>.md 中,檔案名稱不含日期——GitHub Pages 永遠不會建置 _drafts/,而 jekyll serve --drafts 會以今天的日期預覽它。排程文章是一般的文章,但其 YYYY-MM-DD 檔案名稱是未來的日期:GitHub Pages 會在該日期自動發布它,而 jekyll serve --future 會提前預覽它,並在頁面上標記為「已排程」。在對已發布的文章進行大量編輯後,請加上 updated: YYYY-MM-DD(格式與檔案名稱的日期相同):文章會顯示「編輯於」的資訊,而摘要、網站地圖和結構化資料會將其報告為最後修改日期。

3. 根據結構定義填寫 front matter

每個鍵、其型別和允許的值都在 reference/front-matter.md 中,該檔案是從檢查工具使用的結構定義產生的。只使用它為您的 layout 列出的鍵。

  • title 是必填且不得為空。版面會將其列印為頁面標題。
  • 加上 description:一句話,用於搜尋結果和連結預覽。
  • tags 和 categories 是清單:tags: [release, notes]。
  • 文章中的 author 是 _data/authors.yml 中的一個鍵,或是多個作者的鍵清單:author: [ada, sam]。如果該鍵在該檔案中找不到,請先在那裡加入作者。
  • 文章中的 series 將其放入系列中:在每個部分使用完全相同的名稱,series: Writing for the web。各部分按日期排序。
  • permalink 以 / 開頭。在預設語言的(default language)文章中請省略它;網站的配置會設定網址。
  • 在非網站預設語言(_config.yml 中的 lang)的頁面上設定 lang,並且在每個有翻譯版本的頁面上也設定 lang。
  • 僅限 home:cta_text 和 cta_url 要一起使用,否則就都不使用。variant 選擇外觀:editorial(預設)、landing(加上 features,每個都有 title)、blog 或 docs(從 _data/navigation.yml 的 docs 清單中產生卡片)。
  • 如果值包含 : 或開頭是 YAML 特殊處理的字元([、{、*、&、!、#、|、>、@ 或反引號),請用引號括起來。

4. 撰寫主體

  • 僅限純 Markdown。絕對不要使用 Liquid:沒有 {{ }} 和 {% %},即使在程式碼區塊中也不行。版面已經加入了 Liquid 會做的所有事情。
  • 從 ## 開始章節。h1 是標題;主體中的一個 # 標題會產生第二個 h1。
  • 保持標題層級順序(##,然後 ###),以便目錄和「使用您的代理編輯」按鈕能找到每個章節。
  • 連結到其他頁面時使用網址,而非檔案:[安裝](/docs/install/)、[關於](/about.html)。
  • 圖片放在 assets/ 中;每張圖片都要有替代文字:![建置時間圖表](/assets/build-times.png)。
  • 若要讓頁面更寬,請在 front matter 中設定 width: narrow、wide 或 full。若要只放寬一個區塊(表格、圖片、圖形),請將其包在一個帶有類別 sl-wide(最寬 64rem)或 sl-bleed(邊到邊)的 HTML 元素中:<figure class="sl-wide"><img src="/assets/map.png" alt="路線地圖"></figure>。doc 版面會將章節保留在它的欄位中。
  • 為程式碼區塊指定語言(```yaml),以便它們能高亮顯示,並在從右到左的頁面中保持從左到右閱讀。

通過結構定義的範例:

每個範例中的第一個註解說明了檔案應放置的位置。

5. 新增翻譯

  1. 該語言必須存在於 _config.yml 的 slipway.languages 中,並包含 code、name 和 prefix(例如 /fa)。如果缺少該語言,請在新增語言之前先詢問:這會更改每個頁面的切換器。
  2. 如果原文還沒有 translation_key,請為其新增一個,例如 plain-markdown,並且如果還沒有 lang,也請設定 lang(lang: en):切換器透過這兩個值來找到翻譯。為翻譯版本設定相同的 translation_key。這會將兩者在語言切換器和網站地圖中連結起來。
  3. 將 lang 設定為語言代碼,並將 permalink 設定為前綴下的網址:/fa/plain-markdown/。
  4. 檔案放置位置:頁面放在前綴資料夾中(fa/about.md);文章則留在 _posts/ 中,使用自己的 slug(_posts/2026-10-20-plain-markdown-fa.md)。
  5. 翻譯 title、description、tags 和主體。保持 layout、日期、程式碼、命令和 URL 不變。
  6. 如果網站有該語言的標題選單(_data/navigation.yml 中的 main_fa),也請將頁面加入其中。

從右到左的語言(fa、ar、he、ur)會根據 lang 獲得從右到左的版面;請不要設定 direction 或 dir。在波斯語文字中,使用波斯語的 ی 和 ک(而非阿拉伯語的 ي 和 ك),在諸如 می‌شود 等詞語中使用零寬度非連接符(zero-width non-joiner),以及使用波斯語標點符號(، 和 ؟)。將命令、檔案名稱和程式碼放在反引號中:它們在句子內保持從左到右。

6. 檢查編輯

從網站資料夾中,根據結構定義檢查每個頁面的配置和 front matter:

node "$HOME/.slipway/tools/theme/validate.mjs" .

每個問題都會以 file:line key: message (allowed: ...) 的格式列印出來。請在該行修正它,使用允許的值,然後再次執行。接著,如果網站有 Gemfile,請建置網站:

bundle exec jekyll build

閱讀每個錯誤和警告,並在其指出的檔案中進行修正。然後在原始碼和建置輸出上執行 doctor。它會根據可代理編輯的規範檢查網站:AGENTS.md、content-schemas.json(當網站有該檔案時,它會根據其指定的結構定義驗證您的 front matter)、來源映射和編輯提示:

node "$HOME/.slipway/packages/doctor/bin/slipway.mjs" doctor . --build _site

將其發現與您的基準線進行比較。一個提及您檔案名稱的發現是您需要修正的。如果沒有 Gemfile,請在沒有 --build 的情況下執行 doctor,並在推送後閱讀 Pages 建置的記錄。

絕不

  • 絕對不要在頁面中使用 Liquid({{ }} 或 {% %})。
  • 絕對不要新增 reference/front-matter.md 中未列出的 front matter 鍵。
  • 絕對不要只更改一個翻譯版本的 translation_key;要更改就更改所有共用該 translation_key 的頁面,否則都不要更改。
  • 絕對不要重新命名或移動已發布的頁面或文章來更改其標題;請設定 title。它的網址就是它的檔案名稱或 permalink,連結到它的連結會因此而中斷。
  • 絕對不要編輯 _site/,也絕對不要刪除一個有 front matter 但沒有文字的頁面。
  • 絕對不要編輯主題版面或包含檔案來更改單一頁面的外觀。

相關技能