Releases: charlesjones-dev/claude-code-plugins-dev
v2.4.1 — ai-geo llms.txt discoverability signals
ai-geo v1.0.0 → v1.1.0
Extends all three ai-geo skills with the stackable weak-signal stack for llms.txt discovery beyond serving /llms.txt at root.
🧪 No major LLM provider (OpenAI, Anthropic, Perplexity, Google) has publicly committed to reading
llms.txtas a first-class signal. Discovery today depends on multiple weak signals stacked together.
Changed
/geo-audit
- Category 1 (llms.txt Protocol Compliance) gains four discoverability-signal checks:
<head><link rel="alternate" type="text/markdown" title="llms.txt" href="/llms.txt">— Medium if missingsitemap.xml<url><loc>/llms.txt</loc></url>entry — Medium if missingrobots.txt# LLM index: https://<domain>/llms.txtcomment — Low / informational- Public directory submission (llmstxt.site, directory.llmstxt.cloud) — Low / manual; never auto-detected, never Critical/High
- Report template gains "On llms.txt discovery" subsection documenting the weak-signal landscape and 🧪 experimental marker.
/geo-fix
- Safe-auto bucket gains three new fixes:
<link rel="alternate">in<head>via framework-idiomatic head API (Next.js Metadata APIalternates.types, NuxtuseHead, Vue +@unhead/vue, Astro layout, SvelteKit<svelte:head>, Remixmetaexport, vanilla<head>) — skip if already present/llms.txtentry in sitemap (Next.jsapp/sitemap.tspush, static<url>block withchangefreq=monthly+priority=0.5,@nuxtjs/sitemap,@astrojs/sitemapcustomPages) — skip if already present# LLM index: https://<domain>/llms.txtcomment inrobots.txtwith auto-derived domain (prompts if unresolvable) — skip if already present
- New informational bucket prints directory-submission URLs as a manual next step (web forms, never automated).
- Terminal summary gains "llms.txt discovery signals" block with per-signal status + build-order warning.
- Build-order rule: when both
llms.txtand sitemap are build-time generated, llms.txt generator MUST run first so the sitemap can read llms.txt's mtime. Warn with suggested reordering rather than silent reshuffle.
/geo-llms-txt
- New Step 7.5 — Wire Discoverability Signals (post-write) offers to add the head
link[rel=alternate]hint, sitemap/llms.txtentry, androbots.txtcomment after writingllms.txt, each skipped if already present. - New Build pipeline — order dependency subsection under Step 6 documents per-framework rules: Next.js Metadata API (no order issue), Astro endpoint vs static, Nuxt prebuild hook, Vite/SvelteKit/Remix/TanStack Start warn-don't-reshuffle.
- Terminal summary gains discoverability-signal statuses + manual directory-submission URLs.
- Quality Assurance Checklist extended with post-write wiring + build-order + directory-submission items.
llms-full.txtlogic unchanged.
Preserved
LLM Knowledge Gap Corrections, examples, and existing QA checklist items across all three skills.
Marketplace
- ai-geo:
1.0.0→1.1.0 - marketplace:
2.4.0→2.4.1
Full changelog: v2.4.0...v2.4.1
v2.4.0 — ai-seo and ai-geo plugins
What's new
Two new plugins for web-content optimization across both traditional search engines and AI answer engines.
🆕 ai-seo v1.0.0
Modern SEO auditing and remediation that catches deprecated patterns LLMs still generate (keywords meta tags, X-UA-Compatible, IE conditionals, float layouts, XHTML doctype, FID optimization) and enforces current best practices (JSON-LD, Core Web Vitals with INP, semantic HTML, framework-idiomatic meta APIs).
Skills:
/seo-audit— 9-category weighted audit with timestamped reports in/docs/seo-audit//seo-fix— tiered safe-auto / content-requiring / refactor remediation with--dry-run/seo-schema— JSON-LD generator and validator for 15+ schema types
Framework support: Next.js (App + Pages Router), Nuxt, TanStack Start, Astro, SvelteKit, Remix, vanilla HTML. Context7 MCP integration with explicit training-data fallback.
🆕 ai-geo v1.0.0
Generative Engine Optimization (GEO) — the AI-engine counterpart to SEO. Optimizes web content for citation in ChatGPT, Perplexity, Claude, Gemini, Google AI Overviews, and Bing Copilot.
Skills:
/geo-audit— 10-category weighted audit (llms.txt protocol, AI crawler access, content structure, citation-worthiness, AI-friendly structured data, semantic chunking, content freshness, entity optimization, conversational alignment, technical AI accessibility)/geo-fix— safe-auto / intent-requiring / content-requiring / refactor remediation with separate prompts for training-bot vs citation-bot policy/geo-llms-txt— generate, update, or validatellms.txtandllms-full.txtper the llmstxt.org spec
Key distinctions from SEO:
- Distinguishes training crawlers (GPTBot, ClaudeBot, Google-Extended, CCBot, Applebot-Extended, Bytespider, Amazonbot, FacebookBot, Omgilibot) from answer/citation crawlers (ChatGPT-User, OAI-SearchBot, PerplexityBot, Perplexity-User, Claude-Web) — never recommends blanket blocking
- Emerging best practices marked with 🧪 so users apply judgment
- Cross-references
/seo-auditfor overlap areas (structured data, semantic HTML, authoritativeness)
Framework-aware llms.txt placement for Next.js, Nuxt, TanStack Start, Astro, SvelteKit, Remix, and vanilla HTML.
Install
/plugin marketplace add charlesjones-dev/claude-code-plugins-dev
/plugin install ai-seo@claude-code-plugins-dev
/plugin install ai-geo@claude-code-plugins-dev
Full changelog
See CHANGELOG.md for the full v2.4.0 entry.
Full diff: v2.3.4...v2.4.0
v2.3.4 — Structured Dynamic Context Loading
AI-Knowledge Plugin v1.4.0
The Problem
The "When to Load" column in CLAUDE.md — the only mechanism Claude uses to decide which KB files to read — contained vague free-text like "When working in packages/api/" instead of structured, matchable criteria. Meanwhile, the actual scope patterns and tags were locked inside each KB file's frontmatter, invisible until loaded.
The Fix
Structured "When to Load" format — All KB commands now generate loading criteria with scope globs + topic keywords:
`src/api/**`, `*.controller.ts` — api, rest, middleware
Improved CLAUDE.md preamble — Explicit 4-point matching instructions telling Claude how to use scope patterns, keywords, and the pinned _index.md for routing.
Loading notifications — Claude now tells users when it loads a KB file: 📖 Loading KB: api-conventions.md
New Commands
-
/kb-upgrade— Comprehensive KB upgrade (replaces/kb-obsidian). Audits and fixes: Related body links, global learnings migration, "When to Load" format, preamble, _index.md schema, scope suggestions, frontmatter health, folder organization. Re-runnable and idempotent. -
/kb-load— Manually load KB articles mid-conversation by filename, topic, or tag filter. Interactive picker when no argument given. Followsrelatedcross-references one level deep.
Changes
scopefrontmatter field now supports arrays:scope: ["src/api/**", "*.controller.ts"]_index.mdAll Pages table includes a Scope column/kb-organizenow refreshes "When to Load" values during reorganization- All 10 table-writing skills updated with structured format instructions
Removed
/kb-obsidian— All functionality absorbed into/kb-upgrade
Upgrade Existing KBs
Run /kb-upgrade in any project with an existing knowledge base to bring it up to the latest practices.
v2.3.3 - AI-Knowledge v1.3.0 - Obsidian Compatibility, Query & Organize
AI-Knowledge Plugin (v1.3.0) — Obsidian Compatibility, Query & Organize
New Skills
/kb-query— Query the knowledge base and synthesize answers from multiple KB files. Optionally file answers back as new KB articles so explorations compound into the knowledge base. Inspired by Karpathy's LLM Wiki pattern./kb-obsidian— One-time migration to upgrade an existing KB for Obsidian compatibility. Adds## Relatedbody sections with[[wiki-links]]for graph view, migrates inline global learnings, generates_index.mdand_log.md, and offers to reorganize flat files into category folders./kb-organize— Standalone folder reorganization for existing flat KB structures. Suggests category folders (architecture/, conventions/, testing/, etc.) based on tags and content with preview-first safety.
New Infrastructure Files
_index.md— Auto-generated, pinned catalog of all KB articles organized by category with one-line summaries. The LLM reads this first to find relevant pages before drilling into individual articles._log.md— Append-only chronological record of KB operations (ingests, queries, prunes, etc.) for tracking how the knowledge base evolves.
Changes to All Existing Skills
- Obsidian-compatible Related Links — All
/kb-*commands now maintain a## Relatedsection at the end of KB files with[[wiki-links]]for Obsidian graph view and link navigation. - Global Learnings as dedicated KB file — Stored in
docs/kb/_global-learnings.mdinstead of inline in CLAUDE.md. - Subfolder organization — New KB files are preferentially placed in category subfolders.
- Index & log maintenance — All KB-writing commands conditionally update
_index.mdand_log.md(backwards-compatible with older KBs). - Cross-reference cleanup includes body links —
/kb-removeand/kb-pruneupdate both frontmatter and body## Relatedsections.
Backwards Compatibility
All changes are fully backwards-compatible. Existing flat KB structures continue to work. _index.md and _log.md updates are conditional (only if the files exist). Run /kb-obsidian to upgrade an existing KB to the latest structure.
Full Changelog: v2.3.2...v2.3.3
v2.3.2 — /kb-harvest and /kb-discover skills
AI-Knowledge Plugin (v1.2.0)
New Skills
/kb-harvest — Harvest knowledge from external sources
Ingest documentation from sibling git repos, local directories, individual files, or web URLs into your centralized knowledge base.
- Scan sibling repos:
C:/Source/*/docs/**/*.md - Fetch and distill web pages (wikis, Confluence, internal docs)
- Auto-tag with
module:{name}based on source directory structure - Track provenance via
sourcefrontmatter field for future re-harvesting - Discovery report with batch selection (pre-checked/unchecked sources)
- Per-article content preview and approval before writing
- Detects topic overlap with existing KB files and proposes appending
/kb-discover — Extract implicit knowledge from source code
Analyze source code to discover architecture patterns, naming conventions, API contracts, and unwritten rules — then distill them into KB articles.
- Targeted analysis (specific directories), focus areas (topics), or full codebase scan
- Auto-detects tech stack and prioritizes analysis targets
- Extracts 8 knowledge categories: architecture, naming, API contracts, data models, error handling, config, testing, cross-cutting conventions
- Groups findings into coherent KB articles (not raw category dumps)
- Per-article draft preview and approval before writing
- Evidence-based only — requires observed repetition across files
- Right-sizes articles to 50–150 lines for context-friendly loading
- Tracks provenance via
discovered-fromfrontmatter field
Full Changelog: v2.3.1...v2.3.2
v2.3.1
AI-Knowledge Plugin (v1.1.0)
Added
/kb-ingest- Ingest specific markdown files from anywhere in the project into the KB, as a targeted alternative to/kb-absorb- Accepts one or more file paths (e.g.,
/kb-ingest docs/api-guide.md) - Distills content into concise, actionable KB format with proper frontmatter
- Detects overlap with existing KB files and proposes appending instead of creating duplicates
- Registers new KB entries in the CLAUDE.md Knowledge Base table
- Preserves source files (never modifies or deletes originals)
- Accepts one or more file paths (e.g.,
Fixed
- Fixed pinned file loading instruction in kb-init - The CLAUDE.md template previously told Claude to check frontmatter of every KB file to find pinned entries, defeating the purpose of the dynamic loading table. Now correctly directs Claude to use the "When to Load" column ("Always (pinned)") as the source of truth
v2.3.0 - AI Knowledge Plugin
New Plugin: AI Knowledge (v1.0.0)
Knowledge base management for Claude Code — capture conversation learnings, maintain topic-specific KB files, and dynamically reference institutional knowledge in CLAUDE.md.
10 New Skills
| Command | Description |
|---|---|
/kb-init |
Initialize the KB section in CLAUDE.md and create docs/kb/ directory (idempotent) |
/kb-learn |
Analyze conversation to extract learnings into KB files |
/kb-add |
Quickly add a learning or rule with interactive location picker |
/kb-import |
Register existing KB files in CLAUDE.md (adds missing frontmatter) |
/kb-absorb |
Migrate existing CLAUDE.md sections and docs/ content into the KB |
/kb-remove |
Remove a KB file and its CLAUDE.md reference |
/kb-list |
List all registered KB files with status, tags, dates, and cross-references |
/kb-search |
Search across KB files by keyword, topic, or tag (tag:security) |
/kb-prune |
Interactive cleanup: stale refs, duplicates, merges, frontmatter health |
/kb-auto |
Toggle automatic knowledge capture at end of conversations |
Key Features
- YAML Frontmatter on all KB files with
tags,related,created,last-updated,pinned, andscopefields - Cross-references between KB files via
related: [[other-file]]for linked knowledge loading - Pinned KB files (
pinned: true) are always loaded regardless of work context - Tag-based search for cross-cutting discovery across topics
- Security-aware — never stores secrets, API keys, or credentials in KB files
- Token-conscious — concise entries optimized for minimal context window usage
Install
/plugin marketplace add charlesjones-dev/claude-code-plugins-dev
/plugin install ai-knowledge@claude-code-plugins-devv2.2.2
v2.2.1
Fixed
AI-Statusline Plugin (v1.2.3)
- Fixed rate limit percentage display - Rate limit percentages now round to 2 decimal places instead of showing long floating-point numbers (e.g.,
5h:12.35%instead of5h:12.345678%)- Bash: uses jq
(. * 100 | round) / 100for rounding, extracts integer part for color threshold comparisons - PowerShell: uses
[math]::Round($val, 2)instead of[int]cast which truncated to whole numbers
- Bash: uses jq
v2.2.0 - Supply Chain Security Hardening
What's New
AI-Security Plugin (v1.5.0)
New skill: /security-supply-chain - Harden your project against npm supply chain attacks.
- Detects package manager (pnpm, npm, Yarn, Bun) and validates compatibility
- Configures pnpm's
minimum-release-agein.npmrcto quarantine newly published packages - Interactive timeframe selection with previews (24 hours, 3 days, 7 days, or custom)
- Scans CI/CD configs for frozen lockfile usage and offers to add
frozen-lockfile=true - Checks pnpm version and offers upgrade if below 10.16.0 minimum
- Recommends pnpm migration for npm/Yarn/Bun users who lack quarantine protection
- Creates two defense layers: time-based quarantine (local dev) + frozen lockfile (CI/CD)
Background
Motivated by the axios@1.14.1 / axios@0.30.4 supply chain compromise on March 31, 2026, where malicious versions injected a remote access trojan via the plain-crypto-js dependency.
Learn more: Stop Supply Chain Attacks: Why Your Build Pipeline Should Use Locked Dependencies
Full Changelog: v2.1.0...v2.2.0