Imported from Voycepeh/FabricOps-Starter-Kit (
.agents/skills/fabricops/SKILL.md). Install upstream withnpx skills add Voycepeh/FabricOps-Starter-Kit --skill fabricops. Copyright stays with the author.
Use this skill when authoring notebooks, changing package helpers, or reviewing generated references for the FabricOps Starter Kit.
What this skill is for
This skill guides automation tools working on the FabricOps Starter Kit repository. It is not public user documentation and should not become a replacement for the docs, generated references, source code, or notebook templates. Point agents to the source of truth instead of duplicating full documentation, generated manifests, or rule pages here.
Reference sources
Start with the existing generated function reference system. Do not replace it with a separate documentation or manifest system.
docs/reference/_data/public-function-call-flows.json— committed normalized public callable architecture contract.public_functionscontains public-root metrics and lifecycle,defined_functionscontains one record per callable, andrelationshipscontains direct caller-to-callee edges used for helper reachability and graph traversal.docs/assets/public-function-call-flows-dashboard.html— published dashboard frontend generated from the public call-flow contract for reviewer exploration and AI cleanup packet export. It reconstructs expanded call trees from the normalized relationships at runtime.docs/api/reference/— generated individual public callable pages for notebook authors and maintainers.- Public callable pages under
docs/api/reference/embed internal helper implementation details for package maintenance. Standalonedocs/reference/internal/pages are generated only when explicitly enabled for maintainer diagnostics. docs/reference/dq-rules/— generated DQ rule reference pages for supported rule types, parameters, and examples.
Core operating principles
- Respect
00_env_config; it owns environment setup and configured runtime targets. - Use configured metadata targets rather than assuming an attached/default lakehouse.
- Route ordinary reusable Fabric table/file reads and writes that users or multiple workflows can reasonably reuse through the appropriate foundational I/O function under
src/fabricops_kit/io/. - Keep workflow-specific physical I/O private to its owning domain when it has no credible direct user use, and reuse central Fabric routing/config/connector helpers rather than promoting niche operations into public APIs.
- Keep domain-specific mutations private to their owning domain when native Spark/Delta code is clearer, while reusing central Fabric routing/config helpers rather than inventing a generic mutation API.
- Prefer existing helpers before creating wrappers or new workflow steps.
- Do not hardcode Fabric workspace IDs or item IDs unless explicitly provided by the user.
- Do not bypass governed metadata evidence when agreement, review, enforcement, lineage, or handover workflows require it.
- Do not invent unsupported workflow steps, notebook responsibilities, DQ rule types, parameters, or enforcement behavior.
- Do not create a separate documentation or manifest system for FabricOps guidance.
- Keep examples public-safe and generic; do not include production values, tenant or workspace identifiers, internal URLs, secrets, or screenshots.
- Check side effects before using a function.
- Treat
Not documented yetas incomplete guidance; inspect source code, docstrings, generated manifests, and generated reference pages before generating code. - Update docs and tests together when changing public APIs, generated reference behavior, or notebook-facing guidance.
Notebook workflow ownership
00_env_configowns environment selection, runtime setup, and metadata target configuration.01_governanceowns agreement and steward context.- Profiling or review notebooks own discovery, suggested metadata, and review evidence.
- Pipeline notebooks own executable validation, enforcement, lineage, and run evidence.
- Handover outputs should be assembled from approved metadata and runtime evidence rather than ad hoc notebook-only state.
Data quality rules
DQ rules are governed evidence, not ad hoc notebook checks. They should flow through contract, profiling, review, approval, metadata, and enforcement workflows so downstream notebooks can explain which approved expectations were evaluated and why.
- Use
docs/reference/dq-rules/for generated DQ rule guidance, and inspect individual generated rule pages before recommending syntax or parameters. - Use
widget_review_dq_rulesfor DQ review and approval workflows. - Use
enforce_dq_rulesfor executable pipeline enforcement before target writes. - Do not bypass approved metadata when pipeline enforcement requires reviewed rules; enforcement should read approved active rules from the configured metadata target.
- Do not invent unsupported DQ rule types, syntax, parameters, or enforcement semantics.
- Summarize the relevant generated DQ rule page instead of duplicating full generated rule content.
docs/reference/dq-rules/index.md is the source of truth for currently supported DQ rule pages; the list below is an orientation aid and must not become a separate permanent source of truth:
docs/reference/dq-rules/accepted-values.mddocs/reference/dq-rules/between.mddocs/reference/dq-rules/column-a-gt-column-b.mddocs/reference/dq-rules/column-a-gte-column-b.mddocs/reference/dq-rules/column-pair-equal.mddocs/reference/dq-rules/date-between.mddocs/reference/dq-rules/date-not-future.mddocs/reference/dq-rules/expression-true.mddocs/reference/dq-rules/freshness.mddocs/reference/dq-rules/greater-than.mddocs/reference/dq-rules/greater-than-or-equal.mddocs/reference/dq-rules/less-than.mddocs/reference/dq-rules/less-than-or-equal.mddocs/reference/dq-rules/max-age-days.mddocs/reference/dq-rules/non-empty-string.mddocs/reference/dq-rules/not-in-values.mddocs/reference/dq-rules/not-null.mddocs/reference/dq-rules/null-rate-below.mddocs/reference/dq-rules/regex-match.mddocs/reference/dq-rules/required-when.mddocs/reference/dq-rules/unique.mddocs/reference/dq-rules/unique-combination.mddocs/reference/dq-rules/value-when.md
Generated reference discipline
- Use
docs/reference/_data/public-function-call-flows.jsonas a normalized graph. Find a public root inpublic_functions, inspect its canonical function row indefined_functions, then userelationshipswherecaller_qualified_namematches the current function to find direct callees. Recurse through those relationships only when transitive helper reachability or scope is needed. Useinbound_callersandinbound_source_referencesondefined_functionsas separate signals; an import/reference is not a call edge. - Use
docs/assets/public-function-call-flows-dashboard.htmlwhen reviewer exploration, an expanded call tree, or an AI cleanup packet is needed. The dashboard reconstructs the tree from the same normalized JSON rather than relying on a stored expandedflowarray. - Use pages in
docs/api/reference/for notebook authoring guidance. - Use the embedded Internal implementation summary on public callable pages for package maintenance; standalone
docs/reference/internal/pages are disabled by default and should only be used when explicitly generated for maintainer diagnostics. - Never edit generated reference files manually. Update the authoritative source inputs, reference metadata, or generator and regenerate them.
- If function-level source changes affect callable structure, source locations, public exports, helper relationships, architecture classification, or public function flow metrics, regenerate the committed architecture contract with
PYTHONPATH=src python scripts/generate_public_function_call_flows_json.py. When a source, docstring, export, call-flow, reference-metadata, or generator change affects generated individual function reference content, regenerate the affected committed pages in the same source PR withPYTHONPATH=src python scripts/generate_individual_function_reference_pages.py; do not regenerate them when the change cannot affect their content.
Workflow
- Identify whether the task is agreement, profiling or review, pipeline enforcement, governance review, handover, notebook authoring, or package maintenance.
- Check the notebook workflow ownership above and current
How FabricOps Worksguide for the relevant starter flow. - Read the matching page in
docs/api/reference/before calling or recommending a public helper. - For DQ work, read
docs/reference/dq-rules/index.md, each relevant generated DQ rule page, and the callable page before generating notebook code. - Inspect
docs/reference/_data/public-function-call-flows.jsonwhen you need callable architecture. Usepublic_functionsfor root metrics/lifecycle,defined_functionsfor individual callable metadata, andrelationshipsfor direct edges; follow edges recursively only for the downstream scope you actually need. - Use the embedded Internal implementation summary on callable pages when maintaining package implementation details; only use
docs/reference/internal/if standalone internal pages were explicitly generated for maintainer diagnostics. - Preserve
00_env_configmetadata routing for reads and writes, especially governed evidence tables such asMETADATA_DQ_RULES.