@paniolo/scan 0.2.2 → 0.2.4

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.
@@ -0,0 +1,419 @@
1
+ {
2
+ "schema_version": 1,
3
+ "rules": {
4
+ "actions-sha-pinned": {
5
+ "source_type": "security-practice",
6
+ "evidence_level": "E4",
7
+ "source_urls": [
8
+ "docs/rules-catalog.md",
9
+ "https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions"
10
+ ],
11
+ "verified_on": "2026-06-13",
12
+ "fixture_ids": []
13
+ },
14
+ "adapter-content-duplication": {
15
+ "source_type": "meta-harness-methodology",
16
+ "evidence_level": "E4",
17
+ "source_urls": ["docs/meta-harness.md", "docs/harness-analysis.md"],
18
+ "verified_on": "2026-06-13",
19
+ "fixture_ids": ["weak", "normal", "mature"]
20
+ },
21
+ "adapter-context-budget": {
22
+ "source_type": "research-motivated-threshold",
23
+ "evidence_level": "E3",
24
+ "source_urls": ["docs/ai/scoring-calibration.md", "https://arxiv.org/abs/2602.20478"],
25
+ "verified_on": "2026-06-13",
26
+ "fixture_ids": ["weak", "normal", "mature"]
27
+ },
28
+ "adapter-points-to-shared": {
29
+ "source_type": "meta-harness-methodology",
30
+ "evidence_level": "E4",
31
+ "source_urls": ["docs/meta-harness.md", "docs/architecture.md"],
32
+ "verified_on": "2026-06-13",
33
+ "fixture_ids": ["normal", "mature"]
34
+ },
35
+ "adapter-thin-claude": {
36
+ "source_type": "meta-harness-methodology",
37
+ "evidence_level": "E4",
38
+ "source_urls": ["docs/ai/scoring-calibration.md", "docs/architecture.md"],
39
+ "verified_on": "2026-06-13",
40
+ "fixture_ids": ["weak", "normal", "mature"]
41
+ },
42
+ "adapter-thin-copilot": {
43
+ "source_type": "meta-harness-methodology",
44
+ "evidence_level": "E4",
45
+ "source_urls": ["docs/ai/scoring-calibration.md", "docs/architecture.md"],
46
+ "verified_on": "2026-06-13",
47
+ "fixture_ids": []
48
+ },
49
+ "adapter-thin-gemini": {
50
+ "source_type": "meta-harness-methodology",
51
+ "evidence_level": "E4",
52
+ "source_urls": ["docs/ai/scoring-calibration.md", "docs/architecture.md"],
53
+ "verified_on": "2026-06-13",
54
+ "fixture_ids": ["mature"]
55
+ },
56
+ "agent-frontmatter": {
57
+ "source_type": "agent-skills-spec",
58
+ "evidence_level": "E4",
59
+ "source_urls": ["docs/rules-catalog.md", "docs/ai/rules.md"],
60
+ "verified_on": "2026-06-13",
61
+ "fixture_ids": ["mature"]
62
+ },
63
+ "agent-resource-budget-caps": {
64
+ "source_type": "research-motivated-security-posture",
65
+ "evidence_level": "E2",
66
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.20953"],
67
+ "verified_on": "2026-06-13",
68
+ "fixture_ids": []
69
+ },
70
+ "agents-md-mentions-skills": {
71
+ "source_type": "meta-harness-methodology",
72
+ "evidence_level": "E4",
73
+ "source_urls": ["docs/ai/available-skills.md", "docs/architecture.md"],
74
+ "verified_on": "2026-06-13",
75
+ "fixture_ids": ["normal", "mature"]
76
+ },
77
+ "always-loaded-budget": {
78
+ "source_type": "research-motivated-threshold",
79
+ "evidence_level": "E3",
80
+ "source_urls": ["docs/ai/scoring-calibration.md", "https://arxiv.org/abs/2602.20478"],
81
+ "verified_on": "2026-06-13",
82
+ "fixture_ids": ["weak", "normal", "mature"]
83
+ },
84
+ "ci-enforcement-gates": {
85
+ "source_type": "intelligence-layer-methodology",
86
+ "evidence_level": "E4",
87
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/rules.md"],
88
+ "verified_on": "2026-06-13",
89
+ "fixture_ids": []
90
+ },
91
+ "ci-guidance-lint": {
92
+ "source_type": "corpus-calibrated-maturity-signal",
93
+ "evidence_level": "E4",
94
+ "source_urls": ["docs/ai/scoring-calibration.md", "docs/rules-catalog.md"],
95
+ "verified_on": "2026-06-13",
96
+ "fixture_ids": []
97
+ },
98
+ "ci-validation-gates": {
99
+ "source_type": "intelligence-layer-methodology",
100
+ "evidence_level": "E4",
101
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/scoring-calibration.md"],
102
+ "verified_on": "2026-06-13",
103
+ "fixture_ids": []
104
+ },
105
+ "claude-agent-routing": {
106
+ "source_type": "meta-harness-methodology",
107
+ "evidence_level": "E4",
108
+ "source_urls": ["docs/architecture.md", "docs/ai/ai-system.md"],
109
+ "verified_on": "2026-06-13",
110
+ "fixture_ids": ["mature"]
111
+ },
112
+ "claude-hooks-valid": {
113
+ "source_type": "security-practice",
114
+ "evidence_level": "E4",
115
+ "source_urls": ["docs/rules-catalog.md", "docs/ai/rules.md"],
116
+ "verified_on": "2026-06-13",
117
+ "fixture_ids": []
118
+ },
119
+ "codex-hooks-valid": {
120
+ "source_type": "security-practice",
121
+ "evidence_level": "E4",
122
+ "source_urls": ["docs/rules-catalog.md", "docs/ai/rules.md"],
123
+ "verified_on": "2026-06-13",
124
+ "fixture_ids": []
125
+ },
126
+ "correction-loop-documented": {
127
+ "source_type": "corpus-calibrated-maturity-signal",
128
+ "evidence_level": "E4",
129
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/scoring-calibration.md"],
130
+ "verified_on": "2026-06-13",
131
+ "fixture_ids": []
132
+ },
133
+ "emphasis-keyword-density": {
134
+ "source_type": "instruction-quality-heuristic",
135
+ "evidence_level": "E5",
136
+ "source_urls": ["docs/rules-catalog.md", "docs/ai/rules.md"],
137
+ "verified_on": "2026-06-13",
138
+ "fixture_ids": []
139
+ },
140
+ "env-files-gitignored": {
141
+ "source_type": "security-practice",
142
+ "evidence_level": "E4",
143
+ "source_urls": [
144
+ "docs/rules-catalog.md",
145
+ "https://owasp.org/www-project-top-10-for-large-language-model-applications/"
146
+ ],
147
+ "verified_on": "2026-06-13",
148
+ "fixture_ids": []
149
+ },
150
+ "escalation-protocol-discoverability": {
151
+ "source_type": "research-motivated-security-posture",
152
+ "evidence_level": "E2",
153
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2604.09408"],
154
+ "verified_on": "2026-06-13",
155
+ "fixture_ids": []
156
+ },
157
+ "focused-test-commands-present": {
158
+ "source_type": "intelligence-layer-methodology",
159
+ "evidence_level": "E4",
160
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/rules.md"],
161
+ "verified_on": "2026-06-13",
162
+ "fixture_ids": []
163
+ },
164
+ "forbidden-legacy-paths": {
165
+ "source_type": "meta-harness-methodology",
166
+ "evidence_level": "E4",
167
+ "source_urls": ["docs/ai/ai-system.md", "docs/ai/rules.md"],
168
+ "verified_on": "2026-06-13",
169
+ "fixture_ids": []
170
+ },
171
+ "guidance-links-resolve": {
172
+ "source_type": "meta-harness-methodology",
173
+ "evidence_level": "E4",
174
+ "source_urls": ["docs/ai/rules.md", "docs/architecture.md"],
175
+ "verified_on": "2026-06-13",
176
+ "fixture_ids": ["normal", "mature"]
177
+ },
178
+ "guidance-maintenance-script": {
179
+ "source_type": "corpus-calibrated-maturity-signal",
180
+ "evidence_level": "E4",
181
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/scoring-calibration.md"],
182
+ "verified_on": "2026-06-13",
183
+ "fixture_ids": []
184
+ },
185
+ "high-impact-action-confirmation": {
186
+ "source_type": "research-motivated-security-posture",
187
+ "evidence_level": "E2",
188
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.11088"],
189
+ "verified_on": "2026-06-13",
190
+ "fixture_ids": []
191
+ },
192
+ "hook-no-network-exfil": {
193
+ "source_type": "security-practice",
194
+ "evidence_level": "E4",
195
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.11088"],
196
+ "verified_on": "2026-06-13",
197
+ "fixture_ids": []
198
+ },
199
+ "hook-stop-circuit-breaker": {
200
+ "source_type": "security-practice",
201
+ "evidence_level": "E4",
202
+ "source_urls": ["docs/rules-catalog.md", "docs/architecture.md"],
203
+ "verified_on": "2026-06-13",
204
+ "fixture_ids": []
205
+ },
206
+ "identity-language-absent": {
207
+ "source_type": "instruction-quality-heuristic",
208
+ "evidence_level": "E5",
209
+ "source_urls": ["docs/rules-catalog.md", "docs/ai/rules.md"],
210
+ "verified_on": "2026-06-13",
211
+ "fixture_ids": []
212
+ },
213
+ "jsdoc-enforcement-present": {
214
+ "source_type": "corpus-calibrated-maturity-signal",
215
+ "evidence_level": "E4",
216
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/scoring-calibration.md"],
217
+ "verified_on": "2026-06-13",
218
+ "fixture_ids": []
219
+ },
220
+ "lint-gate-present": {
221
+ "source_type": "intelligence-layer-methodology",
222
+ "evidence_level": "E4",
223
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/rules.md"],
224
+ "verified_on": "2026-06-13",
225
+ "fixture_ids": []
226
+ },
227
+ "llm-output-schema-validated": {
228
+ "source_type": "research-motivated-boundary-rule",
229
+ "evidence_level": "E2",
230
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.06847"],
231
+ "verified_on": "2026-06-13",
232
+ "fixture_ids": []
233
+ },
234
+ "local-context-patterns": {
235
+ "source_type": "intelligence-layer-methodology",
236
+ "evidence_level": "E4",
237
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/rules.md"],
238
+ "verified_on": "2026-06-13",
239
+ "fixture_ids": []
240
+ },
241
+ "memory-docs-indexed": {
242
+ "source_type": "intelligence-layer-methodology",
243
+ "evidence_level": "E4",
244
+ "source_urls": [
245
+ "docs/full-spectrum-intelligence-layer.md",
246
+ "https://arxiv.org/abs/2602.20478"
247
+ ],
248
+ "verified_on": "2026-06-13",
249
+ "fixture_ids": []
250
+ },
251
+ "memory-write-provenance": {
252
+ "source_type": "research-motivated-security-posture",
253
+ "evidence_level": "E2",
254
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.11088"],
255
+ "verified_on": "2026-06-13",
256
+ "fixture_ids": []
257
+ },
258
+ "model-interface-pinned": {
259
+ "source_type": "research-motivated-boundary-rule",
260
+ "evidence_level": "E2",
261
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.06847"],
262
+ "verified_on": "2026-06-13",
263
+ "fixture_ids": []
264
+ },
265
+ "no-dangerous-auto-approve": {
266
+ "source_type": "security-practice",
267
+ "evidence_level": "E4",
268
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.11088"],
269
+ "verified_on": "2026-06-13",
270
+ "fixture_ids": []
271
+ },
272
+ "no-duplicate-agent-trees": {
273
+ "source_type": "meta-harness-methodology",
274
+ "evidence_level": "E4",
275
+ "source_urls": ["docs/ai/ai-system.md", "docs/architecture.md"],
276
+ "verified_on": "2026-06-13",
277
+ "fixture_ids": []
278
+ },
279
+ "no-duplicate-skill-trees": {
280
+ "source_type": "meta-harness-methodology",
281
+ "evidence_level": "E4",
282
+ "source_urls": ["docs/ai/ai-system.md", "docs/architecture.md"],
283
+ "verified_on": "2026-06-13",
284
+ "fixture_ids": []
285
+ },
286
+ "no-pull-request-target": {
287
+ "source_type": "security-practice",
288
+ "evidence_level": "E4",
289
+ "source_urls": [
290
+ "docs/rules-catalog.md",
291
+ "https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions"
292
+ ],
293
+ "verified_on": "2026-06-13",
294
+ "fixture_ids": []
295
+ },
296
+ "pr-template-ai-harness-check": {
297
+ "source_type": "corpus-calibrated-maturity-signal",
298
+ "evidence_level": "E4",
299
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/scoring-calibration.md"],
300
+ "verified_on": "2026-06-13",
301
+ "fixture_ids": []
302
+ },
303
+ "qmd-script-present": {
304
+ "source_type": "meta-harness-methodology",
305
+ "evidence_level": "E4",
306
+ "source_urls": ["docs/ai/qmd.md", "docs/architecture.md"],
307
+ "verified_on": "2026-06-13",
308
+ "fixture_ids": []
309
+ },
310
+ "secret-scanning-configured": {
311
+ "source_type": "security-practice",
312
+ "evidence_level": "E4",
313
+ "source_urls": [
314
+ "docs/rules-catalog.md",
315
+ "https://owasp.org/www-project-top-10-for-large-language-model-applications/"
316
+ ],
317
+ "verified_on": "2026-06-13",
318
+ "fixture_ids": []
319
+ },
320
+ "shared-agents-md": {
321
+ "source_type": "meta-harness-methodology",
322
+ "evidence_level": "E4",
323
+ "source_urls": ["docs/meta-harness.md", "docs/architecture.md"],
324
+ "verified_on": "2026-06-13",
325
+ "fixture_ids": ["weak", "normal", "mature"]
326
+ },
327
+ "shared-rules-doc": {
328
+ "source_type": "corpus-calibrated-maturity-signal",
329
+ "evidence_level": "E4",
330
+ "source_urls": ["docs/ai/scoring-calibration.md", "docs/meta-harness.md"],
331
+ "verified_on": "2026-06-13",
332
+ "fixture_ids": ["weak", "normal", "mature"]
333
+ },
334
+ "skill-doc-deep-links": {
335
+ "source_type": "meta-harness-methodology",
336
+ "evidence_level": "E4",
337
+ "source_urls": ["docs/ai/rules.md", "docs/ai/doc-best-practices.md"],
338
+ "verified_on": "2026-06-13",
339
+ "fixture_ids": []
340
+ },
341
+ "skill-frontmatter": {
342
+ "source_type": "agent-skills-spec",
343
+ "evidence_level": "E4",
344
+ "source_urls": ["docs/ai/rules.md", "docs/ai/skill-best-practices.md"],
345
+ "verified_on": "2026-06-13",
346
+ "fixture_ids": ["normal", "mature"]
347
+ },
348
+ "skill-line-count": {
349
+ "source_type": "meta-harness-methodology",
350
+ "evidence_level": "E4",
351
+ "source_urls": ["docs/ai/scoring-calibration.md", "docs/ai/skill-best-practices.md"],
352
+ "verified_on": "2026-06-13",
353
+ "fixture_ids": ["normal", "mature"]
354
+ },
355
+ "skills-index": {
356
+ "source_type": "meta-harness-methodology",
357
+ "evidence_level": "E4",
358
+ "source_urls": ["docs/ai/available-skills.md", "docs/architecture.md"],
359
+ "verified_on": "2026-06-13",
360
+ "fixture_ids": ["normal", "mature"]
361
+ },
362
+ "strict-typecheck-present": {
363
+ "source_type": "intelligence-layer-methodology",
364
+ "evidence_level": "E4",
365
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/rules.md"],
366
+ "verified_on": "2026-06-13",
367
+ "fixture_ids": []
368
+ },
369
+ "test-gates-present": {
370
+ "source_type": "intelligence-layer-methodology",
371
+ "evidence_level": "E4",
372
+ "source_urls": ["docs/full-spectrum-intelligence-layer.md", "docs/ai/rules.md"],
373
+ "verified_on": "2026-06-13",
374
+ "fixture_ids": []
375
+ },
376
+ "tool-allowlist-inventory": {
377
+ "source_type": "research-motivated-security-posture",
378
+ "evidence_level": "E2",
379
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.11088"],
380
+ "verified_on": "2026-06-13",
381
+ "fixture_ids": []
382
+ },
383
+ "tool-contract-tests-present": {
384
+ "source_type": "research-motivated-boundary-rule",
385
+ "evidence_level": "E2",
386
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.06847"],
387
+ "verified_on": "2026-06-13",
388
+ "fixture_ids": []
389
+ },
390
+ "untrusted-input-action-boundary": {
391
+ "source_type": "research-motivated-security-posture",
392
+ "evidence_level": "E2",
393
+ "source_urls": ["docs/rules-catalog.md", "https://arxiv.org/abs/2603.11088"],
394
+ "verified_on": "2026-06-13",
395
+ "fixture_ids": []
396
+ },
397
+ "vscode-agents-location": {
398
+ "source_type": "harness-wiring-practice",
399
+ "evidence_level": "E4",
400
+ "source_urls": ["docs/architecture.md", "docs/ai/ai-system.md"],
401
+ "verified_on": "2026-06-13",
402
+ "fixture_ids": []
403
+ },
404
+ "vscode-custom-hooks": {
405
+ "source_type": "harness-wiring-practice",
406
+ "evidence_level": "E4",
407
+ "source_urls": ["docs/architecture.md", "docs/ai/ai-system.md"],
408
+ "verified_on": "2026-06-13",
409
+ "fixture_ids": []
410
+ },
411
+ "vscode-skills-location": {
412
+ "source_type": "harness-wiring-practice",
413
+ "evidence_level": "E4",
414
+ "source_urls": ["docs/architecture.md", "docs/ai/ai-system.md"],
415
+ "verified_on": "2026-06-13",
416
+ "fixture_ids": []
417
+ }
418
+ }
419
+ }
@@ -1,13 +1,44 @@
1
1
  {
2
2
  "dimensions": {
3
- "layering": { "weight": 1, "max_score": 100 },
4
- "sharing": { "weight": 1, "max_score": 100 },
5
- "discoverability": { "weight": 1, "max_score": 100 },
6
- "harnessWiring": { "weight": 1, "max_score": 100 },
7
- "maintainability": { "weight": 1, "max_score": 100 },
8
- "guardrails": { "weight": 1, "max_score": 100 },
9
- "session": { "weight": 1, "max_score": 100 },
10
- "deep": { "weight": 1, "max_score": 100 }
3
+ "layering": {
4
+ "weight": 1,
5
+ "max_score": 100
6
+ },
7
+ "sharing": {
8
+ "weight": 1,
9
+ "max_score": 100
10
+ },
11
+ "discoverability": {
12
+ "weight": 1,
13
+ "max_score": 100
14
+ },
15
+ "harnessWiring": {
16
+ "weight": 1,
17
+ "max_score": 100
18
+ },
19
+ "maintainability": {
20
+ "weight": 1,
21
+ "max_score": 100
22
+ },
23
+ "guardrails": {
24
+ "weight": 1,
25
+ "max_score": 100
26
+ },
27
+ "session": {
28
+ "weight": 1,
29
+ "max_score": 100
30
+ },
31
+ "deep": {
32
+ "weight": 1,
33
+ "max_score": 100
34
+ }
11
35
  },
12
- "check_weights": {}
36
+ "check_weights": {
37
+ "shared-rules-doc": 0.5,
38
+ "jsdoc-enforcement-present": 0.5,
39
+ "correction-loop-documented": 0.5,
40
+ "guidance-maintenance-script": 0.5,
41
+ "pr-template-ai-harness-check": 0.5,
42
+ "ci-guidance-lint": 0.5
43
+ }
13
44
  }
