All free skills / Other majors
content-type 3.x
Use content-type 3.x as an ESM-only parser and formatter for HTTP Content-Type header values. Covers parse options, formatting, validation boundaries, and migration away from older CommonJS/request-response examples.
- For
content-type@3.0.0- Verified
- 2026-09-08, 5 examples executed
- Skill package
@modootoday/pmcp-content-type@3.0.0
Use this skill for free
No PMCP login or subscription is required. Download the original instructions, or install the content-only archive with your project's package manager.
Download SKILL.md · Download package archive
npm install --save-dev https://pmcp.build/skills/content-type/3/package.tgz
PMCP discovers the installed package's instructions. Connect your runtime after installation.
Archive integrity
sha512-7Fm7FJXs1zV5a2qIii27/hJ0AT6K1d6RXYJZnza1rvjFRShc7JILqodcxLo5XqCKWOKjBfLMvqvNLGvGVrfuUg==Complete instructions
Verified against content-type@3.0.0 on 2026-09-08. 5 of 5 examples executed.
content-type
Scope
This skill targets content-type ^3.0.0 (3.0.0). The package is ESM-only and requires Node.js >=22.
Import the package as an ESM namespace:
import * as assert from "node:assert/strict";
import * as contentType from "content-type";
const parsed = contentType.parse("image/svg+xml; charset=utf-8");
assert.equal(parsed.type, "image/svg+xml");
assert.equal(parsed.parameters.charset, "utf-8");
Parse a Content-Type string
Use parse(string, options?). The result contains type and parameters. Parameter names are lower case.
The parser is lenient and does not error. Validate the returned type and parameters before trusting them.
import * as assert from "node:assert/strict";
import * as contentType from "content-type";
const parsed = contentType.parse("Text/Plain; CHARSET=utf-8");
assert.equal(parsed.type, "text/plain");
assert.equal(parsed.parameters.charset, "utf-8");
Parse options
The documented options are:
parameters: trueby default. Set it tofalseto skip parameters.comma: falseby default. Set it totrueto stop parsing at a comma.start: 0by default. Set it to the index from which parsing should begin.
import * as assert from "node:assert/strict";
import * as contentType from "content-type";
const withoutParameters = contentType.parse(
"text/plain; charset=utf-8",
{ parameters: false },
);
assert.equal(withoutParameters.type, "text/plain");
assert.deepEqual(withoutParameters.parameters, {});
const firstValue = contentType.parse(
"text/plain, application/json",
{ comma: true },
);
assert.equal(firstValue.type, "text/plain");
const fromOffset = contentType.parse(
"prefix text/html; charset=utf-8",
{ start: "prefix ".length },
);
assert.equal(fromOffset.type, "text/html");
assert.equal(fromOffset.parameters.charset, "utf-8");
Format a Content-Type value
Use format({ type, parameters? }) to create a Content-Type header string. parameters is optional.
import * as assert from "node:assert/strict";
import * as contentType from "content-type";
assert.equal(
contentType.format({
type: "image/svg+xml",
parameters: { charset: "utf-8" },
}),
"image/svg+xml; charset=utf-8",
);
assert.equal(
contentType.format({ type: "application/json" }),
"application/json",
);
format throws TypeError for an invalid media type or invalid parameter name. Treat this as validation at the formatting boundary rather than relying on the lenient parser to validate input.
import * as assert from "node:assert/strict";
import * as contentType from "content-type";
assert.throws(
() => contentType.format({ type: "not a valid type" }),
TypeError,
);
assert.throws(
() => contentType.format({
type: "text/plain",
parameters: { "invalid parameter name": "value" },
}),
TypeError,
);
Migration traps
- Do not use the older CommonJS shape (
require('content-type')) with version 3.0.0. This release is ESM-only; useimport * as contentType from "content-type". - Do not assume the older 1.x request/response overloads are part of the current documented API. The current documented call is
parse(string, options?), notparse(req)orparse(res). - Do not assume parsing validates input. The parser is documented as lenient and non-throwing; validate its returned
typeandparametersbefore trusting them. - Do not treat repository development commands such as
build,test,specs,bench, orformatas application APIs.
What this skill does not cover
The research does not specify the complete grammar accepted by the parser, every edge-case result for malformed input, exact error messages, TypeScript type details, or integration with HTTP request/response objects. It also does not cover a CLI or runner API; none is documented for this package.