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 agentmods add skills/axiosleo/node-koapp/koapp-modelnpx skills add AxiosLeo/node-koapp --skill koapp-modelgit clone --depth 1 https://github.com/AxiosLeo/node-koappWhat 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 | $0.00068 | $0.01485 |
| Opus 5 | $0.00034 | $0.00743 |
| Sonnet 5 | $0.00014 | $0.00297 |
| Haiku 4.5 | $0.00007 | $0.00148 |
Grade A, and why
koapp-model 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 2d 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 — 193 lines — stays where its author put it; the contents beside it link to each section on GitHub.
@axiosleo/koapp Model
Source: src/model.js.
Model is a lightweight data container around
validatorjs. It assigns
incoming fields onto itself, optionally validates them, and provides
utility methods for serialization.
Import
const { Model } = require('@axiosleo/koapp');
Constructor
new Model(obj?, rules?, messages?);
| Arg | Type | Purpose |
|---|---|---|
obj |
object |
Source data; each key is copied onto the instance via Object.assign |
rules |
Rules |
validatorjs rule set, e.g. `{ name: 'required |
messages |
ErrorMessages |
Custom error messages keyed by rule, e.g. { required: 'The :attribute is required.' } |
When rules are provided and validation fails, the constructor throws
HttpError(400, <first-error-message>). Inside a koapp handler that
translates to a standard 400 response without any extra plumbing.
Static helper
Model.create(obj, rules, messages);
Shortcut for new Model(obj, rules, messages) that benefits from subclass
context (same as new this(...)).
Instance methods
| Method | Returns | Notes |
|---|---|---|
toJson() |
string |
JSON.stringify(this) |
toObj() |
object |
JSON.parse(this.toJson()); strips class identity |
properties() |
string[] |
Enumerable own keys |
count() |
number |
properties().length |
validate(rules, messages?) |
Validator |
Runs validatorjs manually and returns the raw Validator object |
validate() does not throw - use it when you need the full error map:
const m = new Model({ email: 'not-an-email' });
const v = m.validate({ email: 'required|email' });
if (v.fails()) {
console.log(v.errors.all()); // { email: ['The email format is invalid.'] }
}
Extending Model
class UserModel extends Model {
constructor(data) {
super(data, {
name: 'required|string',
email: 'required|email',
age: 'integer|min:0'
}, {
required: 'The :attribute field is required.'
});
}
greet() {
return `Hi, ${this.name}`;
}
}
const user = new UserModel(context.body);
// If the body fails validation, HttpError(400, ...) is thrown automatically.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 2d ago First seen · 193 lines · 68 tokens per session scan A ac2591a5920a
koapp-model is a skill published in the GitHub repository AxiosLeo/node-koapp (145 stars, last pushed 19d ago), licensed MIT. It adds 68 tokens to every session and 1,485 once invoked, about $0.0003 per session on Opus 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-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…