Sponsor Suno AI Music arrow_forward
Plugin

Agentic Toolkit

Reusable infrastructure for building agentic systems with multi-model councils, hierarchical sub-agents, and provenance-tracked tool loops. Lifted from production code (Brandling, 2026 BytePlus Seedance Beta hackathon) and hardened with depth caps + required provenance.

Type
Plugin
Repository
ooiyeefei/ccc
GitHub stars
493
License
MIT
Repo last updated
Jul 29, 2026
Version
0.1.0
Author
ooiyeefei

What Agentic Toolkit is

Agentic Toolkit is a plugin published in the ooiyeefei/ccc repository on GitHub, which has about 493 stars. The repository describes itself as: “Claude Code Custom Plugins - Custom plugins for Claude Code CLI”

A plugin is a package that bundles skills, slash commands, subagents, hooks, and MCP connectors so they install together. Plugins are plain files with a manifest at .claude-plugin/plugin.json, and they work in both Claude Code and Claude Cowork.

Installing Agentic Toolkit adds everything it ships in one step. Connectors inside a plugin still need to be connected separately, and hooks and subagents only run in Cowork and Claude Code, not in regular chat.

How to install Agentic Toolkit

Claude Code

  1. Add the repository as a plugin marketplace: claude plugin marketplace add ooiyeefei/ccc
  2. Install the plugin: claude plugin install agentic-toolkit@<marketplace-name>, using the marketplace name from the repository's .claude-plugin/marketplace.json.
  3. Restart the session if the new skills or commands don't appear straight away.

Claude Cowork

  1. Open Customize → Plugins and choose Add marketplace.
  2. Enter ooiyeefei/ccc (the owner/repo shorthand works for GitHub).
  3. Find Agentic Toolkit in the list, click Install, then connect any connectors it needs from its Connectors tab.

New to extending Cowork? Our plugins guide and Customize guide explain how skills, plugins, and connectors fit together.

Inside the source file

An excerpt from plugins/agentic-toolkit/.claude-plugin/plugin.json, shared under the repository's MIT license. Read the full file on GitHub.

Reusable infrastructure for building agentic systems with multi-model councils, hierarchical sub-agents, and provenance-tracked tool loops.

Lifted from production code (Brandling, 2026 BytePlus Seedance Beta hackathon) and hardened with the lessons documented in that codebase's "what we'd change" appendix — depth caps enforced at the runner level, provenance required at the type level, per-model knobs lifted into the registry, secretarial summaries to combat context explosion in nested spawn trees.

This is a reference TypeScript package, not a tested library. The point is to save a week of plumbing per new agentic project (groot-finance, yf-hazop, tutorial-gen, …) by shipping the five things every Brandling-style system ends up re-implementing.

What's in here

agentic-toolkit/
├── .claude-plugin/
│   └── plugin.json
└── src/
    ├── gateway.ts               # multi-model gateway adapter
    ├── models-registry.ts       # per-role model registry with knobs
    ├── sub-agent-runner.ts      # depth + spawn + timeout enforced runner
    ├── events.ts                # typed AgentSseEvent + formatSseEvent
    ├── provenance.ts            # required _source tag + helpers
    └── council-state-machine.ts # generic foreman with mandatory start/end

The five components

1. Gateway adapter (gateway.ts). A thin createGateway({ baseURL, apiKey, name? }) wrapper around @ai-sdk/openai-compatible. Keep one provider for Claude / GPT / Gemini behind a unified endpoint (TokenRouter, OpenRouter, LiteLLM, Vercel AI Gateway). The registry is the single seam where "Opus is suddenly expensive" turns into a 1-character edit.

2. Models registry (models-registry.ts). A typed ModelsRegistry binding role names to { model, knobs } entries. Per-model knobs (e.g. noToolChoiceRequired: true for GPT-class models that infinite-loop on toolChoice: 'required') live in the registry, not at every call site. Ships with defaultBrandlingRegistry showing the 8-role marketing council as a starting template.

