Skip to content
Merged
46 changes: 44 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
"name": "typos-format",
"source": "./plugins/typos-format",
"category": "development",
"defaultEnabled": false,
"tags": ["typos", "spelling", "formatter", "linter", "hook"],
"relevance": {
"topic": "Spelling / typo fixing",
Expand Down Expand Up @@ -94,6 +95,7 @@
"name": "desktop-notification",
"source": "./plugins/desktop-notification",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["notification", "desktop", "toast", "bell", "osc9", "hook"]
},
{
Expand Down Expand Up @@ -143,12 +145,14 @@
"name": "architecture",
"source": "./plugins/architecture",
"category": "design",
"defaultEnabled": false,
"tags": ["architecture", "refactoring", "deep-modules", "ousterhout", "module-design", "testability", "c4", "landscape", "dependencies", "components", "containers", "context", "flow", "events", "data", "deployment", "portfolio", "adr", "decision-record", "skill"]
},
{
"name": "mcp-tools",
"source": "./plugins/mcp-tools",
"category": "quality",
"defaultEnabled": false,
"tags": ["mcp", "tools", "audit", "quality", "scorecard", "skill"],
"relevance": {
"topic": "MCP servers",
Expand All @@ -161,12 +165,14 @@
"name": "prototype",
"source": "./plugins/prototype",
"category": "design",
"defaultEnabled": false,
"tags": ["prototype", "spike", "throwaway", "design", "ui", "state-machine", "skill"]
},
{
"name": "knowledge",
"source": "./plugins/knowledge",
"category": "discovery",
"defaultEnabled": false,
"tags": ["knowledge", "distill", "book", "pdf", "epub", "youtube", "video", "transcript", "course", "dometrain", "teachable", "skill", "reference", "synthesis", "ingest"],
"relevance": {
"topic": "books and PDFs",
Expand All @@ -185,6 +191,7 @@
"name": "playbooks",
"source": "./plugins/playbooks",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["knowledge", "playbook", "doctrine", "boris", "fable-5", "skill-authoring", "repo-sweep", "hygiene", "best-practices", "skill"]
},
{
Expand All @@ -197,14 +204,15 @@
"name": "docs-naming",
"source": "./plugins/docs-naming",
"category": "maintenance",
"defaultEnabled": false,
"tags": ["maintenance", "documentation", "skill", "file-names", "naming", "rename", "audit", "gate"]
},
{
"name": "firecrawl",
"source": "./plugins/firecrawl",
"category": "discovery",
"tags": ["firecrawl", "scraping", "web-search", "crawling", "parsing", "skill"],
"defaultEnabled": true,
"defaultEnabled": false,
"relevance": {
"topic": "Firecrawl",
"signals": {
Expand All @@ -217,6 +225,7 @@
"name": "harness-config",
"source": "./plugins/harness-config",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["maintenance", "configuration", "settings", "permissions", "mcp", "rules", "automation", "audit", "skill"],
"relevance": {
"topic": "Claude Code settings",
Expand All @@ -229,6 +238,7 @@
"name": "harness-memory",
"source": "./plugins/harness-memory",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["memory", "claude-md", "rules", "auto-memory", "health", "audit", "stateless", "disable", "purge", "skill"]
},
{
Expand All @@ -247,12 +257,14 @@
"name": "playgrounds",
"source": "./plugins/playgrounds",
"category": "presentation",
"defaultEnabled": false,
"tags": ["playground", "interactive", "explorer", "html", "prompt-round-trip", "skill"]
},
{
"name": "playwright",
"source": "./plugins/playwright",
"category": "testing",
"defaultEnabled": false,
"tags": ["playwright", "e2e", "browser-automation", "testing", "tooling", "skill"],
"relevance": {
"topic": "Playwright",
Expand All @@ -277,6 +289,7 @@
"name": "coupling",
"source": "./plugins/coupling",
"category": "maintenance",
"defaultEnabled": false,
"tags": ["coupling", "cohesion", "decouple", "connascence", "dependency-injection", "refactoring", "skill"]
},
{
Expand Down Expand Up @@ -307,36 +320,42 @@
"name": "evals",
"source": "./plugins/evals",
"category": "testing",
"defaultEnabled": false,
"tags": ["evals", "evaluation", "success-criteria", "llm-judge", "grading", "rubric", "knowledge", "skill"]
},
{
"name": "harness-ops",
"source": "./plugins/harness-ops",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["operations", "observability", "otel", "telemetry", "troubleshooting", "changelog", "dashboard", "claude-code", "skill"]
},
{
"name": "rate-limit-guard",
"source": "./plugins/rate-limit-guard",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["rate-limit", "statusline", "tee", "loop-lane", "stopfailure", "hook"]
},
{
"name": "context-guard",
"source": "./plugins/context-guard",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["context-window", "statusline", "tee", "zones", "context-degradation", "session", "skill"]
},
{
"name": "context-budget",
"source": "./plugins/context-budget",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["context-window", "startup-payload", "token-budget", "tool-schemas", "measurement", "attribution", "ledger", "skill"]
},
{
"name": "plugin-quality",
"source": "./plugins/plugin-quality",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["plugin-audit", "audit", "review", "quality", "work-item", "context-guard", "skill"]
},
{
Expand Down Expand Up @@ -383,6 +402,7 @@
"name": "domain-driven-design",
"source": "./plugins/domain-driven-design",
"category": "design",
"defaultEnabled": false,
"tags": ["ddd", "domain-driven-design", "ubiquitous-language", "glossary", "domain-modeling", "skill"]
},
{
Expand Down Expand Up @@ -425,6 +445,7 @@
"name": "performance",
"source": "./plugins/performance",
"category": "verification",
"defaultEnabled": false,
"tags": ["performance", "benchmarking", "baseline", "measurement", "optimization", "noise-characterization", "drift-immune-counter", "interleaved-ab", "skill"]
},
{
Expand All @@ -445,24 +466,28 @@
"name": "codebase-health",
"source": "./plugins/codebase-health",
"category": "quality",
"defaultEnabled": false,
"tags": ["audit", "drift", "documentation", "configuration", "architecture", "verification", "claims", "skill"]
},
{
"name": "code-metrics",
"source": "./plugins/code-metrics",
"category": "quality",
"defaultEnabled": false,
"tags": ["code-metrics", "complexity", "cyclomatic", "cognitive-complexity", "halstead", "duplication", "coverage", "crap", "type-coverage", "lines-of-code", "measurement", "audit", "skill"]
},
{
"name": "discipline",
"source": "./plugins/discipline",
"category": "quality",
"defaultEnabled": false,
"tags": ["re-anchor", "discipline", "corrector", "research", "standards", "duplication", "incumbency", "terseness", "upstream", "conformance", "selection", "communication", "determinism", "consistency", "skills", "audit", "skill"]
},
{
"name": "education",
"source": "./plugins/education",
"category": "learning",
"defaultEnabled": false,
"tags": ["teach", "learn", "learning", "coach", "tutor", "pedagogy", "primer", "explain", "eli5", "onboarding", "quiz", "comprehension", "skill"]
},
{
Expand All @@ -475,24 +500,28 @@
"name": "repo-fleet-hygiene",
"source": "./plugins/repo-fleet-hygiene",
"category": "maintenance",
"defaultEnabled": false,
"tags": ["maintenance", "git", "github", "repository", "fleet", "hygiene", "worktree", "audit", "skill"]
},
{
"name": "disk-hygiene",
"source": "./plugins/disk-hygiene",
"category": "maintenance",
"defaultEnabled": false,
"tags": ["maintenance", "disk", "hygiene", "cleanup", "artifacts", "temporary-files", "audit", "skill"]
},
{
"name": "event-storming",
"source": "./plugins/event-storming",
"category": "design",
"defaultEnabled": false,
"tags": ["event-storming", "ddd", "domain-modeling", "bounded-contexts", "miro", "facilitation", "simulation", "skill"]
},
{
"name": "skill-quality",
"source": "./plugins/skill-quality",
"category": "claude-code",
"defaultEnabled": false,
"tags": ["skill", "authoring", "quality", "contract", "lint", "evals", "audit"],
"relevance": {
"topic": "skill authoring",
Expand All @@ -505,6 +534,7 @@
"name": "machine-health",
"source": "./plugins/machine-health",
"category": "operations",
"defaultEnabled": false,
"tags": ["machine-health", "workstation", "health", "audit", "monitoring", "windows", "powershell", "cisa-kev", "skill"]
},
{
Expand All @@ -518,6 +548,7 @@
"name": "ai-slop",
"source": "./plugins/ai-slop",
"category": "quality",
"defaultEnabled": false,
Comment thread
kyle-sexton marked this conversation as resolved.
"tags": ["ai-slop", "ai-writing", "slop", "unslop", "em-dash", "emoji", "detector", "prose", "audit", "skill"]
},
{
Expand Down Expand Up @@ -545,26 +576,29 @@
"name": "autonomy",
"source": "./plugins/autonomy",
"category": "autonomy",
"defaultEnabled": false,
"tags": ["autonomy", "adoption", "governance", "topology", "binding", "guided-setup"]
},
{
"name": "adhd",
"source": "./plugins/adhd",
"category": "personal",
"defaultEnabled": false,
"tags": ["adhd", "output", "accessibility", "action-first", "focus", "response-style", "brevity", "skill"]
},
{
"name": "github",
"source": "./plugins/github",
"category": "operations",
"defaultEnabled": false,
"tags": ["github", "audit", "advise", "governance", "org-admin", "billing", "security-posture", "rulesets", "actions-policy", "drift", "skill"]
},
{
"name": "x",
"source": "./plugins/x",
"category": "discovery",
"tags": ["x", "twitter", "markdown", "social", "content-extraction", "skill"],
"defaultEnabled": true,
"defaultEnabled": false,
"relevance": {
"topic": "X (Twitter) content",
"signals": {
Expand All @@ -576,12 +610,14 @@
"name": "wizard",
"source": "./plugins/wizard",
"category": "development",
"defaultEnabled": false,
"tags": ["wizard", "setup", "provisioning", "credentials", "ci-secrets", "migration", "cutover", "bash", "skill"]
},
{
"name": "mutation-testing",
"source": "./plugins/mutation-testing",
"category": "testing",
"defaultEnabled": false,
"tags": [
"mutation-testing",
"test-quality",
Expand All @@ -597,6 +633,7 @@
"name": "computer-use",
"source": "./plugins/computer-use",
"category": "claude-code",
"defaultEnabled": false,
"tags": [
"computer-use",
"desktop-automation",
Expand All @@ -611,6 +648,7 @@
"name": "fleet",
"source": "./plugins/fleet",
"category": "claude-code",
"defaultEnabled": false,
"tags": [
"fleet",
"cross-machine",
Expand All @@ -625,6 +663,7 @@
"name": "overengineering",
"source": "./plugins/overengineering",
"category": "quality",
"defaultEnabled": false,
"tags": [
"overengineering",
"enforcement-surface",
Expand All @@ -644,6 +683,7 @@
"name": "improvement",
"source": "./plugins/improvement",
"category": "quality",
"defaultEnabled": false,
"tags": [
"improvement",
"evidence",
Expand All @@ -659,6 +699,7 @@
"name": "instruction-placement",
"source": "./plugins/instruction-placement",
"category": "claude-code",
"defaultEnabled": false,
"tags": [
"instruction-placement",
"claude-md",
Expand All @@ -676,6 +717,7 @@
"name": "attribution",
"source": "./plugins/attribution",
"category": "quality",
"defaultEnabled": false,
"tags": [
"provenance",
"citation",
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,10 @@ ignored if the locally registered marketplace came from a different source. That
unrelated catalog from registering under an allowlisted name to get its plugins suggested.
Reference: [Recommend plugins for your org](https://code.claude.com/docs/en/plugin-relevance).

A few personal or external-service plugins install disabled (`defaultEnabled: false`) until the
user opts in with `/plugin enable`; an existing install is never flipped by catalog changes.
Plugins outside the everyday development loop (domain, personal, harness-maintenance, and
external-service plugins) install disabled (`defaultEnabled: false` in the catalog entry) until
the user opts in with `/plugin enable`. A plugin another enabled plugin depends on starts enabled
regardless, and an existing install keeps its setting when the catalog default changes.

## Finding your way

Expand Down
2 changes: 1 addition & 1 deletion plugins/planning/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "planning",
"version": "0.62.0",
"version": "0.62.1",
"userConfig": {
"surface": {
"type": "string",
Expand Down
6 changes: 6 additions & 0 deletions plugins/planning/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
All notable changes to the `planning` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.62.1] - 2026-10-02

### Changed

- Cross-plugin routing says "if enabled" where it said "if installed": an installed but disabled plugin exposes no skills, and most of the optional plugins this one routes to (`architecture`, `prototype`, `domain-driven-design`, `discipline`) now install disabled.

## [0.62.0] - 2026-10-02

### Added
Expand Down
2 changes: 1 addition & 1 deletion plugins/planning/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ themselves. Every skill also works standalone.
review checklists, domain-vocabulary files, and commit policy come from your own
project's `CLAUDE.md` and rules; where none exist, the skills apply standard
engineering defaults.
- **Graceful degrade.** Adjacent capabilities are invoked when installed:
- **Graceful degrade.** Adjacent capabilities are invoked when enabled:
codebase exploration and external research (`discovery`), test-design guidance
(`tdd`), prototyping (`prototype`), decision recording (`architecture`), and
session handoff (`session-flow`).
Expand Down
2 changes: 1 addition & 1 deletion plugins/planning/skills/audit-answers/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Everything else enters the provisional set as an accepted answer for validation.

### Step 2. Dispatch fresh-context validators

Dispatch **1–3 fresh-context (non-fork) adversarial validator subagents**, **each reviewing the whole answer set**. The count scales independent redundancy (more validators = more independent cross-checks on *every* answer), never a sharding of the work. Every validator sees every answer, so the Step 4 merge can require agreement across all of them; splitting coverage would make "confirmed by all" indistinguishable from "unseen by some" and is not done. A fork inherits this session's reasoning and would carry its bias forward, so a validator MUST be a fresh-context (non-fork) subagent that never saw the interview happen. This is the self-grade fresh-eyes rule the marketplace mandates for any step that judges its own context's work. Where the verdict is high-stakes and correlated blind spots are the risk, prefer a cross-vendor advisor for a validator **when one is installed and set up**. E.g. the OpenAI Codex plugin, when its documented surface can take this artifact, invoked per its own docs. With the fresh-context same-vendor subagent as the stated fallback, never a route to a command that may not resolve (per `docs/plugin-philosophy.md` "Fresh-eyes checkpoints" in the marketplace repository).
Dispatch **1–3 fresh-context (non-fork) adversarial validator subagents**, **each reviewing the whole answer set**. The count scales independent redundancy (more validators = more independent cross-checks on *every* answer), never a sharding of the work. Every validator sees every answer, so the Step 4 merge can require agreement across all of them; splitting coverage would make "confirmed by all" indistinguishable from "unseen by some" and is not done. A fork inherits this session's reasoning and would carry its bias forward, so a validator MUST be a fresh-context (non-fork) subagent that never saw the interview happen. This is the self-grade fresh-eyes rule the marketplace mandates for any step that judges its own context's work. Where the verdict is high-stakes and correlated blind spots are the risk, prefer a cross-vendor advisor for a validator **when one is enabled and set up**. E.g. the OpenAI Codex plugin, when its documented surface can take this artifact, invoked per its own docs. With the fresh-context same-vendor subagent as the stated fallback, never a route to a command that may not resolve (per `docs/plugin-philosophy.md` "Fresh-eyes checkpoints" in the marketplace repository).

Each validator receives the whole provisional answer set and the interview's persisted context (Brief or general summary), **with the recommendation's persuasive rationale WITHHELD**. It audits the decision, not the story that sold it. Hand it *what* was decided, never *why the orchestrator liked it*: a validator handed the pitch inherits the pitch's blind spot.

Expand Down
Loading
Loading