Agent skill

New Feature Development

by context-labs in context-labs/whip

Playbook for building a NET-NEW feature in whip. An agent skill from context-labs/whip.

Apache-2.0Auto-check passedAgent Workflows

Install New Feature Development

skills CLI
$ npx skills add context-labs/whip --skill new-feature-development -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install context-labs/whip new-feature-development --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
new-feature-development
GitHub stars
1.1k
Token cost
~2.8k tokens
SKILL.md length
1,440 words
Files
2
Skills in repo
40
Repo updated
First seen
Licence
Apache-2.0

At a glance

Playbook for building a NET-NEW feature in whip. An agent skill from context-labs/whip.

  • Works in 9 steps: Clarify ambiguity before doing anything → Mine the prior art → Understand the architecture you're… → …
  • The user wants to add a feature
  • SKILL.md covers Design principles (apply…, The loop and Anti-patterns to refuse
  • Calls go

What it does

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.

When your agent uses it

  • The user wants to add a feature
  • UX behavior (build…
  • Even without the word feature

Example prompts

  • “build…”
  • “implement…”
  • “feature”
  • “/new-feature-development”

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Clarify ambiguity before doing anything
  2. Mine the prior art
  3. Understand the architecture you're building into
  4. Write a living plan
  5. Implement — minimal, concurrent-safe, channel-idiomatic
  6. Session persistence and resume are part of the feature
  7. Test at the right level — race included
  8. Gate on task check, then review adversarially
  9. Close the loop: docs and roadmap

What it can do on your machine

Read from SKILL.md and the folder at commit 8876467. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

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.

Safety

Auto-check passed

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.

SKILL.md

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.

Download SKILL.mdSave it as .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.
name
new-feature-development
description
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.

New Feature Development

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.

Design principles (apply throughout)

  • Minimal is the product — ponytail is on by default. Before writing code, run the ladder: does this need to exist? is it already here (check 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).
  • Learn from the other harnesses, port the Go way. Don't transliterate TypeScript — find the Go-native shape (pi's promise chains became a 1-capacity channel semaphore; opencode's Deferred registry became one channel close — see docs/concurrency.md). Cite the reference (file:line) in the plan and doc comments.
  • Channels over locks; capacity is the contract. Size results channels to the batch; a 1-buffer channel is a mutex; close(ch) once wakes all waiters. Every goroutine has an obvious owner and exit; everything concurrent passes go test -race.
  • Errors are tool output, not loop-abort. Tool failures return "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.
  • Context flows, cancellation is real. 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.
  • Config is guarded on write. ~/.whip/config.json writes are atomic (tmp+rename, .bak kept) with a clobber-refusal guard. Never bare os.WriteFile persisted state.
  • Docs are part of the diff. A feature without its docs/features.md section (behavior → code → tests) and roadmap checkbox is incomplete.

The loop

Steps 0–2 are cheap and prevent expensive mistakes; don't skip them because the feature "seems small." Steps 3–7 are the build.

0. Clarify ambiguity before doing anything

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.

1. Mine the prior art

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.

2. Understand the architecture you're building into

Read docs/features.md end to end. Non-negotiables:

  • Five surfaces. A new tool (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.
  • The tool contract is load-bearing. Defs go to the provider verbatim; outputs are strings capped at 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.
  • Two places for state. Agent.Messages + transcript blocks in-session; session.Store across sessions. No third place without justification.
  • The TUI is a busy/idle state machine. Turns run in goroutines that p.Send messages back; keys mean different things busy vs idle (two-stage ctrl+c). Rendering is width-dependent; blocks re-render on resize.
3. Write a living plan

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.

Show full SKILL.md (575 more words)Show less
4. Implement — minimal, concurrent-safe, channel-idiomatic

Type it yourself or delegate well-specified units to task subagents; keep judgment (architecture, interfaces, verifying diffs) yourself.

  • Follow the golang-* skills (golang-code-style, golang-naming, golang-concurrency, golang-error-handling, golang-safety, golang-context).
  • Pure logic at the core, I/O at the edges — the pattern behind buildSummaryPrompt, truncate, toolMutationPath: trivially tested pure functions, thin syscall/network wrappers.
  • Extend, don't parallel-track. A case in the slash-command switch, a field on Config, a block type — not a second dispatcher/config file/renderer.
  • New concurrency follows 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.

5. Session persistence and resume are part of the feature

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.

6. Test at the right level — race included

Use golang-testing. The repo is stdlib testing all the way down — stay consistent. Choose by what you're de-risking:

  • Unit — pure logic (canonicalization, truncation, parsing). The default.
  • Loop tests against a fake provider — 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.
  • Headless TUI tests — drive the bubbletea model directly (m.prog == nil paths exist for this), assert on rendered blocks; include resize cases where width matters.
  • Concurrency proofs — tests that would fail under interleaving (concurrency counters, many-waiter wakeups), everything under -race.

Under-tested = a plausible regression fails no test. Name the tests in the docs/features.md section like existing entries do.

7. Gate on task check, then review adversarially
  • task 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.
  • Least-code pass, then adversarial. Re-read the diff against the ponytail ladder — cut or // 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.
8. Close the loop: docs and roadmap

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).

Anti-patterns to refuse

  • Building something docs/features.md or docs/roadmap.md already describes under another name — check the map first.
  • Transliterating TypeScript from pi/opencode instead of the Go-native shape.
  • A tool that aborts the loop on failure (return "Error: …" instead), or returns unbounded output with no truncation marker.
  • A goroutine with no owner or exit, an unbounded channel "to be safe," a mutex where a sized channel says it better — or any concurrency that hasn't seen go test -race.
  • context.Background() in library code; work ctrl+c can't stop.
  • Bare os.WriteFile on config or any persisted file; persisting without asking what a clobbered/partial file does on next load.
  • New dependencies stdlib or an existing import already covers.
  • Business logic in the TUI update loop that belongs in internal/agent or internal/tools (the TUI renders and routes keys; the loop does the work).
  • Skipping clarify/plan and building a fuzzy spec.
  • Calling it done with 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

Files

SKILL.md and 1 other file in .agents/skills/new-feature-development of context-labs/whip.

  • SKILL.md
  • evals/evals.json

Open the folder on GitHubat commit 8876467

Compare with similar skills

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.

New Feature Development compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
New Feature Development this skillcontext-labs/whip1.1k—~2.8kAutomated safety check: PassApache-2.0
Claude Code Plugin Structureanthropics/claude-plugins-official38k10 repos~3.4kAutomated safety check: PassApache-2.0
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence
Plate Plugin Creatorudecode/plate17k—~2.3kAutomated safety check: PassCustom licence
AgentSys Cross-Platform Maintenanceagent-sh/agentsys994—~1.2kAutomated safety check: PassMIT
Readyprekuter/dryforge4101 repos~6.8kAutomated safety check: PassApache-2.0

Similar skills

  • Claude Code Plugin Structure

    anthropics/claude-plugins-official

    Official

    Explains the directory layout, plugin.json manifest and component organization of a Claude Code plugin, including auto-discovery and portable paths.

    38k GitHub starsUsed in 10 repos~3.4k tokens
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    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.

    29k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Build new Plate plugins with Slate-first architecture, sane typing, and explicit React/Plate wrapper boundaries.

    17k GitHub stars~2.3k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • 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.

    994 GitHub stars~1.2k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Ready

    prekuter/dryforge

    Understand what you mean before anything is built. An agent skill from prekuter/dryforge.

    410 GitHub starsUsed in 1 repo~6.8k tokens
    Agent WorkflowsAuto-check passed
  • Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.

    7.2k GitHub stars~5.2k tokensUpdated yesterday
    Agent WorkflowsAuto-check: notes

More from context-labs/whip

All 40 skills in this repo
  • Golang Lint

    context-labs/whip

    Linting best practices and golangci-lint configuration for Go — running linters, configuring .golangci.yml, nolint suppressions, selecting linters.

    1.1k GitHub starsUsed in 2 repos~1.8k tokens
    Auto-check passed
  • Golang Project Layout

    context-labs/whip

    Golang project layouts and workspaces. An agent skill from context-labs/whip.

    1.1k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • Golang Pkg Go Dev

    context-labs/whip

    Golang package/module docs via godig, a pkg.go.dev API client (CLI + MCP) — APIs, symbols, versions, importers, licenses, vulnerabilities.

    1.1k GitHub starsUsed in 2 repos~3k tokens
    Auto-check passed
  • Golang Stretchr Testify

    context-labs/whip

    Golang testing with stretchr/testify — assert, require, mock, suite: assertions, mock expectations, argument matchers, suite lifecycle, Eventually, JSONEq.

    1.1k GitHub starsUsed in 2 repos~1.8k tokens
    Auto-check passed
  • CI/CD with GitHub Actions for Golang — testing, linting, SAST, security scanning, coverage, Dependabot, Renovate, GoReleaser, release pipelines.

    1.1k GitHub stars~3.5k tokensUpdated 3 days ago
    Auto-check passed
  • Golang Data Structures

    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…

    1.1k GitHub starsUsed in 1 repo~2.6k tokens
    Auto-check passed

Works with

Questions about New Feature Development

What does New Feature Development do?

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.

When should I use New Feature Development?

New Feature Development fits situations like: the user wants to add a feature; UX behavior (build…; even without the word feature.

How do I install New Feature Development in Claude Code?

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.

How do I install New Feature Development in Codex?

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.

Can I use New Feature Development in Cursor, Gemini CLI or GitHub Copilot?

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.

What does New Feature Development need to run?

Going by SKILL.md and its folder, New Feature Development needs the command-line tools its instructions call (go).

Does New Feature Development access the network?

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.

Is New Feature Development safe to install?

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.

What licence does New Feature Development use?

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.

How many tokens does New Feature Development use?

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.

What are the alternatives to New Feature Development?

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.

Who maintains New Feature Development?

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.