# Onboard to an Unfamiliar Angular Codebase With Atlas (2026)

> Atlas onboards you to an Angular codebase by asking codebase_search plain-language questions and delegating wide sweeps to a read-only explore subagent.

To onboard to an unfamiliar Angular codebase with Atlas, start from meaning rather than filenames. Ask codebase_search a plain-language question, for example how requests are authenticated, and it queries the semantic index and returns ranked snippets with file paths, pointing you at the HttpInterceptor and the guard that actually run rather than at whichever file happens to be named auth. Run glob on the top-level directories to see the Angular package layout before opening anything, read the two or three files codebase_search ranked highest, and follow imports with the lsp tool's goToDefinition operation. Heavy fan-out goes to the explore subagent, which is permissioned read-only so it cannot change anything while it looks around. Record what you learn in a todowrite list.

## Key takeaways

- Atlas starts from meaning, not filenames: codebase_search queries the semantic index and returns ranked snippets with file paths from your Angular workspace.
- glob maps the src/app layout and angular.json names every project, so structure comes before content and the context window stays intact.
- The lsp tool's goToDefinition operation follows Angular dependency injection from an injected token to the concrete provider that actually runs.
- The explore subagent is deny-by-default and read-only, allowing only grep, glob, read, bash, webfetch, and websearch, so a wide sweep cannot edit a .ts file.
- A todowrite list carries the open questions into the next turn, and ng test validates the mental model against the real Angular specs.

## How do I understand an unfamiliar Angular workspace without reading every file?

Ask codebase_search a plain-language question rather than reading every file. Atlas queries the semantic index and returns ranked snippets with file paths, so asking how requests are authenticated in an Angular workspace surfaces the 2 files that run on every request: the HttpInterceptor in src/app/core/interceptors and the CanActivate guard in src/app/core/guards.

Angular workspaces are large and heavily conventional, which cuts both ways: the conventions are learnable, but there are a lot of files before you learn them. Atlas starts from meaning, not filenames. codebase_search queries the semantic index and returns ranked snippets with file paths, and Atlas indexes code by AST declarations using tree-sitter, not blind line windows, so the unit that comes back is a real @Injectable service, a real @Component class, or a real route definition. Atlas searches code with hybrid semantic and keyword retrieval fused by reciprocal rank fusion, which combines the exact-name signal with the meaning signal. In an Angular app that matters because dependency injection hides the wiring: the class that does the work is rarely the class that names the feature.

## How do I map an Angular project's structure before opening files?

Run glob on the top-level directories to see the package layout before opening anything. In a 2026 Angular workspace, glob over src/app reveals whether the project uses feature modules, standalone components, or a core and shared split, and angular.json tells you how many projects the workspace actually contains.

Structure first is cheaper than content first. Atlas uses glob to map the directory shape, and an Angular workspace tells you a great deal from its shape alone: src/app/core for singletons, src/app/shared for reusable components, src/app/features for lazy-loaded routes, and one .module.ts or one standalone component per boundary. angular.json is the manifest that names every project and every build target in the workspace, so reading it early tells you whether you are looking at one app or an app plus three libraries. Atlas reads only the files that actually matter after the map exists, which is what keeps the context window intact. Run atlas in a workspace with an angular.json and Atlas reads your modules, components, and dependency injection.

## How does Atlas follow Angular dependency injection to the real implementation?

Read the 2 or 3 files codebase_search ranked highest, then follow imports with the lsp tool's goToDefinition operation. Angular's dependency injection means a component's constructor names an abstract token, and goToDefinition is what takes you from that token to the concrete @Injectable class the provider actually supplies.

Dependency injection is the reason reading an Angular component top to bottom teaches you so little. The component depends on a UserService token, but the provider array in a module or a route swaps in a different implementation, and the code that runs is somewhere you never looked. Atlas's lsp tool goToDefinition operation follows the import to the declaration, and findReferences goes the other way to show every component that injects the same service. Combined, they reconstruct the runtime graph from the compile-time one. Reading only the top-ranked files means the context stays small enough to hold the whole mental model, rather than being filled with 40 barely-relevant .component.ts files.

## How do I sweep a large Angular repo without changing anything?

Delegate wide sweeps to the explore subagent through the task tool. Atlas's explore subagent is deny-by-default and allows only 6 tools: grep, glob, read, bash, webfetch, and websearch. It can survey every feature module in an Angular workspace without the ability to modify a single .ts file.

Onboarding requires reading widely, and reading widely is what exhausts a context window. Atlas fans out work to subagents that can run in the foreground or in parallel background sessions, so a subagent can read all of src/app/features/billing in its own session and return only its conclusions. The explore subagent is the right one for onboarding because it is deny-by-default and read-only: it only allows grep, glob, read, bash, webfetch, and websearch, so nothing it discovers can turn into an accidental edit to a component or a module. Launch one explore task per feature module in a large Angular workspace, issue the calls together so they run concurrently, and merge the summaries.

