Follow the Angular, TypeScript and accessibility rules in .claude/rules/angular.md (Claude Code loads it on its own).
Angular DevTools inspects a running Angular app and serves what it finds to a panel and to AI agents over MCP. It is an Nx and pnpm workspace:
| Path | What it is |
|---|---|
packages/ng-devtools |
The published package: the page overlay and collectors, the devframe server (src/devframe.ts), the Express hub, the Vite plugin, the CLI and the agent tools |
app |
The panel UI, an Angular app served by the hub and bundled into the Chrome extension |
extension |
The Chrome extension; extension/ui is a committed build of app |
apps/docs |
The documentation site |
src and examples/analog |
The demo apps used for manual checks and docs samples |
| Command | What it runs |
|---|---|
pnpm test:devtools |
Package tests |
pnpm test:panel |
Panel tests |
pnpm test:axe |
Builds a static report and runs axe on every panel view |
pnpm typecheck |
TypeScript and template checks for every project |
pnpm format:check |
Prettier, including the docs markdown |
pnpm skills:check |
Checks the skills and roles in .claude |
pnpm docs:build |
Builds the docs site with its link guards |
pnpm extension:build |
Rebuilds extension/ui from app |
pnpm commit:check |
Checks the commit messages on the branch |
The words this project uses for its own concepts (overlay, collector, hub, devframe, agent tool and so on) are defined in docs/CONTEXT.md. Use them the same way in code, docs and issues.
- After any change in
app, runpnpm extension:buildand commitextension/ui. CI fails when the committed bundle is stale. - Commit messages and pull request titles use
type(scope): summarywith the scopes indocs/contributing/commit-message-guidelines.md. Pull requests are squash merged. - A new agent tool or RPC must be listed in
packages/ng-devtools/src/config.ts(AGENT_INSPECTOR,RPC_INSPECTOR, andACTION_TOOLSfor anything that writes), or turning its inspector off won't hide it. - Values sent to the panel or to agents go through
serializeor the redaction helpers, soredaction.secretNames, JWTs and bearer tokens are masked everywhere. - Data from the page carries a
pageIdand expires, so one tab never overwrites another. - Docs links are relative
.mdlinks, which the build checks.*Angularstyle words are keyword links on purpose. - Behaviour, option, label or tool changes update the matching docs page in the same pull request.
Follow the repository guides in docs/contributing/:
commit-message-guidelines.md:type(scope): summarycommits and pull request titles (types and this repo's scopes).coding-standards.md: TypeScript and Angular rules, and how collectors read the inspected page (debug APIs, stableWeakMapids, no DOM writes,pageIdwith expiry, cheap pushes).ui-guidelines.md: theme tokens, brand palette, page anatomy and accessibility for the panel.
Use the matching skill for the task:
.claude/skills/devtools-uifor panel UI work..claude/skills/devtools-inspectorfor data collection, the server side and agent tools..claude/skills/devtools-docsfor the docs site (apps/docs) andREADME.md..claude/skills/devtools-verifybefore calling a change done..claude/skills/devtools-commitfor commits and pull requests..claude/skills/devtools-fix-issueto take one issue to a pull request..claude/skills/devtools-work-issuesto work through a batch of issues with parallel agents..claude/skills/grillingto settle an open decision one question at a time before any work starts.
Roles for delegating work live in .claude/agents/: ui-engineer, inspector-engineer, a11y-reviewer and devtools-reviewer.
- Demo app (SSR):
pnpm build --configuration development && node dist/angular-devtools/server/server.mjs→ http://localhost:4000 - Devtools SPA (hot reload):
pnpm devtools:dev→ http://localhost:5173 (serves its own RPC, so source-scan data works; live tabs need an app page connected, so use the SSR server on 4000 for those) - Demo app (SPA, no SSR):
pnpm start→ http://localhost:4200 (runsng servewith SSR and hot reload; devtools popup + RPC work without a separate server) - The devtools popup appears on the demo app page; click it to open the inspector panel
- Changes to
app/src/(devtools SPA) are visible live viapnpm devtools:dev; the SSR server serves the SPA built intopackages/ng-devtools/dist/public(or the npm-published copy when it has not been built), so runpnpm devtools:build-pkgto refresh it - To publish: update the version in
packages/ng-devtools/package.json, then runpnpm devtools:publish(the package build bundles the SPA)
- Use the
devtools-docsskill (.claude/skills/devtools-docs) for any change inapps/docs/src/content, the docs home page orREADME.md. - The human-readable version is
apps/docs/src/content/contributing/writing-docs.md.