everything-claude-code 1.4.3

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +739 -0
  3. package/README.zh-CN.md +523 -0
  4. package/crates/ecc-kernel/Cargo.lock +160 -0
  5. package/crates/ecc-kernel/Cargo.toml +15 -0
  6. package/crates/ecc-kernel/src/main.rs +710 -0
  7. package/docs/ecc.md +117 -0
  8. package/package.json +45 -0
  9. package/packs/blueprint.json +8 -0
  10. package/packs/forge.json +16 -0
  11. package/packs/instinct.json +16 -0
  12. package/packs/orchestra.json +15 -0
  13. package/packs/proof.json +8 -0
  14. package/packs/sentinel.json +8 -0
  15. package/prompts/ecc/patch.md +25 -0
  16. package/prompts/ecc/plan.md +28 -0
  17. package/schemas/ecc.apply.schema.json +35 -0
  18. package/schemas/ecc.config.schema.json +37 -0
  19. package/schemas/ecc.lock.schema.json +34 -0
  20. package/schemas/ecc.patch.schema.json +25 -0
  21. package/schemas/ecc.plan.schema.json +32 -0
  22. package/schemas/ecc.run.schema.json +67 -0
  23. package/schemas/ecc.verify.schema.json +27 -0
  24. package/schemas/hooks.schema.json +81 -0
  25. package/schemas/package-manager.schema.json +17 -0
  26. package/schemas/plugin.schema.json +13 -0
  27. package/scripts/ecc/catalog.js +82 -0
  28. package/scripts/ecc/config.js +43 -0
  29. package/scripts/ecc/diff.js +113 -0
  30. package/scripts/ecc/exec.js +121 -0
  31. package/scripts/ecc/fixtures/basic/patches/impl-core.diff +8 -0
  32. package/scripts/ecc/fixtures/basic/patches/tests.diff +8 -0
  33. package/scripts/ecc/fixtures/basic/plan.json +23 -0
  34. package/scripts/ecc/fixtures/unauthorized/patches/impl-core.diff +8 -0
  35. package/scripts/ecc/fixtures/unauthorized/plan.json +15 -0
  36. package/scripts/ecc/git.js +139 -0
  37. package/scripts/ecc/id.js +37 -0
  38. package/scripts/ecc/install-kernel.js +344 -0
  39. package/scripts/ecc/json-extract.js +301 -0
  40. package/scripts/ecc/json.js +26 -0
  41. package/scripts/ecc/kernel.js +144 -0
  42. package/scripts/ecc/lock.js +36 -0
  43. package/scripts/ecc/paths.js +28 -0
  44. package/scripts/ecc/plan.js +57 -0
  45. package/scripts/ecc/project.js +37 -0
  46. package/scripts/ecc/providers/codex.js +168 -0
  47. package/scripts/ecc/providers/index.js +23 -0
  48. package/scripts/ecc/providers/mock.js +49 -0
  49. package/scripts/ecc/report.js +127 -0
  50. package/scripts/ecc/run.js +105 -0
  51. package/scripts/ecc/validate.js +325 -0
  52. package/scripts/ecc/verify.js +125 -0
  53. package/scripts/ecc.js +532 -0
  54. package/scripts/lib/package-manager.js +390 -0
  55. package/scripts/lib/session-aliases.js +432 -0
  56. package/scripts/lib/session-manager.js +396 -0
  57. package/scripts/lib/utils.js +426 -0
