scan · git:20260826.5744653 · 2026-08-26 · sha256 db53bf5a1a198e26

scan git:20260826.5744653A

Immutable. This exact content never changes and is served at /api/v1/blob/db53bf5a1a198e26.

---
name: scan
description: Scan project once per session. Run first — all other skills depend on this.
mcp: codebase-memory-mcp
---

# /supergraph:scan

Load verified, project-scoped graph context once. Follow the shared
`references/codebase-memory-contract.md`.

Announce: "📡 /supergraph:scan — loading project context..."

## 1. Detect project and branch

Use `git branch --show-current`, resolve the repository to an **absolute** path,
and run `bin/detect-project.sh` when present. Otherwise detect commands from:

| File | Type | Test | Lint | Format | Build |
|---|---|---|---|---|---|
| `package.json` | node | `npm test --` | `npx eslint .` | `npx prettier --write .` | `npm run build` |
| `Cargo.toml` | rust | `cargo test` | `cargo clippy` | `cargo fmt` | `cargo build` |
| `pyproject.toml` | python | `pytest` | `ruff check .` | `ruff format .` | `python -m build` |
| `go.mod` | go | `go test ./...` | `golangci-lint run` | `gofmt -w .` | `go build ./...` |
| `pubspec.yaml` | flutter | `flutter test` | `flutter analyze` | `dart format .` | `flutter build` |

Ask when none match; never guess commands. Derive one stable `CBM_PROJECT` from
the repository root name and retain it across branches. Default
`CBM_INDEX_MODE=moderate`.

## 2. Verify provider and freshness

1. Call `list_projects` and find `CBM_PROJECT`.
2. If found, call `index_status(project=CBM_PROJECT)`.
3. Treat missing project, changed branch, stale state, tool error, failed state,
   or `status: "degraded"` as requiring a new index.
4. Call `index_repository(repo_path=<absolute repo path>, name=CBM_PROJECT,
   mode=CBM_INDEX_MODE)` when required. Require `status: "indexed"`.
5. Re-run `index_status`; never claim reuse without a healthy response.
6. Call `get_graph_schema(project=CBM_PROJECT)` before structural queries.
7. Load `get_architecture(project=CBM_PROJECT,
   aspects=["overview","layers","boundaries","clusters","hotspots"])`.

On any mandatory provider/index/schema error: STOP, show the exact error and the
recovery command (`codebase-memory-mcp cli index_repository --repo-path
<absolute> --name <project> --mode moderate`). Do not write freshness state.

## 3. Reverify Serena

Always call Serena initial instructions and activate project when available, then
load a top-level symbols overview. Set `SERENA_ACTIVE=true` only after success;
otherwise set it false and report Serena unavailable.

## 4. Write `.supergraph-env`

Only after healthy `index_status`, schema, and architecture responses:

```dotenv
PROJECT_TYPE=...
TEST_CMD=...
LINT_CMD=...
FORMAT_CMD=...
BUILD_CMD=...
BRANCH=...
GRAPH_PROVIDER=codebase-memory-mcp
CBM_PROJECT=...
CBM_INDEX_MODE=moderate
CBM_INDEXED_AT=YYYY-MM-DDTHH:MM:SS
SERENA_ACTIVE=true|false
SCAN_TIMESTAMP=YYYY-MM-DDTHH:MM:SS
```

Branch-matched reuse still requires `index_status` and Serena revalidation.

## 5. Report

Report project/type/commands, provider/project/index status, architecture counts
available from the response, Serena status, and whether scan was fresh or reused.

## Rules

- Never record false freshness after errors or degraded state.
- All graph calls include `project=CBM_PROJECT` where supported.
- Respect pagination and failure semantics in the shared contract.
- For trivial ≤2 files / <20 lines, graph discovery may stop after verified status (no hubs/bridges needed).