forked from Chachamaru127/claude-code-harness
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclaude-code-harness.config.schema.json
More file actions
272 lines (270 loc) · 8.88 KB
/
Copy pathclaude-code-harness.config.schema.json
File metadata and controls
272 lines (270 loc) · 8.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "claude-code-harness Configuration",
"description": "Configuration schema for claude-code-harness safety and behavior settings",
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "Config version for compatibility",
"default": "1.0"
},
"safety": {
"type": "object",
"description": "Safety controls for dangerous operations",
"properties": {
"mode": {
"type": "string",
"enum": ["dry-run", "apply-local", "apply-and-push"],
"default": "dry-run",
"description": "Operation mode: dry-run (show what would happen), apply-local (make changes but no push), apply-and-push (full automation - requires explicit enable)"
},
"require_confirmation": {
"type": "boolean",
"default": true,
"description": "Require user confirmation before destructive operations"
},
"max_auto_retries": {
"type": "integer",
"minimum": 0,
"maximum": 5,
"default": 3,
"description": "Maximum automatic retry attempts before escalation"
}
},
"default": {}
},
"git": {
"type": "object",
"description": "Git operation controls",
"properties": {
"allow_auto_commit": {
"type": "boolean",
"default": false,
"description": "Allow automatic git commits without confirmation"
},
"allow_auto_push": {
"type": "boolean",
"default": false,
"description": "Allow automatic git push without confirmation (requires allow_auto_commit)"
},
"protected_branches": {
"type": "array",
"items": { "type": "string" },
"default": ["main", "master", "production"],
"description": "Branches where auto-push is never allowed"
},
"commit_prefix": {
"type": "string",
"default": "fix:",
"description": "Prefix for auto-generated commit messages"
}
},
"default": {}
},
"paths": {
"type": "object",
"description": "Path restrictions for file operations",
"properties": {
"allowed_modify": {
"type": "array",
"items": { "type": "string" },
"default": ["src/", "app/", "components/", "lib/", "pages/", "Plans.md", "AGENTS.md", "CLAUDE.md"],
"description": "Paths that can be modified (glob patterns supported)"
},
"protected": {
"type": "array",
"items": { "type": "string" },
"default": [".github/", ".gitlab/", "infra/", "k8s/", "terraform/", ".env", ".env.*", "credentials/", "secrets/"],
"description": "Paths that are never modified automatically"
},
"plans_file": {
"type": "string",
"default": "Plans.md",
"description": "Path to the plans/task file"
},
"agents_file": {
"type": "string",
"default": "AGENTS.md",
"description": "Path to the agents configuration file"
}
},
"default": {}
},
"ci": {
"type": "object",
"description": "CI/CD integration settings",
"properties": {
"provider": {
"type": "string",
"enum": ["github_actions", "gitlab_ci", "circleci", "none", "auto"],
"default": "auto",
"description": "CI provider (auto = detect from config files)"
},
"enable_auto_fix": {
"type": "boolean",
"default": false,
"description": "Enable automatic CI error fixing (dangerous - requires explicit enable)"
},
"require_gh_cli": {
"type": "boolean",
"default": true,
"description": "Require gh CLI for GitHub Actions operations"
}
},
"default": {}
},
"scaffolding": {
"type": "object",
"description": "Project scaffolding settings",
"properties": {
"tech_choice_mode": {
"type": "string",
"enum": ["auto", "ask", "fixed"],
"default": "ask",
"description": "How to handle technology choices: auto (AI decides), ask (always ask user), fixed (use preset stack)"
},
"base_stack": {
"type": "string",
"description": "Preset technology stack when tech_choice_mode is 'fixed' (e.g., 'next-supabase', 'rails-postgres', 'express-mongodb')"
},
"allow_web_search": {
"type": "boolean",
"default": true,
"description": "Allow web search for technology recommendations"
},
"templates": {
"type": "object",
"description": "Custom template overrides",
"additionalProperties": { "type": "string" }
}
},
"default": {}
},
"destructive_commands": {
"type": "object",
"description": "Controls for potentially destructive commands",
"properties": {
"allow_rm_rf": {
"type": "boolean",
"default": false,
"description": "Allow rm -rf commands (node_modules, etc.)"
},
"allow_npm_install": {
"type": "boolean",
"default": true,
"description": "Allow npm install commands"
},
"require_size_check": {
"type": "boolean",
"default": true,
"description": "Check project size before destructive operations"
},
"max_files_to_modify": {
"type": "integer",
"default": 20,
"description": "Maximum number of files that can be modified in one operation"
}
},
"default": {}
},
"i18n": {
"type": "object",
"description": "Internationalization settings / 国際化設定",
"properties": {
"language": {
"type": "string",
"enum": ["ja", "en"],
"default": "ja",
"description": "Display language for commands and messages (ja: 日本語, en: English)"
}
},
"default": {}
},
"constitution": {
"type": "object",
"description": "Constitution file settings / 開発原則設定",
"properties": {
"path": {
"type": "string",
"default": "docs/constitution.md",
"description": "Path to the constitution file (quality gates, DoD, principles)"
}
},
"default": {}
},
"orchestration": {
"type": "object",
"description": "Deterministic orchestration settings / 決定論的オーケストレーション設定",
"properties": {
"state_machine_version": {
"type": "string",
"default": "v1",
"description": "Version tag for the session state machine specification"
},
"max_state_retries": {
"type": "integer",
"minimum": 0,
"maximum": 10,
"default": 3,
"description": "Max retries per state before escalation"
},
"retry_backoff_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 600,
"default": 10,
"description": "Backoff seconds between state retries"
}
},
"default": {}
},
"work": {
"type": "object",
"description": "/work command behavior settings",
"properties": {
"auto_commit": {
"type": "boolean",
"default": true,
"description": "Enable auto-commit after review approval"
},
"commit_on_pm_approve": {
"type": "boolean",
"default": false,
"description": "Defer commit until PM approves in 2-Agent mode. When true, /work skips auto-commit and includes commit instruction in the handoff. PM's approve triggers commit via the next /work invocation. Ignored in Solo mode."
}
},
"default": {}
},
"session": {
"type": "object",
"description": "Session persistence and resume/fork settings",
"properties": {
"snapshot_path": {
"type": "string",
"default": ".claude/state/session.json",
"description": "Path to the session snapshot file"
},
"event_log_path": {
"type": "string",
"default": ".claude/state/session.events.jsonl",
"description": "Path to the session event log (JSONL)"
},
"resume_policy": {
"type": "string",
"enum": ["auto", "manual", "disabled"],
"default": "auto",
"description": "Resume behavior when a previous session is detected"
},
"fork_policy": {
"type": "string",
"enum": ["manual", "auto_on_conflict", "disabled"],
"default": "manual",
"description": "Fork behavior when conflicting state is detected"
}
},
"default": {}
}
},
"additionalProperties": false
}