Skip to content
Agentmart
Submit a tool

sim

Run a timed coding assessment simulation in the terminal.

Skill by chrisjacksonn

IndexedMIT★ 8
Write a review

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.

Book a call

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.

We use your email only for this newsletter. Privacy

About

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.

No 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 truth

From 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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

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.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying sim?

CallGet help
Cite this page

sim skill. Agent Mart. https://agentmart.dev/skills/chrisjacksonn-sim (last updated 2026-10-24)