projscan 4.0.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +480 -24
- package/dist/cli/commands/route.js +1 -0
- package/dist/cli/commands/route.js.map +1 -1
- package/dist/cli/commands/semanticGraph.js +27 -0
- package/dist/cli/commands/semanticGraph.js.map +1 -1
- package/dist/cli/commands/start.js +1095 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/core/dependencyAnalyzer.js +172 -0
- package/dist/core/dependencyAnalyzer.js.map +1 -1
- package/dist/core/intentRouter.d.ts +8 -1
- package/dist/core/intentRouter.js +2186 -22
- package/dist/core/intentRouter.js.map +1 -1
- package/dist/core/issueEngine.js +6 -7
- package/dist/core/issueEngine.js.map +1 -1
- package/dist/core/onboarding.d.ts +2 -2
- package/dist/core/onboarding.js +29 -5
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/start.d.ts +1 -0
- package/dist/core/start.js +3047 -10
- package/dist/core/start.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +14 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/start.js +6 -1
- package/dist/mcp/tools/start.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/reporters/consoleReporter.js +19 -0
- package/dist/reporters/consoleReporter.js.map +1 -1
- package/dist/reporters/markdownReporter.js +19 -0
- package/dist/reporters/markdownReporter.js.map +1 -1
- package/dist/tool-manifest.json +6 -2
- package/dist/types.d.ts +275 -0
- package/docs/GUIDE.md +1567 -0
- package/docs/ROADMAP.md +219 -0
- package/docs/demos/projscan-4-1-demo.html +677 -0
- package/docs/projscan-mission-control.png +0 -0
- package/docs/projscan-proof-router.png +0 -0
- package/package.json +8 -1
- package/scripts/capture-readme-assets.mjs +60 -0
package/README.md
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
|
|
10
10
|
**Agent-first code intelligence.** An MCP server that lets AI coding agents (Claude Code, Codex, Cursor, Gemini, Windsurf, Cline, Continue, Zed — any MCP-aware client) query your codebase — with a CLI for humans and a local plugin layer for team-specific policy and reporting.
|
|
11
11
|
|
|
12
|
-
[AI Agent Quick Start](#ai-agent-integration-mcp) · [CLI Quick Start](#quick-start) · [Commands](#commands) · [Full Guide](
|
|
12
|
+
[AI Agent Quick Start](#ai-agent-integration-mcp) · [CLI Quick Start](#quick-start) · [Commands](#commands) · [Full Guide](docs/GUIDE.md) · [Roadmap](docs/ROADMAP.md)
|
|
13
13
|
|
|
14
|
-
<img src="
|
|
14
|
+
<img src="docs/projscan-mission-control.png" alt="projscan Mission Control routing a developer intent into ready actions, done criteria, and proof commands" width="760">
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
@@ -33,7 +33,155 @@ The local plugin platform lets teams add project-specific findings and render `d
|
|
|
33
33
|
npx projscan
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
36
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/projscan-reporter-plugin.gif" alt="projscan doctor rendered through a local reporter plugin in a macOS-style terminal window" width="700">
|
|
37
|
+
|
|
38
|
+
## What's New in 4.2.0
|
|
39
|
+
|
|
40
|
+
4.2.0 turns Mission Control into a runnable handoff system: tell projscan the work, then get the next command, MCP call, proof queue, review gate, and saved bundle an agent can resume.
|
|
41
|
+
|
|
42
|
+
- **Execution plans with a cursor.** `projscan start --intent "<goal>"` now returns ordered phases, blocked inputs, follow-ups, done criteria, and a current cursor so agents know what to run next.
|
|
43
|
+
- **Copyable shortcuts for humans and MCP clients.** Use `--next-command`, `--next-tool-call`, `--proof-commands`, `--checklist`, `--resume-json`, `--handoff-json`, `--task-card`, and `--runbook` when you need one surface instead of the full report.
|
|
44
|
+
- **Saved mission bundles.** `--save-mission <dir>` writes a runnable bundle with `mission.sh`, `status.sh`, `review.sh`, quick commands, manifest metadata, prompts, JSON handoff files, proof logs, run reports, and `summary.json`.
|
|
45
|
+
- **Stop-and-review gates.** Mission Control now carries review policy, worktree evidence, proof queues, done criteria, reviewer decisions, and copyable reply text so agents stop before another slice, release, publish, deploy, push, merge, or version bump.
|
|
46
|
+
- **Safer shell handoffs.** Generated commands and saved mission scripts now escape `$` and backticks in freeform intent text, so copied commands treat developer goals as literal arguments.
|
|
47
|
+
|
|
48
|
+
<img src="docs/projscan-proof-router.png" alt="projscan intent router and proof workflow showing impact routing, setup discovery, dependency intelligence, and stable-surface guardrails" width="760">
|
|
49
|
+
|
|
50
|
+
Regenerate the README screenshots with Playwright:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm run docs:screenshots
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Mission Execution Plan + Copyable Handoffs
|
|
57
|
+
|
|
58
|
+
`projscan start --intent "<goal>"` gives agents an execution plan with ordered phases, ready commands, blocked inputs, follow-ups, proof, and done criteria. The cursor points to the next useful step and includes MCP `tool` / `args` when projscan can call it directly.
|
|
59
|
+
|
|
60
|
+
Projscan also returns a Markdown runbook, a task card, a review gate, and a resume object. A resumed agent gets the current command, the MCP tool call, placeholder bindings, follow-up templates, the ordered checklist, and the remaining proof queue without walking the full plan. MCP and JSON clients can read `missionControl.taskCard.markdown`, the same Markdown printed by `--task-card` and written to `task-card.md`. They can also read `missionControl.reviewGate.markdown` to know when to stop, report proof, and wait for approval before starting another slice, release, publish, or deploy. `missionControl.reviewGate.worktree` adds the current worktree evidence summary and visible changed files, so review handoffs keep the state projscan computed for the start report. `missionControl.reviewGate.proof` carries the remaining proof queue with commands, MCP calls, and structured proof items for review-only handoffs. `missionControl.reviewGate.doneWhen` mirrors the mission success criteria, so review-only handoffs show the approval target beside proof and worktree evidence. `missionControl.reviewGate.policy` lists the actions blocked until explicit reviewer approval: another slice, release, publish, deploy, push, merge, and version bump. `--review-gate-json` and saved `review-gate.json` expose the full review packet without requiring callers to parse the full handoff. `--review-policy` and saved `review-policy.json` expose only the approval boundary. `missionControl.reviewGate.decisions` gives the reviewer the allowed next choices and copyable reply text: approve another slice, request changes, or review a version candidate without publishing; the same menu appears in default console output, saved bundle README files, task cards, handoff prompts, and runbook Markdown. `--review-replies` and saved `review-replies.txt` print only those reply lines when a reviewer wants the smallest approval surface. The complete handoff object carries the same gate at `missionControl.handoff.reviewGate`, so `--handoff-json` and saved `handoff.json` include the stop boundary.
|
|
61
|
+
|
|
62
|
+
Use the index when you want the menu, or call one shortcut directly:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
projscan start --shortcuts --intent "<goal>" # Show the shortcut menu
|
|
66
|
+
projscan start --shortcuts-json --intent "<goal>" # Shortcut menu as JSON
|
|
67
|
+
projscan start --next-command --intent "<goal>" # Current shell command
|
|
68
|
+
projscan start --next-tool-call --intent "<goal>" # Current MCP call as compact JSON
|
|
69
|
+
projscan start --ready-tool-calls --intent "<goal>" # Current + proof MCP calls
|
|
70
|
+
projscan start --proof-commands --intent "<goal>" # Remaining proof commands
|
|
71
|
+
projscan start --checklist --intent "<goal>" # Ordered resume task card
|
|
72
|
+
projscan start --resume-json --intent "<goal>" # Structured resume object
|
|
73
|
+
projscan start --handoff-json --intent "<goal>" # Complete handoff object
|
|
74
|
+
projscan start --mission-script --intent "<goal>" # Shell script: current step + proof
|
|
75
|
+
projscan start --save-mission .projscan/mission --intent "<goal>" # Write bundle + quickstart
|
|
76
|
+
projscan start --task-card --intent "<goal>" # Paste-ready Markdown task card
|
|
77
|
+
projscan start --review-gate --intent "<goal>" # Stop-and-review gate
|
|
78
|
+
projscan start --review-gate-json --intent "<goal>" # Review gate JSON
|
|
79
|
+
projscan start --review-policy --intent "<goal>" # Review policy JSON
|
|
80
|
+
projscan start --review-replies --intent "<goal>" # Copy-only reviewer replies
|
|
81
|
+
projscan start --runbook --intent "<goal>" # Markdown mission runbook
|
|
82
|
+
projscan start --handoff-prompt --intent "<goal>" # One-line handoff prompt
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Saved mission bundles include `README.md`, `next-command.txt`, `next-tool-call.json`, `handoff-prompt.txt`, `resume-prompt.txt`, `task-card.md`, `review-gate.md`, `review-gate.json`, `review-policy.json`, `review-replies.txt`, the Markdown runbook, structured handoff/resume JSON, `ready-tool-calls.json`, `shortcuts.json`, `mission.sh`, `status.sh`, `review.sh`, `proof-logs/README.md`, `proof-logs/status.jsonl`, `proof-logs/run-report.md`, `proof-logs/summary.json`, proof commands, and a manifest. The saved bundle README starts with quick commands for `./mission.sh`, `./status.sh`, and `./review.sh`; `manifest.json` exposes the same quick commands under `quickCommands` for agents and JSON clients. Running saved `mission.sh` writes current and proof command output under `proof-logs/`, appends exit codes to `status.jsonl`, refreshes `run-report.md` for review, and writes the latest run state plus next action to `summary.json` for agents. Run `./status.sh` from the bundle to print the latest mission state and next action; it exits `0` for passed, `1` for failed, and `2` for not-run or running states. Run `./review.sh` from the bundle to print the status, review gate, run report, evidence command checklist, and reviewer replies in one terminal view.
|
|
86
|
+
|
|
87
|
+
Default console output shows the same sections inline: `Run Cursor`, `Resume Checklist`, `Handoff Prompt`, `Ready Proof`, and `Proof Queue`. The proof views use the resume-aware remaining queue, so projscan does not repeat the current cursor command as proof.
|
|
88
|
+
|
|
89
|
+
Console output shows the same model for humans:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
Execution Plan
|
|
93
|
+
Run 1 ready step, resolve 2 input(s), then gather 4 proof command(s).
|
|
94
|
+
- [ready] Next Action
|
|
95
|
+
- Find exact target for impact analysis: projscan search "auth token loader" --format json
|
|
96
|
+
- [blocked] Resolve Inputs
|
|
97
|
+
- symbol: Replace <symbol-from-search> with an exported symbol returned by the search step.
|
|
98
|
+
- [pending] Follow Up
|
|
99
|
+
- If search returns an exported symbol: projscan impact --symbol <symbol-from-search> --format json
|
|
100
|
+
blocked by: input-1
|
|
101
|
+
Run Cursor
|
|
102
|
+
next: ready-1 in Ready Commands
|
|
103
|
+
command: projscan search "auth token loader" --format json
|
|
104
|
+
MCP call: projscan_search {"query":"auth token loader"}
|
|
105
|
+
unlocks: input-1, input-2
|
|
106
|
+
Resume Checklist
|
|
107
|
+
- [ready] run_current ready-1: projscan search "auth token loader" --format json (MCP: projscan_search {"query":"auth token loader"})
|
|
108
|
+
- [blocked] resolve_input input-1: <symbol-from-search> -> Replace <symbol-from-search> with an exported symbol returned by the search step.
|
|
109
|
+
- [blocked] run_follow_up follow-up-1: projscan impact --symbol <symbol-from-search> --format json (MCP: projscan_impact {"symbol":"<symbol-from-search>"})
|
|
110
|
+
- [ready] run_proof proof-2: projscan preflight --mode before_edit --format json (MCP: projscan_preflight {"mode":"before_edit"})
|
|
111
|
+
Handoff Prompt
|
|
112
|
+
Resume: Resume at ready-1 in ready_now: run `projscan search "auth token loader" --format json`. This can unlock input-1 (symbol), input-2 (file). Done when: An exact symbol or file path is selected from search results before impact analysis continues.
|
|
113
|
+
Ready Proof
|
|
114
|
+
Ready-to-run proof commands; placeholder follow-ups are excluded until Needs Input is resolved.
|
|
115
|
+
- projscan preflight --mode before_edit --format json
|
|
116
|
+
- projscan understand --view verify --format json
|
|
117
|
+
Proof Queue
|
|
118
|
+
- proof-2: projscan preflight --mode before_edit --format json (MCP: projscan_preflight {"mode":"before_edit"})
|
|
119
|
+
- proof-3: projscan understand --view verify --format json (MCP: projscan_understand {"view":"verify"})
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Runbook handoff example:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
Agent Runbook
|
|
126
|
+
# Mission Runbook
|
|
127
|
+
Intent: what breaks if I rename the auth token loader
|
|
128
|
+
Status: needs_attention
|
|
129
|
+
Current phase: ready_now
|
|
130
|
+
|
|
131
|
+
## Current Cursor
|
|
132
|
+
- Step: ready-1 in ready_now
|
|
133
|
+
- Command: `projscan search "auth token loader" --format json`
|
|
134
|
+
- MCP call: projscan_search {"query":"auth token loader"}
|
|
135
|
+
- Unlocks: input-1, input-2
|
|
136
|
+
|
|
137
|
+
## Resume
|
|
138
|
+
Run now:
|
|
139
|
+
```sh
|
|
140
|
+
projscan search "auth token loader" --format json
|
|
141
|
+
```
|
|
142
|
+
MCP call: projscan_search {"query":"auth token loader"}
|
|
143
|
+
After running, resolve:
|
|
144
|
+
- input-1 (symbol): Replace <symbol-from-search> with an exported symbol returned by the search step.
|
|
145
|
+
- input-2 (file): Replace <file-from-search> with a file path returned by the search step.
|
|
146
|
+
Template inputs:
|
|
147
|
+
- <symbol-from-search> -> input-1 (symbol): Replace <symbol-from-search> with an exported symbol returned by the search step.
|
|
148
|
+
- <file-from-search> -> input-2 (file): Replace <file-from-search> with a file path returned by the search step.
|
|
149
|
+
Resume checklist:
|
|
150
|
+
- [ready] run_current ready-1: projscan search "auth token loader" --format json (MCP: projscan_search {"query":"auth token loader"})
|
|
151
|
+
- [blocked] resolve_input input-1: <symbol-from-search> -> Replace <symbol-from-search> with an exported symbol returned by the search step.
|
|
152
|
+
- [ready] run_proof proof-2: projscan preflight --mode before_edit --format json (MCP: projscan_preflight {"mode":"before_edit"})
|
|
153
|
+
- [pending] confirm_done criterion-1: An exact symbol or file path is selected from search results before impact analysis continues.
|
|
154
|
+
Proof queue:
|
|
155
|
+
- proof-2: `projscan preflight --mode before_edit --format json` (MCP: projscan_preflight {"mode":"before_edit"})
|
|
156
|
+
- proof-3: `projscan understand --view verify --format json` (MCP: projscan_understand {"view":"verify"})
|
|
157
|
+
Remaining proof:
|
|
158
|
+
- `projscan preflight --mode before_edit --format json`
|
|
159
|
+
- `projscan understand --view verify --format json`
|
|
160
|
+
MCP proof calls:
|
|
161
|
+
- proof-2: projscan_preflight {"mode":"before_edit"}
|
|
162
|
+
- proof-3: projscan_understand {"view":"verify"}
|
|
163
|
+
Then use:
|
|
164
|
+
- follow-up-1 (If search returns an exported symbol): projscan impact --symbol <symbol-from-search> --format json
|
|
165
|
+
- follow-up-2 (If search returns a file path): projscan impact <file-from-search> --format json
|
|
166
|
+
Prompt: Resume at ready-1 in ready_now: run `projscan search "auth token loader" --format json`. This can unlock input-1 (symbol), input-2 (file).
|
|
167
|
+
|
|
168
|
+
## Handoff Prompt
|
|
169
|
+
Resume: Resume at ready-1 in ready_now: run `projscan search "auth token loader" --format json`. This can unlock input-1 (symbol), input-2 (file). Done when: An exact symbol or file path is selected from search results before impact analysis continues. Needs input: symbol=<symbol-from-search>, file=<file-from-search>. Ready proof: Ready-to-run proof commands; placeholder follow-ups are excluded until Needs Input is resolved. projscan preflight --mode before_edit --format json && projscan understand --view verify --format json.
|
|
170
|
+
|
|
171
|
+
## Review Gate
|
|
172
|
+
- [ ] Complete this task card and remaining proof.
|
|
173
|
+
- [ ] Capture `git status --short`.
|
|
174
|
+
- [ ] Capture `git diff --stat`.
|
|
175
|
+
- [ ] Stop and ask for approval before starting another slice, release, publish, or deploy.
|
|
176
|
+
|
|
177
|
+
Review the completed mission, proof output, and working-tree summary before approving another slice, release, publish, or deploy.
|
|
178
|
+
|
|
179
|
+
## Ready Commands
|
|
180
|
+
- `projscan search "auth token loader" --format json`
|
|
181
|
+
|
|
182
|
+
## Blocked Inputs
|
|
183
|
+
- symbol: Replace <symbol-from-search> with an exported symbol returned by the search step.
|
|
184
|
+
```
|
|
37
185
|
|
|
38
186
|
Run `projscan doctor` for a focused health check:
|
|
39
187
|
|
|
@@ -41,7 +189,7 @@ Run `projscan doctor` for a focused health check:
|
|
|
41
189
|
npx projscan doctor
|
|
42
190
|
```
|
|
43
191
|
|
|
44
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
192
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
|
|
45
193
|
|
|
46
194
|
## Install
|
|
47
195
|
|
|
@@ -62,6 +210,286 @@ Run this path first inside a repository:
|
|
|
62
210
|
```bash
|
|
63
211
|
projscan privacy-check # Show exactly what can be read, written, or contacted
|
|
64
212
|
projscan start # First-60-seconds workflow orientation
|
|
213
|
+
projscan start --intent "what can projscan read?" # Routes to local privacy/trust boundary
|
|
214
|
+
projscan start --intent "does projscan read .env values?" # Routes to .env content policy check
|
|
215
|
+
projscan start --intent "is it safe to commit this change?" # Mission Control: inferred mode + ready actions + done criteria + proof
|
|
216
|
+
projscan start --intent "is my branch ready to merge?" # Routes to before-merge preflight readiness
|
|
217
|
+
projscan start --intent "rebase went wrong" # Routes to before-merge preflight recovery
|
|
218
|
+
projscan start --intent "resolve merge conflicts" # Routes to before-merge preflight recovery
|
|
219
|
+
projscan start --intent "what is blocking this PR?" # Routes to before-commit preflight blockers
|
|
220
|
+
projscan start --intent "summarize this repo" # Routes to cited repo map + orientation summary
|
|
221
|
+
projscan start --intent "what files should I read first?" # Routes to cited repo map + read-first files
|
|
222
|
+
projscan start --intent "where do I start in this codebase?" # Routes to cited repo map + read-first files
|
|
223
|
+
projscan start --intent "give me a tour of the repo" # Routes to cited repo map + entrypoints
|
|
224
|
+
projscan start --intent "explain the architecture" # Routes to cited repo map + boundaries
|
|
225
|
+
projscan start --intent "show me the main entrypoints" # Routes to cited repo map + entrypoints
|
|
226
|
+
projscan start --intent "how do I run this project?" # Routes to cited repo map + entrypoints
|
|
227
|
+
projscan start --intent "what command starts the dev server?" # Routes to cited repo map + entrypoints
|
|
228
|
+
projscan start --intent "what npm scripts exist?" # Routes to package/config contract discovery
|
|
229
|
+
projscan start --intent "which script runs e2e tests?" # Routes to package/config contract discovery
|
|
230
|
+
projscan start --intent "what command runs lint?" # Routes to package/config contract discovery
|
|
231
|
+
projscan start --intent "how do I run typecheck?" # Routes to package/config contract discovery
|
|
232
|
+
projscan start --intent "how do I seed the database?" # Routes to package/config contract discovery
|
|
233
|
+
projscan start --intent "what command runs migrations?" # Routes to package/config contract discovery
|
|
234
|
+
projscan start --intent "where should I put this new feature?" # Routes to change-readiness map
|
|
235
|
+
projscan start --intent "implement OAuth login" # Routes to change-readiness map
|
|
236
|
+
projscan start --intent "add billing webhook support" # Routes to change-readiness map
|
|
237
|
+
projscan start --intent "build a settings page" # Routes to change-readiness map
|
|
238
|
+
projscan start --intent "where should I add a new endpoint?" # Routes to change-readiness map
|
|
239
|
+
projscan start --intent "what files do I need to change for auth?" # Routes to change-readiness map
|
|
240
|
+
projscan start --intent "what docs should I update for this change?" # Routes to change-readiness map
|
|
241
|
+
projscan start --intent "where should I add this database migration?" # Routes to change-readiness map
|
|
242
|
+
projscan start --intent "which migrations exist?" # Routes to focused code search
|
|
243
|
+
projscan start --intent "show me generated files" # Routes to focused code search
|
|
244
|
+
projscan start --intent "can I drop this column?" # Routes to impact target search
|
|
245
|
+
projscan start --intent "what are the public contracts?" # Routes to public exports/config contracts
|
|
246
|
+
projscan start --intent "how do I safely deprecate this API?" # Routes to public exports/config contracts
|
|
247
|
+
projscan start --intent "what will this API change break?" # Routes to impact target search
|
|
248
|
+
projscan start --intent "what env vars does this repo need?" # Routes to config contract discovery
|
|
249
|
+
projscan start --intent "environment variables missing" # Routes to config contract discovery
|
|
250
|
+
projscan start --intent "where is NEXT_PUBLIC_API_URL used?" # Routes to focused code search
|
|
251
|
+
projscan start --intent "which env var controls auth?" # Routes to focused code search
|
|
252
|
+
projscan start --intent "where is \"Invalid token\" thrown?" # Routes to focused code search
|
|
253
|
+
projscan start --intent "find error message \"Payment failed\"" # Routes to focused code search
|
|
254
|
+
projscan start --intent "where is eslint config?" # Routes to focused code search
|
|
255
|
+
projscan start --intent "which config file defines aliases?" # Routes to focused code search
|
|
256
|
+
projscan start --intent "where is tsconfig path aliases configured?" # Routes to focused code search
|
|
257
|
+
projscan start --intent "where is Vitest config?" # Routes to focused code search
|
|
258
|
+
projscan start --intent "find Babel config" # Routes to focused code search
|
|
259
|
+
projscan start --intent "where is package manager configured?" # Routes to focused code search
|
|
260
|
+
projscan start --intent "where is pnpm workspace file?" # Routes to focused code search
|
|
261
|
+
projscan start --intent "what is risky in this repo?" # Routes to quality dimensions + top risks
|
|
262
|
+
projscan start --intent "what files are risky to touch?" # Routes to hotspot files
|
|
263
|
+
projscan start --intent "which files are too complex?" # Routes to hotspot files
|
|
264
|
+
projscan start --intent "what file should I refactor first?" # Routes to hotspot files
|
|
265
|
+
projscan start --intent "what tech debt should I pay down?" # Routes to hotspot files
|
|
266
|
+
projscan start --intent "what code should I simplify?" # Routes to hotspot files
|
|
267
|
+
projscan start --intent "find performance bottlenecks" # Routes to hotspot files
|
|
268
|
+
projscan start --intent "where are the slow files?" # Routes to hotspot files
|
|
269
|
+
projscan start --intent "find dead code" # Routes to doctor cleanup issues
|
|
270
|
+
projscan start --intent "find dead code and unused exports I can delete" # Routes to doctor cleanup issues
|
|
271
|
+
projscan start --intent "what can I safely delete?" # Routes to doctor cleanup discovery
|
|
272
|
+
projscan start --intent "what can I remove safely?" # Routes to doctor cleanup discovery
|
|
273
|
+
projscan start --intent "port 3000 already in use" # Routes to focused regression planning
|
|
274
|
+
projscan start --intent "peer dependency conflict after npm install" # Routes to focused regression planning
|
|
275
|
+
projscan start --intent "where is runAudit used?" # Routes to symbol impact/caller analysis
|
|
276
|
+
projscan start --intent "what code handles billing?" # Routes to focused code search
|
|
277
|
+
projscan start --intent "which file contains checkout logic?" # Routes to focused code search
|
|
278
|
+
projscan start --intent "find the Stripe webhook handler" # Routes to focused code search
|
|
279
|
+
projscan start --intent "find the handler for POST /api/users" # Routes to focused code search
|
|
280
|
+
projscan start --intent "where is the /checkout route handled?" # Routes to focused code search
|
|
281
|
+
projscan start --intent "where is /settings page rendered?" # Routes to focused code search
|
|
282
|
+
projscan start --intent "which page renders /billing?" # Routes to focused code search
|
|
283
|
+
projscan start --intent "where is route segment for dashboard?" # Routes to focused code search
|
|
284
|
+
projscan start --intent "where is not-found page handled?" # Routes to focused code search
|
|
285
|
+
projscan start --intent "which feature flags exist?" # Routes to focused code search
|
|
286
|
+
projscan start --intent "what background jobs exist?" # Routes to focused code search
|
|
287
|
+
projscan start --intent "find the email queue processor" # Routes to focused code search
|
|
288
|
+
projscan start --intent "where are metrics emitted?" # Routes to focused code search
|
|
289
|
+
projscan start --intent "where do we initialize Sentry?" # Routes to focused code search
|
|
290
|
+
projscan start --intent "what logs should I check for checkout?" # Routes to focused code search
|
|
291
|
+
projscan start --intent "find the dashboard for payments" # Routes to focused code search
|
|
292
|
+
projscan start --intent "where is seed data defined?" # Routes to focused code search
|
|
293
|
+
projscan start --intent "find fixtures for checkout" # Routes to focused code search
|
|
294
|
+
projscan start --intent "which mocks are used for payments?" # Routes to focused code search
|
|
295
|
+
projscan start --intent "where are Storybook stories for Button?" # Routes to focused code search
|
|
296
|
+
projscan start --intent "where are permissions checked for checkout?" # Routes to focused code search
|
|
297
|
+
projscan start --intent "which role can access admin?" # Routes to focused code search
|
|
298
|
+
projscan start --intent "what routes require login?" # Routes to focused code search
|
|
299
|
+
projscan start --intent "where is rate limiting configured?" # Routes to focused code search
|
|
300
|
+
projscan start --intent "where is cache invalidated for products?" # Routes to focused code search
|
|
301
|
+
projscan start --intent "find retry logic for payments" # Routes to focused code search
|
|
302
|
+
projscan start --intent "what sets request timeout?" # Routes to focused code search
|
|
303
|
+
projscan start --intent "find idempotency key handling" # Routes to focused code search
|
|
304
|
+
projscan start --intent "where is webhook signature verified?" # Routes to focused code search
|
|
305
|
+
projscan start --intent "where is input validation for signup?" # Routes to focused code search
|
|
306
|
+
projscan start --intent "which schema validates checkout?" # Routes to focused code search
|
|
307
|
+
projscan start --intent "where are request params parsed?" # Routes to focused code search
|
|
308
|
+
projscan start --intent "where is database transaction started?" # Routes to focused code search
|
|
309
|
+
projscan start --intent "where do we lock the order row?" # Routes to focused code search
|
|
310
|
+
projscan start --intent "what validates email uniqueness?" # Routes to focused code search
|
|
311
|
+
projscan start --intent "where is Prisma model for User?" # Routes to focused code search
|
|
312
|
+
projscan start --intent "find Drizzle schema for invoices" # Routes to focused code search
|
|
313
|
+
projscan start --intent "where is SQL query for invoices?" # Routes to focused code search
|
|
314
|
+
projscan start --intent "which repository saves orders?" # Routes to focused code search
|
|
315
|
+
projscan start --intent "find DAO for payments" # Routes to focused code search
|
|
316
|
+
projscan start --intent "where is loading state for dashboard?" # Routes to focused code search
|
|
317
|
+
projscan start --intent "where is error boundary for settings?" # Routes to focused code search
|
|
318
|
+
projscan start --intent "find command palette actions" # Routes to focused code search
|
|
319
|
+
projscan start --intent "where are i18n translations for checkout?" # Routes to focused code search
|
|
320
|
+
projscan start --intent "where are design tokens defined?" # Routes to focused code search
|
|
321
|
+
projscan start --intent "where is Tailwind theme configured?" # Routes to focused code search
|
|
322
|
+
projscan start --intent "where is global CSS imported?" # Routes to focused code search
|
|
323
|
+
projscan start --intent "which CSS module styles Button?" # Routes to focused code search
|
|
324
|
+
projscan start --intent "where is dark mode configured?" # Routes to focused code search
|
|
325
|
+
projscan start --intent "what breakpoints are defined?" # Routes to focused code search
|
|
326
|
+
projscan start --intent "where is sidebar nav item for billing?" # Routes to focused code search
|
|
327
|
+
projscan start --intent "which breadcrumb renders settings?" # Routes to focused code search
|
|
328
|
+
projscan start --intent "where is page title set for checkout?" # Routes to focused code search
|
|
329
|
+
projscan start --intent "where is Next.js layout for dashboard?" # Routes to focused code search
|
|
330
|
+
projscan start --intent "where is auth state stored?" # Routes to focused code search
|
|
331
|
+
projscan start --intent "find Redux slice for cart" # Routes to focused code search
|
|
332
|
+
projscan start --intent "where is Zustand store for user settings?" # Routes to focused code search
|
|
333
|
+
projscan start --intent "which context provider supplies theme?" # Routes to focused code search
|
|
334
|
+
projscan start --intent "which hook fetches invoices?" # Routes to focused code search
|
|
335
|
+
projscan start --intent "where is React Query mutation for checkout?" # Routes to focused code search
|
|
336
|
+
projscan start --intent "where do we call Stripe?" # Routes to focused code search
|
|
337
|
+
projscan start --intent "which code sends email through SendGrid?" # Routes to focused code search
|
|
338
|
+
projscan start --intent "where is S3 upload implemented?" # Routes to focused code search
|
|
339
|
+
projscan start --intent "find GitHub API client" # Routes to focused code search
|
|
340
|
+
projscan start --intent "where is GraphQL query for invoices?" # Routes to focused code search
|
|
341
|
+
projscan start --intent "where is websocket connection opened?" # Routes to focused code search
|
|
342
|
+
projscan start --intent "where is OpenAPI spec defined?" # Routes to focused code search
|
|
343
|
+
projscan start --intent "where is Swagger docs configured?" # Routes to focused code search
|
|
344
|
+
projscan start --intent "where is tRPC router for billing?" # Routes to focused code search
|
|
345
|
+
projscan start --intent "which GraphQL resolver handles invoices?" # Routes to focused code search
|
|
346
|
+
projscan start --intent "which protobuf defines user service?" # Routes to focused code search
|
|
347
|
+
projscan start --intent "where is gRPC client for payments?" # Routes to focused code search
|
|
348
|
+
projscan start --intent "where is the Dockerfile?" # Routes to focused code search
|
|
349
|
+
projscan start --intent "where is docker compose for local dev?" # Routes to focused code search
|
|
350
|
+
projscan start --intent "where are Kubernetes manifests?" # Routes to focused code search
|
|
351
|
+
projscan start --intent "find Helm chart for payments" # Routes to focused code search
|
|
352
|
+
projscan start --intent "where is Terraform module for S3?" # Routes to focused code search
|
|
353
|
+
projscan start --intent "which GitHub workflow deploys staging?" # Routes to focused code search
|
|
354
|
+
projscan start --intent "where is Vercel config?" # Routes to focused code search
|
|
355
|
+
projscan start --intent "where is password reset handled?" # Routes to focused code search
|
|
356
|
+
projscan start --intent "where is team invite flow?" # Routes to focused code search
|
|
357
|
+
projscan start --intent "where is onboarding flow implemented?" # Routes to focused code search
|
|
358
|
+
projscan start --intent "find CSV export for users" # Routes to focused code search
|
|
359
|
+
projscan start --intent "what creates audit log entries?" # Routes to focused code search
|
|
360
|
+
projscan start --intent "where is refund handling for payments?" # Routes to focused code search
|
|
361
|
+
projscan start --intent "where is subscription renewal handled?" # Routes to focused code search
|
|
362
|
+
projscan start --intent "where is welcome email template?" # Routes to focused code search
|
|
363
|
+
projscan start --intent "find password reset email copy" # Routes to focused code search
|
|
364
|
+
projscan start --intent "where is push notification copy for invites?" # Routes to focused code search
|
|
365
|
+
projscan start --intent "where is SMS verification template?" # Routes to focused code search
|
|
366
|
+
projscan start --intent "which template sends receipt email?" # Routes to focused code search
|
|
367
|
+
projscan start --intent "where is invoice PDF generated?" # Routes to focused code search
|
|
368
|
+
projscan start --intent "find documentation for auth" # Routes to focused docs search
|
|
369
|
+
projscan start --intent "what depends on src/core/start.ts?" # Routes to file impact/dependency analysis
|
|
370
|
+
projscan start --intent "can I delete src/core/start.ts?" # Routes to file impact/dependency analysis
|
|
371
|
+
projscan start --intent "revert src/core/start.ts safely" # Routes to file impact/dependency analysis
|
|
372
|
+
projscan start --intent "how do I revert this change safely?" # Routes to impact target search
|
|
373
|
+
projscan start --intent "what dependencies does this repo use?" # Routes to dependency inventory
|
|
374
|
+
projscan start --intent "why is the bundle so large?" # Routes to dependency size inventory
|
|
375
|
+
projscan start --intent "find package bloat" # Routes to dependency size inventory
|
|
376
|
+
projscan start --intent "what licenses do our dependencies use?" # Routes to dependency license inventory
|
|
377
|
+
projscan start --intent "who uses lodash?" # Routes to package importer graph query
|
|
378
|
+
projscan start --intent "why do we depend on lodash?" # Routes to package importer graph query
|
|
379
|
+
projscan start --intent "third party notices" # Routes to dependency license inventory
|
|
380
|
+
projscan start --intent "open source compliance check" # Routes to dependency license inventory
|
|
381
|
+
projscan start --intent "what workspaces are in this repo?" # Routes to monorepo workspace map
|
|
382
|
+
projscan start --intent "which workspace owns auth?" # Routes to monorepo workspace map
|
|
383
|
+
projscan start --intent "where should I put this in the monorepo?" # Routes to monorepo workspace map
|
|
384
|
+
projscan start --intent "does lodash have a CVE?" # Routes to scoped npm audit
|
|
385
|
+
projscan start --intent "what CVEs affect this repo?" # Routes to npm audit
|
|
386
|
+
projscan start --intent "find vulnerable packages" # Routes to npm audit
|
|
387
|
+
projscan start --intent "who owns auth?" # Routes to focused ownership search
|
|
388
|
+
projscan start --intent "which team owns payments?" # Routes to focused ownership search
|
|
389
|
+
projscan start --intent "who should I ask about auth?" # Routes to focused ownership search
|
|
390
|
+
projscan start --intent "what should I read before changing src/core/start.ts?" # Routes to exact-file orientation
|
|
391
|
+
projscan start --intent "explain src/core/start.ts" # Routes to per-file purpose/risk/ownership inspection
|
|
392
|
+
projscan start --intent "who owns src/core/start.ts?" # Routes to file ownership/risk context
|
|
393
|
+
projscan start --intent "who should review src/core/start.ts?" # Routes to file ownership/reviewer context
|
|
394
|
+
projscan start --intent "who last touched src/core/start.ts?" # Routes to file ownership/history context
|
|
395
|
+
projscan start --intent "why is src/core/start.ts risky?" # Routes to exact-file risk context
|
|
396
|
+
projscan start --intent "who imports src/core/start.ts?" # Routes to a targeted semantic graph query
|
|
397
|
+
projscan start --intent "where are the tests for src/core/start.ts?" # Routes to focused test-file search
|
|
398
|
+
projscan start --intent "where are tests for auth?" # Routes to focused test-topic search
|
|
399
|
+
projscan start --intent "which tests cover auth?" # Routes to focused existing-test search
|
|
400
|
+
projscan start --intent "locate specs for checkout" # Routes to focused test-topic search
|
|
401
|
+
projscan start --intent "which tests should I run for src/core/start.ts?" # Routes to verification proof planning
|
|
402
|
+
projscan start --intent "what should I test before pushing?" # Routes to verification proof planning
|
|
403
|
+
projscan start --intent "is src/core/start.ts covered by tests?" # Routes to file coverage/risk context
|
|
404
|
+
projscan start --intent "what tests should I add for src/core/start.ts?" # Routes to file test-design context
|
|
405
|
+
projscan start --intent "what changed in this PR?" # Routes to structural PR diff
|
|
406
|
+
projscan start --intent "is this PR too large?" # Routes to structural PR diff
|
|
407
|
+
projscan start --intent "what did I change since main?" # Routes to structural branch diff
|
|
408
|
+
projscan start --intent "is my branch stale?" # Routes to structural branch diff
|
|
409
|
+
projscan start --intent "compare my branch with main" # Routes to structural branch diff
|
|
410
|
+
projscan start --intent "write a commit message for these changes" # Routes to structural diff evidence
|
|
411
|
+
projscan start --intent "summarize my changes for a commit" # Routes to structural diff evidence
|
|
412
|
+
projscan start --intent "how risky is this PR?" # Routes to structural PR review
|
|
413
|
+
projscan start --intent "what are the risks in my PR?" # Routes to structural PR review
|
|
414
|
+
projscan start --intent "what are the top risks before merge?" # Routes to before-merge preflight readiness
|
|
415
|
+
projscan start --intent "am I ready to open a PR?" # Routes to PR-readiness evidence pack
|
|
416
|
+
projscan start --intent "who should review this PR?" # Routes to owner-routing evidence pack
|
|
417
|
+
projscan start --intent "who owns the changed files?" # Routes to changed-file owner routing
|
|
418
|
+
projscan start --intent "write a PR comment for reviewers" # Routes to approval-ready evidence pack
|
|
419
|
+
projscan start --intent "write a PR description" # Routes to approval-ready evidence pack
|
|
420
|
+
projscan start --intent "what should my PR say?" # Routes to approval-ready evidence pack
|
|
421
|
+
projscan start --intent "make a PR checklist" # Routes to approval-ready evidence pack
|
|
422
|
+
projscan start --intent "what should I tell my team about this change?" # Routes to approval-ready evidence pack
|
|
423
|
+
projscan start --intent "what should I fix first?" # Routes to bug-hunt prioritization
|
|
424
|
+
projscan start --intent "what is the fastest safe fix?" # Routes to bug-hunt prioritization before generic safety
|
|
425
|
+
projscan start --intent "find a quick win" # Routes to bug-hunt prioritization
|
|
426
|
+
projscan start --intent "what can I do in five minutes?" # Routes to bug-hunt prioritization
|
|
427
|
+
projscan start --intent "pick an easy task for me" # Routes to bug-hunt prioritization
|
|
428
|
+
projscan start --intent "what should an intern work on?" # Routes to bug-hunt prioritization
|
|
429
|
+
projscan start --intent "what is a low risk improvement?" # Routes to bug-hunt prioritization
|
|
430
|
+
projscan start --intent "pick a small safe task" # Routes to bug-hunt prioritization
|
|
431
|
+
projscan start --intent "what should I do next?" # Routes to an ordered before-edit workplan
|
|
432
|
+
projscan start --intent "explain issue missing-test-framework" # Routes to deep issue context
|
|
433
|
+
projscan start --intent "fix issue missing-test-framework" # Routes to a concrete fix suggestion
|
|
434
|
+
projscan start --intent "is user input reaching SQL sinks?" # Routes to hardening dataflow analysis
|
|
435
|
+
projscan start --intent "does this endpoint expose secrets?" # Routes to hardening dataflow analysis
|
|
436
|
+
projscan start --intent "where is PII handled?" # Routes to hardening dataflow analysis
|
|
437
|
+
projscan start --intent "GDPR compliance check" # Routes to hardening dataflow analysis
|
|
438
|
+
projscan start --intent "where do we store access tokens?" # Routes to hardening dataflow analysis
|
|
439
|
+
projscan start --intent "is this change secure?" # Routes to structural PR review
|
|
440
|
+
projscan start --intent "check this PR for security issues" # Routes to structural PR review
|
|
441
|
+
projscan start --intent "what are the scariest untested files?" # Routes to coverage × hotspot test targets
|
|
442
|
+
projscan start --intent "which files have no tests?" # Routes to coverage × hotspot test targets
|
|
443
|
+
projscan start --intent "what breaks if I bump chalk to 6?" # Routes to offline package upgrade impact
|
|
444
|
+
projscan start --intent "what breaks if I update react?" # Routes to offline package upgrade impact
|
|
445
|
+
projscan start --intent "can I remove lodash?" # Routes to offline package removal impact
|
|
446
|
+
projscan start --intent "is lodash safe to remove?" # Routes to offline package removal impact
|
|
447
|
+
projscan start --intent "CI is failing after this PR" # Routes to a focused regression plan
|
|
448
|
+
projscan start --intent "CI is flaky" # Routes to a focused regression plan
|
|
449
|
+
projscan start --intent "production is down" # Routes to a focused regression plan
|
|
450
|
+
projscan start --intent "why is the login endpoint returning 500?" # Routes to a focused regression plan
|
|
451
|
+
projscan start --intent "why did CI fail?" # Routes to a focused regression plan
|
|
452
|
+
projscan start --intent "why is GitHub Actions failing?" # Routes to a focused regression plan
|
|
453
|
+
projscan start --intent "which GitHub Actions job failed?" # Routes to a focused regression plan
|
|
454
|
+
projscan start --intent "why is CI slow?" # Routes to a focused regression plan
|
|
455
|
+
projscan start --intent "why did the build fail?" # Routes to a focused regression plan
|
|
456
|
+
projscan start --intent "what is making builds slow?" # Routes to a focused regression plan
|
|
457
|
+
projscan start --intent "lint is failing" # Routes to a focused regression plan
|
|
458
|
+
projscan start --intent "typecheck is failing" # Routes to a focused regression plan
|
|
459
|
+
projscan start --intent "npm install is failing" # Routes to a focused regression plan
|
|
460
|
+
projscan start --intent "debug this stack trace" # Routes to a focused regression plan
|
|
461
|
+
projscan start --intent "where is this stack trace from?" # Routes to a focused regression plan
|
|
462
|
+
projscan start --intent "database connection refused locally" # Routes to a focused regression plan
|
|
463
|
+
projscan start --intent "what command reproduces the flake?" # Routes to a focused regression plan
|
|
464
|
+
projscan start --intent "quarantine flaky test" # Routes to a focused regression plan
|
|
465
|
+
projscan start --intent "what tests should I run for my changes?" # Routes to verification proof planning
|
|
466
|
+
projscan start --intent "how can I speed up tests?" # Routes to a focused regression plan
|
|
467
|
+
projscan start --intent "what commands prove this works?" # Routes to focused proof commands
|
|
468
|
+
projscan start --intent "what commands benchmark this repo?" # Routes to focused proof commands
|
|
469
|
+
projscan start --intent "give me proof commands" # Routes to focused proof commands
|
|
470
|
+
projscan start --intent "what commands should I run before pushing?" # Routes to focused pre-push proof
|
|
471
|
+
projscan start --intent "what smoke checks should I run before commit?" # Routes to a smoke regression plan
|
|
472
|
+
projscan start --intent "what full regression should I run before merge?" # Routes to a full regression plan
|
|
473
|
+
projscan start --intent "what should I check before release?" # Routes to release readiness
|
|
474
|
+
projscan start --intent "can I deploy this?" # Routes to release readiness
|
|
475
|
+
projscan start --intent "what changed since last release?" # Routes to release readiness
|
|
476
|
+
projscan start --intent "write a release note for this change" # Routes to release readiness and changelog evidence
|
|
477
|
+
projscan start --intent "draft changelog entry" # Routes to release readiness and changelog evidence
|
|
478
|
+
projscan start --intent "show coordination status for parallel agents" # Routes to one-call swarm readiness
|
|
479
|
+
projscan start --intent "who else is working on this?" # Routes to one-call swarm readiness
|
|
480
|
+
projscan start --intent "am I going to collide with another agent?" # Routes to one-call swarm readiness
|
|
481
|
+
projscan start --intent "what worktrees are active?" # Routes to one-call swarm readiness
|
|
482
|
+
projscan start --intent "what should merge first?" # Routes to merge-risk ordering
|
|
483
|
+
projscan start --intent "show me overlapping changes" # Routes to collision detection
|
|
484
|
+
projscan start --intent "show active claims" # Routes to advisory claim listing
|
|
485
|
+
projscan start --intent "claim src/core/start.ts for me" # Routes to active-claim review + file claim action
|
|
486
|
+
projscan start --intent "where did I leave off?" # Routes to touched-file session context
|
|
487
|
+
projscan start --intent "what changed while I was away?" # Routes to touched-file session context
|
|
488
|
+
projscan start --intent "what changed while I was offline?" # Routes to touched-file session context
|
|
489
|
+
projscan start --intent "what changed while I was asleep?" # Routes to touched-file session context
|
|
490
|
+
projscan start --intent "what did the last agent touch?" # Routes to remembered touched-file session context
|
|
491
|
+
projscan start --intent "what did the last agent do?" # Routes to remembered touched-file session context
|
|
492
|
+
projscan start --intent "give the next agent a handoff" # Routes to a compact agent brief
|
|
65
493
|
projscan understand --view map # Cited repo map, flows, contracts, change readiness, and verification proof
|
|
66
494
|
projscan preflight --format json # Proceed/caution/block safety gate
|
|
67
495
|
projscan evidence-pack --pr-comment # Reviewer-ready PR evidence
|
|
@@ -94,9 +522,9 @@ npm run test:trust-smoke
|
|
|
94
522
|
|
|
95
523
|
The full command catalog is below. Most users should start with the five-command path above instead of scanning the catalog.
|
|
96
524
|
|
|
97
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
525
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
|
|
98
526
|
|
|
99
|
-
For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.
|
|
527
|
+
For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/GUIDE.md)**.
|
|
100
528
|
|
|
101
529
|
## Repo Understanding
|
|
102
530
|
|
|
@@ -117,7 +545,8 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
|
|
|
117
545
|
| Command | Description |
|
|
118
546
|
|---------|-------------|
|
|
119
547
|
| `projscan analyze` | Full analysis - languages, frameworks, dependencies, issues |
|
|
120
|
-
| `projscan
|
|
548
|
+
| `projscan route` | Map a plain-language goal to the best projscan tool with weighted confidence and matched keywords |
|
|
549
|
+
| `projscan start` | First-60-seconds workflow orientation with setup diagnostics, Mission Control, top risks, and next commands. Add `--intent "<goal>"` to route a plain-language goal to route confidence, phased execution plan, ready actions, done criteria, and proof commands |
|
|
121
550
|
| `projscan first-run` | First-run setup diagnostics plus the shared `firstTenMinutes` command path |
|
|
122
551
|
| `projscan init mcp` | Ready-to-paste MCP client configs for popular agent clients |
|
|
123
552
|
| `projscan mcp doctor` | Verify MCP setup and print paste-ready client config with checks |
|
|
@@ -142,7 +571,7 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
|
|
|
142
571
|
| `projscan doctor` | Health check - missing tooling, architecture smells, security and supply-chain risks |
|
|
143
572
|
| `projscan preflight` | Agent safety gate - `proceed`, `caution`, or `block` with health, change, plugin, and supply-chain evidence |
|
|
144
573
|
| `projscan hotspots` | Rank files by risk - churn × complexity × issues × ownership |
|
|
145
|
-
| `projscan semantic-graph` | Stable v3 graph contract
|
|
574
|
+
| `projscan semantic-graph` | Stable v3 graph contract, plus targeted `--query importers/imports/exports/...` lookups |
|
|
146
575
|
| `projscan dataflow` | Focused direct, propagated, and bridge source-to-sink dataflow risks |
|
|
147
576
|
| `projscan search <query>` | **BM25-ranked search** - content + symbols + path, with excerpts |
|
|
148
577
|
| `projscan file <path>` | Drill into a file - purpose, risk, ownership, related issues |
|
|
@@ -151,7 +580,7 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
|
|
|
151
580
|
| `projscan diff` | Compare current health **and hotspot trends** against a baseline |
|
|
152
581
|
| `projscan diagram` | ASCII architecture diagram of your project |
|
|
153
582
|
| `projscan structure` | Directory tree with file counts |
|
|
154
|
-
| `projscan dependencies` | Dependency analysis - counts, risks, recommendations |
|
|
583
|
+
| `projscan dependencies` | Dependency analysis - counts, license summary, risks, recommendations |
|
|
155
584
|
| `projscan outdated` | Declared-vs-installed drift check (offline) |
|
|
156
585
|
| `projscan audit` | `npm audit`-powered vulnerability report - SARIF-ready for Code Scanning |
|
|
157
586
|
| `projscan upgrade <pkg>` | Preview upgrade impact - local CHANGELOG + importer list, offline |
|
|
@@ -176,25 +605,25 @@ projscan --help
|
|
|
176
605
|
<details>
|
|
177
606
|
<summary><strong>projscan structure</strong> - Directory tree with file counts</summary>
|
|
178
607
|
|
|
179
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
608
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
|
|
180
609
|
</details>
|
|
181
610
|
|
|
182
611
|
<details>
|
|
183
612
|
<summary><strong>projscan diagram</strong> - Architecture visualization</summary>
|
|
184
613
|
|
|
185
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
614
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
|
|
186
615
|
</details>
|
|
187
616
|
|
|
188
617
|
<details>
|
|
189
618
|
<summary><strong>projscan dependencies</strong> - Dependency analysis</summary>
|
|
190
619
|
|
|
191
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
620
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
|
|
192
621
|
</details>
|
|
193
622
|
|
|
194
623
|
<details>
|
|
195
624
|
<summary><strong>projscan badge</strong> - Health badge generation</summary>
|
|
196
625
|
|
|
197
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
626
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
|
|
198
627
|
</details>
|
|
199
628
|
|
|
200
629
|
### Output Formats
|
|
@@ -216,7 +645,7 @@ Run `projscan help` for the generated command-by-command support matrix.
|
|
|
216
645
|
|
|
217
646
|
projscan can load local plugins from `.projscan-plugins/` when `PROJSCAN_PLUGINS_PREVIEW=1` is set. The environment flag is kept for explicit local-code opt-in. Analyzer plugins emit normal projscan issues; reporter plugins render supported CLI commands with team-specific output.
|
|
218
647
|
|
|
219
|
-
**2.0 upgrade notes:** migrating from 1.x or authoring plugins? Start with the [2.0 Migration Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.
|
|
648
|
+
**2.0 upgrade notes:** migrating from 1.x or authoring plugins? Start with the [2.0 Migration Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/plugin.schema.json) as the stable contract.
|
|
220
649
|
|
|
221
650
|
```bash
|
|
222
651
|
projscan plugin list
|
|
@@ -227,9 +656,9 @@ PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --reporter team-radar
|
|
|
227
656
|
PROJSCAN_PLUGINS_PREVIEW=1 projscan ci --reporter team-radar --min-score 80
|
|
228
657
|
```
|
|
229
658
|
|
|
230
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
659
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
|
|
231
660
|
|
|
232
|
-
Reporter plugins are intentionally CLI-only. MCP tools keep returning structured JSON-compatible payloads so agents can reason over stable data, while humans can get a polished local report for their team. Custom presentation, team-branded summaries, and white-label reports belong in reporter plugins rather than new core HTML theming flags. See [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.
|
|
661
|
+
Reporter plugins are intentionally CLI-only. MCP tools keep returning structured JSON-compatible payloads so agents can reason over stable data, while humans can get a polished local report for their team. Custom presentation, team-branded summaries, and white-label reports belong in reporter plugins rather than new core HTML theming flags. See [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
|
|
233
662
|
|
|
234
663
|
### Options
|
|
235
664
|
|
|
@@ -240,6 +669,24 @@ Reporter plugins are intentionally CLI-only. MCP tools keep returning structured
|
|
|
240
669
|
| `--include-ignored` | Explicitly include files hidden by Git ignore rules |
|
|
241
670
|
| `--scan-env-values` | Explicitly read `.env*` contents during secret checks |
|
|
242
671
|
| `--offline` | Block projscan network-capable features for this run |
|
|
672
|
+
| `--shortcuts` | Print the Mission Control shortcut command index (`start`) |
|
|
673
|
+
| `--shortcuts-json` | Print the Mission Control shortcut command index as JSON (`start`) |
|
|
674
|
+
| `--handoff-prompt` | Print only the concise Mission Control handoff prompt (`start`) |
|
|
675
|
+
| `--next-command` | Print only the current Mission Control cursor command (`start`) |
|
|
676
|
+
| `--next-tool-call` | Print only the current Mission Control cursor MCP tool call as JSON (`start`) |
|
|
677
|
+
| `--ready-tool-calls` | Print the current cursor and remaining MCP-callable proof queue as JSON (`start`) |
|
|
678
|
+
| `--proof-commands` | Print only ready Mission Control proof commands (`start`) |
|
|
679
|
+
| `--checklist` | Print only the Mission Control resume checklist (`start`) |
|
|
680
|
+
| `--resume-json` | Print only the Mission Control resume object as JSON (`start`) |
|
|
681
|
+
| `--handoff-json` | Print only the Mission Control handoff object as JSON (`start`) |
|
|
682
|
+
| `--mission-script` | Print the Mission Control shell script (`start`) |
|
|
683
|
+
| `--save-mission <dir>` | Write the Mission Control bundle to a directory (`start`) |
|
|
684
|
+
| `--task-card` | Print only the Mission Control Markdown task card (`start`) |
|
|
685
|
+
| `--review-gate` | Print only the Mission Control stop-and-review gate (`start`) |
|
|
686
|
+
| `--review-gate-json` | Print only the Mission Control review gate as JSON (`start`) |
|
|
687
|
+
| `--review-policy` | Print only the Mission Control review policy as JSON (`start`) |
|
|
688
|
+
| `--review-replies` | Print only copyable Mission Control reviewer replies (`start`) |
|
|
689
|
+
| `--runbook` | Print only the Mission Control Markdown runbook (`start`) |
|
|
243
690
|
| `--changed-only` | Scope to files changed vs base ref (ci/analyze/doctor) |
|
|
244
691
|
| `--base-ref <ref>` | Git base ref for `--changed-only` (default: origin/main) |
|
|
245
692
|
| `--reporter <name>` | Render `doctor`, `analyze`, or `ci` with a local reporter plugin |
|
|
@@ -301,6 +748,8 @@ Go flows through the same pipeline as JS/TS and Python:
|
|
|
301
748
|
|
|
302
749
|
`projscan coupling` (CLI + MCP tool) reports per-file fan-in / fan-out / instability (Bob Martin's I = Ce / (Ca + Ce)) and detects circular imports via Tarjan SCC. Cross-package edges are flagged when running on a monorepo.
|
|
303
750
|
|
|
751
|
+
Plain-language Mission Control intents such as `projscan start --intent "show circular dependencies"` route straight to `projscan coupling --cycles-only --format json`; broader boundary questions such as `projscan start --intent "what modules are tightly coupled"` route to the full coupling report.
|
|
752
|
+
|
|
304
753
|
### PR-aware structural diff (0.11)
|
|
305
754
|
|
|
306
755
|
`projscan pr-diff` returns the structural diff between two refs: exports added/removed/renamed, imports added/removed, call sites added/removed, ΔCC, Δfan-in. Spins up a temporary git worktree at the base ref to build a clean second graph. Renames are detected via similarity scoring (max of normalized Levenshtein and shared-affix fraction, threshold 0.5).
|
|
@@ -394,7 +843,7 @@ If you read projscan's [Socket report](https://socket.dev/npm/package/projscan),
|
|
|
394
843
|
### Audit it yourself
|
|
395
844
|
|
|
396
845
|
- **Source is open** at [github.com/abhiyoheswaran1/projscan](https://github.com/abhiyoheswaran1/projscan). The npm tarball matches the `dist/` produced by `npm run build` at the matching tag.
|
|
397
|
-
- **Public API surface is locked** by `scripts/check-stability.mjs`, which runs in CI on every PR and fails on any rename or removal of an MCP tool, CLI command, or exit code. See [`docs/STABILITY.md`](https://github.com/abhiyoheswaran1/projscan/blob/v4.
|
|
846
|
+
- **Public API surface is locked** by `scripts/check-stability.mjs`, which runs in CI on every PR and fails on any rename or removal of an MCP tool, CLI command, or exit code. See [`docs/STABILITY.md`](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/STABILITY.md).
|
|
398
847
|
- **Run it offline:** `npm install -g projscan` followed by anything except `audit` and `--mode semantic` works without network.
|
|
399
848
|
- **Drop privilege further:** in CI, run projscan in a sandbox that disallows network egress; everything except `audit` will pass.
|
|
400
849
|
|
|
@@ -445,7 +894,7 @@ projscan ci --changed-only # Gate only on this PR's diff
|
|
|
445
894
|
projscan ci --format sarif > projscan.sarif # SARIF for Code Scanning
|
|
446
895
|
```
|
|
447
896
|
|
|
448
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
897
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
|
|
449
898
|
|
|
450
899
|
### GitHub Action (recommended)
|
|
451
900
|
|
|
@@ -522,7 +971,7 @@ Fields:
|
|
|
522
971
|
- `hotspots.limit` / `hotspots.since` - defaults for the `hotspots` command
|
|
523
972
|
- `monorepo.importPolicy` - cross-package import allow/deny rules in monorepos *(0.14+)*
|
|
524
973
|
|
|
525
|
-
See [`docs/GUIDE.md`
|
|
974
|
+
See [`docs/GUIDE.md` -> Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
|
|
526
975
|
|
|
527
976
|
## Tracking Health Over Time
|
|
528
977
|
|
|
@@ -535,7 +984,7 @@ projscan diff # Compare against baseline
|
|
|
535
984
|
projscan diff --format markdown # Markdown diff for PRs
|
|
536
985
|
```
|
|
537
986
|
|
|
538
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
987
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
|
|
539
988
|
|
|
540
989
|
## Hotspots - Where to Fix First
|
|
541
990
|
|
|
@@ -624,7 +1073,7 @@ Coverage is also automatically joined into `projscan hotspots` when one of those
|
|
|
624
1073
|
|
|
625
1074
|
**This is the primary way to use projscan.** `projscan mcp` starts an [MCP](https://modelcontextprotocol.io) server over stdio so AI coding agents can query your codebase with real structural accuracy - not regex, not grep.
|
|
626
1075
|
|
|
627
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.
|
|
1076
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/projscan-agent-demo.gif" alt="projscan answering two agent questions: what breaks if I rename buildCodeGraph (impact analysis with definitions, direct callers, transitive reach), and where should I fix first (ranked hotspots with cyclomatic complexity)" width="700">
|
|
628
1077
|
|
|
629
1078
|
Two questions an agent asks; structural answers in milliseconds. *"What breaks if I rename `buildCodeGraph`?"* → 31 direct callers, 97 files reachable. *"Where should I fix first?"* → ranked hotspots with AST cyclomatic complexity, churn, and ownership signals.
|
|
630
1079
|
|
|
@@ -751,13 +1200,20 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
|
|
|
751
1200
|
|
|
752
1201
|
### What agents can ask
|
|
753
1202
|
|
|
754
|
-
- *"Who imports `src/auth/jwt.ts`?"* → `projscan_semantic_graph { query: { direction: "importers", file: "src/auth/jwt.ts" } }`
|
|
1203
|
+
- *"Who imports `src/auth/jwt.ts`?"* → `projscan_semantic_graph { query: { direction: "importers", file: "src/auth/jwt.ts" } }` or `projscan semantic-graph --query importers --file src/auth/jwt.ts --format json`
|
|
1204
|
+
- *"Which files import `chalk`?"* or *"Which files import package `chalk`?"* → `projscan_semantic_graph { query: { direction: "package_importers", symbol: "chalk" } }` or `projscan semantic-graph --query package_importers --symbol chalk --format json`
|
|
755
1205
|
- *"Give me the whole agent-safe graph contract."* → `projscan_semantic_graph`
|
|
756
1206
|
- *"Did this wrapper connect a source reader to a dangerous sink?"* → `projscan_dataflow`
|
|
757
|
-
- *"
|
|
1207
|
+
- *"Explain issue `missing-test-framework`."* → `projscan_explain_issue { issue_id: "missing-test-framework" }`
|
|
1208
|
+
- *"Where is `runAudit` defined?"* → `projscan_semantic_graph { query: { direction: "symbol_defs", symbol: "runAudit" } }` or `projscan semantic-graph --query symbol_defs --symbol runAudit --format json`
|
|
758
1209
|
- *"Which files implement auth?"* → `projscan_search { query: "auth", scope: "content" }`
|
|
1210
|
+
- *"Who should I ask about auth?"* → `projscan_search { query: "auth" }`
|
|
1211
|
+
- *"Which tests cover auth?"* → `projscan_search { query: "tests for auth" }`
|
|
759
1212
|
- *"What are the scariest untested files?"* → `projscan_coverage`
|
|
1213
|
+
- *"Which files have no tests?"* → `projscan_coverage`
|
|
760
1214
|
- *"What breaks if I bump chalk to 6?"* → `projscan_upgrade { package: "chalk" }`
|
|
1215
|
+
- *"Show circular dependencies."* → `projscan_coupling { direction: "cycles_only" }` or `projscan coupling --cycles-only --format json`
|
|
1216
|
+
- *"What modules are tightly coupled?"* → `projscan_coupling` or `projscan coupling --format json`
|
|
761
1217
|
- *"Where should I refactor first?"* → `projscan_hotspots`
|
|
762
1218
|
- *"What should my agent do first in this repo?"* → `projscan_start { mode: "before_edit" }`
|
|
763
1219
|
- *"How do I understand the repo before editing?"* → `projscan_understand { view: "map" }`
|
|
@@ -827,7 +1283,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
|
|
|
827
1283
|
- **`projscan_apply_fix`** *(1.6)* - mechanically execute the safe fix templates. Default is dry-run; pass `confirm: true` to write. Atomic writes, per-apply rollback record at `.projscan-cache/rollbacks/<id>.json`. Reverse with `action: "rollback", rollback_id: ...`. Six templates supported at this release: `unused-dependency-*`, `missing-test-framework`, `missing-eslint`, `missing-prettier`, `missing-editorconfig`, `missing-readme`.
|
|
828
1284
|
- **`projscan_taint`** *(1.6)* - source-to-sink reachability over the per-function call graph. Built-in defaults cover common JS / Python sources (`process.env`, `req.body`, etc.) and sinks (`exec`, `eval`, `db.query`, etc.). Project-specific names go in `.projscanrc.json` `taint`. `projscan_review` automatically diffs taint flows between base and head and **blocks any PR that introduces a new flow**. In 3.0.2, review surfaces hardened `newDataflowRisks`, compact `graphEvidence`, and graph-readiness gates for safer handoff.
|
|
829
1285
|
|
|
830
|
-
Analyzer plugins can optionally read graph/dataflow context through `check(rootPath, files, context)` while staying on manifest schema v1. The packaged `graph-context` example shows `context.getSemanticGraph()` and `context.getDataflow()` in a real analyzer. For analyzer and reporter plugin authoring, manifest validation, `--reporter <name>`, and the trust model, see [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.
|
|
1286
|
+
Analyzer plugins can optionally read graph/dataflow context through `check(rootPath, files, context)` while staying on manifest schema v1. The packaged `graph-context` example shows `context.getSemanticGraph()` and `context.getDataflow()` in a real analyzer. For analyzer and reporter plugin authoring, manifest validation, `--reporter <name>`, and the trust model, see [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-AUTHORING.md).
|
|
831
1287
|
|
|
832
1288
|
### Context-window budgeting
|
|
833
1289
|
|