3. Sub-agent runner (sub-agent-runner.ts). runSubAgent with depth cap, per-parent spawn cap, wall-clock timeout, and a typed SubAgentResult ('ok' | 'failed' | 'depth_exceeded' | 'timeout'). Ported from Brandling's runSubAgent and hardened: Brandling tracked depth in events only; this runner refuses to spawn beyond maxDepth so prompt regressions can't blow past the limit.

4. Events (events.ts). The full AgentSseEvent typed union (phase_change, phase_status, agent_step with depth + parentAgent, agent_error, mutation_field) plus formatSseEvent. AgentTraceRole and AgentPhase are generic so HAZOP / finance / tutorial-gen pipelines can name their roles and phases without forking the file.

5. Provenance (provenance.ts). GenerationSource ('live' | 'cached'

assertProvenance runtime guard. _source is required at the type level — Brandling shipped it optional and got bitten by demo data masquerading as live output downstream.

The council state machine

6. Council state machine (council-state-machine.ts). A generic foreman runner. Pass a persona palette, a mandatoryStartTool, a mandatoryEndTool, revision/step caps, and an assembleResult callback; the runner handles the tool-loop, SSE events, revision bookkeeping, partial-state fallback, and the shared stopWhen: [hasToolCall(end), stepCountIs(cap)] invariant. Distilled from Brandling's marketing-domain runDebateAgentic (council-foreman.ts:41).

Hello world

import { createGateway } from './gateway';
import { defineRegistry } from './models-registry';
import { runCouncil } from './council-state-machine';
import { withProvenance, type Provenanced } from './provenance';
import type { AgentSseEvent } from './events';
import { z } from 'zod';

// 1. Wire the gateway once.
const gateway = createGateway({
  baseURL: process.env.GATEWAY_BASE_URL!,
  apiKey: process.env.GATEWAY_API_KEY!,
});

// 2. Register the roles.
const MODELS = defineRegistry({
  foreman: { model: gateway('anthropic/claude-opus-4.7') },
  cfo: { model: gateway('anthropic/claude-sonnet-4.6') },
  auditor: {
…

Design constraints (read these before extending)

These are lifted from Brandling Appendix A. They override convenience.

Before you install

  • Read the whole file first. Skills, commands, and subagents are instructions Claude will follow, so make sure they match what you want.
  • Check which tools, scripts, or MCP servers it uses. Local servers and scripts run with your permissions.
  • Try it in a test project or a copy of your files before pointing it at real work.
  • Pin the version you tested, and review changes before updating.
  • Watch for instructions that fetch web content or run shell commands; those are where prompt injection risks start. See our prompt injection guide.

FAQ

What is Agentic Toolkit?

Agentic Toolkit is a plugin for Claude Code and Claude Cowork from the ooiyeefei/ccc repository on GitHub. Reusable infrastructure for building agentic systems with multi-model councils, hierarchical sub-agents, and provenance-tracked tool loops. Lifted from production code (Brandling, 2026 BytePlus Seedance Beta hackathon) and hardened with depth caps + required provenance.

How do I install Agentic Toolkit in Claude Code?

Add the repository as a plugin marketplace: claude plugin marketplace add ooiyeefei/ccc Install the plugin: claude plugin install agentic-toolkit@<marketplace-name>, using the marketplace name from the repository's .claude-plugin/marketplace.json. Restart the session if the new skills or commands don't appear straight away.

Can I use Agentic Toolkit in Claude Cowork?

Open Customize → Plugins and choose Add marketplace. Enter ooiyeefei/ccc (the owner/repo shorthand works for GitHub). Find Agentic Toolkit in the list, click Install, then connect any connectors it needs from its Connectors tab.

Is Agentic Toolkit safe to install?

It is a third-party community resource, not reviewed by Anthropic or this site. Read the source file first, check which tools and connectors it uses, and install only from sources you trust.

Similar resources

Browse all skills, subagents, and plugins →

Listing data comes from the public GitHub repository and was last checked in September 2026. Excerpts are © their authors and shared under MIT. This directory is independent and not affiliated with Anthropic or the resource's authors.