AGENT SKILL

observe-modelplane

Use when the user wants to observe Modelplane-managed resources specifically. Natural phrasing: "is this from Modelplane?", "which ModelDeployment produced this replica?", "show me Modelplane endpoints", "what does modelplane.ai/deployment mean?", "is this Modelplane or generic Crossplane?". Do NOT load for: generic ownership (use scout-observe), Crossplane-only resources (use observe-crossplane), or authoring Modelplane APIs.

License 许可
MIT
最近更新
2026-11-14
Stars
★ 14
Forks
1

01 前言 Front Matter

name
observe-modelplane
phase
cross-cutting
description
Use when the user wants to observe Modelplane-managed resources specifically. Natural phrasing: "is this from Modelplane?", "which ModelDeployment produced this replica?", "show me Modelplane endpoints", "what does modelplane.ai/deployment mean?", "is this Modelplane or generic Crossplane?". Do NOT load for: generic ownership (use scout-observe), Crossplane-only resources (use observe-crossplane), or authoring Modelplane APIs.
allowed-tools
Bash(./cub-scout doctor *) Bash(cub-scout doctor *) Bash(cub scout doctor *) Bash(./cub-scout explain *) Bash(cub-scout explain *) Bash(cub scout explain *) Bash(./cub-scout trace *) Bash(cub-scout trace *) Bash(cub scout trace *) Bash(./cub-scout map list *) Bash(./cub-scout map workloads *) Bash(./cub-scout map orphans *) Bash(cub-scout map list *) Bash(cub-scout map workloads *) Bash(cub-scout map orphans *) Bash(cub scout map list *) Bash(cub scout map workloads *) Bash(cub scout map orphans *) Bash(./cub-scout tree *) Bash(cub-scout tree *) Bash(cub scout tree *) Bash(kubectl get *) Bash(kubectl describe *) Bash(kubectl get --show-managed-fields *)

02 资源文件 6

03 SKILL.md 正文

observe-modelplane

The controller-specific observer skill for Modelplane. Modelplane is built on Crossplane, but cub-scout classifies Modelplane as the higher-level platform owner when exact Modelplane API groups or identity labels are present.

Verified against pkg/agent/ownership.go detectModelplaneOwnership, pkg/agent/manager_strings.go OwnerModelplane, and modelplaneai/modelplane API definitions and composition functions.

When To Use

  • "Is this resource Modelplane-owned or generic Crossplane?"
  • "Which ModelDeployment produced this ModelReplica or endpoint?"
  • "What does modelplane.ai/deployment mean?"
  • "Show Modelplane ModelDeployment / ModelService / ModelEndpoint resources."
  • "Which InferenceCluster or ModelCache is this resource related to?"

Do Not Load For

  • Generic ownership detection - use scout-observe
  • Crossplane-only resources with no Modelplane API group or labels - use observe-crossplane
  • Authoring or mutating Modelplane resources

Detection Signals

Signal SubType Confidence Notes
Own API group modelplane.ai lowercased resource kind high Platform and model APIs such as InferenceCluster, ModelDeployment, ModelService, ModelEndpoint, ModelCache.
Own API group infrastructure.modelplane.ai lowercased resource kind high Composed infrastructure APIs such as EKSCluster, GKECluster, ServingStack.
modelplane.ai/deployment label modeldeployment high Deployment identity for replicas/endpoints.
modelplane.ai/modelcache label modelcache high Cache hydration resources.
modelplane.ai/serving label modelreplica high Serving identity stamped on remote workload pods/services.
modelplane.ai/workload label workload medium Per-engine workload selector.
modelplane.ai/cluster label inferencecluster medium Cluster relationship for replicas/endpoints.
modelplane.ai/release label release medium Modelplane-composed Helm Release metadata, such as gateway installs.
modelplane.ai/resource label resource medium Generic composed-resource identity for serving substrate pieces.
modelplane.ai/usage-consumer label usage-consumer medium ProviderConfig protection/usage wiring.
OwnerRef API group modelplane.ai or infrastructure.modelplane.ai lowercased owner kind high Modelplane owner-reference fallback.

