Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Pipeline Hook LensNew to Visual Studio Code? Get it now.
Pipeline Hook Lens

Pipeline Hook Lens

JoeMoyerClarity

|
37 installs
| (0) | Free
Identifies hooks and overrides within PHX
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Pipeline Hooks Lens

Version Installs Rating

A Visual Studio Code extension that helps you quickly discover pipeline hooks in backend C# projects and detect overridden files in Remix frontend projects.
It provides inline annotations, gutter icons, CodeLens integration, and hover tooltips for smooth navigation.


Features

Backend (C#)

  • Pipeline Hooks: Detects pipeline classes and all related hook classes (InputAlteration, Condition, Prehook, DefaultHook, Hook, etc.).

  • Inline Annotations: Shows the number of hooks inline next to the class definition.

  • Gutter Icons: Adds gutter icons for pipelines.

  • Hover Navigation: Provides hover navigation to related hooks.

  • CodeLens: Optional CodeLens for quick hook navigation.

  • Notification Template Validation: Detects notification classes that inherit from NotificationBase and validates that required template files exist under Client/Templates/:

    • {Name}.Email.body.html
    • {Name}.Email.subject.html
  • Template Diagnostics: Shows diagnostics warnings when template files are missing.

  • Template Decorations: Displays inline decorations indicating missing template files.

  • Name Expression Support: Supports various Name property expression formats (string literals, nameof expressions, constructor parameters with defaults).


Frontend (Remix)

  • File Overrides: Detects overridden files in app/overrides/ that match files in app/plugins/.

  • Override Annotations: Displays an inline annotation after the first export line.

  • Override Navigation: Hover provides a clickable link to the override file.

  • Extension Points: Detects ExtensionPoint and ReplaceIfExtension components in .tsx files within the Remix folder structure.

  • Extension Matching: Matches extension point names with registered extensions in .ext.tsx files.

  • Extension Annotations: Displays inline annotations when matching extensions are found.

  • Extension CodeLens: Provides clickable CodeLens links to navigate to extension implementations.

  • Extension Tooltips: Hover tooltips show all registered extensions for an extension point.

  • Admin Endpoints: Detects admin-only API endpoints (api.List, api.Create, api.Update, api.Import) in TypeScript/TSX files.

  • Entity Matching: Matches entity names against SQLTable classes in C# files to identify admin-only endpoints.

  • Admin CodeLens: Displays CodeLens annotations with "Admin-only" label for detected endpoints.

  • Admin Decorations: Shows inline text decorations indicating admin-only endpoints.

  • Admin Info: Clickable CodeLens provides information about admin permission requirements.


Settings

The extension is configurable under pipelineHooksLens.*. Settings are organized by feature area.

General

  • pipelineHooksLens.gutter.enabled — Enable or disable gutter icons globally.
  • pipelineHooksLens.gutter.fileName — Path to the gutter icon (absolute or relative).
  • pipelineHooksLens.text.margin — CSS margin for inline decorations.
  • pipelineHooksLens.codelens.enabled — Enable or disable CodeLens above pipelines (applies to backend hooks and extension points).
  • pipelineHooksLens.snippets.enabled — Enable or disable C# code snippets.

Backend (C#)

  • pipelineHooksLens.backend.enabled — Enable backend pipeline hook detection.
  • pipelineHooksLens.backend.hookNames — List of recognized hook suffixes. Default: ["InputAlteration", "Condition", "Prehook", "DefaultHook", "Hook"].
  • pipelineHooksLens.backend.message.text.singular — Message format for a single hook. Default: "← 1 Hook".
  • pipelineHooksLens.backend.message.text.plural — Message format for multiple hooks. Use ${count} placeholder. Default: "← ${count} Hooks".
  • pipelineHooksLens.backend.message.color — CSS color for backend hook messages. Default: "#2baede".
  • pipelineHooksLens.backend.message.fontWeight — Font weight (normal or bold) for backend hook messages. Default: "bold".
  • pipelineHooksLens.backend.message.fontStyle — Font style (normal or italic) for backend hook messages. Default: "normal".
  • pipelineHooksLens.namespace.ignoredFolders — List of folder names to ignore when generating namespaces (case-insensitive). Default: ["backend"].

Notification Templates (Backend)

  • pipelineHooksLens.notification.enabled — Enable notification template validation.
  • pipelineHooksLens.notification.diagnostics.enabled — Show diagnostic warnings for missing notification template files.
  • pipelineHooksLens.notification.inline.enabled — Show inline text decorations for missing notification template files.
  • pipelineHooksLens.notification.message.text — Custom message text displayed inline when templates are missing. Use ${missing} placeholder to show missing file types (e.g., "body", "subject", or "body & subject"). Default: "← ⚠ missing templates".
  • pipelineHooksLens.notification.message.color — CSS color for notification template messages. Default: "#2baede".
  • pipelineHooksLens.notification.message.fontWeight — Font weight (normal or bold) for notification template messages. Default: "bold".
  • pipelineHooksLens.notification.message.fontStyle — Font style (normal or italic) for notification template messages. Default: "normal".

Frontend (Remix)

  • pipelineHooksLens.frontend.enabled — Enable frontend override detection.

  • pipelineHooksLens.frontend.message.text — Message displayed after export line when an override is found. Default: "← ⚠️overridden⚠️".

  • pipelineHooksLens.frontend.message.color — CSS color for frontend override messages. Default: "#2baede".

  • pipelineHooksLens.frontend.message.fontWeight — Font weight (normal or bold) for frontend override messages. Default: "bold".

  • pipelineHooksLens.frontend.message.fontStyle — Font style (normal or italic) for frontend override messages. Default: "normal".

  • pipelineHooksLens.extension.message.text — Message displayed after extension point components when matching extensions are found. Default: "← Extension".

  • pipelineHooksLens.extension.message.color — CSS color for extension point messages. Default: "#2baede".

  • pipelineHooksLens.extension.message.fontWeight — Font weight (normal or bold) for extension point messages. Default: "bold".

  • pipelineHooksLens.extension.message.fontStyle — Font style (normal or italic) for extension point messages. Default: "normal".

  • pipelineHooksLens.adminEndpoint.enabled — Enable admin endpoint detection.

  • pipelineHooksLens.adminEndpoint.codelens.enabled — Show CodeLens annotations for admin-only endpoints.

  • pipelineHooksLens.adminEndpoint.inline.enabled — Show inline text decorations for admin-only endpoints.

  • pipelineHooksLens.adminEndpoint.message.text — Custom message text displayed inline for admin-only endpoints. Use ${entity} placeholder to show the entity name. Default: "← Admin-only".

  • pipelineHooksLens.adminEndpoint.message.color — CSS color for admin endpoint messages. Default: "#2baede".

  • pipelineHooksLens.adminEndpoint.message.fontWeight — Font weight (normal or bold) for admin endpoint messages. Default: "bold".

  • pipelineHooksLens.adminEndpoint.message.fontStyle — Font style (normal or italic) for admin endpoint messages. Default: "normal".


Commands

Pipeline Hooks Lens: Reload Indexes

Rebuilds both backend and frontend indexes, useful if files are moved or renamed.

Pipeline Hooks Lens: Debug Extension Points

Shows debug information about extension points found in the current file, including registered extensions and index keys.

Pipeline Hooks Lens: Check Notification Templates

Manually scans all open documents for notification classes and reports missing template files.


Snippets

This extension provides several C# code-generation snippets designed to speed up development across Phoenix projects. All snippets automatically generate the correct namespace based on the file location (Client, Core, or Plugins), and several include dynamic filename-based transformations.

pipelinetemplate

Creates a full Phoenix SerialPipeline class:

  • Default ExecuteDefaultAsync override
  • Input and output DTO classes
  • Dynamic naming based on filename
  • Correct namespace based on folder structure

Used for creating new pipeline classes.


hooktemplate

Creates a pipeline hook class:

  • Class name derived from filename
  • Pipeline name derived from filename
  • Generates inheritance of the form SomeNamePipeline.Hook
  • Inserts correct namespace

Example:
GetProviderTypeHook.cs → GetProviderTypePipeline.Hook


prehooktemplate

Creates a pipeline prehook class:

  • Class name derived from filename
  • Pipeline name derived from filename
  • Generates inheritance of the form SomeNamePipeline.Prehook
  • Inserts correct namespace

Example:
GetProviderTypePrehook.cs → GetProviderTypePipeline.Prehook


defaulthooktemplate

Creates a pipeline default hook class:

  • Class name derived from filename
  • Pipeline name derived from filename
  • Generates inheritance of the form SomeNamePipeline.DefaultHook
  • Inserts correct namespace

Example:
GetProviderTypeDefaultHook.cs → GetProviderTypePipeline.DefaultHook


conditiontemplate

Creates a pipeline condition class:

  • Class name derived from filename
  • Pipeline name derived from filename
  • Generates inheritance of the form SomeNamePipeline.Condition
  • Inserts correct namespace

Example:
GetProviderTypeCondition.cs → GetProviderTypePipeline.Condition


inputalterationtemplate

Creates a pipeline input alteration class:

  • Class name derived from filename
  • Pipeline name derived from filename
  • Generates inheritance of the form SomeNamePipeline.InputAlteration
  • Inserts correct namespace

Example:
GetProviderTypeInputAlteration.cs → GetProviderTypePipeline.InputAlteration


namespacetemplate

Inserts a namespace declaration:

  • Automatically computes the correct namespace based on file location
  • Uses the same logic as other templates (Client, Core, or Plugins)
  • Respects ignored folder settings

Useful when you need to add or update a namespace declaration without generating a full class template.


settingstemplate

Generates a Phoenix settings class:

  • Correct namespace
  • Filename-based class naming
  • Implements ISettings

Works for Client, Core, and Plugin settings.


controllertemplate

Creates an ASP.NET Core controller skeleton:

  • Route attributes
  • Sample POST endpoint
  • Namespace and class name based on filename
  • Injected IPipelineContext

Used for creating backend API controllers.


summarytemplate

Inserts an XML documentation template:

/// <summary>
/// 
/// </summary>
/// <param name=""></param>
/// <returns></returns>

headercommenttemplate

Inserts a copyright header comment at the top of the file:

  • Automatically uses the current filename in the copyright tag
  • Consistent format for all files

Example output for MyClass.cs:

// <copyright file="MyClass.cs" company="clarity-ventures.com">
// Copyright (c) clarity-ventures.com. All rights reserved.
// </copyright>

Installation

  1. Install via the VS Code Marketplace:
    Pipeline Hooks Lens

  2. Or install manually from a .vsix file:

    code --install-extension pipeline-hooks-lens-x.y.z.vsix
    
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft