Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/ch-bas/kibana-plugin-helpernpx agentmods add skills/ch-bas/kibana-plugin-helper/kibana-plugin-devWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ch-bas/kibana-plugin-helper/kibana-plugin-dev)<a href="https://agentmods.dev/skills/ch-bas/kibana-plugin-helper/kibana-plugin-dev"><img src="https://agentmods.dev/badge/skills/ch-bas/kibana-plugin-helper/kibana-plugin-dev.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00063 | $0.25456 |
| Opus 5 | $0.00032 | $0.12728 |
| Sonnet 5 | $0.00013 | $0.05091 |
| Haiku 4.5 | $0.00006 | $0.02546 |
Grade A, and why
kibana-plugin-dev scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl http://localhost:3000/api/my_plugin/items How it starts
The opening of the file, as written. The whole thing — 3,634 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Kibana Plugin Development
This skill provides comprehensive knowledge for developing Kibana plugins across all major subsystems.
Plugin Architecture Overview
Kibana plugins consist of:
- Server-side (
server/): Routes, saved objects, background tasks - Client-side (
public/): React UI, embeddables, applications - Common (
common/): Shared types and constants
Plugin Lifecycle
// server/plugin.ts
export class MyPlugin implements Plugin {
setup(core: CoreSetup) {
// Register routes, saved objects, capabilities
// Called once at startup
}
start(core: CoreStart) {
// Access other plugins' start contracts
// Called after all plugins are set up
}
stop() {
// Cleanup
}
}
Key Principles
- Register everything in
setup(), notstart() - Use
await context.corein route handlers (async since 8.1) - Export types for other plugins to consume
- Use
common/for shared code between server and browser
Saved Objects
Saved Objects are Kibana's primary persistence layer for plugin data that needs to be managed, imported/exported, migrated across versions, and scoped to Kibana Spaces. Use Saved Objects when your data belongs to the Kibana application layer (configurations, user-created resources, plugin settings) rather than raw Elasticsearch data.
When to use Saved Objects vs plain ES indices:
- Use Saved Objects when: data needs space-scoping, import/export, version migrations, references to other Kibana objects, or management UI integration
- Use plain ES indices when: data is high-volume, time-series, search-heavy, or doesn't need Kibana management features
Type Registration
Register custom saved object types in the server plugin's setup() method:
// server/saved_objects/my_custom_type.ts
import { SavedObjectsType } from '@kbn/core/server';
export const MY_CUSTOM_TYPE = 'my-plugin-config';
export const myCustomType: SavedObjectsType = {
name: MY_CUSTOM_TYPE,
hidden: false,
namespaceType: 'single', // 'single' | 'multiple' | 'agnostic'
mappings: {
dynamic: false,
properties: {
title: { type: 'text' },
name: { type: 'keyword' },
description: { type: 'text' },
enabled: { type: 'boolean' },
priority: { type: 'integer' },
config: { type: 'object', dynamic: false },
tags: { type: 'keyword' },
created_at: { type: 'date' },
updated_at: { type: 'date' },
created_by: { type: 'keyword' },
},
},
management: {
importableAndExportable: true,
icon: 'gear',
defaultSearchField: 'title',
getTitle(obj) {
return obj.attributes.title || obj.attributes.name;
},
getInAppUrl(obj) {
return {
path: `/app/myPlugin#/config/${obj.id}`,
uiCapabilitiesPath: 'myPlugin.show',
};
},
},
migrations: {
// Version-keyed migration functions
'1.1.0': migrateV1_1_0,
'2.0.0': migrateV2_0_0,
},
};
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 3,634 lines · 63 tokens per session scan A dcd4d2668323
kibana-plugin-dev is a skill published in the GitHub repository ch-bas/kibana-plugin-helper (3 stars, last pushed 6mo ago), licensed MIT. It adds 63 tokens to every session and 25,456 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
mobile-flows-maestro
This skill should be used when Maestro is explicitly requested or already present and the task is to author, run, or debug iOS/Android Maestro flows; use Maestro MCP; or handle Maestro selectors, system UI, permissions, Keychain, JavaScript, waits, device state, flakiness, or CI. Evidence includes a .maestro directory…
create-site
Creates a new Power Pages code site (SPA) using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, scaffolding, component planning, design, implementation, validation, and deployment. Use when the user wants to create, build, or scaffold a new…
genpage
Creates, updates, and deploys Power Apps generative pages for model-driven apps using React v17, TypeScript, and Fluent UI V9. Orchestrates specialist agents for planning, entity creation, and code generation. Use it when user asks to build, retrieve, or update a page in an existing Microsoft Power Apps model-driven…
canvas-app
Creates or edits a Power Apps Canvas App through the Canvas Authoring MCP coauthoring session. Handles new app generation, direct targeted edits, complex multi-screen changes, responsive layout, per-screen self-QA, and compile-error convergence. Trigger on requests to create, build, generate, modify, update, change…
create-code-app
Creates Power Apps code apps using React and Vite. Use when building code apps, scaffolding projects, or deploying to Power Platform.
liveview-patterns
Build LiveView: async data (assignasync), PubSub (check connected?), phx-change events, form components/modals/uploads, streams for lists, livepatch. Use when handling interactions, debugging events, or tracking Presence.