orient-in-codebase
Learn an unfamiliar repository before changing it, including its real build and test commands, conventions and current health. Use this at the start of work in any repository you have not read in this
SKILL.md.claude/skills/orient-in-codebase/SKILL.md
GitHubOrient in a codebase
Most bad changes start with a wrong assumption about the repository. A few minutes here prevents guessed commands, duplicated helpers and confusion over failures that already existed.
When to use
- First task in a repository, or in an area you have not read.
- You do not know how tests run, or which branch is current.
Skip this if you already did it for this area in the current session.
Steps
Check where you are. Run these and read the output:
git status --short --branch git fetch origin git log --oneline -5If the branch is behind the default branch, note it. A search on a stale branch can miss code that exists.
Read the project's instructions. Look for
AGENTS.md,CLAUDE.md,GEMINI.md,CONTRIBUTING.mdandREADME.md. They override your habits.Identify the stack from its manifest files.
File Stack Look for commands in package.jsonJavaScript or TypeScript scriptspyproject.toml,requirements.txtPython [tool.*],tox.ini,Makefilego.modGo Makefile,go test ./...Cargo.tomlRust cargo testpom.xml,build.gradleJava or Kotlin mvn test,./gradlew test*.csproj,*.sln.NET dotnet testGemfileRuby Rakefile,bin/rspeccomposer.jsonPHP scriptsFind the commands CI runs. Read
.github/workflows/,.gitlab-ci.ymlor the equivalent. CI is the real definition of passing, and docs are often out of date. Note the commands for tests, lint, type checks and build.Record a baseline. Run the tests for the area you will change, before you change anything. Write down what fails now. Without this, you cannot tell whether you caused a failure.
Find the code path. Search for a word from the task, such as a route, an error message or a UI label. Follow it from the entry point to storage. Read callers as well as the function itself.
Find the nearest example. Open the closest similar feature and its test. Copy their naming, structure, helpers and error handling.
Stop and ask when
- The task description does not match what the code does.
- The baseline is broken in a way that blocks your work.
- You cannot find how to run the tests after checking the manifest and CI.
Common mistakes
| Tempting move | Why it fails | Do this instead |
|---|---|---|
Guess npm test or pytest |
The real command may differ or do less | Read the manifest and CI |
| Trust the README alone | It may be out of date | Confirm with CI config and by running it |
| Skip the baseline | Old failures look like yours | Run the tests first |
| Write a new helper | One probably exists | Search before you write |
| Say something does not exist after one search | The name may differ or the branch may be stale | Fetch, try other terms, then state what you searched |
Report
Branch: <name>, <ahead/behind default branch>
Stack: <languages and frameworks>
Commands: test `<cmd>`, lint `<cmd>`, types `<cmd>`, build `<cmd>`
Baseline: <what passes, what already fails>
Code path: <entry point> -> <main files>
Pattern to follow: <nearest similar file>