> ## Documentation Index
> Fetch the complete documentation index at: https://felimet-hub.jmcores.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 附錄 D：延伸資源與社群清單

> 官方文件、跨工具標準、社群發現入口、安全與供應鏈工具、研究者延伸資源的整理。社群清單僅為發現入口，不等於品質背書。

export const ResourceList = ({lang = "zh", resources = [], categories = []}) => {
  const UI = lang === "en" ? {
    allCats: "All",
    noResults: "No matching resources.",
    visit: "Visit",
    count: n => n === 1 ? "1 resource" : `${n} resources`,
    types: {
      official: "Official",
      standard: "Standard",
      community: "Community",
      security: "Security",
      research: "Research",
      tool: "Tool",
      platform: "Platform"
    }
  } : {
    allCats: "全部",
    noResults: "沒有符合的資源。",
    visit: "前往",
    count: n => `${n} 個資源`,
    types: {
      official: "官方",
      standard: "標準",
      community: "社群",
      security: "安全",
      research: "研究",
      tool: "工具",
      platform: "平台"
    }
  };
  const ACCENT = "#bf7551";
  const ACCENT_L = "#cf8a68";
  const ACCENT_BG = "rgba(191,117,81,0.08)";
  const ACCENT_BDR = "rgba(191,117,81,0.35)";
  const TYPE_COLORS = {
    official: {
      light: ["#2563a0", "rgba(37,99,160,0.08)", "rgba(37,99,160,0.3)"],
      dark: ["#7ab4e0", "rgba(122,180,224,0.09)", "rgba(122,180,224,0.3)"]
    },
    standard: {
      light: ["#4a7c59", "rgba(74,124,89,0.08)", "rgba(74,124,89,0.3)"],
      dark: ["#7ecf96", "#1a3328", "rgba(126,207,150,0.3)"]
    },
    community: {
      light: ["#7a5c2e", "rgba(122,92,46,0.08)", "rgba(122,92,46,0.3)"],
      dark: ["#d4a96a", "rgba(212,169,106,0.09)", "rgba(212,169,106,0.3)"]
    },
    security: {
      light: ["#8b3a3a", "rgba(139,58,58,0.08)", "rgba(139,58,58,0.3)"],
      dark: ["#e07a7a", "rgba(224,122,122,0.09)", "rgba(224,122,122,0.3)"]
    },
    research: {
      light: ["#6b4f8e", "rgba(107,79,142,0.08)", "rgba(107,79,142,0.3)"],
      dark: ["#c4a8e8", "rgba(196,168,232,0.09)", "rgba(196,168,232,0.3)"]
    },
    tool: {
      light: [ACCENT, ACCENT_BG, ACCENT_BDR],
      dark: [ACCENT_L, "rgba(207,138,104,0.09)", "rgba(207,138,104,0.3)"]
    },
    platform: {
      light: ["#2e7a7a", "rgba(46,122,122,0.08)", "rgba(46,122,122,0.3)"],
      dark: ["#7ecfcf", "rgba(126,207,207,0.09)", "rgba(126,207,207,0.3)"]
    }
  };
  const getTypePalette = type => TYPE_COLORS[type] || TYPE_COLORS.tool;
  const safeRes = Array.isArray(resources) ? resources : [];
  const safeCats = Array.isArray(categories) ? categories : [];
  const [cat, setCat] = useState("__all__");
  const [isDark, setIsDark] = useState(false);
  useEffect(() => {
    const detect = () => setIsDark(document.documentElement.classList.contains("dark"));
    detect();
    const obs = new MutationObserver(detect);
    obs.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ["class"]
    });
    return () => obs.disconnect();
  }, []);
  const filtered = safeRes.filter(r => cat === "__all__" || r.category === cat);
  const css = `
  .rl-root {
    --rl-bg:         #FAF8F3;
    --rl-surface:    rgba(0,0,0,0.025);
    --rl-border:     rgba(0,0,0,0.09);
    --rl-text:       #2b2722;
    --rl-dim:        #6f6a62;
    --rl-faint:      #8a8378;
    --rl-accent:     ${ACCENT};
    --rl-accent-bg:  ${ACCENT_BG};
    --rl-accent-bdr: ${ACCENT_BDR};
    --rl-card-bg:    #ffffff;
    font-size: 14px;
    border: 1px solid var(--rl-border);
    border-radius: 14px;
    background: var(--rl-bg);
    color: var(--rl-text);
    overflow: hidden;
  }
  .dark .rl-root {
    --rl-bg:         #1b1a18;
    --rl-surface:    rgba(255,255,255,0.03);
    --rl-border:     rgba(255,255,255,0.08);
    --rl-text:       #e7e3da;
    --rl-dim:        #a8a299;
    --rl-faint:      #706b64;
    --rl-accent:     ${ACCENT_L};
    --rl-accent-bg:  rgba(207,138,104,0.09);
    --rl-accent-bdr: rgba(207,138,104,0.35);
    --rl-card-bg:    #242220;
  }

  /* ── 分類 chip + 計數列 ── */
  .rl-header {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 11px 16px 9px;
    border-bottom: 1px solid var(--rl-border);
    background: var(--rl-surface);
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .rl-header::-webkit-scrollbar { display: none; }
  .rl-chip {
    flex-shrink: 0;
    padding: 4px 11px;
    border-radius: 16px;
    border: 1px solid var(--rl-border);
    background: transparent;
    color: var(--rl-dim);
    font: inherit;
    font-size: 12.5px;
    font-weight: 500;
    cursor: pointer;
    white-space: nowrap;
    transition: border-color 0.13s, background 0.13s, color 0.13s;
  }
  .rl-chip:hover { background: rgba(0,0,0,0.025); color: var(--rl-text); }
  .dark .rl-chip:hover { background: rgba(255,255,255,0.04); }
  .rl-chip-on {
    border-color: var(--rl-accent-bdr);
    background: var(--rl-accent-bg);
    color: var(--rl-accent);
    font-weight: 700;
  }
  .rl-count {
    margin-left: auto;
    flex-shrink: 0;
    font-size: 12px;
    color: var(--rl-faint);
    white-space: nowrap;
    padding-left: 8px;
  }

  /* ── 資源卡片格線 ── */
  .rl-grid {
    padding: 14px 16px;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 10px;
  }
  .rl-empty {
    padding: 28px 16px;
    text-align: center;
    color: var(--rl-faint);
    font-size: 13.5px;
  }

  /* ── 資源卡 ── */
  .rl-card {
    border: 1px solid var(--rl-border);
    border-radius: 10px;
    background: var(--rl-card-bg);
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    gap: 7px;
    transition: border-color 0.13s, box-shadow 0.13s;
  }
  .rl-card:hover {
    border-color: var(--rl-accent-bdr);
    box-shadow: 0 2px 8px rgba(191,117,81,0.08);
  }
  .rl-card-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
  }
  .rl-name {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--rl-text);
    line-height: 1.35;
  }
  .rl-type-badge {
    flex-shrink: 0;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-radius: 4px;
    padding: 2px 6px;
    white-space: nowrap;
    margin-top: 1px;
  }
  .rl-desc {
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--rl-dim);
    flex: 1 1 0;
  }
  .rl-url {
    font-size: 11.5px;
    font-family: "JetBrains Mono", "Fira Code", monospace;
    color: var(--rl-faint);
    word-break: break-all;
    line-height: 1.4;
  }
  .rl-visit-link {
    align-self: flex-end;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rl-accent);
    text-decoration: none;
    padding: 3px 10px;
    border: 1px solid var(--rl-accent-bdr);
    border-radius: 6px;
    background: var(--rl-accent-bg);
    transition: background 0.12s;
  }
  .rl-visit-link:hover { background: rgba(191,117,81,0.14); }

  /* ── 手機 ── */
  @media (max-width: 600px) {
    .rl-grid { grid-template-columns: 1fr; padding: 10px 12px; }
    .rl-header { padding: 9px 12px 7px; }
  }
  `;
  return <div className="rl-root">
      <style>{css}</style>

      {}
      <div className="rl-header">
        <button type="button" className={"rl-chip" + (cat === "__all__" ? " rl-chip-on" : "")} onClick={() => setCat("__all__")}>
          {UI.allCats}
        </button>
        {safeCats.map(c => <button key={c.id} type="button" className={"rl-chip" + (cat === c.id ? " rl-chip-on" : "")} onClick={() => setCat(c.id)}>
            {c.label}
          </button>)}
        <span className="rl-count">{UI.count(filtered.length)}</span>
      </div>

      {}
      {filtered.length === 0 ? <div className="rl-empty">{UI.noResults}</div> : <div className="rl-grid">
          {filtered.map(r => {
    const palette = getTypePalette(r.type);
    const mode = isDark ? palette.dark : palette.light;
    const typeName = UI.types[r.type] || r.type || "";
    return <div key={r.id} className="rl-card">
                <div className="rl-card-top">
                  <span className="rl-name">{r.name}</span>
                  {typeName && <span className="rl-type-badge" style={{
      color: mode[0],
      background: mode[1],
      border: `1px solid ${mode[2]}`
    }}>
                      {typeName}
                    </span>}
                </div>
                {r.desc && <p className="rl-desc">{r.desc}</p>}
                {r.url && <span className="rl-url">{r.url.replace(/^https?:\/\//, "")}</span>}
                {r.url && <a href={r.url} className="rl-visit-link" target="_blank" rel="noopener noreferrer">
                    {UI.visit}
                    <svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
                      <line x1="7" y1="17" x2="17" y2="7" />
                      <polyline points="7 7 17 7 17 17" />
                    </svg>
                  </a>}
              </div>;
  })}
        </div>}
    </div>;
};

<Info>
  本清單收錄官方文件入口、跨工具標準、社群發現資源、安全掃描工具及研究者工作流工具；評估框架見 [03-1](/code-agent/judgment/fit-evaluation)、[03-2](/code-agent/judgment/beyond-github-stars)、[03-3](/code-agent/judgment/security-privacy-supply-chain)，裝任何第三方資源前先套用那三節的掃描 SOP。
</Info>

<Warning>
  連結與內容查證截至 2026-06；以官方頁面為準。社群資源隨時變動，列在這裡只代表「被收錄」，不代表「值得裝」。
</Warning>

<ResourceList
  lang="zh"
  categories={[
{ id: "official-docs",  label: "官方文件" },
{ id: "standards",      label: "跨工具標準" },
{ id: "community",      label: "社群發現" },
{ id: "security",       label: "安全工具" },
{ id: "inference",      label: "本地推論" },
{ id: "academic",       label: "學術工作流" },
{ id: "reproducibility",label: "可重現性" },
{ id: "platform",       label: "平台與環境" },
]}
  resources={[
{
  id: "claude-code-docs",
  name: "Anthropic Claude Code",
  type: "official",
  category: "official-docs",
  url: "https://code.claude.com/docs",
  desc: "Claude Code 官方文件主站；所有 CLI 端設定、Hook、Skill、Subagent、Plugin、MCP 章節首選來源。",
},
{
  id: "anthropic-account",
  name: "Anthropic 帳號與隱私",
  type: "official",
  category: "official-docs",
  url: "https://support.claude.com",
  desc: "帳號設定、Help Improve Claude 開關、保留期限、Team / Enterprise 條款（support.claude.com + privacy.claude.com）。",
},
{
  id: "anthropic-cowork",
  name: "Anthropic Cowork",
  type: "official",
  category: "official-docs",
  url: "https://anthropic.com/product/claude-cowork",
  desc: "Cowork 產品頁；具體連接器設定機制需查官方支援文件。",
},
{
  id: "anthropic-engineering",
  name: "Anthropic Engineering",
  type: "official",
  category: "official-docs",
  url: "https://anthropic.com/engineering",
  desc: "工程團隊部落格；context engineering、augmented LLM 等概念性文章的第一手出處。",
},
{
  id: "openai-chatgpt",
  name: "OpenAI ChatGPT",
  type: "official",
  category: "official-docs",
  url: "https://help.openai.com",
  desc: "ChatGPT 消費端的設定、Custom Instructions、Memory 與 Projects。",
},
{
  id: "openai-codex",
  name: "OpenAI Codex",
  type: "official",
  category: "official-docs",
  url: "https://developers.openai.com/codex",
  desc: "Codex CLI / IDE 的設定、config.toml、AGENTS.md、hooks(experimental)。",
},
{
  id: "openai-policy",
  name: "OpenAI 政策",
  type: "official",
  category: "official-docs",
  url: "https://openai.com/policies",
  desc: "資料使用、隱私、API 使用條款。",
},
{
  id: "google-gemini",
  name: "Google Gemini",
  type: "official",
  category: "official-docs",
  url: "https://support.google.com/gemini",
  desc: "Gemini 消費端的 Gems、Personal context、Keep Activity 開關。",
},
{
  id: "google-antigravity",
  name: "Google Antigravity",
  type: "official",
  category: "official-docs",
  url: "https://ai.google.dev",
  desc: "Antigravity 與 Gemini API 的開發者文件（ai.google.dev + developers.googleblog.com + Google Codelabs；部分機制需以你安裝版本官方頁再核）。",
},
{
  id: "github-copilot",
  name: "GitHub Copilot",
  type: "official",
  category: "official-docs",
  url: "https://docs.github.com/copilot",
  desc: "Copilot 各介面（CLI、IDE、Chat、coding agent）文件總站。",
},
{
  id: "vscode-copilot",
  name: "VS Code Copilot",
  type: "official",
  category: "official-docs",
  url: "https://code.visualstudio.com/docs/copilot",
  desc: "VS Code 內 Copilot Chat 與 chat.instructionsFilesLocations 等 IDE 設定。",
},
{
  id: "cursor-docs",
  name: "Cursor",
  type: "official",
  category: "official-docs",
  url: "https://cursor.com/docs",
  desc: "Cursor 的 rules、ignore 檔、MCP、Composer。",
},
{
  id: "linux-foundation-aaif",
  name: "Linux Foundation AAIF",
  type: "official",
  category: "official-docs",
  url: "https://linuxfoundation.org",
  desc: "Agentic AI Foundation；MCP、goose、AGENTS.md 創始專案治理所在。",
},
{
  id: "agents-md-standard",
  name: "AGENTS.md 標準站",
  type: "standard",
  category: "standards",
  url: "https://agents.md",
  desc: "跨工具的開放規則檔標準；Linux Foundation 旗下 Agentic AI Foundation（AAIF）治理。",
},
{
  id: "mcp-spec",
  name: "MCP（Model Context Protocol）規格站",
  type: "standard",
  category: "standards",
  url: "https://modelcontextprotocol.io",
  desc: "MCP 規格、tools / resources / prompts 三類介面定義、transport 演進。",
},
{
  id: "claude-mcp-directory",
  name: "Claude 官方 MCP server 目錄",
  type: "official",
  category: "standards",
  url: "https://claude.ai/directory",
  desc: "Anthropic 策展的官方 MCP server 清單；供應鏈較可信的起點。",
},
{
  id: "snyk-security",
  name: "Snyk Security",
  type: "security",
  category: "standards",
  url: "https://snyk.io",
  desc: "ToxicSkills 報告、CVE 與第三方元件風險研究；供應鏈掃描的重要情報來源。",
},
{
  id: "github-advisories",
  name: "GitHub Security Advisories",
  type: "security",
  category: "standards",
  url: "https://github.com/advisories",
  desc: "依套件 / 工具 / 關鍵字查 CVE 與漏洞公告；訂閱你主要依賴的工具與函式庫。",
},
{
  id: "awesome-cursorrules",
  name: "PatrickJS/awesome-cursorrules",
  type: "community",
  category: "community",
  url: "https://github.com/PatrickJS/awesome-cursorrules",
  desc: "Cursor 的 .mdc 規則社群集；找規則範本的社群起點。",
},
{
  id: "voltagent-skills",
  name: "VoltAgent/awesome-agent-skills",
  type: "community",
  category: "community",
  url: "https://github.com/VoltAgent/awesome-agent-skills",
  desc: "跨工具 Skill 集（多為 Claude / Cursor）。",
},
{
  id: "kodustech-skills",
  name: "kodustech/awesome-agent-skills",
  type: "community",
  category: "community",
  url: "https://github.com/kodustech/awesome-agent-skills",
  desc: "另一份跨工具 Skill 集。",
},
{
  id: "addyosmani-skills",
  name: "addyosmani/agent-skills",
  type: "community",
  category: "community",
  url: "https://github.com/addyosmani/agent-skills",
  desc: "工程導向的 Skill 範本。",
},
{
  id: "vscode-marketplace",
  name: "VS Code Marketplace（Copilot 擴充）",
  type: "community",
  category: "community",
  url: "https://marketplace.visualstudio.com",
  desc: "Copilot 擴充、語言工具；使用前套用供應鏈 SOP。",
},
{
  id: "ripgrep",
  name: "rg（ripgrep）",
  type: "tool",
  category: "security",
  url: "https://github.com/BurntSushi/ripgrep",
  desc: "隱藏 Unicode / bidi、可疑外連、危險指令掃描的首選工具；速度與 regex 支援兼具。",
},
{
  id: "snyk-tool",
  name: "Snyk",
  type: "security",
  category: "security",
  url: "https://snyk.io",
  desc: "套件漏洞掃描；ToxicSkills 報告作者，供應鏈風險的重要情報來源。",
},
{
  id: "trivy",
  name: "Trivy",
  type: "security",
  category: "security",
  url: "https://trivy.dev",
  desc: "容器、IaC、SBOM 掃描；自架 agent 環境的掃描工具。",
},
{
  id: "bandit",
  name: "bandit",
  type: "security",
  category: "security",
  url: "https://pypi.org/project/bandit",
  desc: "Python 靜態安全分析；Python-heavy agent 工作流的快速掃描工具。",
},
{
  id: "semgrep",
  name: "Semgrep",
  type: "security",
  category: "security",
  url: "https://semgrep.dev",
  desc: "多語言靜態分析，可自訂規則掃供應鏈指紋。",
},
{
  id: "osv-dev",
  name: "OSV.dev",
  type: "security",
  category: "security",
  url: "https://osv.dev",
  desc: "跨生態系漏洞資料庫；npm / PyPI / Cargo 等均可查。",
},
{
  id: "agentshield",
  name: "agentshield",
  type: "security",
  category: "security",
  url: "https://github.com/affaan-m/agentshield",
  desc: "第三方 skill / agent 描述檔的安全掃描工具；自動化供應鏈審查。",
},
{
  id: "vllm",
  name: "vLLM",
  type: "tool",
  category: "inference",
  url: "https://github.com/vllm-project/vllm",
  desc: "高吞吐 LLM 服務；適合研究環境的本地服務化，支援 PagedAttention 與多 GPU。",
},
{
  id: "llama-cpp",
  name: "llama.cpp",
  type: "tool",
  category: "inference",
  url: "https://github.com/ggerganov/llama.cpp",
  desc: "CPU / Apple Silicon / 低 VRAM 上的本地推論；GGUF 格式的最廣泛支援。",
},
{
  id: "sglang",
  name: "SGLang",
  type: "tool",
  category: "inference",
  url: "https://github.com/sgl-project/sglang",
  desc: "結構化生成、radix attention、推理優化；長上下文與多步推理場景的效率選項。",
},
{
  id: "ollama",
  name: "Ollama",
  type: "tool",
  category: "inference",
  url: "https://ollama.com",
  desc: "開箱即用的本地模型管理；一行指令跑各主流開源模型。",
},
{
  id: "lm-studio",
  name: "LM Studio",
  type: "tool",
  category: "inference",
  url: "https://lmstudio.ai",
  desc: "GUI 本地模型管理；適合非工程師背景的研究者。",
},
{
  id: "hf-transformers",
  name: "Hugging Face Transformers",
  type: "tool",
  category: "inference",
  url: "https://huggingface.co/docs/transformers",
  desc: "模型載入、推論、訓練的事實標準函式庫。",
},
{
  id: "hf-hub",
  name: "Hugging Face Hub",
  type: "platform",
  category: "inference",
  url: "https://huggingface.co",
  desc: "模型 / 資料集 / Spaces 入口；同樣要自己驗證供應鏈。",
},
{
  id: "open-webui",
  name: "Open WebUI",
  type: "tool",
  category: "inference",
  url: "https://github.com/open-webui/open-webui",
  desc: "自架聊天介面，可接 Ollama / OpenAI 相容 API；適合多模型研究環境。",
},
{
  id: "llama-swap",
  name: "llama-swap",
  type: "tool",
  category: "inference",
  url: "https://github.com/mostlygeek/llama-swap",
  desc: "多模型動態切換代理；研究環境頻繁切換模型的省力工具。",
},
{
  id: "gpustack",
  name: "GPU-Stack",
  type: "platform",
  category: "inference",
  url: "https://github.com/gpustack/gpustack",
  desc: "多 GPU / 多節點的推論編排；實驗室多卡環境的資源管理工具。",
},
{
  id: "arxiv",
  name: "arXiv",
  type: "research",
  category: "academic",
  url: "https://arxiv.org",
  desc: "預印本；SOTA 追蹤起點（要查過審的話看同行評閱期刊）。",
},
{
  id: "semantic-scholar",
  name: "Semantic Scholar",
  type: "research",
  category: "academic",
  url: "https://semanticscholar.org",
  desc: "引用圖與被引計數；文獻回顧的「誰引用了誰」分析工具。",
},
{
  id: "connected-papers",
  name: "Connected Papers",
  type: "research",
  category: "academic",
  url: "https://connectedpapers.com",
  desc: "視覺化引用圖，找相關論文；把「找一篇論文的周邊文獻」從 hours 壓到 minutes。",
},
{
  id: "zotero",
  name: "Zotero（搭配 Better BibTeX）",
  type: "tool",
  category: "academic",
  url: "https://zotero.org",
  desc: "參考文獻管理；可與 Obsidian / VS Code 串接；Better BibTeX 讓 cite key 可預測。",
},
{
  id: "overleaf",
  name: "Overleaf",
  type: "platform",
  category: "academic",
  url: "https://overleaf.com",
  desc: "線上 LaTeX；多人共筆與範本庫，期刊投稿的主流協作環境。",
},
{
  id: "openreview",
  name: "OpenReview",
  type: "research",
  category: "academic",
  url: "https://openreview.net",
  desc: "會議審稿公開紀錄；查 reviewer 意見與 rebuttal 品質，了解一篇論文的完整評審過程。",
},
{
  id: "papers-with-code",
  name: "Papers with Code",
  type: "research",
  category: "academic",
  url: "https://paperswithcode.com",
  desc: "把論文與實作 / benchmark 綁在一起；找開源實作的入口，同時能比較各方法 benchmark 排名。",
},
{
  id: "pandoc",
  name: "Pandoc",
  type: "tool",
  category: "academic",
  url: "https://pandoc.org",
  desc: "Markdown / LaTeX / DOCX 互轉；產出最終稿的主力工具。",
},
{
  id: "git",
  name: "Git",
  type: "tool",
  category: "reproducibility",
  url: "https://git-scm.com",
  desc: "版控基底；commit 規範、.gitignore 模板見本 Playbook 各章節。",
},
{
  id: "uv",
  name: "uv",
  type: "tool",
  category: "reproducibility",
  url: "https://github.com/astral-sh/uv",
  desc: "Python 套件與環境管理（CLI / 腳本 / Web 用途）；速度顯著優於 pip。",
},
{
  id: "conda",
  name: "conda / Miniconda",
  type: "tool",
  category: "reproducibility",
  url: "https://docs.conda.io",
  desc: "科學運算、ML、CUDA 相依套件管理；跨平台環境封裝的事實標準。",
},
{
  id: "docker",
  name: "Docker / Docker Compose",
  type: "tool",
  category: "reproducibility",
  url: "https://docker.com",
  desc: "可重現環境封裝；agent 工作流可整個打包成 container，也是供應鏈隔離測試的推薦環境。",
},
{
  id: "devcontainer",
  name: "Devcontainer（VS Code / GitHub Codespaces）",
  type: "tool",
  category: "reproducibility",
  url: "https://containers.dev",
  desc: "雲端或本機的標準化開發環境；Anthropic 與 OpenAI 均建議以此隔離 agent 工作流。",
},
{
  id: "pytest",
  name: "pytest",
  type: "tool",
  category: "reproducibility",
  url: "https://pytest.org",
  desc: "Python 測試框架；搭配 pytest-cov 達 80% 覆蓋率目標。",
},
{
  id: "pre-commit",
  name: "pre-commit",
  type: "tool",
  category: "reproducibility",
  url: "https://pre-commit.com",
  desc: "把 lint / type-check / format 在 commit 前擋下；確保入庫程式碼的最低品質門檻。",
},
{
  id: "supabase",
  name: "Supabase / pgvector",
  type: "platform",
  category: "platform",
  url: "https://supabase.com",
  desc: "後端 + 向量資料庫；自建 RAG 最常見路徑，開源且可自架。",
},
{
  id: "minio",
  name: "MinIO",
  type: "platform",
  category: "platform",
  url: "https://min.io",
  desc: "S3 相容物件儲存；自建資料湖，agent 工作流的大檔儲存層。",
},
{
  id: "cloudflare",
  name: "Cloudflare（Workers、Tunnels、Zero Trust、WAF、DNS、R2）",
  type: "platform",
  category: "platform",
  url: "https://cloudflare.com",
  desc: "邊緣運算與零信任網路；個人 / 小團隊的低成本公開服務選項。",
},
{
  id: "tailscale",
  name: "Tailscale",
  type: "platform",
  category: "platform",
  url: "https://tailscale.com",
  desc: "零設定 mesh VPN；自架跨機器代理網路，研究室多節點環境的省事組網方案。",
},
{
  id: "n8n",
  name: "n8n",
  type: "platform",
  category: "platform",
  url: "https://n8n.io",
  desc: "可視化工作流編排；非工程師也能串接多個 API，開源且可自架。",
},
{
  id: "langgraph",
  name: "LangGraph",
  type: "tool",
  category: "platform",
  url: "https://github.com/langchain-ai/langgraph",
  desc: "把 agent 流程寫成有狀態的 graph；用於複雜多步任務的 workflow 設計。",
},
]}
/>

***

## 使用社群資源的標準 SOP

<Note>
  你看到一份熱門 Skill / Plugin / MCP server，走這七步：

  1. **來源審查**：作者具名？組織是誰？最後 commit 距今多久？issue tracker 活躍嗎？
  2. **檔案審查**：把 `SKILL.md` / `plugin.json` / `.mcp.json` / `hooks.json` 讀完；前 50 行有沒有可疑指令或外連？
  3. **權限審查**：要寫檔嗎？連網嗎？要 token 嗎？對應到任務「真的需要嗎」？
  4. **隔離測試**：先在 throwaway 環境或容器內裝、跑一次空任務、觀察網路與檔案行為。
  5. **掃描**：套安全工具類的 `rg` 三條掃描；任何 hit 都不跳過。
  6. **追蹤**：追作者 release；升版前重跑這 5 步。
  7. **紀錄**：把審查結果寫進 `MEMORY.md` 或專案文件；下次有同事問你能不能裝，直接附上紀錄。
</Note>

***

## 對應單元

* 評估框架（為什麼 star 數不夠）：[03-1 如何判斷工具與 Skill 是否適合自己](/code-agent/judgment/fit-evaluation)、[03-2 跳脫 star 數迷思](/code-agent/judgment/beyond-github-stars)
* 供應鏈安全 SOP：[03-3 安全、隱私與供應鏈風險](/code-agent/judgment/security-privacy-supply-chain)
* 個人 benchmark：[03-4 建立個人 benchmark](/code-agent/judgment/personal-benchmark)
* 設定位置：[附錄 A 各工具設定速查表](/code-agent/appendix/settings-cheatsheet)
* 安全 checklist：[附錄 B 隱私與安全設定 checklist](/code-agent/appendix/privacy-security-checklist)
* 跨工具規則檔：[02-6 其他工具設定對照](/code-agent/configuration/other-tools-comparison)
* MCP 整合：[04-9 跨工具整合與 MCP](/code-agent/customization/mcp-integration)
* CLI 優先：[04-10 CLI 優先](/code-agent/customization/cli-first-vs-mcp)
* 詞彙：[附錄 C 詞彙表](/code-agent/appendix/glossary)
