Claude Code Plugin Structure
anthropics/claude-plugins-official
Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.
Playbook for building a NET-NEW feature in whip. An agent skill from context-labs/whip.
$ npx skills add context-labs/whip --skill new-feature-development -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install context-labs/whip new-feature-development --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/new-feature-development .claude/skills/new-feature-development && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "new-feature-development" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-development into .claude/skills/new-feature-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-feature-development", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-developmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add context-labs/whip --skill new-feature-development -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install context-labs/whip new-feature-development --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/new-feature-development .agents/skills/new-feature-development && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "new-feature-development" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-development into .agents/skills/new-feature-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-feature-development", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add context-labs/whip --skill new-feature-development -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install context-labs/whip new-feature-development --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/new-feature-development .cursor/skills/new-feature-development && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "new-feature-development" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-development into .cursor/skills/new-feature-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-feature-development", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/context-labs/whip.git --path .agents/skills/new-feature-development--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add context-labs/whip --skill new-feature-development -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install context-labs/whip new-feature-development --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/new-feature-development .gemini/skills/new-feature-development && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "new-feature-development" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-development into .gemini/skills/new-feature-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-feature-development", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install context-labs/whip new-feature-developmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add context-labs/whip --skill new-feature-development -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/new-feature-development .github/skills/new-feature-development && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "new-feature-development" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-development into .github/skills/new-feature-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-feature-development", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add context-labs/whip --skill new-feature-development -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install context-labs/whip new-feature-development --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/context-labs/whip.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/new-feature-development .opencode/skills/new-feature-development && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "new-feature-development" agent skill from https://github.com/context-labs/whip/tree/main/.agents/skills/new-feature-development into .opencode/skills/new-feature-development/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-feature-development", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
new-feature-developmentPlaybook for building a NET-NEW feature in whip. An agent skill from context-labs/whip.
New Feature Development is an agent skill from context-labs/whip. Playbook for building a NET-NEW feature in whip. Use when the user wants to add a feature, tool, slash command, integration, or UX behavior ('build…', 'add…', 'implement…'), even without the word 'feature'. Mines docs/roadmap.md + docs/learnings/. NOT for debugging or narrow golang- changes.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `evals/evals.json`).
It sits in Agent Workflows, covering Hooks and plugins. It works with Go. The repository describes itself as: A fast coding-agent harness in Go. Tool-use loop, bubbletea TUI, provider-routable models with live catalog discovery, MCP support, background subagents. One binary, no runtime… The licence is Apache-2.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8876467. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
goFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
New Feature Development loads about 2.8k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,440 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from context-labs/whip at commit 8876467, republished under its Apache-2.0 licence (© context-labs). 1,440 words, ~2,783 tokens.
.claude/skills/new-feature-development/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are the architect for a new feature in whip, a minimal coding-agent
harness in Go. Make sure the right feature gets built the right way: understood
before started, researched against the reference harnesses, planned before
written, tested by default, documented in docs/features.md, and green on
task check before it's called done.
This is an umbrella: it owns the flow and hands off to the specialist
skills (golang-testing, golang-concurrency, golang-code-style,
golang-error-handling, golang-context, golang-safety). When a step says
"use skill X," read its SKILL.md — don't reimplement from memory.
Read repo docs lazily, when the step needs them:
docs/features.md — map of what's shipped: behavior → code → tests. Read
before designing; name the files the plan will touch.docs/concurrency.md — the channel patterns (per-path semaphores,
close-to-broadcast, ordered fan-out/fan-in). Read before writing anything
concurrent.docs/roadmap.md — planned features, each with file:line citations into
pi/opencode/codex/claude-code/grok. Read first: the "new" feature is often
already specced here. Check the box when you ship.docs/learnings/other-harnesses/ — harness exploration reports. Read when
porting a behavior — the research may already be done.docs/features.md)? does stdlib cover it? is it a small composition over an
already-imported dep? Only then write the minimum that works. A new
dependency is a big deal — go.mod fits on one screen; justify additions in
the plan. Mark deliberate shortcuts inline: // ponytail: <what would generalize this> (grep ponytail for examples).Deferred registry became one
channel close — see docs/concurrency.md). Cite the reference (file:line)
in the plan and doc comments.close(ch) once wakes all waiters.
Every goroutine has an obvious owner and exit; everything concurrent passes
go test -race."Error: <msg>" strings fed back to the model (tools.Execute) — a broken
tool never kills the turn. Reserved error returns are for infrastructure.
Bound everything: maxOutput truncation markers, timeouts always.ctx threads from TUI keypress
through Agent.Turn into every tool; ctrl+c must actually stop in-flight
work. No context.Background() in library code.~/.whip/config.json writes are atomic
(tmp+rename, .bak kept) with a clobber-refusal guard. Never bare
os.WriteFile persisted state.docs/features.md
section (behavior → code → tests) and roadmap checkbox is incomplete.Steps 0–2 are cheap and prevent expensive mistakes; don't skip them because the feature "seems small." Steps 3–7 are the build.
Building the wrong thing well is the most expensive outcome. Ask about: the actual user problem (not the proposed solution), where it lives (tool? agent loop? TUI? config? session store?), what the model sees vs what the human sees, what "done" looks like, non-goals, and which harness's behavior it's meant to match or beat. Short batch of concrete questions. If the brief is rich, confirm understanding in two sentences and flag only genuine unknowns.
Rule of thumb: you should be able to write the plan's "Goal" and "Non-goals" without guessing.
Read docs/roadmap.md and docs/learnings/ first. If porting harness behavior
and the research isn't done, do it now: find the reference implementation (pi
at ~/code/pi, opencode under ~/code/coding-harnesses/), understand why
it's built that way, sketch the Go-native port. Cite findings in the plan — a
reviewer should check the port against the original, not your memory.
Read docs/features.md end to end. Non-negotiables:
internal/tools — a Tool{Def, Run} appended
in agent.New; remember subagents get tools.All() too), agent-loop
behavior (internal/agent), TUI interaction (internal/tui — a case in the
command() switch, palette panel, key handling, transcript block), config
(internal/config), or persistence (internal/session — SQLite;
Save(id, from, msgs) writes incrementally). The plan names surfaces and
files.maxOutput; failures return error strings.
Parallel execution is the default — mutations declare their path for
toolMutationPath or take the global bash lock. Design for parallel calls
and -race.Agent.Messages + transcript blocks in-session;
session.Store across sessions. No third place without justification.p.Send messages back; keys mean different things busy vs idle (two-stage
ctrl+c). Rendering is width-dependent; blocks re-render on resize.Create .ai-docs/plans/<slug>/README.md: H1 title, Branch: line, "What this
does" / "Goal", "Non-goals", design (surfaces, file paths, sketches of new
types and channel lifecycles), prior-art citations, test plan, docs plan (the
features.md section + roadmap checkbox), ordered task breakdown.
This is the shared source of truth — you, delegated subagents (task tool,
background: true for parallel lanes), and reviewers read it. Keep it current:
check off tasks, record deviations, leave breadcrumbs for a fresh agent to pick
up mid-stream. A stale plan is worse than none.
Checkpoint: get user sign-off before writing code.
Type it yourself or delegate well-specified units to task subagents; keep
judgment (architecture, interfaces, verifying diffs) yourself.
golang-code-style, golang-naming,
golang-concurrency, golang-error-handling, golang-safety,
golang-context).buildSummaryPrompt, truncate, toolMutationPath: trivially tested pure
functions, thin syscall/network wrappers.Config, a block type — not a second dispatcher/config file/renderer.docs/concurrency.md patterns or the plan explains
why not. Race-clean under go test -race ./....Keep the .ai-docs plan current as code lands.
If the feature adds message-adjacent state (new message fields, block types,
goal-like loops), ask: does a resumed session behave correctly?
session.Store.Save serializes llm.Messages; --resume//resume re-renders
the transcript. New persisted shapes need a resume test, not just a
live-session test. Record deliberately when a feature is intentionally
live-only.
Use golang-testing. The repo is stdlib testing all the way down — stay
consistent. Choose by what you're de-risking:
agent_test.go spins an httptest
server speaking streaming chat-completions; that's how Turn, compaction,
parallel tools, and background tasks are pinned. New loop behavior gets one.model directly (m.prog == nil paths exist for this), assert on rendered blocks; include resize cases
where width matters.-race.Under-tested = a plausible regression fails no test. Name the tests in the
docs/features.md section like existing entries do.
task check, then review adversariallytask check must pass — gofmt -s + go vet + go test ./..., what
the pre-commit hook runs (task hooks installs it). Add go test -race ./... when you touched concurrency. go.mod changed → task tidy +
justification.// ponytail:-mark anything deletable. Then attack it: what
breaks under parallel tool calls? ctrl+c mid-turn? resume from SQLite? narrow
terminal? clobbered config? Race the diff past a background subagent told to
find correctness and simplicity problems. Fix what survives.Same change: the docs/features.md section (behavior → code → tests), the
docs/roadmap.md checkbox if listed, docs/concurrency.md if you added a
pattern worth teaching, docs/learnings/ notes if you researched a harness.
README only if the user-facing surface changed (flag, config key, command).
docs/features.md or docs/roadmap.md already describes
under another name — check the map first."Error: …" instead), or
returns unbounded output with no truncation marker.go test -race.context.Background() in library code; work ctrl+c can't stop.os.WriteFile on config or any persisted file; persisting without
asking what a clobbered/partial file does on next load.internal/agent or
internal/tools (the TUI renders and routes keys; the loop does the work).task check red, without -race, without the
features.md section, or without the adversarial pass.© context-labs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/new-feature-development of context-labs/whip.
Open the folder on GitHubat commit 8876467
New Feature Development next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| New Feature Development this skillcontext-labs/whip | 1.1k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Claude Code Plugin Structureanthropics/claude-plugins-official | 38k | 10 repos | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Crush Configurationcharmbracelet/crush | 29k | — | ~3.7k | Automated safety check: Pass | Custom licence | |
| Plate Plugin Creatorudecode/plate | 17k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| AgentSys Cross-Platform Maintenanceagent-sh/agentsys | 994 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Readyprekuter/dryforge | 410 | 1 repos | ~6.8k | Automated safety check: Pass | Apache-2.0 |
anthropics/claude-plugins-official
Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.
charmbracelet/crush
Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.
udecode/plate
Build new Plate plugins with Slate-first architecture, sane typing, and explicit React/Plate wrapper boundaries.
agent-sh/agentsys
Maintainer guide to where AgentSys keeps its marketplace, installer, transforms and adapters, and what to run when preparing a release or fixing a platform bug.
prekuter/dryforge
Understand what you mean before anything is built. An agent skill from prekuter/dryforge.
tw93/Waza
Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.
context-labs/whip
Linting best practices and golangci-lint configuration for Go — running linters, configuring .golangci.yml, nolint suppressions, selecting linters.
context-labs/whip
Golang project layouts and workspaces. An agent skill from context-labs/whip.
context-labs/whip
Golang package/module docs via godig, a pkg.go.dev API client (CLI + MCP) — APIs, symbols, versions, importers, licenses, vulnerabilities.
context-labs/whip
Golang testing with stretchr/testify — assert, require, mock, suite: assertions, mock expectations, argument matchers, suite lifecycle, Eventually, JSONEq.
context-labs/whip
CI/CD with GitHub Actions for Golang — testing, linting, SAST, security scanning, coverage, Dependabot, Renovate, GoReleaser, release pipelines.
context-labs/whip
Golang data structures — slices/maps internals (capacity growth, preallocation, hash buckets), slices/maps packages, container/list/heap/ring, strings.Builder vs bytes.Buffer, generic collections…
Works with
Categories
Playbook for building a NET-NEW feature in whip. An agent skill from context-labs/whip. New Feature Development is an agent skill from context-labs/whip. Playbook for building a NET-NEW feature in whip.
New Feature Development fits situations like: the user wants to add a feature; UX behavior (build…; even without the word feature.
Run `npx skills add context-labs/whip --skill new-feature-development -a claude-code`. Or copy the skill folder (.agents/skills/new-feature-development in context-labs/whip) into .claude/skills/new-feature-development in your project. Claude Code loads it when a task matches its description.
Run `npx skills add context-labs/whip --skill new-feature-development -a codex`. Or copy the skill folder (.agents/skills/new-feature-development in context-labs/whip) into .agents/skills/new-feature-development in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add context-labs/whip --skill new-feature-development -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/new-feature-development, .gemini/skills/new-feature-development, .github/skills/new-feature-development and .opencode/skills/new-feature-development in your project.
Going by SKILL.md and its folder, New Feature Development needs the command-line tools its instructions call (go).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
New Feature Development is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with New Feature Development: Claude Code Plugin Structure (anthropics/claude-plugins-official, 38k stars), Crush Configuration (charmbracelet/crush, 29k stars), Plate Plugin Creator (udecode/plate, 17k stars) and AgentSys Cross-Platform Maintenance (agent-sh/agentsys, 994 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
context-labs (a GitHub organization) maintains it in context-labs/whip, which has 1,081 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 5, 2026.
Source: context-labs/whip on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.