projscan 4.3.0 → 4.3.1
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 +72 -23
- package/dist/cli/commands/missionProof.js +421 -3
- package/dist/cli/commands/missionProof.js.map +1 -1
- package/dist/core/missionProof.js +2 -33
- package/dist/core/missionProof.js.map +1 -1
- package/dist/core/missionProofBaseline.d.ts +10 -0
- package/dist/core/missionProofBaseline.js +131 -0
- package/dist/core/missionProofBaseline.js.map +1 -0
- package/dist/core/missionProofMarkdown.d.ts +2 -0
- package/dist/core/missionProofMarkdown.js +80 -0
- package/dist/core/missionProofMarkdown.js.map +1 -0
- package/dist/core/missionProofSummary.d.ts +2 -0
- package/dist/core/missionProofSummary.js +16 -0
- package/dist/core/missionProofSummary.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/tool-manifest.json +2 -2
- package/dist/utils/formatSupport.d.ts +1 -1
- package/dist/utils/formatSupport.js +1 -1
- package/dist/utils/formatSupport.js.map +1 -1
- package/docs/GUIDE.md +23 -1
- package/docs/demos/projscan-mission-control.tape +13 -0
- package/docs/demos/projscan-mission-proof.tape +25 -0
- package/docs/projscan-mission-control.gif +0 -0
- package/docs/projscan-mission-proof.gif +0 -0
- package/package.json +8 -1
- package/scripts/capture-vhs-demos.mjs +80 -0
package/README.md
CHANGED
|
@@ -33,23 +33,29 @@ The local plugin platform lets teams add project-specific findings and render `d
|
|
|
33
33
|
npx projscan
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
<img src="
|
|
36
|
+
<img src="docs/projscan-mission-control.gif" alt="projscan Mission Control turning a plain-language goal into shortcut commands, proof commands, and review gates" width="760">
|
|
37
37
|
|
|
38
|
-
## What's New in 4.3.
|
|
38
|
+
## What's New in 4.3.1
|
|
39
39
|
|
|
40
|
-
4.3.
|
|
40
|
+
4.3.1 polishes the Mission Control loop. Agents can save a mission, run proof, resume from the saved proof state, report whether the work is ready for version review, and share the workflow with reproducible terminal demos.
|
|
41
41
|
|
|
42
42
|
- **Mission outcome resume.** `projscan start --mission <dir>` reads a saved Mission Control bundle, includes the latest proof status from `proof-logs/summary.json`, and adds a resume prompt that starts from real pass/fail evidence.
|
|
43
43
|
- **Proof-to-review summary.** The start report now includes `missionControl.outcome`: what changed, what remains, failed command details, reviewer decisions, reruns, and a version-candidate recommendation.
|
|
44
|
-
- **Local adoption proof.** `projscan mission-proof --mission <dir> --format json`
|
|
44
|
+
- **Local adoption proof.** `projscan mission-proof --mission <dir> --format markdown` prints a paste-ready proof report. Use `--format json` for scripts. Both formats can compare one or more mission bundles with an optional manual baseline to estimate reruns avoided, failed gates caught, and developer time saved.
|
|
45
|
+
- **Mission Proof triage.** `--latest`, `--all`, `--list`, `--needs-attention`, `--mission-status`, `--summary`, `--require-passed`, and `--write` turn saved mission bundles into local release-review artifacts.
|
|
46
|
+
- **Reproducible demo media.** `npm run docs:demos` renders checked-in VHS demos for Mission Control and Mission Proof; `npm run docs:assets` refreshes screenshots and GIFs together.
|
|
45
47
|
- **Clear public language count.** projscan now describes language support as 11 AST adapters covering 12 named languages, matching README, website prompt, and MCP Registry copy.
|
|
46
48
|
|
|
47
49
|
<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">
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
<img src="docs/projscan-mission-proof.gif" alt="projscan saving a Mission Control bundle, reporting local mission proof, and resuming from saved proof state" width="760">
|
|
52
|
+
|
|
53
|
+
Regenerate the README media with Playwright and VHS:
|
|
50
54
|
|
|
51
55
|
```bash
|
|
56
|
+
npm run docs:assets
|
|
52
57
|
npm run docs:screenshots
|
|
58
|
+
npm run docs:demos
|
|
53
59
|
```
|
|
54
60
|
|
|
55
61
|
## Mission Execution Plan + Copyable Handoffs
|
|
@@ -80,7 +86,18 @@ projscan start --review-replies --intent "<goal>" # Copy-only reviewer replies
|
|
|
80
86
|
projscan start --runbook --intent "<goal>" # Markdown mission runbook
|
|
81
87
|
projscan start --handoff-prompt --intent "<goal>" # One-line handoff prompt
|
|
82
88
|
projscan start --mission .projscan/mission # Resume from saved proof state
|
|
83
|
-
projscan mission-proof --mission .projscan/mission --format
|
|
89
|
+
projscan mission-proof --mission .projscan/mission --format markdown # Paste-ready proof report
|
|
90
|
+
projscan mission-proof --list --format json # List saved mission bundles
|
|
91
|
+
projscan mission-proof --list --needs-attention --format json # List bundles that are not passed
|
|
92
|
+
projscan mission-proof --latest --format markdown # Report the newest saved mission bundle
|
|
93
|
+
projscan mission-proof --all --format markdown # Roll up local saved mission bundles
|
|
94
|
+
projscan mission-proof --all --require-passed # Fail if any selected bundle is not passed
|
|
95
|
+
projscan mission-proof --all --summary # One-line proof status for CI logs
|
|
96
|
+
projscan mission-proof --mission .projscan/mission --format json # Local proof summary for scripts
|
|
97
|
+
projscan mission-proof --init-baseline manual-runs.json # Create baseline template
|
|
98
|
+
projscan mission-proof --add-baseline-run manual-runs.json --id manual-1 --status passed --minutes-spent 25 # Record manual run
|
|
99
|
+
projscan mission-proof --check-baseline manual-runs.json # Validate baseline file
|
|
100
|
+
projscan mission-proof --mission .projscan/mission --write reports/mission-proof.md # Save a proof artifact
|
|
84
101
|
```
|
|
85
102
|
|
|
86
103
|
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.
|
|
@@ -94,10 +111,27 @@ projscan start --mission .projscan/mission
|
|
|
94
111
|
`projscan start` reads `proof-logs/summary.json`, `proof-logs/status.jsonl`, and local review decision files. The report tells the next agent what changed, what remains, which command failed if proof did not pass, and whether the bundle is ready for a version-candidate review. For a local measurement report, run:
|
|
95
112
|
|
|
96
113
|
```bash
|
|
114
|
+
projscan mission-proof --mission .projscan/mission --format markdown
|
|
115
|
+
projscan mission-proof --list --format json
|
|
116
|
+
projscan mission-proof --list --needs-attention --format json
|
|
117
|
+
projscan mission-proof --list --mission-status failed --format json
|
|
118
|
+
projscan mission-proof --latest --format markdown
|
|
119
|
+
projscan mission-proof --all --format markdown
|
|
120
|
+
projscan mission-proof --all --require-passed
|
|
121
|
+
projscan mission-proof --all --summary --require-passed
|
|
122
|
+
projscan mission-proof --all --write reports/mission-proof.md
|
|
123
|
+
projscan mission-proof --mission .projscan/mission --write reports/mission-proof.md
|
|
124
|
+
projscan mission-proof --init-baseline manual-runs.json
|
|
125
|
+
projscan mission-proof --init-baseline manual-runs.json --format json
|
|
126
|
+
projscan mission-proof --add-baseline-run manual-runs.json --id manual-1 --status passed --minutes-spent 25 --reruns 1 --failed-gates 0 --reviewer-approvals 1
|
|
127
|
+
projscan mission-proof --add-baseline-run manual-runs.json --id manual-2 --status failed --format json
|
|
128
|
+
projscan mission-proof --check-baseline manual-runs.json
|
|
129
|
+
projscan mission-proof --check-baseline manual-runs.json --format json
|
|
97
130
|
projscan mission-proof --mission .projscan/mission --baseline manual-runs.json --format json
|
|
131
|
+
projscan mission-proof --mission .projscan/mission --baseline manual-runs.json --format json --write reports/mission-proof.json
|
|
98
132
|
```
|
|
99
133
|
|
|
100
|
-
The baseline file is optional. When present, it can list manual runs with minutes spent, reruns, failed gates, and reviewer approvals; projscan compares that local baseline with Mission Control proof without uploading source.
|
|
134
|
+
The Markdown report is ready for PR notes, release review, and handoff docs. Add `--list` to show saved mission bundles, status, update time, totals, and copyable resume/proof commands before choosing a target. Add `--needs-attention` or `--mission-status failed` to focus that list. Add `--latest` to select the saved mission bundle with the newest `proof-logs/summary.json`. Add `--all` to discover `.projscan/mission` plus direct child bundles under `.projscan/missions/`. Add `--summary` when terminal logs need one status line. Add `--require-passed` when a local script or CI job should exit nonzero unless every selected bundle passed. Add `--write reports/mission-proof.md` to save the report as a local artifact; `.md` and `.markdown` paths write Markdown by default. Use JSON when agents or scripts need the same proof data, and add `--write reports/mission-proof.json` when CI should archive it. Run `--init-baseline manual-runs.json` to create the local baseline template, then use `--add-baseline-run` to record measured manual runs without editing JSON. Add `--format json` to baseline init, append, or check commands when a wrapper needs the written path, run count, added run, or totals. If `--baseline` or `--check-baseline` points at a missing or malformed file, projscan prints the exact template command or expected JSON shape. Baseline run IDs must be non-empty and unique. Baseline run statuses must be `passed`, `failed`, `running`, `not_run`, or `unknown`; metric fields must be non-negative numbers. The baseline file is optional. When present, it can list manual runs with minutes spent, reruns, failed gates, and reviewer approvals; projscan compares that local baseline with Mission Control proof without uploading source.
|
|
101
135
|
|
|
102
136
|
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.
|
|
103
137
|
|
|
@@ -204,7 +238,7 @@ Run `projscan doctor` for a focused health check:
|
|
|
204
238
|
npx projscan doctor
|
|
205
239
|
```
|
|
206
240
|
|
|
207
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
241
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
|
|
208
242
|
|
|
209
243
|
## Install
|
|
210
244
|
|
|
@@ -537,9 +571,9 @@ npm run test:trust-smoke
|
|
|
537
571
|
|
|
538
572
|
The full command catalog is below. Most users should start with the five-command path above instead of scanning the catalog.
|
|
539
573
|
|
|
540
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
574
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
|
|
541
575
|
|
|
542
|
-
For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.
|
|
576
|
+
For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/GUIDE.md)**.
|
|
543
577
|
|
|
544
578
|
## Repo Understanding
|
|
545
579
|
|
|
@@ -621,25 +655,25 @@ projscan --help
|
|
|
621
655
|
<details>
|
|
622
656
|
<summary><strong>projscan structure</strong> - Directory tree with file counts</summary>
|
|
623
657
|
|
|
624
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
658
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
|
|
625
659
|
</details>
|
|
626
660
|
|
|
627
661
|
<details>
|
|
628
662
|
<summary><strong>projscan diagram</strong> - Architecture visualization</summary>
|
|
629
663
|
|
|
630
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
664
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
|
|
631
665
|
</details>
|
|
632
666
|
|
|
633
667
|
<details>
|
|
634
668
|
<summary><strong>projscan dependencies</strong> - Dependency analysis</summary>
|
|
635
669
|
|
|
636
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
670
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
|
|
637
671
|
</details>
|
|
638
672
|
|
|
639
673
|
<details>
|
|
640
674
|
<summary><strong>projscan badge</strong> - Health badge generation</summary>
|
|
641
675
|
|
|
642
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
676
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
|
|
643
677
|
</details>
|
|
644
678
|
|
|
645
679
|
### Output Formats
|
|
@@ -650,6 +684,8 @@ Commands accept `--format` for different output targets. Supported formats are c
|
|
|
650
684
|
projscan analyze --format json # Machine-readable JSON
|
|
651
685
|
projscan analyze --format html # Self-contained HTML report
|
|
652
686
|
projscan doctor --format markdown # Markdown for docs/PRs
|
|
687
|
+
projscan mission-proof --format markdown # Mission proof report for handoffs
|
|
688
|
+
projscan mission-proof --write reports/mission-proof.md # Save Markdown proof
|
|
653
689
|
projscan ci --format sarif # SARIF 2.1.0 for GitHub Code Scanning
|
|
654
690
|
```
|
|
655
691
|
|
|
@@ -661,7 +697,7 @@ Run `projscan help` for the generated command-by-command support matrix.
|
|
|
661
697
|
|
|
662
698
|
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.
|
|
663
699
|
|
|
664
|
-
**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.3.
|
|
700
|
+
**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.3.1/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/plugin.schema.json) as the stable contract.
|
|
665
701
|
|
|
666
702
|
```bash
|
|
667
703
|
projscan plugin list
|
|
@@ -672,9 +708,9 @@ PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --reporter team-radar
|
|
|
672
708
|
PROJSCAN_PLUGINS_PREVIEW=1 projscan ci --reporter team-radar --min-score 80
|
|
673
709
|
```
|
|
674
710
|
|
|
675
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
711
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
|
|
676
712
|
|
|
677
|
-
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.3.
|
|
713
|
+
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.3.1/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
|
|
678
714
|
|
|
679
715
|
### Options
|
|
680
716
|
|
|
@@ -698,7 +734,20 @@ Reporter plugins are intentionally CLI-only. MCP tools keep returning structured
|
|
|
698
734
|
| `--mission-script` | Print the Mission Control shell script (`start`) |
|
|
699
735
|
| `--save-mission <dir>` | Write the Mission Control bundle to a directory (`start`) |
|
|
700
736
|
| `--mission <dir>` | Read a saved Mission Control bundle and include proof outcome in `start`; repeatable mission selector for `mission-proof` |
|
|
737
|
+
| `--list` | List saved Mission Control bundles with status and update time (`mission-proof`) |
|
|
738
|
+
| `--needs-attention` | Filter `mission-proof --list` to bundles that are not passed |
|
|
739
|
+
| `--mission-status <status>` | Filter `mission-proof --list` by `passed`, `failed`, `running`, `not_run`, or `unknown` |
|
|
740
|
+
| `--latest` | Select the saved Mission Control bundle with the newest `proof-logs/summary.json` (`mission-proof`) |
|
|
741
|
+
| `--all` | Discover `.projscan/mission` and direct child bundles under `.projscan/missions/` (`mission-proof`) |
|
|
701
742
|
| `--baseline <path>` | Compare `mission-proof` with a local manual-run baseline JSON file |
|
|
743
|
+
| `--init-baseline <file>` | Write a local manual-run baseline JSON template (`mission-proof`) |
|
|
744
|
+
| `--add-baseline-run <file>` | Append one measured manual run to a local baseline JSON file (`mission-proof`) |
|
|
745
|
+
| `--check-baseline <file>` | Validate a local manual-run baseline JSON file (`mission-proof`) |
|
|
746
|
+
| `--id <id>` / `--status <status>` | Identify a run added with `--add-baseline-run` (`mission-proof`) |
|
|
747
|
+
| `--minutes-spent`, `--reruns`, `--failed-gates`, `--reviewer-approvals` | Numeric fields for `--add-baseline-run` (`mission-proof`) |
|
|
748
|
+
| `--write <file>` | Write a Markdown or JSON artifact (`mission-proof`, `handoff`) |
|
|
749
|
+
| `--require-passed` | Exit nonzero unless every selected mission bundle passed proof (`mission-proof`) |
|
|
750
|
+
| `--summary` | Print one compact Mission Proof status line (`mission-proof`) |
|
|
702
751
|
| `--task-card` | Print only the Mission Control Markdown task card (`start`) |
|
|
703
752
|
| `--review-gate` | Print only the Mission Control stop-and-review gate (`start`) |
|
|
704
753
|
| `--review-gate-json` | Print only the Mission Control review gate as JSON (`start`) |
|
|
@@ -861,7 +910,7 @@ If you read projscan's [Socket report](https://socket.dev/npm/package/projscan),
|
|
|
861
910
|
### Audit it yourself
|
|
862
911
|
|
|
863
912
|
- **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.
|
|
864
|
-
- **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.3.
|
|
913
|
+
- **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.3.1/docs/STABILITY.md).
|
|
865
914
|
- **Run it offline:** `npm install -g projscan` followed by anything except `audit` and `--mode semantic` works without network.
|
|
866
915
|
- **Drop privilege further:** in CI, run projscan in a sandbox that disallows network egress; everything except `audit` will pass.
|
|
867
916
|
|
|
@@ -912,7 +961,7 @@ projscan ci --changed-only # Gate only on this PR's diff
|
|
|
912
961
|
projscan ci --format sarif > projscan.sarif # SARIF for Code Scanning
|
|
913
962
|
```
|
|
914
963
|
|
|
915
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
964
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
|
|
916
965
|
|
|
917
966
|
### GitHub Action (recommended)
|
|
918
967
|
|
|
@@ -989,7 +1038,7 @@ Fields:
|
|
|
989
1038
|
- `hotspots.limit` / `hotspots.since` - defaults for the `hotspots` command
|
|
990
1039
|
- `monorepo.importPolicy` - cross-package import allow/deny rules in monorepos *(0.14+)*
|
|
991
1040
|
|
|
992
|
-
See [`docs/GUIDE.md` -> Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.
|
|
1041
|
+
See [`docs/GUIDE.md` -> Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
|
|
993
1042
|
|
|
994
1043
|
## Tracking Health Over Time
|
|
995
1044
|
|
|
@@ -1002,7 +1051,7 @@ projscan diff # Compare against baseline
|
|
|
1002
1051
|
projscan diff --format markdown # Markdown diff for PRs
|
|
1003
1052
|
```
|
|
1004
1053
|
|
|
1005
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
1054
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
|
|
1006
1055
|
|
|
1007
1056
|
## Hotspots - Where to Fix First
|
|
1008
1057
|
|
|
@@ -1091,7 +1140,7 @@ Coverage is also automatically joined into `projscan hotspots` when one of those
|
|
|
1091
1140
|
|
|
1092
1141
|
**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.
|
|
1093
1142
|
|
|
1094
|
-
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.
|
|
1143
|
+
<img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/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">
|
|
1095
1144
|
|
|
1096
1145
|
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.
|
|
1097
1146
|
|
|
@@ -1301,7 +1350,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
|
|
|
1301
1350
|
- **`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`.
|
|
1302
1351
|
- **`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.
|
|
1303
1352
|
|
|
1304
|
-
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.3.
|
|
1353
|
+
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.3.1/docs/PLUGIN-AUTHORING.md).
|
|
1305
1354
|
|
|
1306
1355
|
### Context-window budgeting
|
|
1307
1356
|
|