Skip to content

Add databricks-serverless-storage-check skill#82

Open
GabbysCode wants to merge 4 commits into
databricks:mainfrom
GabbysCode:add-serverless-storage-check
Open

Add databricks-serverless-storage-check skill#82
GabbysCode wants to merge 4 commits into
databricks:mainfrom
GabbysCode:add-serverless-storage-check

Conversation

@GabbysCode

@GabbysCode GabbysCode commented May 20, 2026

Copy link
Copy Markdown

Summary

Adds databricks-serverless-storage-check as a nested sub-skill under skills/databricks-serverless-migration/ — physically reflecting the parent/sub-skill hierarchy. The skill ships an executable preflight scanner detecting the antipattern where serverless tasks share state through /local_disk0, /tmp, or trustedTemp paths. This is the failure mode behind INTERNAL_ERROR: [Errno 13] Permission denied: '/local_disk0/.../trustedTemp.../...', where a parent task writes to local disk and a child task on a different node cannot read it.

Complementary to databricks-serverless-migration (which covers single-notebook migration and correctly recommends /local_disk0/tmp for intra-task scratch). This sub-skill covers the cross-task case.

New location

skills/
└── databricks-serverless-migration/
    ├── SKILL.md
    ├── references/
    └── databricks-serverless-storage-check/   ← new sub-skill here
        ├── SKILL.md
        ├── agents/openai.yaml
        ├── scripts/preflight.py
        ├── scripts/test_preflight.py
        ├── references/
        └── eval/

Contents

Path Purpose
skills/databricks-serverless-migration/databricks-serverless-storage-check/SKILL.md When-to-use, quick start, output interpretation, the core rule, related skills
.../agents/openai.yaml Codex marketplace metadata
.../scripts/preflight.py Stdlib-only AST + regex scanner with 5 input modes, --json flag, exit codes 0/1/2
.../scripts/test_preflight.py 7 self-tests, no third-party deps
.../references/pattern-catalog.md Full table for FANOUT001–006 + ENV001 with examples, fixes, and detection rules
.../references/remediation-guide.md Before/after code for Volumes / Workspace / taskValues / pipeline-downstream handoffs
.../eval/ground_truth.yaml 4 SkillForge test cases (3 positive triggers + 1 boundary) — stf lint clean (0 errors, 0 warnings)
.../eval/thinking_instructions.md L4 reasoning criteria (Efficiency, Clarity, Recovery, Completeness, Hierarchy Awareness, Scanner Output Hygiene)
.../eval/output_instructions.md L5 output criteria with expected artifacts, mandatory facts, negative signals, per-case acceptance bar
.../eval/manifest.yaml SkillForge eval config

Supporting changes

  • scripts/skills.py: iter_skill_dirs() extended to yield one level of nested skill directories, so the manifest generator and validator discover sub-skills alongside top-level skills
  • skills/databricks-serverless-migration/SKILL.md: Sub-skills table added; relative links updated to databricks-serverless-storage-check/SKILL.md
  • manifest.json: Regenerated (skill count unchanged: 9)

Detection rules

ID Severity Detects
FANOUT001 Blocker Local-disk path passed to dbutils.notebook.run, taskValues.set, or job-task parameter
FANOUT002 Blocker Child notebook reads from /local_disk0 or /tmp via widget, parameter, or taskValues.get
FANOUT003 Warning DAB job with multiple sibling tasks referencing the same local-disk path
FANOUT004 Warning pipeline_task immediately downstream of a notebook_task that wrote to local temp
FANOUT005 Info dbutils.fs.cp local-to-local inside a notebook invoked by a multi-task job (heuristic)
FANOUT006 Blocker Hardcoded BSI signature /local_disk0/spark-*/trustedTemp/... anywhere in source
ENV001 Info --run-id mode only: routes ENVIRONMENT_SETUP_ERROR.PYTHON_NOTEBOOK_ENVIRONMENT to support escalation

Validation

  • python3 scripts/skills.py validateEverything is up to date.
  • python3 .../scripts/test_preflight.py7/7 passing
  • stf lint .../databricks-serverless-storage-check0 errors, 0 warnings

