Skip to content
Open
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
9 changes: 0 additions & 9 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
{
"version": "2",
"updated_at": "2026-05-15T12:29:33Z",
"skills": {
"databricks-apps": {
"version": "0.1.1",
"description": "Databricks Apps development and deployment (evaluates analytics vs synced tables data access)",
"experimental": false,
"updated_at": "2026-05-15T12:19:02Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -33,7 +31,6 @@
"version": "0.1.0",
"description": "Core Databricks skill for CLI, auth, and data exploration",
"experimental": false,
"updated_at": "2026-05-12T22:07:25Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -48,7 +45,6 @@
"version": "0.0.0",
"description": "Declarative Automation Bundles (DABs) for deploying and managing Databricks resources",
"experimental": false,
"updated_at": "2026-05-12T20:04:29Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -66,7 +62,6 @@
"version": "0.1.0",
"description": "Databricks Jobs orchestration and scheduling",
"experimental": false,
"updated_at": "2026-05-12T20:04:29Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -78,7 +73,6 @@
"version": "0.1.0",
"description": "Databricks Lakebase Postgres: projects, scaling, connectivity, synced tables, and Data API",
"experimental": false,
"updated_at": "2026-05-15T12:29:29Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -97,7 +91,6 @@
"version": "0.1.0",
"description": "Databricks Model Serving endpoint management",
"experimental": false,
"updated_at": "2026-05-15T12:19:44Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand All @@ -110,7 +103,6 @@
"version": "0.1.0",
"description": "Databricks Pipelines (DLT) for ETL and streaming",
"experimental": false,
"updated_at": "2026-05-15T12:14:27Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down Expand Up @@ -157,7 +149,6 @@
"version": "0.1.0",
"description": "Migrate Databricks workloads from classic compute to serverless compute, including compatibility checks and concrete fixes",
"experimental": false,
"updated_at": "2026-05-12T20:04:29Z",
"files": [
"SKILL.md",
"agents/openai.yaml",
Expand Down
27 changes: 3 additions & 24 deletions scripts/skills.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import re
import shutil
import sys
from datetime import datetime, timezone
from pathlib import Path


Expand Down Expand Up @@ -92,8 +91,8 @@ def iter_skill_files(skill_path: Path):
"""Yield tracked files in a skill directory, skipping VCS-ignored noise.

Filters out dot-prefixed paths (.DS_Store, .git, etc.), __pycache__
directories, and *.pyc files so manifest output and updated_at timestamps
stay reproducible across machines.
directories, and *.pyc files so manifest output stays reproducible
across machines.
"""
for file_path in skill_path.rglob("*"):
if not file_path.is_file():
Expand All @@ -108,22 +107,6 @@ def iter_skill_files(skill_path: Path):
yield file_path


def get_skill_updated_at(skill_path: Path) -> str:
"""Get the most recent modification time of any file in the skill directory."""
latest_mtime = 0.0
for file_path in iter_skill_files(skill_path):
mtime = file_path.stat().st_mtime
if mtime > latest_mtime:
latest_mtime = mtime

if latest_mtime == 0.0:
return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")

return datetime.fromtimestamp(latest_mtime, timezone.utc).strftime(
"%Y-%m-%dT%H:%M:%SZ"
)


# ---------------------------------------------------------------------------
# Sync
# ---------------------------------------------------------------------------
Expand All @@ -132,7 +115,7 @@ def sync_assets(repo_root: Path) -> int:
"""Copy shared assets from repo root into each skill directory.

Only writes when content differs. Uses shutil.copy2 to preserve mtime
from the source so that skill updated_at timestamps stay stable.
from the source.

Returns count of files written.
"""
Expand Down Expand Up @@ -216,7 +199,6 @@ def generate_manifest(repo_root: Path) -> dict:
"version": extract_version_from_skill(skill_dir),
"description": metadata.get("description", ""),
"experimental": metadata.get("experimental", False),
"updated_at": get_skill_updated_at(skill_dir),
"files": files,
}

Expand All @@ -231,7 +213,6 @@ def generate_manifest(repo_root: Path) -> dict:

return {
"version": "2",
"updated_at": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
"skills": skills,
}

Expand All @@ -243,12 +224,10 @@ def generate_manifest(repo_root: Path) -> dict:
def normalize_manifest(manifest: dict) -> dict:
"""Normalize manifest for comparison by excluding volatile fields."""
normalized = manifest.copy()
normalized.pop("updated_at", None)

skills = {}
for name, skill in manifest.get("skills", {}).items():
skill_copy = skill.copy()
skill_copy.pop("updated_at", None)
skill_copy.pop("base_revision", None)
skills[name] = skill_copy

Expand Down
Loading