{"owner":"katanemo","repo":"plano","hasSkills":true,"totalSkillsCount":59,"totalTokensCount":16889,"categories":["anthropic-skill","claude-rule","root-instruction"],"hasMcp":true,"mcpConfig":{"mcpServers":{"plano":{"command":"npx","args":["-y","@modelcontextprotocol/server-plano"]}}},"found":["skills/plano-agent-orchestration/SKILL.md","skills/plano-agent-skills/SKILL.md","skills/plano-advanced-patterns/SKILL.md","skills/plano-config-fundamentals/SKILL.md","skills/plano-cli-operations/SKILL.md","skills/plano-deployment-security/SKILL.md","skills/plano-observability-debugging/SKILL.md","skills/plano-routing-model-selection/SKILL.md",".claude/skills/test-python/SKILL.md","skills/plano-filter-guardrails/SKILL.md",".claude/skills/release/SKILL.md",".claude/skills/pr/SKILL.md",".claude/skills/new-provider/SKILL.md",".claude/skills/check/SKILL.md",".claude/skills/build-wasm/SKILL.md",".claude/skills/build-cli/SKILL.md",".claude/skills/build-brightstaff/SKILL.md","CLAUDE.md","skills/AGENTS.md","skills/metadata.json","skills/package.json","skills/package-lock.json","skills/README.md","skills/test-cases.json","skills/tsconfig.json","packages/ui/package.json","packages/ui/tsconfig.json","packages/tsconfig/base.json","packages/tsconfig/nextjs.json","packages/tsconfig/package.json","packages/tailwind-config/package.json","packages/shared-styles/package.json","skills/rules/_sections.md","skills/rules/_template.md","skills/rules/advanced-multi-listener.md","skills/rules/advanced-prompt-targets.md","skills/rules/agent-descriptions.md","skills/rules/agent-orchestration.md","skills/rules/cli-agent.md","skills/rules/cli-init.md","skills/rules/cli-startup.md","skills/rules/config-listeners.md","skills/rules/config-providers.md","skills/rules/config-secrets.md","skills/rules/config-version.md","skills/rules/deploy-docker.md","skills/rules/deploy-health.md","skills/rules/deploy-state.md","skills/rules/filter-guardrails.md","skills/rules/filter-mcp.md","skills/rules/filter-ordering.md","skills/rules/observe-span-attributes.md","skills/rules/observe-trace-query.md","skills/rules/observe-tracing.md","skills/rules/routing-aliases.md","skills/rules/routing-default.md","skills/rules/routing-passthrough.md","skills/rules/routing-preferences.md","docs/source/resources/includes/agents/agents_config.yaml"],"skills":{"skills/plano-agent-orchestration/SKILL.md":"---\nname: plano-agent-orchestration\ndescription: Improve multi-agent orchestration in Plano. Use for agent registration, agent listener wiring, and capability-focused agent descriptions for accurate routing.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Orchestration\n\nUse this skill for agent listener quality, sub-agent registration, and route accuracy.\n\n## When To Use\n\n- \"Fix multi-agent routing\"\n- \"Validate agents vs listeners.agents config\"\n- \"Improve agent descriptions\"\n- \"Set up a reliable orchestrator\"\n\n## Apply These Rules\n\n- `agent-orchestration`\n- `agent-descriptions`\n\n## Execution Checklist\n\n1. Verify each agent exists in both `agents` and `listeners[].agents`.\n2. Ensure one fallback/default agent where appropriate.\n3. Rewrite descriptions to be capability-focused and non-overlapping.\n4. Keep descriptions specific, concise, and example-driven.\n5. Provide test prompts to validate routing outcomes.\n","skills/plano-agent-skills/SKILL.md":"---\nname: plano-agent-skills\ndescription: Best practices for building agents and agentic applications with Plano, including configuration, routing, orchestration, guardrails, observability, and deployment.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Skills\n\nComprehensive Plano guidance for coding agents. Use this umbrella skill when a task spans multiple areas (config, routing, orchestration, filters, observability, CLI, deployment).\n\n## When To Use\n\n- Validating or fixing Plano `config.yaml`\n- Designing listener architecture (`model`, `prompt`, `agent`)\n- Improving model/provider routing quality and fallback behavior\n- Hardening filter chains and prompt guardrails\n- Debugging routing with traces and CLI workflows\n- Preparing deployment and production readiness checks\n\n## How To Use\n\n1. Classify the request by scope (single section vs. cross-cutting).\n2. For focused work, prefer a section-specific skill (for example `plano-routing-model-selection`).\n3. For broad work, apply this umbrella skill and reference section rules from `skills/AGENTS.md`.\n4. Produce concrete edits first, then concise reasoning and validation steps.\n\n## Operating Workflow\n\n1. Identify the task area first: config, routing, orchestration, filters, observability, CLI, or deployment.\n2. Apply the smallest correct change that satisfies the requested behavior.\n3. Preserve security and reliability defaults:\n   - `version: v0.3.0`\n   - exactly one `default: true` model provider\n   - secrets via `$ENV_VAR` substitution only\n   - `host.docker.internal` for host services from inside Docker\n   - guardrails before enrichment in filter chains\n4. For debugging, prioritize traces over guesswork (`planoai up --with-tracing`, `planoai trace`).\n5. Return concrete diffs and a short validation checklist.\n\n## Response Style\n\n- Prefer actionable edits over generic advice.\n- Be explicit about why a config choice is correct.\n- Call out risky patterns (hardcoded secrets, missing default provider, bad filter ordering).\n- Keep examples minimal and production-viable.\n\n## References\n\n- Repo: https://github.com/katanemo/plano\n- Full rulebook: `skills/AGENTS.md`\n","skills/plano-advanced-patterns/SKILL.md":"---\nname: plano-advanced-patterns\ndescription: Design advanced Plano architectures. Use for multi-listener systems, prompt target schema quality, and layered orchestration patterns.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Advanced Patterns\n\nUse this skill for higher-order architecture decisions once fundamentals are stable.\n\n## When To Use\n\n- \"Design a multi-listener Plano architecture\"\n- \"Improve prompt target schema precision\"\n- \"Combine model, prompt, and agent listeners\"\n- \"Refine advanced routing/function-calling behavior\"\n\n## Apply These Rules\n\n- `advanced-multi-listener`\n- `advanced-prompt-targets`\n\n## Execution Checklist\n\n1. Use multiple listeners only when interfaces are truly distinct.\n2. Keep provider/routing definitions shared and consistent.\n3. Define prompt target parameters with strict, explicit schemas.\n4. Minimize ambiguity that causes malformed tool calls.\n5. Provide migration-safe recommendations and test scenarios.\n","skills/plano-config-fundamentals/SKILL.md":"---\nname: plano-config-fundamentals\ndescription: Validate and fix Plano config fundamentals. Use for config versioning, listener types, provider registration, secrets handling, and startup validation failures.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Configuration Fundamentals\n\nUse this skill for foundational `config.yaml` correctness.\n\n## When To Use\n\n- \"Validate this Plano config\"\n- \"Fix startup config errors\"\n- \"Check listeners/providers/secrets\"\n- \"Why does `planoai up` fail schema validation?\"\n\n## Apply These Rules\n\n- `config-version`\n- `config-listeners`\n- `config-providers`\n- `config-secrets`\n\n## Execution Checklist\n\n1. Ensure `version: v0.3.0` is present.\n2. Confirm listener type matches intended architecture.\n3. Verify provider names/interfaces and exactly one default provider.\n4. Replace hardcoded secrets with `$ENV_VAR` substitution.\n5. Return minimal patch and a `planoai up` verification plan.\n","skills/plano-cli-operations/SKILL.md":"---\nname: plano-cli-operations\ndescription: Apply Plano CLI best practices. Use for startup troubleshooting, cli_agent workflows, and template-based project bootstrapping.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano CLI Operations\n\nUse this skill when the task is primarily operational and CLI-driven.\n\n## When To Use\n\n- \"Fix `planoai up` failures\"\n- \"Use `planoai cli_agent` with coding agents\"\n- \"Bootstrap a project with `planoai init` templates\"\n\n## Apply These Rules\n\n- `cli-startup`\n- `cli-agent`\n- `cli-init`\n\n## Execution Checklist\n\n1. Follow startup validation order before deep debugging.\n2. Use `cli_agent` to route coding-agent traffic through Plano.\n3. Start from templates for reliable first-time setup.\n4. Provide a compact runbook with exact CLI commands.\n","skills/plano-deployment-security/SKILL.md":"---\nname: plano-deployment-security\ndescription: Apply Plano deployment and production security practices. Use for Docker networking, state storage choices, readiness checks, and environment-based secret handling.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Deployment and Security\n\nUse this skill to harden production deployments and reduce runtime surprises.\n\n## When To Use\n\n- \"Fix unreachable agents in Docker\"\n- \"Configure persistent conversation state\"\n- \"Add readiness and health checks\"\n- \"Prepare production deployment checklist\"\n\n## Apply These Rules\n\n- `deploy-docker`\n- `deploy-state`\n- `deploy-health`\n\n## Execution Checklist\n\n1. Use `host.docker.internal` for host-side services from inside Plano container.\n2. Prefer PostgreSQL state storage for production multi-turn workloads.\n3. Verify `/healthz` before traffic or CI assertions.\n4. Ensure secrets remain environment-based, never hardcoded.\n5. Return deployment checks with failure-mode diagnostics.\n","skills/plano-observability-debugging/SKILL.md":"---\nname: plano-observability-debugging\ndescription: Improve Plano tracing and debugging workflows. Use for sampling strategy, span attributes, and trace query-based root-cause analysis.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Observability and Debugging\n\nUse this skill to make routing and latency behavior inspectable and debuggable.\n\n## When To Use\n\n- \"Enable tracing correctly\"\n- \"Add useful span attributes\"\n- \"Debug why a request routed incorrectly\"\n- \"Inspect filter/model latency from traces\"\n\n## Apply These Rules\n\n- `observe-tracing`\n- `observe-span-attributes`\n- `observe-trace-query`\n\n## Execution Checklist\n\n1. Enable tracing with environment-appropriate sampling.\n2. Add useful static and header-derived span attributes.\n3. Use `planoai trace` filters to isolate route and latency issues.\n4. Prefer trace evidence over assumptions in recommendations.\n5. Return exact commands to reproduce and validate findings.\n","skills/plano-routing-model-selection/SKILL.md":"---\nname: plano-routing-model-selection\ndescription: Optimize Plano model routing and selection. Use for provider defaults, model aliases, passthrough auth, and routing preference quality.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Routing and Model Selection\n\nUse this skill when requests are routed to the wrong model, costs are high, or fallback behavior is unclear.\n\n## When To Use\n\n- \"Improve model routing\"\n- \"Add aliases and defaults\"\n- \"Fix passthrough auth with proxy providers\"\n- \"Tune routing preferences for better classification\"\n\n## Apply These Rules\n\n- `routing-default`\n- `routing-aliases`\n- `routing-passthrough`\n- `routing-preferences`\n\n## Execution Checklist\n\n1. Ensure exactly one `default: true` provider.\n2. Add semantic aliases for stable client contracts.\n3. Configure passthrough auth only where required.\n4. Rewrite vague preference descriptions with concrete task scopes.\n5. Validate routing behavior using trace-based checks.\n",".claude/skills/test-python/SKILL.md":"---\nname: test-python\ndescription: Run Python CLI tests. Use after making changes to cli/ code.\n---\n\n1. `cd cli && uv sync` — ensure dependencies are installed\n2. `cd cli && uv run pytest -v` — run all tests\n\nIf tests fail, diagnose and fix the issues.\n","skills/plano-filter-guardrails/SKILL.md":"---\nname: plano-filter-guardrails\ndescription: Harden Plano filter chains and guardrails. Use for MCP filter setup, prompt guard responses, and safe filter ordering.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Filter Chains and Guardrails\n\nUse this skill when safety controls or filter pipelines need correction.\n\n## When To Use\n\n- \"Fix filter chain ordering\"\n- \"Set up MCP filters correctly\"\n- \"Improve guardrail rejection behavior\"\n- \"Harden request processing for safety\"\n\n## Apply These Rules\n\n- `filter-mcp`\n- `filter-guardrails`\n- `filter-ordering`\n\n## Execution Checklist\n\n1. Configure filter `type`, `transport`, and `tool` explicitly for MCP.\n2. Ensure rejection messages are clear and actionable.\n3. Order chain as guards -> rewriters -> enrichment -> output checks.\n4. Prevent expensive enrichment on unsafe requests.\n5. Verify with representative blocked and allowed test prompts.\n",".claude/skills/release/SKILL.md":"---\nname: release\ndescription: Bump the Plano version across all required files. Use when preparing a release.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nPrepare a release version bump. The user may provide the new version number as $ARGUMENTS (e.g., `/release 0.4.12`), or a bump type (`major`, `minor`, `patch`).\n\nIf no argument is provided, read the current version from `cli/planoai/__init__.py`, auto-increment the patch version (e.g., `0.4.11` → `0.4.12`), and confirm with the user before proceeding.\n\nUpdate the version string in ALL of these files:\n\n- `.github/workflows/ci.yml`\n- `cli/planoai/__init__.py`\n- `cli/planoai/consts.py`\n- `cli/pyproject.toml`\n- `build_filter_image.sh`\n- `config/validate_plano_config.sh`\n- `docs/source/conf.py`\n- `docs/source/get_started/quickstart.rst`\n- `docs/source/resources/deployment.rst`\n- `apps/www/src/components/Hero.tsx`\n- `demos/llm_routing/preference_based_routing/README.md`\n\nDo NOT change version strings in `*.lock` files or `Cargo.lock`.\n\nAfter updating all version strings, run `cd cli && uv lock` to update the lock file with the new version.\n\nAfter making changes, show a summary of all files modified and the old → new version.\n",".claude/skills/pr/SKILL.md":"---\nname: pr\ndescription: Create a feature branch and open a pull request for the current changes.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nCreate a pull request for the current changes:\n\n1. Determine the GitHub username via `gh api user --jq .login`. If the login is `adilhafeez`, use `adil` instead.\n2. Create a feature branch using format `<username>/<feature_name>` — infer the feature name from the changes\n3. Run `cd crates && cargo fmt --all -- --check` and `cd crates && cargo clippy --locked --all-targets --all-features -- -D warnings` to verify Rust code is clean\n4. Commit all changes with a short, concise commit message (one line, no Co-Authored-By)\n5. Push the branch and create a PR targeting `main`\n\nKeep the PR title short (under 70 chars). Include a brief summary in the body. Never include a \"Test plan\" section or any \"Generated with Claude Code\" attribution.\n",".claude/skills/new-provider/SKILL.md":"# new-provider\n\nPath: `.claude/skills/new-provider/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/new-provider/SKILL.md)",".claude/skills/check/SKILL.md":"# check\n\nPath: `.claude/skills/check/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/check/SKILL.md)",".claude/skills/build-wasm/SKILL.md":"# build-wasm\n\nPath: `.claude/skills/build-wasm/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-wasm/SKILL.md)",".claude/skills/build-cli/SKILL.md":"# build-cli\n\nPath: `.claude/skills/build-cli/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-cli/SKILL.md)",".claude/skills/build-brightstaff/SKILL.md":"# build-brightstaff\n\nPath: `.claude/skills/build-brightstaff/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-brightstaff/SKILL.md)","CLAUDE.md":"# Claude Agent Guidelines & System Prompt\n\nPath: `CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/CLAUDE.md)","skills/AGENTS.md":"# skills - AI Agent Protocol & Instructions\n\nPath: `skills/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/AGENTS.md)","skills/metadata.json":"# Skills Skill\n\nPath: `skills/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/metadata.json)","skills/package.json":"# Skills Skill\n\nPath: `skills/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package.json)","skills/package-lock.json":"# Skills Skill\n\nPath: `skills/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package-lock.json)","skills/README.md":"# Skills Skill\n\nPath: `skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/README.md)","skills/test-cases.json":"# Skills Skill\n\nPath: `skills/test-cases.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/test-cases.json)","skills/tsconfig.json":"# Skills Skill\n\nPath: `skills/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/tsconfig.json)","packages/ui/package.json":"# Ui Skill\n\nPath: `packages/ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/package.json)","packages/ui/tsconfig.json":"# Ui Skill\n\nPath: `packages/ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/tsconfig.json)","packages/tsconfig/base.json":"# Tsconfig Skill\n\nPath: `packages/tsconfig/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/base.json)","packages/tsconfig/nextjs.json":"# Tsconfig Skill\n\nPath: `packages/tsconfig/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/nextjs.json)","packages/tsconfig/package.json":"# Tsconfig Skill\n\nPath: `packages/tsconfig/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/package.json)","packages/tailwind-config/package.json":"# Tailwind-config Skill\n\nPath: `packages/tailwind-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tailwind-config/package.json)","packages/shared-styles/package.json":"# Shared-styles Skill\n\nPath: `packages/shared-styles/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/shared-styles/package.json)","skills/rules/_sections.md":"# Rules Skill\n\nPath: `skills/rules/_sections.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_sections.md)","skills/rules/_template.md":"# Rules Skill\n\nPath: `skills/rules/_template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_template.md)","skills/rules/advanced-multi-listener.md":"# Rules Skill\n\nPath: `skills/rules/advanced-multi-listener.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-multi-listener.md)","skills/rules/advanced-prompt-targets.md":"# Rules Skill\n\nPath: `skills/rules/advanced-prompt-targets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-prompt-targets.md)","skills/rules/agent-descriptions.md":"# Rules Skill\n\nPath: `skills/rules/agent-descriptions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-descriptions.md)","skills/rules/agent-orchestration.md":"# Rules Skill\n\nPath: `skills/rules/agent-orchestration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-orchestration.md)","skills/rules/cli-agent.md":"# Rules Skill\n\nPath: `skills/rules/cli-agent.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-agent.md)","skills/rules/cli-init.md":"# Rules Skill\n\nPath: `skills/rules/cli-init.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-init.md)","skills/rules/cli-startup.md":"# Rules Skill\n\nPath: `skills/rules/cli-startup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-startup.md)","skills/rules/config-listeners.md":"# Rules Skill\n\nPath: `skills/rules/config-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-listeners.md)","skills/rules/config-providers.md":"# Rules Skill\n\nPath: `skills/rules/config-providers.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-providers.md)","skills/rules/config-secrets.md":"# Rules Skill\n\nPath: `skills/rules/config-secrets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-secrets.md)","skills/rules/config-version.md":"# Rules Skill\n\nPath: `skills/rules/config-version.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-version.md)","skills/rules/deploy-docker.md":"# Rules Skill\n\nPath: `skills/rules/deploy-docker.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-docker.md)","skills/rules/deploy-health.md":"# Rules Skill\n\nPath: `skills/rules/deploy-health.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-health.md)","skills/rules/deploy-state.md":"# Rules Skill\n\nPath: `skills/rules/deploy-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-state.md)","skills/rules/filter-guardrails.md":"# Rules Skill\n\nPath: `skills/rules/filter-guardrails.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-guardrails.md)","skills/rules/filter-mcp.md":"# Rules Skill\n\nPath: `skills/rules/filter-mcp.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-mcp.md)","skills/rules/filter-ordering.md":"# Rules Skill\n\nPath: `skills/rules/filter-ordering.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-ordering.md)","skills/rules/observe-span-attributes.md":"# Rules Skill\n\nPath: `skills/rules/observe-span-attributes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-span-attributes.md)","skills/rules/observe-trace-query.md":"# Rules Skill\n\nPath: `skills/rules/observe-trace-query.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-trace-query.md)","skills/rules/observe-tracing.md":"# Rules Skill\n\nPath: `skills/rules/observe-tracing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-tracing.md)","skills/rules/routing-aliases.md":"# Rules Skill\n\nPath: `skills/rules/routing-aliases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-aliases.md)","skills/rules/routing-default.md":"# Rules Skill\n\nPath: `skills/rules/routing-default.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-default.md)","skills/rules/routing-passthrough.md":"# Rules Skill\n\nPath: `skills/rules/routing-passthrough.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-passthrough.md)","skills/rules/routing-preferences.md":"# Rules Skill\n\nPath: `skills/rules/routing-preferences.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-preferences.md)","docs/source/resources/includes/agents/agents_config.yaml":"# Agents Skill\n\nPath: `docs/source/resources/includes/agents/agents_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/docs/source/resources/includes/agents/agents_config.yaml)"},"files":{"skills/plano-agent-orchestration/SKILL.md":"---\nname: plano-agent-orchestration\ndescription: Improve multi-agent orchestration in Plano. Use for agent registration, agent listener wiring, and capability-focused agent descriptions for accurate routing.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Orchestration\n\nUse this skill for agent listener quality, sub-agent registration, and route accuracy.\n\n## When To Use\n\n- \"Fix multi-agent routing\"\n- \"Validate agents vs listeners.agents config\"\n- \"Improve agent descriptions\"\n- \"Set up a reliable orchestrator\"\n\n## Apply These Rules\n\n- `agent-orchestration`\n- `agent-descriptions`\n\n## Execution Checklist\n\n1. Verify each agent exists in both `agents` and `listeners[].agents`.\n2. Ensure one fallback/default agent where appropriate.\n3. Rewrite descriptions to be capability-focused and non-overlapping.\n4. Keep descriptions specific, concise, and example-driven.\n5. Provide test prompts to validate routing outcomes.\n","skills/plano-agent-skills/SKILL.md":"---\nname: plano-agent-skills\ndescription: Best practices for building agents and agentic applications with Plano, including configuration, routing, orchestration, guardrails, observability, and deployment.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Skills\n\nComprehensive Plano guidance for coding agents. Use this umbrella skill when a task spans multiple areas (config, routing, orchestration, filters, observability, CLI, deployment).\n\n## When To Use\n\n- Validating or fixing Plano `config.yaml`\n- Designing listener architecture (`model`, `prompt`, `agent`)\n- Improving model/provider routing quality and fallback behavior\n- Hardening filter chains and prompt guardrails\n- Debugging routing with traces and CLI workflows\n- Preparing deployment and production readiness checks\n\n## How To Use\n\n1. Classify the request by scope (single section vs. cross-cutting).\n2. For focused work, prefer a section-specific skill (for example `plano-routing-model-selection`).\n3. For broad work, apply this umbrella skill and reference section rules from `skills/AGENTS.md`.\n4. Produce concrete edits first, then concise reasoning and validation steps.\n\n## Operating Workflow\n\n1. Identify the task area first: config, routing, orchestration, filters, observability, CLI, or deployment.\n2. Apply the smallest correct change that satisfies the requested behavior.\n3. Preserve security and reliability defaults:\n   - `version: v0.3.0`\n   - exactly one `default: true` model provider\n   - secrets via `$ENV_VAR` substitution only\n   - `host.docker.internal` for host services from inside Docker\n   - guardrails before enrichment in filter chains\n4. For debugging, prioritize traces over guesswork (`planoai up --with-tracing`, `planoai trace`).\n5. Return concrete diffs and a short validation checklist.\n\n## Response Style\n\n- Prefer actionable edits over generic advice.\n- Be explicit about why a config choice is correct.\n- Call out risky patterns (hardcoded secrets, missing default provider, bad filter ordering).\n- Keep examples minimal and production-viable.\n\n## References\n\n- Repo: https://github.com/katanemo/plano\n- Full rulebook: `skills/AGENTS.md`\n","skills/plano-advanced-patterns/SKILL.md":"---\nname: plano-advanced-patterns\ndescription: Design advanced Plano architectures. Use for multi-listener systems, prompt target schema quality, and layered orchestration patterns.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Advanced Patterns\n\nUse this skill for higher-order architecture decisions once fundamentals are stable.\n\n## When To Use\n\n- \"Design a multi-listener Plano architecture\"\n- \"Improve prompt target schema precision\"\n- \"Combine model, prompt, and agent listeners\"\n- \"Refine advanced routing/function-calling behavior\"\n\n## Apply These Rules\n\n- `advanced-multi-listener`\n- `advanced-prompt-targets`\n\n## Execution Checklist\n\n1. Use multiple listeners only when interfaces are truly distinct.\n2. Keep provider/routing definitions shared and consistent.\n3. Define prompt target parameters with strict, explicit schemas.\n4. Minimize ambiguity that causes malformed tool calls.\n5. Provide migration-safe recommendations and test scenarios.\n","skills/plano-config-fundamentals/SKILL.md":"---\nname: plano-config-fundamentals\ndescription: Validate and fix Plano config fundamentals. Use for config versioning, listener types, provider registration, secrets handling, and startup validation failures.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Configuration Fundamentals\n\nUse this skill for foundational `config.yaml` correctness.\n\n## When To Use\n\n- \"Validate this Plano config\"\n- \"Fix startup config errors\"\n- \"Check listeners/providers/secrets\"\n- \"Why does `planoai up` fail schema validation?\"\n\n## Apply These Rules\n\n- `config-version`\n- `config-listeners`\n- `config-providers`\n- `config-secrets`\n\n## Execution Checklist\n\n1. Ensure `version: v0.3.0` is present.\n2. Confirm listener type matches intended architecture.\n3. Verify provider names/interfaces and exactly one default provider.\n4. Replace hardcoded secrets with `$ENV_VAR` substitution.\n5. Return minimal patch and a `planoai up` verification plan.\n","skills/plano-cli-operations/SKILL.md":"---\nname: plano-cli-operations\ndescription: Apply Plano CLI best practices. Use for startup troubleshooting, cli_agent workflows, and template-based project bootstrapping.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano CLI Operations\n\nUse this skill when the task is primarily operational and CLI-driven.\n\n## When To Use\n\n- \"Fix `planoai up` failures\"\n- \"Use `planoai cli_agent` with coding agents\"\n- \"Bootstrap a project with `planoai init` templates\"\n\n## Apply These Rules\n\n- `cli-startup`\n- `cli-agent`\n- `cli-init`\n\n## Execution Checklist\n\n1. Follow startup validation order before deep debugging.\n2. Use `cli_agent` to route coding-agent traffic through Plano.\n3. Start from templates for reliable first-time setup.\n4. Provide a compact runbook with exact CLI commands.\n","skills/plano-deployment-security/SKILL.md":"---\nname: plano-deployment-security\ndescription: Apply Plano deployment and production security practices. Use for Docker networking, state storage choices, readiness checks, and environment-based secret handling.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Deployment and Security\n\nUse this skill to harden production deployments and reduce runtime surprises.\n\n## When To Use\n\n- \"Fix unreachable agents in Docker\"\n- \"Configure persistent conversation state\"\n- \"Add readiness and health checks\"\n- \"Prepare production deployment checklist\"\n\n## Apply These Rules\n\n- `deploy-docker`\n- `deploy-state`\n- `deploy-health`\n\n## Execution Checklist\n\n1. Use `host.docker.internal` for host-side services from inside Plano container.\n2. Prefer PostgreSQL state storage for production multi-turn workloads.\n3. Verify `/healthz` before traffic or CI assertions.\n4. Ensure secrets remain environment-based, never hardcoded.\n5. Return deployment checks with failure-mode diagnostics.\n","skills/plano-observability-debugging/SKILL.md":"---\nname: plano-observability-debugging\ndescription: Improve Plano tracing and debugging workflows. Use for sampling strategy, span attributes, and trace query-based root-cause analysis.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Observability and Debugging\n\nUse this skill to make routing and latency behavior inspectable and debuggable.\n\n## When To Use\n\n- \"Enable tracing correctly\"\n- \"Add useful span attributes\"\n- \"Debug why a request routed incorrectly\"\n- \"Inspect filter/model latency from traces\"\n\n## Apply These Rules\n\n- `observe-tracing`\n- `observe-span-attributes`\n- `observe-trace-query`\n\n## Execution Checklist\n\n1. Enable tracing with environment-appropriate sampling.\n2. Add useful static and header-derived span attributes.\n3. Use `planoai trace` filters to isolate route and latency issues.\n4. Prefer trace evidence over assumptions in recommendations.\n5. Return exact commands to reproduce and validate findings.\n","skills/plano-routing-model-selection/SKILL.md":"---\nname: plano-routing-model-selection\ndescription: Optimize Plano model routing and selection. Use for provider defaults, model aliases, passthrough auth, and routing preference quality.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Routing and Model Selection\n\nUse this skill when requests are routed to the wrong model, costs are high, or fallback behavior is unclear.\n\n## When To Use\n\n- \"Improve model routing\"\n- \"Add aliases and defaults\"\n- \"Fix passthrough auth with proxy providers\"\n- \"Tune routing preferences for better classification\"\n\n## Apply These Rules\n\n- `routing-default`\n- `routing-aliases`\n- `routing-passthrough`\n- `routing-preferences`\n\n## Execution Checklist\n\n1. Ensure exactly one `default: true` provider.\n2. Add semantic aliases for stable client contracts.\n3. Configure passthrough auth only where required.\n4. Rewrite vague preference descriptions with concrete task scopes.\n5. Validate routing behavior using trace-based checks.\n",".claude/skills/test-python/SKILL.md":"---\nname: test-python\ndescription: Run Python CLI tests. Use after making changes to cli/ code.\n---\n\n1. `cd cli && uv sync` — ensure dependencies are installed\n2. `cd cli && uv run pytest -v` — run all tests\n\nIf tests fail, diagnose and fix the issues.\n","skills/plano-filter-guardrails/SKILL.md":"---\nname: plano-filter-guardrails\ndescription: Harden Plano filter chains and guardrails. Use for MCP filter setup, prompt guard responses, and safe filter ordering.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Filter Chains and Guardrails\n\nUse this skill when safety controls or filter pipelines need correction.\n\n## When To Use\n\n- \"Fix filter chain ordering\"\n- \"Set up MCP filters correctly\"\n- \"Improve guardrail rejection behavior\"\n- \"Harden request processing for safety\"\n\n## Apply These Rules\n\n- `filter-mcp`\n- `filter-guardrails`\n- `filter-ordering`\n\n## Execution Checklist\n\n1. Configure filter `type`, `transport`, and `tool` explicitly for MCP.\n2. Ensure rejection messages are clear and actionable.\n3. Order chain as guards -> rewriters -> enrichment -> output checks.\n4. Prevent expensive enrichment on unsafe requests.\n5. Verify with representative blocked and allowed test prompts.\n",".claude/skills/release/SKILL.md":"---\nname: release\ndescription: Bump the Plano version across all required files. Use when preparing a release.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nPrepare a release version bump. The user may provide the new version number as $ARGUMENTS (e.g., `/release 0.4.12`), or a bump type (`major`, `minor`, `patch`).\n\nIf no argument is provided, read the current version from `cli/planoai/__init__.py`, auto-increment the patch version (e.g., `0.4.11` → `0.4.12`), and confirm with the user before proceeding.\n\nUpdate the version string in ALL of these files:\n\n- `.github/workflows/ci.yml`\n- `cli/planoai/__init__.py`\n- `cli/planoai/consts.py`\n- `cli/pyproject.toml`\n- `build_filter_image.sh`\n- `config/validate_plano_config.sh`\n- `docs/source/conf.py`\n- `docs/source/get_started/quickstart.rst`\n- `docs/source/resources/deployment.rst`\n- `apps/www/src/components/Hero.tsx`\n- `demos/llm_routing/preference_based_routing/README.md`\n\nDo NOT change version strings in `*.lock` files or `Cargo.lock`.\n\nAfter updating all version strings, run `cd cli && uv lock` to update the lock file with the new version.\n\nAfter making changes, show a summary of all files modified and the old → new version.\n",".claude/skills/pr/SKILL.md":"---\nname: pr\ndescription: Create a feature branch and open a pull request for the current changes.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nCreate a pull request for the current changes:\n\n1. Determine the GitHub username via `gh api user --jq .login`. If the login is `adilhafeez`, use `adil` instead.\n2. Create a feature branch using format `<username>/<feature_name>` — infer the feature name from the changes\n3. Run `cd crates && cargo fmt --all -- --check` and `cd crates && cargo clippy --locked --all-targets --all-features -- -D warnings` to verify Rust code is clean\n4. Commit all changes with a short, concise commit message (one line, no Co-Authored-By)\n5. Push the branch and create a PR targeting `main`\n\nKeep the PR title short (under 70 chars). Include a brief summary in the body. Never include a \"Test plan\" section or any \"Generated with Claude Code\" attribution.\n",".claude/skills/new-provider/SKILL.md":"# new-provider\n\nPath: `.claude/skills/new-provider/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/new-provider/SKILL.md)",".claude/skills/check/SKILL.md":"# check\n\nPath: `.claude/skills/check/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/check/SKILL.md)",".claude/skills/build-wasm/SKILL.md":"# build-wasm\n\nPath: `.claude/skills/build-wasm/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-wasm/SKILL.md)",".claude/skills/build-cli/SKILL.md":"# build-cli\n\nPath: `.claude/skills/build-cli/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-cli/SKILL.md)",".claude/skills/build-brightstaff/SKILL.md":"# build-brightstaff\n\nPath: `.claude/skills/build-brightstaff/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-brightstaff/SKILL.md)","CLAUDE.md":"# Claude Agent Guidelines & System Prompt\n\nPath: `CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/CLAUDE.md)","skills/AGENTS.md":"# skills - AI Agent Protocol & Instructions\n\nPath: `skills/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/AGENTS.md)","skills/metadata.json":"# Skills Skill\n\nPath: `skills/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/metadata.json)","skills/package.json":"# Skills Skill\n\nPath: `skills/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package.json)","skills/package-lock.json":"# Skills Skill\n\nPath: `skills/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package-lock.json)","skills/README.md":"# Skills Skill\n\nPath: `skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/README.md)","skills/test-cases.json":"# Skills Skill\n\nPath: `skills/test-cases.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/test-cases.json)","skills/tsconfig.json":"# Skills Skill\n\nPath: `skills/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/tsconfig.json)","packages/ui/package.json":"# Ui Skill\n\nPath: `packages/ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/package.json)","packages/ui/tsconfig.json":"# Ui Skill\n\nPath: `packages/ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/tsconfig.json)","packages/tsconfig/base.json":"# Tsconfig Skill\n\nPath: `packages/tsconfig/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/base.json)","packages/tsconfig/nextjs.json":"# Tsconfig Skill\n\nPath: `packages/tsconfig/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/nextjs.json)","packages/tsconfig/package.json":"# Tsconfig Skill\n\nPath: `packages/tsconfig/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/package.json)","packages/tailwind-config/package.json":"# Tailwind-config Skill\n\nPath: `packages/tailwind-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tailwind-config/package.json)","packages/shared-styles/package.json":"# Shared-styles Skill\n\nPath: `packages/shared-styles/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/shared-styles/package.json)","skills/rules/_sections.md":"# Rules Skill\n\nPath: `skills/rules/_sections.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_sections.md)","skills/rules/_template.md":"# Rules Skill\n\nPath: `skills/rules/_template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_template.md)","skills/rules/advanced-multi-listener.md":"# Rules Skill\n\nPath: `skills/rules/advanced-multi-listener.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-multi-listener.md)","skills/rules/advanced-prompt-targets.md":"# Rules Skill\n\nPath: `skills/rules/advanced-prompt-targets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-prompt-targets.md)","skills/rules/agent-descriptions.md":"# Rules Skill\n\nPath: `skills/rules/agent-descriptions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-descriptions.md)","skills/rules/agent-orchestration.md":"# Rules Skill\n\nPath: `skills/rules/agent-orchestration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-orchestration.md)","skills/rules/cli-agent.md":"# Rules Skill\n\nPath: `skills/rules/cli-agent.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-agent.md)","skills/rules/cli-init.md":"# Rules Skill\n\nPath: `skills/rules/cli-init.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-init.md)","skills/rules/cli-startup.md":"# Rules Skill\n\nPath: `skills/rules/cli-startup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-startup.md)","skills/rules/config-listeners.md":"# Rules Skill\n\nPath: `skills/rules/config-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-listeners.md)","skills/rules/config-providers.md":"# Rules Skill\n\nPath: `skills/rules/config-providers.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-providers.md)","skills/rules/config-secrets.md":"# Rules Skill\n\nPath: `skills/rules/config-secrets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-secrets.md)","skills/rules/config-version.md":"# Rules Skill\n\nPath: `skills/rules/config-version.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-version.md)","skills/rules/deploy-docker.md":"# Rules Skill\n\nPath: `skills/rules/deploy-docker.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-docker.md)","skills/rules/deploy-health.md":"# Rules Skill\n\nPath: `skills/rules/deploy-health.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-health.md)","skills/rules/deploy-state.md":"# Rules Skill\n\nPath: `skills/rules/deploy-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-state.md)","skills/rules/filter-guardrails.md":"# Rules Skill\n\nPath: `skills/rules/filter-guardrails.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-guardrails.md)","skills/rules/filter-mcp.md":"# Rules Skill\n\nPath: `skills/rules/filter-mcp.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-mcp.md)","skills/rules/filter-ordering.md":"# Rules Skill\n\nPath: `skills/rules/filter-ordering.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-ordering.md)","skills/rules/observe-span-attributes.md":"# Rules Skill\n\nPath: `skills/rules/observe-span-attributes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-span-attributes.md)","skills/rules/observe-trace-query.md":"# Rules Skill\n\nPath: `skills/rules/observe-trace-query.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-trace-query.md)","skills/rules/observe-tracing.md":"# Rules Skill\n\nPath: `skills/rules/observe-tracing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-tracing.md)","skills/rules/routing-aliases.md":"# Rules Skill\n\nPath: `skills/rules/routing-aliases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-aliases.md)","skills/rules/routing-default.md":"# Rules Skill\n\nPath: `skills/rules/routing-default.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-default.md)","skills/rules/routing-passthrough.md":"# Rules Skill\n\nPath: `skills/rules/routing-passthrough.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-passthrough.md)","skills/rules/routing-preferences.md":"# Rules Skill\n\nPath: `skills/rules/routing-preferences.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-preferences.md)","docs/source/resources/includes/agents/agents_config.yaml":"# Agents Skill\n\nPath: `docs/source/resources/includes/agents/agents_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/docs/source/resources/includes/agents/agents_config.yaml)"},"items":[{"name":"AGENTS.md","path":"skills/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/AGENTS.md","title":"skills - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# skills - AI Agent Protocol & Instructions\n\nPath: `skills/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/AGENTS.md)","tokens":300,"sizeBytes":171},{"name":"SKILL.md","path":".claude/skills/build-brightstaff/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-brightstaff/SKILL.md","title":"build-brightstaff","category":"anthropic-skill","format":"markdown","content":"# build-brightstaff\n\nPath: `.claude/skills/build-brightstaff/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-brightstaff/SKILL.md)","tokens":300,"sizeBytes":197},{"name":"SKILL.md","path":".claude/skills/build-cli/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-cli/SKILL.md","title":"build-cli","category":"anthropic-skill","format":"markdown","content":"# build-cli\n\nPath: `.claude/skills/build-cli/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-cli/SKILL.md)","tokens":300,"sizeBytes":173},{"name":"SKILL.md","path":".claude/skills/build-wasm/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-wasm/SKILL.md","title":"build-wasm","category":"anthropic-skill","format":"markdown","content":"# build-wasm\n\nPath: `.claude/skills/build-wasm/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-wasm/SKILL.md)","tokens":300,"sizeBytes":176},{"name":"SKILL.md","path":".claude/skills/check/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/check/SKILL.md","title":"check","category":"anthropic-skill","format":"markdown","content":"# check\n\nPath: `.claude/skills/check/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/check/SKILL.md)","tokens":300,"sizeBytes":161},{"name":"SKILL.md","path":".claude/skills/new-provider/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/new-provider/SKILL.md","title":"new-provider","category":"anthropic-skill","format":"markdown","content":"# new-provider\n\nPath: `.claude/skills/new-provider/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/new-provider/SKILL.md)","tokens":300,"sizeBytes":182},{"name":"SKILL.md","path":".claude/skills/pr/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/pr/SKILL.md","title":"pr","category":"anthropic-skill","format":"markdown","content":"---\nname: pr\ndescription: Create a feature branch and open a pull request for the current changes.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nCreate a pull request for the current changes:\n\n1. Determine the GitHub username via `gh api user --jq .login`. If the login is `adilhafeez`, use `adil` instead.\n2. Create a feature branch using format `<username>/<feature_name>` — infer the feature name from the changes\n3. Run `cd crates && cargo fmt --all -- --check` and `cd crates && cargo clippy --locked --all-targets --all-features -- -D warnings` to verify Rust code is clean\n4. Commit all changes with a short, concise commit message (one line, no Co-Authored-By)\n5. Push the branch and create a PR targeting `main`\n\nKeep the PR title short (under 70 chars). Include a brief summary in the body. Never include a \"Test plan\" section or any \"Generated with Claude Code\" attribution.\n","frontmatter":{"name":"pr","description":"Create a feature branch and open a pull request for the current changes.","disable-model-invocation":true,"user-invocable":true,"disableModelInvocation":true},"isInternal":false,"tokens":220,"sizeBytes":899},{"name":"SKILL.md","path":".claude/skills/release/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/release/SKILL.md","title":"release","category":"anthropic-skill","format":"markdown","content":"---\nname: release\ndescription: Bump the Plano version across all required files. Use when preparing a release.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nPrepare a release version bump. The user may provide the new version number as $ARGUMENTS (e.g., `/release 0.4.12`), or a bump type (`major`, `minor`, `patch`).\n\nIf no argument is provided, read the current version from `cli/planoai/__init__.py`, auto-increment the patch version (e.g., `0.4.11` → `0.4.12`), and confirm with the user before proceeding.\n\nUpdate the version string in ALL of these files:\n\n- `.github/workflows/ci.yml`\n- `cli/planoai/__init__.py`\n- `cli/planoai/consts.py`\n- `cli/pyproject.toml`\n- `build_filter_image.sh`\n- `config/validate_plano_config.sh`\n- `docs/source/conf.py`\n- `docs/source/get_started/quickstart.rst`\n- `docs/source/resources/deployment.rst`\n- `apps/www/src/components/Hero.tsx`\n- `demos/llm_routing/preference_based_routing/README.md`\n\nDo NOT change version strings in `*.lock` files or `Cargo.lock`.\n\nAfter updating all version strings, run `cd cli && uv lock` to update the lock file with the new version.\n\nAfter making changes, show a summary of all files modified and the old → new version.\n","frontmatter":{"name":"release","description":"Bump the Plano version across all required files. Use when preparing a release.","disable-model-invocation":true,"user-invocable":true,"disableModelInvocation":true},"isInternal":false,"tokens":320,"sizeBytes":1207},{"name":"SKILL.md","path":".claude/skills/test-python/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/test-python/SKILL.md","title":"test-python","category":"anthropic-skill","format":"markdown","content":"---\nname: test-python\ndescription: Run Python CLI tests. Use after making changes to cli/ code.\n---\n\n1. `cd cli && uv sync` — ensure dependencies are installed\n2. `cd cli && uv run pytest -v` — run all tests\n\nIf tests fail, diagnose and fix the issues.\n","frontmatter":{"name":"test-python","description":"Run Python CLI tests. Use after making changes to cli/ code."},"isInternal":false,"tokens":65,"sizeBytes":257},{"name":"agents_config.yaml","path":"docs/source/resources/includes/agents/agents_config.yaml","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/docs/source/resources/includes/agents/agents_config.yaml","title":"Agents Skill","category":"anthropic-skill","format":"yaml","content":"# Agents Skill\n\nPath: `docs/source/resources/includes/agents/agents_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/docs/source/resources/includes/agents/agents_config.yaml)","tokens":300,"sizeBytes":222},{"name":"package.json","path":"packages/shared-styles/package.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/shared-styles/package.json","title":"Shared-styles Skill","category":"anthropic-skill","format":"json","content":"# Shared-styles Skill\n\nPath: `packages/shared-styles/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/shared-styles/package.json)","tokens":300,"sizeBytes":187},{"name":"package.json","path":"packages/tailwind-config/package.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tailwind-config/package.json","title":"Tailwind-config Skill","category":"anthropic-skill","format":"json","content":"# Tailwind-config Skill\n\nPath: `packages/tailwind-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tailwind-config/package.json)","tokens":300,"sizeBytes":193},{"name":"base.json","path":"packages/tsconfig/base.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/base.json","title":"Tsconfig Skill","category":"anthropic-skill","format":"json","content":"# Tsconfig Skill\n\nPath: `packages/tsconfig/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/base.json)","tokens":300,"sizeBytes":166},{"name":"nextjs.json","path":"packages/tsconfig/nextjs.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/nextjs.json","title":"Tsconfig Skill","category":"anthropic-skill","format":"json","content":"# Tsconfig Skill\n\nPath: `packages/tsconfig/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/nextjs.json)","tokens":300,"sizeBytes":170},{"name":"package.json","path":"packages/tsconfig/package.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/package.json","title":"Tsconfig Skill","category":"anthropic-skill","format":"json","content":"# Tsconfig Skill\n\nPath: `packages/tsconfig/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/package.json)","tokens":300,"sizeBytes":172},{"name":"package.json","path":"packages/ui/package.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/package.json","title":"Ui Skill","category":"anthropic-skill","format":"json","content":"# Ui Skill\n\nPath: `packages/ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/package.json)","tokens":300,"sizeBytes":154},{"name":"tsconfig.json","path":"packages/ui/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/tsconfig.json","title":"Ui Skill","category":"anthropic-skill","format":"json","content":"# Ui Skill\n\nPath: `packages/ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/tsconfig.json)","tokens":300,"sizeBytes":156},{"name":"metadata.json","path":"skills/metadata.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/metadata.json","title":"Skills Skill","category":"anthropic-skill","format":"json","content":"# Skills Skill\n\nPath: `skills/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/metadata.json)","tokens":300,"sizeBytes":150},{"name":"package-lock.json","path":"skills/package-lock.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package-lock.json","title":"Skills Skill","category":"anthropic-skill","format":"json","content":"# Skills Skill\n\nPath: `skills/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package-lock.json)","tokens":300,"sizeBytes":158},{"name":"package.json","path":"skills/package.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package.json","title":"Skills Skill","category":"anthropic-skill","format":"json","content":"# Skills Skill\n\nPath: `skills/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package.json)","tokens":300,"sizeBytes":148},{"name":"SKILL.md","path":"skills/plano-advanced-patterns/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-advanced-patterns/SKILL.md","title":"plano-advanced-patterns","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-advanced-patterns\ndescription: Design advanced Plano architectures. Use for multi-listener systems, prompt target schema quality, and layered orchestration patterns.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Advanced Patterns\n\nUse this skill for higher-order architecture decisions once fundamentals are stable.\n\n## When To Use\n\n- \"Design a multi-listener Plano architecture\"\n- \"Improve prompt target schema precision\"\n- \"Combine model, prompt, and agent listeners\"\n- \"Refine advanced routing/function-calling behavior\"\n\n## Apply These Rules\n\n- `advanced-multi-listener`\n- `advanced-prompt-targets`\n\n## Execution Checklist\n\n1. Use multiple listeners only when interfaces are truly distinct.\n2. Keep provider/routing definitions shared and consistent.\n3. Define prompt target parameters with strict, explicit schemas.\n4. Minimize ambiguity that causes malformed tool calls.\n5. Provide migration-safe recommendations and test scenarios.\n","frontmatter":{"name":"plano-advanced-patterns","description":"Design advanced Plano architectures. Use for multi-listener systems, prompt target schema quality, and layered orchestration patterns.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":209,"sizeBytes":990},{"name":"SKILL.md","path":"skills/plano-agent-orchestration/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-agent-orchestration/SKILL.md","title":"plano-agent-orchestration","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-agent-orchestration\ndescription: Improve multi-agent orchestration in Plano. Use for agent registration, agent listener wiring, and capability-focused agent descriptions for accurate routing.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Orchestration\n\nUse this skill for agent listener quality, sub-agent registration, and route accuracy.\n\n## When To Use\n\n- \"Fix multi-agent routing\"\n- \"Validate agents vs listeners.agents config\"\n- \"Improve agent descriptions\"\n- \"Set up a reliable orchestrator\"\n\n## Apply These Rules\n\n- `agent-orchestration`\n- `agent-descriptions`\n\n## Execution Checklist\n\n1. Verify each agent exists in both `agents` and `listeners[].agents`.\n2. Ensure one fallback/default agent where appropriate.\n3. Rewrite descriptions to be capability-focused and non-overlapping.\n4. Keep descriptions specific, concise, and example-driven.\n5. Provide test prompts to validate routing outcomes.\n","frontmatter":{"name":"plano-agent-orchestration","description":"Improve multi-agent orchestration in Plano. Use for agent registration, agent listener wiring, and capability-focused agent descriptions for accurate routing.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":214,"sizeBytes":961},{"name":"SKILL.md","path":"skills/plano-agent-skills/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-agent-skills/SKILL.md","title":"plano-agent-skills","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-agent-skills\ndescription: Best practices for building agents and agentic applications with Plano, including configuration, routing, orchestration, guardrails, observability, and deployment.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Skills\n\nComprehensive Plano guidance for coding agents. Use this umbrella skill when a task spans multiple areas (config, routing, orchestration, filters, observability, CLI, deployment).\n\n## When To Use\n\n- Validating or fixing Plano `config.yaml`\n- Designing listener architecture (`model`, `prompt`, `agent`)\n- Improving model/provider routing quality and fallback behavior\n- Hardening filter chains and prompt guardrails\n- Debugging routing with traces and CLI workflows\n- Preparing deployment and production readiness checks\n\n## How To Use\n\n1. Classify the request by scope (single section vs. cross-cutting).\n2. For focused work, prefer a section-specific skill (for example `plano-routing-model-selection`).\n3. For broad work, apply this umbrella skill and reference section rules from `skills/AGENTS.md`.\n4. Produce concrete edits first, then concise reasoning and validation steps.\n\n## Operating Workflow\n\n1. Identify the task area first: config, routing, orchestration, filters, observability, CLI, or deployment.\n2. Apply the smallest correct change that satisfies the requested behavior.\n3. Preserve security and reliability defaults:\n   - `version: v0.3.0`\n   - exactly one `default: true` model provider\n   - secrets via `$ENV_VAR` substitution only\n   - `host.docker.internal` for host services from inside Docker\n   - guardrails before enrichment in filter chains\n4. For debugging, prioritize traces over guesswork (`planoai up --with-tracing`, `planoai trace`).\n5. Return concrete diffs and a short validation checklist.\n\n## Response Style\n\n- Prefer actionable edits over generic advice.\n- Be explicit about why a config choice is correct.\n- Call out risky patterns (hardcoded secrets, missing default provider, bad filter ordering).\n- Keep examples minimal and production-viable.\n\n## References\n\n- Repo: https://github.com/katanemo/plano\n- Full rulebook: `skills/AGENTS.md`\n","frontmatter":{"name":"plano-agent-skills","description":"Best practices for building agents and agentic applications with Plano, including configuration, routing, orchestration, guardrails, observability, and deployment.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":485,"sizeBytes":2184},{"name":"SKILL.md","path":"skills/plano-cli-operations/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-cli-operations/SKILL.md","title":"plano-cli-operations","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-cli-operations\ndescription: Apply Plano CLI best practices. Use for startup troubleshooting, cli_agent workflows, and template-based project bootstrapping.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano CLI Operations\n\nUse this skill when the task is primarily operational and CLI-driven.\n\n## When To Use\n\n- \"Fix `planoai up` failures\"\n- \"Use `planoai cli_agent` with coding agents\"\n- \"Bootstrap a project with `planoai init` templates\"\n\n## Apply These Rules\n\n- `cli-startup`\n- `cli-agent`\n- `cli-init`\n\n## Execution Checklist\n\n1. Follow startup validation order before deep debugging.\n2. Use `cli_agent` to route coding-agent traffic through Plano.\n3. Start from templates for reliable first-time setup.\n4. Provide a compact runbook with exact CLI commands.\n","frontmatter":{"name":"plano-cli-operations","description":"Apply Plano CLI best practices. Use for startup troubleshooting, cli_agent workflows, and template-based project bootstrapping.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":199,"sizeBytes":809},{"name":"SKILL.md","path":"skills/plano-config-fundamentals/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-config-fundamentals/SKILL.md","title":"plano-config-fundamentals","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-config-fundamentals\ndescription: Validate and fix Plano config fundamentals. Use for config versioning, listener types, provider registration, secrets handling, and startup validation failures.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Configuration Fundamentals\n\nUse this skill for foundational `config.yaml` correctness.\n\n## When To Use\n\n- \"Validate this Plano config\"\n- \"Fix startup config errors\"\n- \"Check listeners/providers/secrets\"\n- \"Why does `planoai up` fail schema validation?\"\n\n## Apply These Rules\n\n- `config-version`\n- `config-listeners`\n- `config-providers`\n- `config-secrets`\n\n## Execution Checklist\n\n1. Ensure `version: v0.3.0` is present.\n2. Confirm listener type matches intended architecture.\n3. Verify provider names/interfaces and exactly one default provider.\n4. Replace hardcoded secrets with `$ENV_VAR` substitution.\n5. Return minimal patch and a `planoai up` verification plan.\n","frontmatter":{"name":"plano-config-fundamentals","description":"Validate and fix Plano config fundamentals. Use for config versioning, listener types, provider registration, secrets handling, and startup validation failures.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":224,"sizeBytes":959},{"name":"SKILL.md","path":"skills/plano-deployment-security/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-deployment-security/SKILL.md","title":"plano-deployment-security","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-deployment-security\ndescription: Apply Plano deployment and production security practices. Use for Docker networking, state storage choices, readiness checks, and environment-based secret handling.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Deployment and Security\n\nUse this skill to harden production deployments and reduce runtime surprises.\n\n## When To Use\n\n- \"Fix unreachable agents in Docker\"\n- \"Configure persistent conversation state\"\n- \"Add readiness and health checks\"\n- \"Prepare production deployment checklist\"\n\n## Apply These Rules\n\n- `deploy-docker`\n- `deploy-state`\n- `deploy-health`\n\n## Execution Checklist\n\n1. Use `host.docker.internal` for host-side services from inside Plano container.\n2. Prefer PostgreSQL state storage for production multi-turn workloads.\n3. Verify `/healthz` before traffic or CI assertions.\n4. Ensure secrets remain environment-based, never hardcoded.\n5. Return deployment checks with failure-mode diagnostics.\n","frontmatter":{"name":"plano-deployment-security","description":"Apply Plano deployment and production security practices. Use for Docker networking, state storage choices, readiness checks, and environment-based secret handling.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":210,"sizeBytes":1005},{"name":"SKILL.md","path":"skills/plano-filter-guardrails/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-filter-guardrails/SKILL.md","title":"plano-filter-guardrails","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-filter-guardrails\ndescription: Harden Plano filter chains and guardrails. Use for MCP filter setup, prompt guard responses, and safe filter ordering.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Filter Chains and Guardrails\n\nUse this skill when safety controls or filter pipelines need correction.\n\n## When To Use\n\n- \"Fix filter chain ordering\"\n- \"Set up MCP filters correctly\"\n- \"Improve guardrail rejection behavior\"\n- \"Harden request processing for safety\"\n\n## Apply These Rules\n\n- `filter-mcp`\n- `filter-guardrails`\n- `filter-ordering`\n\n## Execution Checklist\n\n1. Configure filter `type`, `transport`, and `tool` explicitly for MCP.\n2. Ensure rejection messages are clear and actionable.\n3. Order chain as guards -> rewriters -> enrichment -> output checks.\n4. Prevent expensive enrichment on unsafe requests.\n5. Verify with representative blocked and allowed test prompts.\n","frontmatter":{"name":"plano-filter-guardrails","description":"Harden Plano filter chains and guardrails. Use for MCP filter setup, prompt guard responses, and safe filter ordering.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":211,"sizeBytes":930},{"name":"SKILL.md","path":"skills/plano-observability-debugging/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-observability-debugging/SKILL.md","title":"plano-observability-debugging","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-observability-debugging\ndescription: Improve Plano tracing and debugging workflows. Use for sampling strategy, span attributes, and trace query-based root-cause analysis.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Observability and Debugging\n\nUse this skill to make routing and latency behavior inspectable and debuggable.\n\n## When To Use\n\n- \"Enable tracing correctly\"\n- \"Add useful span attributes\"\n- \"Debug why a request routed incorrectly\"\n- \"Inspect filter/model latency from traces\"\n\n## Apply These Rules\n\n- `observe-tracing`\n- `observe-span-attributes`\n- `observe-trace-query`\n\n## Execution Checklist\n\n1. Enable tracing with environment-appropriate sampling.\n2. Add useful static and header-derived span attributes.\n3. Use `planoai trace` filters to isolate route and latency issues.\n4. Prefer trace evidence over assumptions in recommendations.\n5. Return exact commands to reproduce and validate findings.\n","frontmatter":{"name":"plano-observability-debugging","description":"Improve Plano tracing and debugging workflows. Use for sampling strategy, span attributes, and trace query-based root-cause analysis.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":213,"sizeBytes":967},{"name":"SKILL.md","path":"skills/plano-routing-model-selection/SKILL.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/plano-routing-model-selection/SKILL.md","title":"plano-routing-model-selection","category":"anthropic-skill","format":"markdown","content":"---\nname: plano-routing-model-selection\ndescription: Optimize Plano model routing and selection. Use for provider defaults, model aliases, passthrough auth, and routing preference quality.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Routing and Model Selection\n\nUse this skill when requests are routed to the wrong model, costs are high, or fallback behavior is unclear.\n\n## When To Use\n\n- \"Improve model routing\"\n- \"Add aliases and defaults\"\n- \"Fix passthrough auth with proxy providers\"\n- \"Tune routing preferences for better classification\"\n\n## Apply These Rules\n\n- `routing-default`\n- `routing-aliases`\n- `routing-passthrough`\n- `routing-preferences`\n\n## Execution Checklist\n\n1. Ensure exactly one `default: true` provider.\n2. Add semantic aliases for stable client contracts.\n3. Configure passthrough auth only where required.\n4. Rewrite vague preference descriptions with concrete task scopes.\n5. Validate routing behavior using trace-based checks.\n","frontmatter":{"name":"plano-routing-model-selection","description":"Optimize Plano model routing and selection. Use for provider defaults, model aliases, passthrough auth, and routing preference quality.","license":"Apache-2.0","metadata":{"author":"katanemo","version":"1.0.0"}},"isInternal":false,"tokens":219,"sizeBytes":992},{"name":"README.md","path":"skills/README.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/README.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"# Skills Skill\n\nPath: `skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/README.md)","tokens":300,"sizeBytes":142},{"name":"_sections.md","path":"skills/rules/_sections.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_sections.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/_sections.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_sections.md)","tokens":300,"sizeBytes":159},{"name":"_template.md","path":"skills/rules/_template.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_template.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/_template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/_template.md)","tokens":300,"sizeBytes":159},{"name":"advanced-multi-listener.md","path":"skills/rules/advanced-multi-listener.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-multi-listener.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/advanced-multi-listener.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-multi-listener.md)","tokens":300,"sizeBytes":187},{"name":"advanced-prompt-targets.md","path":"skills/rules/advanced-prompt-targets.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-prompt-targets.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/advanced-prompt-targets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/advanced-prompt-targets.md)","tokens":300,"sizeBytes":187},{"name":"agent-descriptions.md","path":"skills/rules/agent-descriptions.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-descriptions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/agent-descriptions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-descriptions.md)","tokens":300,"sizeBytes":177},{"name":"agent-orchestration.md","path":"skills/rules/agent-orchestration.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-orchestration.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/agent-orchestration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/agent-orchestration.md)","tokens":300,"sizeBytes":179},{"name":"cli-agent.md","path":"skills/rules/cli-agent.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-agent.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/cli-agent.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-agent.md)","tokens":300,"sizeBytes":159},{"name":"cli-init.md","path":"skills/rules/cli-init.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-init.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/cli-init.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-init.md)","tokens":300,"sizeBytes":157},{"name":"cli-startup.md","path":"skills/rules/cli-startup.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-startup.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/cli-startup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/cli-startup.md)","tokens":300,"sizeBytes":163},{"name":"config-listeners.md","path":"skills/rules/config-listeners.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-listeners.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/config-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-listeners.md)","tokens":300,"sizeBytes":173},{"name":"config-providers.md","path":"skills/rules/config-providers.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-providers.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/config-providers.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-providers.md)","tokens":300,"sizeBytes":173},{"name":"config-secrets.md","path":"skills/rules/config-secrets.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-secrets.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/config-secrets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-secrets.md)","tokens":300,"sizeBytes":169},{"name":"config-version.md","path":"skills/rules/config-version.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-version.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/config-version.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/config-version.md)","tokens":300,"sizeBytes":169},{"name":"deploy-docker.md","path":"skills/rules/deploy-docker.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-docker.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/deploy-docker.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-docker.md)","tokens":300,"sizeBytes":167},{"name":"deploy-health.md","path":"skills/rules/deploy-health.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-health.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/deploy-health.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-health.md)","tokens":300,"sizeBytes":167},{"name":"deploy-state.md","path":"skills/rules/deploy-state.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-state.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/deploy-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/deploy-state.md)","tokens":300,"sizeBytes":165},{"name":"filter-guardrails.md","path":"skills/rules/filter-guardrails.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-guardrails.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/filter-guardrails.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-guardrails.md)","tokens":300,"sizeBytes":175},{"name":"filter-mcp.md","path":"skills/rules/filter-mcp.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-mcp.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/filter-mcp.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-mcp.md)","tokens":300,"sizeBytes":161},{"name":"filter-ordering.md","path":"skills/rules/filter-ordering.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-ordering.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/filter-ordering.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/filter-ordering.md)","tokens":300,"sizeBytes":171},{"name":"observe-span-attributes.md","path":"skills/rules/observe-span-attributes.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-span-attributes.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/observe-span-attributes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-span-attributes.md)","tokens":300,"sizeBytes":187},{"name":"observe-trace-query.md","path":"skills/rules/observe-trace-query.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-trace-query.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/observe-trace-query.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-trace-query.md)","tokens":300,"sizeBytes":179},{"name":"observe-tracing.md","path":"skills/rules/observe-tracing.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-tracing.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/observe-tracing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/observe-tracing.md)","tokens":300,"sizeBytes":171},{"name":"routing-aliases.md","path":"skills/rules/routing-aliases.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-aliases.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/routing-aliases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-aliases.md)","tokens":300,"sizeBytes":171},{"name":"routing-default.md","path":"skills/rules/routing-default.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-default.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/routing-default.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-default.md)","tokens":300,"sizeBytes":171},{"name":"routing-passthrough.md","path":"skills/rules/routing-passthrough.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-passthrough.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/routing-passthrough.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-passthrough.md)","tokens":300,"sizeBytes":179},{"name":"routing-preferences.md","path":"skills/rules/routing-preferences.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-preferences.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `skills/rules/routing-preferences.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/rules/routing-preferences.md)","tokens":300,"sizeBytes":179},{"name":"test-cases.json","path":"skills/test-cases.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/test-cases.json","title":"Skills Skill","category":"anthropic-skill","format":"json","content":"# Skills Skill\n\nPath: `skills/test-cases.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/test-cases.json)","tokens":300,"sizeBytes":154},{"name":"tsconfig.json","path":"skills/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/tsconfig.json","title":"Skills Skill","category":"anthropic-skill","format":"json","content":"# Skills Skill\n\nPath: `skills/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/tsconfig.json)","tokens":300,"sizeBytes":150},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/katanemo/plano/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# Claude Agent Guidelines & System Prompt\n\nPath: `CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/CLAUDE.md)","tokens":300,"sizeBytes":155}],"systemPromptSnippet":"<yakaai_skills repo=\"katanemo/plano\">\n<!-- File: skills/AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# skills - AI Agent Protocol & Instructions\n\nPath: `skills/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/AGENTS.md)\n\n<!-- File: .claude/skills/build-brightstaff/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# build-brightstaff\n\nPath: `.claude/skills/build-brightstaff/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-brightstaff/SKILL.md)\n\n<!-- File: .claude/skills/build-cli/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# build-cli\n\nPath: `.claude/skills/build-cli/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-cli/SKILL.md)\n\n<!-- File: .claude/skills/build-wasm/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# build-wasm\n\nPath: `.claude/skills/build-wasm/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/build-wasm/SKILL.md)\n\n<!-- File: .claude/skills/check/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# check\n\nPath: `.claude/skills/check/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/check/SKILL.md)\n\n<!-- File: .claude/skills/new-provider/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# new-provider\n\nPath: `.claude/skills/new-provider/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/.claude/skills/new-provider/SKILL.md)\n\n<!-- File: .claude/skills/pr/SKILL.md (Tokens: ~220 | Category: anthropic-skill) -->\n---\nname: pr\ndescription: Create a feature branch and open a pull request for the current changes.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nCreate a pull request for the current changes:\n\n1. Determine the GitHub username via `gh api user --jq .login`. If the login is `adilhafeez`, use `adil` instead.\n2. Create a feature branch using format `<username>/<feature_name>` — infer the feature name from the changes\n3. Run `cd crates && cargo fmt --all -- --check` and `cd crates && cargo clippy --locked --all-targets --all-features -- -D warnings` to verify Rust code is clean\n4. Commit all changes with a short, concise commit message (one line, no Co-Authored-By)\n5. Push the branch and create a PR targeting `main`\n\nKeep the PR title short (under 70 chars). Include a brief summary in the body. Never include a \"Test plan\" section or any \"Generated with Claude Code\" attribution.\n\n<!-- File: .claude/skills/release/SKILL.md (Tokens: ~320 | Category: anthropic-skill) -->\n---\nname: release\ndescription: Bump the Plano version across all required files. Use when preparing a release.\ndisable-model-invocation: true\nuser-invocable: true\n---\n\nPrepare a release version bump. The user may provide the new version number as $ARGUMENTS (e.g., `/release 0.4.12`), or a bump type (`major`, `minor`, `patch`).\n\nIf no argument is provided, read the current version from `cli/planoai/__init__.py`, auto-increment the patch version (e.g., `0.4.11` → `0.4.12`), and confirm with the user before proceeding.\n\nUpdate the version string in ALL of these files:\n\n- `.github/workflows/ci.yml`\n- `cli/planoai/__init__.py`\n- `cli/planoai/consts.py`\n- `cli/pyproject.toml`\n- `build_filter_image.sh`\n- `config/validate_plano_config.sh`\n- `docs/source/conf.py`\n- `docs/source/get_started/quickstart.rst`\n- `docs/source/resources/deployment.rst`\n- `apps/www/src/components/Hero.tsx`\n- `demos/llm_routing/preference_based_routing/README.md`\n\nDo NOT change version strings in `*.lock` files or `Cargo.lock`.\n\nAfter updating all version strings, run `cd cli && uv lock` to update the lock file with the new version.\n\nAfter making changes, show a summary of all files modified and the old → new version.\n\n<!-- File: .claude/skills/test-python/SKILL.md (Tokens: ~65 | Category: anthropic-skill) -->\n---\nname: test-python\ndescription: Run Python CLI tests. Use after making changes to cli/ code.\n---\n\n1. `cd cli && uv sync` — ensure dependencies are installed\n2. `cd cli && uv run pytest -v` — run all tests\n\nIf tests fail, diagnose and fix the issues.\n\n<!-- File: docs/source/resources/includes/agents/agents_config.yaml (Tokens: ~300 | Category: anthropic-skill) -->\n# Agents Skill\n\nPath: `docs/source/resources/includes/agents/agents_config.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/docs/source/resources/includes/agents/agents_config.yaml)\n\n<!-- File: packages/shared-styles/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Shared-styles Skill\n\nPath: `packages/shared-styles/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/shared-styles/package.json)\n\n<!-- File: packages/tailwind-config/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tailwind-config Skill\n\nPath: `packages/tailwind-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tailwind-config/package.json)\n\n<!-- File: packages/tsconfig/base.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tsconfig Skill\n\nPath: `packages/tsconfig/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/base.json)\n\n<!-- File: packages/tsconfig/nextjs.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tsconfig Skill\n\nPath: `packages/tsconfig/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/nextjs.json)\n\n<!-- File: packages/tsconfig/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Tsconfig Skill\n\nPath: `packages/tsconfig/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/tsconfig/package.json)\n\n<!-- File: packages/ui/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Ui Skill\n\nPath: `packages/ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/package.json)\n\n<!-- File: packages/ui/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Ui Skill\n\nPath: `packages/ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/packages/ui/tsconfig.json)\n\n<!-- File: skills/metadata.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Skills Skill\n\nPath: `skills/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/metadata.json)\n\n<!-- File: skills/package-lock.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Skills Skill\n\nPath: `skills/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package-lock.json)\n\n<!-- File: skills/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Skills Skill\n\nPath: `skills/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/package.json)\n\n<!-- File: skills/plano-advanced-patterns/SKILL.md (Tokens: ~209 | Category: anthropic-skill) -->\n---\nname: plano-advanced-patterns\ndescription: Design advanced Plano architectures. Use for multi-listener systems, prompt target schema quality, and layered orchestration patterns.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Advanced Patterns\n\nUse this skill for higher-order architecture decisions once fundamentals are stable.\n\n## When To Use\n\n- \"Design a multi-listener Plano architecture\"\n- \"Improve prompt target schema precision\"\n- \"Combine model, prompt, and agent listeners\"\n- \"Refine advanced routing/function-calling behavior\"\n\n## Apply These Rules\n\n- `advanced-multi-listener`\n- `advanced-prompt-targets`\n\n## Execution Checklist\n\n1. Use multiple listeners only when interfaces are truly distinct.\n2. Keep provider/routing definitions shared and consistent.\n3. Define prompt target parameters with strict, explicit schemas.\n4. Minimize ambiguity that causes malformed tool calls.\n5. Provide migration-safe recommendations and test scenarios.\n\n<!-- File: skills/plano-agent-orchestration/SKILL.md (Tokens: ~214 | Category: anthropic-skill) -->\n---\nname: plano-agent-orchestration\ndescription: Improve multi-agent orchestration in Plano. Use for agent registration, agent listener wiring, and capability-focused agent descriptions for accurate routing.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Orchestration\n\nUse this skill for agent listener quality, sub-agent registration, and route accuracy.\n\n## When To Use\n\n- \"Fix multi-agent routing\"\n- \"Validate agents vs listeners.agents config\"\n- \"Improve agent descriptions\"\n- \"Set up a reliable orchestrator\"\n\n## Apply These Rules\n\n- `agent-orchestration`\n- `agent-descriptions`\n\n## Execution Checklist\n\n1. Verify each agent exists in both `agents` and `listeners[].agents`.\n2. Ensure one fallback/default agent where appropriate.\n3. Rewrite descriptions to be capability-focused and non-overlapping.\n4. Keep descriptions specific, concise, and example-driven.\n5. Provide test prompts to validate routing outcomes.\n\n<!-- File: skills/plano-agent-skills/SKILL.md (Tokens: ~485 | Category: anthropic-skill) -->\n---\nname: plano-agent-skills\ndescription: Best practices for building agents and agentic applications with Plano, including configuration, routing, orchestration, guardrails, observability, and deployment.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Agent Skills\n\nComprehensive Plano guidance for coding agents. Use this umbrella skill when a task spans multiple areas (config, routing, orchestration, filters, observability, CLI, deployment).\n\n## When To Use\n\n- Validating or fixing Plano `config.yaml`\n- Designing listener architecture (`model`, `prompt`, `agent`)\n- Improving model/provider routing quality and fallback behavior\n- Hardening filter chains and prompt guardrails\n- Debugging routing with traces and CLI workflows\n- Preparing deployment and production readiness checks\n\n## How To Use\n\n1. Classify the request by scope (single section vs. cross-cutting).\n2. For focused work, prefer a section-specific skill (for example `plano-routing-model-selection`).\n3. For broad work, apply this umbrella skill and reference section rules from `skills/AGENTS.md`.\n4. Produce concrete edits first, then concise reasoning and validation steps.\n\n## Operating Workflow\n\n1. Identify the task area first: config, routing, orchestration, filters, observability, CLI, or deployment.\n2. Apply the smallest correct change that satisfies the requested behavior.\n3. Preserve security and reliability defaults:\n   - `version: v0.3.0`\n   - exactly one `default: true` model provider\n   - secrets via `$ENV_VAR` substitution only\n   - `host.docker.internal` for host services from inside Docker\n   - guardrails before enrichment in filter chains\n4. For debugging, prioritize traces over guesswork (`planoai up --with-tracing`, `planoai trace`).\n5. Return concrete diffs and a short validation checklist.\n\n## Response Style\n\n- Prefer actionable edits over generic advice.\n- Be explicit about why a config choice is correct.\n- Call out risky patterns (hardcoded secrets, missing default provider, bad filter ordering).\n- Keep examples minimal and production-viable.\n\n## References\n\n- Repo: https://github.com/katanemo/plano\n- Full rulebook: `skills/AGENTS.md`\n\n<!-- File: skills/plano-cli-operations/SKILL.md (Tokens: ~199 | Category: anthropic-skill) -->\n---\nname: plano-cli-operations\ndescription: Apply Plano CLI best practices. Use for startup troubleshooting, cli_agent workflows, and template-based project bootstrapping.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano CLI Operations\n\nUse this skill when the task is primarily operational and CLI-driven.\n\n## When To Use\n\n- \"Fix `planoai up` failures\"\n- \"Use `planoai cli_agent` with coding agents\"\n- \"Bootstrap a project with `planoai init` templates\"\n\n## Apply These Rules\n\n- `cli-startup`\n- `cli-agent`\n- `cli-init`\n\n## Execution Checklist\n\n1. Follow startup validation order before deep debugging.\n2. Use `cli_agent` to route coding-agent traffic through Plano.\n3. Start from templates for reliable first-time setup.\n4. Provide a compact runbook with exact CLI commands.\n\n<!-- File: skills/plano-config-fundamentals/SKILL.md (Tokens: ~224 | Category: anthropic-skill) -->\n---\nname: plano-config-fundamentals\ndescription: Validate and fix Plano config fundamentals. Use for config versioning, listener types, provider registration, secrets handling, and startup validation failures.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Configuration Fundamentals\n\nUse this skill for foundational `config.yaml` correctness.\n\n## When To Use\n\n- \"Validate this Plano config\"\n- \"Fix startup config errors\"\n- \"Check listeners/providers/secrets\"\n- \"Why does `planoai up` fail schema validation?\"\n\n## Apply These Rules\n\n- `config-version`\n- `config-listeners`\n- `config-providers`\n- `config-secrets`\n\n## Execution Checklist\n\n1. Ensure `version: v0.3.0` is present.\n2. Confirm listener type matches intended architecture.\n3. Verify provider names/interfaces and exactly one default provider.\n4. Replace hardcoded secrets with `$ENV_VAR` substitution.\n5. Return minimal patch and a `planoai up` verification plan.\n\n<!-- File: skills/plano-deployment-security/SKILL.md (Tokens: ~210 | Category: anthropic-skill) -->\n---\nname: plano-deployment-security\ndescription: Apply Plano deployment and production security practices. Use for Docker networking, state storage choices, readiness checks, and environment-based secret handling.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Deployment and Security\n\nUse this skill to harden production deployments and reduce runtime surprises.\n\n## When To Use\n\n- \"Fix unreachable agents in Docker\"\n- \"Configure persistent conversation state\"\n- \"Add readiness and health checks\"\n- \"Prepare production deployment checklist\"\n\n## Apply These Rules\n\n- `deploy-docker`\n- `deploy-state`\n- `deploy-health`\n\n## Execution Checklist\n\n1. Use `host.docker.internal` for host-side services from inside Plano container.\n2. Prefer PostgreSQL state storage for production multi-turn workloads.\n3. Verify `/healthz` before traffic or CI assertions.\n4. Ensure secrets remain environment-based, never hardcoded.\n5. Return deployment checks with failure-mode diagnostics.\n\n<!-- File: skills/plano-filter-guardrails/SKILL.md (Tokens: ~211 | Category: anthropic-skill) -->\n---\nname: plano-filter-guardrails\ndescription: Harden Plano filter chains and guardrails. Use for MCP filter setup, prompt guard responses, and safe filter ordering.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Filter Chains and Guardrails\n\nUse this skill when safety controls or filter pipelines need correction.\n\n## When To Use\n\n- \"Fix filter chain ordering\"\n- \"Set up MCP filters correctly\"\n- \"Improve guardrail rejection behavior\"\n- \"Harden request processing for safety\"\n\n## Apply These Rules\n\n- `filter-mcp`\n- `filter-guardrails`\n- `filter-ordering`\n\n## Execution Checklist\n\n1. Configure filter `type`, `transport`, and `tool` explicitly for MCP.\n2. Ensure rejection messages are clear and actionable.\n3. Order chain as guards -> rewriters -> enrichment -> output checks.\n4. Prevent expensive enrichment on unsafe requests.\n5. Verify with representative blocked and allowed test prompts.\n\n<!-- File: skills/plano-observability-debugging/SKILL.md (Tokens: ~213 | Category: anthropic-skill) -->\n---\nname: plano-observability-debugging\ndescription: Improve Plano tracing and debugging workflows. Use for sampling strategy, span attributes, and trace query-based root-cause analysis.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Observability and Debugging\n\nUse this skill to make routing and latency behavior inspectable and debuggable.\n\n## When To Use\n\n- \"Enable tracing correctly\"\n- \"Add useful span attributes\"\n- \"Debug why a request routed incorrectly\"\n- \"Inspect filter/model latency from traces\"\n\n## Apply These Rules\n\n- `observe-tracing`\n- `observe-span-attributes`\n- `observe-trace-query`\n\n## Execution Checklist\n\n1. Enable tracing with environment-appropriate sampling.\n2. Add useful static and header-derived span attributes.\n3. Use `planoai trace` filters to isolate route and latency issues.\n4. Prefer trace evidence over assumptions in recommendations.\n5. Return exact commands to reproduce and validate findings.\n\n<!-- File: skills/plano-routing-model-selection/SKILL.md (Tokens: ~219 | Category: anthropic-skill) -->\n---\nname: plano-routing-model-selection\ndescription: Optimize Plano model routing and selection. Use for provider defaults, model aliases, passthrough auth, and routing preference quality.\nlicense: Apache-2.0\nmetadata:\n  author: katanemo\n  version: \"1.0.0\"\n---\n\n# Plano Routing and Model Selection\n\nUse this skill when requests are routed to the wrong model, costs are high, or fallback behavior is unclear.\n\n## When To Use\n\n- \"Improve model routing\"\n- \"Add aliases and defaults\"\n- \"Fix passthrough auth with proxy providers\"\n- \"Tune routing preferences for better classification\"\n\n## Apply These Rules\n\n- `routing-default`\n- `routing-aliases`\n- `routing-passthrough`\n- `routing-preferences`\n\n## Execution Checklist\n\n1. Ensure exactly one `default: true` provider.\n2. Add semantic aliases for stable client contracts.\n3. Configure passthrough auth only where required.\n4. Rewrite vague preference descriptions with concrete task scopes.\n5. Validate routing behavior using trace-based checks.\n\n<!-- File: skills/README.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Skills Skill\n\nPath: `skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/katanemo/plano/HEAD/skills/README.md)\n\n<!-- ... +29 more modular skills available via /api/skills/katanemo/plano?path={path} -->\n</yakaai_skills>"}