CtrlK
BlogDocsLog inGet started
Tessl Logo

evilissimo/transformational-programming

Decompose problems into pipelines of data transformations. Refactors loops into map/filter/reduce chains, converts nested/OO logic into composable function sequences, designs multi-step data transformation pipelines. Trigger on: "transformational programming", "data pipeline", "function pipeline", "pipe operator", "|>", "stream processing", "chained transformations", "Unix pipes", "dataflow", "decompose into steps", "write this as a pipeline", "compose functions", "chain of transformations", or restructuring imperative/OO code into data transforms. NOT for ETL infrastructure or stream processing frameworks (Kafka, Flink) — focuses on code-level function composition and transformation design patterns.

94

1.19x
Quality

97%

Does it follow best practices?

Impact

85%

1.19x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-2/

{
  "context": "Tests whether the agent converts a stateful JavaScript class into a pure-function pipeline using method chaining (.map/.filter/.reduce), with no shared mutable state, following the transformational programming approach.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "No shared mutable state",
      "description": "inventory_pipeline.js does NOT use a class with instance fields (this.rawRecords, this.parsedItems, etc.) or module-level mutable variables to pass data between stages",
      "max_score": 18
    },
    {
      "name": "Pure stage functions",
      "description": "Each pipeline stage (parse, filter, aggregate, build report) is implemented as a standalone function whose return value depends only on its arguments, not on external state",
      "max_score": 18
    },
    {
      "name": "JS method chaining used",
      "description": "inventory_pipeline.js uses at least one of .map(), .filter(), or .reduce() to compose the pipeline stages (not just imperative for-loops)",
      "max_score": 15
    },
    {
      "name": "Single-responsibility stages",
      "description": "Each stage function does exactly one named transformation (e.g. parse records, filter low-stock, count by category) rather than mixing multiple concerns in one function",
      "max_score": 12
    },
    {
      "name": "Top-level compose function",
      "description": "inventory_pipeline.js exposes a top-level function (not a class) that chains the stages together to produce the final report",
      "max_score": 12
    },
    {
      "name": "Data Flow documented",
      "description": "pipeline_analysis.md contains a Data Flow section showing the transformation chain using arrow (→) notation",
      "max_score": 10
    },
    {
      "name": "Step breakdown documented",
      "description": "pipeline_analysis.md contains a step breakdown (table or list) naming each stage and what it does",
      "max_score": 8
    },
    {
      "name": "Error/skip handling without mutation",
      "description": "Skipped/invalid records are handled without mutating a shared counter — e.g. by separating valid and invalid records through filter, then counting the invalid array's length",
      "max_score": 7
    }
  ]
}

evals

SKILL.md

tile.json