$npx -y skills add managedcode/dotnet-skills --skill managedcode-storageUse ManagedCode.Storage when a .NET application needs a provider-agnostic storage abstraction with explicit configuration, container selection, upload and download flows, and backend-specific integration kept. USE FOR: integrating ManagedCode.Storage into a .NET application; revi
| 1 | # ManagedCode.Storage |
| 2 | |
| 3 | ## Trigger On |
| 4 | |
| 5 | - integrating `ManagedCode.Storage` into a .NET application |
| 6 | - reviewing how a project abstracts file or object storage |
| 7 | - deciding whether to centralize storage provider differences behind one library |
| 8 | - documenting upload, download, container, or blob-handling flows with ManagedCode.Storage |
| 9 | |
| 10 | ## Workflow |
| 11 | |
| 12 | 1. Identify the actual storage use case: |
| 13 | - blob or file storage |
| 14 | - provider abstraction across environments |
| 15 | - app-service integration and configuration |
| 16 | 2. Verify whether the project wants one storage contract instead of provider-specific SDK calls scattered across the codebase. |
| 17 | 3. Keep application code dependent on the library abstraction, not directly on backend-specific storage SDKs unless a provider-only feature is truly required. |
| 18 | 4. Centralize provider configuration, credentials, and container naming in composition-root code and typed settings. |
| 19 | 5. Validate the real upload, download, existence-check, and deletion flows after wiring the library. |
| 20 | |
| 21 | ```mermaid |
| 22 | flowchart LR |
| 23 | A["Application service"] --> B["ManagedCode.Storage abstraction"] |
| 24 | B --> C["Provider-specific storage implementation"] |
| 25 | C --> D["Blob or object storage backend"] |
| 26 | ``` |
| 27 | |
| 28 | ## Deliver |
| 29 | |
| 30 | - concrete guidance on when ManagedCode.Storage is the right abstraction |
| 31 | - wiring guidance that keeps provider concerns out of business code |
| 32 | - verification steps for the storage flows the application actually uses |
| 33 | |
| 34 | ## Validate |
| 35 | |
| 36 | - the project really benefits from a storage abstraction and is not hiding provider-specific behavior it still needs |
| 37 | - storage configuration is centralized and explicit |
| 38 | - code reviews check real read and write paths, not only registration snippets |