Pipeline Hooks Lens

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#)
- Detects pipeline classes and all related hook classes (
InputAlteration, Condition, Prehook, DefaultHook, Hook, etc.).
- Shows the number of hooks inline next to the class definition.
- Adds gutter icons for pipelines.
- Provides hover navigation to related hooks.
- Optional CodeLens for quick hook navigation.
Frontend (Remix overrides in TS/JS/TSX/JSX)
- Detects overridden files in
app/overrides/ that match files in app/plugins/.
- Displays an inline annotation after the first
export line.
- Adds gutter icons to overridden files.
- Hover provides a clickable link to the override file.
Frontend (Remix extension points)
- Detects
ExtensionPoint and ReplaceIfExtension components in .tsx files within the Remix folder structure.
- Matches extension point names with registered extensions in
.ext.tsx files.
- Displays inline annotations when matching extensions are found.
- Provides clickable CodeLens links to navigate to extension implementations.
- Hover tooltips show all registered extensions for an extension point.
Settings
The extension is configurable under pipelineHooksLens.*.
General
pipelineHooksLens.gutter.enabled — Enable or disable gutter icons.
pipelineHooksLens.gutter.fileName — Path to the gutter icon (absolute or relative).
pipelineHooksLens.text.margin — CSS margin for inline decorations.
Backend (C#)
pipelineHooksLens.backend.enabled — Enable backend pipeline detection.
pipelineHooksLens.backend.hookNames — List of recognized hook suffixes.
pipelineHooksLens.backend.message.* — Customize backend message text, color, font weight, and font style.
pipelineHooksLens.namespace.ignoredFolders — List of folder names to ignore when generating namespaces (case-insensitive). Default: ["backend"].
Frontend (Remix)
pipelineHooksLens.frontend.enabled — Enable frontend override detection.
pipelineHooksLens.frontend.message.* — Customize frontend message text, color, font weight, and font style.
pipelineHooksLens.extension.message.* — Customize extension point message text, color, font weight, and font style.
CodeLens
pipelineHooksLens.codelens.enabled — Enable or disable CodeLens above pipelines.
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.
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
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>
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
Install via the VS Code Marketplace:
Pipeline Hooks Lens
Or install manually from a .vsix file:
code --install-extension pipeline-hooks-lens-x.y.z.vsix