Kernel Metadata
Overview
Use this skill to create, validate, or repair kernel-metadata.json for Kaggle notebook/kernel pushes. Keep metadata minimal, explicit, and aligned with the local code file.
Required and Common Fields
| Field | Purpose |
|---|---|
id |
Full kernel id, usually <owner>/<slug> |
id_no |
Numeric id when available |
title |
Human-readable notebook title |
code_file |
Local source file to run |
language |
python, r, or rmarkdown |
kernel_type |
script or notebook |
is_private |
Defaults to true |
enable_gpu |
Defaults to false |
enable_internet |
Defaults to false |
dataset_sources |
Attached dataset references |
competition_sources |
Attached competition references |
kernel_sources |
Attached notebook/kernel references |
model_sources |
Attached model references |
Validation Procedure
- Confirm
kernel-metadata.jsonis valid JSON. - Confirm
iduses the expected owner/slug and matches the intended Kaggle notebook. - Confirm
code_fileexists in the same folder passed tokaggle kernels push -p <folder>. - Confirm
languageis one ofpython,r, orrmarkdown. - Confirm
kernel_typematches the file and execution mode:notebookfor.ipynb,scriptfor scripts. - Confirm privacy and internet settings are deliberate. Default private and no internet are safer.
- Confirm source arrays contain valid public Kaggle references and no local filesystem paths.
- Load
notebook-lifecyclebefore push or pull workflows.
Source Attachments
Use dataset_sources, competition_sources, kernel_sources, and model_sources to attach Kaggle resources. Prefer exact owner/slug references where available. For competition notebooks, ensure the competition source is attached and rules allow all data/model sources used.
id and Browser URL Construction
The id field identifies the Kaggle notebook/kernel using the documented suffix format owner/kernel-slug. When id is present and valid, agents may derive the human browser URL:
https://www.kaggle.com/code/<owner>/<kernel-slug>
Validate before deriving: id contains exactly one /, both owner and slug are non-empty, id is not a full URL, and the slug comes from the actual id rather than a generated title guess. If id_no is also present, treat it as a stable numeric identifier for API operations where supported, but do not use id_no alone to construct the browser URL.
The derived URL is a practical browser path based on the documented identifier suffix, not a separately documented CLI return value. Private notebooks may require sign-in or permissions, and renames or slug changes can make older derived URLs stale.
Accelerators and Metadata
enable_gpu is a legacy/simple boolean for GPU enablement, while CLI push can specify accelerator IDs with --accelerator <ID>. Valid accelerator IDs include NvidiaTeslaP100, NvidiaTeslaT4, NvidiaTeslaT4Highmem, NvidiaTeslaA100, NvidiaL4, NvidiaL4X1, NvidiaH100, NvidiaRtxPro6000, TpuV38, Tpu1VmV38, TpuV5E8, and TpuV6E8. Warn before high-end accelerators or long timeouts because they can consume quotas.
Safe Defaults
Keep is_private: true unless the user explicitly requests public visibility. Keep enable_internet: false for competition notebooks unless rules and reproducibility needs allow internet. Avoid embedding secrets in metadata or notebook source; recommend Kaggle Secrets for sensitive values.
Unsupported Metadata Fields
Kaggle kernel-metadata.json does not support secrets or arbitrary environment variables. Do not add fake fields such as secrets, environment, or env. For internet/GPU tunnel workloads, verify supported fields instead:
{
"enable_gpu": true,
"enable_internet": true
}
Secrets must not be modeled as metadata. If a CLI-pushed committed run needs auth-free connectivity, redesign the workflow to avoid secrets.
Repair Patterns
- Missing
code_file: identify the intended.ipynb,.py,.R, or.Rmdfile and set the field explicitly. - Wrong language: infer from extension only after confirming with the user when ambiguous.
- Broken source arrays: remove local paths and replace with Kaggle dataset, competition, kernel, or model references.
- Visibility changes: require explicit confirmation before changing private to public.
Sources
- Kaggle kernel metadata docs: https://github.com/Kaggle/kaggle-api/blob/main/docs/kernels_metadata.md
- Kaggle kernels CLI: https://github.com/Kaggle/kaggle-api/blob/main/docs/kernels.md