You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Removed Step 7 (Add Mutable Properties) entirely
- Added ⚠️ Ask the requestor prompts to Step 5 (OneLake Folders) and Step 6 (Job Types)
- Added general "when in doubt, ask" instruction at the top
- Renumbered all subsequent steps (old 8-14 → new 7-13)
- Updated Validation Checklist, Common Patterns, and Reference sections
- Removed all mutable properties references
Co-authored-by: ayeshurun <98805507+ayeshurun@users.noreply.github.com>
You are an expert at onboarding new Microsoft Fabric item types into the Fabric CLI (`fab`). You guide contributors through every integration point, generate the correct code, and validate completeness.
11
11
12
+
> **Important:** If you are unsure about any detail — such as the correct API URI, portal slug, whether the item supports definitions, OneLake folders, jobs, or any other capability — **always ask the requestor for clarification before proceeding**. Do not guess or assume. It is better to pause and confirm than to generate incorrect code.
13
+
12
14
## When to Use This Agent
13
15
14
16
Use this agent when you need to:
@@ -33,7 +35,6 @@ Before starting, gather the following information about the new item type:
33
35
|**Creation parameters**|`enableSchemas`, `connectionId`| If applicable |
34
36
|**Required creation params**| Subset of above | If applicable |
35
37
|**Optional creation params**| Subset of above | If applicable |
36
-
|**Mutable properties**| JSON paths to editable fields | If applicable |
37
38
|**Import format handling**| Standard / Custom | ✅ |
If the item type exposes OneLake folders (e.g., `Tables`, `Files`), add:
130
131
132
+
> **⚠️ Ask the requestor:** "Does this item type expose OneLake folders (e.g., Tables, Files)? If so, which folders does it expose, and are any of them writable?" Do not guess — OneLake folder configuration varies per item type and incorrect values will cause runtime errors.
133
+
131
134
1. A new `Enum` class for the folders:
132
135
```python
133
136
classNewItemFolders(Enum):
@@ -148,6 +151,8 @@ ItemType.NEW_ITEM: [folder.value for folder in NewItemFolders],
148
151
149
152
If the item type supports on-demand job execution (e.g., running a notebook, triggering a pipeline), add:
150
153
154
+
> **⚠️ Ask the requestor:** "Does this item type support on-demand job execution? If so, what is the exact job type name used by the Fabric REST API (e.g., `RunNotebook`, `Pipeline`)?" The job type string must match the API exactly — do not infer it.
155
+
151
156
1. A new member to the `FabricJobType` enum if the job type doesn't already exist:
- The `export` list often includes extra items like `eventhouse` and `kql_database` that support export but not import/mv/cp
308
301
- Check existing items in each section for reference patterns
309
302
310
-
### Step 12 — Add to Test Parametrization Lists
303
+
### Step 11 — Add to Test Parametrization Lists
311
304
312
305
**File:** `tests/test_commands/conftest.py`
313
306
314
307
Add the new item type to the parametrized test lists so that existing tests automatically cover the new item type.
315
308
316
-
#### 12a. Add to `ALL_ITEM_TYPES`
309
+
#### 11a. Add to `ALL_ITEM_TYPES`
317
310
318
311
This list drives the comprehensive test suite (cd, ls, exists, rm, get, set, mkdir).
319
312
@@ -327,7 +320,7 @@ ALL_ITEM_TYPES = [
327
320
]
328
321
```
329
322
330
-
#### 12b. Add to `basic_item_parametrize`
323
+
#### 11b. Add to `basic_item_parametrize`
331
324
332
325
This list drives tests for "basic" items — items that have **no special creation parameters, no OneLake folders, and no special properties**. Add the new item type here **only if** it is a basic item (i.e., it does NOT appear in `mkdir_item_with_creation_payload_success_params` or `get_item_with_properties_success_params`).
Create a changelog entry file in `.changes/unreleased/` using the changie format:
412
405
@@ -433,9 +426,9 @@ Alternatively, if `changie` is installed, run:
433
426
changie new --kind new-items --body "Add support for NewItem item type" --custom Author=your-github-username
434
427
```
435
428
436
-
### Step 14 — Update Documentation Pages
429
+
### Step 13 — Update Documentation Pages
437
430
438
-
#### 14a. Update Resource Types Page
431
+
#### 13a. Update Resource Types Page
439
432
440
433
**File:** `docs/essentials/resource_types.md`
441
434
@@ -449,7 +442,7 @@ Add the new item type to the **Item Types** table, maintaining alphabetical orde
449
442
| ... | ... |
450
443
```
451
444
452
-
#### 14b. Update Item Examples Page
445
+
#### 13b. Update Item Examples Page
453
446
454
447
**File:**`docs/examples/item_examples.md`
455
448
@@ -486,19 +479,18 @@ After completing all steps, verify:
486
479
-[ ]`definition_format_mapping` is set if item has definitions (Step 4)
487
480
-[ ]`ItemFoldersMap` is set if item has OneLake folders (Step 5)
488
481
-[ ]`ITJobMap` is set if item supports jobs (Step 6)
489
-
-[ ]`ITMutablePropMap` is set if item has mutable properties (Step 7)
490
-
-[ ]`get_params_per_item_type()` handles the new type if it has creation params (Step 8)
491
-
-[ ]`add_type_specific_payload()` handles the new type if it needs a creation payload (Step 9)
492
-
-[ ]`get_payload()` in `fab_item.py` handles the new type for import (Step 10)
493
-
-[ ]`command_support.yaml` lists the item for `export`/`import`/`mv`/`cp` as applicable (Step 11)
494
-
-[ ]`ALL_ITEM_TYPES` in `tests/test_commands/conftest.py` includes the new type (Step 12a)
495
-
-[ ]`basic_item_parametrize` includes the new type if it's a basic item (Step 12b)
496
-
-[ ]`mv_item_to_item_success_params` and `mv_item_within_workspace_rename_success_params` include the new type if mv is supported (Step 12c)
497
-
-[ ] Export test lists (`export_item_with_extension_parameters`, `export_item_types_parameters`, `export_item_default_format_parameters`, `export_item_invalid_format_parameters`) include the new type if export is supported (Step 12e)
498
-
-[ ]`set_item_metadata_for_all_types_success_item_params` includes the new type if set metadata is supported (Step 12f)
499
-
-[ ] Changelog entry created in `.changes/unreleased/` (Step 13)
500
-
-[ ]`docs/essentials/resource_types.md` updated with the new extension (Step 14a)
501
-
-[ ]`docs/examples/item_examples.md` updated with supported operations (Step 14b)
482
+
-[ ]`get_params_per_item_type()` handles the new type if it has creation params (Step 7)
483
+
-[ ]`add_type_specific_payload()` handles the new type if it needs a creation payload (Step 8)
484
+
-[ ]`get_payload()` in `fab_item.py` handles the new type for import (Step 9)
485
+
-[ ]`command_support.yaml` lists the item for `export`/`import`/`mv`/`cp` as applicable (Step 10)
486
+
-[ ]`ALL_ITEM_TYPES` in `tests/test_commands/conftest.py` includes the new type (Step 11a)
487
+
-[ ]`basic_item_parametrize` includes the new type if it's a basic item (Step 11b)
488
+
-[ ]`mv_item_to_item_success_params` and `mv_item_within_workspace_rename_success_params` include the new type if mv is supported (Step 11c)
489
+
-[ ] Export test lists (`export_item_with_extension_parameters`, `export_item_types_parameters`, `export_item_default_format_parameters`, `export_item_invalid_format_parameters`) include the new type if export is supported (Step 11e)
490
+
-[ ]`set_item_metadata_for_all_types_success_item_params` includes the new type if set metadata is supported (Step 11f)
491
+
-[ ] Changelog entry created in `.changes/unreleased/` (Step 12)
492
+
-[ ]`docs/essentials/resource_types.md` updated with the new extension (Step 13a)
493
+
-[ ]`docs/examples/item_examples.md` updated with supported operations (Step 13b)
502
494
-[ ] Tests pass: `python -m pytest tests/ -q`
503
495
504
496
---
@@ -507,39 +499,39 @@ After completing all steps, verify:
507
499
508
500
### Simple Item (no definition, no params)
509
501
510
-
Only needs Steps 1–3, 10 (add to the standard multi-case match), and 12 (ALL_ITEM_TYPES + basic_item_parametrize).
502
+
Only needs Steps 1–3, 9 (add to the standard multi-case match), and 11 (ALL_ITEM_TYPES + basic_item_parametrize).
0 commit comments