Checklist

  • python3 scripts/skills.py validate passes
  • scripts/skills.py iter_skill_dirs() updated for nested skill discovery
  • SKILL_METADATA entry present in scripts/skills.py
  • agents/openai.yaml hand-authored
  • Self-tests pass (7/7)
  • SKILL.md body under 250 lines (149 lines)
  • Frontmatter description includes trigger phrases: trustedTemp, local_disk0, permission denied, fan-out, cross-task
  • stf lint passes (0 errors, 0 warnings)
  • SkillForge eval scaffolded: ground_truth.yaml (4 cases), thinking_instructions.md, output_instructions.md, manifest.yaml
  • Relative SKILL.md links updated for new nested path
  • Signed off per DCO

@GabbysCode GabbysCode requested review from a team, lennartkats-db and simonfaltum as code owners May 20, 2026 08:24
@dustinvannoy-db dustinvannoy-db self-requested a review May 27, 2026 17:22
@dustinvannoy-db

Copy link
Copy Markdown
Collaborator

We will reach out directly about possible consolidation of this PR and one of our Field Eng maintainers will add a review once we feel its ready.

@GabbysCode GabbysCode requested a review from a team as a code owner June 5, 2026 12:34
GABRIELLE DOMPREH added 3 commits June 15, 2026 14:38
…disk handoffs

Adds a new skill `databricks-serverless-storage-check` that ships an
executable preflight scanner for the antipattern where parent/child
tasks share state through /local_disk0, /tmp, or trustedTemp paths --
the failure seen in serverless jobs that fail with
`INTERNAL_ERROR: [Errno 13] Permission denied` on local-disk paths.

The scanner (scripts/preflight.py, stdlib-only, AST + regex) supports
five input modes (--notebook, --dir, --job-yaml, --job-id, --run-id)
and 7 detection rules (FANOUT001-006 plus ENV001 which routes
env-sync errors to support escalation). All 7 self-tests pass.

Complementary to databricks-serverless-migration (single-notebook
migration). Added a one-line cross-reference from that skill's
data-access table pointing here for multi-task fan-out concerns.

Includes the required agents/openai.yaml (hand-authored) and
SKILL_METADATA entry in scripts/skills.py; manifest regenerated and
`python3 scripts/skills.py validate` passes.

Signed-off-by: GABRIELLE DOMPREH <Gabby.dompreh@databricks.com>
…ruth.yaml

Adds generation_session_id and sources to all four test cases so
stf lint passes cleanly (0 errors, 0 warnings).

Co-authored-by: Isaac
…s-serverless-migration

Moves skills/databricks-serverless-storage-check/ →
skills/databricks-serverless-migration/databricks-serverless-storage-check/
to physically reflect the parent/sub-skill hierarchy.

- Update scripts/skills.py iter_skill_dirs() to yield one level of nested
  skill directories (sub-skills alongside top-level skills)
- Fix relative SKILL.md links: ../databricks-serverless-migration/ → ../
  and ../databricks-{dabs,jobs,core}/ → ../../databricks-{dabs,jobs,core}/
- Fix databricks-serverless-migration/SKILL.md links:
  ../databricks-serverless-storage-check/ → databricks-serverless-storage-check/
- Regenerate manifest.json (skill count unchanged: 9)
- Confirmed: python3 scripts/skills.py validate → Everything is up to date
- Confirmed: stf lint → 0 errors, 0 warnings

Co-authored-by: Isaac
@GabbysCode GabbysCode force-pushed the add-serverless-storage-check branch from 9fcbae3 to a44f32f Compare June 15, 2026 13:40
@jacksandom

Copy link
Copy Markdown

Hi @GabbysCode - can you restructure to match the other skills. So for example, your markdown files should be references for databricks-serverless-migration. Consider if you need 3 md files for this or if we can consolidate?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be able to remove this and assets as it is captured in the main skill.

…t skill structure

- Merge pattern-catalog.md + remediation-guide.md into a single
  skills/databricks-serverless-migration/references/serverless-storage-check.md,
  matching how sibling reference docs are structured in the parent skill
- Remove databricks-serverless-storage-check/references/ (now consolidated above)
- Remove databricks-serverless-storage-check/agents/ and assets/ (captured
  at the parent skill level)
- Update SKILL.md links from local references/ to ../references/serverless-storage-check.md
- Regenerate manifest.json

Co-authored-by: Isaac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants