Fix 77 markdown lint errors across agent skill docs

Add .markdownlint-cli2.jsonc to suppress MD013 (line-length) and MD041
(first-line-heading) which are inappropriate for agent skill files with
YAML frontmatter and code examples.

Fix genuine structural issues in all affected files:
- Add blank lines around headings (MD022)
- Add blank lines around fenced code blocks (MD031)
- Add blank lines around lists (MD032)
- Add language specifiers to bare code fences (MD040)

Resolves: PRI-93

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
gandalf-the-greybeard[bot]
2026-03-11 01:14:26 +00:00
parent 5c32fed4d8
commit a5ffe58735
4 changed files with 37 additions and 4 deletions
+18 -2
View File
@@ -40,6 +40,7 @@ owners:
``` ```
**How to get the repositoryID:** **How to get the repositoryID:**
1. Log into artifacthub.io 1. Log into artifacthub.io
2. Go to Control Panel → Repositories → Add 2. Go to Control Panel → Repositories → Add
3. Select repository kind: "Headlamp plugins" 3. Select repository kind: "Headlamp plugins"
@@ -99,6 +100,7 @@ annotations: # CRITICAL — Headlamp-specific
These annotations in `artifacthub-pkg.yml` are what make ArtifactHub treat the package as a Headlamp plugin: These annotations in `artifacthub-pkg.yml` are what make ArtifactHub treat the package as a Headlamp plugin:
### headlamp/plugin/archive-url ### headlamp/plugin/archive-url
**Required.** Direct download URL to the plugin tarball on GitHub Releases. **Required.** Direct download URL to the plugin tarball on GitHub Releases.
Format: `https://github.com/<owner>/<repo>/releases/download/v<VERSION>/<pkgname>-<VERSION>.tar.gz` Format: `https://github.com/<owner>/<repo>/releases/download/v<VERSION>/<pkgname>-<VERSION>.tar.gz`
@@ -108,6 +110,7 @@ Format: `https://github.com/<owner>/<repo>/releases/download/v<VERSION>/<pkgname
- The tarball is uploaded as a GitHub Release asset — NOT to ArtifactHub - The tarball is uploaded as a GitHub Release asset — NOT to ArtifactHub
### headlamp/plugin/archive-checksum ### headlamp/plugin/archive-checksum
**Recommended.** SHA256 checksum of the tarball. **Recommended.** SHA256 checksum of the tarball.
Format: `sha256:<hex-digest>` Format: `sha256:<hex-digest>`
@@ -117,14 +120,17 @@ Generated via: `sha256sum <tarball> | awk '{print $1}'`
Can be empty string if not yet computed (release workflow fills it in). Can be empty string if not yet computed (release workflow fills it in).
### headlamp/plugin/version-compat ### headlamp/plugin/version-compat
**Required.** Minimum Headlamp version the plugin works with. **Required.** Minimum Headlamp version the plugin works with.
Format: `>=X.Y.Z` (e.g., `>=0.20.0`, `>=0.26`) Format: `>=X.Y.Z` (e.g., `>=0.20.0`, `>=0.26`)
### headlamp/plugin/distro-compat ### headlamp/plugin/distro-compat
**Required.** Comma-separated list of supported Headlamp deployment targets. **Required.** Comma-separated list of supported Headlamp deployment targets.
Valid values: Valid values:
- `in-cluster` — Headlamp running inside a Kubernetes cluster - `in-cluster` — Headlamp running inside a Kubernetes cluster
- `web` — Web-based Headlamp deployment - `web` — Web-based Headlamp deployment
- `app` — Headlamp desktop application (Electron) - `app` — Headlamp desktop application (Electron)
@@ -138,6 +144,7 @@ Example: `"in-cluster,web,app"`
## ArtifactHub Categories ## ArtifactHub Categories
Valid `category` values for Headlamp plugins: Valid `category` values for Headlamp plugins:
- `security` — Secrets, RBAC, policy enforcement - `security` — Secrets, RBAC, policy enforcement
- `storage` — CSI drivers, persistent volumes, Ceph/Rook - `storage` — CSI drivers, persistent volumes, Ceph/Rook
- `monitoring-logging` — Metrics, GPU monitoring, observability - `monitoring-logging` — Metrics, GPU monitoring, observability
@@ -148,7 +155,9 @@ Valid `category` values for Headlamp plugins:
## Optional Fields ## Optional Fields
### containersImages ### containersImages
For plugins associated with a specific container/operator: For plugins associated with a specific container/operator:
```yaml ```yaml
containersImages: containersImages:
- name: <component-name> - name: <component-name>
@@ -156,14 +165,18 @@ containersImages:
``` ```
### recommendations ### recommendations
Link to related ArtifactHub packages: Link to related ArtifactHub packages:
```yaml ```yaml
recommendations: recommendations:
- url: https://artifacthub.io/packages/helm/<repo>/<chart> - url: https://artifacthub.io/packages/helm/<repo>/<chart>
``` ```
### install ### install
Custom installation instructions (markdown): Custom installation instructions (markdown):
```yaml ```yaml
install: | install: |
## Install via Headlamp Plugin Manager ## Install via Headlamp Plugin Manager
@@ -171,6 +184,7 @@ install: |
``` ```
### logoPath ### logoPath
Path to a logo image file in the repo (relative to root). Path to a logo image file in the repo (relative to root).
--- ---
@@ -179,7 +193,7 @@ Path to a logo image file in the repo (relative to root).
This is the actual flow. There is NO other way to publish: This is the actual flow. There is NO other way to publish:
``` ```text
1. Developer triggers release workflow (workflow_dispatch with version) 1. Developer triggers release workflow (workflow_dispatch with version)
2. CI runs tests 2. CI runs tests
3. Workflow updates: 3. Workflow updates:
@@ -196,6 +210,7 @@ This is the actual flow. There is NO other way to publish:
``` ```
**Key points:** **Key points:**
- Steps 1-9 happen in your GitHub Actions workflow - Steps 1-9 happen in your GitHub Actions workflow
- Step 10 is entirely controlled by ArtifactHub — you cannot trigger it - Step 10 is entirely controlled by ArtifactHub — you cannot trigger it
- The tarball lives on GitHub Releases, not ArtifactHub - The tarball lives on GitHub Releases, not ArtifactHub
@@ -220,7 +235,7 @@ This is the actual flow. There is NO other way to publish:
The plugin tarball built by `@kinvolk/headlamp-plugin` contains: The plugin tarball built by `@kinvolk/headlamp-plugin` contains:
``` ```text
<pkgname>/ <pkgname>/
main.js # Bundled plugin code main.js # Bundled plugin code
package.json # Plugin metadata package.json # Plugin metadata
@@ -233,6 +248,7 @@ The `<pkgname>` directory inside the tarball matches the `name` field from `pack
## Validating Metadata ## Validating Metadata
Before committing, check: Before committing, check:
1. `version` matches across `package.json` and `artifacthub-pkg.yml` 1. `version` matches across `package.json` and `artifacthub-pkg.yml`
2. `archive-url` version tag matches the `version` field 2. `archive-url` version tag matches the `version` field
3. `name` in `artifacthub-pkg.yml` matches `package.json` `name` 3. `name` in `artifacthub-pkg.yml` matches `package.json` `name`
+10 -1
View File
@@ -99,6 +99,7 @@ class KubeObject<T extends KubeObjectInterface> {
### ResourceClasses ### ResourceClasses
All standard K8s resource types available (Secret, Namespace, Pod, etc.): All standard K8s resource types available (Secret, Namespace, Pod, etc.):
```typescript ```typescript
const [secrets, error, loading] = K8s.ResourceClasses.Secret.useList({ namespace: 'default' }); const [secrets, error, loading] = K8s.ResourceClasses.Secret.useList({ namespace: 'default' });
const [secret, error] = K8s.ResourceClasses.Secret.useGet('my-secret', 'default'); const [secret, error] = K8s.ResourceClasses.Secret.useGet('my-secret', 'default');
@@ -127,7 +128,8 @@ ApiProxy.apiFactory(group, version, resource): ApiClient
``` ```
**Service proxy URL** (accessing in-cluster services): **Service proxy URL** (accessing in-cluster services):
```
```text
/api/v1/namespaces/${ns}/services/http:${name}:${port}/proxy${path} /api/v1/namespaces/${ns}/services/http:${name}:${port}/proxy${path}
``` ```
@@ -146,6 +148,7 @@ From `@kinvolk/headlamp-plugin/lib/CommonComponents`:
`PercentageBar` — bar chart with `data` array of `{ name, value, fill }` `PercentageBar` — bar chart with `data` array of `{ name, value, fill }`
### SimpleTable (non-obvious props) ### SimpleTable (non-obvious props)
```typescript ```typescript
<SimpleTable <SimpleTable
data={items} data={items}
@@ -158,6 +161,7 @@ From `@kinvolk/headlamp-plugin/lib/CommonComponents`:
``` ```
### NameValueTable (non-obvious props) ### NameValueTable (non-obvious props)
```typescript ```typescript
<NameValueTable <NameValueTable
rows={[ rows={[
@@ -168,6 +172,7 @@ From `@kinvolk/headlamp-plugin/lib/CommonComponents`:
``` ```
### ConfigStore ### ConfigStore
```typescript ```typescript
import { ConfigStore } from '@kinvolk/headlamp-plugin/lib'; import { ConfigStore } from '@kinvolk/headlamp-plugin/lib';
const store = new ConfigStore<MyConfig>('plugin-name'); const store = new ConfigStore<MyConfig>('plugin-name');
@@ -177,6 +182,7 @@ store.useConfig(): () => MyConfig;
``` ```
### Pre-bundled (no package.json entry needed) ### Pre-bundled (no package.json entry needed)
react, react-dom, react-router-dom, @iconify/react, react-redux, @material-ui/core, @material-ui/styles, lodash, notistack, recharts, monaco-editor react, react-dom, react-router-dom, @iconify/react, react-redux, @material-ui/core, @material-ui/styles, lodash, notistack, recharts, monaco-editor
--- ---
@@ -264,6 +270,7 @@ vi.mock('@kinvolk/headlamp-plugin/lib/CommonComponents', () => ({
Headlamp supports light and dark themes. **Never hardcode colors.** Use CSS custom properties with light-mode fallbacks: Headlamp supports light and dark themes. **Never hardcode colors.** Use CSS custom properties with light-mode fallbacks:
### Required CSS variables for inline styles ### Required CSS variables for inline styles
```typescript ```typescript
// Text // Text
color: 'var(--mui-palette-text-primary)' color: 'var(--mui-palette-text-primary)'
@@ -289,6 +296,7 @@ color: 'var(--link-color, #1976d2)'
``` ```
### Common mistakes to avoid ### Common mistakes to avoid
- **NEVER** use raw `#fff`, `#000`, `#333`, `#666` etc. without wrapping in `var(--mui-palette-*)` - **NEVER** use raw `#fff`, `#000`, `#333`, `#666` etc. without wrapping in `var(--mui-palette-*)`
- **NEVER** use `rgba(0,0,0,0.5)` for overlays without a variable — this is the one exception where raw rgba is acceptable (backdrop overlays) - **NEVER** use `rgba(0,0,0,0.5)` for overlays without a variable — this is the one exception where raw rgba is acceptable (backdrop overlays)
- **NEVER** assume white backgrounds or dark text — always use `background-paper`/`text-primary` - **NEVER** assume white backgrounds or dark text — always use `background-paper`/`text-primary`
@@ -296,6 +304,7 @@ color: 'var(--link-color, #1976d2)'
- Fallback values after the comma are for environments where the variable isn't set — always use the light-mode default - Fallback values after the comma are for environments where the variable isn't set — always use the light-mode default
### Form inputs in custom components ### Form inputs in custom components
```typescript ```typescript
const inputStyle = { const inputStyle = {
border: '1px solid var(--mui-palette-divider, #ccc)', border: '1px solid var(--mui-palette-divider, #ccc)',
+8
View File
@@ -0,0 +1,8 @@
{
"config": {
// Line length — not enforced for agent skill docs with code examples
"MD013": false,
// First line heading — files use YAML frontmatter, not headings
"MD041": false
}
}
+1 -1
View File
@@ -4,7 +4,7 @@ This repository is the home for developing and maintaining Claude Code agent ski
## Repository Structure ## Repository Structure
``` ```text
.claude/agents/ # Agent skill definitions (markdown with YAML frontmatter) .claude/agents/ # Agent skill definitions (markdown with YAML frontmatter)
README.md # Project documentation README.md # Project documentation
``` ```