@curdx/flow 3.0.0 → 3.1.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.
- package/CHANGELOG.md +21 -87
- package/LICENSE +1 -1
- package/README.md +28 -129
- package/dist/index.mjs +995 -0
- package/package.json +33 -44
- package/.claude-plugin/marketplace.json +0 -48
- package/.claude-plugin/plugin.json +0 -52
- package/agent-preamble/preamble.md +0 -314
- package/agents/flow-adversary.md +0 -203
- package/agents/flow-architect.md +0 -198
- package/agents/flow-brownfield-analyst.md +0 -143
- package/agents/flow-debugger.md +0 -321
- package/agents/flow-edge-hunter.md +0 -289
- package/agents/flow-executor.md +0 -269
- package/agents/flow-orchestrator.md +0 -145
- package/agents/flow-planner.md +0 -247
- package/agents/flow-product-designer.md +0 -159
- package/agents/flow-qa-engineer.md +0 -282
- package/agents/flow-researcher.md +0 -166
- package/agents/flow-reviewer.md +0 -304
- package/agents/flow-security-auditor.md +0 -401
- package/agents/flow-triage-analyst.md +0 -272
- package/agents/flow-ui-researcher.md +0 -230
- package/agents/flow-ux-designer.md +0 -221
- package/agents/flow-verifier.md +0 -350
- package/bin/curdx-flow +0 -5
- package/bin/curdx-flow-state +0 -104
- package/bin/curdx-flow.js +0 -54
- package/cli/README.md +0 -104
- package/cli/doctor-workflow.js +0 -483
- package/cli/doctor.js +0 -73
- package/cli/help.js +0 -59
- package/cli/install-bundled-mcps.js +0 -37
- package/cli/install-companions.js +0 -19
- package/cli/install-context7-config.js +0 -80
- package/cli/install-curdx-plugin.js +0 -96
- package/cli/install-language.js +0 -35
- package/cli/install-next-steps.js +0 -29
- package/cli/install-options.js +0 -9
- package/cli/install-paths.js +0 -52
- package/cli/install-recommended-plugins.js +0 -104
- package/cli/install-required-plugins.js +0 -57
- package/cli/install-self-update.js +0 -62
- package/cli/install-workflow.js +0 -209
- package/cli/install.js +0 -101
- package/cli/lib/claude-commands.js +0 -41
- package/cli/lib/claude-ops.js +0 -47
- package/cli/lib/claude.js +0 -183
- package/cli/lib/config.js +0 -24
- package/cli/lib/doctor-claude-settings.js +0 -1186
- package/cli/lib/doctor-report.js +0 -978
- package/cli/lib/doctor-runtime-environment.js +0 -196
- package/cli/lib/frontmatter.js +0 -44
- package/cli/lib/json-schema.js +0 -57
- package/cli/lib/logging.js +0 -25
- package/cli/lib/process.js +0 -60
- package/cli/lib/prompts.js +0 -135
- package/cli/lib/runtime.js +0 -107
- package/cli/lib/semver.js +0 -109
- package/cli/lib/version.js +0 -12
- package/cli/protocols-body.md +0 -22
- package/cli/protocols.js +0 -162
- package/cli/registry.js +0 -123
- package/cli/router.js +0 -49
- package/cli/uninstall-actions.js +0 -360
- package/cli/uninstall-workflow.js +0 -146
- package/cli/uninstall.js +0 -42
- package/cli/upgrade-workflow.js +0 -80
- package/cli/upgrade.js +0 -91
- package/cli/utils.js +0 -40
- package/gates/adversarial-review-gate.md +0 -219
- package/gates/coverage-audit-gate.md +0 -182
- package/gates/devex-gate.md +0 -254
- package/gates/edge-case-gate.md +0 -194
- package/gates/karpathy-gate.md +0 -130
- package/gates/security-gate.md +0 -218
- package/gates/tdd-gate.md +0 -182
- package/gates/test-quality-gate.md +0 -59
- package/gates/verification-gate.md +0 -179
- package/hooks/hooks.json +0 -130
- package/hooks/scripts/common.sh +0 -237
- package/hooks/scripts/config-change-guard.sh +0 -94
- package/hooks/scripts/flow-context-watch.sh +0 -94
- package/hooks/scripts/inject-karpathy.sh +0 -53
- package/hooks/scripts/quick-mode-guard.sh +0 -69
- package/hooks/scripts/session-start.sh +0 -94
- package/hooks/scripts/session-title.sh +0 -87
- package/hooks/scripts/stop-watcher.sh +0 -231
- package/hooks/scripts/subagent-artifact-guard.sh +0 -92
- package/hooks/scripts/subagent-statusline.sh +0 -111
- package/hooks/scripts/task-lifecycle-guard.sh +0 -106
- package/hooks/scripts/teammate-idle-guard.sh +0 -83
- package/knowledge/artifact-output-discipline.md +0 -24
- package/knowledge/artifact-summary-contracts.md +0 -50
- package/knowledge/atomic-commits.md +0 -262
- package/knowledge/claude-code-runtime-contracts.md +0 -240
- package/knowledge/epic-decomposition.md +0 -307
- package/knowledge/execution-strategies.md +0 -303
- package/knowledge/karpathy-guidelines.md +0 -219
- package/knowledge/planning-reviews.md +0 -211
- package/knowledge/poc-first-workflow.md +0 -223
- package/knowledge/review-feedback-intake.md +0 -57
- package/knowledge/spec-driven-development.md +0 -180
- package/knowledge/systematic-debugging.md +0 -378
- package/knowledge/two-stage-review.md +0 -249
- package/knowledge/wave-execution.md +0 -403
- package/monitors/monitors.json +0 -8
- package/monitors/scripts/flow-state-monitor.sh +0 -102
- package/output-styles/curdx-evidence-first.md +0 -34
- package/output-styles/curdx-fast-mode.md +0 -42
- package/output-styles/curdx-spec-mode.md +0 -46
- package/schemas/agent-frontmatter.schema.json +0 -66
- package/schemas/config.schema.json +0 -134
- package/schemas/gate-frontmatter.schema.json +0 -30
- package/schemas/hooks.schema.json +0 -115
- package/schemas/output-style-frontmatter.schema.json +0 -22
- package/schemas/plugin-manifest.schema.json +0 -436
- package/schemas/plugin-settings.schema.json +0 -29
- package/schemas/skill-frontmatter.schema.json +0 -177
- package/schemas/spec-frontmatter.schema.json +0 -42
- package/schemas/spec-state.schema.json +0 -165
- package/settings.json +0 -8
- package/skills/brownfield-index/SKILL.md +0 -53
- package/skills/brownfield-index/references/applicability.md +0 -12
- package/skills/brownfield-index/references/handoff.md +0 -8
- package/skills/brownfield-index/references/index-contract.md +0 -10
- package/skills/browser-qa/SKILL.md +0 -39
- package/skills/browser-qa/references/handoff.md +0 -6
- package/skills/browser-qa/references/prerequisites.md +0 -10
- package/skills/browser-qa/references/qa-contract.md +0 -20
- package/skills/cancel/SKILL.md +0 -41
- package/skills/cancel/references/destructive-mode.md +0 -17
- package/skills/cancel/references/reporting.md +0 -18
- package/skills/cancel/references/state-recovery.md +0 -30
- package/skills/cancel/references/target-resolution.md +0 -7
- package/skills/debug/SKILL.md +0 -45
- package/skills/debug/references/context-gathering.md +0 -11
- package/skills/debug/references/failure-guard.md +0 -25
- package/skills/debug/references/intake.md +0 -12
- package/skills/debug/references/phase-workflow.md +0 -34
- package/skills/debug/references/reporting.md +0 -20
- package/skills/epic/SKILL.md +0 -39
- package/skills/epic/references/epic-artifacts.md +0 -20
- package/skills/epic/references/epic-intake.md +0 -9
- package/skills/epic/references/slice-handoff.md +0 -16
- package/skills/fast/SKILL.md +0 -62
- package/skills/fast/references/applicability.md +0 -25
- package/skills/fast/references/clarification.md +0 -20
- package/skills/fast/references/execution-contract.md +0 -56
- package/skills/help/SKILL.md +0 -55
- package/skills/help/references/dispatch.md +0 -20
- package/skills/help/references/overview.md +0 -39
- package/skills/help/references/troubleshoot.md +0 -47
- package/skills/help/references/workflow.md +0 -37
- package/skills/implement/SKILL.md +0 -104
- package/skills/implement/references/error-recovery.md +0 -36
- package/skills/implement/references/linear-execution.md +0 -43
- package/skills/implement/references/native-task-sync.md +0 -107
- package/skills/implement/references/preflight.md +0 -43
- package/skills/implement/references/progress-contract.md +0 -36
- package/skills/implement/references/state-init.md +0 -36
- package/skills/implement/references/stop-hook-execution.md +0 -50
- package/skills/implement/references/strategy-router.md +0 -38
- package/skills/implement/references/subagent-execution.md +0 -57
- package/skills/implement/references/wave-execution.md +0 -180
- package/skills/init/SKILL.md +0 -49
- package/skills/init/references/gitignore-and-health.md +0 -26
- package/skills/init/references/next-steps.md +0 -22
- package/skills/init/references/preflight.md +0 -15
- package/skills/init/references/scaffold-contract.md +0 -27
- package/skills/review/SKILL.md +0 -82
- package/skills/review/references/optional-passes.md +0 -48
- package/skills/review/references/preflight.md +0 -38
- package/skills/review/references/report-contract.md +0 -49
- package/skills/review/references/reporting.md +0 -20
- package/skills/review/references/stage-execution.md +0 -32
- package/skills/security-audit/SKILL.md +0 -47
- package/skills/security-audit/references/audit-contract.md +0 -21
- package/skills/security-audit/references/gate-handoff.md +0 -8
- package/skills/security-audit/references/scope-and-depth.md +0 -9
- package/skills/spec/SKILL.md +0 -100
- package/skills/spec/references/artifact-landing.md +0 -31
- package/skills/spec/references/phase-execution.md +0 -50
- package/skills/spec/references/planning-review.md +0 -31
- package/skills/spec/references/preflight-and-routing.md +0 -46
- package/skills/spec/references/reporting.md +0 -21
- package/skills/start/SKILL.md +0 -84
- package/skills/start/references/branch-routing.md +0 -51
- package/skills/start/references/mode-semantics.md +0 -12
- package/skills/start/references/preflight.md +0 -13
- package/skills/start/references/reporting.md +0 -20
- package/skills/start/references/state-seeding.md +0 -44
- package/skills/start/references/workflow-handoff.md +0 -26
- package/skills/status/SKILL.md +0 -41
- package/skills/status/references/gather-contract.md +0 -30
- package/skills/status/references/health-rules.md +0 -27
- package/skills/status/references/output-contract.md +0 -25
- package/skills/status/references/preflight.md +0 -10
- package/skills/status/references/recovery-hints.md +0 -18
- package/skills/ui-sketch/SKILL.md +0 -39
- package/skills/ui-sketch/references/brief-intake.md +0 -10
- package/skills/ui-sketch/references/iteration-handoff.md +0 -5
- package/skills/ui-sketch/references/variant-contract.md +0 -15
- package/skills/verify/SKILL.md +0 -56
- package/skills/verify/references/evidence-workflow.md +0 -39
- package/skills/verify/references/output-contract.md +0 -23
- package/skills/verify/references/preflight.md +0 -11
- package/skills/verify/references/report-handoff.md +0 -35
- package/skills/verify/references/strict-mode.md +0 -12
- package/templates/CONTEXT.md.tmpl +0 -53
- package/templates/PROJECT.md.tmpl +0 -59
- package/templates/ROADMAP.md.tmpl +0 -50
- package/templates/STATE.md.tmpl +0 -49
- package/templates/config.json.tmpl +0 -51
- package/templates/design.md.tmpl +0 -83
- package/templates/progress.md.tmpl +0 -77
- package/templates/requirements.md.tmpl +0 -76
- package/templates/research.md.tmpl +0 -83
- package/templates/tasks.md.tmpl +0 -107
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
set -u
|
|
4
|
-
|
|
5
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
-
. "$SCRIPT_DIR/../../hooks/scripts/common.sh"
|
|
7
|
-
|
|
8
|
-
interval="${CLAUDE_PLUGIN_OPTION_MONITOR_INTERVAL_SECONDS:-8}"
|
|
9
|
-
case "$interval" in
|
|
10
|
-
''|*[!0-9]*)
|
|
11
|
-
interval=8
|
|
12
|
-
;;
|
|
13
|
-
esac
|
|
14
|
-
if [ "$interval" -lt 3 ] 2>/dev/null; then
|
|
15
|
-
interval=3
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
build_snapshot() {
|
|
19
|
-
local flow_root=""
|
|
20
|
-
flow_root="$(resolve_flow_root 2>/dev/null || true)"
|
|
21
|
-
[ -n "$flow_root" ] || return 0
|
|
22
|
-
|
|
23
|
-
local active=""
|
|
24
|
-
active="$(cat "$flow_root/.flow/.active-spec" 2>/dev/null || true)"
|
|
25
|
-
[ -z "$active" ] && return 0
|
|
26
|
-
|
|
27
|
-
local spec_dir="$flow_root/.flow/specs/$active"
|
|
28
|
-
[ ! -d "$spec_dir" ] && return 0
|
|
29
|
-
|
|
30
|
-
local state_file="$spec_dir/.state.json"
|
|
31
|
-
local tasks_file="$spec_dir/tasks.md"
|
|
32
|
-
|
|
33
|
-
python3 - "$active" "$state_file" "$tasks_file" <<'PY' 2>/dev/null
|
|
34
|
-
import json
|
|
35
|
-
import os
|
|
36
|
-
import re
|
|
37
|
-
import sys
|
|
38
|
-
|
|
39
|
-
active, state_file, tasks_file = sys.argv[1:4]
|
|
40
|
-
|
|
41
|
-
phase = "unknown"
|
|
42
|
-
strategy = "unknown"
|
|
43
|
-
task_index = 0
|
|
44
|
-
total_tasks = 0
|
|
45
|
-
failed_attempts = 0
|
|
46
|
-
global_iteration = 0
|
|
47
|
-
|
|
48
|
-
if os.path.exists(state_file):
|
|
49
|
-
try:
|
|
50
|
-
state = json.load(open(state_file, "r", encoding="utf-8"))
|
|
51
|
-
phase = state.get("phase") or phase
|
|
52
|
-
strategy = state.get("strategy") or strategy
|
|
53
|
-
execute_state = state.get("execute_state") or {}
|
|
54
|
-
task_index = execute_state.get("task_index") or 0
|
|
55
|
-
total_tasks = execute_state.get("total_tasks") or 0
|
|
56
|
-
failed_attempts = execute_state.get("failed_attempts") or 0
|
|
57
|
-
global_iteration = execute_state.get("global_iteration") or 0
|
|
58
|
-
except Exception:
|
|
59
|
-
phase = "invalid-state"
|
|
60
|
-
|
|
61
|
-
unchecked = 0
|
|
62
|
-
if os.path.exists(tasks_file):
|
|
63
|
-
try:
|
|
64
|
-
text = open(tasks_file, "r", encoding="utf-8").read()
|
|
65
|
-
unchecked = len(re.findall(r"^- \[ \] \*\*[0-9]+(\.[0-9]+|\.VF|\.X(\+[0-9]+)?)*\*\*", text, re.M))
|
|
66
|
-
except Exception:
|
|
67
|
-
unchecked = -1
|
|
68
|
-
|
|
69
|
-
parts = [
|
|
70
|
-
f"CurDX-Flow monitor: spec={active}",
|
|
71
|
-
f"phase={phase}",
|
|
72
|
-
f"strategy={strategy}",
|
|
73
|
-
]
|
|
74
|
-
|
|
75
|
-
if total_tasks > 0:
|
|
76
|
-
parts.append(f"tasks={task_index}/{total_tasks}")
|
|
77
|
-
parts.append(f"unchecked={unchecked}")
|
|
78
|
-
|
|
79
|
-
if failed_attempts > 0:
|
|
80
|
-
parts.append(f"failed_attempts={failed_attempts}")
|
|
81
|
-
if global_iteration > 0:
|
|
82
|
-
parts.append(f"loop={global_iteration}")
|
|
83
|
-
|
|
84
|
-
print(" ".join(parts))
|
|
85
|
-
PY
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
last_snapshot=""
|
|
89
|
-
|
|
90
|
-
while true; do
|
|
91
|
-
snapshot="$(build_snapshot)"
|
|
92
|
-
if [ -n "$snapshot" ] && [ "$snapshot" != "$last_snapshot" ]; then
|
|
93
|
-
printf '%s\n' "$snapshot"
|
|
94
|
-
last_snapshot="$snapshot"
|
|
95
|
-
fi
|
|
96
|
-
|
|
97
|
-
if [ "${CURDX_FLOW_MONITOR_ONCE:-0}" = "1" ]; then
|
|
98
|
-
exit 0
|
|
99
|
-
fi
|
|
100
|
-
|
|
101
|
-
sleep "$interval"
|
|
102
|
-
done
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: CurdX Evidence-First
|
|
3
|
-
description: Concise, engineering-focused replies with explicit validation status, assumptions, and next actions.
|
|
4
|
-
keep-coding-instructions: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CurdX Evidence-First
|
|
8
|
-
|
|
9
|
-
You are still Claude Code. Keep the default coding workflow, safety rules,
|
|
10
|
-
tool usage behavior, and verification discipline.
|
|
11
|
-
|
|
12
|
-
## Response priorities
|
|
13
|
-
|
|
14
|
-
1. Lead with the concrete outcome or current state.
|
|
15
|
-
2. State validation status explicitly:
|
|
16
|
-
- `Validated` when you actually ran checks and they passed
|
|
17
|
-
- `Unvalidated` when you did not run checks yet
|
|
18
|
-
- `Blocked` when validation could not be completed
|
|
19
|
-
3. Separate observed facts from assumptions or proposals.
|
|
20
|
-
4. Keep answers concise and operational; avoid filler and cheerleading.
|
|
21
|
-
5. When work is incomplete, state the next highest-value action plainly.
|
|
22
|
-
|
|
23
|
-
## Completion discipline
|
|
24
|
-
|
|
25
|
-
- Never imply something is done without evidence.
|
|
26
|
-
- If tests, builds, browser checks, or docs validation were not run, say so directly.
|
|
27
|
-
- If you are making a best-effort inference, label it as an inference.
|
|
28
|
-
- When relevant, point to the exact file paths or commands that support the claim.
|
|
29
|
-
|
|
30
|
-
## Formatting
|
|
31
|
-
|
|
32
|
-
- Use short section headers only when they improve scanability.
|
|
33
|
-
- Prefer short bullet lists over long prose.
|
|
34
|
-
- Match the user's language.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: CurdX Fast Mode
|
|
3
|
-
description: Low-ceremony style for /curdx-flow:fast and small surgical work. Skip preamble, ship the change, validate, stop.
|
|
4
|
-
keep-coding-instructions: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CurdX Fast Mode
|
|
8
|
-
|
|
9
|
-
You are still Claude Code. Keep the default coding workflow, safety rules,
|
|
10
|
-
tool usage behavior, and verification discipline. This style strips ceremony
|
|
11
|
-
for small, well-bounded tasks.
|
|
12
|
-
|
|
13
|
-
## When this style fits
|
|
14
|
-
|
|
15
|
-
Use during `/curdx-flow:fast` runs or any task that is obviously small,
|
|
16
|
-
surgical, low-ambiguity, and not worth a full spec workflow.
|
|
17
|
-
|
|
18
|
-
## Response priorities
|
|
19
|
-
|
|
20
|
-
1. State the change in one sentence before the first edit.
|
|
21
|
-
2. Make the smallest correct edit — do not refactor surrounding code, do
|
|
22
|
-
not introduce abstractions, do not "improve" unrelated lines.
|
|
23
|
-
3. Run the smallest verification that proves the change works (one test,
|
|
24
|
-
one command, one curl). State it explicitly.
|
|
25
|
-
4. End with a one-line status: `Validated` (with evidence), `Unvalidated`
|
|
26
|
-
(with reason), or `Blocked` (with the blocker).
|
|
27
|
-
5. If you find scope creep — a second bug, a desired refactor, an unclear
|
|
28
|
-
interface — stop and surface it instead of expanding silently.
|
|
29
|
-
|
|
30
|
-
## Hard rules
|
|
31
|
-
|
|
32
|
-
- No spec scaffolding, no phase narration, no "let me think step by step".
|
|
33
|
-
- No defensive validation, no fallback paths, no try/except for impossible
|
|
34
|
-
cases.
|
|
35
|
-
- No new files unless the change inherently requires one.
|
|
36
|
-
- No follow-on TODOs in the diff. Surface them in the reply, not the code.
|
|
37
|
-
|
|
38
|
-
## Format
|
|
39
|
-
|
|
40
|
-
- Plain prose with one diff or one command per paragraph.
|
|
41
|
-
- Bullets only when listing more than two parallel items.
|
|
42
|
-
- No section headers under three lines of content.
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: CurdX Spec Mode
|
|
3
|
-
description: Spec-driven verbose style for multi-phase work. Lead with the active phase, cite artifact paths, and never claim done without an evidence block.
|
|
4
|
-
keep-coding-instructions: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CurdX Spec Mode
|
|
8
|
-
|
|
9
|
-
You are still Claude Code. Keep the default coding workflow, safety rules,
|
|
10
|
-
tool usage behavior, and verification discipline. This style adds spec-driven
|
|
11
|
-
discipline on top of the defaults.
|
|
12
|
-
|
|
13
|
-
## When this style fits
|
|
14
|
-
|
|
15
|
-
Use this style during multi-phase CurDX-Flow work — research / requirements /
|
|
16
|
-
design / tasks / execute / verify — when the user wants a clear paper trail
|
|
17
|
-
across phases.
|
|
18
|
-
|
|
19
|
-
## Response priorities
|
|
20
|
-
|
|
21
|
-
1. State the active spec and phase explicitly. If no spec is active, say so.
|
|
22
|
-
2. Lead with the artifact you produced or modified, including its full path
|
|
23
|
-
under `.flow/specs/<active>/`.
|
|
24
|
-
3. Quote the smallest concrete decision that drove the change (one or two
|
|
25
|
-
lines). Do not repeat the full artifact body.
|
|
26
|
-
4. End every reply with one of: `Validated`, `Unvalidated`, `Blocked`. State
|
|
27
|
-
what evidence backs the label.
|
|
28
|
-
5. When proposing a next step, name the exact CurDX-Flow surface that should
|
|
29
|
-
run it (`/curdx-flow:spec --phase=design`, `flow-verifier`, etc.).
|
|
30
|
-
|
|
31
|
-
## Hard rules
|
|
32
|
-
|
|
33
|
-
- Never claim a phase is complete without referencing the produced artifact
|
|
34
|
-
on disk and the gate it passed.
|
|
35
|
-
- Never produce a long architecture essay in chat — that belongs in the
|
|
36
|
-
spec artifact. The reply should point to the file and call out the
|
|
37
|
-
decision taken.
|
|
38
|
-
- Never advance phase state from chat narrative. The phase counter in
|
|
39
|
-
`.state.json` is the source of truth; only the corresponding skill or
|
|
40
|
-
agent is allowed to advance it.
|
|
41
|
-
|
|
42
|
-
## Format
|
|
43
|
-
|
|
44
|
-
- Short headers only when they aid scanning.
|
|
45
|
-
- Bullets for status, prose only for the decision rationale.
|
|
46
|
-
- Match the user's language.
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://curdx-flow.dev/schemas/agent-frontmatter.schema.json",
|
|
4
|
-
"title": "CurdX-Flow Agent Frontmatter",
|
|
5
|
-
"description": "Supported YAML frontmatter fields for agents/*.md plugin subagent definitions. Tracks the canonical field list documented at https://code.claude.com/docs/en/sub-agents.md#supported-frontmatter-fields. The fields `hooks`, `mcpServers`, and `permissionMode` are canonical for non-plugin agents but are silently ignored when an agent is loaded from a plugin (Claude Code security boundary), so this schema intentionally omits them — `additionalProperties: false` rejects them and surfaces the mistake at validation time instead of at runtime.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["name", "description"],
|
|
8
|
-
"additionalProperties": false,
|
|
9
|
-
"properties": {
|
|
10
|
-
"name": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
|
|
13
|
-
},
|
|
14
|
-
"description": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"minLength": 1
|
|
17
|
-
},
|
|
18
|
-
"tools": {
|
|
19
|
-
"oneOf": [
|
|
20
|
-
{ "type": "string" },
|
|
21
|
-
{ "type": "array", "items": { "type": "string" } }
|
|
22
|
-
]
|
|
23
|
-
},
|
|
24
|
-
"disallowedTools": {
|
|
25
|
-
"oneOf": [
|
|
26
|
-
{ "type": "string" },
|
|
27
|
-
{ "type": "array", "items": { "type": "string" } }
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
"model": {
|
|
31
|
-
"type": "string"
|
|
32
|
-
},
|
|
33
|
-
"effort": {
|
|
34
|
-
"type": "string",
|
|
35
|
-
"enum": ["low", "medium", "high", "xhigh", "max"]
|
|
36
|
-
},
|
|
37
|
-
"maxTurns": {
|
|
38
|
-
"type": "integer",
|
|
39
|
-
"minimum": 1
|
|
40
|
-
},
|
|
41
|
-
"skills": {
|
|
42
|
-
"oneOf": [
|
|
43
|
-
{ "type": "string" },
|
|
44
|
-
{ "type": "array", "items": { "type": "string" } }
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
"memory": {
|
|
48
|
-
"type": "string",
|
|
49
|
-
"enum": ["user", "project", "local"]
|
|
50
|
-
},
|
|
51
|
-
"background": {
|
|
52
|
-
"type": "boolean"
|
|
53
|
-
},
|
|
54
|
-
"isolation": {
|
|
55
|
-
"type": "string",
|
|
56
|
-
"enum": ["worktree"]
|
|
57
|
-
},
|
|
58
|
-
"initialPrompt": {
|
|
59
|
-
"type": "string"
|
|
60
|
-
},
|
|
61
|
-
"color": {
|
|
62
|
-
"type": "string",
|
|
63
|
-
"enum": ["red", "blue", "green", "yellow", "purple", "orange", "pink", "cyan"]
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://curdx-flow.dev/schemas/config.schema.json",
|
|
4
|
-
"title": "CurdX-Flow Project Config",
|
|
5
|
-
"description": "Schema for .flow/config.json",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["version", "mode"],
|
|
8
|
-
"properties": {
|
|
9
|
-
"$schema": { "type": "string" },
|
|
10
|
-
"version": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"const": "1.0"
|
|
13
|
-
},
|
|
14
|
-
"mode": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"enum": ["fast", "standard", "enterprise"],
|
|
17
|
-
"description": "Default workflow depth for this project"
|
|
18
|
-
},
|
|
19
|
-
"execution": {
|
|
20
|
-
"type": "object",
|
|
21
|
-
"properties": {
|
|
22
|
-
"strategy": {
|
|
23
|
-
"type": "string",
|
|
24
|
-
"enum": ["auto", "subagent", "stop-hook", "wave", "linear"],
|
|
25
|
-
"default": "auto"
|
|
26
|
-
},
|
|
27
|
-
"max_parallel": {
|
|
28
|
-
"type": "integer",
|
|
29
|
-
"minimum": 1,
|
|
30
|
-
"maximum": 20,
|
|
31
|
-
"default": 5
|
|
32
|
-
},
|
|
33
|
-
"subagent_threshold": {
|
|
34
|
-
"type": "integer",
|
|
35
|
-
"minimum": 1,
|
|
36
|
-
"default": 8,
|
|
37
|
-
"description": "Task count above which subagent strategy is preferred"
|
|
38
|
-
},
|
|
39
|
-
"wave_fail_policy": {
|
|
40
|
-
"type": "string",
|
|
41
|
-
"enum": ["continue-on-single", "stop-on-any"],
|
|
42
|
-
"default": "continue-on-single"
|
|
43
|
-
},
|
|
44
|
-
"recovery_mode": {
|
|
45
|
-
"type": "string",
|
|
46
|
-
"enum": ["manual", "fix-task"],
|
|
47
|
-
"default": "manual",
|
|
48
|
-
"description": "How /curdx-flow:implement handles TASK_FAILED during execution. manual blocks for retry; fix-task inserts targeted [FIX <task>] tasks before retrying."
|
|
49
|
-
},
|
|
50
|
-
"max_fix_tasks_per_original": {
|
|
51
|
-
"type": "integer",
|
|
52
|
-
"minimum": 1,
|
|
53
|
-
"maximum": 5,
|
|
54
|
-
"default": 2,
|
|
55
|
-
"description": "Maximum generated [FIX <task>] tasks allowed for a single original task when recovery_mode is fix-task."
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
"gates": {
|
|
60
|
-
"type": "object",
|
|
61
|
-
"description": "Which quality gates to enable. Gate definitions live in gates/*.md (Phase 3)",
|
|
62
|
-
"properties": {
|
|
63
|
-
"always_on": {
|
|
64
|
-
"type": "array",
|
|
65
|
-
"items": { "$ref": "#/definitions/gateName" },
|
|
66
|
-
"default": ["karpathy-gate", "verification-gate"]
|
|
67
|
-
},
|
|
68
|
-
"standard_mode": {
|
|
69
|
-
"type": "array",
|
|
70
|
-
"items": { "$ref": "#/definitions/gateName" }
|
|
71
|
-
},
|
|
72
|
-
"enterprise_mode": {
|
|
73
|
-
"type": "array",
|
|
74
|
-
"items": { "$ref": "#/definitions/gateName" }
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
"specs": {
|
|
79
|
-
"type": "object",
|
|
80
|
-
"properties": {
|
|
81
|
-
"directories": {
|
|
82
|
-
"type": "array",
|
|
83
|
-
"items": { "type": "string" },
|
|
84
|
-
"default": ["./.flow/specs"],
|
|
85
|
-
"description": "Monorepo-friendly: multiple spec directories supported"
|
|
86
|
-
},
|
|
87
|
-
"default_task_size": {
|
|
88
|
-
"type": "string",
|
|
89
|
-
"enum": ["fine", "coarse"],
|
|
90
|
-
"default": "fine"
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
"addons": {
|
|
95
|
-
"type": "object",
|
|
96
|
-
"properties": {
|
|
97
|
-
"pua": {
|
|
98
|
-
"type": "object",
|
|
99
|
-
"properties": {
|
|
100
|
-
"enabled": { "type": "boolean", "default": false },
|
|
101
|
-
"style": {
|
|
102
|
-
"type": "string",
|
|
103
|
-
"enum": ["alibaba", "bytedance", "huawei", "tencent", "baidu", "pdd", "meituan", "jd", "xiaomi", "netflix", "musk", "jobs", "amazon"]
|
|
104
|
-
},
|
|
105
|
-
"auto_trigger": {
|
|
106
|
-
"type": "string",
|
|
107
|
-
"enum": ["on-failure", "always", "manual"]
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
"created": {
|
|
114
|
-
"type": "string",
|
|
115
|
-
"format": "date"
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
"definitions": {
|
|
119
|
-
"gateName": {
|
|
120
|
-
"type": "string",
|
|
121
|
-
"enum": [
|
|
122
|
-
"karpathy-gate",
|
|
123
|
-
"verification-gate",
|
|
124
|
-
"tdd-gate",
|
|
125
|
-
"test-quality-gate",
|
|
126
|
-
"coverage-audit-gate",
|
|
127
|
-
"adversarial-review-gate",
|
|
128
|
-
"edge-case-gate",
|
|
129
|
-
"security-gate",
|
|
130
|
-
"devex-gate"
|
|
131
|
-
]
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://curdx-flow.dev/schemas/gate-frontmatter.schema.json",
|
|
4
|
-
"title": "CurdX-Flow Gate Frontmatter",
|
|
5
|
-
"description": "Supported YAML frontmatter fields for gates/*.md quality gate definitions.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["gate", "category", "severity", "depends_on"],
|
|
8
|
-
"additionalProperties": false,
|
|
9
|
-
"properties": {
|
|
10
|
-
"gate": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
|
|
13
|
-
},
|
|
14
|
-
"category": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"enum": ["always-on", "standard-mode", "enterprise-mode"]
|
|
17
|
-
},
|
|
18
|
-
"severity": {
|
|
19
|
-
"type": "string",
|
|
20
|
-
"enum": ["blocking", "warning"]
|
|
21
|
-
},
|
|
22
|
-
"depends_on": {
|
|
23
|
-
"type": "array",
|
|
24
|
-
"items": {
|
|
25
|
-
"type": "string",
|
|
26
|
-
"pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://curdx-flow.dev/schemas/hooks.schema.json",
|
|
4
|
-
"title": "CurdX-Flow Hook Configuration",
|
|
5
|
-
"description": "Supported event names and handler shape for hooks/hooks.json.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["hooks"],
|
|
8
|
-
"additionalProperties": false,
|
|
9
|
-
"properties": {
|
|
10
|
-
"hooks": {
|
|
11
|
-
"type": "object",
|
|
12
|
-
"propertyNames": {
|
|
13
|
-
"enum": [
|
|
14
|
-
"SessionStart",
|
|
15
|
-
"InstructionsLoaded",
|
|
16
|
-
"UserPromptSubmit",
|
|
17
|
-
"UserPromptExpansion",
|
|
18
|
-
"PreToolUse",
|
|
19
|
-
"PermissionRequest",
|
|
20
|
-
"PostToolUse",
|
|
21
|
-
"PostToolUseFailure",
|
|
22
|
-
"PostToolBatch",
|
|
23
|
-
"PermissionDenied",
|
|
24
|
-
"Notification",
|
|
25
|
-
"SubagentStart",
|
|
26
|
-
"SubagentStop",
|
|
27
|
-
"TaskCreated",
|
|
28
|
-
"TaskCompleted",
|
|
29
|
-
"Stop",
|
|
30
|
-
"StopFailure",
|
|
31
|
-
"TeammateIdle",
|
|
32
|
-
"ConfigChange",
|
|
33
|
-
"CwdChanged",
|
|
34
|
-
"FileChanged",
|
|
35
|
-
"WorktreeCreate",
|
|
36
|
-
"WorktreeRemove",
|
|
37
|
-
"PreCompact",
|
|
38
|
-
"PostCompact",
|
|
39
|
-
"Elicitation",
|
|
40
|
-
"ElicitationResult",
|
|
41
|
-
"SessionEnd"
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
"additionalProperties": {
|
|
45
|
-
"type": "array",
|
|
46
|
-
"items": { "$ref": "#/definitions/matcherGroup" }
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"definitions": {
|
|
51
|
-
"matcherGroup": {
|
|
52
|
-
"type": "object",
|
|
53
|
-
"required": ["hooks"],
|
|
54
|
-
"additionalProperties": false,
|
|
55
|
-
"properties": {
|
|
56
|
-
"matcher": { "type": "string" },
|
|
57
|
-
"hooks": {
|
|
58
|
-
"type": "array",
|
|
59
|
-
"items": { "$ref": "#/definitions/hookHandler" }
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"hookHandler": {
|
|
64
|
-
"type": "object",
|
|
65
|
-
"required": ["type"],
|
|
66
|
-
"additionalProperties": false,
|
|
67
|
-
"properties": {
|
|
68
|
-
"type": {
|
|
69
|
-
"type": "string",
|
|
70
|
-
"enum": ["command", "http", "mcp_tool", "prompt", "agent"]
|
|
71
|
-
},
|
|
72
|
-
"if": { "type": "string" },
|
|
73
|
-
"timeout": { "type": "integer", "minimum": 1 },
|
|
74
|
-
"statusMessage": { "type": "string" },
|
|
75
|
-
"async": { "type": "boolean" },
|
|
76
|
-
"asyncRewake": { "type": "boolean" },
|
|
77
|
-
"once": { "type": "boolean" },
|
|
78
|
-
"command": { "type": "string" },
|
|
79
|
-
"shell": {
|
|
80
|
-
"type": "string",
|
|
81
|
-
"enum": ["bash", "powershell"]
|
|
82
|
-
},
|
|
83
|
-
"url": { "type": "string" },
|
|
84
|
-
"headers": { "type": "object" },
|
|
85
|
-
"allowedEnvVars": {
|
|
86
|
-
"type": "array",
|
|
87
|
-
"items": { "type": "string" }
|
|
88
|
-
},
|
|
89
|
-
"server": { "type": "string" },
|
|
90
|
-
"tool": { "type": "string" },
|
|
91
|
-
"input": { "type": "object" },
|
|
92
|
-
"prompt": { "type": "string" },
|
|
93
|
-
"model": { "type": "string" }
|
|
94
|
-
},
|
|
95
|
-
"allOf": [
|
|
96
|
-
{
|
|
97
|
-
"if": { "properties": { "type": { "const": "command" } } },
|
|
98
|
-
"then": { "required": ["command"] }
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"if": { "properties": { "type": { "const": "http" } } },
|
|
102
|
-
"then": { "required": ["url"] }
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"if": { "properties": { "type": { "const": "mcp_tool" } } },
|
|
106
|
-
"then": { "required": ["server", "tool"] }
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"if": { "properties": { "type": { "enum": ["prompt", "agent"] } } },
|
|
110
|
-
"then": { "required": ["prompt"] }
|
|
111
|
-
}
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://curdx-flow.dev/schemas/output-style-frontmatter.schema.json",
|
|
4
|
-
"title": "CurdX-Flow Output Style Frontmatter",
|
|
5
|
-
"description": "Supported YAML frontmatter fields for output-styles/*.md.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"required": ["name", "description", "keep-coding-instructions"],
|
|
8
|
-
"additionalProperties": false,
|
|
9
|
-
"properties": {
|
|
10
|
-
"name": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"minLength": 1
|
|
13
|
-
},
|
|
14
|
-
"description": {
|
|
15
|
-
"type": "string",
|
|
16
|
-
"minLength": 1
|
|
17
|
-
},
|
|
18
|
-
"keep-coding-instructions": {
|
|
19
|
-
"type": "boolean"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|