Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .claude/skills/products/provider-upjet-unifi/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: maintain-provider-upjet-unifi
description: Maintenance + advance task menu for devantler-tech/provider-upjet-unifi β€” an Upjet-generated Crossplane provider for Ubiquiti UniFi (from ubiquiti-community/terraform-provider-unifi). A shared library consumed by the platform cluster to manage UniFi as Kubernetes resources. Use when the daily maintainer selects provider-upjet-unifi.
---

# Maintain: UniFi Crossplane provider (shared agent/infra library)

A [Crossplane](https://crossplane.io) provider for **Ubiquiti UniFi**, generated with
[Upjet](https://github.com/crossplane/upjet) from
[`ubiquiti-community/terraform-provider-unifi`](https://github.com/ubiquiti-community/terraform-provider-unifi)
(registry source `ubiquiti-community/unifi`). A **shared library** in the portfolio β€” the `platform`
cluster consumes it (a `Provider` CR + `ProviderConfig`) to manage UniFi networks/WLANs/firewall/VPN/
WireGuard/devices/settings as Kubernetes custom resources, exactly like it consumes `provider-upjet-github`.

The canonical task menu lives **in the repo itself** β€” read the **`## Maintenance`** section of
`libraries/provider-upjet-unifi/AGENTS.md` (on the submodule's latest `main`):
<https://github.com/devantler-tech/provider-upjet-unifi/blob/main/AGENTS.md>. This card is a pointer by
design β€” the menu is maintained once, in the product's own `AGENTS.md`.

**It's a generated provider β€” respect the generation boundary.** Change behaviour via `config/**`
(external-name coverage, groups) or `internal/clients/unifi.go` (auth), then `make generate`; never
hand-edit `apis/**`, `internal/controller/**`, or `package/crds/**`. The standout recurring task is
**tracking upstream `terraform-provider-unifi` releases**: bump `TERRAFORM_PROVIDER_VERSION`, regenerate,
draft-PR the regenerated tree; new upstream resources get an external-name config so they generate.

Shared cross-repo rules are in the monorepo [`AGENTS.md`](../../../../AGENTS.md).

## Roadmap & enhancement
Roadmap lives in **GitHub Issues** on `devantler-tech/provider-upjet-unifi` (`roadmap`-labelled epics +
milestones). To **advance** (resource coverage, auth/reference-resolution improvements, test coverage,
CI/CD health, docs, and the eventual platform consumer wiring) follow
[`product-engineering`](../../product-engineering/SKILL.md).
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,7 @@
path = applications/fleet-gitops
url = git@github.com:devantler-tech/fleet-gitops.git
branch = main
[submodule "libraries/provider-upjet-unifi"]
path = libraries/provider-upjet-unifi
url = git@github.com:devantler-tech/provider-upjet-unifi.git
branch = main
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ keeping them healthy *and* moving them forward.
| Homebrew tap | `devantler-tech/homebrew-tap` (repo renamed from `homebrew-formulas`) | `homebrew-tap` | [AGENTS.md](https://github.com/devantler-tech/homebrew-tap/blob/main/AGENTS.md) |
| Agent skills (shared lib) | `devantler-tech/agent-skills` | `libraries/agent-skills` | [AGENTS.md](https://github.com/devantler-tech/agent-skills/blob/main/AGENTS.md) |
| Agent plugins (shared lib) | `devantler-tech/agent-plugins` (renamed from `copilot-plugins`) | `libraries/agent-plugins` | [AGENTS.md](https://github.com/devantler-tech/agent-plugins/blob/main/AGENTS.md) |
| UniFi Crossplane provider (shared lib) | `devantler-tech/provider-upjet-unifi` | `libraries/provider-upjet-unifi` | [AGENTS.md](https://github.com/devantler-tech/provider-upjet-unifi/blob/main/AGENTS.md) |
| Wedding app (private) | `devantler-tech/wedding-app` | `applications/wedding-app` | (private) |
| AS Coaching (private) | `devantler-tech/ascoachingogvaner` | `applications/ascoachingogvaner` | (private) |
| UniFi network (private) | `devantler-tech/unifi` | `applications/unifi` | [AGENTS.md](https://github.com/devantler-tech/unifi/blob/main/AGENTS.md) |
Expand Down
8 changes: 6 additions & 2 deletions docs/src/content/docs/projects/active.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import platformImg from "../../../assets/platform.webp";

These are the projects I am currently working on and actively maintaining. I'm always looking for contributors and feedback β€” feel free to visit each project's GitHub page and follow the contribution guidelines.

{/* projects-submodules: applications/ascoachingogvaner=grouped,applications/fleet-gitops=infra,applications/ksail=section,applications/unifi=omitted,applications/wedding-app=grouped,github/devantler-tech/.github-public=infra,github/devantler-tech/github-actions/actions=section,github/devantler-tech/github-actions/reusable-workflows=section,github/devantler-tech/maintenance=infra,github/personal/.github-public=infra,github/personal/profile=infra,homebrew-tap=omitted,libraries/agent-plugins=section,libraries/agent-skills=section,platform=section,templates/dotnet-template=templates-page,templates/gitops-tenant-template=templates-page,templates/go-template=templates-page,templates/platform-template=templates-page
{/* projects-submodules: applications/ascoachingogvaner=grouped,applications/fleet-gitops=infra,applications/ksail=section,applications/unifi=omitted,applications/wedding-app=grouped,github/devantler-tech/.github-public=infra,github/devantler-tech/github-actions/actions=section,github/devantler-tech/github-actions/reusable-workflows=section,github/devantler-tech/maintenance=infra,github/personal/.github-public=infra,github/personal/profile=infra,homebrew-tap=omitted,libraries/agent-plugins=section,libraries/agent-skills=section,libraries/provider-upjet-unifi=section,platform=section,templates/dotnet-template=templates-page,templates/gitops-tenant-template=templates-page,templates/go-template=templates-page,templates/platform-template=templates-page

This marker pins EVERY submodule this monorepo tracks (the source-of-truth is .gitmodules) to how it is represented on the site, so a newly-added product can't silently go unlisted. The docs CI drift-check asserts this path set EQUALS the live .gitmodules paths; when a submodule is added or removed, record it here with one disposition and update the page if needed:
β€’ section β€” has its own H2 product section on this page (KSail, Platform, Reusable Workflows, Actions, Agent Skills, Agent Plugins).
β€’ section β€” has its own H2 product section on this page (KSail, Platform, Reusable Workflows, Actions, Agent Skills, Agent Plugins, UniFi Provider).
β€’ grouped β€” a private self-hosted app folded into the "🏠 Self-Hosted Personal Apps" section (wedding-app, ascoachingogvaner).
β€’ templates-page β€” a starter template listed on the Templates page (/templates/) instead of here.
β€’ infra β€” an internal config/automation/GitOps-state repo, not surfaced as a project (the .github-public/profile/maintenance/fleet-gitops repos).
Expand Down Expand Up @@ -89,4 +89,8 @@ A collection of generic, tool-neutral [agent skills](https://github.com/devantle

An industry-standard agent-plugin marketplace that bundles curated agent skills β€” sourced from across the agent-skill ecosystem β€” into category-based plugins. Each bundled skill is pulled from its own upstream, spanning many sources including the in-house sibling library [Agent Skills](https://github.com/devantler-tech/agent-skills). It ships dual manifests so the same plugins work in [VS Code](https://code.visualstudio.com/), the [GitHub Copilot CLI](https://github.com/features/copilot), and [Claude Code](https://www.anthropic.com/claude-code).

## [πŸ›œ UniFi Provider](https://github.com/devantler-tech/provider-upjet-unifi) ![Crossplane](https://img.shields.io/badge/Crossplane-1A1A1A.svg?style=for-the-badge&logo=crossplane&logoColor=white) ![Kubernetes](https://img.shields.io/badge/Kubernetes-326CE5.svg?style=for-the-badge&logo=Kubernetes&logoColor=white) ![Go](https://img.shields.io/badge/Go-00ADD8.svg?style=for-the-badge&logo=Go&logoColor=white)

A [Crossplane](https://crossplane.io/) provider for [Ubiquiti UniFi](https://www.ui.com/), generated with [Upjet](https://github.com/crossplane/upjet) from the [`ubiquiti-community/terraform-provider-unifi`](https://github.com/ubiquiti-community/terraform-provider-unifi) Terraform provider. It exposes UniFi networks, WLANs, firewall, VPN/WireGuard, devices and settings as Kubernetes custom resources so they can be managed declaratively and reconciled by GitOps β€” the same way the [Platform](https://github.com/devantler-tech/platform) cluster consumes the upstream GitHub provider.

</div>
1 change: 1 addition & 0 deletions libraries/provider-upjet-unifi
Submodule provider-upjet-unifi added at 79867a