Beta — this extension is under active development. Expect breaking changes.
Full TypeScript language support for .ct (Cloudticon Template) files in Visual Studio Code — autocompletion, type checking, URL imports, and Values injection out of the box.
Features
- TypeScript IntelliSense for
.ctfiles — autocompletion, go-to-definition, hover docs, and diagnostics powered by the built-in TypeScript language service. - URL import resolution — imports like
from "https://github.com/cloudticon/k8s@master"are automatically cloned and cached in~/.ct/cache/. The TypeScript server resolves them transparently. - Values typing — a
values.jsonorvalues.yamlin your project root is parsed and aValuestype declaration is generated soValues.*has full autocompletion and type safety. - Zero configuration — just open a folder containing
.ctfiles and everything works.
Requirements
| Requirement | Version |
|---|---|
| VS Code | ≥ 1.80.0 |
| Git | any (must be on PATH — used to clone URL imports) |
The ct CLI is not required for editor features, but you need it to render manifests (ct template).
Quick Start
- Install the extension from the VS Code Marketplace (search for Cloudticon).
- Open a project that contains
.ctfiles (or runct initto scaffold one). - Start editing — IntelliSense, diagnostics, and URL import resolution activate automatically.
Example .ct file
import { deployment, service } from "https://github.com/cloudticon/k8s@master";
const app = deployment({
name: "web-app",
image: Values.image, // ← autocompleted from values.json
replicas: Values.replicas,
ports: [{ containerPort: 8080 }],
});
service({
name: "web-app-svc",
selector: { app: app.metadata.name },
ports: [{ port: 80, targetPort: 8080 }],
});
Example values.json
{
"image": "nginx:1.25",
"replicas": 3
}
How It Works
- When a
.ctfile opens, the extension reassigns its language to TypeScript so the full TS toolchain applies. - A TypeScript server plugin (
ct-typescript-plugin) intercepts module resolution and maps URL specifiers to cached git repos under~/.ct/cache/. - The extension watches
values.json/values.yamland generates adeclare const Valuestype declaration under~/.ct/types/, which the plugin injects into the compilation context. - If a URL import is missing from the cache, the extension clones it (shallow, single-branch) and restarts the TS server automatically.
Extension Settings
This extension does not contribute any user-facing settings or commands at this time. Everything is automatic.
Known Issues
- Only GitHub-style URL imports are supported (
https://github.com/{owner}/{repo}@{version}). - The first download of a URL import may take a few seconds depending on repository size.
- Cluster-scoped vs namespaced resource distinction is handled by the
ctCLI, not the extension.
Related
- ct CLI — the Kubernetes manifest generator that consumes
.ctfiles. - k8s helpers — the standard library of Kubernetes resource helpers for
.ct.
License
MIT