Skip to content

Commit 7d1dc84

Browse files
committed
feat(site): 新增安裝指南頁(含 GitHub repo 內嵌瀏覽與 OpenCode/TRAE 安裝說明)+ 首頁第三張卡片 + 頁尾措辭修正
1 parent 84bebc6 commit 7d1dc84

6 files changed

Lines changed: 358 additions & 5 deletions

File tree

assets/site.css

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ h1 {
406406
}
407407

408408
/* ---------- Entry cards (index) ---------- */
409-
.entry-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1.3rem; max-width: 820px; margin: 0 auto; }
409+
.entry-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.3rem; max-width: 960px; margin: 0 auto; }
410410
.entry-card {
411411
position: relative;
412412
overflow: hidden;
@@ -443,6 +443,73 @@ h1 {
443443
footer { margin-top: 3.2rem; padding-top: 1.2rem; border-top: 1px solid var(--line); text-align: center; font-size: 0.72rem; color: var(--text-muted); line-height: 2; }
444444
footer a { color: var(--text-soft); }
445445

446+
/* ---------- Install guide ---------- */
447+
.guide h2 { color: #f0f2ff; font-family: var(--font-display); font-size: 1.15rem; margin: 1.8rem 0 0.5rem; }
448+
.guide h3 { color: #e6f7fb; font-family: var(--font-display); font-size: 0.98rem; margin: 1.2rem 0 0.4rem; }
449+
.guide p { margin: 0.4rem 0; color: var(--text-soft); }
450+
.guide ul, .guide ol { margin: 0.35rem 0 0.5rem 1.3rem; color: var(--text-soft); }
451+
.guide li { margin: 0.25rem 0; }
452+
.guide strong { color: #f0f2ff; }
453+
.guide pre {
454+
background: #0b0b11;
455+
border: 1px solid var(--line);
456+
border-radius: 8px;
457+
padding: 0.75rem 0.95rem;
458+
margin: 0.5rem 0;
459+
overflow-x: auto;
460+
font-family: var(--font-mono);
461+
font-size: 0.78rem;
462+
line-height: 1.6;
463+
color: #e2e8f0;
464+
}
465+
.guide :not(pre) > code {
466+
background: rgba(34, 211, 238, 0.12);
467+
color: #7dd3e0;
468+
padding: 0.06rem 0.32rem;
469+
border-radius: 4px;
470+
font-family: var(--font-mono);
471+
font-size: 0.85em;
472+
}
473+
.guide .hint { font-size: 0.74rem; color: var(--text-muted); }
474+
.guide a { color: var(--cyan); }
475+
476+
/* ---------- GitHub embed panel ---------- */
477+
.embed-panel { border: 1px solid var(--line-strong); border-radius: 14px; background: var(--surface); padding: 1rem 1.2rem; margin: 1.2rem 0; }
478+
.embed-head { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; flex-wrap: wrap; margin-bottom: 0.8rem; }
479+
.embed-title { font-family: var(--font-display); color: #e6f7fb; font-size: 0.9rem; }
480+
.btn {
481+
display: inline-block;
482+
background: linear-gradient(180deg, rgba(34, 211, 238, 0.16), rgba(232, 121, 249, 0.16)), var(--surface-2);
483+
border: 1px solid var(--line-strong);
484+
border-radius: 8px;
485+
padding: 0.4rem 0.9rem;
486+
font-size: 0.78rem;
487+
color: #e6f7fb;
488+
border-bottom: none;
489+
}
490+
.btn:hover { border-color: var(--cyan); box-shadow: 0 4px 18px rgba(34, 211, 238, 0.2); color: #e6f7fb; }
491+
.repo-status { font-size: 0.7rem; color: var(--text-muted); margin-bottom: 0.6rem; }
492+
.repo-readme { font-size: 0.85rem; color: var(--text-soft); line-height: 1.75; }
493+
.repo-readme h1, .repo-readme h2, .repo-readme h3 { color: #f0f2ff; font-family: var(--font-display); margin: 0.7rem 0 0.3rem; }
494+
.repo-readme p { margin: 0.4rem 0; }
495+
.repo-readme ul, .repo-readme ol { margin: 0.3rem 0 0.3rem 1.2rem; }
496+
.repo-readme li { margin: 0.15rem 0; }
497+
.repo-readme blockquote { border-left: 3px solid var(--cyan); padding-left: 0.9rem; margin: 0.4rem 0; color: var(--text-muted); font-style: italic; }
498+
.repo-readme code { background: rgba(34, 211, 238, 0.12); color: #7dd3e0; padding: 0.06rem 0.32rem; border-radius: 4px; font-family: var(--font-mono); font-size: 0.85em; }
499+
.repo-readme pre { background: #0b0b11; border: 1px solid var(--line); border-radius: 8px; padding: 0.7rem 0.9rem; overflow-x: auto; }
500+
.repo-readme pre code { background: none; color: #e2e8f0; padding: 0; }
501+
.repo-readme a { color: var(--cyan); }
502+
.repo-readme img { max-width: 100%; border-radius: 8px; }
503+
.repo-readme table { border-collapse: collapse; width: 100%; margin: 0.4rem 0; }
504+
.repo-readme th, .repo-readme td { border: 1px solid var(--line-strong); padding: 0.3rem 0.5rem; text-align: left; }
505+
.repo-tree { margin-top: 0.9rem; border-top: 1px solid var(--line); padding-top: 0.8rem; }
506+
.repo-tree details { margin: 0.25rem 0; }
507+
.repo-tree summary { cursor: pointer; color: #cfe8f5; font-family: var(--font-display); font-size: 0.8rem; }
508+
.repo-tree ul { margin: 0.2rem 0 0.4rem 1.2rem; }
509+
.repo-tree li { font-size: 0.78rem; margin: 0.12rem 0; }
510+
.repo-tree a { color: var(--text-soft); border-bottom: none; }
511+
.repo-tree a:hover { color: var(--cyan); }
512+
446513
/* ---------- Responsive ---------- */
447514
@media (max-width: 800px) {
448515
.pair { grid-template-columns: 1fr; }

index.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,16 @@ <h1>Matt Pocock 技能包</h1>
2828
<span class="ec-en">Learning Path</span>
2929
<span class="ec-desc">不想只看懂、想真的上手?從 L0 一路練到 L4,分層分類照著走。</span>
3030
</a>
31+
<a class="entry-card" href="install.html">
32+
<span class="ec-icon">📦</span>
33+
<span class="ec-title">安裝指南</span>
34+
<span class="ec-en">Install Guide</span>
35+
<span class="ec-desc">把這包技能裝進 OpenCode 或 TRAE(IDE / CLI),一步步照著做就會用。內嵌 GitHub repo 可直接瀏覽。</span>
36+
</a>
3137
</div>
3238
<footer>
3339
<div>這是 <a href="https://github.com/mattpocock/skills">mattpocock/skills</a> 的繁體中文翻譯學習站——翻譯只動說明文字,指令、路徑、技能名一律照原樣,安裝照常可用。</div>
34-
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 繁中翻譯與這個站 © OpenCode Agent(deepseek-v4-flash<br><a href="map.html">全景圖</a> · <a href="learning-path.html">學習路線</a></div>
40+
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 使用 OpenCode deepseek-v4-flash 進行繁中翻譯與網站設計建置<br><a href="map.html">全景圖</a> · <a href="learning-path.html">學習路線</a></div>
3541
</footer>
3642

3743
</div>

install.html

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
<!DOCTYPE html>
2+
<html lang="zh-Hant">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>安裝指南 · Install Guide · mattpocock-skills-zh-tw</title>
7+
<link rel="preconnect" href="https://fonts.googleapis.com">
8+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9+
<link href="https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,400;8..60,600;8..60,700&family=Noto+Serif+TC:wght@400;600;700&display=swap" rel="stylesheet">
10+
<link rel="stylesheet" href="assets/site.css">
11+
</head>
12+
<body>
13+
<div class="container">
14+
<div class="back-link"><a href="index.html">← 首頁</a><a href="map.html">全景圖</a><a href="learning-path.html">學習路線</a></div>
15+
<header>
16+
<h1>安裝指南</h1>
17+
<div class="subtitle">Install Guide · 把這包技能裝進 OpenCode 或 TRAE(IDE / CLI)</div>
18+
<div class="badge-line">裝好之後,每個 repo 先跑一次 /setup-matt-pocock-skills,再從 /ask-matt 開始</div>
19+
</header>
20+
<div class="guide">
21+
22+
<h2>這是什麼</h2>
23+
<p>這是一組「給 AI 工程師用的代理技能」的繁體中文版。技能就是一段可重用的指令集,裝進你的 agent(OpenCode / TRAE / Claude Code…)之後,agent 就能執行 <code>/grill-with-docs</code><code>/tdd</code><code>/code-review</code> 這類工作流。<strong>本 repo 是翻譯版:只改說明文字,指令、路徑、技能名全部照原樣,所以安裝方式跟上游完全一樣。</strong></p>
24+
25+
<div class="embed-panel">
26+
<div class="embed-head">
27+
<span class="embed-title">📦 shumingyang-opencode/mattpocock-skills-zh-tw</span>
28+
<a class="btn" href="https://github.com/shumingyang-opencode/mattpocock-skills-zh-tw" target="_blank" rel="noopener">在 GitHub 開啟 ↗</a>
29+
</div>
30+
<div id="repo-status" class="repo-status">正在載入 GitHub repo…</div>
31+
<div id="repo-readme" class="repo-readme"></div>
32+
<div id="repo-tree" class="repo-tree"></div>
33+
</div>
34+
35+
<h2>方式一(推薦):skills.sh 一鍵安裝</h2>
36+
<p><a href="https://skills.sh" target="_blank" rel="noopener">skills.sh</a> 是開放的技能安裝器,支援 OpenCode 與 TRAE。在終端機執行:</p>
37+
<h3>安裝到 OpenCode</h3>
38+
<pre>npx skills@latest add shumingyang-opencode/mattpocock-skills-zh-tw -a opencode</pre>
39+
<h3>安裝到 TRAE(國際版)</h3>
40+
<pre>npx skills@latest add shumingyang-opencode/mattpocock-skills-zh-tw -a trae</pre>
41+
<h3>安裝到 TRAE 中國版</h3>
42+
<pre>npx skills@latest add shumingyang-opencode/mattpocock-skills-zh-tw -a trae-cn</pre>
43+
<p class="hint">加上 <code>-g</code> 表示裝到全域(所有專案都可用);不加則裝進目前專案。想一次裝到兩個 agent 就同時寫 <code>-a opencode -a trae</code></p>
44+
<ul>
45+
<li>互動安裝時會問要裝哪些技能——<strong>務必勾選 <code>setup-matt-pocock-skills</code></strong>,它是其他技能的前置。</li>
46+
<li>可以選擇 symlink(推薦,方便日後更新)或 copy 兩種裝法。</li>
47+
<li>日後更新:<code>npx skills update</code></li>
48+
<li>想先看看有哪些技能再裝:<code>npx skills add shumingyang-opencode/mattpocock-skills-zh-tw --list</code></li>
49+
</ul>
50+
51+
<h2>方式二:手動複製(OpenCode)</h2>
52+
<p>不習慣用安裝器的話,直接把技能資料夾複製進去。OpenCode 讀取技能的兩個位置:</p>
53+
<ul>
54+
<li>全域:<code>~/.config/opencode/skills/</code>(Windows 是 <code>C:\Users\&lt;你&gt;\.config\opencode\skills\</code></li>
55+
<li>專案:<code>.agents/skills/</code>(放在你的專案根目錄)</li>
56+
</ul>
57+
<p>先把 repo 抓下來,再把 <code>skills/</code> 底下每個技能資料夾複製進去。PowerShell 範例:</p>
58+
<pre># 抓 repo
59+
git clone https://github.com/shumingyang-opencode/mattpocock-skills-zh-tw.git
60+
cd mattpocock-skills-zh-tw
61+
62+
# 複製全部技能到 OpenCode 全域目錄
63+
Copy-Item -Path "skills\*\*" -Destination "$env:USERPROFILE\.config\opencode\skills\" -Recurse -Force</pre>
64+
<p class="hint">複製後,OpenCode 重新載入(或重開)就會看到這些技能。</p>
65+
66+
<h2>方式三:手動複製(TRAE)</h2>
67+
<p>TRAE 讀取技能的位置(參見 <a href="https://docs.trae.ai/ide/skills" target="_blank" rel="noopener">TRAE Skills 文件</a>):</p>
68+
<ul>
69+
<li>全域(國際版):<code>~/.trae/skills/</code></li>
70+
<li>全域(中國版):<code>~/.trae-cn/skills/</code></li>
71+
<li>專案:<code>.trae/skills/</code></li>
72+
</ul>
73+
<pre># 複製全部技能到 TRAE 全域目錄(國際版範例)
74+
Copy-Item -Path "skills\*\*" -Destination "$env:USERPROFILE\.trae\skills\" -Recurse -Force</pre>
75+
76+
<h2>開始使用</h2>
77+
<ol>
78+
<li>在 agent 中、每個 repo 執行一次 <code>/setup-matt-pocock-skills</code>——設定 issue tracker、分診標籤與文件位置。</li>
79+
<li>不知道下一步該用哪個技能?輸入 <code>/ask-matt</code>,它會依你的處境推薦。</li>
80+
<li>本網站就是這包技能的閱讀版:<a href="map.html">全景圖</a>看關係,<a href="learning-path.html">學習路線</a>照順序學,每個技能頁都是中英逐段對照。</li>
81+
</ol>
82+
83+
<h2>注意</h2>
84+
<ul>
85+
<li>這是<strong>翻譯版</strong>;想用英文原版,請安裝上游:<code>npx skills@latest add mattpocock/skills</code></li>
86+
<li><strong>不要兩套都裝</strong>——每個技能會出現兩次。</li>
87+
<li>翻譯只動說明文字,若遇問題請先比對上游行為。</li>
88+
</ul>
89+
90+
</div>
91+
<script src="https://cdn.jsdelivr.net/npm/marked@12/marked.min.js"></script>
92+
<script>
93+
(async function () {
94+
const REPO = "shumingyang-opencode/mattpocock-skills-zh-tw";
95+
const status = document.getElementById("repo-status");
96+
const readme = document.getElementById("repo-readme");
97+
const tree = document.getElementById("repo-tree");
98+
try {
99+
const r = await fetch("https://api.github.com/repos/" + REPO + "/readme");
100+
if (r.ok) {
101+
const j = await r.json();
102+
const md = atob(j.content.replace(/\s/g, ""));
103+
readme.innerHTML = marked.parse(md);
104+
}
105+
} catch (e) {}
106+
try {
107+
const t = await fetch("https://api.github.com/repos/" + REPO + "/git/trees/main?recursive=1");
108+
if (t.ok) {
109+
const j = await t.json();
110+
const files = (j.tree || []).filter(x => x.type === "blob");
111+
const dirs = {};
112+
for (const f of files) {
113+
const parts = f.path.split("/");
114+
const key = parts.length > 1 ? parts[0] + "/" : "";
115+
(dirs[key] = dirs[key] || []).push(f.path);
116+
}
117+
let h = '<div class="tree-group">';
118+
for (const d of Object.keys(dirs).filter(k => k).sort()) {
119+
h += '<details open><summary>&#128193; ' + d + '</summary><ul>';
120+
for (const p of dirs[d].sort()) {
121+
const n = p.split("/").pop();
122+
h += '<li><a href="https://github.com/' + REPO + '/blob/main/' + p + '" target="_blank" rel="noopener">' + n + '</a></li>';
123+
}
124+
h += '</ul></details>';
125+
}
126+
h += '</div>';
127+
tree.innerHTML = h;
128+
status.textContent = "✓ 已載入 GitHub repo 內容";
129+
status.style.color = "var(--emerald)";
130+
}
131+
} catch (e) {}
132+
})();
133+
</script>
134+
<footer>
135+
<div>這是 <a href="https://github.com/mattpocock/skills">mattpocock/skills</a> 的繁體中文翻譯學習站——翻譯只動說明文字,指令、路徑、技能名一律照原樣,安裝照常可用。</div>
136+
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 使用 OpenCode 與 deepseek-v4-flash 進行繁中翻譯與網站設計建置</div>
137+
</footer>
138+
139+
</div>
140+
</body>
141+
</html>

learning-path.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ <h1>學習路線</h1>
2828
<div class="level lv-fuchsia"><div class="level-head"><span class="level-badge">進行中</span><span class="level-title">實驗室</span><span class="level-sub">還在長大的技能,歡迎回饋</span></div><div class="card-grid"><a class="card" href="claude-handoff/SKILL.html"><span class="c-name">claude-handoff</span><span class="c-zh">把目前的對話接給下一個 session,不間斷地接著做。</span><span class="c-tags"><span class="c-tag">in-progress</span><span class="c-tag">user-invoked</span></span></a><a class="card" href="loop-me/SKILL.html"><span class="c-name">loop-me</span><span class="c-zh">反覆詰問你要做的東西,直到規格真的長出來。</span><span class="c-tags"><span class="c-tag">in-progress</span><span class="c-tag">user-invoked</span></span></a><a class="card" href="setup-ts-deep-modules/SKILL.html"><span class="c-name">setup-ts-deep-modules</span><span class="c-zh">幫 TypeScript 專案接上 dependency-cruiser,把每個套件圍成深模組。</span><span class="c-tags"><span class="c-tag">in-progress</span><span class="c-tag">user-invoked</span></span></a><a class="card" href="writing-beats/SKILL.html"><span class="c-name">writing-beats</span><span class="c-zh">把素材排成一段一段的故事節拍,寫出有節奏的文章。</span><span class="c-tags"><span class="c-tag">in-progress</span><span class="c-tag">user-invoked</span></span></a><a class="card" href="writing-fragments/SKILL.html"><span class="c-name">writing-fragments</span><span class="c-zh">先撿素材、挖碎片,還沒結構也不用怕。</span><span class="c-tags"><span class="c-tag">in-progress</span><span class="c-tag">user-invoked</span></span></a><a class="card" href="writing-shape/SKILL.html"><span class="c-name">writing-shape</span><span class="c-zh">把碎片打磨成型,一段一段拼成文章。</span><span class="c-tags"><span class="c-tag">in-progress</span><span class="c-tag">user-invoked</span></span></a></div></div>
2929
<footer>
3030
<div>這是 <a href="https://github.com/mattpocock/skills">mattpocock/skills</a> 的繁體中文翻譯學習站——翻譯只動說明文字,指令、路徑、技能名一律照原樣,安裝照常可用。</div>
31-
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 繁中翻譯與這個站 © OpenCode Agent(deepseek-v4-flash</div>
31+
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 使用 OpenCode deepseek-v4-flash 進行繁中翻譯與網站設計建置</div>
3232
</footer>
3333

3434
</div>

map.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ <h1>技能全景圖</h1>
7373
<div class="zone"><div class="zone-label">meta 技能:怎麼寫給 agent 看的文件</div><div class="h-zone"><div class="h-row"><a class="node meta" href="writing-for-agents/SKILL.html"><span class="label">writing-for-agents</span><span class="tag">教你怎麼寫「給 agent 看」的文件——技能、AGENTS.md 都算。</span><span class="pill">model-invoked</span></a></div><div class="h-note">這是在教「怎麼寫技能」的技能</div></div></div>
7474
<footer>
7575
<div>這是 <a href="https://github.com/mattpocock/skills">mattpocock/skills</a> 的繁體中文翻譯學習站——翻譯只動說明文字,指令、路徑、技能名一律照原樣,安裝照常可用。</div>
76-
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 繁中翻譯與這個站 © OpenCode Agent(deepseek-v4-flash</div>
76+
<div>內容 © <a href="https://github.com/mattpocock">Matt Pocock</a>(MIT License)· 使用 OpenCode deepseek-v4-flash 進行繁中翻譯與網站設計建置</div>
7777
</footer>
7878

7979
</div>

0 commit comments

Comments
 (0)