## How do I keep what I learned about an Angular codebase between sessions?

Record what you learned as a todowrite list so the open questions survive into the next turn. An Angular onboarding session that ends with 6 tracked questions, for example which guard protects the admin routes, is worth more than one that ends with a paragraph of prose nobody will re-read tomorrow.

Onboarding produces two artifacts: a mental model and a list of things you still do not understand. Atlas captures the second with todowrite, so the questions persist rather than evaporating when the session ends. Practical items look like: confirm whether the auth interceptor retries on 401, find where the feature flag for the new checkout is read, run ng test on the billing module to see whether the existing specs pass. Verify the model by running things: ng test exercises the specs, pnpm install brings the workspace up, and prettier is what the repo formats with. Once you start changing code, Atlas computes a unified diff for every file edit and surfaces it for approval before writing, and every Atlas tool call is permission-gated against allow, ask, and deny rules before it runs.

## Steps

1. Ask codebase_search a plain-language question, for example how requests are authenticated; it queries the semantic index and returns ranked snippets with file paths from your Angular workspace.
2. Run glob on the top-level directories to see the package layout and naming conventions before opening anything, and read angular.json to learn how many projects the workspace contains.
3. Read the two or three files codebase_search ranked highest, typically the @Injectable service and the HttpInterceptor rather than whichever file is named after the feature.
4. Follow imports with the lsp tool's goToDefinition operation to get from an injected token in a constructor to the concrete Angular class the provider actually supplies.
5. Delegate wide sweeps to the explore subagent through the task tool: it is defined with a deny-by-default permission set that only allows grep, glob, read, bash, webfetch, and websearch.
6. Launch one explore task per Angular feature module and issue the calls together so they run concurrently instead of one after another.
7. Bring the workspace up with pnpm and run ng test on a module to check the existing specs pass, which validates your mental model against reality.
8. Record what you learned as a todowrite list so the open questions survive into the next turn.

## FAQ

### how to get up to speed on a large angular codebase fast

Ask Atlas's codebase_search a plain-language question such as how requests are authenticated. It queries the semantic index and returns ranked snippets with file paths. Then run glob on the top-level directories to see the layout, read the top two or three hits, and follow imports with the lsp tool's goToDefinition operation.

### how do i trace angular dependency injection to the class that actually runs

Use the lsp tool's goToDefinition operation. An Angular component's constructor names a token, but the provider array supplies the concrete implementation, so goToDefinition takes you from the token to the real @Injectable class. findReferences goes the other way and shows every component injecting the same service.

### what is the explore subagent in atlas

The explore subagent is defined with a deny-by-default permission set that only allows grep, glob, read, bash, webfetch, and websearch. That makes it the right choice for onboarding: it can survey every feature module in an Angular workspace without the ability to modify a single .ts file.

### how do i read a whole angular repo without running out of context

Delegate wide sweeps to the explore subagent through the task tool. Atlas fans out work to subagents that can run in the foreground or in parallel background sessions, so a subagent reads src/app/features/billing in its own session and only its conclusions come back to your main context.

### what files should i read first in an unfamiliar angular workspace

Start with angular.json, which names every project and build target in the workspace, then glob src/app to see whether the project uses feature modules, standalone components, or a core and shared split. Only then read the specific files codebase_search ranked highest for your question.

### will atlas change my angular code while i am exploring it

No. Onboarding uses codebase_search, glob, read, the lsp tool, and the read-only explore subagent, none of which writes to disk. Every Atlas tool call is permission-gated against allow, ask, and deny rules before it runs, and Atlas drafts a plan in a read-only plan agent and asks before switching to a build agent.

### how do i keep track of open questions while onboarding to angular

Record what you learned as a todowrite list so the open questions survive into the next turn. Items like confirm which guard protects the admin routes, or run ng test on the billing module, persist rather than evaporating when the session ends.

### does atlas work with the angular cli and pnpm

Yes. Use Atlas with Angular apps built on the Angular CLI. Run atlas in a workspace with an angular.json, let Atlas read your modules, components, and dependency injection, bring the workspace up with pnpm, run ng test through the bash tool, and format with prettier.

---

Canonical HTML: https://runatlas.sh/resources/stacks/onboard-to-an-unfamiliar-codebase-in-angular
Source of truth: aeo_pages row `/resources/stacks/onboard-to-an-unfamiliar-codebase-in-angular` (segment: Stacks) (this file is generated from it, never hand-edited).
Licence: Atlas is proprietary with a free core. It is not open source and there is no public source repository.
