arkgate 4.2.1 → 4.4.0

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.
Files changed (63) hide show
  1. package/CHANGELOG.md +85 -3
  2. package/README.md +24 -8
  3. package/bin/ark-check-runtime.mjs +16 -1
  4. package/bin/ark-mcp-runtime.mjs +64 -0
  5. package/bin/ark.mjs +55 -1
  6. package/bin/lib/adapter-contract.mjs +88 -5
  7. package/bin/lib/agent-projection-command.mjs +396 -0
  8. package/bin/lib/agent-projection.mjs +319 -0
  9. package/bin/lib/agent-skills-package.mjs +266 -0
  10. package/bin/lib/baseline-key.mjs +32 -0
  11. package/bin/lib/ci-and-commands.mjs +55 -5
  12. package/bin/lib/diagnostic-catalog.mjs +155 -0
  13. package/bin/lib/doctor-plan.mjs +25 -0
  14. package/bin/lib/html-report-advisories.mjs +33 -0
  15. package/bin/lib/html-report-depth.mjs +24 -0
  16. package/bin/lib/improvement-compass-doctor.mjs +106 -0
  17. package/bin/lib/improvement-compass.mjs +630 -0
  18. package/bin/lib/status-command.mjs +369 -0
  19. package/bin/lib/status-manifest.mjs +431 -0
  20. package/dist/eslint/index.cjs +3 -3
  21. package/dist/eslint/index.js +3 -3
  22. package/dist/index.cjs +46 -11
  23. package/dist/index.d.ts +886 -6
  24. package/dist/index.js +46 -11
  25. package/docs/README.md +9 -8
  26. package/docs/agent-guide.md +128 -14
  27. package/docs/configuration.md +7 -0
  28. package/docs/develop.md +12 -1
  29. package/docs/diagnostics.md +606 -0
  30. package/docs/package-surface.md +44 -31
  31. package/docs/product-voice.md +71 -0
  32. package/docs/use.md +60 -1
  33. package/package.json +7 -1
  34. package/schemas/ark.analysis-result.schema.json +14 -1
  35. package/schemas/ark.status-manifest.schema.json +270 -0
  36. package/server.json +2 -2
  37. package/templates/agent-skills/README.md +59 -0
  38. package/templates/agent-skills/ark-adopt/SKILL.md +191 -0
  39. package/templates/agent-skills/ark-architect/SKILL.md +195 -0
  40. package/templates/agent-skills/ark-autopilot/SKILL.md +262 -0
  41. package/templates/agent-skills/ark-contract/SKILL.md +156 -0
  42. package/templates/agent-skills/ark-coverage/SKILL.md +187 -0
  43. package/templates/agent-skills/ark-explain/SKILL.md +230 -0
  44. package/templates/agent-skills/ark-explore/SKILL.md +397 -0
  45. package/templates/agent-skills/ark-fix/SKILL.md +205 -0
  46. package/templates/agent-skills/ark-loop/SKILL.md +200 -0
  47. package/templates/agent-skills/ark-place/SKILL.md +182 -0
  48. package/templates/agent-skills/ark-runtime/SKILL.md +127 -0
  49. package/templates/agent-skills/ark-think/SKILL.md +153 -0
  50. package/templates/agent-skills/ark-upgrade/SKILL.md +238 -0
  51. package/templates/skills/ark-adopt.md +20 -0
  52. package/templates/skills/ark-architect.md +21 -1
  53. package/templates/skills/ark-autopilot.md +25 -5
  54. package/templates/skills/ark-contract.md +20 -0
  55. package/templates/skills/ark-coverage.md +20 -0
  56. package/templates/skills/ark-explain.md +20 -0
  57. package/templates/skills/ark-explore.md +23 -3
  58. package/templates/skills/ark-fix.md +22 -2
  59. package/templates/skills/ark-loop.md +22 -2
  60. package/templates/skills/ark-place.md +20 -0
  61. package/templates/skills/ark-runtime.md +7 -0
  62. package/templates/skills/ark-think.md +20 -0
  63. package/templates/skills/ark-upgrade.md +20 -0
