DevOpTyper.Content 1.0.3

dotnet add package DevOpTyper.Content --version 1.0.3
                    
NuGet\Install-Package DevOpTyper.Content -Version 1.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DevOpTyper.Content" Version="1.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DevOpTyper.Content" Version="1.0.3" />
                    
Directory.Packages.props
<PackageReference Include="DevOpTyper.Content" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DevOpTyper.Content --version 1.0.3
                    
#r "nuget: DevOpTyper.Content, 1.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DevOpTyper.Content@1.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DevOpTyper.Content&version=1.0.3
                    
Install as a Cake Addin
#tool nuget:?package=DevOpTyper.Content&version=1.0.3
                    
Install as a Cake Tool

<p align="center"> <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a> </p>

<p align="center"><img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/meta-content-system/readme.png" alt="Meta Content System" width="400"></p>

<p align="center"> <a href="https://github.com/mcp-tool-shop-org/meta-content-system/actions/workflows/build.yml"><img src="https://img.shields.io/github/actions/workflow/status/mcp-tool-shop-org/meta-content-system/build.yml?branch=main&style=flat-square&label=CI" alt="CI"></a> <img src="https://img.shields.io/badge/.NET-8-purple?style=flat-square&logo=dotnet" alt=".NET 8"> <a href="https://www.nuget.org/packages/DevOpTyper.Content"><img src="https://img.shields.io/nuget/v/DevOpTyper.Content?style=flat-square&logo=nuget&label=NuGet" alt="NuGet"></a> <a href="LICENSE"><img src="https://img.shields.io/github/license/mcp-tool-shop-org/meta-content-system?style=flat-square" alt="License"></a> <a href="https://mcp-tool-shop-org.github.io/meta-content-system/"><img src="https://img.shields.io/badge/Landing_Page-live-blue?style=flat-square" alt="Landing Page"></a> </p>

Shared content system for typing-practice apps -- lessons, progression, and adaptive difficulty.

Meta Content System is the portable content pipeline behind Dev-Op-Typer (Windows) and linux-dev-typer (cross-platform). It ingests source code files, normalizes them deterministically, computes difficulty metrics, and produces an indexed library that both apps consume identically regardless of platform.

Why Meta Content System?

  • One pipeline, every platform -- The same input files produce the same library.index.json on Windows, Linux, and macOS. No platform drift.
  • Zero external dependencies -- Pure .NET 8 library built entirely on the BCL. Nothing to install, nothing to conflict.
  • Interface-driven architecture -- Every pipeline stage (IContentSource, IExtractor, IMetricCalculator, IContentLibrary) is behind an abstraction for testability and extensibility.
  • Deterministic language detection -- Rule-based identification from file extensions and content heuristics. Supports 20+ languages out of the box.
  • SHA-256 content deduplication -- Content-addressed IDs prevent duplicates across imports. Import the same file twice, get one entry.
  • Difficulty-aware metrics -- Symbol density, indent depth, line count, and character distribution power adaptive difficulty in consuming apps.
  • Smart extraction -- Large files are split into right-sized practice blocks; small files are kept whole. Configurable thresholds.

NuGet Package

Package Description
DevOpTyper.Content Content ingestion, normalization, language detection, metrics calculation, and index generation. Zero external dependencies.
dotnet add package DevOpTyper.Content

Quick Start

As a library

using DevOpTyper.Content.Abstractions;
using DevOpTyper.Content.Models;
using DevOpTyper.Content.Services;

// 1. Create the pipeline components
IExtractor extractor = new DefaultExtractor();
IMetricCalculator metrics = new MetricCalculator();
var builder = new LibraryIndexBuilder(extractor, metrics);

// 2. Build an index from a content source
IContentSource source = new MyFolderSource("./samples");
LibraryIndex index = await builder.BuildAsync(source);

// 3. Query the library
var library = new InMemoryContentLibrary(index.Items);
var pythonSnippets = library.Query(new ContentQuery
{
    Language = "python",
    MinLines = 5,
    MaxSymbolDensity = 0.4f
});

// 4. Persist the index
var store = new JsonLibraryIndexStore();
store.Save("library.index.json", index);

Using the CLI

dotnet run --project src/DevOpTyper.Content.Cli -- build --source ./my-code --out library.index.json

