{"id":168715,"date":"2026-06-13T21:39:45","date_gmt":"2026-06-13T18:39:45","guid":{"rendered":"https:\/\/computingforgeeks.com\/?p=168715"},"modified":"2026-06-13T21:39:45","modified_gmt":"2026-06-13T18:39:45","slug":"claude-code-subagents-guide","status":"publish","type":"post","link":"https:\/\/computingforgeeks.com\/claude-code-subagents-guide\/","title":{"rendered":"Claude Code Subagents: Configure Specialized AI Agents"},"content":{"rendered":"<p>You ask Claude Code to add a feature, and halfway through it spends a thousand tokens grepping the codebase, then dumps the results into the same conversation you are trying to keep clean. A subagent solves exactly that. It does the messy side work in its own context window and hands back only the summary, so your main thread stays focused on the actual task.<\/p>\n\n<p>This is the complete guide to Claude Code subagents: what they are (and the thing most write-ups get wrong about parallelism), the full frontmatter schema field by field, how Claude decides to delegate, foreground versus background, chaining a reviewer into a fixer, and the community libraries worth stealing from. Every command and the agent that catches a real SQL injection further down was run on a live install.<\/p>\n\n<p><em>Ran all of this on Claude Code 2.1.177 in June 2026; the delegation output below is the real thing, not a mock-up.<\/em><\/p>\n\n<h2>What Claude Code subagents actually are (and are not)<\/h2>\n\n<p>A subagent is a specialized assistant with its own system prompt, its own tool access, and its own permissions. When Claude hits a task that matches the subagent&#8217;s description, it hands that task off. The subagent works in a separate context window and returns only its result, which is the whole point: the search results, logs, and file dumps never touch your main conversation.<\/p>\n\n<p>Here is the part competitors get wrong. <strong>A regular subagent runs inside a single session and blocks the main thread until it finishes.<\/strong> It is not, by itself, parallelism. Claude Code has three distinct things and they are easy to conflate:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Feature<\/th><th>What it is<\/th><th>Runs in parallel?<\/th><\/tr><\/thead><tbody>\n<tr><td><strong>Subagents<\/strong><\/td><td>Specialized workers inside one session, context-isolated<\/td><td>No by default (blocking), unless marked background<\/td><\/tr>\n<tr><td><strong>Background agents<\/strong><\/td><td>Many independent sessions you launch and monitor from one place<\/td><td>Yes<\/td><\/tr>\n<tr><td><strong>Agent teams<\/strong><\/td><td>Separate sessions that talk to each other<\/td><td>Yes, and they coordinate<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n<p>This guide is about the first one. A single subagent can be told to run in the background (more on that below), but the mental model to start with is a focused helper that takes a side quest off your hands and reports back. The benefits stack up fast: context stays lean, you can lock a reviewer down to read-only tools, and you can route a cheap task to Haiku instead of burning Opus on it.<\/p>\n\n<h2>1. Create your first subagent<\/h2>\n\n<p>The fastest way in is the built-in manager. Inside a session, run:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>\/agents<\/code><\/pre>\n\n\n<p>That opens a tabbed interface. The <strong>Library<\/strong> tab lists every subagent available to you (built-in, user, project, and plugin) and lets you create, edit, or delete one. The <strong>Running<\/strong> tab shows live and recently finished subagents so you can open or stop them. Pick <strong>Create new agent<\/strong>, choose <strong>Personal<\/strong> to save it under <code>~\/.claude\/agents\/<\/code> so it follows you across projects, or <strong>Project<\/strong> to drop it in the repo&#8217;s <a href=\"https:\/\/computingforgeeks.com\/claude-code-dot-claude-directory-guide\/\">.claude directory<\/a> next to your other config. Then let Claude generate the first draft from a plain-English description. You select the tools, the model, a color, and whether it keeps memory, then save. It is usable immediately, no restart.<\/p>\n\n<p>The manager is the recommended path, but a subagent is just a Markdown file, and once you have seen the shape you will often write them by hand. Create the file directly:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>mkdir -p .claude\/agents\nvim .claude\/agents\/code-reviewer.md<\/code><\/pre>\n\n\n<p>The official starting point is this minimal reviewer. YAML frontmatter on top, the system prompt as the Markdown body:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>---\nname: code-reviewer\ndescription: Reviews code for quality and best practices\ntools: Read, Glob, Grep\nmodel: sonnet\n---\n\nYou are a code reviewer. When invoked, analyze the code and provide\nspecific, actionable feedback on quality, security, and best practices.<\/code><\/pre>\n\n\n<p>One gotcha that trips people up: subagents are loaded at session start. Edit a file on disk and you have to restart the session to pick up the change. Agents created or edited through <code>\/agents<\/code> take effect right away. That asymmetry catches everyone once.<\/p>\n\n<h2>2. The agent file, field by field<\/h2>\n\n<p>Only <code>name<\/code> and <code>description<\/code> are required. Everything else is optional, and this is the full set, which no other guide lists completely and correctly:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Field<\/th><th>What it does<\/th><\/tr><\/thead><tbody>\n<tr><td><code>name<\/code><\/td><td>Required. Lowercase-and-hyphens identifier. Identity comes from this, not the filename.<\/td><\/tr>\n<tr><td><code>description<\/code><\/td><td>Required. When Claude should delegate here. This is the most important field you write.<\/td><\/tr>\n<tr><td><code>tools<\/code><\/td><td>Allowlist of tools. Omit it and the subagent inherits every tool the main thread has.<\/td><\/tr>\n<tr><td><code>disallowedTools<\/code><\/td><td>Denylist. Applied before <code>tools<\/code> resolves, so a tool named in both is removed.<\/td><\/tr>\n<tr><td><code>model<\/code><\/td><td><code>sonnet<\/code>, <code>opus<\/code>, <code>haiku<\/code>, <code>fable<\/code>, a full model ID, or <code>inherit<\/code>. Defaults to <code>inherit<\/code>.<\/td><\/tr>\n<tr><td><code>permissionMode<\/code><\/td><td><code>default<\/code>, <code>acceptEdits<\/code>, <code>auto<\/code>, <code>dontAsk<\/code>, <code>bypassPermissions<\/code>, or <code>plan<\/code>.<\/td><\/tr>\n<tr><td><code>maxTurns<\/code><\/td><td>Cap on agentic turns before the subagent stops.<\/td><\/tr>\n<tr><td><code>skills<\/code><\/td><td>Skills to preload into context at startup (full content injected, not just the name).<\/td><\/tr>\n<tr><td><code>mcpServers<\/code><\/td><td>MCP servers exposed to this subagent only. See the <a href=\"https:\/\/computingforgeeks.com\/claude-code-mcp-servers-setup\/\">MCP setup guide<\/a> for the server side.<\/td><\/tr>\n<tr><td><code>hooks<\/code><\/td><td>Lifecycle hooks scoped to this subagent.<\/td><\/tr>\n<tr><td><code>memory<\/code><\/td><td><code>user<\/code>, <code>project<\/code>, or <code>local<\/code>. Persists learnings across sessions.<\/td><\/tr>\n<tr><td><code>background<\/code><\/td><td><code>true<\/code> to always run this one concurrently. Default <code>false<\/code>.<\/td><\/tr>\n<tr><td><code>effort<\/code><\/td><td><code>low<\/code>, <code>medium<\/code>, <code>high<\/code>, <code>xhigh<\/code>, or <code>max<\/code> (model dependent). Overrides the session.<\/td><\/tr>\n<tr><td><code>isolation<\/code><\/td><td>Set to <code>worktree<\/code> to run in a throwaway git worktree, an isolated copy of the repo.<\/td><\/tr>\n<tr><td><code>color<\/code><\/td><td>A named color (<code>red<\/code>, <code>blue<\/code>, <code>green<\/code>, <code>yellow<\/code>, <code>purple<\/code>, <code>orange<\/code>, <code>pink<\/code>, <code>cyan<\/code>) for the task list and transcript.<\/td><\/tr>\n<tr><td><code>initialPrompt<\/code><\/td><td>Auto-submitted as the first turn when the agent runs as the main session via <code>--agent<\/code> or the <code>agent<\/code> setting.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n<p>A few of these carry real weight. The body of the file becomes the system prompt verbatim, and the subagent gets only that prompt plus basic environment details like the working directory, not Claude Code&#8217;s full system prompt. The <code>tools<\/code> field is your security lever: omit it for a builder that needs everything, restrict it hard for a reviewer that should never write. And <code>model<\/code> is your cost lever, since routing a grep-heavy explorer to Haiku instead of Opus is free money.<\/p>\n\n<p>Two scope notes. Project agents in <code>.claude\/agents\/<\/code> outrank personal ones in <code>~\/.claude\/agents\/<\/code> when names collide, with managed and CLI-flag definitions above both and plugin agents below. And if two files in the same scope declare the same <code>name<\/code>, Claude Code keeps one and silently drops the other, so keep names unique across the whole tree. Plugin-supplied subagents also ignore <code>hooks<\/code>, <code>mcpServers<\/code>, and <code>permissionMode<\/code> for security reasons.<\/p>\n\n<h2>3. Watch it work on a real bug<\/h2>\n\n<p>Theory is cheap. Here is a deliberately ugly <code>payment.py<\/code> with a SQL injection and a quadratic loop hiding in it, and the read-only reviewer from above sitting in <code>.claude\/agents\/<\/code>:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1840\" height=\"1156\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-code-reviewer-definition.png\" alt=\"A read-only code-reviewer subagent defined in .claude\/agents with tools and model frontmatter\" class=\"wp-image-168709\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-code-reviewer-definition.png 1840w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-code-reviewer-definition-300x188.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-code-reviewer-definition-1024x643.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-code-reviewer-definition-768x483.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-code-reviewer-definition-1536x965.png 1536w\" sizes=\"auto, (max-width: 1840px) 100vw, 1840px\" \/><\/figure>\n\n\n<p>Ask Claude to use it by name and it delegates, the subagent reads the file with its three read-only tools, and the findings come back into the main thread:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>claude -p \"Use the code-reviewer subagent to review payment.py\"<\/code><\/pre>\n\n\n<p>The reviewer flagged the string-formatted query on line 6 as a SQL injection and the nested loop as an O(n^2) pass that should be a single sum, each with the exact fix. None of that touched the main conversation as raw file content; it arrived as a clean report:<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1840\" height=\"880\" src=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-delegation-findings.png\" alt=\"Claude Code delegates to the code-reviewer subagent which flags a SQL injection and an O(n^2) loop\" class=\"wp-image-168710\" title=\"\" srcset=\"https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-delegation-findings.png 1840w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-delegation-findings-300x143.png 300w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-delegation-findings-1024x490.png 1024w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-delegation-findings-768x367.png 768w, https:\/\/computingforgeeks.com\/wp-content\/uploads\/2026\/06\/wm-claude-code-subagent-delegation-findings-1536x735.png 1536w\" sizes=\"auto, (max-width: 1840px) 100vw, 1840px\" \/><\/figure>\n\n\n<p>That is the entire value proposition in one screenshot. A focused agent, scoped to read-only tools, did the review in its own window and returned a tight summary.<\/p>\n\n<h2>4. How Claude decides to delegate<\/h2>\n\n<p>Automatic delegation runs off the <code>description<\/code> field. Claude reads what you wrote there, matches it against the task at hand, and hands off when they line up. So the description is not documentation, it is the trigger. Write it as the condition for use, and the near-universal convention in the popular agent libraries is to add a nudge like <code>Use PROACTIVELY<\/code> or <code>use immediately after writing code<\/code> to push Claude toward delegating without being asked.<\/p>\n\n<p>When you want a specific subagent to run and refuse to leave it to chance, there are three explicit routes:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Name it in the prompt:<\/strong> &#8220;Use the code-reviewer subagent to check this PR.&#8221; Natural and reliable.<\/li>\n<li><strong>@-mention it:<\/strong> type <code>@<\/code> and pick from the typeahead, or write <code>@agent-code-reviewer<\/code> by hand (plugin agents use their scoped name, like <code>@agent-my-plugin:code-reviewer<\/code>). The mention controls which subagent runs, not the prompt it gets.<\/li>\n<li><strong>Run the whole session as that agent:<\/strong> <code>claude --agent code-reviewer<\/code> starts a session where the main thread itself takes on the subagent&#8217;s prompt, tools, and model.<\/li>\n<\/ul>\n\n\n<p>To make one agent the default for a project, set it in <code>.claude\/settings.json<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>{\n  \"agent\": \"code-reviewer\"\n}<\/code><\/pre>\n\n\n<p>The <code>--agent<\/code> flag wins if both are present.<\/p>\n\n<h2>5. Foreground or background<\/h2>\n\n<p>A subagent runs one of two ways. <strong>Foreground<\/strong> blocks the main conversation until it is done, and any permission prompt it raises is passed through to you. <strong>Background<\/strong> runs concurrently while you keep working, but it runs with the permissions already granted in the session and auto-denies anything that would otherwise prompt. If a background agent needs to ask you something, that one tool call fails and the agent carries on without it.<\/p>\n\n<p>Claude picks the mode based on the task, but you are not locked out of the decision. Ask it to &#8220;run this in the background,&#8221; or press <strong>Ctrl+B<\/strong> to background a task that is already running. Set <code>background: true<\/code> in frontmatter to make a particular agent always concurrent. The gotcha here is the auto-deny: a background reviewer that hits a tool needing approval just skips it silently, so if a background run comes back thin, rerun it in the foreground where you can approve the prompts.<\/p>\n\n<h2>6. Chain a reviewer into a fixer<\/h2>\n\n<p>One agent is useful. The pattern that changes how you work is chaining focused agents, and the textbook version is a read-only reviewer feeding a fixer that can edit. It is the kind of split that earns its keep on day-to-day <a href=\"https:\/\/computingforgeeks.com\/claude-code-devops-engineers\/\">DevOps work<\/a>, where you want findings and fixes kept honest and separate. Keep them split on purpose: the reviewer never gets write tools, so it cannot &#8220;helpfully&#8221; rewrite things mid-review, and the fixer does one named change at a time.<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>vim .claude\/agents\/build-fixer.md<\/code><\/pre>\n\n\n<p>Give the fixer the editing tools the reviewer was denied:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>---\nname: build-fixer\ndescription: Applies a specific, already-identified fix to source files. Use after a reviewer has named the exact change to make.\ntools: Read, Edit, Bash\nmodel: sonnet\ncolor: green\n---\n\nYou apply one well-defined code change at a time. Make the minimal edit,\nthen confirm it with a quick check. Never refactor beyond the request.<\/code><\/pre>\n\n\n<p>Then you drive the handoff in one sentence: &#8220;Use the code-reviewer subagent to find the issues in payment.py, then use the build-fixer subagent to apply the SQL injection fix.&#8221; Each runs in its own context, so the reviewer&#8217;s bulky output never crowds the fixer&#8217;s window.<\/p>\n\n<p>For heavier orchestration, an agent running as the main thread (via <code>claude --agent<\/code>) can spawn other subagents, and you can fence which ones it is allowed to spawn with the <code>Agent()<\/code> allowlist inside its <code>tools<\/code> field:<\/p>\n\n\n<pre class=\"wp-block-code code\"><code>tools: Agent(worker, researcher), Read, Bash<\/code><\/pre>\n\n\n<p>That coordinator can spawn only <code>worker<\/code> and <code>researcher<\/code>. A bare <code>Agent<\/code> with no parentheses allows any subagent, and omitting <code>Agent<\/code> entirely means it can spawn none. This is how you build a constrained team without handing one agent the keys to spawn anything.<\/p>\n\n<h2>7. The built-in subagents you already have<\/h2>\n\n<p>Before you write a single file, Claude Code ships three primary subagents it delegates to automatically (plus a couple of niche helper agents you rarely call directly):<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Explore<\/strong> searches and understands a codebase without changing anything, at a thoroughness level Claude picks (quick, medium, or very thorough). It is the read-only researcher.<\/li>\n<li><strong>Plan<\/strong> handles research while you are in plan mode, keeping exploration output in a separate window so the main conversation stays read-only.<\/li>\n<li><strong>general-purpose<\/strong> takes tasks that need both exploration and modification, multi-step reasoning, or several dependent steps.<\/li>\n<\/ul>\n\n\n<p>Explore and Plan deliberately skip your CLAUDE.md and the repo&#8217;s git status to stay fast and cheap; every other agent loads both. You rarely invoke these by name, but knowing they exist explains a lot of what Claude already does on its own.<\/p>\n\n<h2>8. Steal from the community<\/h2>\n\n<p>You do not have to write every agent from scratch. The ecosystem around <code>.claude\/agents\/<\/code> is large and active, and a few collections are worth raiding (star counts approximate, as of June 2026):<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Repo<\/th><th>Stars<\/th><th>What you get<\/th><\/tr><\/thead><tbody>\n<tr><td><code>wshobson\/agents<\/code><\/td><td>~37K<\/td><td>The heavyweight, ~190 agents, MIT. Now structured as a plugin marketplace.<\/td><\/tr>\n<tr><td><code>VoltAgent\/awesome-claude-code-subagents<\/code><\/td><td>~22K<\/td><td>The best-organized pure collection, 150+ agents across 10 categories, MIT.<\/td><\/tr>\n<tr><td><code>davila7\/claude-code-templates<\/code><\/td><td>~28K<\/td><td>A CLI installer (npx), pulls in agents, commands, hooks, MCP, MIT.<\/td><\/tr>\n<tr><td><code>hesreallyhim\/awesome-claude-code<\/code><\/td><td>~46K<\/td><td>The umbrella awesome-list and discovery hub for the whole ecosystem.<\/td><\/tr>\n<tr><td><code>anthropics\/claude-plugins-official<\/code><\/td><td>~30K<\/td><td>Anthropic&#8217;s own plugin directory, Apache-2.0, the place to find vetted agents.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n<p>A word of caution while you browse: <code>obra\/superpowers<\/code> shows enormous star numbers and people will point you at it for agents, but it is a <em>skills<\/em> framework, not a subagent collection, so do not expect <code>.claude\/agents\/<\/code> files there. When you copy an agent in, drop it into <code>.claude\/agents\/<\/code> for the project or <code>~\/.claude\/agents\/<\/code> for everywhere, then check its <code>tools<\/code> line before trusting it. A reviewer you grabbed off GitHub that quietly carries <code>Edit<\/code> and <code>Bash<\/code> is not the read-only reviewer you think it is.<\/p>\n\n<h2>Best practices and the gotchas that bite<\/h2>\n\n<p>After building a fair few of these, the rules that actually matter are short. Give each subagent one job; a &#8220;do everything&#8221; agent delegates badly because its description matches everything and nothing. Prefer an allowlist on <code>tools<\/code> over a denylist, so a new tool added later does not silently land in a reviewer&#8217;s hands. Route by cost, sending cheap mechanical work to Haiku and saving the expensive models for genuine reasoning. And write the <code>description<\/code> as the trigger condition, because a vague one is why your agent never gets picked.<\/p>\n\n<p>The gotchas, collected in one place so you do not learn them the hard way: a file edited on disk needs a session restart, while <code>\/agents<\/code> edits are live; duplicate names in one scope get silently dropped; background agents auto-deny prompts, so a thin result means rerun in the foreground; and plugin agents ignore <code>hooks<\/code>, <code>mcpServers<\/code>, and <code>permissionMode<\/code>. Get those four into muscle memory and subagents stop surprising you. Pin this next to the <a href=\"https:\/\/computingforgeeks.com\/claude-code-cheat-sheet\/\">Claude Code cheat sheet<\/a>, wire the <a href=\"https:\/\/computingforgeeks.com\/reduce-claude-code-token-usage-tools\/\">token-reduction tricks<\/a> alongside it, and a session that used to drown in its own search output now stays clean while specialized agents grind through the side work in the background.<\/p>","protected":false},"excerpt":{"rendered":"<p>You ask Claude Code to add a feature, and halfway through it spends a thousand tokens grepping the codebase, then dumps the results into the same conversation you are trying to keep clean. A subagent solves exactly that. It does the messy side work in its own context window and hands back only the summary, &#8230; <a title=\"Claude Code Subagents: Configure Specialized AI Agents\" class=\"read-more\" href=\"https:\/\/computingforgeeks.com\/claude-code-subagents-guide\/\" aria-label=\"Read more about Claude Code Subagents: Configure Specialized AI Agents\">Read more<\/a><\/p>\n","protected":false},"author":7,"featured_media":168716,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39034,690,299],"tags":[17245,212,669,211],"cfg_series":[39880],"class_list":["post-168715","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-dev","category-how-to","tag-ai","tag-automation","tag-dev","tag-devops","cfg_series-claude-code-mastery"],"_links":{"self":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/168715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/comments?post=168715"}],"version-history":[{"count":1,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/168715\/revisions"}],"predecessor-version":[{"id":168717,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/posts\/168715\/revisions\/168717"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media\/168716"}],"wp:attachment":[{"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/media?parent=168715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/categories?post=168715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/tags?post=168715"},{"taxonomy":"cfg_series","embeddable":true,"href":"https:\/\/computingforgeeks.com\/wp-json\/wp\/v2\/cfg_series?post=168715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}