reconciler-logic

Implements grafana-app-sdk operator TypedReconciler logic with UpdateObject status handling and RequeueAfter scheduling.

1|Updated May 21, 2026
One-click install
npx skills add https://github.com/1k-off/umbraco-observability-playground --skill reconciler-logic-1k-off
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: reconciler-logic
Source: https://github.com/1k-off/umbraco-observability-playground/tree/main/.agents/skills/reconciler-logic
Command: npx skills add https://github.com/1k-off/umbraco-observability-playground --skill reconciler-logic-1k-off

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill helps you implement the reconciler business-logic loop in a grafana-app-sdk operator so your resources converge to the desired state without race conditions or noisy retries.

Core Features & Use Cases

  • TypedReconciler pattern: Build a strongly-typed ReconcileFunc using operator.TypedReconciler for reliable generation/action handling.
  • Correct status updates: Update only the status subresource via resource.UpdateObject to avoid 409 conflicts from concurrent spec changes.
  • Convergence & scheduling: Use LastObservedGeneration to skip unnecessary work and RequeueAfter to poll or retry asynchronous external operations.
  • Deletion and cleanup support: Handle ReconcileActionDeleted cleanly and choose between reconciler vs watcher patterns for event processing.

Quick Start

Ask an AI to: generate a TypedReconciler for my custom Kubernetes kind that skips already-observed generations, updates status using resource.UpdateObject (status subresource), and requeues with RequeueAfter while an external job transitions from Pending to Ready.

Frequently Asked Questions about reconciler-logic

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I update Kubernetes operator status without getting 409 conflicts?

To update status without 409 conflicts, apply changes only to the status subresource using `resource.UpdateObject`. This isolates status writes from concurrent spec changes in your grafana-app-sdk operator.

How does a reconciler loop handle idempotency in a Kubernetes operator?

A reconciler loop handles idempotency by tracking `LastObservedGeneration`. It skips unnecessary reconcile actions if the resource generation matches the last observed value, preventing duplicate work on create, update, and resync events.

What is the best way to poll an asynchronous external job in a Kubernetes reconciler?

The best way to poll an asynchronous external job in a Kubernetes reconciler is to return a `RequeueAfter` duration in the `operator.ReconcileResult`. This schedules delayed polling until the external operation transitions states, like Pending to Ready.

How do I handle resource deletion cleanly in a grafana-app-sdk operator?

To handle resource deletion cleanly in a grafana-app-sdk operator, check for the `ReconcileActionDeleted` action within your `TypedReconciler` logic. This allows you to execute cleanup tasks before the resource is fully removed.

When should I choose a reconciler pattern over a watcher in a Kubernetes controller?

Choose a reconciler pattern over a watcher when you need to drive resources toward a desired state on create, update, delete, or resync events. Watchers are better suited for simple event processing without convergence logic.