package/docs/ecc.md ADDED
@@ -0,0 +1,117 @@
1
+ # ECC CLI (Engineering Change Conveyor)
2
+
3
+ ECC turns an "AI-assisted coding" request into a **replayable, auditable, verifiable** engineering workflow:
4
+
5
+ `init -> doctor -> plan -> exec -> verify -> run`
6
+
7
+ Core properties:
8
+ - **Code sovereignty**: providers output only structured JSON + unified diff patches; ECC applies patches.
9
+ - **Isolation**: `exec/verify` run in an **external git worktree**, so your main working tree is never polluted.
10
+ - **Evidence chain**: all artifacts are written under `.ecc/runs/<runId>/`.
11
+
12
+ ---
13
+
14
+ ## Install
15
+
16
+ ### Option A: Run from source (this repo)
17
+
18
+ ```bash
19
+ node scripts/ecc.js --help
20
+ ```
21
+
22
+ ## Rust Kernel (Optional, Low-Memory)
23
+
24
+ ECC can offload the heavy "kernel" operations (worktree / patch apply / verify command runner)
25
+ to a small Rust binary: `ecc-kernel`.
26
+
27
+ ### Prebuilt (no Rust required)
28
+
29
+ When installed via npm, ECC runs a `postinstall` that tries to download a prebuilt `ecc-kernel`
30
+ from the GitHub release matching your `package.json` version tag (`vX.Y.Z`).
31
+
32
+ Controls:
33
+ - `ECC_KERNEL_INSTALL=0` disables download
34
+ - `ECC_KERNEL_INSTALL=required` fails install if download fails
35
+ - `ECC_KERNEL_BASE_URL=...` overrides download base URL
36
+
37
+ ### Build From Source
38
+
39
+ Build it (from repo root):
40
+
41
+ ```bash
42
+ cargo build --release --manifest-path crates/ecc-kernel/Cargo.toml
43
+ ```
44
+
45
+ Then rerun `ecc`; `ecc doctor` will report `kernel: rust (...)`.
46
+
47
+ Environment:
48
+ - `ECC_KERNEL=auto|rust|node` (default: `auto`)
49
+ - `ECC_KERNEL_PATH=/absolute/path/to/ecc-kernel`
50
+
51
+ ### Option B: Install as a CLI (global)
52
+
53
+ ```bash
54
+ # from a local checkout path
55
+ npm install -g /path/to/everything-claude-code
56
+
57
+ ecc --help
58
+ ```
59
+
60
+ ### Option C: Install into a project (recommended)
61
+
62
+ ```bash
63
+ # from a local checkout path
64
+ npm install -D /path/to/everything-claude-code
65
+
66
+ npx ecc --help
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Quickstart (Mock Provider)
72
+
73
+ Use the deterministic mock provider to validate the pipeline without calling Codex:
74
+
75
+ ```bash
76
+ ecc init
77
+
78
+ ECC_PROVIDER=mock ECC_FIXTURE=basic ecc run "demo" --run-id demo
79
+ ```
80
+
81
+ Artifacts:
82
+ - `.ecc/ecc.json`
83
+ - `.ecc/locks/registry.lock.json`
84
+ - `.ecc/runs/demo/` (plan, patches, apply evidence, verify evidence, report)
85
+
86
+ ---
87
+
88
+ ## Quickstart (Codex Provider)
89
+
90
+ Prereqs:
91
+ - `codex` installed and on `PATH`
92
+ - project is a git repo
93
+
94
+ ```bash
95
+ ecc init
96
+ ecc doctor
97
+
98
+ ecc run "Add a hello endpoint" --run-id hello-endpoint
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Commands
104
+
105
+ ```bash
106
+ ecc packs
107
+ ecc init [--backend codex|claude] [--packs a,b,c]
108
+ ecc doctor
109
+ ecc plan "<intent>" [--run-id <id>]
110
+ ecc exec <runId> [--worktree-root <path>] [--keep-worktree] [--commit]
111
+ ecc verify <runId> [--worktree-root <path>]
112
+ ecc run "<intent>" [--run-id <id>] [--worktree-root <path>] [--keep-worktree] [--commit]
113
+ ```
114
+
115
+ Notes:
116
+ - `--commit` commits in the worktree **only after verify passes**.
117
+ - If a patch touches files outside a task's `allowedPathPrefixes`, `exec` **fails fast**.
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "everything-claude-code",
3
+ "version": "1.4.3",
4
+ "description": "Everything Claude Code + ECC (Engineering Change Conveyor) CLI",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/sumulige/everything-claude-code.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/sumulige/everything-claude-code/issues"
12
+ },
13
+ "homepage": "https://github.com/sumulige/everything-claude-code#readme",
14
+ "bin": {
15
+ "ecc": "./scripts/ecc.js"
16
+ },
17
+ "files": [
18
+ "scripts/ecc.js",
19
+ "scripts/ecc/*.js",
20
+ "scripts/ecc/providers/",
21
+ "scripts/ecc/fixtures/",
22
+ "scripts/lib/",
23
+ "crates/ecc-kernel/Cargo.toml",
24
+ "crates/ecc-kernel/Cargo.lock",
25
+ "crates/ecc-kernel/src/",
26
+ "packs/",
27
+ "schemas/",
28
+ "prompts/ecc/",
29
+ "docs/ecc.md",
30
+ "README.md",
31
+ "LICENSE"
32
+ ],
33
+ "scripts": {
34
+ "ecc:build-kernel": "cargo build --release --manifest-path crates/ecc-kernel/Cargo.toml",
35
+ "ecc:install-kernel": "node scripts/ecc/install-kernel.js",
36
+ "postinstall": "node scripts/ecc/install-kernel.js",
37
+ "test": "node tests/run-all.js"
38
+ },
39
+ "devDependencies": {
40
+ "@eslint/js": "^9.39.2",
41
+ "eslint": "^9.39.2",
42
+ "globals": "^17.1.0",
43
+ "markdownlint-cli": "^0.47.0"
44
+ }
45
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "blueprint",
3
+ "name": "Blueprint",
4
+ "description": "Turn vague intent into an executable plan: requirements, risk, interfaces, and an incremental path to shipping.",
5
+ "tags": ["planning", "architecture", "scope"],
6
+ "modules": ["command:plan", "command:multi-plan", "agent:planner", "agent:architect"]
7
+ }
8
+
@@ -0,0 +1,16 @@
1
+ {
2
+ "id": "forge",
3
+ "name": "Forge",
4
+ "description": "Ship with confidence: TDD-first workflows, coverage discipline, and fast iteration when builds break.",
5
+ "tags": ["tdd", "implementation", "reliability"],
6
+ "modules": [
7
+ "command:tdd",
8
+ "command:test-coverage",
9
+ "command:build-fix",
10
+ "command:multi-execute",
11
+ "agent:tdd-guide",
12
+ "agent:build-error-resolver",
13
+ "skill:tdd-workflow"
14
+ ]
15
+ }
16
+
@@ -0,0 +1,16 @@
1
+ {
2
+ "id": "instinct",
3
+ "name": "Instinct",
4
+ "description": "Make your agent learn. Extract patterns from real sessions, score confidence, and evolve stable workflows over time.",
5
+ "tags": ["learning", "memory", "automation"],
6
+ "modules": [
7
+ "command:learn",
8
+ "command:instinct-status",
9
+ "command:instinct-import",
10
+ "command:instinct-export",
11
+ "command:evolve",
12
+ "skill:continuous-learning",
13
+ "skill:continuous-learning-v2"
14
+ ]
15
+ }
16
+
@@ -0,0 +1,15 @@
1
+ {
2
+ "id": "orchestra",
3
+ "name": "Orchestra",
4
+ "description": "Scale beyond a single agent: orchestrate multi-service work, keep state, and run parallel workflows without chaos.",
5
+ "tags": ["multi-agent", "orchestration", "systems"],
6
+ "modules": [
7
+ "command:orchestrate",
8
+ "command:pm2",
9
+ "command:multi-workflow",
10
+ "command:multi-backend",
11
+ "command:multi-frontend",
12
+ "command:multi-execute"
13
+ ]
14
+ }
15
+
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "proof",
3
+ "name": "Proof",
4
+ "description": "Verification loops that earn trust: checkpoints, build + test discipline, and eval-driven development patterns.",
5
+ "tags": ["verification", "quality", "evals"],
6
+ "modules": ["command:verify", "command:checkpoint", "command:eval", "skill:verification-loop", "skill:eval-harness"]
7
+ }
8
+
@@ -0,0 +1,8 @@
1
+ {
2
+ "id": "sentinel",
3
+ "name": "Sentinel",
4
+ "description": "Security and review as defaults: systematic threat checks, safer diffs, and an opinionated quality gate.",
5
+ "tags": ["security", "review", "risk"],
6
+ "modules": ["command:code-review", "agent:code-reviewer", "agent:security-reviewer", "skill:security-review"]
7
+ }
8
+
@@ -0,0 +1,25 @@
1
+ # ECC Patch (JSON Only)
2
+
3
+ You are generating a **unified diff patch** for a single ECC task.
4
+
5
+ ## Output Contract (MANDATORY)
6
+ - Output **JSON only** with this shape:
7
+ - `patch` (string): a unified diff usable by `git apply`
8
+ - `meta` (object): extra notes
9
+ - Allowed keys only: `note`, `reason`, `provider`
10
+ - Include all 3 keys (use empty string if not applicable)
11
+
12
+ ## Hard Constraints
13
+ - You MUST ONLY modify files within the provided `allowedPathPrefixes`.
14
+ - If you cannot complete the task without touching other files, still obey ownership:
15
+ - put all necessary changes within allowed prefixes
16
+ - otherwise output an **empty patch** and explain in `meta` why
17
+ - Patch must be minimal and production-grade (readable, consistent with existing patterns).
18
+
19
+ ## Input (from caller)
20
+ You will be given:
21
+ - Task (id, title, prompt)
22
+ - allowedPathPrefixes
23
+ - Project context (light)
24
+
25
+ ## Return JSON
@@ -0,0 +1,28 @@
1
+ # ECC Plan (JSON Only)
2
+
3
+ You are generating an ECC plan for an engineering task.
4
+
5
+ ## Output Contract (MANDATORY)
6
+ - Output **JSON only**.
7
+ - The JSON must match the `schemas/ecc.plan.schema.json` contract:
8
+ - `version` must be `1`
9
+ - `intent` is the user's intent string
10
+ - `tasks[]` is a list of patch tasks that can be executed sequentially
11
+
12
+ ## Planning Rules
13
+ - Keep tasks **small and file-disjoint**. Assume tasks run sequentially in P0, but avoid overlapping file ownership anyway.
14
+ - Each task must include `allowedPathPrefixes` (non-empty) so the executor can block unauthorized edits.
15
+ - Prefer **3-6 tasks** for typical features:
16
+ - one for core implementation
17
+ - one for tests
18
+ - optional: one for wiring/config
19
+ - `prompt` must be sufficient for a patch generator to act without extra coordination.
20
+
21
+ ## Input (from caller)
22
+ You will be given:
23
+ - Project root
24
+ - Selected packs (paradigms)
25
+ - User intent
26
+
27
+ ## Return JSON
28
+
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "ECC Apply Result",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["version", "appliedAt", "baseSha", "tasks"],
7
+ "properties": {
8
+ "version": { "type": "integer", "const": 1 },
9
+ "appliedAt": { "type": "string", "minLength": 1 },
10
+ "baseSha": { "type": "string", "minLength": 1 },
11
+ "tasks": {
12
+ "type": "array",
13
+ "items": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "required": ["id", "patchPath", "ok"],
17
+ "properties": {
18
+ "id": { "type": "string", "minLength": 1 },
19
+ "patchPath": { "type": "string", "minLength": 1 },
20
+ "ok": { "type": "boolean" },
21
+ "error": { "type": "string" }
22
+ }
23
+ }
24
+ },
25
+ "commit": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["sha", "message"],
29
+ "properties": {
30
+ "sha": { "type": "string", "minLength": 1 },
31
+ "message": { "type": "string", "minLength": 1 }
32
+ }
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "ECC Project Config",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["version", "backend", "packs", "verify", "createdAt"],
7
+ "properties": {
8
+ "version": { "type": "integer", "const": 1 },
9
+ "backend": { "type": "string", "enum": ["codex", "claude"] },
10
+ "packs": {
11
+ "type": "array",
12
+ "minItems": 1,
13
+ "items": { "type": "string", "minLength": 1 }
14
+ },
15
+ "verify": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["mode"],
19
+ "properties": {
20
+ "mode": { "type": "string", "enum": ["auto", "manual"] },
21
+ "commands": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "required": ["name", "command"],
27
+ "properties": {
28
+ "name": { "type": "string", "minLength": 1 },
29
+ "command": { "type": "string", "minLength": 1 }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ },
35
+ "createdAt": { "type": "string", "minLength": 1 }
36
+ }
37
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "ECC Registry Lock",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["version", "lockedAt", "engine", "catalog", "packs"],
7
+ "properties": {
8
+ "version": { "type": "integer", "const": 1 },
9
+ "lockedAt": { "type": "string", "minLength": 1 },
10
+ "engine": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["name"],
14
+ "properties": {
15
+ "name": { "type": "string", "const": "ecc" },
16
+ "version": { "type": "string" }
17
+ }
18
+ },
19
+ "catalog": {
20
+ "type": "object",
21
+ "additionalProperties": false,
22
+ "required": ["type", "digest"],
23
+ "properties": {
24
+ "type": { "type": "string", "const": "embedded" },
25
+ "digest": { "type": "string", "minLength": 1 }
26
+ }
27
+ },
28
+ "packs": {
29
+ "type": "array",
30
+ "minItems": 1,
31
+ "items": { "type": "string", "minLength": 1 }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "ecc.patch.schema.json",
4
+ "title": "ECC Patch Output (P0)",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["patch", "meta"],
8
+ "properties": {
9
+ "patch": {
10
+ "type": "string",
11
+ "description": "Unified diff (git apply compatible). May be empty when task cannot be completed within allowedPathPrefixes."
12
+ },
13
+ "meta": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "description": "Structured notes.",
17
+ "required": ["note", "reason", "provider"],
18
+ "properties": {
19
+ "note": { "type": "string" },
20
+ "reason": { "type": "string" },
21
+ "provider": { "type": "string" }
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "ECC Plan",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["version", "intent", "tasks"],
7
+ "properties": {
8
+ "version": { "type": "integer", "const": 1 },
9
+ "intent": { "type": "string", "minLength": 1 },
10
+ "tasks": {
11
+ "type": "array",
12
+ "minItems": 1,
13
+ "items": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "required": ["id", "title", "kind", "dependsOn", "allowedPathPrefixes", "prompt"],
17
+ "properties": {
18
+ "id": { "type": "string", "minLength": 1 },
19
+ "title": { "type": "string", "minLength": 1 },
20
+ "kind": { "type": "string", "const": "patch" },
21
+ "dependsOn": { "type": "array", "items": { "type": "string", "minLength": 1 } },
22
+ "allowedPathPrefixes": {
23
+ "type": "array",
24
+ "minItems": 1,
25
+ "items": { "type": "string", "minLength": 1 }
26
+ },
27
+ "prompt": { "type": "string", "minLength": 1 }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "ECC Run",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "version",
8
+ "runId",
9
+ "intent",
10
+ "backend",
11
+ "packs",
12
+ "status",
13
+ "base",
14
+ "worktree",
15
+ "artifacts",
16
+ "startedAt"
17
+ ],
18
+ "properties": {
19
+ "version": { "type": "integer", "const": 1 },
20
+ "runId": { "type": "string", "minLength": 1 },
21
+ "intent": { "type": "string", "minLength": 1 },
22
+ "backend": { "type": "string", "enum": ["codex", "claude"] },
23
+ "packs": {
24
+ "type": "array",
25
+ "minItems": 1,
26
+ "items": { "type": "string", "minLength": 1 }
27
+ },
28
+ "status": {
29
+ "type": "string",
30
+ "enum": ["planned", "executing", "verifying", "succeeded", "failed"]
31
+ },
32
+ "base": {
33
+ "type": "object",
34
+ "additionalProperties": false,
35
+ "required": ["repoRoot", "branch", "sha"],
36
+ "properties": {
37
+ "repoRoot": { "type": "string", "minLength": 1 },
38
+ "branch": { "type": "string" },
39
+ "sha": { "type": "string" }
40
+ }
41
+ },
42
+ "worktree": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "required": ["path", "branch"],
46
+ "properties": {
47
+ "path": { "type": "string" },
48
+ "branch": { "type": "string" }
49
+ }
50
+ },
51
+ "artifacts": {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "required": ["planJson", "planMd", "patchesDir", "applyJson", "verifyDir", "reportMd"],
55
+ "properties": {
56
+ "planJson": { "type": "string", "minLength": 1 },
57
+ "planMd": { "type": "string", "minLength": 1 },
58
+ "patchesDir": { "type": "string", "minLength": 1 },
59
+ "applyJson": { "type": "string", "minLength": 1 },
60
+ "verifyDir": { "type": "string", "minLength": 1 },
61
+ "reportMd": { "type": "string", "minLength": 1 }
62
+ }
63
+ },
64
+ "startedAt": { "type": "string", "minLength": 1 },
65
+ "endedAt": { "type": "string" }
66
+ }
67
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "ECC Verify Summary",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["version", "ranAt", "commands", "ok"],
7
+ "properties": {
8
+ "version": { "type": "integer", "const": 1 },
9
+ "ranAt": { "type": "string", "minLength": 1 },
10
+ "commands": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "required": ["name", "command", "ok", "exitCode", "outputPath"],
16
+ "properties": {
17
+ "name": { "type": "string", "minLength": 1 },
18
+ "command": { "type": "string", "minLength": 1 },
19
+ "ok": { "type": "boolean" },
20
+ "exitCode": { "type": "integer" },
21
+ "outputPath": { "type": "string", "minLength": 1 }
22
+ }
23
+ }
24
+ },
25
+ "ok": { "type": "boolean" }
26
+ }
27
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Claude Code Hooks Configuration",
4
+ "description": "Configuration for Claude Code hooks. Event types are validated at runtime and must be one of: PreToolUse, PostToolUse, PreCompact, SessionStart, SessionEnd, Stop, Notification, SubagentStop",
5
+ "$defs": {
6
+ "hookItem": {
7
+ "type": "object",
8
+ "required": [
9
+ "type",
10
+ "command"
11
+ ],
12
+ "properties": {
13
+ "type": {
14
+ "type": "string"
15
+ },
16
+ "command": {
17
+ "oneOf": [
18
+ {
19
+ "type": "string"
20
+ },
21
+ {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "string"
25
+ }
26
+ }
27
+ ]
28
+ }
29
+ }
30
+ },
31
+ "matcherEntry": {
32
+ "type": "object",
33
+ "required": [
34
+ "matcher",
35
+ "hooks"
36
+ ],
37
+ "properties": {
38
+ "matcher": {
39
+ "type": "string"
40
+ },
41
+ "hooks": {
42
+ "type": "array",
43
+ "items": {
44
+ "$ref": "#/$defs/hookItem"
45
+ }
46
+ },
47
+ "description": {
48
+ "type": "string"
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "oneOf": [
54
+ {
55
+ "type": "object",
56
+ "properties": {
57
+ "$schema": {
58
+ "type": "string"
59
+ },
60
+ "hooks": {
61
+ "type": "object",
62
+ "additionalProperties": {
63
+ "type": "array",
64
+ "items": {
65
+ "$ref": "#/$defs/matcherEntry"
66
+ }
67
+ }
68
+ }
69
+ },
70
+ "required": [
71
+ "hooks"
72
+ ]
73
+ },
74
+ {
75
+ "type": "array",
76
+ "items": {
77
+ "$ref": "#/$defs/matcherEntry"
78
+ }
79
+ }
80
+ ]
81
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Package Manager Configuration",
4
+ "type": "object",
5
+ "properties": {
6
+ "packageManager": {
7
+ "type": "string",
8
+ "enum": [
9
+ "npm",
10
+ "pnpm",
11
+ "yarn",
12
+ "bun"
13
+ ]
14
+ }
15
+ },
16
+ "additionalProperties": false
17
+ }