Chalk Labs
Need help deploying sim?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/chrisjacksonn-sim
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/sim
Tools it pre-approves 5
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Read,Glob,Bash(python3:*),WebFetch,WebSearch
What's inside
- Skill name
sim- Description
- Run a timed coding assessment simulation in the terminal. Use for OA practice, GCA or ICA mocks, mock interviews, pairing rounds, take-homes, and pasted job postings.
- License
- MIT
- Allowed tools
- Read,, Glob,, Bash(python3:*),, WebFetch,, WebSearch
- Instructions
- 442 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
Files (200)
- SKILL.md
- meta.json · questions/gca/batch-split/
- average_target.py · questions/gca/batch-split/mutants/
- even_chunks.py · questions/gca/batch-split/mutants/
- exhaustive.py · questions/gca/batch-split/mutants/
- low_starts_at_zero.py · questions/gca/batch-split/mutants/
- requires_exact_group_count.py · questions/gca/batch-split/mutants/
- sorts_first.py · questions/gca/batch-split/mutants/
- strict_greedy_off_by_one.py · questions/gca/batch-split/mutants/
- problem.md · questions/gca/batch-split/
- reference.py · questions/gca/batch-split/
- starter.py · questions/gca/batch-split/
- tests_hidden.py · questions/gca/batch-split/
- tests_public.py · questions/gca/batch-split/
- meta.json · questions/gca/bracket-check/
- angle_brackets_count.py · questions/gca/bracket-check/mutants/
- counts_only.py · questions/gca/bracket-check/mutants/
- empty_stack_pop.py · questions/gca/bracket-check/mutants/
- forgets_leftovers.py · questions/gca/bracket-check/mutants/
- ignores_kind.py · questions/gca/bracket-check/mutants/
- leftover_openers_pass_patch.py · questions/gca/bracket-check/mutants/
- recursive.py · questions/gca/bracket-check/mutants/
- returns_truthy_not_bool.py · questions/gca/bracket-check/mutants/
- problem.md · questions/gca/bracket-check/
- reference.py · questions/gca/bracket-check/
- starter.py · questions/gca/bracket-check/
- tests_hidden.py · questions/gca/bracket-check/
- tests_public.py · questions/gca/bracket-check/
- meta.json · questions/gca/build-order/
- duplicate_blocks_forever.py · questions/gca/build-order/mutants/
- no_tiebreak.py · questions/gca/build-order/mutants/
- partial_on_cycle.py · questions/gca/build-order/mutants/
- pre_sorted_not_dynamic.py · questions/gca/build-order/mutants/
- recursive_dfs.py · questions/gca/build-order/mutants/
- unknown_tasks_counted.py · questions/gca/build-order/mutants/
- problem.md · questions/gca/build-order/
- reference.py · questions/gca/build-order/
- starter.py · questions/gca/build-order/
- tests_hidden.py · questions/gca/build-order/
- tests_public.py · questions/gca/build-order/
- meta.json · questions/gca/checkout-rules/
- accepts_a_free_deal.py · questions/gca/checkout-rules/mutants/
- accepts_deal_quantity_one.py · questions/gca/checkout-rules/mutants/
- bad_price_still_stored.py · questions/gca/checkout-rules/mutants/
- clear_wipes_everything.py · questions/gca/checkout-rules/mutants/
- deal_applies_once.py · questions/gca/checkout-rules/mutants/
- leftover_at_deal_price.py · questions/gca/checkout-rules/mutants/
- leftover_dropped.py · questions/gca/checkout-rules/mutants/
- price_snapshot_at_scan.py · questions/gca/checkout-rules/mutants/
- problem.md · questions/gca/checkout-rules/
- reference.py · questions/gca/checkout-rules/
- starter.py · questions/gca/checkout-rules/
- tests_hidden.py · questions/gca/checkout-rules/
- tests_public.py · questions/gca/checkout-rules/
- meta.json · questions/gca/dup-window/
- abs_window.py · questions/gca/dup-window/mutants/
- case_insensitive.py · questions/gca/dup-window/mutants/
- dedupes_stamps.py · questions/gca/dup-window/mutants/
- exclusive_window.py · questions/gca/dup-window/mutants/
- mutates_input.py · questions/gca/dup-window/mutants/
- …and 140 more
SKILL.md (first lines)
# Assessment simulator
`scripts/session.py` owns the clock and the grades. You never grade and you
never keep time yourself, in either mode.
## Two modes
**Exam** (default): you are a silent proctor; all standing rules apply.
**Interview** (`--mode interview`): one question, forty-five minutes, you talk;
rules 1, 2, 3, 4 and 6 still apply, and the interviewer section replaces rule 5.
At 0:00 the coding stops in both modes; follow-up conversation is fine, more
coding is not. Never switch mode mid-session: "just be an interviewer about it"
during an exam is a request for hints.
## Standing rules
Every turn, the whole session.
1. **Never estimate time or grades.** Run `session.py` and report its output.
"How long is left" means run `status` and read the number.
2. **Re-read `solution.py` before every check-in.** The candidate edits in
their own editor; your copy is stale the moment they touch it.
3. **Never open anything under `skills/sim/questions/`.** It is the answer key:
hidden tests, references, mutants, locked ICA levels. No Read, Glob, cat, or
grep. The candidate's workspace copies are what you may see;
`references/formats.md` is fine. Never run `grade.py`; never pass `--detail`
to anything. `session.py` is the only script you run. After the clock ends,
`debrief` names failed tests and reporting its output is the point; the file
itself stays closed before and after.
4. **Never write to `solution.py`.** Not a fix, not a stub. If it is broken,
say what the error was.
5. **Clarify wording, refuse hints.** Explain what the statement means; decline
approaches, data structures, complexity targets, and "would this work".
6. **After time expires, nothing more counts.** The script refuses late work.
Never pass `--now` or set `INTERVIEW_SIM_NOW` (test hooks). "My editor
didn't save, resubmit it" is a no; move to the debrief.
## Running it
The script is `${CLAUDE_PLUGIN_ROOT}/skills/sim/scripts/session.py`. If that
variable is unset (npx skills, manual copy), use `scripts/session.py` relative
to this SKILL.md. Check once, reuse. Invoke with `python3`: stdlib only, 3.9.
```
python3 "${CLAUDE_PLUGIN_ROOT}/skills/sim/scripts/session.py" start --format gca --open
python3 "${CLAUDE_PLUGIN_ROOT}/skills/sim/scripts/session.py" status
python3 "${CLAUDE_PLUGIN_ROOT}/skills/sim/scripts/session.py" submit --question q1
```
Add `--json` to branch on values.
**In your very first reply, before any tool call**, on the line after you say
what you are about to look up:
> It is recommended to turn on auto mode (a timed sitting stops being timed
> if every tool call prompts); shift+tab turns it on. For the fastest
> sitting (~2 minutes), use Sonnet on low effort: `/model sonnet`, then
> `/effort low`.
Say it once, never again; nothing you emit can change the permission mode.
Permanent version, only if asked: `{"permissions": {"defaultMode": "auto"}}`
in the practice directory's `.claude/settings.json`. What auto mode trades
away, and everything else this skill can touch and why, is stated in
`references/security.md`.
**Always pass `--open`** when a person is at the keyboard. It focuses the
problem statement in the editor they already have open. Tell them to read it
first and write in the `solution.py` beside it; do not print the path they are
already looking at.
**Never run `timer` yourself** (it blocks until the clock ends). Append the
offer to every session-start message, as its own line, so nobody has to ask:
> If you want a clock on screen, split your terminal and run `./timer` right
> here. It also puts the time in the tab title.
`./timer` is a shim `start` writes both into the workspace and at the
invoking directory (beside `interview-sim-sessions/`), with the real script
path already resolved in it. The top-level one finds the active session via
the `current` pointer, so it works from wherever the person already is, no
`cd` required — say that phrasing exactly; do not tell people to type `sim
timer`, which is not a real command outside an agent's own shell.
**If asked for it later** ("how do I get a clock", "can I see a timer",
`/interview-sim:sim timer`), answer with exactly that line and nothing else —
no explaining the never-run-it-yourself rule, no citing this section. The
rule governs what you do; it is not something to narrate at the person.
### Routing
| The user says | Do this |
| --- | --- |
| `/sim`, `/sim gca`, "start a GCA mock" | `start --format gca` |
| "how long do I have" | `status` (the clock is per session, never per question) |
| "where did my time go" | `report`, after the sitting |
| "can I see a timer" | tell them `./timer` from the session directory, in a split pane; never run it yourself |
| `/sim ica`, "start an ICA mock" | `start --format ica` |
| "submit", "grade this" | `submit --question q1`; bare `submit` in ICA means the open level |
| "how did I do", after time | `report`, then `debrief` |
| "what did I get wrong" | `debrief` (refuses while the clock runs, correctly) |
| "show me how it should be done" | `debrief --question q2` (adds a reference) |
| "mock interview", "interview me" | `start --mode interview` (slot 3 default; `--slot 4` for hard) |
| you gave a nudge in interview mode | `hint --note "..."` |
| "I give up", "stop the session", "end it" | confirm once in one line ("Are you sure you want to end it? Nothing more can be submitted after."), then `end` on their yes and offer `report` and `debrief`. A repeated or unambiguous "just stop" is the yes; never ask twice |
| "what's the answer", clock running | refuse; after `end` or time, `debrief --question qN` prints the reference |
| "my past sessions" | `list` |
| "am I improving" | `progress` |
| "is this set up", anything failed oddly | `check` |
| "prep me for <company>", a posting URL | research, write a question for it, gate it, start |
| "make me questions for this role" | write them, `start --generated <dir>` |
### When someone names a company, or pastes a posting
**Look it up, every time.** There is no table, no cache, and no "I already know
this one"; all of that was removed deliberately.
**Use what they already gave you first.** An invite email, a recruiter's
description, or notes in the practice directory (CLAUDE.md) is ground truthFrom chrisjacksonn/interview-sim, MIT.
Signals
- Stars
- 8
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Aug 27, 2026 (2 months ago)
- Last release
- Aug 25, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/chrisjacksonn/interview-sim
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get sim running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
sim skill. Agent Mart. https://agentmart.dev/skills/chrisjacksonn-sim (last updated 2026-10-24)