Buckets:
| import{s as N,n as G,o as J}from"../chunks/scheduler.b8c17244.js";import{S as U,i as W,e as I,s as a,c as l,h as Y,a as Q,d as n,b as i,f as R,g as r,j as D,k as H,l as K,m as s,n as u,t as p,o as d,p as m}from"../chunks/index.d374165a.js";import{C as V,H as X,E as Z}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.200f62db.js";import{Q as v}from"../chunks/Question.b45f7d7c.js";function ee(B){let o,P,w,M,f,j,c,_,g,L="Test your understanding of plugins, their anatomy, and how they differ across platforms.",A,x,F,h,O,C,S,$,T,b,q,y,z,k,E;return f=new V({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),c=new X({props:{title:"Quiz 1: Plugin Fundamentals",local:"quiz-1-plugin-fundamentals",headingTag:"h1"}}),x=new v({props:{choices:[{text:"A plugin is a single reusable workflow, like calculating ROI",explain:"That's a skill, not a plugin. A plugin is the larger extension surface around reusable behavior."},{text:"A plugin is a collection of tools that provides standardized access to external APIs",explain:"That's an MCP server. Plugins are a broader extension surface than MCP alone."},{text:"A plugin is a reusable extension surface; Claude Code and Codex use plugin bundles, while OpenCode plugins are code modules loaded from files or npm",explain:"Correct! The exact shape depends on the platform. Claude Code and Codex are manifest-first, while OpenCode plugins are code-first.",correct:!0},{text:"A plugin is a text file that describes how to use an agent tool",explain:"That sounds like documentation, not a plugin. Plugins are actual packages with executable components."}]}}),h=new v({props:{choices:[{text:"For Claude Code and Codex, plugin.json tells the agent the plugin's identity and where to find bundled components",explain:"Correct! On manifest-first platforms, plugin.json identifies the plugin and points to skills, MCP config, or app integrations. OpenCode does not use this manifest model.",correct:!0},{text:"plugin.json is just documentation describing what's in the plugin",explain:"It's more than documentation — it's structured metadata that agents parse to discover and load plugin components."},{text:"plugin.json is a list of all the API endpoints the plugin can access",explain:"No, that would be part of an MCP server definition or app integration config, not the plugin manifest."},{text:"plugin.json is automatically generated and doesn't need to be written manually",explain:"You write the manifest to define your plugin's identity. Some tools (like Codex's $plugin-creator) can scaffold it for you, but the file still matters."}]}}),C=new v({props:{choices:[{text:"Claude Code uses .claude-plugin/plugin.json; Codex uses .codex-plugin/plugin.json; both place skills/ at the plugin root",explain:"Correct! Both platforms use a similar pattern (manifest in a hidden directory, skills at root) but with platform-specific directory names.",correct:!0},{text:"All platforms use the exact same manifest.json format at the plugin root",explain:"False. Claude Code uses .claude-plugin/plugin.json, Codex uses .codex-plugin/plugin.json. The schemas also differ."},{text:"Only Codex supports plugin marketplaces",explain:"False. Both Claude Code and Codex support marketplace distribution. Claude Code uses the Anthropic marketplace; Codex uses .agents/plugins/marketplace.json."},{text:"Claude Code and Codex plugins are fully interchangeable",explain:"Not directly. While both can bundle skills and MCP servers, the manifest schemas and installation mechanisms differ."}]}}),$=new v({props:{choices:[{text:"In Claude Code and Codex, a plugin can only contain skills OR MCP servers, not both",explain:"False. Manifest-first plugins can combine skills, MCP servers, and other components."},{text:"In Claude Code and Codex, skills are human-readable workflows; MCP servers provide programmatic tool access",explain:"Correct! Skills describe how to accomplish tasks; MCP servers provide standardized tool interfaces for agents to call.",correct:!0},{text:"Skills and MCP servers do the same thing; you only need one",explain:"False. Skills describe *how* to do something; MCP servers provide *what* you can do — they're complementary."},{text:"Only Claude Code plugins use skills; Codex plugins only use MCP servers",explain:"False. Both platforms support skills. Codex also supports MCP servers and app integrations."}]}}),b=new v({props:{choices:[{text:"The plugin manifest directory is always named .claude-plugin/ regardless of platform",explain:"False. Claude Code uses .claude-plugin/, Codex uses .codex-plugin/. Each platform has its own directory name."},{text:"Codex plugins can reference MCP servers and app integrations via paths in plugin.json",explain:"Correct! Codex plugin.json uses fields like 'mcpServers': './.mcp.json' and 'apps': './.app.json' to reference bundled configuration files.",correct:!0},{text:"OpenCode uses a formal plugin manifest like Claude Code and Codex",explain:"False. OpenCode has native plugins, but they are JS/TS modules loaded from `.opencode/plugins/` or npm packages listed in `opencode.json`, not manifest directories like `.claude-plugin/` or `.codex-plugin/`."},{text:"All plugins must have an MCP server to be useful",explain:"False. A plugin can contain just skills, or just configuration — MCP servers are optional."}]}}),y=new Z({props:{source:"https://github.com/huggingface/context-course/blob/main/units/en/unit3/quiz1.mdx"}}),{c(){o=I("meta"),P=a(),w=I("p"),M=a(),l(f.$$.fragment),j=a(),l(c.$$.fragment),_=a(),g=I("p"),g.textContent=L,A=a(),l(x.$$.fragment),F=a(),l(h.$$.fragment),O=a(),l(C.$$.fragment),S=a(),l($.$$.fragment),T=a(),l(b.$$.fragment),q=a(),l(y.$$.fragment),z=a(),k=I("p"),this.h()},l(e){const t=Y("svelte-u9bgzb",document.head);o=Q(t,"META",{name:!0,content:!0}),t.forEach(n),P=i(e),w=Q(e,"P",{}),R(w).forEach(n),M=i(e),r(f.$$.fragment,e),j=i(e),r(c.$$.fragment,e),_=i(e),g=Q(e,"P",{"data-svelte-h":!0}),D(g)!=="svelte-1kf20fv"&&(g.textContent=L),A=i(e),r(x.$$.fragment,e),F=i(e),r(h.$$.fragment,e),O=i(e),r(C.$$.fragment,e),S=i(e),r($.$$.fragment,e),T=i(e),r(b.$$.fragment,e),q=i(e),r(y.$$.fragment,e),z=i(e),k=Q(e,"P",{}),R(k).forEach(n),this.h()},h(){H(o,"name","hf:doc:metadata"),H(o,"content",te)},m(e,t){K(document.head,o),s(e,P,t),s(e,w,t),s(e,M,t),u(f,e,t),s(e,j,t),u(c,e,t),s(e,_,t),s(e,g,t),s(e,A,t),u(x,e,t),s(e,F,t),u(h,e,t),s(e,O,t),u(C,e,t),s(e,S,t),u($,e,t),s(e,T,t),u(b,e,t),s(e,q,t),u(y,e,t),s(e,z,t),s(e,k,t),E=!0},p:G,i(e){E||(p(f.$$.fragment,e),p(c.$$.fragment,e),p(x.$$.fragment,e),p(h.$$.fragment,e),p(C.$$.fragment,e),p($.$$.fragment,e),p(b.$$.fragment,e),p(y.$$.fragment,e),E=!0)},o(e){d(f.$$.fragment,e),d(c.$$.fragment,e),d(x.$$.fragment,e),d(h.$$.fragment,e),d(C.$$.fragment,e),d($.$$.fragment,e),d(b.$$.fragment,e),d(y.$$.fragment,e),E=!1},d(e){e&&(n(P),n(w),n(M),n(j),n(_),n(g),n(A),n(F),n(O),n(S),n(T),n(q),n(z),n(k)),n(o),m(f,e),m(c,e),m(x,e),m(h,e),m(C,e),m($,e),m(b,e),m(y,e)}}}const te='{"title":"Quiz 1: Plugin Fundamentals","local":"quiz-1-plugin-fundamentals","sections":[],"depth":1}';function ne(B){return J(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class le extends U{constructor(o){super(),W(this,o,ne,ee,N,{})}}export{le as component}; | |
Xet Storage Details
- Size:
- 7.29 kB
- Xet hash:
- 81a7d3866f5bacb66b7298f03784f15452aaf3f325d29d040a40fa92d2dfdeaf
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.