skills/README.md
A structured repository of best practices for building agents and agentic applications with Plano — the AI-native proxy and dataplane. Optimized for coding agents and LLMs.
Skills are principle-based guides that help coding agents (Claude Code, Cursor, Copilot, etc.) make better decisions when working with Plano. They cover configuration patterns, routing strategies, agent orchestration, observability, and CLI workflows — acting as operating principles, not documentation replacements.
# Install via npx skills
npx skills add katanemo/plano
This skills collection is published from the skills/ directory in the katanemo/plano monorepo.
Install a specific skill:
npx skills add katanemo/plano --skill plano-routing-model-selection
List available skills before install:
npx skills add katanemo/plano --list
After installation, these skills are available to your coding agent and can be invoked with normal language. You do not need special syntax unless your tooling requires it.
config.yaml and fix issues."config.yaml for production."plano-agent-skills - Umbrella skill covering all Plano areasplano-config-fundamentals - Config versioning, listeners, providers, secretsplano-routing-model-selection - Defaults, aliases, passthrough auth, preferencesplano-agent-orchestration - Agent registration and routing descriptionsplano-filter-guardrails - MCP filters, guardrail messaging, filter orderingplano-observability-debugging - Tracing setup, span attributes, trace analysisplano-cli-operations - planoai up, cli_agent, init, prompt target generationplano-deployment-security - Docker networking, health checks, state storageplano-advanced-patterns - Multi-listener architecture and prompt target schema design# From repo root
npx skills add ./skills --list
npx skills add ./skills --skill plano-agent-skills -y
npx skills list
skills/
├── rules/ # Individual rule files (one per rule)
│ ├── _sections.md # Section metadata and prefix definitions
│ ├── _template.md # Template for creating new rules
│ ├── config-*.md # Section 1: Configuration Fundamentals
│ ├── routing-*.md # Section 2: Routing & Model Selection
│ ├── agent-*.md # Section 3: Agent Orchestration
│ ├── filter-*.md # Section 4: Filter Chains & Guardrails
│ ├── observe-*.md # Section 5: Observability & Debugging
│ ├── cli-*.md # Section 6: CLI Operations
│ ├── deploy-*.md # Section 7: Deployment & Security
│ └── advanced-*.md # Section 8: Advanced Patterns
├── src/
│ ├── build.ts # Compiles rules/ into AGENTS.md
│ ├── validate.ts # Validates rule files
│ └── extract-tests.ts # Extracts test cases for LLM evaluation
├── metadata.json # Document metadata
├── AGENTS.md # Compiled output (generated — do not edit directly)
├── test-cases.json # Test cases for LLM evaluation (generated)
└── package.json
| # | Prefix | Section | Rules |
|---|---|---|---|
| 1 | config- | Configuration Fundamentals | Version, listeners, providers, secrets, timeouts |
| 2 | routing- | Routing & Model Selection | Preferences, aliases, defaults, passthrough |
| 3 | agent- | Agent Orchestration | Descriptions, agent registration |
| 4 | filter- | Filter Chains & Guardrails | Ordering, MCP integration, guardrails |
| 5 | observe- | Observability & Debugging | Tracing, trace inspection, span attributes |
| 6 | cli- | CLI Operations | Startup, CLI agent, init, code generation |
| 7 | deploy- | Deployment & Security | Docker networking, state storage, health checks |
| 8 | advanced- | Advanced Patterns | Prompt targets, rate limits, multi-listener |
# Install dependencies
npm install
# Validate all rule files
npm run validate
# Build AGENTS.md from rules
npm run build
# Extract test cases for LLM evaluation
npm run extract-tests
# Run all of the above
npm run dev
Copy rules/_template.md to rules/<prefix>-<description>.md
Choose the correct prefix for your section:
config- — Configuration Fundamentalsrouting- — Routing & Model Selectionagent- — Agent Orchestrationfilter- — Filter Chains & Guardrailsobserve- — Observability & Debuggingcli- — CLI Operationsdeploy- — Deployment & Securityadvanced- — Advanced PatternsFill in the frontmatter:
---
title: Clear, Actionable Rule Title
impact: HIGH
impactDescription: One-line description of why this matters
tags: config, routing, relevant-tags
---
Write the rule body with:
Run npm run dev to validate and regenerate
---
title: Rule Title Here
impact: CRITICAL
impactDescription: One sentence on the impact
tags: tag1, tag2, tag3
---
## Rule Title Here
Brief explanation of the rule and why it matters for Plano developers.
**Incorrect (describe what's wrong):**
```yaml
# Bad example
Correct (describe what's right):
# Good example with comments explaining the decisions
Optional explanatory text, lists, or tables.
Reference: https://github.com/katanemo/archgw
| Level | Description |
|---|---|
CRITICAL | Causes startup failures or silent misbehavior — always fix |
HIGH | Significantly degrades routing accuracy, security, or reliability |
MEDIUM-HIGH | Important for production deployments |
MEDIUM | Best practice for maintainability and developer experience |
LOW-MEDIUM | Incremental improvements |
LOW | Nice to have |
version: v0.3.0 — config is rejected without ithost.docker.internal for agent/filter URLs — localhost doesn't work inside Dockerdefault: true provider — unmatched requests need a fallback$VAR_NAME for all secrets — never hardcode API keys in config.yaml--with-tracing — traces are the primary debugging tool| Command | Description |
|---|---|
npm run build | Compile rules/ into AGENTS.md |
npm run validate | Validate all rule files for required fields and structure |
npm run extract-tests | Generate test-cases.json for LLM evaluation |
npm run dev | Validate + build + extract tests |
Rules are automatically sorted alphabetically by title within each section — no need to manage numbers. IDs (1.1, 1.2, etc.) are assigned during build.
When adding rules:
_template.md structurenpm run dev to validate and regenerateApache-2.0 — see LICENSE