@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.
@@ -1,6 +1,32 @@
1
1
  # /verity-setup — Configure Verity for this project
2
2
 
3
- You are setting up Verity, a quality gate for AI-generated code. Follow every step below. Do not skip steps or reorder them.
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: Check prerequisites
37
+ ## Step 1: Confirm the deterministic phase ran
12
38
 
13
- 1. Verify `verity` CLI is installed: `which verity`
14
- - If missing: tell the user to run the installer: `curl -fsSL https://raw.githubusercontent.com/codacy/verity/main/install.sh | bash` and stop.
15
- 2. Verify `codacy-analysis` is installed: `which codacy-analysis`
16
- - If missing: tell the user to run `npm install -g @codacy/analysis-cli` and stop.
17
- 3. Check if `VERITY.md` already exists in the project root:
18
- - If it exists and user didn't pass `--force`: say "Already configured. Run `/verity-setup --force` to reconfigure." and stop.
19
- - If it exists with `--force`: continue (will overwrite).
20
- 4. Get the git remote URL: `git remote get-url origin`
21
- - If no remote: ask the user for a project identifier to use instead.
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: Ask analysis intensity
64
-
65
- Use the **AskUserQuestion** tool to ask:
122
+ ## Step 3: Read the choices already made
66
123
 
67
- > **Analysis intensity:**
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
- ## Step 3a: Choose analysis moments
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
- This decides **when** Verity reviews code. Use the **AskUserQuestion** tool with
81
- `multiSelect: true`:
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
- - If it reports **enabled**, don't re-ask tell the user telemetry is already on and continue
117
- (mention `verity telemetry uninstall` only if they want to turn it off).
118
- - If **disabled**, use the **AskUserQuestion** tool:
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
- > **Enable Claude Code cost & usage telemetry for this project?**
121
- > Verity can show cost, tokens, a per-agent / per-session / model breakdown, and a fleet cost
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
- Remember the answer; you act on it in Step 7b (the token must exist first). **Declining is
130
- fine and reversible** nothing is written, and the next `/verity-setup` re-offers it.
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 the user's choice 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.
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 + mode, select tools from the patterns reference `tool_recommendations` section. For existing tool configs, set the config_file path.
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: Verify authentication
498
+ ## Step 6: Check authentication
484
499
 
485
- Login now happens in `verity init` (an optional, skippable step), **not** here.
486
- This step only checks whether the user authenticated during init, and branches
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): The user authenticated during
504
- `verity init`. Continue to Step 7 — the Standard, config, and knowledge base
505
- will upload.
506
- - **Not authenticated / no token**: The user skipped login in `verity init` (or
507
- lacks write access). Verity runs in **local-only mode** the gate still runs on
508
- every stop and surfaces static findings, but nothing uploads and no
509
- history/org/repo data is stored. **Skip Steps 7 and 7b** (they require a token)
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
- Login is **provider-gated** (GitHub today): the CLI runs a GitHub App **device
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
- **One login covers every repository** the user can write to, not just this one.
526
- Re-running `verity login` is also how access to newly-granted repos is picked
527
- up, and how an expired verification is restored. If login reports this
528
- repository is **not covered**, the Verity GitHub App has not been granted
529
- access to it grant it, then re-run `verity login`.
530
-
531
- When authenticated, the user's `token` and `service_url` are stored in the single
532
- global credentials file `~/.verity/credentials` nothing secret is written into
533
- the repo. All subsequent `verity` upload commands work.
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 8b: Add knowledge base pointer and reflection instructions to CLAUDE.md
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
- ## Step 11: Show summary
658
+ ---
797
659
 
798
- Print a complete summary:
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 Setup Complete ===
665
+ === Verity setup complete ===
802
666
 
803
667
  Project: ${PROJECT_NAME}
804
668
  Languages: ${LANGUAGES}
805
669
  Frameworks: ${FRAMEWORKS}
806
670
  Architecture: ${ARCHITECTURE}
807
- Mode: ${MODE}
808
-
809
- Standard: v1 (4 quality, 7 security, N custom patterns)
810
- Tools: ${TOOL_LIST}
811
- Service: registered (project_id: ${PROJECT_ID})
812
- Hooks: installed (verity analyze + verity intent capture)
813
- Telemetry: ${TELEMETRY_STATUS} (enabled cost+usage at /usage, or disabled)
814
-
815
- Files created:
816
- .verity/standard.yaml Quality standard
817
- .codacy/codacy.config.json — Analysis CLI config
818
- VERITY.md Project quality overview
819
- .claude/settings.json — Hook configuration (verified)
820
- .claude/settings.local.json — Telemetry env (only if enabled; gitignored)
821
- .gitignore — Updated with Verity entries
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.