AI Engineering Placement Quiz
rohitg00/ai-engineering-from-scratch
Runs a 10-question quiz across five areas to place a learner in the AI Engineering from Scratch curriculum, so they skip what they already know.
Add fast, local, typed decisions to any project with Laya, an open-source non-generative decision model (pip install laya).
$ npx skills add wdobry/laya-playground --skill laya-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install wdobry/laya-playground laya-integration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/wdobry/laya-playground.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/laya-integration .claude/skills/laya-integration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "laya-integration" agent skill from https://github.com/wdobry/laya-playground/tree/main/skills/laya-integration into .claude/skills/laya-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "laya-integration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/wdobry/laya-playground/tree/main/skills/laya-integrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add wdobry/laya-playground --skill laya-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install wdobry/laya-playground laya-integration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wdobry/laya-playground.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/laya-integration .agents/skills/laya-integration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "laya-integration" agent skill from https://github.com/wdobry/laya-playground/tree/main/skills/laya-integration into .agents/skills/laya-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "laya-integration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wdobry/laya-playground --skill laya-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install wdobry/laya-playground laya-integration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wdobry/laya-playground.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/laya-integration .cursor/skills/laya-integration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "laya-integration" agent skill from https://github.com/wdobry/laya-playground/tree/main/skills/laya-integration into .cursor/skills/laya-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "laya-integration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/wdobry/laya-playground.git --path skills/laya-integration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add wdobry/laya-playground --skill laya-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install wdobry/laya-playground laya-integration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wdobry/laya-playground.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/laya-integration .gemini/skills/laya-integration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "laya-integration" agent skill from https://github.com/wdobry/laya-playground/tree/main/skills/laya-integration into .gemini/skills/laya-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "laya-integration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install wdobry/laya-playground laya-integrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add wdobry/laya-playground --skill laya-integration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/wdobry/laya-playground.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/laya-integration .github/skills/laya-integration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "laya-integration" agent skill from https://github.com/wdobry/laya-playground/tree/main/skills/laya-integration into .github/skills/laya-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "laya-integration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add wdobry/laya-playground --skill laya-integration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install wdobry/laya-playground laya-integration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wdobry/laya-playground.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/laya-integration .opencode/skills/laya-integration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "laya-integration" agent skill from https://github.com/wdobry/laya-playground/tree/main/skills/laya-integration into .opencode/skills/laya-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "laya-integration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
laya-integrationAdd fast, local, typed decisions to any project with Laya, an open-source non-generative decision model (pip install laya).
Laya Integration is an agent skill from wdobry/laya-playground. Add fast, local, typed decisions to any project with Laya, an open-source non-generative decision model (pip install laya). It classifies, routes, scores and answers yes/no questions about a piece of text, returning calibrated probabilities in roughly 20-35 ms on a laptop GPU, with no LLM call and no data leaving the machine. Use this skill whenever the user wants to classify or route text, triage tickets or emails, detect spam, phishing, toxicity or intent, put a guardrail in front of an agent or LLM, score…
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Education, covering Quizzes and assessments. The repository describes itself as: A website, two games, a benchmark and an agent skill for Laya, the open-source decision model. Runs on your machine. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5a825ba. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pipFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
brainfunctioncollapse.comgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Laya Integration loads about 3.2k tokens when it runs. Until then it costs about 187 tokens; SKILL.md has 1,498 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from wdobry/laya-playground at commit 5a825ba, republished under its MIT licence (© wdobry). 1,498 words, ~3,225 tokens.
.claude/skills/laya-integration/SKILL.md (or your agent's skills folder).Laya answers typed questions about a piece of text. You give it a state (the text) and a dict
of questions; it returns a probability for every option of every question in one forward pass.
It never generates text, so it cannot answer off-schema, and it is small enough (322M-421M
parameters) to run inside the user's own process.
Reach for it when the project needs a decision, not a sentence: which queue, is this spam, how urgent, should the agent stop. Do not reach for it when the task needs reasoning over several steps, arithmetic, extraction of free-form values, or any generated text. For those, keep the LLM and use Laya in front of it as a cheap first pass (see "Cascade" below).
pip install laya # pulls torch, transformers, safetensors, huggingface_hubimport laya
agent = laya.load("convaiinnovations/laya") # English checkpoint
result = agent.predict(
{"subject": "Charged twice", "body": "Refund the duplicate today or we cancel."},
{
"department": {
"type": "choice",
"instructions": "Which department should handle this request?",
"criteria": {
"billing": "invoices, payments, refunds",
"technical": "bugs, outages, system errors",
"other": "everything else",
},
},
"urgency": {
"type": "score",
"instructions": "How urgent is this request?",
"criteria": ["not urgent", "soon", "critical deadline or blocking issue"],
},
"churn_risk": {"type": "noul", "instructions": "Does the user threaten to cancel or leave?"},
},
)
answers = result["answers"]state may be a string, a dict or a list; dicts and lists are serialised to JSON. Load the
model once at startup and reuse it. Loading takes 25-35 s; a call takes milliseconds.
| type | criteria | what comes back in answers[id] |
|---|---|---|
choice | dict {option: description} or a list of option names | choice (the winner), probabilities per option, confidence |
score | ordered list of level descriptions, lowest first | score (expected level, a float), probabilities per level, legend, confidence |
noul | optional {"true": "...", "false": "..."} | noul = P(true), confidence |
Every answer also carries action.act_probability from the model's act-or-escalate head, and
result["usage"]["input_tokens"] reports the tokens consumed. confidence is one minus the
normalised entropy of the distribution, so it is low whenever probability is spread out, even
if the top option is right.
All questions in one predict call share a single forward pass, so ask everything you need
about a state in one call rather than looping.
This matters more than anything else in the integration. Laya is an encoder doing something close to textual entailment, and it rewards questions shaped like that.
{"billing": "invoices, payments, refunds"} beats a bare
["billing", ...], because the description is what the model matches the text against.ValueError: ... options exceed head_max_len, shorten the descriptions or split the question.laya.email_state(subject, body, sender=...) strips quoted replies and signatures.Ready-made question sets exist for common jobs: laya.triage_questions(),
laya.email_questions(), laya.guard_questions(), laya.moderation_questions(),
laya.router_questions(). Use them as starting points and read what they contain before
relying on them.
agent = laya.load("convaiinnovations/laya") # English, 421M
agent_ml = laya.load("convaiinnovations/laya", subfolder="multilingual") # 100+ languages, 322M, ~1.6x faster
agent_td = laya.load("convaiinnovations/laya", subfolder="typed-decisions") # fine-tuned on four upstream workflowsUse the English checkpoint for English text. It is the best general performer and its
probabilities are temperature-calibrated. Use multilingual for anything else. It ships
uncalibrated (temperature 1.0), so expect it to report 100% and 0% readily; do not read
those as certainty. It also missed explicit cancellation threats that the English checkpoint
caught. typed-decisions only helps if your questions resemble the workflows it was tuned on.
laya.Router picks a checkpoint per request from the script and language of the state:
from laya import Router
router = Router(preload=True) # all three resident, ~4.6 GB in fp32
res = router.predict(state, questions) # res["routing"] says which model and why
res = router.predict(state, questions, lang="pl") # force the language when you know itPass lang= whenever the application knows the language. As of laya 0.3.4 the detector
only recognises English, French, German, Spanish, Portuguese, Italian and Dutch among
Latin-script languages. Polish, Czech, Turkish, Swedish and others are silently sent to the
English checkpoint, which then answers confidently and wrongly. Non-Latin scripts route
correctly.
The probabilities are the product. Decide per question what happens at each confidence level, and make the threshold reflect the cost of being wrong:
a = answers["department"]
if a["probabilities"][a["choice"]] >= 0.85:
route(a["choice"])
else:
send_to_review(a) # a person, a slower model, or a queueFor yes/no gates compare answers[id]["noul"] against a threshold chosen on real data, not
0.5 by default. For a guardrail, where a miss is expensive, set it low; for an auto-action,
where a false alarm is expensive, set it high.
Cascade with an LLM. A good default architecture: Laya handles every request, and only the ones below the threshold go to the LLM or a person. The share that escalates is what you pay LLM latency and cost on, so measure it.
Calibrate on the user's own data before trusting the numbers. Temperatures live on the
agent: agent.temperature is [choice, score, noul] and agent.temperature_by_options holds
per-option-count overrides (keys like "choice:3-5", "noul:2") that take precedence. To
refit: set agent.temperature = [1.0, 1.0, 1.0] and agent.temperature_by_options = {} to
read raw probabilities p, fit a scalar T per question type that minimises negative
log-likelihood of p ** (1 / T) (renormalised) on a labelled set, then write the fitted values
back. A few hundred labelled examples are enough to see whether it helps.
Python service: build one agent (or Router) at startup and share it. Guard predict
with a lock or a single worker queue; one GPU serves one forward pass at a time, and
concurrent calls from several threads only interleave badly.
Anything else (Node, Go, a front end): run Laya as a small local HTTP sidecar and call it
over loopback. Bind to 127.0.0.1, enable keep-alive, and return the predict result as
JSON. A minimal version:
import threading, laya
from fastapi import FastAPI
app, lock = FastAPI(), threading.Lock()
agent = laya.load("convaiinnovations/laya")
@app.post("/predict")
def predict(body: dict):
with lock:
return agent.predict(body["state"], body["questions"])Device: Laya picks CUDA, then Apple MPS, then CPU, and falls back to CPU if the GPU runs
out of memory. Pass device="cpu" to force it. Measured for one question: about 34 ms
(English) and 21 ms (multilingual) on an M1 Max GPU, 139 ms and 58 ms on its CPU. Ten
questions in one call cost about 7-16 ms each.
Warm up. The first call at a new batch shape compiles kernels and can take several times
longer. Make one throwaway predict call at startup with a representative question set.
Downloads. Weights come from the Hugging Face Hub on first load. The root repo bundles all
three checkpoints, and loading the English one without a subfolder fetches the whole bundle
(about 2.3 GB); a subfolder= load fetches only that checkpoint (650-850 MB). If a download hangs at
0 bytes, set HF_HUB_DISABLE_XET=1 to fall back to plain HTTPS. Once cached, set
HF_HUB_OFFLINE=1 to skip network checks. Set USE_TF=0 if transformers stalls on import.
Zero-shot quality varies a lot by task. Upstream's own notes report the base checkpoints near
chance on their typed-decisions benchmark without fine-tuning, ordinal score questions as
the weakest type, and moderation not holding up on held-out data.
An independent run on 500 labelled examples (English checkpoint, no tuning, September 2026) shows where the line falls. Simple classification is strong: 93% on news topic (a dataset in Laya's training mix) and 96% on SMS spam, level with a hosted commercial model. Subtler or graded questions are not: 45% on six-way emotion, 65% on prompt-injection detection and 35% on a five-level star rating, where the hosted model scored 53%, 71% and 70%. Expected calibration error was 0.05-0.06 on the easy tasks and 0.34-0.40 on the hard ones. Latency was 35-66 ms per question. So expect Laya to work out of the box for clear-cut categories and yes/no checks, and plan to rephrase, fine-tune or cascade for ordinal scores and nuanced judgements. Measure:
predict and record accuracy per question, plus how often the top
probability clears your threshold and how often it is right when it does.Tell the user the measured numbers and the escalation rate, not just that it works.
lang= passed wherever the language is knownSkill by brain function collapse (https://brainfunctioncollapse.com/laya). Laya itself is created by Nandakishor M, Convai Innovations, and released under Apache-2.0 (https://github.com/NandhaKishorM/laya).
© wdobry, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/laya-integration of wdobry/laya-playground.
Open the folder on GitHubat commit 5a825ba
Laya Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Laya Integration this skillwdobry/laya-playground | 182 | — | ~3.2k | Automated safety check: Pass | MIT | |
| AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2k | Automated safety check: Pass | MIT | |
| AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Claude Certification Tutorrohitg00/ai-engineering-from-scratch | 66k | — | ~3k | Automated safety check: Pass | MIT | |
| Generate Verifiers Envadithya-s-k/FineEnvs | 443 | 1 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| 01 Auto Arenaagentscope-ai/OpenJudge | 868 | 1 repos | ~2.5k | Automated safety check: Pass | Apache-2.0 |
rohitg00/ai-engineering-from-scratch
Runs a 10-question quiz across five areas to place a learner in the AI Engineering from Scratch curriculum, so they skip what they already know.
rohitg00/ai-engineering-from-scratch
Quizzes you on a completed phase of the AI Engineering from Scratch course, taking a phase number or name and mapping it to that phase's directory.
rohitg00/ai-engineering-from-scratch
Guides a learner through one of four independent Claude certification tracks with onboarding, lessons, practice labs, mock exams and remediation.
adithya-s-k/FineEnvs
Builds a Verifiers (PrimeIntellect) variant of an RL environment.
agentscope-ai/OpenJudge
Automatically evaluate and compare multiple AI models or agents without pre-existing test data.
woocommerce/woocommerce-ios
Evaluate WooAIAssistant against a structured scenario suite with hard invariants + LLM-as-judge rubric scoring.
Categories
Add fast, local, typed decisions to any project with Laya, an open-source non-generative decision model (pip install laya). Laya Integration is an agent skill from wdobry/laya-playground. Add fast, local, typed decisions to any project with Laya, an open-source non-generative decision model (pip install laya).
Laya Integration fits situations like: the user wants to classify; put a guardrail in front of an agent; score something against a rubric; replace an LLM-based classifier to cut latency.
Run `npx skills add wdobry/laya-playground --skill laya-integration -a claude-code`. Or copy the skill folder (skills/laya-integration in wdobry/laya-playground) into .claude/skills/laya-integration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add wdobry/laya-playground --skill laya-integration -a codex`. Or copy the skill folder (skills/laya-integration in wdobry/laya-playground) into .agents/skills/laya-integration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wdobry/laya-playground --skill laya-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/laya-integration, .gemini/skills/laya-integration, .github/skills/laya-integration and .opencode/skills/laya-integration in your project.
Going by SKILL.md and its folder, Laya Integration needs the command-line tools its instructions call (pip). Our summary lists: Python 3.
SKILL.md names 2 domains. As links in the text: brainfunctioncollapse.com and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Laya Integration is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Laya Integration: AI Engineering Placement Quiz (rohitg00/ai-engineering-from-scratch, 66k stars), AI Engineering Phase Quiz (rohitg00/ai-engineering-from-scratch, 66k stars), Claude Certification Tutor (rohitg00/ai-engineering-from-scratch, 66k stars) and Generate Verifiers Env (adithya-s-k/FineEnvs, 443 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
wdobry (a GitHub user) maintains it in wdobry/laya-playground, which has 182 GitHub stars. The repository was last updated on September 20, 2026.
Source: wdobry/laya-playground on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.