Broad labels such as modelplane.ai/region, modelplane.ai/gpu, and modelplane.ai/pool are placement or selection metadata. cub-scout does not classify ownership from those labels alone.

Main Constructs

  • Platform-authored: InferenceGateway, InferenceClass, InferenceCluster
  • Model-team authored: ModelDeployment, ModelService, ModelEndpoint, ModelCache
  • Composed/generated: ModelReplica, EKSCluster, GKECluster, ServingStack

Manager Strings

Modelplane composition is implemented through Crossplane, so Modelplane-owned composed resources may carry the verified Crossplane manager strings:

  • apiextensions.crossplane.io/composite
  • apiextensions.crossplane.io/composed-<hash>
  • apiextensions.crossplane.io/claim
  • apiextensions.crossplane.io/managed
  • managed.crossplane.io/api-simple-reference-resolver

controllerManagersForOwner(OwnerModelplane, ...) accepts those Crossplane manager strings only when ownership detection has already found Modelplane.

Substrate Evidence

When a Modelplane-owned resource also exposes Crossplane composition metadata, cub-scout keeps Modelplane as the owner and surfaces Crossplane as substrate evidence:

Surface Field
map list --format json ownerEvidence
watch / bot event JSON owner.evidence
receipt verify --format json predicate.evidence.platformSubstrate
trace human/Markdown output Modelplane-on-Crossplane evidence: ... message

This evidence can include Crossplane composite, claim, composition-resource, and verified field-manager facts. Crossplane labels alone do not make a resource Modelplane-owned.

Worked Example

apiVersion: modelplane.ai/v1alpha1
kind: ModelEndpoint
metadata:
  name: qwen-demo-0
  namespace: ml-team
  labels:
    modelplane.ai/deployment: qwen-demo
    modelplane.ai/cluster: prod-us-east

cub-scout reads this as OwnerModelplane, SubType=modeldeployment, Name=qwen-demo. The modelplane.ai/cluster label remains useful context, but the deployment label is the higher-confidence ownership signal.

04 同仓库更多 Skills

confighub
confighub/cub-scout

triage-unhealthy-workload

Use when the user is responding to a broken Kubernetes workload UNDER TIME PRESSURE — pager-going-off, CI-red, "prod is down" framing. Natural phrasing: "deploy/api is CrashLoopBackOff, what now?", "the rollout is stuck, help", "this pod won't start", "pager fired on payments", "everything is red in argocd", "what should I check first?", "give me a triage plan for this workload". Composes doctor → explain → trace into a tight ~30-second loop the operator can run in a pager-acknowledged context. Do NOT load for: a planned investigation without urgency (use scout-diagnose directly), a drift question (use investigate-drift), or anything mutating (cub-scout never mutates — route to kubectl with the user driving).

运维与部署
★ 14
confighub
confighub/cub-scout

scout-verify