package/package.json CHANGED
@@ -1,93 +1,57 @@
1
1
  {
2
- "name": "@paniolo/scan",
3
- "version": "0.2.2",
4
- "description": "The AI Technical Debt Scanner — diagnostic-only CLI that scores your repo's AI harness across Copilot, Cursor, Codex, Antigravity, Claude Code, and Gemini. No writes, no telemetry.",
5
- "keywords": [
6
- "agents",
7
- "agents-md",
8
- "ai",
9
- "antigravity",
10
- "claude-code",
11
- "cli",
12
- "codex",
13
- "coding-agents",
14
- "copilot",
15
- "cursor",
16
- "diagnostic",
17
- "gemini",
18
- "harness",
19
- "harness-engineering",
20
- "lint",
21
- "static-analysis",
22
- "technical-debt"
23
- ],
24
- "homepage": "https://paniolo.ai",
25
- "bugs": {
26
- "url": "https://github.com/paniolo-ai/paniolo-scan/issues"
27
- },
28
- "license": "MIT",
29
- "repository": {
30
- "type": "git",
31
- "url": "git+https://github.com/paniolo-ai/paniolo-scan.git"
32
- },
33
- "bin": {
34
- "paniolo-scan": "dist/cli.js"
35
- },
36
- "files": [
37
- "dist/**/*.js",
38
- "dist/**/*.json",
39
- "README.md"
40
- ],
41
- "type": "module",
42
- "scripts": {
43
- "build": "npm run typecheck && node scripts/build.mjs",
44
- "format": "oxfmt .",
45
- "format:check": "oxfmt --check .",
46
- "format:list-different": "oxfmt --list-different .",
47
- "lint": "npm run typecheck && oxlint --config .oxlintrc.json --type-aware src vitest.config.ts agents/scripts && npm run lint:eslint && npm run check:jsdoc",
48
- "lint:eslint": "eslint --config eslint.config.ts --cache src",
49
- "lint:fix": "oxlint --config .oxlintrc.json --type-aware --fix src vitest.config.ts agents/scripts",
50
- "lint:jsdoc": "npx --yes bun ./scripts/find-missing-jsdoc/check-jsdoc-files.bun.ts",
51
- "check:jsdoc": "npx --yes bun ./scripts/find-missing-jsdoc/find-missing-jsdoc.bun.ts",
52
- "pack:dry-run": "npm pack --dry-run",
53
- "prepack": "npm run build",
54
- "qmd": "node scripts/qmd/qmd.mjs",
55
- "scan:self": "node dist/cli.js . --fail-on warn",
56
- "check:ai-system": "npm run build && npm run scan:self",
57
- "check:md": "npm run check:md:style && npm run check:md:text",
58
- "check:md:style": "markdownlint-cli2",
59
- "check:md:text": "textlint --rulesdir textlint-rules --config .textlintrc.json \"docs/**/*.md\" \".claude/**/*.md\" && textlint --config .textlintrc.skills.json \"skills/*/SKILL.md\" \"agents/**/*.md\" && textlint --config .textlintrc.instructions.json \"AGENTS.md\" \"CLAUDE.md\" \"GEMINI.md\" \".github/copilot-instructions.md\"",
60
- "check:links": "remark --quiet --frail \"docs/**/*.md\" \"skills/**/*.md\" \"agents/**/*.md\" \".github/*.md\" \".claude/**/*.md\" \"*.md\"",
61
- "check:spelling": "cspell --no-progress --no-summary \"**/*.md\"",
62
- "lint:md": "npm run check:md && npm run check:links && npm run check:spelling",
63
- "start": "node dist/cli.js",
64
- "test": "vitest run",
65
- "test:file": "vitest run",
66
- "typecheck": "tsc --noEmit"
67
- },
68
- "devDependencies": {
69
- "@tobilu/qmd": "^2.5.3",
70
- "@types/bun": "^1.3.14",
71
- "@types/node": "^22.19.20",
72
- "@typescript-eslint/parser": "^8.61.0",
73
- "@typescript-eslint/utils": "^8.61.0",
74
- "cspell": "^9.2.1",
75
- "esbuild": "^0.27.7",
76
- "eslint": "^10.4.1",
77
- "jiti": "^2.7.0",
78
- "markdownlint-cli2": "^0.22.1",
79
- "oxfmt": "^0.36.0",
80
- "oxlint": "^1.68.0",
81
- "oxlint-tsgolint": "^0.23.0",
82
- "remark-cli": "^12.0.1",
83
- "remark-validate-links": "^13.1.0",
84
- "textlint": "^15.7.0",
85
- "textlint-rule-max-number-of-lines": "^1.0.3",
86
- "typescript": "^5.8.3",
87
- "unist-util-visit": "^5.0.0",
88
- "vitest": "^3.2.4"
89
- },
90
- "engines": {
91
- "node": ">=20"
92
- }
93
- }
2
+ "name": "@paniolo/scan",
3
+ "version": "0.2.4",
4
+ "description": "The AI Technical Debt Scanner — diagnostic-only CLI that scores your repo's AI harness across Copilot, Cursor, Codex, Antigravity, Claude Code, and Gemini. No writes, no telemetry.",
5
+ "keywords": [
6
+ "agents",
7
+ "agents-md",
8
+ "ai",
9
+ "antigravity",
10
+ "claude-code",
11
+ "cli",
12
+ "codex",
13
+ "coding-agents",
14
+ "copilot",
15
+ "cursor",
16
+ "diagnostic",
17
+ "gemini",
18
+ "harness",
19
+ "harness-engineering",
20
+ "lint",
21
+ "static-analysis",
22
+ "technical-debt"
23
+ ],
24
+ "homepage": "https://paniolo.ai",
25
+ "bugs": {
26
+ "url": "https://github.com/paniolo-ai/paniolo/issues"
27
+ },
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/paniolo-ai/paniolo.git",
32
+ "directory": "packages/scan"
33
+ },
34
+ "bin": {
35
+ "paniolo-scan": "dist/cli.js"
36
+ },
37
+ "files": [
38
+ "dist/**/*.js",
39
+ "dist/**/*.json",
40
+ "README.md"
41
+ ],
42
+ "type": "module",
43
+ "devDependencies": {
44
+ "@types/node": "^22.19.20",
45
+ "typescript": "^5.8.3",
46
+ "@paniolo/session-source": "0.2.0"
47
+ },
48
+ "engines": {
49
+ "node": ">=20"
50
+ },
51
+ "scripts": {
52
+ "build": "pnpm run typecheck && node scripts/build.mjs",
53
+ "typecheck": "tsc -p tsconfig.json --noEmit",
54
+ "pack:dry-run": "npm pack --dry-run",
55
+ "start": "node dist/cli.js"
56
+ }
57
+ }