cc-native
A Claude Code plugin that keeps your agents, hooks, and skills aligned with the current Claude Code feature surface. CC ships features weekly — cc-native provides a Guide-and-Verify workflow so the configuration you author against today's Claude Code is still correct tomorrow.
What's in the box
| Component | Type | Purpose |
|---|
feature-guide | skill | Always-current edit-time reference for .claude/ and plugin artifacts (hooks, skills, subagents, MCP, settings, plugins, modes, memory, schedules). Progressive-disclosure: skim SKILL.md, drill into a single matching references/*.md. Carries the Guide-and-Verify workflow rule inline. |
cc-native-reminder | PreToolUse hook | When you Edit/Write any .claude/ config, injects a reminder to consult the feature-guide skill before proceeding. |
cc-native-verify | PostToolUse hook | Deterministic lint of the artifact you just wrote: JSON parse, frontmatter required-key check, hook event-name validation against the live skill enum, tools-token regex, hook script smoke test, portability warnings. Exits 0 / 1 (warn) / 2 (fail). |
auditor | subagent | LLM semantic review of changed .claude/ artifacts: goal-fit, least-privilege, cross-references, deprecation. Returns per-file block/warn/pass. Invoked as cc-native:auditor. |
maybe-audit | Stop hook | Detects edits to .claude/ files this turn and tells the main agent to invoke cc-native:auditor before declaring done. |
Requirements
- Python 3.x on PATH as
python. The hooks invoke python ... (not python3) so they work uniformly on Windows (where python3 resolves to a Microsoft Store stub) and on macOS/Linux distros that map python → Python 3.
- Linux:
apt install python-is-python3 (Debian/Ubuntu) or your distro's equivalent if python isn't already on PATH.
- macOS: Homebrew (
brew install python) or the python.org installer both provide python.
- Windows: install Python 3 from python.org (NOT the Microsoft Store) and tick "Add Python to PATH".
Install
From the official Anthropic plugin marketplace:
/plugin install cc-native@claude-plugins-official
Or install directly from this repo via the maintainer marketplace:
/plugin marketplace add GarySonyak/cc-native
/plugin install cc-native@gary-sonyak
No further wiring needed. The skill auto-triggers on .claude/ edits and carries the workflow rule inline. The hooks register at startup; the auditor is invoked on demand by the Stop hook directive.
Examples
Example 1 — Authoring a hook with current syntax (feature-guide skill)
You ask Claude to add a Setup hook to your project. Without cc-native, Claude writes from training memory and may pick the wrong event name, wrong matcher format, or a deprecated field — Claude Code ships features weekly, training memory drifts. With cc-native, the feature-guide skill auto-triggers on the edit, Claude reads references/hooks.md first (single file, scoped to the artifact type), and writes the hook against the current schema. No second-guessing, no broken hooks shipped.
Example 2 — Catching a missing required field at edit time (lint hook)
You edit .claude/agents/reviewer.md and forget the description: field in the frontmatter. The moment the file is saved, cc-native's PostToolUse lint fires cc-native-verify.py and exits with a hard-fail (code 2), printing exactly which required field is missing. Claude sees the error before the turn ends and fixes it without you needing to spot it during review. Catches syntax errors, missing required fields, and dangerous settings (e.g., secrets pasted into env) — purely deterministic, no LLM call.
Example 3 — Catching semantic mismatches the lint can't see (auditor subagent)
You add a new plugin agent with permissionMode: bypassPermissions in the frontmatter. Syntax is valid, required fields are all present, the lint passes. But the Claude Code spec says plugin-shipped agents cannot use permissionMode (security restriction). When Claude finishes the turn, cc-native's Stop hook injects a directive to invoke the cc-native:auditor subagent. The auditor reads references/mcp-and-plugins.md, emits a block finding with the exact citation, and you fix it before the plugin ever ships to a user.
Example 4 — Building a new plugin from scratch (full Guide-and-Verify loop)