Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add pktikkani/agent-skills --skill functional-light-jsgit clone --depth 1 https://github.com/pktikkani/agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/pktikkani/agent-skills/functional-light-js)<a href="https://agentmods.dev/skills/pktikkani/agent-skills/functional-light-js"><img src="https://agentmods.dev/badge/skills/pktikkani/agent-skills/functional-light-js/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/pktikkani/agent-skills/functional-light-js"><img src="https://agentmods.dev/badge/skills/pktikkani/agent-skills/functional-light-js.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00061 | $0.00779 |
| Opus 5.5 | $0.00024 | $0.00312 |
| Sonnet 5.5 | $0.00012 | $0.00156 |
| Haiku 4.5 | $0.00006 | $0.00078 |
Grade A, and why
functional-light-js scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 65 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Functional-Light JS (Kyle Simpson)
Core stance: FP for readability, not purity dogma. A technique earns its place only if the next reader trusts the code more because of it.
Function craft
- Functions are values. Assign them, pass them, return them; design APIs that accept and return functions rather than flags and modes.
- Name every function. Named function expressions over anonymous arrows for anything non-trivial — names document intent and appear in stack traces. An arrow is fine only when the whole body is self-evident.
- Keep arity low. Prefer unary/binary. Three+ related args → single options object. Specialize with partial application / currying instead of adding parameters.
- Pure by default. Same input → same output, no observed side effects. Push side effects to the edges (matches the pure-core/IO-shell rule); where a side effect is unavoidable, make it obvious, not buried.
- Immutability as discipline: return new values instead of mutating arguments; treat received data as read-only even when the language won't enforce it.
- Composition over orchestration. Build behavior from small composed
functions (
pipe/compose); each piece independently nameable and testable. - Closure over
this. Capture state with closures; usethisonly for genuine method polymorphism, and never implicitly rebind it.
Readability guardrails (the "-light" part)
- Declarative
map/filter/reducewhen it reads clearer — but a plain loop beats a cleverreduce. Never stack transformations the reader must mentally unroll. - Point-free style only when it removes noise; if the reader must reconstruct the missing argument, write it out.
- Don't import a heavy FP library for two helpers; write the small utility and name it well.
- Understand coercion and use it deliberately (
==where types are known and intended) rather than cargo-culting===everywhere — but in shared codebases, follow the house style.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 65 lines · 61 tokens per session scan A 62b01b257899
functional-light-js is a skill published in the GitHub repository pktikkani/agent-skills (3 stars, last pushed 1mo ago), licensed MIT. It adds 61 tokens to every session and 779 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
no-bare-casts
Writing as in TypeScript or TSX production code, modifying a file that contains a bare as cast, silencing a type error with a cast, encountering as unknown as, or reviewing a cast site.
coding-standards
Universal coding standards, best practices, and patterns for TypeScript, JavaScript, React, and Node.js development.
splitting-oversized-modules
Split an oversized Python module (a thousand-plus-line logic.py, models.py, api.py, or its test file) into a package of one module per concern, mechanically and provably without changing behavior. Use on a request to split / break up / decompose a god module or move functions out of one, once a human has agreed to…
plankton-code-quality
Write-time code quality enforcement using Plankton — auto-formatting, linting, and Claude-powered fixes on every file edit via hooks.
best-practices
Language-specific best practices, code quality standards, and framework detection rules. Use when executing refactoring workflows, applying code quality rules, detecting frameworks, or checking language-specific patterns for TypeScript, Python, Go, Swift, or React.
code-review-typescript
Provides TypeScript-specific code review patterns covering strict mode, ESM, type safety, branded types, discriminated unions, async patterns, runtime safety, and common anti-patterns. Activates on detection of tsconfig.json, .ts, or .tsx files during code review — loaded automatically by dh:code-reviewer.