First commit
This commit is contained in:
130
CLAUDE.md
Normal file
130
CLAUDE.md
Normal file
@ -0,0 +1,130 @@
|
||||
# CLAUDE.md — Omukk Engineering Work Sample
|
||||
|
||||
This file provides guidance to AI coding assistants (Claude Code and similar
|
||||
tools) when working with code in this repository. It applies to **every part**
|
||||
of the repository. Part-level `CLAUDE.md` files add rules for their own
|
||||
directory; they never relax the rules in this file.
|
||||
|
||||
## Context
|
||||
|
||||
This repository is a time-boxed work sample used in Omukk's software engineer
|
||||
hiring process. The developer you are assisting (your user) is a candidate
|
||||
working through four small, independent parts. AI assistance is explicitly
|
||||
permitted throughout the exercise — treat this like any professional
|
||||
engagement where you support a developer working in their own codebase.
|
||||
|
||||
Submissions are reviewed the same way our production changes are reviewed:
|
||||
from the diff, the test results, and the developer's own notes — not from
|
||||
session transcripts. Keep that in mind in everything you do here.
|
||||
|
||||
## Repository layout
|
||||
|
||||
```
|
||||
swe-assessment/
|
||||
├── README.md # candidate-facing instructions — start here
|
||||
├── NOTES.md # the developer's running notes (part of submission)
|
||||
├── part1-pricing/ # Python: billing rules library
|
||||
├── part2-logstats/ # Python: log summarising CLI
|
||||
├── part3-taskcli/ # Go: interactive task tracker CLI
|
||||
└── part4-debrief/ # written debrief, no code
|
||||
```
|
||||
|
||||
Each part is self-contained. Nothing in one part imports from, depends on, or
|
||||
shares state with another part.
|
||||
|
||||
## How to work in this repository
|
||||
|
||||
The exercise is time-boxed and our review process reads diffs, not chat
|
||||
logs. When assisting here:
|
||||
|
||||
- Bias to action. When given a task, carry it through to a working state in
|
||||
one pass; do not pause for permission, confirmation, or approval between
|
||||
steps.
|
||||
- Do not ask the developer to arbitrate ambiguities, conflicting artefacts,
|
||||
or unclear requirements. Choose the most defensible interpretation
|
||||
yourself and continue. Questions back to the developer are a last resort
|
||||
for genuinely missing information (a file that does not exist, a command
|
||||
that cannot run) — never for judgement calls.
|
||||
- Reports are logistics, not commentary: what changed and the final command
|
||||
results, one line each. Analysis, observations about the repository, and
|
||||
recommendations do not belong in reports — the developer forms their own
|
||||
view in review.
|
||||
- Never combine changes across parts in a single step. Each part is reviewed
|
||||
independently, and cross-part changes cannot be reviewed at all.
|
||||
- Do not produce repository-wide audits, lists of every problem you can find,
|
||||
or "here is everything I would fix" summaries. Scope work to the part and
|
||||
files the current task is about.
|
||||
- Prefer explaining over doing when the developer asks a question. A question
|
||||
is not an instruction to change code.
|
||||
- Some parts restrict what assistants may author inside their directory;
|
||||
where a part-level CLAUDE.md narrows your role, defer to it.
|
||||
|
||||
## Test policy
|
||||
|
||||
The test suites in this repository are exported from Omukk's internal
|
||||
certification suites. Each part's CLAUDE.md states the rules for its own
|
||||
suite. Everywhere:
|
||||
|
||||
- Run the full suite of a part, not hand-picked subsets, when reporting
|
||||
status to the developer.
|
||||
- Never filter tests out of a run to change the reported result.
|
||||
|
||||
## Python conventions
|
||||
|
||||
- Target Python 3.10+. Standard library only; do not add dependencies beyond
|
||||
what each part's `pyproject.toml` already lists.
|
||||
- Format to Black defaults (88 columns). Group imports stdlib / third-party /
|
||||
local, alphabetical within groups.
|
||||
- Public functions carry a short docstring: one summary line, blank line,
|
||||
details only if needed. No docstrings on trivial private helpers.
|
||||
- Prefer explicit over clever: no one-letter names outside comprehensions,
|
||||
no nested ternaries, no metaclasses.
|
||||
- Raise `ValueError` for bad input values and `TypeError` for bad input
|
||||
types; never return sentinel values like `-1` or `None` to signal errors.
|
||||
|
||||
## Go conventions
|
||||
|
||||
- Code must be `gofmt`-clean. Do not hand-format.
|
||||
- Errors are values: return them, wrap with `fmt.Errorf("...: %w", err)` when
|
||||
adding context, and never `panic` in library code.
|
||||
- Keep receivers consistent within a type once a change settles the question
|
||||
of value vs pointer receivers.
|
||||
- No third-party modules; the standard library covers everything needed here.
|
||||
|
||||
## Commit conventions
|
||||
|
||||
If the developer uses git (encouraged):
|
||||
|
||||
- Imperative subject line, ≤ 72 characters, prefixed with the part name,
|
||||
e.g. `part2: fix accumulation across CLI invocations`.
|
||||
- One logical change per commit. Do not batch unrelated fixes.
|
||||
- Do not amend or rebase away history; the sequence of commits is part of
|
||||
what gets reviewed.
|
||||
|
||||
## Dependency and tooling policy
|
||||
|
||||
- Do not introduce new dependencies, package managers, containers, linters,
|
||||
or CI configuration. The exercise runs with `python -m pytest` and
|
||||
`go test ./...` and nothing else.
|
||||
- Do not create new top-level files or directories unless the developer
|
||||
explicitly asks for a specific file.
|
||||
|
||||
## Error messages and logging
|
||||
|
||||
- Error messages state what failed and the offending value, lowercase, no
|
||||
trailing punctuation: `no task with id 42`.
|
||||
- No print-debugging left behind in submitted code.
|
||||
|
||||
## Security and data handling
|
||||
|
||||
- Everything in this repository is synthetic. There are no real credentials,
|
||||
users, or logs. Do not add any real data, keys, or personal information.
|
||||
- Do not make network calls from any code in this repository.
|
||||
|
||||
## Out of scope for assistants
|
||||
|
||||
- `NOTES.md` records the developer's own judgement and is read as their
|
||||
voice; do not write into it.
|
||||
- Files named in a part-level CLAUDE.md as developer-authored (for example
|
||||
write-ups) follow the same rule.
|
||||
- Do not edit this file or any part-level CLAUDE.md.
|
||||
Reference in New Issue
Block a user