dotnet run --project src/DevOpTyper.Content.Cli -- paste --lang csharp --title "Hello World" --text "Console.WriteLine(\"Hello\");"

Architecture

IContentSource                    Enumerates raw files
       |
       v
LanguageDetector                  Extension map + content heuristics
       |
       v
IExtractor                        Split large files into practice blocks
       |
       v
Normalizer                        Line endings -> LF, trailing newline
       |
       v
ContentId                         SHA-256(language + normalized code)
       |                          First 16 bytes -> 32-char hex ID
       v
IMetricCalculator                 Lines, characters, symbol density,
       |                          max indent depth
       v
LibraryIndexBuilder               Deduplicates, sorts, emits index
       |
       v
ILibraryIndexStore                Serialize/deserialize library.index.json
       |
       v
IContentLibrary                   Query by language, source, line count,
                                  symbol density range

Supported Languages

The language detector covers 20+ languages via extension mapping and content heuristics:

Python, C#, Java, JavaScript, TypeScript, SQL, Bash, Rust, Go, Kotlin, C, C++, JSON, YAML, Markdown -- and more via extension map. Unknown files fall back to text.

Metrics Computed

Metric Type Description
Lines int Total line count
Characters int Total character count including whitespace
SymbolDensity float Ratio of symbol characters to non-whitespace characters (0.0--1.0)
MaxIndentDepth int Deepest indentation level (4-space tabs)

These metrics power adaptive difficulty: a snippet with high symbol density and deep nesting is harder to type than flat prose.

Prerequisites

No other tools or dependencies are required.

Building from Source

git clone https://github.com/mcp-tool-shop-org/meta-content-system.git
cd meta-content-system
dotnet restore
dotnet build -c Release
dotnet test -c Release

Project Structure

meta-content-system/
├── src/
│   ├── DevOpTyper.Content/            # Core library (NuGet package)
│   │   ├── Abstractions/              # IContentLibrary, IContentSource,
│   │   │                              #   IExtractor, IMetricCalculator, ILibraryIndexStore
│   │   ├── Models/                    # CodeItem, CodeMetrics, LibraryIndex
│   │   └── Services/                  # LanguageDetector, Normalizer, ContentId,
│   │                                  #   MetricCalculator, LibraryIndexBuilder,
│   │                                  #   InMemoryContentLibrary, JsonLibraryIndexStore
│   └── DevOpTyper.Content.Cli/        # CLI tool for batch indexing
├── tests/
│   └── DevOpTyper.Content.Tests/      # xUnit tests (normalization, metrics, detection,
│                                      #   extraction, indexing, golden parity, store)
├── docs/                              # Design documents (extraction, detection, metrics)
├── spec/                              # JSON schemas (codeitem, libraryindex)
├── DevOpTyper.Content.sln
├── logo.png
└── LICENSE

Design Goals

Goal How
Platform-stable output LF normalization, deterministic sort, content-addressed IDs
Zero external dependencies Pure .NET 8 BCL -- no third-party NuGet packages
Interface-driven Every pipeline stage is behind an abstraction
Testable xUnit test suite with golden-parity checks
Extensible Implement IContentSource for custom ingestion, IExtractor for custom splitting

Consuming Apps

App Platform Repository
Dev-Op-Typer Windows (WinUI 3) mcp-tool-shop-org/dev-op-typer
linux-dev-typer Cross-platform (.NET) mcp-tool-shop-org/linux-dev-typer

Security & Data Scope

Aspect Detail
Data touched Source code files (read-only). Generated library.index.json output
Data NOT touched No network. No telemetry. No analytics. No user data. No credentials
Permissions Read: source files. Write: library index output only
Network None — pure computation library, fully offline
Telemetry None collected or sent

See SECURITY.md for vulnerability reporting.

Scorecard

Category Score
A. Security 10
B. Error Handling 10
C. Operator Docs 10
D. Shipping Hygiene 10
E. Identity (soft) 10
Overall 50/50

Full audit: SHIP_GATE.md · SCORECARD.md

License

MIT


<p align="center"> Built by <a href="https://mcptoolshop.com">MCP Tool Shop</a> </p>

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 102 2/28/2026
1.0.2 98 2/26/2026
1.0.0 97 2/12/2026