@codacy/verity-cli 0.31.1-experimental.02b82ff → 0.31.1-experimental.4cbb87c
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 +219 -3
- package/README.md +73 -3
- package/bin/verity.js +3789 -732
- package/data/skills/verity-setup/SKILL.md +143 -278
- package/data/skills/verity-setup/patterns-reference.yaml +79 -54
- package/package.json +1 -1
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
# /verity-setup — Configure Verity for this project
|
|
2
2
|
|
|
3
|
-
You are
|
|
3
|
+
You are finishing Verity's setup: the half that needs a model.
|
|
4
|
+
|
|
5
|
+
**`verity init` already ran the deterministic half** — prerequisites, the skills,
|
|
6
|
+
the Claude Code hooks (reconciled to the moments the user chose), `.gitignore`,
|
|
7
|
+
the CLAUDE.md instructions, the optional GitHub login, and telemetry. It recorded
|
|
8
|
+
the user's answers in `.verity/setup.json` and then handed off to you.
|
|
9
|
+
|
|
10
|
+
So: **do not re-ask what init asked, and do not re-write what init wrote.** Wiring
|
|
11
|
+
hooks or a `.gitignore` block here is how the two flows drifted apart before — the
|
|
12
|
+
skill reconciled hooks init had just installed, silently removing them.
|
|
13
|
+
|
|
14
|
+
⚠ **`verity init` NOW DERIVES THE STANDARD BY ITSELF**, so in most projects there
|
|
15
|
+
is nothing here left to do — the languages, the tool selection, the curated
|
|
16
|
+
pattern ids and `VERITY.md` are all lookups over this same catalogue, and the CLI
|
|
17
|
+
does them in about two seconds (`verity standard synthesize`). Step 1 will tell
|
|
18
|
+
you when that has already happened.
|
|
19
|
+
|
|
20
|
+
**You are here for the part a lookup cannot produce:** project-specific patterns —
|
|
21
|
+
"every route under `api/` uses the auth middleware", "RLS policies on all Supabase
|
|
22
|
+
tables". `custom_patterns` is left EMPTY by the CLI precisely so a model can
|
|
23
|
+
propose them from evidence rather than have them invented from a dependency list.
|
|
24
|
+
|
|
25
|
+
**What is yours when there is no Standard at all** (Step 1 says so, or `--force`):
|
|
26
|
+
1. Read the codebase and understand it (Step 2).
|
|
27
|
+
2. Synthesize `.verity/standard.yaml` from what you found (Step 4).
|
|
28
|
+
3. Write `.codacy/codacy.config.json` with curated, validated pattern ids (Step 5).
|
|
29
|
+
4. Upload both, seed the knowledge base, write `VERITY.md` (Steps 7–8).
|
|
4
30
|
|
|
5
31
|
**Reference files** (installed in this project at `.claude/skills/verity-setup/`):
|
|
6
32
|
- `patterns-reference.yaml` — Research-backed patterns catalog (quality, security, language-specific)
|
|
@@ -8,17 +34,50 @@ You are setting up Verity, a quality gate for AI-generated code. Follow every st
|
|
|
8
34
|
|
|
9
35
|
---
|
|
10
36
|
|
|
11
|
-
## Step 1:
|
|
37
|
+
## Step 1: Confirm the deterministic phase ran
|
|
12
38
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
39
|
+
```bash
|
|
40
|
+
verity doctor --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
One read gives you prerequisites, which phase is done, the user's recorded
|
|
44
|
+
answers, the hook wiring, and a `next` list. Branch on it:
|
|
45
|
+
|
|
46
|
+
- **`phases.init.done` is false** → `verity init` has not run in this project.
|
|
47
|
+
Run it (it is idempotent, and it is what installed this skill):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
verity init --yes --no-setup
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`--yes` takes the recommended answer for every question — use it only because
|
|
54
|
+
you are already inside a Claude Code session and cannot ask on init's terminal.
|
|
55
|
+
Tell the user which defaults were taken and that `verity init` (run by hand in a
|
|
56
|
+
terminal) is where those choices are made. `--no-setup` stops init from trying
|
|
57
|
+
to launch a second Claude Code session on top of this one.
|
|
58
|
+
- **`blocked` is true** → a required prerequisite is missing. Show the
|
|
59
|
+
`prerequisites[].remedy` lines and stop; nothing below can work.
|
|
60
|
+
- **`artifacts.standard` is true and `phases.setup.done` is true** → the
|
|
61
|
+
project already has a Standard, derived or adopted. Your job is the part the CLI
|
|
62
|
+
leaves empty: propose 2–5 `custom_patterns` from the codebase, show them, and on
|
|
63
|
+
the user's agreement add them to `.verity/standard.yaml` and run
|
|
64
|
+
`verity standard push`. Do NOT rewrite the rest of the Standard — `standard push`
|
|
65
|
+
auto-versions, so a full re-synthesis lands as the version everybody is then
|
|
66
|
+
held to.
|
|
67
|
+
- **`artifacts.standard` is true but `artifacts.analysisConfig` is false** → the
|
|
68
|
+
CLI derives this case too: `verity standard synthesize --config-only` rewrites
|
|
69
|
+
the config from the Standard already in place. Prefer that over doing it by hand.
|
|
70
|
+
⚠ Do NOT suggest `--force` here — it REPLACES the Standard, and the team already
|
|
71
|
+
agreed that one. If you do it by hand, **Step 5 only**, then `verity config push`.
|
|
72
|
+
- **`artifacts.verityMd` is true and the user did not pass `--force`** → already
|
|
73
|
+
configured. Say "Already configured. Run `/verity-setup --force` to
|
|
74
|
+
reconfigure." and stop.
|
|
75
|
+
- A **warn**-status prerequisite (Claude Code, `@codacy/analysis-cli`) is not
|
|
76
|
+
fatal. Mention it once — a missing analysis CLI means no static findings — and
|
|
77
|
+
continue.
|
|
78
|
+
|
|
79
|
+
Then get the git remote: `git remote get-url origin`. If there is none, ask the
|
|
80
|
+
user for a project identifier to use instead.
|
|
22
81
|
|
|
23
82
|
---
|
|
24
83
|
|
|
@@ -60,74 +119,30 @@ Record all findings. You will use them in the next steps.
|
|
|
60
119
|
|
|
61
120
|
---
|
|
62
121
|
|
|
63
|
-
## Step 3:
|
|
64
|
-
|
|
65
|
-
Use the **AskUserQuestion** tool to ask:
|
|
122
|
+
## Step 3: Read the choices already made
|
|
66
123
|
|
|
67
|
-
|
|
68
|
-
> - **lightweight** — Critical security only. Fastest (~3s). Good for rapid iteration.
|
|
69
|
-
> - **balanced** (recommended) — Security + quality. Good coverage (~8s).
|
|
70
|
-
> - **thorough** — All tools, all rules. Most comprehensive (~15s).
|
|
71
|
-
>
|
|
72
|
-
> Which mode? [balanced]
|
|
73
|
-
|
|
74
|
-
Default to `balanced` if the user says "default" or doesn't specify a preference.
|
|
75
|
-
|
|
76
|
-
---
|
|
124
|
+
From the `verity doctor --json` output in Step 1:
|
|
77
125
|
|
|
78
|
-
|
|
126
|
+
| Field | What it is | Where you use it |
|
|
127
|
+
|---|---|---|
|
|
128
|
+
| `answers.intensity` | `lightweight` \| `balanced` \| `thorough` | Step 4 (`process_constraints.analysis_mode`) and Step 5 (which tools/patterns) |
|
|
129
|
+
| `answers.moments` | `stop`, `pre-commit`, `pre-push` | Nothing to do — the hooks are already wired to exactly this |
|
|
130
|
+
| `answers.telemetry` | `enabled` \| `declined` \| `deferred` | Nothing to do — mention `deferred` once (see below) |
|
|
79
131
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
> **When should Verity review your code? (select all that apply)**
|
|
84
|
-
> - **On stop** (recommended) — after every agent turn. Fast feedback while you work.
|
|
85
|
-
> - **Before commit** — gates `git commit`; reviews the **staged** diff and blocks the commit on FAIL.
|
|
86
|
-
> - **Before push / PR** — gates `git push` and `gh pr create`; reviews the **to-be-pushed** commits and blocks on FAIL.
|
|
87
|
-
>
|
|
88
|
-
> Default: **On stop**
|
|
89
|
-
|
|
90
|
-
Notes to convey if asked:
|
|
91
|
-
- The git-moment gates run an independent reviewer at the boundary the customer cares
|
|
92
|
-
about; a FAIL blocks the commit/push so the agent fixes issues before they land
|
|
93
|
-
(capped at 2 review cycles so you're never stuck).
|
|
94
|
-
- These are **Claude Code** hooks (they fire when the agent runs `git commit`/`git push`),
|
|
95
|
-
not native git hooks — no `.git/hooks` files, no GitHub App.
|
|
96
|
-
- "On stop" alone matches today's behavior. Many teams pick **Before commit + Before push**
|
|
97
|
-
and turn **On stop** off to review only at real boundaries.
|
|
98
|
-
|
|
99
|
-
Map the selection to moment ids: On stop → `stop`, Before commit → `pre-commit`,
|
|
100
|
-
Before push/PR → `pre-push`. Remember this list; you apply it in **Step 9**.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Step 3b: Ask about cost & usage telemetry (opt-in)
|
|
105
|
-
|
|
106
|
-
Cost & usage observability is **opt-in** and **required** for the `/usage` dashboard — all
|
|
107
|
-
cost and token data comes from Claude Code's own OpenTelemetry export, so with telemetry off
|
|
108
|
-
the dashboard stays empty.
|
|
109
|
-
|
|
110
|
-
First check the current state (so you don't re-ask if it's already on):
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
verity telemetry check
|
|
114
|
-
```
|
|
132
|
+
**Do not ask these again.** They were asked on init's terminal, and the machine
|
|
133
|
+
state already reflects them.
|
|
115
134
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
135
|
+
If `answers.intensity` is `null` (a project set up before this file existed, or a
|
|
136
|
+
failed write), that is the only case where you ask — a single question, defaulting
|
|
137
|
+
to `balanced`:
|
|
119
138
|
|
|
120
|
-
> **
|
|
121
|
-
>
|
|
122
|
-
> tree — by receiving Claude Code's built-in **OpenTelemetry** export. This sends usage
|
|
123
|
-
> **metrics and traces only** (model names, token counts, USD cost, agent types, session IDs).
|
|
124
|
-
> It does **NOT** send your prompts, code, or tool input/output. Without it, the `/usage`
|
|
125
|
-
> dashboard stays empty.
|
|
126
|
-
> - **Yes** (recommended) — enable telemetry
|
|
127
|
-
> - **No** — skip (you can enable later with `verity telemetry install`)
|
|
139
|
+
> **Analysis intensity:** lightweight (critical security only, ~3s) ·
|
|
140
|
+
> **balanced** (security + quality, ~8s) · thorough (all tools, all rules, ~15s)
|
|
128
141
|
|
|
129
|
-
|
|
130
|
-
|
|
142
|
+
If `answers.telemetry` is `deferred`, the user asked for cost & usage telemetry
|
|
143
|
+
before a token existed. Say so once, and that `verity login` followed by
|
|
144
|
+
`verity telemetry install` finishes it. Do not run either — logging in is the
|
|
145
|
+
user's decision to make at a terminal.
|
|
131
146
|
|
|
132
147
|
---
|
|
133
148
|
|
|
@@ -149,9 +164,9 @@ Generate `.verity/standard.yaml` by filling in the template:
|
|
|
149
164
|
- Existing code patterns (e.g., "RLS policies on all Supabase tables")
|
|
150
165
|
- Each pattern needs: id, description, severity, rationale
|
|
151
166
|
|
|
152
|
-
5. **process_constraints**: Set `analysis_mode` to
|
|
167
|
+
5. **process_constraints**: Set `analysis_mode` to `answers.intensity` from Step 3. Keep `self_healing_limit: 2`. Leave the knowledge-system flags (`compound_enabled`, `memory_graph_enabled`, `memory_graph_budget_tokens`, `knowledge_injection_budget_tokens`, `finding_autosuppress_threshold`) and intent thresholds (`intent_fail_threshold`, `intent_warn_threshold`) at their template defaults — they're surfaced so users can tune later, not so you pick new values during setup.
|
|
153
168
|
|
|
154
|
-
6. **tool_configuration**: Based on detected languages +
|
|
169
|
+
6. **tool_configuration**: Based on detected languages + the intensity from Step 3, select tools from the patterns reference `tool_recommendations` section. For existing tool configs, set the config_file path.
|
|
155
170
|
|
|
156
171
|
Write the file to `.verity/standard.yaml`. Show the user a summary:
|
|
157
172
|
> **Standard synthesized:**
|
|
@@ -480,57 +495,47 @@ binary — Semgrep needs Opengrep installed separately, and at `--log-level erro
|
|
|
480
495
|
|
|
481
496
|
---
|
|
482
497
|
|
|
483
|
-
## Step 6:
|
|
498
|
+
## Step 6: Check authentication
|
|
484
499
|
|
|
485
|
-
Login
|
|
486
|
-
|
|
487
|
-
the rest of setup accordingly.
|
|
488
|
-
|
|
489
|
-
**If the user asks what signing in does or why it matters, tell them:**
|
|
490
|
-
- It confirms they have **write access to this repository** — the GitHub token is
|
|
491
|
-
used **once** to verify that, then discarded. Verity never stores it.
|
|
492
|
-
- It does **not** give Verity access to their code. Code checked by the gate is
|
|
493
|
-
analyzed **in memory and discarded** — Verity never stores their code.
|
|
494
|
-
- It is **required to store and access run history** for the repo (past results,
|
|
495
|
-
trends, and shareable reports).
|
|
496
|
-
- Skipping keeps Verity fully **local-only**: the gate still runs and shows
|
|
497
|
-
findings, but nothing is uploaded.
|
|
500
|
+
Login happens in `verity init` (an optional, skippable step), **not** here. This
|
|
501
|
+
step only checks whether it happened, and branches the rest of setup.
|
|
498
502
|
|
|
499
503
|
```bash
|
|
500
504
|
verity auth verify
|
|
501
505
|
```
|
|
502
506
|
|
|
503
|
-
- **Token valid** (prints the project name):
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
and continue to Step 8. Tell the user they can authenticate anytime to unlock
|
|
511
|
-
deep review, history, and shareable reports by running:
|
|
507
|
+
- **Token valid** (prints the project name): continue to Step 7 — the Standard,
|
|
508
|
+
config, and knowledge base will upload.
|
|
509
|
+
- **Not authenticated / no token**: the user skipped login in `verity init` (or
|
|
510
|
+
lacks write access). Verity runs in **local-only mode** — the gate still runs
|
|
511
|
+
and surfaces findings, but nothing uploads and no history is stored. **Skip
|
|
512
|
+
Step 7** (it requires a token) and continue to Step 8. Tell them they can
|
|
513
|
+
authenticate anytime with:
|
|
512
514
|
|
|
513
515
|
```bash
|
|
514
516
|
verity login # one GitHub login covers every repo you can write to
|
|
515
|
-
# or: verity init # re-runs init; offers the same auth prompt
|
|
516
517
|
```
|
|
517
518
|
|
|
518
|
-
|
|
519
|
-
flow** ("open https://github.com/login/device and enter code WXYZ-1234"),
|
|
520
|
-
proving the user has **write access** before the service issues a token. The
|
|
521
|
-
GitHub App requests only read-only permissions (Metadata + Email addresses);
|
|
522
|
-
the provider token is used once server-side to sweep the repositories the user
|
|
523
|
-
can write to, and is never persisted.
|
|
519
|
+
Then re-run `/verity-setup --force` to upload what was generated locally.
|
|
524
520
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
521
|
+
**If the user asks what signing in does or why it matters:**
|
|
522
|
+
- It confirms they have **write access to this repository** — the GitHub token is
|
|
523
|
+
used **once** for that check, then discarded. Verity never stores it.
|
|
524
|
+
- It does **not** give Verity access to their code. Code checked by the gate is
|
|
525
|
+
analyzed **in memory and discarded**.
|
|
526
|
+
- It is **required to store and access run history** (past results, trends,
|
|
527
|
+
shareable reports).
|
|
528
|
+
- Login is **provider-gated** (GitHub today) via a GitHub App **device flow**
|
|
529
|
+
("open https://github.com/login/device and enter code WXYZ-1234"). The App
|
|
530
|
+
requests only read-only permissions (Metadata + Email addresses).
|
|
531
|
+
- **One login covers every repository** the user can write to. Re-running
|
|
532
|
+
`verity login` is also how newly-granted repos are picked up and how an expired
|
|
533
|
+
verification is restored. If login reports this repository is **not covered**,
|
|
534
|
+
the Verity GitHub App has not been granted access to it — grant it, then re-run
|
|
535
|
+
`verity login`.
|
|
536
|
+
|
|
537
|
+
The token and service_url live in the single global file `~/.verity/credentials`
|
|
538
|
+
— nothing secret is written into the repo.
|
|
534
539
|
|
|
535
540
|
---
|
|
536
541
|
|
|
@@ -570,31 +575,6 @@ This derives a small set of descriptive memory nodes from what you already analy
|
|
|
570
575
|
|
|
571
576
|
---
|
|
572
577
|
|
|
573
|
-
## Step 7b: Enable telemetry (only if the user opted in at Step 3b)
|
|
574
|
-
|
|
575
|
-
> **Skip this step if the user is not authenticated** (local-only mode) — telemetry
|
|
576
|
-
> export requires the token. Note that `/usage` stays empty until they authenticate
|
|
577
|
-
> and run `verity telemetry install`.
|
|
578
|
-
|
|
579
|
-
If — and only if — the user said **Yes** in Step 3b, enable the Claude Code telemetry export
|
|
580
|
-
now (the token from Step 6 must already exist):
|
|
581
|
-
|
|
582
|
-
```bash
|
|
583
|
-
verity telemetry install
|
|
584
|
-
```
|
|
585
|
-
|
|
586
|
-
This writes the `OTEL_*` env block plus an `otelHeadersHelper` to `.claude/settings.local.json`
|
|
587
|
-
and points Claude Code's OpenTelemetry exporter at Verity's OTLP endpoint. No token is written to
|
|
588
|
-
the file — the helper (`verity telemetry headers`) resolves the project token from
|
|
589
|
-
`~/.verity/credentials` at session start, so the secret never lands in the repo. Tell the user it
|
|
590
|
-
takes effect on their **next** Claude Code session, that first metrics appear within ~60s of
|
|
591
|
-
activity, and point them at `/usage`.
|
|
592
|
-
|
|
593
|
-
If the user declined, skip this step and note that `/usage` will stay empty until they run
|
|
594
|
-
`verity telemetry install`.
|
|
595
|
-
|
|
596
|
-
---
|
|
597
|
-
|
|
598
578
|
## Step 8: Generate VERITY.md file
|
|
599
579
|
|
|
600
580
|
Create `VERITY.md` at the project root with this content:
|
|
@@ -633,125 +613,7 @@ Every time the coding agent stops, the Verity hook:
|
|
|
633
613
|
|
|
634
614
|
---
|
|
635
615
|
|
|
636
|
-
## Step
|
|
637
|
-
|
|
638
|
-
If `CLAUDE.md` exists (or `.claude/CLAUDE.md`), append these two blocks. If it doesn't exist, create it with these blocks. Do NOT overwrite existing content — append only.
|
|
639
|
-
|
|
640
|
-
```markdown
|
|
641
|
-
|
|
642
|
-
## Project Knowledge Base
|
|
643
|
-
> Read `.verity/memory/index.md` for accumulated project context, decisions, and conventions.
|
|
644
|
-
|
|
645
|
-
## Post-task reflection
|
|
646
|
-
When a task is complete (you've created a PR, the user says "done" or "ship it",
|
|
647
|
-
or the work is clearly finished), **draft the reflection yourself first** — 1–3
|
|
648
|
-
concrete things worth remembering (a decision, a gotcha, or a pattern), each
|
|
649
|
-
cited with the files / PR / commands / error-signatures it came from. Skip
|
|
650
|
-
entirely if nothing non-obvious happened.
|
|
651
|
-
|
|
652
|
-
Then, depending on how the session is running:
|
|
653
|
-
|
|
654
|
-
- **Interactive** (a person is at the keyboard): show your draft and ask one
|
|
655
|
-
question before recording —
|
|
656
|
-
|
|
657
|
-
> "Here's my reflection draft for the project memory: \<draft\>. Anything to
|
|
658
|
-
> confirm, correct, or add before I record it? (Say 'skip' to drop it.)"
|
|
659
|
-
|
|
660
|
-
Record the final text (with their corrections) via
|
|
661
|
-
`verity reflect --user-input "<final reflection>" --kind <kind>`. If they say
|
|
662
|
-
"skip", do not record.
|
|
663
|
-
|
|
664
|
-
- **Autonomous** (headless / CI / cron, or `VERITY_AUTONOMOUS=1`): record your
|
|
665
|
-
draft directly, never blocking —
|
|
666
|
-
`verity reflect --user-input "<your draft>" --kind <kind> --autonomous`.
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
These blocks enable two capabilities:
|
|
670
|
-
1. **Knowledge Base pointer** — agents can browse `.verity/memory/` for project context on demand (KNOWLEDGE-SYSTEM §8.2 Path B)
|
|
671
|
-
2. **Post-task reflection** — the compound moment where the agent drafts a cited reflection and the user confirms/corrects it (interactive) or it's auto-recorded (autonomous), entering the knowledge base (KNOWLEDGE-SYSTEM §9.3)
|
|
672
|
-
|
|
673
|
-
---
|
|
674
|
-
|
|
675
|
-
## Step 9: Wire the selected moments
|
|
676
|
-
|
|
677
|
-
Apply the moments the user chose in **Step 3a**. Pass the comma-separated moment ids
|
|
678
|
-
(always include the always-on intent hook automatically):
|
|
679
|
-
|
|
680
|
-
```bash
|
|
681
|
-
# Example: user chose On stop + Before commit + Before push
|
|
682
|
-
verity hooks install --moments stop,pre-commit,pre-push
|
|
683
|
-
```
|
|
684
|
-
|
|
685
|
-
`--moments` reconciles Verity's own hooks in `.claude/settings.json` to **exactly**
|
|
686
|
-
the selection (adding the git-moment gate, removing the Stop hook if unselected),
|
|
687
|
-
while preserving every non-Verity hook. The `verity intent capture` hook is always
|
|
688
|
-
installed. If the user picked only `stop` (the default), pass `--moments stop`.
|
|
689
|
-
|
|
690
|
-
Then verify:
|
|
691
|
-
|
|
692
|
-
```bash
|
|
693
|
-
verity hooks check
|
|
694
|
-
```
|
|
695
|
-
|
|
696
|
-
Expected output (for `stop,pre-commit,pre-push`):
|
|
697
|
-
```
|
|
698
|
-
[verity] Stop hook (verity analyze): installed
|
|
699
|
-
[verity] Intent hook (verity intent capture): installed
|
|
700
|
-
[verity] Git-moment gate (verity guard): installed [commit, push]
|
|
701
|
-
```
|
|
702
|
-
|
|
703
|
-
The git-moment gate is a single `PreToolUse(Bash)` hook (`verity guard`) that
|
|
704
|
-
intercepts `git commit` / `git push` / `gh pr create` and reviews the staged or
|
|
705
|
-
to-be-pushed diff before it lands.
|
|
706
|
-
|
|
707
|
-
---
|
|
708
|
-
|
|
709
|
-
## Step 10: Update .gitignore
|
|
710
|
-
|
|
711
|
-
Add these entries to `.gitignore` (create it if it doesn't exist, append if it does):
|
|
712
|
-
|
|
713
|
-
```
|
|
714
|
-
# Verity — machine-local state. Everything in .verity/ is ignored EXCEPT the
|
|
715
|
-
# shared standard and the knowledge graph, which are meant to be committed.
|
|
716
|
-
.verity/*
|
|
717
|
-
!.verity/standard.yaml
|
|
718
|
-
!.verity/memory/
|
|
719
|
-
.verity/memory/log.md
|
|
720
|
-
.claude/settings.local.json
|
|
721
|
-
```
|
|
722
|
-
|
|
723
|
-
This is a whitelist on purpose: `.verity/` accumulates state files over time
|
|
724
|
-
(`.snapshot/` holds byte-for-byte copies of analyzed files — including any
|
|
725
|
-
secret the gate just flagged — plus `.cache/`, `.logs/`, `.baseline`,
|
|
726
|
-
`.task-context`, session-suffixed `.last-analysis.*` files, and whatever comes
|
|
727
|
-
next). Enumerating them one by one is how `.snapshot/` ended up committed in a
|
|
728
|
-
real repo; ignoring everything and re-including the two shared artifacts means
|
|
729
|
-
a future state file can never repeat that.
|
|
730
|
-
|
|
731
|
-
**If the repo previously committed Verity state** (check with
|
|
732
|
-
`git ls-files .verity`), untrack everything except the shared artifacts once:
|
|
733
|
-
|
|
734
|
-
```bash
|
|
735
|
-
git rm -r --cached .verity
|
|
736
|
-
git add .verity/standard.yaml .verity/memory
|
|
737
|
-
```
|
|
738
|
-
|
|
739
|
-
`.claude/settings.local.json` is machine-local Claude Code config (telemetry endpoint + an
|
|
740
|
-
`otelHeadersHelper` reference — no token). `verity telemetry install` adds this entry
|
|
741
|
-
automatically.
|
|
742
|
-
|
|
743
|
-
Do NOT gitignore `.verity/standard.yaml` or `VERITY.md` — those should be committed.
|
|
744
|
-
|
|
745
|
-
**Commit the knowledge graph, but not its log.** The nodes under `.verity/memory/<domain>/` and `.verity/memory/index.md` are durable project knowledge meant to be committed and reviewed. But `.verity/memory/log.md` is an append-only, per-run timestamped activity log — it churns on every analysis and carries no reviewable content, so it is gitignored above. If a project already committed it, untrack it once with `git rm --cached .verity/memory/log.md`.
|
|
746
|
-
|
|
747
|
-
**No secrets live in the repo anymore.** The project token is stored only in the single global
|
|
748
|
-
file `~/.verity/credentials` (outside the repo, keyed by git remote), so there is no
|
|
749
|
-
`.verity/credentials` to ignore. If an older install left one behind, the CLI folds it into the
|
|
750
|
-
global store and removes it automatically on the next `verity` command.
|
|
751
|
-
|
|
752
|
-
---
|
|
753
|
-
|
|
754
|
-
## Step 10b: Offer a `.verityignore` (optional)
|
|
616
|
+
## Step 9: Offer a `.verityignore` (optional)
|
|
755
617
|
|
|
756
618
|
Only if the codebase analysis in Step 2 found committed generated output —
|
|
757
619
|
`dist/`, `build/`, vendored bundles, generated API clients, large fixture
|
|
@@ -793,32 +655,35 @@ Two things to tell the user, because both surprise people:
|
|
|
793
655
|
Excluded files are still named in every run's coverage ledger, and the share of
|
|
794
656
|
changed files they cover is reported — an ignore file is never silent.
|
|
795
657
|
|
|
796
|
-
|
|
658
|
+
---
|
|
797
659
|
|
|
798
|
-
|
|
660
|
+
## Step 10: Show summary
|
|
661
|
+
|
|
662
|
+
Report both halves, so the user sees one flow rather than two:
|
|
799
663
|
|
|
800
664
|
```
|
|
801
|
-
=== Verity
|
|
665
|
+
=== Verity setup complete ===
|
|
802
666
|
|
|
803
667
|
Project: ${PROJECT_NAME}
|
|
804
668
|
Languages: ${LANGUAGES}
|
|
805
669
|
Frameworks: ${FRAMEWORKS}
|
|
806
670
|
Architecture: ${ARCHITECTURE}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
Next: You should now be seeing the first analysis happening below. The hook will fire automatically every time your agent stops working on something.
|
|
671
|
+
Intensity: ${MODE} (chosen during verity init)
|
|
672
|
+
|
|
673
|
+
This step wrote:
|
|
674
|
+
.verity/standard.yaml — Standard v1 (4 quality, 7 security, N custom patterns)
|
|
675
|
+
.codacy/codacy.config.json — ${TOOL_LIST}, curated patterns, validated
|
|
676
|
+
VERITY.md — project quality overview
|
|
677
|
+
.verityignore — only if you created one in Step 9
|
|
678
|
+
|
|
679
|
+
Already in place from verity init:
|
|
680
|
+
Hooks: ${MOMENTS} (+ intent, baseline, compact, session-end)
|
|
681
|
+
Telemetry: ${TELEMETRY_STATUS}
|
|
682
|
+
Uploads: ${authenticated ? "on — runs & memory sync to Verity" : "off — local-only mode"}
|
|
683
|
+
|
|
684
|
+
Next: the gate now runs at the moments you chose. You should see the first
|
|
685
|
+
analysis below.
|
|
824
686
|
```
|
|
687
|
+
|
|
688
|
+
Run `verity doctor` if anything above looks wrong — it reports the real state of
|
|
689
|
+
every part of the install.
|