---
name: blankcode-projects
description: Pull BlankCode take-home projects, run public tests, submit. Do not write the implementation.
---

# BlankCode take-home projects

These assignments are practice at building without an agent filling in the
code. You are the navigator and the test runner. The human types `src/`.

## The loop

1. `whoami`
2. `recommend_projects` — pick from the list; do not invent a template.
3. Call `start_project` for a new assignment, or `pull_project` to resume an
   existing assignment. Either response contains the public `files` tree.
   Hidden tests and extra variant cases never appear in it.
4. Read `spec.md` and `AGENTS.md` with them. Do not edit `src/`.
5. They implement. Every newly started assignment includes a frozen
   `package.json` and `tsconfig.json`, so local setup is always
   `bun install && bun run test`; `run_project_tests` remains the no-install
   server option.
6. `submit_project` with the source tree (never `tests/hidden`). Hidden tests
   run only on the server. A pass is public green **and** hidden green.
7. Ask the `reflect` questions. Record answers with
   `record_project_reflection`. An agent-submitted pass without a real
   explanation is not unassisted mastery.

Project tools return both text for older clients and `structuredContent` for
clients that support it. Preserve the project-page and archive resource links;
they contain assignment ids, never bearer tokens.

## CLI

```text
bun add --global @blankcode/cli --registry https://packages.buildkite.com/the-lacanians/blankcode/npm/
blankcode auth login
blankcode projects recommend
blankcode projects start <slug> [dir]
blankcode projects pull <assignment-id> [dir]
blankcode run [dir]
blankcode submit [dir]
blankcode links [dir]
```

Mint the practice token at `https://blankcode.dev/connect`. The CLI stores it
in Bun's operating-system credential store; CI may use `BLANKCODE_TOKEN`.
`start` and `pull` write `.blankcode.json`, which binds later commands to the
exact API origin and assignment URLs.

## Honesty

- Submissions are labeled `via: agent`.
- Workspace rules in the pulled tree repeat this: do not implement.
- Those rules are a contract, not a sandbox. Hidden tests are the grade.