Use when the user wants a TYPED, FINGERPRINTED, IMMUTABLE evidence artifact about a Kubernetes resource — the Verify verb group of cub-scout (the receipt capability shipped in #446). Natural phrasing: "produce a receipt that this is in compliance", "give me an attestation that the cluster matches Git", "I need a verifiable record for the audit trail", "build a receipt verifying no manual edits since deploy", "verify deploy/api against source-truth and save the artifact", "validate this receipt has not been tampered with", "show me what receipts we have", "is this receipt tampered with?", "attach evidence to my CI gate". Load whenever intent is receipt / attestation / evidence-artifact / tamper-evident-record / verified-record / audit-trail / postmortem-evidence / acceptance-judge-input. Do NOT load for: a live comparison without a persisted artifact (use scout-compare), interpreting a single field's provenance (use scout-attribute), or actually applying a fix (cub-scout never mutates — route to cub / argocd / kubectl with the user driving).

运维与部署
★ 14
confighub
confighub/cub-scout

scout-observe

Use when the user wants to SEE what is running in a Kubernetes cluster, who owns it, and how it is structured — the read-only Observe verb group of cub-scout. Natural phrasing: "what is running in my cluster?", "give me a map of resources", "who owns this Deployment?", "trace this back to its source", "show me the ownership tree", "scan this cluster for risk", "dump the cluster as JSON", "stream cluster events", "run cub-scout as a bot", "what is the connection status?", "is this cluster healthy?". Load when intent is observe / inventory / map / show / list / trace / scan / dump / stream / bot / health-check over a Kubernetes cluster. Do NOT load for: explaining WHY something is broken (use scout-diagnose), comparing cluster state to intended state (use scout-compare), provenance of individual field values (use scout-attribute), or any action that mutates the cluster (cub-scout never mutates — route to cub or kubectl with the user driving).

★ 14
confighub
confighub/cub-scout

scout-mcp

Use when the user wants to expose cub-scout to an AI agent over MCP, wants a deterministic AI-ready snapshot of cluster context, or wants cub-scout running as a read-only event bot — the Integrate verb group. Natural phrasing: "start the MCP server", "expose cub-scout to Claude / Codex / my agent", "give me an AI-ready context pack of this cluster", "set up the MCP gateway", "what MCP tools does cub-scout expose?", "run cub-scout as a bot", "produce JSON context for an LLM to reason about this cluster". Load whenever intent is mcp / mcp-gateway / mcp-serve / context-pack / bot / agent-context / ai-snapshot / llm-context / model-context-protocol. Do NOT load for: actually running a non-integrate verb (those are scout-observe / scout-diagnose / scout-compare / scout-attribute / scout-ingest / scout-govern / scout-verify), or `cub` MCP integration (that's a separate tool surface).

Skill与智能体开发
★ 14
confighub
confighub/cub-scout

scout-ingest

Use when the user wants to ADOPT existing Kubernetes / GitOps workload structure into ConfigHub after observing the live cluster — the adoption/import verb group of cub-scout. Natural phrasing: "discover workloads in this cluster and propose ConfigHub units", "show me the import proposal before I apply", "import this Argo Application set", "bring my Flux Kustomizations into ConfigHub", "preview what would land in ConfigHub if I imported this repo", "parse my git repo as a ConfigHub import bundle", "import a cluster aggregator", "what would --git-path produce for this repo?". Load whenever intent is adopt / import / ingest / preview / propose / parse-repo / discovery / aggregator / bring-into-confighub / what-would-confighub-see. Do NOT load for: questions about who changed a resource, whether it was edited by hand or drifted (use scout-attribute or investigate-drift); reading an exported `kubectl get -o yaml` dump to answer a question about the cluster (that is not an import); basic live-cluster inventory (use scout-observe), troubleshooting (use scout-diagnose), comparing live state to ConfigHub (use scout-compare), or the actual write to ConfigHub via `cub variant upload` (that is `cub`, not cub-scout — route to cub skills). Important: `cub-scout import apply` IS the mutating write into ConfigHub — this skill teaches the read-only preview path and explicitly refuses to invoke `import apply` itself.

★ 14
confighub
confighub/cub-scout

scout-govern

Use when the user wants to consume CONNECTED ConfigHub governance signals from cub-scout — the Govern verb group. Natural phrasing: "show me the ChangeSet history for this unit", "what is the blast radius if I change this unit?", "which clusters in my fleet are outliers?", "show me yesterday's connected summary", "render this view across the fleet", "audit who changed this", "where did the last apply come from?", "list ConfigHub bundles I have", "show me the catalog of past snapshots". Load whenever intent is history / impact / blast-radius / fleet-outliers / summary / view / audit / bundle / catalog / connected-context. Do NOT load for: live cluster comparison (use scout-compare), receipts (use scout-verify), inventory of running pods (use scout-observe), or any mutation via cub. Most of this skill requires `cub auth login` — say so upfront.

★ 14