@nerviq/cli 1.29.0 → 1.29.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/CHANGELOG.md +1527 -1493
- package/README.md +550 -538
- package/SECURITY.md +82 -82
- package/bin/cli.js +2562 -2558
- package/docs/api-reference.md +356 -356
- package/docs/audit-fix.md +109 -0
- package/docs/autofix.md +3 -62
- package/docs/getting-started.md +1 -1
- package/docs/index.html +592 -592
- package/docs/integration-contracts.md +287 -287
- package/docs/maintenance.md +128 -128
- package/docs/new-platform-guide.md +202 -202
- package/docs/release-process.md +63 -0
- package/docs/shallow-risk.md +244 -244
- package/docs/why-nerviq.md +82 -82
- package/package.json +67 -67
- package/src/aider/activity.js +226 -226
- package/src/aider/context.js +162 -162
- package/src/aider/freshness.js +123 -123
- package/src/aider/techniques.js +3465 -3465
- package/src/audit/layers.js +180 -180
- package/src/audit.js +1032 -1032
- package/src/benchmark.js +299 -299
- package/src/codex/activity.js +324 -324
- package/src/codex/freshness.js +142 -142
- package/src/codex/techniques.js +4895 -4895
- package/src/context.js +326 -326
- package/src/continuous-ops.js +11 -1
- package/src/convert.js +340 -340
- package/src/copilot/config-parser.js +280 -280
- package/src/copilot/context.js +218 -218
- package/src/copilot/freshness.js +177 -177
- package/src/copilot/patch.js +238 -238
- package/src/copilot/techniques.js +3578 -3578
- package/src/cursor/freshness.js +194 -194
- package/src/cursor/patch.js +243 -243
- package/src/cursor/techniques.js +3735 -3735
- package/src/doctor.js +201 -201
- package/src/fix-engine.js +511 -8
- package/src/formatters/csv.js +86 -86
- package/src/formatters/junit.js +123 -123
- package/src/formatters/markdown.js +164 -164
- package/src/formatters/otel.js +151 -151
- package/src/freshness.js +156 -156
- package/src/gemini/activity.js +402 -402
- package/src/gemini/context.js +290 -290
- package/src/gemini/freshness.js +183 -183
- package/src/gemini/patch.js +229 -229
- package/src/gemini/techniques.js +3811 -3811
- package/src/governance.js +533 -533
- package/src/harmony/audit.js +306 -306
- package/src/i18n.js +63 -63
- package/src/insights.js +119 -119
- package/src/integrations.js +134 -134
- package/src/locales/en.json +33 -33
- package/src/locales/es.json +33 -33
- package/src/migrate.js +354 -354
- package/src/opencode/activity.js +286 -286
- package/src/opencode/freshness.js +137 -137
- package/src/opencode/techniques.js +3450 -3450
- package/src/setup/analysis.js +12 -12
- package/src/setup.js +7 -6
- package/src/shallow-risk/index.js +56 -56
- package/src/shallow-risk/patterns/agent-config-cross-platform-drift.js +50 -50
- package/src/shallow-risk/patterns/agent-config-dangerous-autoapprove.js +46 -46
- package/src/shallow-risk/patterns/agent-config-deprecated-keys.js +46 -46
- package/src/shallow-risk/patterns/agent-config-missing-file.js +317 -317
- package/src/shallow-risk/patterns/agent-config-secret-literal.js +49 -49
- package/src/shallow-risk/patterns/agent-config-stack-contradiction.js +34 -34
- package/src/shallow-risk/patterns/hook-script-missing.js +70 -70
- package/src/shallow-risk/patterns/mcp-server-no-allowlist.js +52 -52
- package/src/shallow-risk/shared.js +648 -648
- package/src/source-urls.js +295 -295
- package/src/state-paths.js +85 -85
- package/src/supplemental-checks.js +805 -805
- package/src/telemetry.js +160 -160
- package/src/windsurf/context.js +359 -359
- package/src/windsurf/freshness.js +194 -194
- package/src/windsurf/patch.js +231 -231
- package/src/windsurf/techniques.js +3779 -3779
package/docs/index.html
CHANGED
|
@@ -1,597 +1,597 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>nerviq — Safely improve your Claude Code setup</title>
|
|
7
|
-
<meta name="description" content="Audit your repo. See what's missing. Apply only what you approve with rollback for every change. Existing config is always preserved.">
|
|
8
|
-
<meta property="og:title" content="nerviq — Safely improve your Claude Code setup">
|
|
9
|
-
<meta property="og:description" content="Audit your repo, see what's missing, apply only what you approve. Rollback for every change. Existing config is always preserved.">
|
|
10
|
-
<meta property="og:type" content="website">
|
|
11
|
-
<meta property="og:url" content="https://nerviq.net/">
|
|
12
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
-
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
14
|
-
<style>
|
|
15
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
16
|
-
:root {
|
|
17
|
-
--bg: #08080a; --surface: #111114; --surface-2: #19191e;
|
|
18
|
-
--border: #25252b; --border-hover: #3a3a44;
|
|
19
|
-
--text: #ececf0; --text-secondary: #9494a0; --text-dim: #5c5c6a;
|
|
20
|
-
--accent: #a78bfa; --accent-bright: #c4b5fd;
|
|
21
|
-
--accent-bg: rgba(167,139,250,0.08); --accent-border: rgba(167,139,250,0.2);
|
|
22
|
-
--green: #34d399; --green-dim: rgba(52,211,153,0.15);
|
|
23
|
-
--red: #f87171; --red-dim: rgba(248,113,113,0.15);
|
|
24
|
-
--yellow: #fbbf24; --yellow-dim: rgba(251,191,36,0.15);
|
|
25
|
-
--blue: #60a5fa;
|
|
26
|
-
}
|
|
27
|
-
body { font-family: 'Space Grotesk', -apple-system, sans-serif; background: var(--bg); color: var(--text); line-height: 1.65; overflow-x: hidden; }
|
|
28
|
-
.container { max-width: 900px; margin: 0 auto; padding: 0 28px; }
|
|
29
|
-
code, .mono { font-family: 'JetBrains Mono', monospace; }
|
|
30
|
-
.bg-mesh { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; background: radial-gradient(ellipse 600px 400px at 20% 10%, rgba(167,139,250,0.06), transparent), radial-gradient(ellipse 500px 500px at 80% 60%, rgba(52,211,153,0.04), transparent), radial-gradient(ellipse 800px 300px at 50% 100%, rgba(96,165,250,0.03), transparent); }
|
|
31
|
-
|
|
32
|
-
nav { display: flex; justify-content: space-between; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--border); }
|
|
33
|
-
.nav-brand { font-weight: 700; font-size: 18px; color: var(--accent-bright); text-decoration: none; letter-spacing: -0.5px; }
|
|
34
|
-
.nav-links { display: flex; gap: 24px; }
|
|
35
|
-
.nav-links a { color: var(--text-secondary); text-decoration: none; font-size: 14px; font-weight: 500; transition: color 0.2s; }
|
|
36
|
-
.nav-links a:hover { color: var(--text); }
|
|
37
|
-
.nav-badges { display: flex; gap: 8px; align-items: center; }
|
|
38
|
-
.nav-badges img { height: 20px; }
|
|
39
|
-
|
|
40
|
-
.hero { padding: 100px 0 80px; text-align: center; }
|
|
41
|
-
.hero-eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 6px 16px; background: var(--accent-bg); border: 1px solid var(--accent-border); border-radius: 100px; font-size: 13px; font-weight: 500; color: var(--accent-bright); margin-bottom: 32px; }
|
|
42
|
-
.hero-eyebrow .dot { width: 6px; height: 6px; background: var(--green); border-radius: 50%; animation: pulse 2s infinite; }
|
|
43
|
-
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }
|
|
44
|
-
.hero h1 { font-size: clamp(36px, 6vw, 56px); font-weight: 700; line-height: 1.1; letter-spacing: -1.5px; margin-bottom: 20px; background: linear-gradient(135deg, var(--text) 0%, var(--text-secondary) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
|
|
45
|
-
.hero h1 em { font-style: normal; background: linear-gradient(135deg, var(--accent) 0%, var(--accent-bright) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
|
|
46
|
-
.hero-sub { font-size: 18px; color: var(--text-secondary); max-width: 540px; margin: 0 auto 40px; line-height: 1.7; }
|
|
47
|
-
|
|
48
|
-
.install-box { display: inline-flex; align-items: center; gap: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 16px 28px; cursor: pointer; transition: all 0.2s; margin-bottom: 10px; }
|
|
49
|
-
.install-box:hover { border-color: var(--accent-border); background: var(--surface-2); }
|
|
50
|
-
.install-box .prompt { color: var(--text-dim); font-size: 18px; }
|
|
51
|
-
.install-box .cmd { color: var(--green); font-size: 18px; font-weight: 600; }
|
|
52
|
-
.install-box .copy-icon { color: var(--text-dim); font-size: 14px; transition: color 0.2s; }
|
|
53
|
-
.install-box:hover .copy-icon { color: var(--accent); }
|
|
54
|
-
.install-hint { font-size: 12px; color: var(--text-dim); margin-top: 8px; }
|
|
55
|
-
|
|
56
|
-
.numbers { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--border); border-radius: 16px; overflow: hidden; margin: 64px 0; }
|
|
57
|
-
.number-card { background: var(--surface); padding: 28px 20px; text-align: center; }
|
|
58
|
-
.number-card .val { font-size: 32px; font-weight: 700; letter-spacing: -1px; margin-bottom: 4px; }
|
|
59
|
-
.number-card .val.purple { color: var(--accent); }
|
|
60
|
-
.number-card .val.green { color: var(--green); }
|
|
61
|
-
.number-card .val.blue { color: var(--blue); }
|
|
62
|
-
.number-card .val.yellow { color: var(--yellow); }
|
|
63
|
-
.number-card .label { font-size: 12px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 1px; font-weight: 500; }
|
|
64
|
-
|
|
65
|
-
.how-section { margin: 48px 0 64px; }
|
|
66
|
-
.how-section > h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; text-align: center; }
|
|
67
|
-
.how-section > p { color: var(--text-secondary); margin-bottom: 40px; font-size: 15px; text-align: center; }
|
|
68
|
-
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
|
69
|
-
.step { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 28px; text-align: center; position: relative; }
|
|
70
|
-
.step-num { position: absolute; top: -14px; left: 50%; transform: translateX(-50%); width: 28px; height: 28px; background: var(--accent); color: var(--bg); border-radius: 50%; font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; }
|
|
71
|
-
.step h3 { font-size: 16px; font-weight: 600; margin: 8px 0 8px; }
|
|
72
|
-
.step p { font-size: 13px; color: var(--text-dim); line-height: 1.6; }
|
|
73
|
-
.step code { background: var(--surface-2); padding: 2px 8px; border-radius: 4px; font-size: 12px; color: var(--green); }
|
|
74
|
-
|
|
75
|
-
.terminal-section { margin: 48px 0 64px; }
|
|
76
|
-
.terminal-section h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 2px; color: var(--text-dim); margin-bottom: 16px; font-weight: 500; }
|
|
77
|
-
.terminal { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
|
|
78
|
-
.terminal-header { display: flex; align-items: center; gap: 8px; padding: 14px 18px; background: var(--surface-2); border-bottom: 1px solid var(--border); }
|
|
79
|
-
.terminal-header .dots { display: flex; gap: 6px; }
|
|
80
|
-
.terminal-header .dot { width: 10px; height: 10px; border-radius: 50%; }
|
|
81
|
-
.terminal-header .dot-r { background: #ff5f57; }
|
|
82
|
-
.terminal-header .dot-y { background: #febc2e; }
|
|
83
|
-
.terminal-header .dot-g { background: #28c840; }
|
|
84
|
-
.terminal-header .title { flex: 1; text-align: center; font-size: 12px; color: var(--text-dim); }
|
|
85
|
-
.terminal-body { padding: 24px; font-size: 13px; line-height: 2; overflow-x: auto; }
|
|
86
|
-
.t-dim { color: var(--text-dim); }
|
|
87
|
-
.t-green { color: var(--green); }
|
|
88
|
-
.t-red { color: var(--red); }
|
|
89
|
-
.t-yellow { color: var(--yellow); }
|
|
90
|
-
.t-blue { color: var(--blue); }
|
|
91
|
-
.t-accent { color: var(--accent); }
|
|
92
|
-
.t-bold { font-weight: 600; color: var(--text); }
|
|
93
|
-
|
|
94
|
-
.comparison { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 48px 0; }
|
|
95
|
-
.comp-card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 28px; }
|
|
96
|
-
.comp-card.before { border-top: 3px solid var(--red); }
|
|
97
|
-
.comp-card.after { border-top: 3px solid var(--green); }
|
|
98
|
-
.comp-label { font-size: 12px; text-transform: uppercase; letter-spacing: 1.5px; font-weight: 600; margin-bottom: 16px; }
|
|
99
|
-
.comp-card.before .comp-label { color: var(--red); }
|
|
100
|
-
.comp-card.after .comp-label { color: var(--green); }
|
|
101
|
-
.comp-score { font-size: 48px; font-weight: 700; letter-spacing: -2px; margin-bottom: 4px; }
|
|
102
|
-
.comp-card.before .comp-score { color: var(--red); }
|
|
103
|
-
.comp-card.after .comp-score { color: var(--green); }
|
|
104
|
-
.comp-detail { font-size: 13px; color: var(--text-secondary); line-height: 1.8; }
|
|
105
|
-
.comp-detail .missing { color: var(--red); }
|
|
106
|
-
.comp-detail .added { color: var(--green); }
|
|
107
|
-
|
|
108
|
-
.features-section { margin: 64px 0; }
|
|
109
|
-
.features-section > h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; }
|
|
110
|
-
.features-section > p { color: var(--text-secondary); margin-bottom: 32px; font-size: 15px; }
|
|
111
|
-
.features-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
|
|
112
|
-
.feature-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 24px; transition: border-color 0.2s; }
|
|
113
|
-
.feature-card:hover { border-color: var(--accent-border); }
|
|
114
|
-
.feature-card h3 { font-size: 16px; font-weight: 600; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
|
|
115
|
-
.feature-card p { font-size: 13px; color: var(--text-dim); line-height: 1.6; }
|
|
116
|
-
.feature-card code { background: var(--surface-2); padding: 2px 8px; border-radius: 4px; font-size: 11px; color: var(--green); }
|
|
117
|
-
|
|
118
|
-
.checks-section { margin: 64px 0; }
|
|
119
|
-
.checks-section h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; }
|
|
120
|
-
.checks-section p { color: var(--text-secondary); margin-bottom: 32px; font-size: 15px; }
|
|
121
|
-
.checks-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
|
|
122
|
-
.check-item { display: flex; align-items: flex-start; gap: 12px; padding: 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; transition: border-color 0.2s; }
|
|
123
|
-
.check-item:hover { border-color: var(--border-hover); }
|
|
124
|
-
.check-icon { font-size: 18px; flex-shrink: 0; margin-top: 1px; }
|
|
125
|
-
.check-info h4 { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
|
|
126
|
-
.check-info p { font-size: 12px; color: var(--text-dim); line-height: 1.5; }
|
|
127
|
-
.check-tag { display: inline-block; font-size: 10px; padding: 2px 6px; border-radius: 4px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
128
|
-
.tag-critical { background: var(--red-dim); color: var(--red); }
|
|
129
|
-
.tag-high { background: var(--yellow-dim); color: var(--yellow); }
|
|
130
|
-
.tag-medium { background: var(--accent-bg); color: var(--accent); }
|
|
131
|
-
|
|
132
|
-
.smart-section { margin: 64px 0; text-align: center; }
|
|
133
|
-
.smart-section h2 { font-size: 28px; font-weight: 700; margin-bottom: 8px; }
|
|
134
|
-
.smart-section > p { color: var(--text-secondary); margin-bottom: 32px; }
|
|
135
|
-
.smart-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; text-align: left; }
|
|
136
|
-
.smart-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 20px; }
|
|
137
|
-
.smart-card h4 { font-size: 14px; font-weight: 600; margin-bottom: 6px; color: var(--green); }
|
|
138
|
-
.smart-card p { font-size: 12px; color: var(--text-dim); line-height: 1.6; }
|
|
139
|
-
|
|
140
|
-
.stacks { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin: 48px 0; }
|
|
141
|
-
.stack-pill { padding: 8px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; font-size: 13px; font-weight: 500; color: var(--text-secondary); transition: all 0.2s; }
|
|
142
|
-
.stack-pill:hover { border-color: var(--accent-border); color: var(--accent-bright); background: var(--accent-bg); }
|
|
143
|
-
|
|
144
|
-
.cta { text-align: center; padding: 80px 0; border-top: 1px solid var(--border); }
|
|
145
|
-
.cta h2 { font-size: 32px; font-weight: 700; letter-spacing: -1px; margin-bottom: 12px; }
|
|
146
|
-
.cta p { color: var(--text-secondary); margin-bottom: 32px; font-size: 16px; }
|
|
147
|
-
.cta-buttons { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
|
|
148
|
-
.btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 28px; border-radius: 10px; font-weight: 600; font-size: 14px; text-decoration: none; transition: all 0.2s; }
|
|
149
|
-
.btn-primary { background: var(--accent); color: var(--bg); }
|
|
150
|
-
.btn-primary:hover { background: var(--accent-bright); }
|
|
151
|
-
.btn-secondary { background: var(--surface); color: var(--text); border: 1px solid var(--border); }
|
|
152
|
-
.btn-secondary:hover { border-color: var(--accent-border); }
|
|
153
|
-
|
|
154
|
-
footer { text-align: center; padding: 28px 0; color: var(--text-dim); font-size: 12px; border-top: 1px solid var(--border); }
|
|
155
|
-
footer a { color: var(--accent); text-decoration: none; }
|
|
156
|
-
|
|
157
|
-
@media (max-width: 640px) { .numbers { grid-template-columns: repeat(2, 1fr); } .comparison, .features-grid { grid-template-columns: 1fr; } .checks-grid { grid-template-columns: 1fr; } .steps { grid-template-columns: 1fr; } .smart-grid { grid-template-columns: 1fr; } }
|
|
158
|
-
</style>
|
|
159
|
-
</head>
|
|
160
|
-
<body>
|
|
161
|
-
<div class="bg-mesh"></div>
|
|
162
|
-
<div class="container">
|
|
163
|
-
<nav>
|
|
164
|
-
<a href="/" class="nav-brand">nerviq</a>
|
|
165
|
-
<div class="nav-badges">
|
|
166
|
-
<img src="https://img.shields.io/npm/v/@nerviq/cli?color=a78bfa&label=npm" alt="npm version">
|
|
167
|
-
<img src="https://img.shields.io/npm/dm/@nerviq/cli?color=34d399&label=downloads" alt="npm downloads">
|
|
168
|
-
</div>
|
|
169
|
-
<div class="nav-links">
|
|
170
|
-
<a href="https://github.com/nerviq/nerviq">GitHub</a>
|
|
171
|
-
<a href="https://www.npmjs.com/package/@nerviq/cli">npm</a>
|
|
172
|
-
</div>
|
|
173
|
-
</nav>
|
|
174
|
-
|
|
175
|
-
<section class="hero">
|
|
176
|
-
<div class="hero-eyebrow">
|
|
177
|
-
<span class="dot"></span>
|
|
178
|
-
v1.16.2 candidate — Free & Open Source
|
|
179
|
-
</div>
|
|
180
|
-
<h1>Safely improve your<br><em>Claude Code</em> setup</h1>
|
|
181
|
-
<p class="hero-sub">Audit your repo. See what's missing. Apply only what you approve — with rollback for every change. Existing config is always preserved.</p>
|
|
182
|
-
|
|
183
|
-
<div class="install-box mono" onclick="navigator.clipboard.writeText('npx @nerviq/cli');this.querySelector('.copy-icon').textContent='Copied!'">
|
|
184
|
-
<span class="prompt">$</span>
|
|
185
|
-
<span class="cmd">npx @nerviq/cli</span>
|
|
186
|
-
<span class="copy-icon">Copy</span>
|
|
187
|
-
</div>
|
|
188
|
-
<div class="install-hint">No install needed. Node.js 18+. Zero dependencies. Core workflows run locally, and benchmark uses an isolated temp copy.</div>
|
|
189
|
-
</section>
|
|
190
|
-
|
|
191
|
-
<section class="numbers">
|
|
192
|
-
<div class="number-card"><div class="val green">No-write</div><div class="label">Discovery & audit</div></div>
|
|
193
|
-
<div class="number-card"><div class="val blue">Selective</div><div class="label">Apply only what you approve</div></div>
|
|
194
|
-
<div class="number-card"><div class="val purple">Rollback</div><div class="label">Every change is reversible</div></div>
|
|
195
|
-
<div class="number-card"><div class="val yellow">Isolated</div><div class="label">Benchmark on temp copy</div></div>
|
|
196
|
-
</section>
|
|
197
|
-
<div style="text-align:center;margin-top:-16px;margin-bottom:32px">
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>nerviq — Safely improve your Claude Code setup</title>
|
|
7
|
+
<meta name="description" content="Audit your repo. See what's missing. Apply only what you approve with rollback for every change. Existing config is always preserved.">
|
|
8
|
+
<meta property="og:title" content="nerviq — Safely improve your Claude Code setup">
|
|
9
|
+
<meta property="og:description" content="Audit your repo, see what's missing, apply only what you approve. Rollback for every change. Existing config is always preserved.">
|
|
10
|
+
<meta property="og:type" content="website">
|
|
11
|
+
<meta property="og:url" content="https://nerviq.net/">
|
|
12
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
13
|
+
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
14
|
+
<style>
|
|
15
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
16
|
+
:root {
|
|
17
|
+
--bg: #08080a; --surface: #111114; --surface-2: #19191e;
|
|
18
|
+
--border: #25252b; --border-hover: #3a3a44;
|
|
19
|
+
--text: #ececf0; --text-secondary: #9494a0; --text-dim: #5c5c6a;
|
|
20
|
+
--accent: #a78bfa; --accent-bright: #c4b5fd;
|
|
21
|
+
--accent-bg: rgba(167,139,250,0.08); --accent-border: rgba(167,139,250,0.2);
|
|
22
|
+
--green: #34d399; --green-dim: rgba(52,211,153,0.15);
|
|
23
|
+
--red: #f87171; --red-dim: rgba(248,113,113,0.15);
|
|
24
|
+
--yellow: #fbbf24; --yellow-dim: rgba(251,191,36,0.15);
|
|
25
|
+
--blue: #60a5fa;
|
|
26
|
+
}
|
|
27
|
+
body { font-family: 'Space Grotesk', -apple-system, sans-serif; background: var(--bg); color: var(--text); line-height: 1.65; overflow-x: hidden; }
|
|
28
|
+
.container { max-width: 900px; margin: 0 auto; padding: 0 28px; }
|
|
29
|
+
code, .mono { font-family: 'JetBrains Mono', monospace; }
|
|
30
|
+
.bg-mesh { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; background: radial-gradient(ellipse 600px 400px at 20% 10%, rgba(167,139,250,0.06), transparent), radial-gradient(ellipse 500px 500px at 80% 60%, rgba(52,211,153,0.04), transparent), radial-gradient(ellipse 800px 300px at 50% 100%, rgba(96,165,250,0.03), transparent); }
|
|
31
|
+
|
|
32
|
+
nav { display: flex; justify-content: space-between; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--border); }
|
|
33
|
+
.nav-brand { font-weight: 700; font-size: 18px; color: var(--accent-bright); text-decoration: none; letter-spacing: -0.5px; }
|
|
34
|
+
.nav-links { display: flex; gap: 24px; }
|
|
35
|
+
.nav-links a { color: var(--text-secondary); text-decoration: none; font-size: 14px; font-weight: 500; transition: color 0.2s; }
|
|
36
|
+
.nav-links a:hover { color: var(--text); }
|
|
37
|
+
.nav-badges { display: flex; gap: 8px; align-items: center; }
|
|
38
|
+
.nav-badges img { height: 20px; }
|
|
39
|
+
|
|
40
|
+
.hero { padding: 100px 0 80px; text-align: center; }
|
|
41
|
+
.hero-eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 6px 16px; background: var(--accent-bg); border: 1px solid var(--accent-border); border-radius: 100px; font-size: 13px; font-weight: 500; color: var(--accent-bright); margin-bottom: 32px; }
|
|
42
|
+
.hero-eyebrow .dot { width: 6px; height: 6px; background: var(--green); border-radius: 50%; animation: pulse 2s infinite; }
|
|
43
|
+
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }
|
|
44
|
+
.hero h1 { font-size: clamp(36px, 6vw, 56px); font-weight: 700; line-height: 1.1; letter-spacing: -1.5px; margin-bottom: 20px; background: linear-gradient(135deg, var(--text) 0%, var(--text-secondary) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
|
|
45
|
+
.hero h1 em { font-style: normal; background: linear-gradient(135deg, var(--accent) 0%, var(--accent-bright) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
|
|
46
|
+
.hero-sub { font-size: 18px; color: var(--text-secondary); max-width: 540px; margin: 0 auto 40px; line-height: 1.7; }
|
|
47
|
+
|
|
48
|
+
.install-box { display: inline-flex; align-items: center; gap: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 16px 28px; cursor: pointer; transition: all 0.2s; margin-bottom: 10px; }
|
|
49
|
+
.install-box:hover { border-color: var(--accent-border); background: var(--surface-2); }
|
|
50
|
+
.install-box .prompt { color: var(--text-dim); font-size: 18px; }
|
|
51
|
+
.install-box .cmd { color: var(--green); font-size: 18px; font-weight: 600; }
|
|
52
|
+
.install-box .copy-icon { color: var(--text-dim); font-size: 14px; transition: color 0.2s; }
|
|
53
|
+
.install-box:hover .copy-icon { color: var(--accent); }
|
|
54
|
+
.install-hint { font-size: 12px; color: var(--text-dim); margin-top: 8px; }
|
|
55
|
+
|
|
56
|
+
.numbers { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--border); border-radius: 16px; overflow: hidden; margin: 64px 0; }
|
|
57
|
+
.number-card { background: var(--surface); padding: 28px 20px; text-align: center; }
|
|
58
|
+
.number-card .val { font-size: 32px; font-weight: 700; letter-spacing: -1px; margin-bottom: 4px; }
|
|
59
|
+
.number-card .val.purple { color: var(--accent); }
|
|
60
|
+
.number-card .val.green { color: var(--green); }
|
|
61
|
+
.number-card .val.blue { color: var(--blue); }
|
|
62
|
+
.number-card .val.yellow { color: var(--yellow); }
|
|
63
|
+
.number-card .label { font-size: 12px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 1px; font-weight: 500; }
|
|
64
|
+
|
|
65
|
+
.how-section { margin: 48px 0 64px; }
|
|
66
|
+
.how-section > h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; text-align: center; }
|
|
67
|
+
.how-section > p { color: var(--text-secondary); margin-bottom: 40px; font-size: 15px; text-align: center; }
|
|
68
|
+
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
|
69
|
+
.step { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 28px; text-align: center; position: relative; }
|
|
70
|
+
.step-num { position: absolute; top: -14px; left: 50%; transform: translateX(-50%); width: 28px; height: 28px; background: var(--accent); color: var(--bg); border-radius: 50%; font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; }
|
|
71
|
+
.step h3 { font-size: 16px; font-weight: 600; margin: 8px 0 8px; }
|
|
72
|
+
.step p { font-size: 13px; color: var(--text-dim); line-height: 1.6; }
|
|
73
|
+
.step code { background: var(--surface-2); padding: 2px 8px; border-radius: 4px; font-size: 12px; color: var(--green); }
|
|
74
|
+
|
|
75
|
+
.terminal-section { margin: 48px 0 64px; }
|
|
76
|
+
.terminal-section h2 { font-size: 14px; text-transform: uppercase; letter-spacing: 2px; color: var(--text-dim); margin-bottom: 16px; font-weight: 500; }
|
|
77
|
+
.terminal { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
|
|
78
|
+
.terminal-header { display: flex; align-items: center; gap: 8px; padding: 14px 18px; background: var(--surface-2); border-bottom: 1px solid var(--border); }
|
|
79
|
+
.terminal-header .dots { display: flex; gap: 6px; }
|
|
80
|
+
.terminal-header .dot { width: 10px; height: 10px; border-radius: 50%; }
|
|
81
|
+
.terminal-header .dot-r { background: #ff5f57; }
|
|
82
|
+
.terminal-header .dot-y { background: #febc2e; }
|
|
83
|
+
.terminal-header .dot-g { background: #28c840; }
|
|
84
|
+
.terminal-header .title { flex: 1; text-align: center; font-size: 12px; color: var(--text-dim); }
|
|
85
|
+
.terminal-body { padding: 24px; font-size: 13px; line-height: 2; overflow-x: auto; }
|
|
86
|
+
.t-dim { color: var(--text-dim); }
|
|
87
|
+
.t-green { color: var(--green); }
|
|
88
|
+
.t-red { color: var(--red); }
|
|
89
|
+
.t-yellow { color: var(--yellow); }
|
|
90
|
+
.t-blue { color: var(--blue); }
|
|
91
|
+
.t-accent { color: var(--accent); }
|
|
92
|
+
.t-bold { font-weight: 600; color: var(--text); }
|
|
93
|
+
|
|
94
|
+
.comparison { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 48px 0; }
|
|
95
|
+
.comp-card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 28px; }
|
|
96
|
+
.comp-card.before { border-top: 3px solid var(--red); }
|
|
97
|
+
.comp-card.after { border-top: 3px solid var(--green); }
|
|
98
|
+
.comp-label { font-size: 12px; text-transform: uppercase; letter-spacing: 1.5px; font-weight: 600; margin-bottom: 16px; }
|
|
99
|
+
.comp-card.before .comp-label { color: var(--red); }
|
|
100
|
+
.comp-card.after .comp-label { color: var(--green); }
|
|
101
|
+
.comp-score { font-size: 48px; font-weight: 700; letter-spacing: -2px; margin-bottom: 4px; }
|
|
102
|
+
.comp-card.before .comp-score { color: var(--red); }
|
|
103
|
+
.comp-card.after .comp-score { color: var(--green); }
|
|
104
|
+
.comp-detail { font-size: 13px; color: var(--text-secondary); line-height: 1.8; }
|
|
105
|
+
.comp-detail .missing { color: var(--red); }
|
|
106
|
+
.comp-detail .added { color: var(--green); }
|
|
107
|
+
|
|
108
|
+
.features-section { margin: 64px 0; }
|
|
109
|
+
.features-section > h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; }
|
|
110
|
+
.features-section > p { color: var(--text-secondary); margin-bottom: 32px; font-size: 15px; }
|
|
111
|
+
.features-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
|
|
112
|
+
.feature-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 24px; transition: border-color 0.2s; }
|
|
113
|
+
.feature-card:hover { border-color: var(--accent-border); }
|
|
114
|
+
.feature-card h3 { font-size: 16px; font-weight: 600; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
|
|
115
|
+
.feature-card p { font-size: 13px; color: var(--text-dim); line-height: 1.6; }
|
|
116
|
+
.feature-card code { background: var(--surface-2); padding: 2px 8px; border-radius: 4px; font-size: 11px; color: var(--green); }
|
|
117
|
+
|
|
118
|
+
.checks-section { margin: 64px 0; }
|
|
119
|
+
.checks-section h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px; }
|
|
120
|
+
.checks-section p { color: var(--text-secondary); margin-bottom: 32px; font-size: 15px; }
|
|
121
|
+
.checks-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
|
|
122
|
+
.check-item { display: flex; align-items: flex-start; gap: 12px; padding: 16px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; transition: border-color 0.2s; }
|
|
123
|
+
.check-item:hover { border-color: var(--border-hover); }
|
|
124
|
+
.check-icon { font-size: 18px; flex-shrink: 0; margin-top: 1px; }
|
|
125
|
+
.check-info h4 { font-size: 14px; font-weight: 600; margin-bottom: 2px; }
|
|
126
|
+
.check-info p { font-size: 12px; color: var(--text-dim); line-height: 1.5; }
|
|
127
|
+
.check-tag { display: inline-block; font-size: 10px; padding: 2px 6px; border-radius: 4px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
128
|
+
.tag-critical { background: var(--red-dim); color: var(--red); }
|
|
129
|
+
.tag-high { background: var(--yellow-dim); color: var(--yellow); }
|
|
130
|
+
.tag-medium { background: var(--accent-bg); color: var(--accent); }
|
|
131
|
+
|
|
132
|
+
.smart-section { margin: 64px 0; text-align: center; }
|
|
133
|
+
.smart-section h2 { font-size: 28px; font-weight: 700; margin-bottom: 8px; }
|
|
134
|
+
.smart-section > p { color: var(--text-secondary); margin-bottom: 32px; }
|
|
135
|
+
.smart-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; text-align: left; }
|
|
136
|
+
.smart-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 20px; }
|
|
137
|
+
.smart-card h4 { font-size: 14px; font-weight: 600; margin-bottom: 6px; color: var(--green); }
|
|
138
|
+
.smart-card p { font-size: 12px; color: var(--text-dim); line-height: 1.6; }
|
|
139
|
+
|
|
140
|
+
.stacks { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin: 48px 0; }
|
|
141
|
+
.stack-pill { padding: 8px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; font-size: 13px; font-weight: 500; color: var(--text-secondary); transition: all 0.2s; }
|
|
142
|
+
.stack-pill:hover { border-color: var(--accent-border); color: var(--accent-bright); background: var(--accent-bg); }
|
|
143
|
+
|
|
144
|
+
.cta { text-align: center; padding: 80px 0; border-top: 1px solid var(--border); }
|
|
145
|
+
.cta h2 { font-size: 32px; font-weight: 700; letter-spacing: -1px; margin-bottom: 12px; }
|
|
146
|
+
.cta p { color: var(--text-secondary); margin-bottom: 32px; font-size: 16px; }
|
|
147
|
+
.cta-buttons { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
|
|
148
|
+
.btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 28px; border-radius: 10px; font-weight: 600; font-size: 14px; text-decoration: none; transition: all 0.2s; }
|
|
149
|
+
.btn-primary { background: var(--accent); color: var(--bg); }
|
|
150
|
+
.btn-primary:hover { background: var(--accent-bright); }
|
|
151
|
+
.btn-secondary { background: var(--surface); color: var(--text); border: 1px solid var(--border); }
|
|
152
|
+
.btn-secondary:hover { border-color: var(--accent-border); }
|
|
153
|
+
|
|
154
|
+
footer { text-align: center; padding: 28px 0; color: var(--text-dim); font-size: 12px; border-top: 1px solid var(--border); }
|
|
155
|
+
footer a { color: var(--accent); text-decoration: none; }
|
|
156
|
+
|
|
157
|
+
@media (max-width: 640px) { .numbers { grid-template-columns: repeat(2, 1fr); } .comparison, .features-grid { grid-template-columns: 1fr; } .checks-grid { grid-template-columns: 1fr; } .steps { grid-template-columns: 1fr; } .smart-grid { grid-template-columns: 1fr; } }
|
|
158
|
+
</style>
|
|
159
|
+
</head>
|
|
160
|
+
<body>
|
|
161
|
+
<div class="bg-mesh"></div>
|
|
162
|
+
<div class="container">
|
|
163
|
+
<nav>
|
|
164
|
+
<a href="/" class="nav-brand">nerviq</a>
|
|
165
|
+
<div class="nav-badges">
|
|
166
|
+
<img src="https://img.shields.io/npm/v/@nerviq/cli?color=a78bfa&label=npm" alt="npm version">
|
|
167
|
+
<img src="https://img.shields.io/npm/dm/@nerviq/cli?color=34d399&label=downloads" alt="npm downloads">
|
|
168
|
+
</div>
|
|
169
|
+
<div class="nav-links">
|
|
170
|
+
<a href="https://github.com/nerviq/nerviq">GitHub</a>
|
|
171
|
+
<a href="https://www.npmjs.com/package/@nerviq/cli">npm</a>
|
|
172
|
+
</div>
|
|
173
|
+
</nav>
|
|
174
|
+
|
|
175
|
+
<section class="hero">
|
|
176
|
+
<div class="hero-eyebrow">
|
|
177
|
+
<span class="dot"></span>
|
|
178
|
+
v1.16.2 candidate — Free & Open Source
|
|
179
|
+
</div>
|
|
180
|
+
<h1>Safely improve your<br><em>Claude Code</em> setup</h1>
|
|
181
|
+
<p class="hero-sub">Audit your repo. See what's missing. Apply only what you approve — with rollback for every change. Existing config is always preserved.</p>
|
|
182
|
+
|
|
183
|
+
<div class="install-box mono" onclick="navigator.clipboard.writeText('npx @nerviq/cli');this.querySelector('.copy-icon').textContent='Copied!'">
|
|
184
|
+
<span class="prompt">$</span>
|
|
185
|
+
<span class="cmd">npx @nerviq/cli</span>
|
|
186
|
+
<span class="copy-icon">Copy</span>
|
|
187
|
+
</div>
|
|
188
|
+
<div class="install-hint">No install needed. Node.js 18+. Zero dependencies. Core workflows run locally, and benchmark uses an isolated temp copy.</div>
|
|
189
|
+
</section>
|
|
190
|
+
|
|
191
|
+
<section class="numbers">
|
|
192
|
+
<div class="number-card"><div class="val green">No-write</div><div class="label">Discovery & audit</div></div>
|
|
193
|
+
<div class="number-card"><div class="val blue">Selective</div><div class="label">Apply only what you approve</div></div>
|
|
194
|
+
<div class="number-card"><div class="val purple">Rollback</div><div class="label">Every change is reversible</div></div>
|
|
195
|
+
<div class="number-card"><div class="val yellow">Isolated</div><div class="label">Benchmark on temp copy</div></div>
|
|
196
|
+
</section>
|
|
197
|
+
<div style="text-align:center;margin-top:-16px;margin-bottom:32px">
|
|
198
198
|
<span style="color:var(--text-dim);font-size:13px">2,441 checks • 62 domain packs • 49 MCP packs • 10 languages • Backed by 1,168 catalog items from <a href="https://github.com/DnaFin/nerviq-research" style="color:var(--accent)">Nerviq Research</a></span>
|
|
199
|
-
</div>
|
|
200
|
-
|
|
201
|
-
<section style="margin:48px 0 48px;text-align:center;background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:14px;padding:32px">
|
|
202
|
-
<div style="font-size:14px;text-transform:uppercase;letter-spacing:2px;color:var(--accent);font-weight:600;margin-bottom:8px">New here?</div>
|
|
203
|
-
<div style="font-size:20px;font-weight:700;margin-bottom:8px">Start with the quick scan</div>
|
|
204
|
-
<div style="color:var(--text-dim);font-size:14px;margin-bottom:16px">Read-only. Nothing changes. See the top 3 fixes and one clear next command.</div>
|
|
205
|
-
<code class="mono" style="background:var(--surface);padding:10px 24px;border-radius:8px;font-size:16px;color:var(--green);display:inline-block">npx @nerviq/cli --lite</code>
|
|
206
|
-
</section>
|
|
207
|
-
|
|
208
|
-
<section style="margin:0 0 48px;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px">
|
|
209
|
-
<div style="font-size:14px;text-transform:uppercase;letter-spacing:2px;color:var(--blue);font-weight:600;margin-bottom:8px">Need proof artifacts?</div>
|
|
210
|
-
<div style="font-size:18px;font-weight:700;margin-bottom:8px">Save structured snapshots as you improve the repo</div>
|
|
211
|
-
<div style="color:var(--text-dim);font-size:14px;margin-bottom:16px">Use the same artifact path for audit, augment, benchmark, and governance evidence.</div>
|
|
212
|
-
<code class="mono" style="background:var(--surface-2);padding:10px 24px;border-radius:8px;font-size:16px;color:var(--green);display:inline-block">npx @nerviq/cli --snapshot</code>
|
|
213
|
-
</section>
|
|
214
|
-
|
|
215
|
-
<section class="how-section">
|
|
216
|
-
<h2>How it works</h2>
|
|
217
|
-
<p>Three steps to a safer Claude Code rollout.</p>
|
|
218
|
-
<div class="steps">
|
|
219
|
-
<div class="step">
|
|
220
|
-
<div class="step-num">1</div>
|
|
221
|
-
<h3>Discover</h3>
|
|
222
|
-
<p>Scan the repo, score readiness, and see the highest-value next actions before changing anything.</p>
|
|
223
|
-
<code>npx @nerviq/cli</code>
|
|
224
|
-
</div>
|
|
225
|
-
<div class="step">
|
|
226
|
-
<div class="step-num">2</div>
|
|
227
|
-
<h3>Plan</h3>
|
|
228
|
-
<p>Export proposal bundles with file previews, rationale, risk labels, and create, patch, or manual-review classification.</p>
|
|
229
|
-
<code>npx @nerviq/cli plan</code>
|
|
230
|
-
</div>
|
|
231
|
-
<div class="step">
|
|
232
|
-
<div class="step-num">3</div>
|
|
233
|
-
<h3>Apply</h3>
|
|
234
|
-
<p>Apply only the proposal bundles you want and get rollback + activity artifacts for every write batch.</p>
|
|
235
|
-
<code>npx @nerviq/cli apply</code>
|
|
236
|
-
</div>
|
|
237
|
-
</div>
|
|
238
|
-
</section>
|
|
239
|
-
|
|
240
|
-
<section class="comparison">
|
|
241
|
-
<div class="comp-card before">
|
|
242
|
-
<div class="comp-label">Before</div>
|
|
243
|
-
<div class="comp-score">10</div>
|
|
244
|
-
<div class="comp-detail">
|
|
245
|
-
<span class="missing">✗</span> No CLAUDE.md<br>
|
|
246
|
-
<span class="missing">✗</span> No hooks or automation<br>
|
|
247
|
-
<span class="missing">✗</span> No slash commands<br>
|
|
248
|
-
<span class="missing">✗</span> No verification loop<br>
|
|
249
|
-
<span class="missing">✗</span> No architecture diagram<br>
|
|
250
|
-
<span class="missing">✗</span> No secrets protection
|
|
251
|
-
</div>
|
|
252
|
-
</div>
|
|
253
|
-
<div class="comp-card after">
|
|
254
|
-
<div class="comp-label">After setup</div>
|
|
255
|
-
<div class="comp-score">78</div>
|
|
256
|
-
<div class="comp-detail">
|
|
257
|
-
<span class="added">✓</span> Smart CLAUDE.md with Mermaid<br>
|
|
258
|
-
<span class="added">✓</span> PreToolUse + PostToolUse hooks<br>
|
|
259
|
-
<span class="added">✓</span> /test, /review, /fix, /deploy<br>
|
|
260
|
-
<span class="added">✓</span> Security reviewer agent<br>
|
|
261
|
-
<span class="added">✓</span> Stack-specific rules<br>
|
|
262
|
-
<span class="added">✓</span> XML constraints + verification
|
|
263
|
-
</div>
|
|
264
|
-
</div>
|
|
265
|
-
</section>
|
|
266
|
-
|
|
267
|
-
<section class="terminal-section">
|
|
268
|
-
<h2>See it in action</h2>
|
|
269
|
-
<div class="terminal">
|
|
270
|
-
<div class="terminal-header">
|
|
271
|
-
<div class="dots"><div class="dot dot-r"></div><div class="dot dot-y"></div><div class="dot dot-g"></div></div>
|
|
272
|
-
<div class="title mono">~/my-project</div>
|
|
273
|
-
<div></div>
|
|
274
|
-
</div>
|
|
275
|
-
<div class="terminal-body mono">
|
|
276
|
-
<span class="t-dim">$</span> <span class="t-green">npx @nerviq/cli</span>
|
|
277
|
-
<br><br>
|
|
278
|
-
<span class="t-bold"> nerviq audit</span>
|
|
279
|
-
<br><span class="t-dim"> ═════════════════════════════════════</span>
|
|
280
|
-
<br><span class="t-blue"> Detected: Node.js</span>
|
|
281
|
-
<br><br>
|
|
282
|
-
<span class="t-green"> ██████████████████</span><span class="t-dim">░░</span> <span class="t-bold">92/100</span>
|
|
283
|
-
<br><br>
|
|
284
|
-
<span class="t-green"> ✅ Passing</span>
|
|
285
|
-
<br><span class="t-dim"> CLAUDE.md project instructions</span>
|
|
286
|
-
<br><span class="t-dim"> Mermaid architecture diagram</span>
|
|
287
|
-
<br><span class="t-dim"> Hooks (PreToolUse + PostToolUse + SessionStart)</span>
|
|
288
|
-
<br><span class="t-dim"> Custom slash commands</span>
|
|
289
|
-
<br><span class="t-dim"> XML constraint blocks + few-shot examples</span>
|
|
290
|
-
<br><span class="t-dim"> Secrets protection configured</span>
|
|
291
|
-
<br><br>
|
|
292
|
-
<span class="t-accent"> ⚡ Top 5 Next Actions</span>
|
|
293
|
-
<br> <span class="t-bold">1. Has Dockerfile</span>
|
|
294
|
-
<br><span class="t-dim"> Why: Add a Dockerfile for containerized builds and deployments.</span>
|
|
295
|
-
<br><span class="t-dim"> Trace: failed-check:dockerfile | impact:medium | category:devops</span>
|
|
296
|
-
<br><span class="t-dim"> Risk: low | Confidence: medium</span>
|
|
297
|
-
<br><span class="t-dim"> Fix: Add a Dockerfile for containerized builds and deployments.</span>
|
|
298
|
-
<br><br>
|
|
299
|
-
<span class="t-blue"> 🔵 6 more recommendations (use --verbose)</span>
|
|
300
|
-
<br><br>
|
|
301
|
-
<span class="t-dim"> ─────────────────────────────────────</span>
|
|
302
|
-
<br> <span class="t-bold">67/85</span> checks passing <span class="t-dim">(2 not applicable)</span>
|
|
303
|
-
<br> Next command: <span class="t-green">npx @nerviq/cli augment</span>
|
|
304
|
-
</div>
|
|
305
|
-
</div>
|
|
306
|
-
</section>
|
|
307
|
-
|
|
308
|
-
<section class="features-section">
|
|
309
|
-
<h2>Pick the mode that fits your situation</h2>
|
|
310
|
-
<p>Start with read-only discovery. Go deeper only when you're ready.</p>
|
|
311
|
-
<div class="features-grid">
|
|
312
|
-
<div class="feature-card">
|
|
313
|
-
<h3>🔍 Audit</h3>
|
|
314
|
-
<p>Score 0-100 against 85 checks. Detects framework, recommends domain packs, and surfaces a traceable Top 5 Next Actions list before any write happens.</p>
|
|
315
|
-
<code>npx @nerviq/cli</code>
|
|
316
|
-
</div>
|
|
317
|
-
<div class="feature-card">
|
|
318
|
-
<h3>🧩 Proposal Bundles</h3>
|
|
319
|
-
<p>Export plan files with rationale, file previews, diff-style output, and create, patch, or manual-review classification.</p>
|
|
320
|
-
<code>npx @nerviq/cli plan</code>
|
|
321
|
-
</div>
|
|
322
|
-
<div class="feature-card">
|
|
323
|
-
<h3>🤖 Claude-Native Skill</h3>
|
|
324
|
-
<p>Ship a first `audit-repo` skill template so teams can run nerviq from inside Claude Code, not only from a separate terminal.</p>
|
|
325
|
-
<code>.claude/skills/audit-repo</code>
|
|
326
|
-
</div>
|
|
327
|
-
<div class="feature-card">
|
|
328
|
-
<h3>🛠️ Smart Setup</h3>
|
|
329
|
-
<p>Generates CLAUDE.md from your scripts and stack, reads pyproject.toml for Python projects, creates Mermaid diagrams, and adds safer defaults.</p>
|
|
330
|
-
<code>npx @nerviq/cli setup</code>
|
|
331
|
-
</div>
|
|
332
|
-
<div class="feature-card">
|
|
333
|
-
<h3>✅ Selective Apply</h3>
|
|
334
|
-
<p>Apply only the ready proposal bundles you want. Every batch emits rollback and activity artifacts under <code>.nerviq/</code>.</p>
|
|
335
|
-
<code>npx @nerviq/cli apply</code>
|
|
336
|
-
</div>
|
|
337
|
-
<div class="feature-card">
|
|
338
|
-
<h3>🛡️ Governance</h3>
|
|
339
|
-
<p>Permission profiles, hook registry, domain packs, MCP packs, policy packs, and a pilot rollout kit for security-conscious teams.</p>
|
|
340
|
-
<code>npx @nerviq/cli governance</code>
|
|
341
|
-
</div>
|
|
342
|
-
<div class="feature-card">
|
|
343
|
-
<h3>📈 Benchmark</h3>
|
|
344
|
-
<p>Measure before/after impact in an isolated temp copy and export deltas, workflow evidence, and a markdown or JSON report.</p>
|
|
345
|
-
<code>npx @nerviq/cli benchmark</code>
|
|
346
|
-
</div>
|
|
347
|
-
<div class="feature-card">
|
|
348
|
-
<h3>🔄 CI Action</h3>
|
|
349
|
-
<p>GitHub Action that audits every PR. Set a minimum score threshold. Fail the build if standards drop.</p>
|
|
350
|
-
<code>uses: nerviq/nerviq@v1.16.1</code>
|
|
351
|
-
</div>
|
|
352
|
-
</div>
|
|
353
|
-
<details style="margin-top:16px;text-align:center">
|
|
354
|
-
<summary style="color:var(--accent);cursor:pointer;font-size:14px;font-weight:500">More modes: interactive wizard, watch, badge, deep-review</summary>
|
|
355
|
-
<div class="features-grid" style="margin-top:16px">
|
|
356
|
-
<div class="feature-card">
|
|
357
|
-
<h3>🧙 Interactive Wizard</h3>
|
|
358
|
-
<p>Step-by-step guided tour. Pick what to fix, skip what you don't need.</p>
|
|
359
|
-
<code>npx @nerviq/cli interactive</code>
|
|
360
|
-
</div>
|
|
361
|
-
<div class="feature-card">
|
|
362
|
-
<h3>👁️ Watch Mode</h3>
|
|
363
|
-
<p>Live monitoring. Re-audits on every config change in real time.</p>
|
|
364
|
-
<code>npx @nerviq/cli watch</code>
|
|
365
|
-
</div>
|
|
366
|
-
<div class="feature-card">
|
|
367
|
-
<h3>🏅 Badge</h3>
|
|
368
|
-
<p>Generate a shields.io badge for your README.</p>
|
|
369
|
-
<code>npx @nerviq/cli badge</code>
|
|
370
|
-
</div>
|
|
371
|
-
<div class="feature-card">
|
|
372
|
-
<h3>🧠 Deep Review</h3>
|
|
373
|
-
<p>AI-assisted feedback for mature setups. Requires API key and explicit opt-in.</p>
|
|
374
|
-
<code>npx @nerviq/cli deep-review</code>
|
|
375
|
-
</div>
|
|
376
|
-
</div>
|
|
377
|
-
</details>
|
|
378
|
-
</section>
|
|
379
|
-
|
|
380
|
-
<section class="smart-section">
|
|
381
|
-
<h2>Smart CLAUDE.md generation</h2>
|
|
382
|
-
<p>Not a generic template. Actually analyzes your project.</p>
|
|
383
|
-
<div class="smart-grid">
|
|
384
|
-
<div class="smart-card">
|
|
385
|
-
<h4>Detects your scripts</h4>
|
|
386
|
-
<p>Reads package.json and includes your actual test, build, lint, and dev commands.</p>
|
|
387
|
-
</div>
|
|
388
|
-
<div class="smart-card">
|
|
389
|
-
<h4>Framework-aware</h4>
|
|
390
|
-
<p>Next.js Server Components, Django models, FastAPI Pydantic, React hooks — each gets specific guidelines.</p>
|
|
391
|
-
</div>
|
|
392
|
-
<div class="smart-card">
|
|
393
|
-
<h4>TypeScript-aware</h4>
|
|
394
|
-
<p>Detects strict mode, adds TS-specific rules. No @ts-ignore without tracking.</p>
|
|
395
|
-
</div>
|
|
396
|
-
<div class="smart-card">
|
|
397
|
-
<h4>Auto Mermaid diagram</h4>
|
|
398
|
-
<p>Scans your directories and generates an architecture diagram. More token-efficient than prose (per Anthropic docs).</p>
|
|
399
|
-
</div>
|
|
400
|
-
<div class="smart-card">
|
|
401
|
-
<h4>XML constraint blocks</h4>
|
|
402
|
-
<p>Adds <constraints> and <verification> blocks with context-aware rules.</p>
|
|
403
|
-
</div>
|
|
404
|
-
<div class="smart-card">
|
|
405
|
-
<h4>Verification criteria</h4>
|
|
406
|
-
<p>Auto-generates a checklist based on your actual test, lint, and build commands.</p>
|
|
407
|
-
</div>
|
|
408
|
-
</div>
|
|
409
|
-
</section>
|
|
410
|
-
|
|
411
|
-
<section class="checks-section">
|
|
412
|
-
<h2>85 checks across 14 categories</h2>
|
|
413
|
-
<p>Every check is backed by tested research from the NERVIQ catalog.</p>
|
|
414
|
-
<div class="checks-grid">
|
|
415
|
-
<div class="check-item"><span class="check-icon">📋</span><div class="check-info"><h4>CLAUDE.md <span class="check-tag tag-critical">Critical</span></h4><p>Project instructions Claude reads every session</p></div></div>
|
|
416
|
-
<div class="check-item"><span class="check-icon">✅</span><div class="check-info"><h4>Verification <span class="check-tag tag-critical">Critical</span></h4><p>Test/lint commands so Claude checks its own work</p></div></div>
|
|
417
|
-
<div class="check-item"><span class="check-icon">🔒</span><div class="check-info"><h4>Secrets Protection <span class="check-tag tag-critical">Critical</span></h4><p>Block .env reads, deny rules for sensitive files</p></div></div>
|
|
418
|
-
<div class="check-item"><span class="check-icon">⚡</span><div class="check-info"><h4>Hooks <span class="check-tag tag-high">High</span></h4><p>PreToolUse + PostToolUse automation</p></div></div>
|
|
419
|
-
<div class="check-item"><span class="check-icon">🔷</span><div class="check-info"><h4>Mermaid Diagram <span class="check-tag tag-high">High</span></h4><p>Architecture visualization. More token-efficient than prose</p></div></div>
|
|
420
|
-
<div class="check-item"><span class="check-icon">🏷️</span><div class="check-info"><h4>XML Tags <span class="check-tag tag-high">High</span></h4><p>Structured prompts with clearer constraints and verification blocks</p></div></div>
|
|
421
|
-
<div class="check-item"><span class="check-icon">⌘</span><div class="check-info"><h4>Commands <span class="check-tag tag-high">High</span></h4><p>Custom /test, /deploy, /review, /fix</p></div></div>
|
|
422
|
-
<div class="check-item"><span class="check-icon">🔍</span><div class="check-info"><h4>Security Review <span class="check-tag tag-high">High</span></h4><p>Built-in OWASP Top 10 scanning</p></div></div>
|
|
423
|
-
<div class="check-item"><span class="check-icon">🛡️</span><div class="check-info"><h4>Agents <span class="check-tag tag-medium">Medium</span></h4><p>Security reviewer, test writer subagents</p></div></div>
|
|
424
|
-
<div class="check-item"><span class="check-icon">📐</span><div class="check-info"><h4>Rules <span class="check-tag tag-medium">Medium</span></h4><p>Path-specific conventions per file type</p></div></div>
|
|
425
|
-
<div class="check-item"><span class="check-icon">🧩</span><div class="check-info"><h4>Skills <span class="check-tag tag-medium">Medium</span></h4><p>On-demand domain knowledge</p></div></div>
|
|
426
|
-
<div class="check-item"><span class="check-icon">🔌</span><div class="check-info"><h4>MCP Servers <span class="check-tag tag-medium">Medium</span></h4><p>Context7, database, and API integrations</p></div></div>
|
|
427
|
-
</div>
|
|
428
|
-
</section>
|
|
429
|
-
|
|
430
|
-
<div style="text-align:center">
|
|
431
|
-
<h2 style="font-size:14px;text-transform:uppercase;letter-spacing:2px;color:var(--text-dim);margin-bottom:16px;font-weight:500">Auto-detects your stack</h2>
|
|
432
|
-
<div class="stacks">
|
|
433
|
-
<span class="stack-pill">React</span>
|
|
434
|
-
<span class="stack-pill">Vue</span>
|
|
435
|
-
<span class="stack-pill">Angular</span>
|
|
436
|
-
<span class="stack-pill">Next.js</span>
|
|
437
|
-
<span class="stack-pill">Svelte</span>
|
|
438
|
-
<span class="stack-pill">Python</span>
|
|
439
|
-
<span class="stack-pill">Django</span>
|
|
440
|
-
<span class="stack-pill">FastAPI</span>
|
|
441
|
-
<span class="stack-pill">Node.js</span>
|
|
442
|
-
<span class="stack-pill">TypeScript</span>
|
|
443
|
-
<span class="stack-pill">Rust</span>
|
|
444
|
-
<span class="stack-pill">Go</span>
|
|
445
|
-
<span class="stack-pill">Docker</span>
|
|
446
|
-
<span class="stack-pill">Flutter</span>
|
|
447
|
-
<span class="stack-pill">Ruby</span>
|
|
448
|
-
<span class="stack-pill">Java</span>
|
|
449
|
-
<span class="stack-pill">Kotlin</span>
|
|
450
|
-
<span class="stack-pill">Swift</span>
|
|
451
|
-
</div>
|
|
452
|
-
</div>
|
|
453
|
-
|
|
454
|
-
<section style="margin:64px 0">
|
|
455
|
-
<h2 style="font-size:28px;font-weight:700;letter-spacing:-0.5px;margin-bottom:8px">Real results on 4 different repos</h2>
|
|
456
|
-
<p style="color:var(--text-dim);font-size:15px;margin-bottom:32px">Not demos. Real projects, real gaps found, real improvements applied.</p>
|
|
457
|
-
|
|
458
|
-
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--border);border-radius:14px;overflow:hidden;margin-bottom:24px">
|
|
459
|
-
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
460
|
-
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">NERVIQ</div>
|
|
461
|
-
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Research engine • Python</div>
|
|
462
|
-
<div style="font-size:16px;color:var(--red)">62</div>
|
|
463
|
-
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
464
|
-
<div style="font-size:24px;font-weight:800;color:var(--green);margin-top:4px">90</div>
|
|
465
|
-
<div style="font-size:11px;color:var(--green);font-weight:600">+28</div>
|
|
466
|
-
</div>
|
|
467
|
-
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
468
|
-
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">VTCLE</div>
|
|
469
|
-
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Marketing automation • FastAPI</div>
|
|
470
|
-
<div style="font-size:16px;color:var(--red)">46</div>
|
|
471
|
-
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
472
|
-
<div style="font-size:24px;font-weight:800;color:var(--green);margin-top:4px">64</div>
|
|
473
|
-
<div style="font-size:11px;color:var(--green);font-weight:600">+18</div>
|
|
474
|
-
</div>
|
|
475
|
-
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
476
|
-
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">Social</div>
|
|
477
|
-
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Mobile app • React Native</div>
|
|
478
|
-
<div style="font-size:16px;color:var(--red)">40</div>
|
|
479
|
-
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
480
|
-
<div style="font-size:24px;font-weight:800;color:var(--yellow);margin-top:4px">48</div>
|
|
481
|
-
<div style="font-size:11px;color:var(--green);font-weight:600">+8</div>
|
|
482
|
-
</div>
|
|
483
|
-
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
484
|
-
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">Polymiro</div>
|
|
485
|
-
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Prediction system • Python/Docker</div>
|
|
486
|
-
<div style="font-size:16px;color:var(--red)">35</div>
|
|
487
|
-
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
488
|
-
<div style="font-size:24px;font-weight:800;color:var(--yellow);margin-top:4px">48</div>
|
|
489
|
-
<div style="font-size:11px;color:var(--green);font-weight:600">+13</div>
|
|
490
|
-
</div>
|
|
491
|
-
</div>
|
|
492
|
-
|
|
493
|
-
<div style="text-align:center;margin-bottom:16px">
|
|
494
|
-
<div style="font-size:14px;color:var(--text-dim);line-height:1.8">
|
|
495
|
-
<strong style="color:var(--text)">Most common gaps found:</strong> missing secrets protection, no deny rules, no mermaid diagram, no hooks in settings<br>
|
|
496
|
-
<strong style="color:var(--text)">Key finding:</strong> one project had settings in a non-standard format — the audit caught it immediately
|
|
497
|
-
</div>
|
|
498
|
-
</div>
|
|
499
|
-
<p style="text-align:center;color:var(--text-dim);font-size:13px">Also found 2 bugs in our own tool during dogfooding. Both fixed and shipped same day. <a href="https://github.com/DnaFin/nerviq/tree/main/research" style="color:var(--accent)">Full case studies</a></p>
|
|
500
|
-
</section>
|
|
501
|
-
|
|
502
|
-
<section style="margin:64px 0">
|
|
503
|
-
<h2 style="font-size:28px;font-weight:700;letter-spacing:-0.5px;margin-bottom:8px">When NOT to use this</h2>
|
|
504
|
-
<p style="color:var(--text-dim);font-size:15px;margin-bottom:24px">Honesty builds trust. Here's where this tool is not the right answer.</p>
|
|
505
|
-
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px">
|
|
506
|
-
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
507
|
-
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't use setup on a mature repo blindly</div>
|
|
508
|
-
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">If your team already has a carefully crafted CLAUDE.md and .claude/ config, use <code style="font-size:12px">audit</code> or <code style="font-size:12px">suggest-only</code> first. Never overwrite a hand-built config without reviewing the proposal.</div>
|
|
509
|
-
</div>
|
|
510
|
-
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
511
|
-
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't trust the score as a quality metric</div>
|
|
512
|
-
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">The score measures Claude Code setup coverage, not code quality. A 90/100 repo with bad code is still bad code. This tool improves how Claude works with your repo, not the repo itself.</div>
|
|
513
|
-
</div>
|
|
514
|
-
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
515
|
-
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't skip reading the generated files</div>
|
|
516
|
-
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">Generated CLAUDE.md is a strong starting point, but a hand-written one that reflects your real conventions will always be better. Treat generated output as draft, not final.</div>
|
|
517
|
-
</div>
|
|
518
|
-
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
519
|
-
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't expect it to fix your code</div>
|
|
520
|
-
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">This tool configures how Claude interacts with your project. It doesn't refactor, fix bugs, or write features. It makes Claude better at doing those things for you.</div>
|
|
521
|
-
</div>
|
|
522
|
-
</div>
|
|
523
|
-
</section>
|
|
524
|
-
|
|
525
|
-
<section class="faq-section" style="margin:64px 0">
|
|
526
|
-
<h2 style="font-size:28px;font-weight:700;letter-spacing:-0.5px;margin-bottom:32px">Frequently asked</h2>
|
|
527
|
-
<div style="display:flex;flex-direction:column;gap:12px">
|
|
528
|
-
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
529
|
-
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">Is it safe? Does it modify my code?</summary>
|
|
530
|
-
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7"><strong>Audit</strong>, <strong>augment</strong>, and <strong>suggest-only</strong> are read-only. <strong>Setup</strong> creates missing Claude artifacts, and <strong>apply</strong> uses proposal bundles with rollback + activity logs. Core flows run locally; <strong>deep-review</strong> is the only opt-in mode that sends selected config to Anthropic for analysis.</p>
|
|
531
|
-
</details>
|
|
532
|
-
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
533
|
-
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">How is this different from <code>/init</code>?</summary>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
<section style="margin:48px 0 48px;text-align:center;background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:14px;padding:32px">
|
|
202
|
+
<div style="font-size:14px;text-transform:uppercase;letter-spacing:2px;color:var(--accent);font-weight:600;margin-bottom:8px">New here?</div>
|
|
203
|
+
<div style="font-size:20px;font-weight:700;margin-bottom:8px">Start with the quick scan</div>
|
|
204
|
+
<div style="color:var(--text-dim);font-size:14px;margin-bottom:16px">Read-only. Nothing changes. See the top 3 fixes and one clear next command.</div>
|
|
205
|
+
<code class="mono" style="background:var(--surface);padding:10px 24px;border-radius:8px;font-size:16px;color:var(--green);display:inline-block">npx @nerviq/cli --lite</code>
|
|
206
|
+
</section>
|
|
207
|
+
|
|
208
|
+
<section style="margin:0 0 48px;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px">
|
|
209
|
+
<div style="font-size:14px;text-transform:uppercase;letter-spacing:2px;color:var(--blue);font-weight:600;margin-bottom:8px">Need proof artifacts?</div>
|
|
210
|
+
<div style="font-size:18px;font-weight:700;margin-bottom:8px">Save structured snapshots as you improve the repo</div>
|
|
211
|
+
<div style="color:var(--text-dim);font-size:14px;margin-bottom:16px">Use the same artifact path for audit, augment, benchmark, and governance evidence.</div>
|
|
212
|
+
<code class="mono" style="background:var(--surface-2);padding:10px 24px;border-radius:8px;font-size:16px;color:var(--green);display:inline-block">npx @nerviq/cli --snapshot</code>
|
|
213
|
+
</section>
|
|
214
|
+
|
|
215
|
+
<section class="how-section">
|
|
216
|
+
<h2>How it works</h2>
|
|
217
|
+
<p>Three steps to a safer Claude Code rollout.</p>
|
|
218
|
+
<div class="steps">
|
|
219
|
+
<div class="step">
|
|
220
|
+
<div class="step-num">1</div>
|
|
221
|
+
<h3>Discover</h3>
|
|
222
|
+
<p>Scan the repo, score readiness, and see the highest-value next actions before changing anything.</p>
|
|
223
|
+
<code>npx @nerviq/cli</code>
|
|
224
|
+
</div>
|
|
225
|
+
<div class="step">
|
|
226
|
+
<div class="step-num">2</div>
|
|
227
|
+
<h3>Plan</h3>
|
|
228
|
+
<p>Export proposal bundles with file previews, rationale, risk labels, and create, patch, or manual-review classification.</p>
|
|
229
|
+
<code>npx @nerviq/cli plan</code>
|
|
230
|
+
</div>
|
|
231
|
+
<div class="step">
|
|
232
|
+
<div class="step-num">3</div>
|
|
233
|
+
<h3>Apply</h3>
|
|
234
|
+
<p>Apply only the proposal bundles you want and get rollback + activity artifacts for every write batch.</p>
|
|
235
|
+
<code>npx @nerviq/cli apply</code>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</section>
|
|
239
|
+
|
|
240
|
+
<section class="comparison">
|
|
241
|
+
<div class="comp-card before">
|
|
242
|
+
<div class="comp-label">Before</div>
|
|
243
|
+
<div class="comp-score">10</div>
|
|
244
|
+
<div class="comp-detail">
|
|
245
|
+
<span class="missing">✗</span> No CLAUDE.md<br>
|
|
246
|
+
<span class="missing">✗</span> No hooks or automation<br>
|
|
247
|
+
<span class="missing">✗</span> No slash commands<br>
|
|
248
|
+
<span class="missing">✗</span> No verification loop<br>
|
|
249
|
+
<span class="missing">✗</span> No architecture diagram<br>
|
|
250
|
+
<span class="missing">✗</span> No secrets protection
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
<div class="comp-card after">
|
|
254
|
+
<div class="comp-label">After setup</div>
|
|
255
|
+
<div class="comp-score">78</div>
|
|
256
|
+
<div class="comp-detail">
|
|
257
|
+
<span class="added">✓</span> Smart CLAUDE.md with Mermaid<br>
|
|
258
|
+
<span class="added">✓</span> PreToolUse + PostToolUse hooks<br>
|
|
259
|
+
<span class="added">✓</span> /test, /review, /fix, /deploy<br>
|
|
260
|
+
<span class="added">✓</span> Security reviewer agent<br>
|
|
261
|
+
<span class="added">✓</span> Stack-specific rules<br>
|
|
262
|
+
<span class="added">✓</span> XML constraints + verification
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
</section>
|
|
266
|
+
|
|
267
|
+
<section class="terminal-section">
|
|
268
|
+
<h2>See it in action</h2>
|
|
269
|
+
<div class="terminal">
|
|
270
|
+
<div class="terminal-header">
|
|
271
|
+
<div class="dots"><div class="dot dot-r"></div><div class="dot dot-y"></div><div class="dot dot-g"></div></div>
|
|
272
|
+
<div class="title mono">~/my-project</div>
|
|
273
|
+
<div></div>
|
|
274
|
+
</div>
|
|
275
|
+
<div class="terminal-body mono">
|
|
276
|
+
<span class="t-dim">$</span> <span class="t-green">npx @nerviq/cli</span>
|
|
277
|
+
<br><br>
|
|
278
|
+
<span class="t-bold"> nerviq audit</span>
|
|
279
|
+
<br><span class="t-dim"> ═════════════════════════════════════</span>
|
|
280
|
+
<br><span class="t-blue"> Detected: Node.js</span>
|
|
281
|
+
<br><br>
|
|
282
|
+
<span class="t-green"> ██████████████████</span><span class="t-dim">░░</span> <span class="t-bold">92/100</span>
|
|
283
|
+
<br><br>
|
|
284
|
+
<span class="t-green"> ✅ Passing</span>
|
|
285
|
+
<br><span class="t-dim"> CLAUDE.md project instructions</span>
|
|
286
|
+
<br><span class="t-dim"> Mermaid architecture diagram</span>
|
|
287
|
+
<br><span class="t-dim"> Hooks (PreToolUse + PostToolUse + SessionStart)</span>
|
|
288
|
+
<br><span class="t-dim"> Custom slash commands</span>
|
|
289
|
+
<br><span class="t-dim"> XML constraint blocks + few-shot examples</span>
|
|
290
|
+
<br><span class="t-dim"> Secrets protection configured</span>
|
|
291
|
+
<br><br>
|
|
292
|
+
<span class="t-accent"> ⚡ Top 5 Next Actions</span>
|
|
293
|
+
<br> <span class="t-bold">1. Has Dockerfile</span>
|
|
294
|
+
<br><span class="t-dim"> Why: Add a Dockerfile for containerized builds and deployments.</span>
|
|
295
|
+
<br><span class="t-dim"> Trace: failed-check:dockerfile | impact:medium | category:devops</span>
|
|
296
|
+
<br><span class="t-dim"> Risk: low | Confidence: medium</span>
|
|
297
|
+
<br><span class="t-dim"> Fix: Add a Dockerfile for containerized builds and deployments.</span>
|
|
298
|
+
<br><br>
|
|
299
|
+
<span class="t-blue"> 🔵 6 more recommendations (use --verbose)</span>
|
|
300
|
+
<br><br>
|
|
301
|
+
<span class="t-dim"> ─────────────────────────────────────</span>
|
|
302
|
+
<br> <span class="t-bold">67/85</span> checks passing <span class="t-dim">(2 not applicable)</span>
|
|
303
|
+
<br> Next command: <span class="t-green">npx @nerviq/cli augment</span>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
306
|
+
</section>
|
|
307
|
+
|
|
308
|
+
<section class="features-section">
|
|
309
|
+
<h2>Pick the mode that fits your situation</h2>
|
|
310
|
+
<p>Start with read-only discovery. Go deeper only when you're ready.</p>
|
|
311
|
+
<div class="features-grid">
|
|
312
|
+
<div class="feature-card">
|
|
313
|
+
<h3>🔍 Audit</h3>
|
|
314
|
+
<p>Score 0-100 against 85 checks. Detects framework, recommends domain packs, and surfaces a traceable Top 5 Next Actions list before any write happens.</p>
|
|
315
|
+
<code>npx @nerviq/cli</code>
|
|
316
|
+
</div>
|
|
317
|
+
<div class="feature-card">
|
|
318
|
+
<h3>🧩 Proposal Bundles</h3>
|
|
319
|
+
<p>Export plan files with rationale, file previews, diff-style output, and create, patch, or manual-review classification.</p>
|
|
320
|
+
<code>npx @nerviq/cli plan</code>
|
|
321
|
+
</div>
|
|
322
|
+
<div class="feature-card">
|
|
323
|
+
<h3>🤖 Claude-Native Skill</h3>
|
|
324
|
+
<p>Ship a first `audit-repo` skill template so teams can run nerviq from inside Claude Code, not only from a separate terminal.</p>
|
|
325
|
+
<code>.claude/skills/audit-repo</code>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="feature-card">
|
|
328
|
+
<h3>🛠️ Smart Setup</h3>
|
|
329
|
+
<p>Generates CLAUDE.md from your scripts and stack, reads pyproject.toml for Python projects, creates Mermaid diagrams, and adds safer defaults.</p>
|
|
330
|
+
<code>npx @nerviq/cli setup</code>
|
|
331
|
+
</div>
|
|
332
|
+
<div class="feature-card">
|
|
333
|
+
<h3>✅ Selective Apply</h3>
|
|
334
|
+
<p>Apply only the ready proposal bundles you want. Every batch emits rollback and activity artifacts under <code>.nerviq/</code>.</p>
|
|
335
|
+
<code>npx @nerviq/cli apply</code>
|
|
336
|
+
</div>
|
|
337
|
+
<div class="feature-card">
|
|
338
|
+
<h3>🛡️ Governance</h3>
|
|
339
|
+
<p>Permission profiles, hook registry, domain packs, MCP packs, policy packs, and a pilot rollout kit for security-conscious teams.</p>
|
|
340
|
+
<code>npx @nerviq/cli governance</code>
|
|
341
|
+
</div>
|
|
342
|
+
<div class="feature-card">
|
|
343
|
+
<h3>📈 Benchmark</h3>
|
|
344
|
+
<p>Measure before/after impact in an isolated temp copy and export deltas, workflow evidence, and a markdown or JSON report.</p>
|
|
345
|
+
<code>npx @nerviq/cli benchmark</code>
|
|
346
|
+
</div>
|
|
347
|
+
<div class="feature-card">
|
|
348
|
+
<h3>🔄 CI Action</h3>
|
|
349
|
+
<p>GitHub Action that audits every PR. Set a minimum score threshold. Fail the build if standards drop.</p>
|
|
350
|
+
<code>uses: nerviq/nerviq@v1.16.1</code>
|
|
351
|
+
</div>
|
|
352
|
+
</div>
|
|
353
|
+
<details style="margin-top:16px;text-align:center">
|
|
354
|
+
<summary style="color:var(--accent);cursor:pointer;font-size:14px;font-weight:500">More modes: interactive wizard, watch, badge, deep-review</summary>
|
|
355
|
+
<div class="features-grid" style="margin-top:16px">
|
|
356
|
+
<div class="feature-card">
|
|
357
|
+
<h3>🧙 Interactive Wizard</h3>
|
|
358
|
+
<p>Step-by-step guided tour. Pick what to fix, skip what you don't need.</p>
|
|
359
|
+
<code>npx @nerviq/cli interactive</code>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="feature-card">
|
|
362
|
+
<h3>👁️ Watch Mode</h3>
|
|
363
|
+
<p>Live monitoring. Re-audits on every config change in real time.</p>
|
|
364
|
+
<code>npx @nerviq/cli watch</code>
|
|
365
|
+
</div>
|
|
366
|
+
<div class="feature-card">
|
|
367
|
+
<h3>🏅 Badge</h3>
|
|
368
|
+
<p>Generate a shields.io badge for your README.</p>
|
|
369
|
+
<code>npx @nerviq/cli badge</code>
|
|
370
|
+
</div>
|
|
371
|
+
<div class="feature-card">
|
|
372
|
+
<h3>🧠 Deep Review</h3>
|
|
373
|
+
<p>AI-assisted feedback for mature setups. Requires API key and explicit opt-in.</p>
|
|
374
|
+
<code>npx @nerviq/cli deep-review</code>
|
|
375
|
+
</div>
|
|
376
|
+
</div>
|
|
377
|
+
</details>
|
|
378
|
+
</section>
|
|
379
|
+
|
|
380
|
+
<section class="smart-section">
|
|
381
|
+
<h2>Smart CLAUDE.md generation</h2>
|
|
382
|
+
<p>Not a generic template. Actually analyzes your project.</p>
|
|
383
|
+
<div class="smart-grid">
|
|
384
|
+
<div class="smart-card">
|
|
385
|
+
<h4>Detects your scripts</h4>
|
|
386
|
+
<p>Reads package.json and includes your actual test, build, lint, and dev commands.</p>
|
|
387
|
+
</div>
|
|
388
|
+
<div class="smart-card">
|
|
389
|
+
<h4>Framework-aware</h4>
|
|
390
|
+
<p>Next.js Server Components, Django models, FastAPI Pydantic, React hooks — each gets specific guidelines.</p>
|
|
391
|
+
</div>
|
|
392
|
+
<div class="smart-card">
|
|
393
|
+
<h4>TypeScript-aware</h4>
|
|
394
|
+
<p>Detects strict mode, adds TS-specific rules. No @ts-ignore without tracking.</p>
|
|
395
|
+
</div>
|
|
396
|
+
<div class="smart-card">
|
|
397
|
+
<h4>Auto Mermaid diagram</h4>
|
|
398
|
+
<p>Scans your directories and generates an architecture diagram. More token-efficient than prose (per Anthropic docs).</p>
|
|
399
|
+
</div>
|
|
400
|
+
<div class="smart-card">
|
|
401
|
+
<h4>XML constraint blocks</h4>
|
|
402
|
+
<p>Adds <constraints> and <verification> blocks with context-aware rules.</p>
|
|
403
|
+
</div>
|
|
404
|
+
<div class="smart-card">
|
|
405
|
+
<h4>Verification criteria</h4>
|
|
406
|
+
<p>Auto-generates a checklist based on your actual test, lint, and build commands.</p>
|
|
407
|
+
</div>
|
|
408
|
+
</div>
|
|
409
|
+
</section>
|
|
410
|
+
|
|
411
|
+
<section class="checks-section">
|
|
412
|
+
<h2>85 checks across 14 categories</h2>
|
|
413
|
+
<p>Every check is backed by tested research from the NERVIQ catalog.</p>
|
|
414
|
+
<div class="checks-grid">
|
|
415
|
+
<div class="check-item"><span class="check-icon">📋</span><div class="check-info"><h4>CLAUDE.md <span class="check-tag tag-critical">Critical</span></h4><p>Project instructions Claude reads every session</p></div></div>
|
|
416
|
+
<div class="check-item"><span class="check-icon">✅</span><div class="check-info"><h4>Verification <span class="check-tag tag-critical">Critical</span></h4><p>Test/lint commands so Claude checks its own work</p></div></div>
|
|
417
|
+
<div class="check-item"><span class="check-icon">🔒</span><div class="check-info"><h4>Secrets Protection <span class="check-tag tag-critical">Critical</span></h4><p>Block .env reads, deny rules for sensitive files</p></div></div>
|
|
418
|
+
<div class="check-item"><span class="check-icon">⚡</span><div class="check-info"><h4>Hooks <span class="check-tag tag-high">High</span></h4><p>PreToolUse + PostToolUse automation</p></div></div>
|
|
419
|
+
<div class="check-item"><span class="check-icon">🔷</span><div class="check-info"><h4>Mermaid Diagram <span class="check-tag tag-high">High</span></h4><p>Architecture visualization. More token-efficient than prose</p></div></div>
|
|
420
|
+
<div class="check-item"><span class="check-icon">🏷️</span><div class="check-info"><h4>XML Tags <span class="check-tag tag-high">High</span></h4><p>Structured prompts with clearer constraints and verification blocks</p></div></div>
|
|
421
|
+
<div class="check-item"><span class="check-icon">⌘</span><div class="check-info"><h4>Commands <span class="check-tag tag-high">High</span></h4><p>Custom /test, /deploy, /review, /fix</p></div></div>
|
|
422
|
+
<div class="check-item"><span class="check-icon">🔍</span><div class="check-info"><h4>Security Review <span class="check-tag tag-high">High</span></h4><p>Built-in OWASP Top 10 scanning</p></div></div>
|
|
423
|
+
<div class="check-item"><span class="check-icon">🛡️</span><div class="check-info"><h4>Agents <span class="check-tag tag-medium">Medium</span></h4><p>Security reviewer, test writer subagents</p></div></div>
|
|
424
|
+
<div class="check-item"><span class="check-icon">📐</span><div class="check-info"><h4>Rules <span class="check-tag tag-medium">Medium</span></h4><p>Path-specific conventions per file type</p></div></div>
|
|
425
|
+
<div class="check-item"><span class="check-icon">🧩</span><div class="check-info"><h4>Skills <span class="check-tag tag-medium">Medium</span></h4><p>On-demand domain knowledge</p></div></div>
|
|
426
|
+
<div class="check-item"><span class="check-icon">🔌</span><div class="check-info"><h4>MCP Servers <span class="check-tag tag-medium">Medium</span></h4><p>Context7, database, and API integrations</p></div></div>
|
|
427
|
+
</div>
|
|
428
|
+
</section>
|
|
429
|
+
|
|
430
|
+
<div style="text-align:center">
|
|
431
|
+
<h2 style="font-size:14px;text-transform:uppercase;letter-spacing:2px;color:var(--text-dim);margin-bottom:16px;font-weight:500">Auto-detects your stack</h2>
|
|
432
|
+
<div class="stacks">
|
|
433
|
+
<span class="stack-pill">React</span>
|
|
434
|
+
<span class="stack-pill">Vue</span>
|
|
435
|
+
<span class="stack-pill">Angular</span>
|
|
436
|
+
<span class="stack-pill">Next.js</span>
|
|
437
|
+
<span class="stack-pill">Svelte</span>
|
|
438
|
+
<span class="stack-pill">Python</span>
|
|
439
|
+
<span class="stack-pill">Django</span>
|
|
440
|
+
<span class="stack-pill">FastAPI</span>
|
|
441
|
+
<span class="stack-pill">Node.js</span>
|
|
442
|
+
<span class="stack-pill">TypeScript</span>
|
|
443
|
+
<span class="stack-pill">Rust</span>
|
|
444
|
+
<span class="stack-pill">Go</span>
|
|
445
|
+
<span class="stack-pill">Docker</span>
|
|
446
|
+
<span class="stack-pill">Flutter</span>
|
|
447
|
+
<span class="stack-pill">Ruby</span>
|
|
448
|
+
<span class="stack-pill">Java</span>
|
|
449
|
+
<span class="stack-pill">Kotlin</span>
|
|
450
|
+
<span class="stack-pill">Swift</span>
|
|
451
|
+
</div>
|
|
452
|
+
</div>
|
|
453
|
+
|
|
454
|
+
<section style="margin:64px 0">
|
|
455
|
+
<h2 style="font-size:28px;font-weight:700;letter-spacing:-0.5px;margin-bottom:8px">Real results on 4 different repos</h2>
|
|
456
|
+
<p style="color:var(--text-dim);font-size:15px;margin-bottom:32px">Not demos. Real projects, real gaps found, real improvements applied.</p>
|
|
457
|
+
|
|
458
|
+
<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--border);border-radius:14px;overflow:hidden;margin-bottom:24px">
|
|
459
|
+
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
460
|
+
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">NERVIQ</div>
|
|
461
|
+
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Research engine • Python</div>
|
|
462
|
+
<div style="font-size:16px;color:var(--red)">62</div>
|
|
463
|
+
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
464
|
+
<div style="font-size:24px;font-weight:800;color:var(--green);margin-top:4px">90</div>
|
|
465
|
+
<div style="font-size:11px;color:var(--green);font-weight:600">+28</div>
|
|
466
|
+
</div>
|
|
467
|
+
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
468
|
+
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">VTCLE</div>
|
|
469
|
+
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Marketing automation • FastAPI</div>
|
|
470
|
+
<div style="font-size:16px;color:var(--red)">46</div>
|
|
471
|
+
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
472
|
+
<div style="font-size:24px;font-weight:800;color:var(--green);margin-top:4px">64</div>
|
|
473
|
+
<div style="font-size:11px;color:var(--green);font-weight:600">+18</div>
|
|
474
|
+
</div>
|
|
475
|
+
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
476
|
+
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">Social</div>
|
|
477
|
+
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Mobile app • React Native</div>
|
|
478
|
+
<div style="font-size:16px;color:var(--red)">40</div>
|
|
479
|
+
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
480
|
+
<div style="font-size:24px;font-weight:800;color:var(--yellow);margin-top:4px">48</div>
|
|
481
|
+
<div style="font-size:11px;color:var(--green);font-weight:600">+8</div>
|
|
482
|
+
</div>
|
|
483
|
+
<div style="background:var(--surface);padding:20px;text-align:center">
|
|
484
|
+
<div style="font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);font-weight:600;margin-bottom:4px">Polymiro</div>
|
|
485
|
+
<div style="font-size:11px;color:var(--text-dim);margin-bottom:8px">Prediction system • Python/Docker</div>
|
|
486
|
+
<div style="font-size:16px;color:var(--red)">35</div>
|
|
487
|
+
<div style="font-size:10px;color:var(--text-dim)">before</div>
|
|
488
|
+
<div style="font-size:24px;font-weight:800;color:var(--yellow);margin-top:4px">48</div>
|
|
489
|
+
<div style="font-size:11px;color:var(--green);font-weight:600">+13</div>
|
|
490
|
+
</div>
|
|
491
|
+
</div>
|
|
492
|
+
|
|
493
|
+
<div style="text-align:center;margin-bottom:16px">
|
|
494
|
+
<div style="font-size:14px;color:var(--text-dim);line-height:1.8">
|
|
495
|
+
<strong style="color:var(--text)">Most common gaps found:</strong> missing secrets protection, no deny rules, no mermaid diagram, no hooks in settings<br>
|
|
496
|
+
<strong style="color:var(--text)">Key finding:</strong> one project had settings in a non-standard format — the audit caught it immediately
|
|
497
|
+
</div>
|
|
498
|
+
</div>
|
|
499
|
+
<p style="text-align:center;color:var(--text-dim);font-size:13px">Also found 2 bugs in our own tool during dogfooding. Both fixed and shipped same day. <a href="https://github.com/DnaFin/nerviq/tree/main/research" style="color:var(--accent)">Full case studies</a></p>
|
|
500
|
+
</section>
|
|
501
|
+
|
|
502
|
+
<section style="margin:64px 0">
|
|
503
|
+
<h2 style="font-size:28px;font-weight:700;letter-spacing:-0.5px;margin-bottom:8px">When NOT to use this</h2>
|
|
504
|
+
<p style="color:var(--text-dim);font-size:15px;margin-bottom:24px">Honesty builds trust. Here's where this tool is not the right answer.</p>
|
|
505
|
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px">
|
|
506
|
+
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
507
|
+
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't use setup on a mature repo blindly</div>
|
|
508
|
+
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">If your team already has a carefully crafted CLAUDE.md and .claude/ config, use <code style="font-size:12px">audit</code> or <code style="font-size:12px">suggest-only</code> first. Never overwrite a hand-built config without reviewing the proposal.</div>
|
|
509
|
+
</div>
|
|
510
|
+
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
511
|
+
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't trust the score as a quality metric</div>
|
|
512
|
+
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">The score measures Claude Code setup coverage, not code quality. A 90/100 repo with bad code is still bad code. This tool improves how Claude works with your repo, not the repo itself.</div>
|
|
513
|
+
</div>
|
|
514
|
+
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
515
|
+
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't skip reading the generated files</div>
|
|
516
|
+
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">Generated CLAUDE.md is a strong starting point, but a hand-written one that reflects your real conventions will always be better. Treat generated output as draft, not final.</div>
|
|
517
|
+
</div>
|
|
518
|
+
<div style="background:var(--red-dim);border:1px solid rgba(248,113,113,0.2);border-radius:10px;padding:20px">
|
|
519
|
+
<div style="font-size:14px;font-weight:600;color:var(--red);margin-bottom:8px">Don't expect it to fix your code</div>
|
|
520
|
+
<div style="font-size:13px;color:var(--text-dim);line-height:1.6">This tool configures how Claude interacts with your project. It doesn't refactor, fix bugs, or write features. It makes Claude better at doing those things for you.</div>
|
|
521
|
+
</div>
|
|
522
|
+
</div>
|
|
523
|
+
</section>
|
|
524
|
+
|
|
525
|
+
<section class="faq-section" style="margin:64px 0">
|
|
526
|
+
<h2 style="font-size:28px;font-weight:700;letter-spacing:-0.5px;margin-bottom:32px">Frequently asked</h2>
|
|
527
|
+
<div style="display:flex;flex-direction:column;gap:12px">
|
|
528
|
+
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
529
|
+
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">Is it safe? Does it modify my code?</summary>
|
|
530
|
+
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7"><strong>Audit</strong>, <strong>augment</strong>, and <strong>suggest-only</strong> are read-only. <strong>Setup</strong> creates missing Claude artifacts, and <strong>apply</strong> uses proposal bundles with rollback + activity logs. Core flows run locally; <strong>deep-review</strong> is the only opt-in mode that sends selected config to Anthropic for analysis.</p>
|
|
531
|
+
</details>
|
|
532
|
+
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
533
|
+
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">How is this different from <code>/init</code>?</summary>
|
|
534
534
|
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7">Platform-native setup commands bootstrap one tool at a time. Nerviq audits and governs 8 AI coding platforms, detects cross-platform drift, and adds benchmark, plan/apply, rollback, and governance workflows on top of single-platform generators like <code>/init</code>.</p>
|
|
535
|
-
</details>
|
|
536
|
-
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
537
|
-
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">What's the real impact on productivity?</summary>
|
|
538
|
-
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7">Use <code>benchmark</code> for the real answer on your repo. It runs a baseline audit, applies starter-safe changes in an isolated temp copy, and reports before/after deltas, workflow-evidence coverage, and a case-study style summary.</p>
|
|
539
|
-
</details>
|
|
540
|
-
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
541
|
-
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">Does it work with Cursor, Codex, or other AI tools?</summary>
|
|
535
|
+
</details>
|
|
536
|
+
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
537
|
+
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">What's the real impact on productivity?</summary>
|
|
538
|
+
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7">Use <code>benchmark</code> for the real answer on your repo. It runs a baseline audit, applies starter-safe changes in an isolated temp copy, and reports before/after deltas, workflow-evidence coverage, and a case-study style summary.</p>
|
|
539
|
+
</details>
|
|
540
|
+
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
541
|
+
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">Does it work with Cursor, Codex, or other AI tools?</summary>
|
|
542
542
|
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7">Nerviq audits AI coding agent configuration across 8 platforms, including Claude Code, Codex, Gemini CLI, Copilot, Cursor, Windsurf, Aider, and OpenCode. Some capabilities remain platform-specific, but Harmony evaluates the shared governance layer and surfaces cross-platform drift.</p>
|
|
543
|
-
</details>
|
|
544
|
-
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
543
|
+
</details>
|
|
544
|
+
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
545
545
|
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">Where do the 1,168 catalog items come from?</summary>
|
|
546
546
|
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7">From a systematic research program covering official platform documentation, changelogs, verified experiments, benchmark papers, community tools, and MCP ecosystems across the 8 supported platforms. The catalog includes features, guardrails, patterns, tools, limits, and evidence notes; not every item becomes a direct audit check. The current research corpus backs 2,441 checks in the CLI.</p>
|
|
547
|
-
</details>
|
|
548
|
-
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
549
|
-
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">My project already has a good CLAUDE.md. Will this help?</summary>
|
|
550
|
-
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7"><strong>Audit</strong> will still show you what else you might be missing (hooks, agents, rules, MCP config). <strong>Setup</strong> will never overwrite your existing files — it only creates what's missing. If your project is already well-configured, the tool will tell you. A hand-crafted CLAUDE.md that reflects your real conventions will always be better than a generated one.</p>
|
|
551
|
-
</details>
|
|
552
|
-
</div>
|
|
553
|
-
</section>
|
|
554
|
-
|
|
555
|
-
<section style="margin:64px 0;text-align:center">
|
|
556
|
-
<div style="display:flex;gap:32px;justify-content:center;flex-wrap:wrap;margin-bottom:24px">
|
|
557
|
-
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
558
|
-
<span style="color:var(--green);font-size:18px">✓</span> MIT Licensed
|
|
559
|
-
</div>
|
|
560
|
-
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
561
|
-
<span style="color:var(--green);font-size:18px">✓</span> Zero dependencies
|
|
562
|
-
</div>
|
|
563
|
-
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
564
|
-
<span style="color:var(--green);font-size:18px">✓</span> Core flows run locally
|
|
565
|
-
</div>
|
|
566
|
-
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
567
|
-
<span style="color:var(--green);font-size:18px">✓</span> Deep review is opt-in
|
|
568
|
-
</div>
|
|
569
|
-
</div>
|
|
570
|
-
</section>
|
|
571
|
-
|
|
572
|
-
<section class="cta">
|
|
573
|
-
<h2>Find out what you're missing.<br>Improve it safely.</h2>
|
|
574
|
-
<p style="max-width:480px;margin:0 auto 32px">85 checks. Read-only discovery. Proposal bundles before writes. Domain packs, MCP packs, and workflow evidence when you need deeper rollout confidence.</p>
|
|
575
|
-
<div class="install-box mono" style="margin-bottom:24px" onclick="navigator.clipboard.writeText('npx @nerviq/cli');this.querySelector('.copy-icon').textContent='Copied!'">
|
|
576
|
-
<span class="prompt">$</span>
|
|
577
|
-
<span class="cmd">npx @nerviq/cli</span>
|
|
578
|
-
<span class="copy-icon">Copy</span>
|
|
579
|
-
</div>
|
|
580
|
-
<div class="cta-buttons">
|
|
581
|
-
<a href="https://github.com/nerviq/nerviq" class="btn btn-primary">View on GitHub</a>
|
|
582
|
-
<a href="https://www.npmjs.com/package/@nerviq/cli" class="btn btn-secondary">npm package</a>
|
|
583
|
-
</div>
|
|
584
|
-
</section>
|
|
585
|
-
|
|
586
|
-
<footer>
|
|
587
|
-
<div style="display:flex;justify-content:center;gap:24px;margin-bottom:12px">
|
|
588
|
-
<a href="https://github.com/nerviq/nerviq">GitHub</a>
|
|
589
|
-
<a href="https://www.npmjs.com/package/@nerviq/cli">npm</a>
|
|
590
|
-
<a href="https://github.com/nerviq/nerviq/blob/main/LICENSE">MIT License</a>
|
|
591
|
-
<a href="https://github.com/nerviq/nerviq/blob/main/CONTRIBUTING.md">Contribute</a>
|
|
592
|
-
</div>
|
|
593
|
-
v1.16.2 candidate — Backed by NERVIQ research and evidence.
|
|
594
|
-
</footer>
|
|
595
|
-
</div>
|
|
596
|
-
</body>
|
|
597
|
-
</html>
|
|
547
|
+
</details>
|
|
548
|
+
<details style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 20px">
|
|
549
|
+
<summary style="font-weight:600;cursor:pointer;color:var(--text);font-size:15px">My project already has a good CLAUDE.md. Will this help?</summary>
|
|
550
|
+
<p style="color:var(--text-dim);font-size:14px;margin-top:12px;line-height:1.7"><strong>Audit</strong> will still show you what else you might be missing (hooks, agents, rules, MCP config). <strong>Setup</strong> will never overwrite your existing files — it only creates what's missing. If your project is already well-configured, the tool will tell you. A hand-crafted CLAUDE.md that reflects your real conventions will always be better than a generated one.</p>
|
|
551
|
+
</details>
|
|
552
|
+
</div>
|
|
553
|
+
</section>
|
|
554
|
+
|
|
555
|
+
<section style="margin:64px 0;text-align:center">
|
|
556
|
+
<div style="display:flex;gap:32px;justify-content:center;flex-wrap:wrap;margin-bottom:24px">
|
|
557
|
+
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
558
|
+
<span style="color:var(--green);font-size:18px">✓</span> MIT Licensed
|
|
559
|
+
</div>
|
|
560
|
+
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
561
|
+
<span style="color:var(--green);font-size:18px">✓</span> Zero dependencies
|
|
562
|
+
</div>
|
|
563
|
+
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
564
|
+
<span style="color:var(--green);font-size:18px">✓</span> Core flows run locally
|
|
565
|
+
</div>
|
|
566
|
+
<div style="display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px">
|
|
567
|
+
<span style="color:var(--green);font-size:18px">✓</span> Deep review is opt-in
|
|
568
|
+
</div>
|
|
569
|
+
</div>
|
|
570
|
+
</section>
|
|
571
|
+
|
|
572
|
+
<section class="cta">
|
|
573
|
+
<h2>Find out what you're missing.<br>Improve it safely.</h2>
|
|
574
|
+
<p style="max-width:480px;margin:0 auto 32px">85 checks. Read-only discovery. Proposal bundles before writes. Domain packs, MCP packs, and workflow evidence when you need deeper rollout confidence.</p>
|
|
575
|
+
<div class="install-box mono" style="margin-bottom:24px" onclick="navigator.clipboard.writeText('npx @nerviq/cli');this.querySelector('.copy-icon').textContent='Copied!'">
|
|
576
|
+
<span class="prompt">$</span>
|
|
577
|
+
<span class="cmd">npx @nerviq/cli</span>
|
|
578
|
+
<span class="copy-icon">Copy</span>
|
|
579
|
+
</div>
|
|
580
|
+
<div class="cta-buttons">
|
|
581
|
+
<a href="https://github.com/nerviq/nerviq" class="btn btn-primary">View on GitHub</a>
|
|
582
|
+
<a href="https://www.npmjs.com/package/@nerviq/cli" class="btn btn-secondary">npm package</a>
|
|
583
|
+
</div>
|
|
584
|
+
</section>
|
|
585
|
+
|
|
586
|
+
<footer>
|
|
587
|
+
<div style="display:flex;justify-content:center;gap:24px;margin-bottom:12px">
|
|
588
|
+
<a href="https://github.com/nerviq/nerviq">GitHub</a>
|
|
589
|
+
<a href="https://www.npmjs.com/package/@nerviq/cli">npm</a>
|
|
590
|
+
<a href="https://github.com/nerviq/nerviq/blob/main/LICENSE">MIT License</a>
|
|
591
|
+
<a href="https://github.com/nerviq/nerviq/blob/main/CONTRIBUTING.md">Contribute</a>
|
|
592
|
+
</div>
|
|
593
|
+
v1.16.2 candidate — Backed by NERVIQ research and evidence.
|
|
594
|
+
</footer>
|
|
595
|
+
</div>
|
|
596
|
+
</body>
|
|
597
|
+
</html>
|