package/docs/README.md CHANGED
@@ -19,17 +19,18 @@ Product site: [arkgate.online](https://www.arkgate.online/) · npm: [`arkgate`](
19
19
  ### Use (product)
20
20
  | Doc | What it is |
21
21
  |-----|------------|
22
- | [use.md](use.md) | One flow: install → doctor → day-to-day |
22
+ | [use.md](use.md) | One flow: install → doctor (+ improvement compass) → day-to-day |
23
23
  | [enthusiast/](enthusiast/README.md) | Tutorials and plain-language track |
24
24
  | [demos/](demos/) | Short end-to-end demos |
25
- | [product-voice.md](product-voice.md) | How ArkGate should sound in English UI |
25
+ | [product-voice.md](product-voice.md) | How ArkGate should sound in English UI (compass = lenses, not scores) |
26
26
 
27
27
  ### Develop (integrate)
28
28
  | Doc | What it is |
29
29
  |-----|------------|
30
30
  | [develop.md](develop.md) | Gates, hosts, config, brownfield, power tools |
31
31
  | [ai-gates.md](ai-gates.md) | Install hooks / MCP / CI per host |
32
- | [agent-guide.md](agent-guide.md) | Agent, CLI, and MCP reference |
32
+ | [agent-guide.md](agent-guide.md) | Agent, CLI, and MCP reference (incl. `ark status --json` / MCP `ark_status`) |
33
+ | [diagnostics.md](diagnostics.md) | Public diagnostic `ruleId` catalog (why / fix anchors) |
33
34
  | [configuration.md](configuration.md) | `ark.config.json` contract |
34
35
  | [brownfield-adoption.md](brownfield-adoption.md) | Existing messy repos |
35
36
  | [package-surface.md](package-surface.md) | Stable vs experimental package surface |
@@ -52,15 +53,15 @@ These are **not** the day-to-day product path. They stay in the repo for evidenc
52
53
  | Area | Path |
53
54
  |------|------|
54
55
  | Release notes (by version) | [releases/](releases/) · [CHANGELOG.md](../CHANGELOG.md) |
55
- | Epic plans (seeded + shipped) | [plans/](plans/) · latest shipped: [workspace identity and activation truth](plans/workspace-identity-activation-truth/README.md) (Phase WI; **4.2.0 published**) |
56
+ | Epic plans (seeded + shipped) | [plans/](plans/) maintainer seeds (e.g. improvement compass for **4.4.0**, agent contract surface for **4.3.0**). Product how-to stays in use/develop/agent-guide; plans are not required reading to use the package. |
56
57
  | Claims audit | [audit/claims-matrix.md](audit/claims-matrix.md) |
57
58
  | Field adoption kit (scaffolding, not closed) | [field/](field/) |
58
59
  | Runtime hardening (experimental) | [production-hardening.md](production-hardening.md) |
59
60
 
60
- Prepared candidate: [releases/4.2.1.md](releases/4.2.1.md) (`arkgate@4.2.1`, not published).
61
-
62
- Current published: [releases/4.2.0.md](releases/4.2.0.md) (`arkgate@4.2.0` on npm `latest`).
63
- Previous: [releases/4.1.1.md](releases/4.1.1.md) (`arkgate@4.1.1`) · [releases/4.1.0.md](releases/4.1.0.md) (`arkgate@4.1.0`).
61
+ Current published: [releases/4.3.0.md](releases/4.3.0.md) (`arkgate@4.3.0` on npm `latest`).
62
+ Next prepare: [releases/4.4.0.md](releases/4.4.0.md) (Status: prepared — not on npm until publish verify).
63
+ Prior: [releases/4.2.1.md](releases/4.2.1.md) (`arkgate@4.2.1`).
64
+ Previous: [releases/4.2.0.md](releases/4.2.0.md) (`arkgate@4.2.0`) · [releases/4.1.1.md](releases/4.1.1.md) (`arkgate@4.1.1`).
64
65
  Previous major: [releases/4.0.0.md](releases/4.0.0.md) (`arkgate@4.0.0`).
65
66
  Config: [configuration.md](configuration.md) · Agent skills dual-plane: [agent-guide.md](agent-guide.md).
66
67
 
@@ -38,13 +38,19 @@ feature work. Full `/ark-*` skills are **expert depth** and label residual **`[L
38
38
  npx ark-check --install-agent-gates --skills-only --force
39
39
  ```
40
40
 
41
- **Write-path honesty:** Claude/Grok/Antigravity can hard-block listed PreToolUse ops when
42
- installed and trusted. Cursor/Codex/OpenCode remain **advisory at write**. For every host, the
43
- repository-wide hard boundary is a **required GitHub status context** that runs
44
- `arkgate-check --strict-merge` (alias `ark-check --strict-merge`) the CLI name is not the
45
- status context name. Never claim Cursor/Codex/OpenCode hard write. Soft-write alone does not mean
46
- the project is unfinished; doctor keeps it as an environment residual. See [ai-gates.md](ai-gates.md)
47
- and the README host matrix.
41
+ ### Write-path honesty
42
+
43
+ Claude/Grok/Antigravity can hard-block listed PreToolUse ops when installed and trusted.
44
+ Cursor/Codex/OpenCode remain **advisory at write**. For every host, the repository-wide hard
45
+ boundary is a **required GitHub status context** that runs `arkgate-check --strict-merge` (alias
46
+ `ark-check --strict-merge`) the CLI name is not the status context name. Never claim
47
+ Cursor/Codex/OpenCode hard write. Soft-write alone does not mean the project is unfinished; doctor
48
+ keeps it as an environment residual. See [ai-gates.md](ai-gates.md) and the README host matrix.
49
+
50
+ Surface the same plane from the CLI: pair **`ark status --json`** (activation facts) with
51
+ **`ark-check --doctor`** (`doctor.writePath`) — advisory local write on soft hosts → **required**
52
+ merge status as the hard boundary. Product path: [use.md — What you get](use.md#what-you-get) ·
53
+ [README host matrix](../README.md#host-enforcement-support).
48
54
 
49
55
  **MCP project identity (4.2.0):** before trusting project-specific MCP evidence, call
50
56
  `ark_identity` with `project.expectedRoot` set to the exact project's absolute root. Reuse that
@@ -53,6 +59,72 @@ path is authoritative only when that matching project id is also supplied. Only
53
59
  `binding.status: "matched"` with `authoritative: true` is authoritative; calls that omit the
54
60
  expectation remain compatible but are explicitly `unverified`.
55
61
 
62
+ ### Improvement compass (doctor)
63
+
64
+ `ark-check --doctor` (human + `--json`) projects residual architecture work as a closed set of
65
+ **lenses** (`doctor.improvementCompass`). Always `notAScore: true`. Never feeds `valid`,
66
+ strict-merge exit, or plan `goal.met`. Out-of-scope lenses (scalability, app security tooling,
67
+ full resilience) stay honest. Product path: [use.md — Improvement compass](use.md#improvement-compass-not-a-score).
68
+ Package surface row: [package-surface.md](package-surface.md).
69
+
70
+ **Status snapshot:** the status schema may carry a thin optional residual-id slice when Tooling
71
+ passes it through, but **`ark status --json` does not compute the compass yet** — use doctor for
72
+ residual lenses. Residual never changes status `nextAction` by itself.
73
+
74
+ Compact router and skills read residual lenses in plain language; green edges alone are never
75
+ “architecture finished” while residual remains.
76
+
77
+ ### Unified status snapshot (4.3)
78
+
79
+ For one machine-readable session/project manifest (identity binding, honest write-path activation,
80
+ last-check summary, rules residual counts, primary next action) use:
81
+
82
+ ```bash
83
+ npx ark status --json
84
+ # optional identity check (matched vs stale):
85
+ npx ark status --json --expected-root /abs/project/root
86
+ ```
87
+
88
+ MCP parity tool: **`ark_status`** (same envelope; pass `project.expectedRoot` after `ark_identity`).
89
+ Schema: `arkgate/schema/status-manifest`. Never prompts; under `CI=1` JSON is forced. **Not a
90
+ score** — counts and verdicts only. Write-path interpretation of activation vs merge teeth is under
91
+ [Write-path honesty](#write-path-honesty).
92
+
93
+ **Stable finding refs (4.3):** every factory-emitted diagnostic on CLI JSON, MCP analysis
94
+ envelopes, and opt-in hook repair payloads (`ARK_REPAIR_JSON`) carries:
95
+
96
+ | Field | Meaning |
97
+ |-------|---------|
98
+ | `findingRef` | Compact multi-turn id (`fnv1a-` + 8 hex). Re-address the same finding without fuzzy text match. |
99
+ | `targetKey` | Baseline-compatible freeze identity (`ruleId\|file\|from\|to\|target`, with `#N` for duplicates). **Same plane as `--baseline`** — refs never orphan freezes. |
100
+ | `docsCodePath` | Package-relative catalog anchor (`docs/diagnostics.md#RULE_ID`). |
101
+
102
+ Line/message drift across agent turns does not change `findingRef` / `targetKey`. Schema:
103
+ `arkgate/schema/analysis-result` **`1.5`**. Multi-turn fixture:
104
+ `tests/fixtures/finding-refs/multi-turn-stability.json`.
105
+
106
+ **Version-matched agent projection (4.3):** install/upgrade embeds a managed AGENTS.md
107
+ block stamped with the installed `arkgate` version plus a compact contract summary (layers +
108
+ diagnostic short list). Regenerate after package upgrade without clobbering customized regions
109
+ outside the markers:
110
+
111
+ ```bash
112
+ npx ark agents-md # preview
113
+ npx ark agents-md --write # merge managed block only
114
+ npx ark agents-md --check # exit 1 on version/stamp drift
115
+ npx ark agents-md --stdout # print block only
116
+ ```
117
+
118
+ The projection is **non-authoritative**. Enforcement is `ark-check` / host write hooks / required
119
+ CI (`--strict-merge`) — never AGENTS.md, skills, or this projection. Root API:
120
+ `buildAgentProjectionBlock` / `mergeAgentProjectionDocument`.
121
+
122
+ **Agent Skills packaging (4.3):** the same frozen **13** skill names are also shipped as
123
+ an Agent Skills–compatible package under `templates/agent-skills/<name>/SKILL.md` for hosts that
124
+ install via `npx skills` (in addition to Ark `--install-agent-gates`). See
125
+ [Install skills — Ark and ecosystem](#install-skills-ark-and-ecosystem). No new skill names.
126
+ Skill bodies coach residual lenses and anti false-done; they never enforce.
127
+
56
128
  ## Architecture playbook and `ark-check --recommend`
57
129
 
58
130
  Before generating project structure, agents should read the **tool-agnostic application
@@ -486,6 +558,40 @@ monotonic across ArkGate 4.2.0+ installers. Pre-4.2 binaries ignore its metadata
486
558
  upgrade legacy repos before they write the optional home catalog. See
487
559
  [AI gates — Codex skill catalog](ai-gates.md#codex-skill-catalog-skillmd-not-flat-prompts).
488
560
 
561
+ ### Install skills — Ark and ecosystem {#install-skills-ark-and-ecosystem}
562
+
563
+ The same **13** skill names ship two ways. **No new skill names** (4.3 freeze): packaging and
564
+ routing only.
565
+
566
+ | Channel | What it installs | When to use |
567
+ |---------|------------------|-------------|
568
+ | **Ark install** | Host skill catalogs + optional hooks/MCP/CI wiring via `--install-agent-gates` | Default for projects that want write-path gates and version-stamped managed catalogs |
569
+ | **Agent Skills ecosystem** (`npx skills`) | The Agent Skills layout only (`<name>/SKILL.md`) into host skill dirs | Hosts already on the open skills channel; discovery without running Ark install |
570
+
571
+ **Canonical authoring source:** flat `templates/skills/<name>.md` (Ark install reads these).
572
+
573
+ **Agent Skills package root** (generated, 1:1 content): `templates/agent-skills/<name>/SKILL.md`
574
+ — ships in the npm tarball under `templates/`. Drift guard: `npm run check:agent-skills`.
575
+
576
+ ```bash
577
+ # Ark — expert skill pack (preferred when you also want gates)
578
+ npx ark-check --install-agent-gates --skills-only --force
579
+
580
+ # Ecosystem — from installed package or a git checkout
581
+ npx skills add ./node_modules/arkgate/templates/agent-skills
582
+ npx skills add ./templates/agent-skills
583
+ # GitHub tree:
584
+ npx skills add https://github.com/pedroknigge/arkgate/tree/main/templates/agent-skills
585
+ # List without installing:
586
+ npx skills add ./node_modules/arkgate/templates/agent-skills --list
587
+ ```
588
+
589
+ Frozen names: `ark-adopt`, `ark-architect`, `ark-autopilot`, `ark-contract`, `ark-coverage`,
590
+ `ark-explain`, `ark-explore`, `ark-fix`, `ark-loop`, `ark-place`, `ark-runtime`, `ark-think`,
591
+ `ark-upgrade`. Root API: `ARK_SKILL_NAMES` / `validateAgentSkillsPackage` (Domain
592
+ `agentSkillsPackage`). Skills are **process** depth — they never decide pass/fail; enforcement
593
+ remains `ark-check` / hooks / CI.
594
+
489
595
  For an optional executable adoption check, copy the shipped template into a Vitest/Jest suite
490
596
  after installing ArkGate:
491
597
 
@@ -646,6 +752,11 @@ Relevant violation codes include `LAYER_IMPORT_VIOLATION`, `FORBIDDEN_GLOBAL`,
646
752
  `FORBIDDEN_SUBSTRING`, `FORBIDDEN_IMPORT`, `POLICY_VIOLATION`, `UNKNOWN_INTENT`,
647
753
  `LAYER_REFERENCE_VIOLATION`, `EXTENSION_ERROR`, and `AST_ANALYZER_ERROR`.
648
754
 
755
+ **Full catalog (ACS02):** every public `ruleId` with why/fix anchors lives in
756
+ [diagnostics.md](diagnostics.md) (stable fragment `#RULE_ID`) and the root API
757
+ `DIAGNOSTIC_CATALOG` / `getDiagnosticCatalogEntry` / `diagnosticDocsPath`. Agents must not
758
+ invent free-form rule ids outside that closed vocabulary.
759
+
649
760
  Use `ark-check` in CI for repository-level checks that need real file paths:
650
761
 
651
762
  ```bash
@@ -893,7 +1004,7 @@ npx ark-mcp --root . --config ark.config.json [--manifest ark.manifest.json]
893
1004
  this resource `unverified` and non-authoritative. It never substitutes for `ark_manifest` in
894
1005
  a project verdict.
895
1006
 
896
- The server exposes these twelve tools. Every tool accepts the additive
1007
+ The server exposes these thirteen tools. Every tool accepts the additive
897
1008
  `project: { expectedRoot, expectedProjectId? }` input:
898
1009
 
899
1010
  | Tool | Primary input and purpose |
@@ -910,6 +1021,7 @@ The server exposes these twelve tools. Every tool accepts the additive
910
1021
  | `ark_recommend` | No args: return the deterministic application-shape plan used by `ark-check --recommend --json`. |
911
1022
  | `ark_suggest_include` | No args: propose TypeScript/JavaScript include roots from workspaces and nested packages. |
912
1023
  | `ark_rules_inventory` | No args: inventory possible intra-layer rules using configured layer evidence when available; test/fixture/seed/migration surfaces and narrow technical constants are excluded from extraction pilots. Counts are not a score. |
1024
+ | `ark_status` | No non-project args: return the unified status-manifest envelope (identity binding, honest write-path activation, last-check summary, rules residual counts, primary next action). Same shape as `ark status --json`. Prefer after `ark_identity`. Never a score. |
913
1025
 
914
1026
  Every project-bound tool success, tool error, and JSON-RPC error data carries:
915
1027
 
@@ -957,13 +1069,15 @@ when the binding is matched, analysis is complete, the graph is valid, coverage
957
1069
  are active. The underlying CLI fields remain present for diagnosis, but are not an authoritative
958
1070
  whole-project green on their own.
959
1071
 
960
- Current diagnostic envelopes use schema `1.4` and require `mode`,
1072
+ Current diagnostic envelopes use schema `1.5` and require `mode`,
961
1073
  `completeness: "complete" | "partial" | "unavailable"`, and structured
962
- `completenessReasons`. Resolved results expose `policyHash`, `resolverIdentity`, `factsHash`, and
963
- `candidateTreeHash`; MCP `ark_check` mirrors CLI `ok`. Single-file `validate_code`,
964
- `ark_prepare_write`, and `createAICodeGate().validate()` are named lexical compatibility surfaces:
965
- they may expose `lexicalValid`, but remain partial and `valid:false` until complete-candidate
966
- preflight. Consumer-owned 1.0/1.1/1.2 `AdapterResult` values remain accepted by the public union.
1074
+ `completenessReasons`. Factory-emitted diagnostics carry stable `findingRef`, baseline-compatible
1075
+ `targetKey`, and `docsCodePath` (ACS06). Resolved results expose `policyHash`, `resolverIdentity`,
1076
+ `factsHash`, and `candidateTreeHash`; MCP `ark_check` mirrors CLI `ok`. Single-file
1077
+ `validate_code`, `ark_prepare_write`, and `createAICodeGate().validate()` are named lexical
1078
+ compatibility surfaces: they may expose `lexicalValid`, but remain partial and `valid:false` until
1079
+ complete-candidate preflight. Consumer-owned 1.0–1.4 `AdapterResult` values remain accepted by the
1080
+ public union (refs optional on those older envelopes).
967
1081
 
968
1082
  For hook-based enforcement, `ark-mcp --hook` runs one-shot: it reads a PreToolUse payload
969
1083
  from stdin, validates the post-edit file content, and exits `2` with violations on stderr
@@ -94,6 +94,13 @@ Layer fields:
94
94
  (`network`, `filesystem`, `clock`, `randomness`, `environment`, `process`, `persistence`);
95
95
  `pure: true` is the shorthand that denies all seven. Absence changes no verdict.
96
96
 
97
+ **Day-to-day maintenance:** new modules that land under an existing layer `patterns` glob need **no**
98
+ config edit. Edit `ark.config.json` when you add a layer, change who may import whom, cover an
99
+ ungoverned path under `include`, or adjust capabilities / forbidden globals. Optional ArkRules
100
+ `invariants[].appliesTo` globs only narrow *which files* a named invariant considers inside that
101
+ layer — they do not replace Layers placement. Empty `appliesTo: []` fails closed; zero-match globs
102
+ warn or fail by mode (`ARKRULE_SCOPE_EMPTY`). Product path: [use.md — New modules vs config edits](use.md#new-modules-vs-config-edits).
103
+
97
104
  `forbiddenGlobals: ["process"]` covers the ambient binding plus exact runtime imports from
98
105
  `process` and `node:process`. It does not imply the broader `process` capability wall: subpaths
99
106
  and `child_process` remain outside this narrow dual, and statement-level `import type` /
package/docs/develop.md CHANGED
@@ -68,6 +68,11 @@ can show `runtimeObserved: true` even when branch-protection policy is plan-unav
68
68
  | ArkRules (structure + invariants) | [configuration.md](configuration.md#arkrules-intra-layer-opt-in) · `arkRules` / `arkrules/*` · skill `/ark-contract` |
69
69
  | Rules inventory (brownfield) | `arkgate-check --rules-inventory` · MCP `ark_rules_inventory` |
70
70
  | Stable package API | [package-surface.md](package-surface.md) |
71
+ | Diagnostic codes (`ruleId` why/fix) | [diagnostics.md](diagnostics.md) · root `DIAGNOSTIC_CATALOG` |
72
+ | Session / project status snapshot | `ark status --json` · MCP `ark_status` · [agent-guide](agent-guide.md) · schema `arkgate/schema/status-manifest` |
73
+ | Version-matched AGENTS projection | `ark agents-md` · [agent-guide](agent-guide.md) · **non-authoritative** (never enforces) |
74
+ | Stable finding refs (`findingRef` / `targetKey`) | analysis-result schema **1.5** · [agent-guide](agent-guide.md) · [package-surface](package-surface.md) |
75
+ | Agent Skills layout (same 13 names) | `templates/agent-skills/` · [agent-guide](agent-guide.md#install-skills-ark-and-ecosystem) · `npx skills add …` |
71
76
  | Where new code goes | MCP `ark_place` · skill `/ark-place` (respects layer **and** structure sensors) |
72
77
  | Preflight multi-file change | MCP `ark_prepare_change` · `ark preflight --changes …` |
73
78
  | Write snippet preflight | MCP `ark_prepare_write` |
@@ -95,9 +100,12 @@ Sensors:
95
100
  ```bash
96
101
  npx arkgate-check --plan
97
102
  npx arkgate-check --coverage
98
- npx arkgate-check --doctor --json
103
+ npx arkgate-check --doctor --json # improvementCompass (notAScore lenses) + status light
99
104
  ```
100
105
 
106
+ Doctor residual lenses never flip `valid` / strict-merge alone. Product path:
107
+ [use.md — Improvement compass](use.md#improvement-compass-not-a-score).
108
+
101
109
  Agent reference (tools, skills, dual path): [agent-guide.md](agent-guide.md).
102
110
 
103
111
  ---
@@ -117,6 +125,9 @@ npx arkgate-check --doctor --json
117
125
  npx arkgate-check --plan --json
118
126
  npx arkgate-check --coverage
119
127
  npx arkgate-check --baseline
128
+ npx arkgate status --json # session/project snapshot (not a score)
129
+ npx arkgate agents-md # preview managed AGENTS block
130
+ npx arkgate agents-md --write # embed/refresh projection markers
120
131
  npx arkgate preflight --changes changes.json --json
121
132
  npx arkgate upgrade --json # managed content preview
122
133
  npx arkgate upgrade --apply