mustflow 2.23.0 → 2.25.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 (80) hide show
  1. package/README.md +12 -2
  2. package/dist/cli/commands/adapters.js +11 -9
  3. package/dist/cli/commands/api.js +263 -113
  4. package/dist/cli/commands/check.js +11 -7
  5. package/dist/cli/commands/classify.js +16 -42
  6. package/dist/cli/commands/context.js +18 -31
  7. package/dist/cli/commands/contract-lint.js +12 -7
  8. package/dist/cli/commands/dashboard.js +65 -114
  9. package/dist/cli/commands/docs.js +43 -26
  10. package/dist/cli/commands/doctor.js +11 -7
  11. package/dist/cli/commands/evidence.js +642 -0
  12. package/dist/cli/commands/explain-verify.js +1 -59
  13. package/dist/cli/commands/explain.js +84 -36
  14. package/dist/cli/commands/handoff.js +13 -17
  15. package/dist/cli/commands/impact.js +14 -20
  16. package/dist/cli/commands/index.js +15 -9
  17. package/dist/cli/commands/init.js +56 -70
  18. package/dist/cli/commands/line-endings.js +15 -9
  19. package/dist/cli/commands/map.js +30 -42
  20. package/dist/cli/commands/next.js +300 -0
  21. package/dist/cli/commands/onboard.js +136 -0
  22. package/dist/cli/commands/run.js +47 -42
  23. package/dist/cli/commands/search.js +43 -69
  24. package/dist/cli/commands/status.js +9 -6
  25. package/dist/cli/commands/update.js +16 -10
  26. package/dist/cli/commands/upgrade.js +9 -6
  27. package/dist/cli/commands/verify/args.js +55 -249
  28. package/dist/cli/commands/verify.js +2 -1
  29. package/dist/cli/commands/version-sources.js +9 -6
  30. package/dist/cli/commands/version.js +9 -6
  31. package/dist/cli/commands/workspace.js +564 -0
  32. package/dist/cli/i18n/en.js +60 -1
  33. package/dist/cli/i18n/es.js +60 -1
  34. package/dist/cli/i18n/fr.js +60 -1
  35. package/dist/cli/i18n/hi.js +60 -1
  36. package/dist/cli/i18n/ko.js +60 -1
  37. package/dist/cli/i18n/zh.js +60 -1
  38. package/dist/cli/index.js +28 -25
  39. package/dist/cli/lib/agent-context.js +8 -9
  40. package/dist/cli/lib/command-registry.js +24 -0
  41. package/dist/cli/lib/dashboard-html/client-script.js +1 -1
  42. package/dist/cli/lib/local-index/database-path.js +5 -0
  43. package/dist/cli/lib/local-index/database-read.js +88 -0
  44. package/dist/cli/lib/local-index/effect-graph-read-model.js +112 -0
  45. package/dist/cli/lib/local-index/freshness.js +60 -0
  46. package/dist/cli/lib/local-index/index.js +12 -1866
  47. package/dist/cli/lib/local-index/path-surface-read-model.js +134 -0
  48. package/dist/cli/lib/local-index/populate.js +474 -0
  49. package/dist/cli/lib/local-index/schema.js +413 -0
  50. package/dist/cli/lib/local-index/search-read-model.js +533 -0
  51. package/dist/cli/lib/local-index/search-text.js +79 -0
  52. package/dist/cli/lib/option-parser.js +93 -0
  53. package/dist/cli/lib/repo-map.js +2 -2
  54. package/dist/cli/lib/run-plan.js +5 -22
  55. package/dist/core/change-verification.js +11 -5
  56. package/dist/core/command-effects.js +1 -3
  57. package/dist/core/command-intent-eligibility.js +14 -0
  58. package/dist/core/command-preconditions.js +8 -4
  59. package/dist/core/command-run-constraints.js +43 -0
  60. package/dist/core/public-json-contracts.js +57 -0
  61. package/dist/core/test-selection.js +8 -2
  62. package/dist/core/verification-plan.js +32 -4
  63. package/package.json +1 -1
  64. package/schemas/README.md +16 -0
  65. package/schemas/api-serve-response.schema.json +89 -0
  66. package/schemas/change-verification-report.schema.json +4 -1
  67. package/schemas/contract-lint-report.schema.json +1 -0
  68. package/schemas/evidence-report.schema.json +287 -0
  69. package/schemas/explain-report.schema.json +4 -0
  70. package/schemas/next-report.schema.json +121 -0
  71. package/schemas/onboard-commands-report.schema.json +100 -0
  72. package/schemas/workspace-command-catalog.schema.json +172 -0
  73. package/schemas/workspace-status.schema.json +141 -0
  74. package/schemas/workspace-verification-plan.schema.json +195 -0
  75. package/templates/default/i18n.toml +1 -1
  76. package/templates/default/locales/en/.mustflow/skills/INDEX.md +2 -1
  77. package/templates/default/locales/en/.mustflow/skills/clarifying-question-gate/SKILL.md +183 -0
  78. package/templates/default/locales/en/.mustflow/skills/routes.toml +7 -1
  79. package/templates/default/locales/en/.mustflow/skills/structure-discovery-gate/SKILL.md +63 -20
  80. package/templates/default/manifest.toml +8 -1
@@ -0,0 +1,172 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/workspace-command-catalog.schema.json",
4
+ "title": "mustflow workspace command catalog report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "mustflow_root",
11
+ "workspace",
12
+ "policy",
13
+ "repository_count",
14
+ "total_intent_count",
15
+ "runnable_intent_count",
16
+ "repositories",
17
+ "issues"
18
+ ],
19
+ "properties": {
20
+ "schema_version": { "const": "1" },
21
+ "command": { "const": "workspace command-catalog" },
22
+ "mustflow_root": { "type": "string" },
23
+ "workspace": { "$ref": "#/$defs/workspace" },
24
+ "policy": { "$ref": "#/$defs/policy" },
25
+ "repository_count": { "type": "integer", "minimum": 0 },
26
+ "total_intent_count": { "type": "integer", "minimum": 0 },
27
+ "runnable_intent_count": { "type": "integer", "minimum": 0 },
28
+ "repositories": {
29
+ "type": "array",
30
+ "items": { "$ref": "#/$defs/repository" }
31
+ },
32
+ "issues": { "$ref": "#/$defs/stringArray" }
33
+ },
34
+ "$defs": {
35
+ "stringArray": {
36
+ "type": "array",
37
+ "items": { "type": "string" }
38
+ },
39
+ "nullableString": {
40
+ "type": ["string", "null"]
41
+ },
42
+ "workspace": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "required": [
46
+ "enabled",
47
+ "roots",
48
+ "max_depth",
49
+ "max_repositories",
50
+ "follow_symlinks",
51
+ "stop_at_repository_root"
52
+ ],
53
+ "properties": {
54
+ "enabled": { "type": "boolean" },
55
+ "roots": { "$ref": "#/$defs/stringArray" },
56
+ "max_depth": { "type": "integer", "minimum": 1 },
57
+ "max_repositories": { "type": "integer", "minimum": 1 },
58
+ "follow_symlinks": { "type": "boolean" },
59
+ "stop_at_repository_root": { "type": "boolean" }
60
+ }
61
+ },
62
+ "policy": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": [
66
+ "mode",
67
+ "grants_command_authority",
68
+ "parent_root_grants_child_authority",
69
+ "command_authority_per_root",
70
+ "run_entrypoint_per_root",
71
+ "executes_commands",
72
+ "raw_commands_included"
73
+ ],
74
+ "properties": {
75
+ "mode": { "const": "read_only" },
76
+ "grants_command_authority": { "const": false },
77
+ "parent_root_grants_child_authority": { "const": false },
78
+ "command_authority_per_root": { "const": ".mustflow/config/commands.toml" },
79
+ "run_entrypoint_per_root": { "const": "mf run <intent>" },
80
+ "executes_commands": { "const": false },
81
+ "raw_commands_included": { "const": false }
82
+ }
83
+ },
84
+ "commandSurface": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": [
88
+ "path",
89
+ "exists",
90
+ "parse_error",
91
+ "total_intents",
92
+ "runnable_count",
93
+ "runnable_intents",
94
+ "blocked_count"
95
+ ],
96
+ "properties": {
97
+ "path": { "$ref": "#/$defs/nullableString" },
98
+ "exists": { "type": "boolean" },
99
+ "parse_error": { "$ref": "#/$defs/nullableString" },
100
+ "total_intents": { "type": ["integer", "null"], "minimum": 0 },
101
+ "runnable_count": { "type": ["integer", "null"], "minimum": 0 },
102
+ "runnable_intents": { "$ref": "#/$defs/stringArray" },
103
+ "blocked_count": { "type": ["integer", "null"], "minimum": 0 }
104
+ }
105
+ },
106
+ "repository": {
107
+ "type": "object",
108
+ "additionalProperties": false,
109
+ "required": [
110
+ "relative_path",
111
+ "status",
112
+ "command_contract",
113
+ "intent_count",
114
+ "runnable_count",
115
+ "blocked_count",
116
+ "intents",
117
+ "issues"
118
+ ],
119
+ "properties": {
120
+ "relative_path": { "type": "string" },
121
+ "status": { "enum": ["available", "contract_missing", "contract_invalid"] },
122
+ "command_contract": { "$ref": "#/$defs/commandSurface" },
123
+ "intent_count": { "type": "integer", "minimum": 0 },
124
+ "runnable_count": { "type": "integer", "minimum": 0 },
125
+ "blocked_count": { "type": "integer", "minimum": 0 },
126
+ "intents": {
127
+ "type": "array",
128
+ "items": { "$ref": "#/$defs/intent" }
129
+ },
130
+ "issues": { "$ref": "#/$defs/stringArray" }
131
+ }
132
+ },
133
+ "intent": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "required": [
137
+ "name",
138
+ "description",
139
+ "status",
140
+ "lifecycle",
141
+ "run_policy",
142
+ "runnable",
143
+ "reason_code",
144
+ "detail",
145
+ "run_command",
146
+ "run_from_repository",
147
+ "timeout_seconds",
148
+ "required_after",
149
+ "writes",
150
+ "network",
151
+ "destructive"
152
+ ],
153
+ "properties": {
154
+ "name": { "type": "string" },
155
+ "description": { "$ref": "#/$defs/nullableString" },
156
+ "status": { "$ref": "#/$defs/nullableString" },
157
+ "lifecycle": { "$ref": "#/$defs/nullableString" },
158
+ "run_policy": { "$ref": "#/$defs/nullableString" },
159
+ "runnable": { "type": "boolean" },
160
+ "reason_code": { "$ref": "#/$defs/nullableString" },
161
+ "detail": { "$ref": "#/$defs/nullableString" },
162
+ "run_command": { "$ref": "#/$defs/nullableString" },
163
+ "run_from_repository": { "type": "string" },
164
+ "timeout_seconds": { "type": ["integer", "null"], "minimum": 1 },
165
+ "required_after": { "$ref": "#/$defs/stringArray" },
166
+ "writes": { "$ref": "#/$defs/stringArray" },
167
+ "network": { "type": ["boolean", "null"] },
168
+ "destructive": { "type": ["boolean", "null"] }
169
+ }
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,141 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/workspace-status.schema.json",
4
+ "title": "mustflow workspace status report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "mustflow_root",
11
+ "workspace",
12
+ "policy",
13
+ "repository_count",
14
+ "repositories",
15
+ "issues"
16
+ ],
17
+ "properties": {
18
+ "schema_version": { "const": "1" },
19
+ "command": { "const": "workspace status" },
20
+ "mustflow_root": { "type": "string" },
21
+ "workspace": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": [
25
+ "enabled",
26
+ "roots",
27
+ "max_depth",
28
+ "max_repositories",
29
+ "follow_symlinks",
30
+ "stop_at_repository_root"
31
+ ],
32
+ "properties": {
33
+ "enabled": { "type": "boolean" },
34
+ "roots": { "$ref": "#/$defs/stringArray" },
35
+ "max_depth": { "type": "integer", "minimum": 1 },
36
+ "max_repositories": { "type": "integer", "minimum": 1 },
37
+ "follow_symlinks": { "type": "boolean" },
38
+ "stop_at_repository_root": { "type": "boolean" }
39
+ }
40
+ },
41
+ "policy": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "required": [
45
+ "mode",
46
+ "grants_command_authority",
47
+ "parent_root_grants_child_authority",
48
+ "command_authority_per_root",
49
+ "run_entrypoint_per_root",
50
+ "executes_commands",
51
+ "raw_commands_included"
52
+ ],
53
+ "properties": {
54
+ "mode": { "const": "read_only" },
55
+ "grants_command_authority": { "const": false },
56
+ "parent_root_grants_child_authority": { "const": false },
57
+ "command_authority_per_root": { "const": ".mustflow/config/commands.toml" },
58
+ "run_entrypoint_per_root": { "const": "mf run <intent>" },
59
+ "executes_commands": { "const": false },
60
+ "raw_commands_included": { "const": false }
61
+ }
62
+ },
63
+ "repository_count": { "type": "integer", "minimum": 0 },
64
+ "repositories": {
65
+ "type": "array",
66
+ "items": { "$ref": "#/$defs/repository" }
67
+ },
68
+ "issues": { "$ref": "#/$defs/stringArray" }
69
+ },
70
+ "$defs": {
71
+ "stringArray": {
72
+ "type": "array",
73
+ "items": { "type": "string" }
74
+ },
75
+ "nullableString": {
76
+ "type": ["string", "null"]
77
+ },
78
+ "commandSurface": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "required": [
82
+ "path",
83
+ "exists",
84
+ "parse_error",
85
+ "total_intents",
86
+ "runnable_count",
87
+ "runnable_intents",
88
+ "blocked_count"
89
+ ],
90
+ "properties": {
91
+ "path": { "$ref": "#/$defs/nullableString" },
92
+ "exists": { "type": "boolean" },
93
+ "parse_error": { "$ref": "#/$defs/nullableString" },
94
+ "total_intents": { "type": ["integer", "null"], "minimum": 0 },
95
+ "runnable_count": { "type": ["integer", "null"], "minimum": 0 },
96
+ "runnable_intents": { "$ref": "#/$defs/stringArray" },
97
+ "blocked_count": { "type": ["integer", "null"], "minimum": 0 }
98
+ }
99
+ },
100
+ "repository": {
101
+ "type": "object",
102
+ "additionalProperties": false,
103
+ "required": [
104
+ "relative_path",
105
+ "status",
106
+ "git_repository",
107
+ "mustflow",
108
+ "agent_rules",
109
+ "repo_map",
110
+ "mustflow_config",
111
+ "command_contract",
112
+ "context_index",
113
+ "skill_index",
114
+ "root_document_count",
115
+ "machine_contract_count",
116
+ "manifest_count",
117
+ "command_adapter_count",
118
+ "editing_policy_count",
119
+ "issues"
120
+ ],
121
+ "properties": {
122
+ "relative_path": { "type": "string" },
123
+ "status": { "enum": ["mustflow_ready", "contract_missing", "contract_invalid"] },
124
+ "git_repository": { "const": true },
125
+ "mustflow": { "type": "boolean" },
126
+ "agent_rules": { "$ref": "#/$defs/nullableString" },
127
+ "repo_map": { "$ref": "#/$defs/nullableString" },
128
+ "mustflow_config": { "$ref": "#/$defs/nullableString" },
129
+ "command_contract": { "$ref": "#/$defs/commandSurface" },
130
+ "context_index": { "$ref": "#/$defs/nullableString" },
131
+ "skill_index": { "$ref": "#/$defs/nullableString" },
132
+ "root_document_count": { "type": "integer", "minimum": 0 },
133
+ "machine_contract_count": { "type": "integer", "minimum": 0 },
134
+ "manifest_count": { "type": "integer", "minimum": 0 },
135
+ "command_adapter_count": { "type": "integer", "minimum": 0 },
136
+ "editing_policy_count": { "type": "integer", "minimum": 0 },
137
+ "issues": { "$ref": "#/$defs/stringArray" }
138
+ }
139
+ }
140
+ }
141
+ }
@@ -0,0 +1,195 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mustflow.github.io/schemas/workspace-verification-plan.schema.json",
4
+ "title": "mustflow workspace verification plan report",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema_version",
9
+ "command",
10
+ "mustflow_root",
11
+ "workspace",
12
+ "policy",
13
+ "repository_count",
14
+ "total_changed_file_count",
15
+ "total_requirement_count",
16
+ "total_selected_intent_count",
17
+ "total_gap_count",
18
+ "repositories",
19
+ "issues"
20
+ ],
21
+ "properties": {
22
+ "schema_version": { "const": "1" },
23
+ "command": { "const": "workspace verify" },
24
+ "mustflow_root": { "type": "string" },
25
+ "workspace": { "$ref": "#/$defs/workspace" },
26
+ "policy": { "$ref": "#/$defs/policy" },
27
+ "repository_count": { "type": "integer", "minimum": 0 },
28
+ "total_changed_file_count": { "type": "integer", "minimum": 0 },
29
+ "total_requirement_count": { "type": "integer", "minimum": 0 },
30
+ "total_selected_intent_count": { "type": "integer", "minimum": 0 },
31
+ "total_gap_count": { "type": "integer", "minimum": 0 },
32
+ "repositories": {
33
+ "type": "array",
34
+ "items": { "$ref": "#/$defs/repository" }
35
+ },
36
+ "issues": { "$ref": "#/$defs/stringArray" }
37
+ },
38
+ "$defs": {
39
+ "stringArray": {
40
+ "type": "array",
41
+ "items": { "type": "string" }
42
+ },
43
+ "nullableString": {
44
+ "type": ["string", "null"]
45
+ },
46
+ "workspace": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "required": [
50
+ "enabled",
51
+ "roots",
52
+ "max_depth",
53
+ "max_repositories",
54
+ "follow_symlinks",
55
+ "stop_at_repository_root"
56
+ ],
57
+ "properties": {
58
+ "enabled": { "type": "boolean" },
59
+ "roots": { "$ref": "#/$defs/stringArray" },
60
+ "max_depth": { "type": "integer", "minimum": 1 },
61
+ "max_repositories": { "type": "integer", "minimum": 1 },
62
+ "follow_symlinks": { "type": "boolean" },
63
+ "stop_at_repository_root": { "type": "boolean" }
64
+ }
65
+ },
66
+ "policy": {
67
+ "type": "object",
68
+ "additionalProperties": false,
69
+ "required": [
70
+ "mode",
71
+ "grants_command_authority",
72
+ "parent_root_grants_child_authority",
73
+ "command_authority_per_root",
74
+ "run_entrypoint_per_root",
75
+ "executes_commands",
76
+ "raw_commands_included",
77
+ "plan_command_per_root",
78
+ "selected_intents_run_via"
79
+ ],
80
+ "properties": {
81
+ "mode": { "const": "read_only" },
82
+ "grants_command_authority": { "const": false },
83
+ "parent_root_grants_child_authority": { "const": false },
84
+ "command_authority_per_root": { "const": ".mustflow/config/commands.toml" },
85
+ "run_entrypoint_per_root": { "const": "mf run <intent>" },
86
+ "executes_commands": { "const": false },
87
+ "raw_commands_included": { "const": false },
88
+ "plan_command_per_root": { "const": "mf verify --changed --plan-only --json" },
89
+ "selected_intents_run_via": { "const": "mf run <intent>" }
90
+ }
91
+ },
92
+ "commandSurface": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": [
96
+ "path",
97
+ "exists",
98
+ "parse_error",
99
+ "total_intents",
100
+ "runnable_count",
101
+ "runnable_intents",
102
+ "blocked_count"
103
+ ],
104
+ "properties": {
105
+ "path": { "$ref": "#/$defs/nullableString" },
106
+ "exists": { "type": "boolean" },
107
+ "parse_error": { "$ref": "#/$defs/nullableString" },
108
+ "total_intents": { "type": ["integer", "null"], "minimum": 0 },
109
+ "runnable_count": { "type": ["integer", "null"], "minimum": 0 },
110
+ "runnable_intents": { "$ref": "#/$defs/stringArray" },
111
+ "blocked_count": { "type": ["integer", "null"], "minimum": 0 }
112
+ }
113
+ },
114
+ "repository": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": [
118
+ "relative_path",
119
+ "status",
120
+ "command_contract",
121
+ "changed_file_count",
122
+ "changed_files",
123
+ "verification_plan_id",
124
+ "requirement_count",
125
+ "candidate_count",
126
+ "selected_intent_count",
127
+ "gap_count",
128
+ "selected_intents",
129
+ "gaps",
130
+ "issues"
131
+ ],
132
+ "properties": {
133
+ "relative_path": { "type": "string" },
134
+ "status": {
135
+ "enum": [
136
+ "available",
137
+ "contract_missing",
138
+ "contract_invalid",
139
+ "git_unavailable",
140
+ "plan_unavailable"
141
+ ]
142
+ },
143
+ "command_contract": { "$ref": "#/$defs/commandSurface" },
144
+ "changed_file_count": { "type": ["integer", "null"], "minimum": 0 },
145
+ "changed_files": { "$ref": "#/$defs/stringArray" },
146
+ "verification_plan_id": {
147
+ "type": ["string", "null"],
148
+ "pattern": "^sha256:[0-9a-f]{64}$"
149
+ },
150
+ "requirement_count": { "type": "integer", "minimum": 0 },
151
+ "candidate_count": { "type": "integer", "minimum": 0 },
152
+ "selected_intent_count": { "type": "integer", "minimum": 0 },
153
+ "gap_count": { "type": "integer", "minimum": 0 },
154
+ "selected_intents": {
155
+ "type": "array",
156
+ "items": { "$ref": "#/$defs/selectedIntent" }
157
+ },
158
+ "gaps": {
159
+ "type": "array",
160
+ "items": { "$ref": "#/$defs/gap" }
161
+ },
162
+ "issues": { "$ref": "#/$defs/stringArray" }
163
+ }
164
+ },
165
+ "selectedIntent": {
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": [
169
+ "intent",
170
+ "run_command",
171
+ "run_from_repository",
172
+ "locks",
173
+ "conflict_count"
174
+ ],
175
+ "properties": {
176
+ "intent": { "type": "string" },
177
+ "run_command": { "$ref": "#/$defs/nullableString" },
178
+ "run_from_repository": { "type": "string" },
179
+ "locks": { "$ref": "#/$defs/stringArray" },
180
+ "conflict_count": { "type": "integer", "minimum": 0 }
181
+ }
182
+ },
183
+ "gap": {
184
+ "type": "object",
185
+ "additionalProperties": false,
186
+ "required": ["reason", "files", "surfaces", "detail"],
187
+ "properties": {
188
+ "reason": { "type": "string" },
189
+ "files": { "$ref": "#/$defs/stringArray" },
190
+ "surfaces": { "$ref": "#/$defs/stringArray" },
191
+ "detail": { "type": "string" }
192
+ }
193
+ }
194
+ }
195
+ }
@@ -409,7 +409,7 @@ translations = {}
409
409
  [documents."skill.structure-discovery-gate"]
410
410
  source = "locales/en/.mustflow/skills/structure-discovery-gate/SKILL.md"
411
411
  source_locale = "en"
412
- revision = 27
412
+ revision = 28
413
413
  translations = {}
414
414
 
415
415
  [documents."skill.state-machine-pattern"]
@@ -98,6 +98,7 @@ routes. Event routes stay inactive until their event occurs.
98
98
  | --- | --- | --- | --- | --- | --- | --- |
99
99
  | Code changes need review before report | `.mustflow/skills/code-review/SKILL.md` | Diff and task goal | Changed files | behavior and regression | `test`, `test_related`, `test_audit`, `lint` | Findings or no-issue note |
100
100
  | An unfamiliar codebase area needs an evidence-based map before planning, implementation, or reporting | `.mustflow/skills/codebase-orientation/SKILL.md` | User request, target area, relevant instructions, and current source, test, schema, template, configuration, or documentation files | Read-only orientation notes and any smallest follow-up edit chosen from inspected evidence | stale documentation, wrong ownership boundary, or invented architecture claim | `changes_status`, `changes_diff_summary`, `mustflow_check` | Scope inspected, entrypoints, flow map, ownership boundaries, verification options, risks, unknowns, and smallest safe next step |
101
+ | A coding task has missing intent, scope, domain, data, security, UX, dependency, architecture, or verification decisions that cannot be safely inferred from repository evidence | `.mustflow/skills/clarifying-question-gate/SKILL.md` | User request, inspected repository evidence, unresolved decisions, reversibility classification, recommended option, and tradeoffs | Blocking questions, safe assumptions, and the smallest safe implementation boundary | over-questioning, lazy questions, expensive wrong assumptions, user-owned decision drift, data loss, auth bypass, public-contract drift, dependency bloat, or unverifiable completion | `changes_status`, `changes_diff_summary`, `mustflow_check` | Repository evidence inspected, blocking questions with recommendations, safe assumptions, selected scope, verification, and remaining ambiguity |
101
102
  | HTTP, REST, GraphQL, tRPC, Hono RPC, Elysia Eden, gRPC, protobuf, OpenAPI, request/response schema, status code, header, error envelope, pagination, filtering, sorting, search, generated client, SDK, mock, fixture, or API docs contract is created or changed | `.mustflow/skills/api-contract-change/SKILL.md` | API style, contract source of truth, changed operations, request and response schemas, status and headers, error envelope, auth and permission behavior, pagination/filter/sort/search semantics, generated clients, SDKs, mocks, fixtures, callers, docs, and command contract entries | Routes, handlers, resolvers, validators, schemas, generated clients, SDKs, mocks, fixtures, docs, tests, and directly synchronized examples | route-only change, schema drift, generated-client breakage, hidden breaking change, status or error drift, pagination/search semantic drift, auth/permission drift, or stale docs examples | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | API contract source, changed operations, compatibility classification, synchronized client/schema/docs/tests surfaces, verification, and remaining API contract risk |
102
103
  | TypeScript source, declarations, tsconfig, package exports, module resolution, public API, or TypeScript tests are created or changed | `.mustflow/skills/typescript-code-change/SKILL.md` | TypeScript config, package entry metadata, target runtime, changed files, and command contract entries | TypeScript source, declarations, compiler config, exports, tests, and directly synchronized docs | weakened type safety, module drift, public API drift, or unverified declaration output | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `mustflow_check` | Runtime, module, type, and public API boundary checked, changes made, verification, and remaining TypeScript risk |
103
104
  | JavaScript source, module format, package entry, browser or Node runtime, dependency usage, Promise handling, bundler config, or JavaScript tests are created or changed | `.mustflow/skills/javascript-code-change/SKILL.md` | Package metadata, module system, runtime target, entrypoints, changed files, and command contract entries | JavaScript source, package exports, bundler config, dependencies, tests, and docs examples | runtime API leakage, ESM/CJS drift, discarded Promise, dependency bloat, or broken package entry | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `mustflow_check` | Runtime and module boundary checked, async and dependency notes, verification, and remaining JavaScript risk |
@@ -110,7 +111,7 @@ routes. Event routes stay inactive until their event occurs.
110
111
  | Source anchors are added, revised, reviewed, or used to mark a module boundary | `.mustflow/skills/source-anchor-authoring/SKILL.md` | Target files, anchor reason, nearby anchors, source-anchor policy, and validation surface | Source anchors and directly related workflow docs or comments | comment bloat, authority drift, false verification claims, or hidden module pressure | `mustflow_check`, `docs_validate_fast` | Anchor placement decision, field choices, module-boundary handoff, and verification |
111
112
  | Changed files need risk classification and verification selection | `.mustflow/skills/diff-risk-review/SKILL.md` | Changed-file list, diff summary, and task goal | Changed surfaces and verification report | under- or over-verification | `changes_status`, `changes_diff_summary`, `test`, `test_related`, `test_audit`, `lint`, `build`, `docs_validate`, `mustflow_check` | Risk level, verification choice, rollback notes |
112
113
  | CLI execution duration, build time, bundle size, test scheduling logic, process spawning, or CLI performance claims are planned, edited, or reported | `.mustflow/skills/performance-budget-check/SKILL.md` | Performance surface, budget source, measurement method, and baseline metrics | Budget checks, CLI duration, bundle weight, scheduling optimization notes, measurements, and tests | invented budgets, stale measurements, child-process bottlenecks, or unverified speed claims | `changes_status`, `changes_diff_summary`, `build`, `test_related`, `docs_validate_fast`, `test_release`, `mustflow_check` | Performance surface, budget source, measurements, execution duration, bundle size, and remaining risks |
113
- | New feature, module, folder layout, architecture, scaffold, refactor, routing, data model, frontend/backend/database/infrastructure choice, database engine choice, managed database extension choice, auth identity ownership, public URL contract, data residency policy, runtime patchability, runtime portability, global-ready locale/country/currency/timezone/money model, server-side authorization boundary, file upload or storage strategy, API response contract, content-heavy product, semantic content blocks, filter URL policy, admin operation model, cache strategy, content lifecycle, asset strategy, claim or fact registry, content graph, source collection flow, user-state layer, core/application/delivery/infra boundary, framework-magic boundary, core versus auxiliary path boundary, operational versus analytics boundary, HTTP-to-worker boundary, job or outbox model, backup/restore assumption, vendor or platform exit path, external-service truth ownership, search/queue/log/analytics portability, operational reproducibility, observability identifier flow, deployment-state portability, CI/CD dashboard dependency, ecosystem or maintainer-risk placement, multi-server state boundary, vertical-to-horizontal scaling boundary, AI usage cost boundary, AI gateway hard-limit boundary, pricing-growth boundary, failure-isolation boundary, or external service integration may require hidden structure decisions before coding | `.mustflow/skills/structure-discovery-gate/SKILL.md` | User request, intended capability, hidden assumptions, named technologies or services, future content/API/rendering/data assumptions, database operating-shape assumptions, managed database feature assumptions, identity and provider-id assumptions, public URL assumptions, data location assumptions, runtime patch and portability assumptions, delivery/application/core/infra assumptions, global data assumptions, authorization assumptions, file-storage assumptions, source/provenance assumptions, lifecycle/asset/claim assumptions, user-state assumptions, admin/cache assumptions, core path and auxiliary path assumptions, async work assumptions, restore assumptions, vendor exit and replacement assumptions, external-service source-of-truth assumptions, search/queue/log/analytics reconstruction assumptions, operating-state reproduction assumptions, observability identifier assumptions, CI/CD reproducibility assumptions, dependency ecosystem and maintainer assumptions, pricing value/cost unit assumptions, failure-policy assumptions, AI gateway or cost assumptions, and relevant local patterns | Questions, assumptions, proposed file boundaries, and the smallest resulting implementation | brittle structure, vendor-name leakage, migration debt, lock-in debt, provider-id leakage, raw storage URL leakage, weak data location proof, unpatchable runtime, runtime-specific core logic, framework business-rule coupling, SaaS-only core state, weak search or queue reconstruction, weak global data model, weak server authorization, process-memory state leak, untracked AI cost, provider-budget-only AI protection, value/cost pricing mismatch, hidden dashboard deployment state, fragile single-maintainer core dependency, hidden operating state, broken traceability, file/storage drift, screen-shaped API coupling, core-path coupling, retry or worker coupling, unbounded failure radius, over-questioning, or speculative abstraction | `changes_status`, `changes_diff_summary`, `docs_validate_fast`, `test_release`, `mustflow_check` | Blocking questions, assumptions, proposed files and responsibilities, upfront versus deferred structure decisions, borrowed service versus owned contract boundary, dependency direction, database, identity, public URL, data residency, runtime patchability and portability, global data, authorization, file-storage, API, vendor exit, external-service truth ownership, search/queue/log/analytics portability, operational reproducibility, CI/CD reproducibility, dependency risk, observability identity flow, pricing value/cost boundary, AI gateway boundary, core/application/delivery/infra boundaries, core and auxiliary boundaries, async work boundary, local pattern, verification, and remaining structure risk |
114
+ | New feature, ambiguous or complex design request, pre-implementation design gate, module, folder layout, architecture, scaffold, refactor, routing, data model, frontend/backend/database/infrastructure choice, database engine choice, managed database extension choice, auth identity ownership, public URL contract, data residency policy, runtime patchability, runtime portability, global-ready locale/country/currency/timezone/money model, server-side authorization boundary, file upload or storage strategy, API response contract, content-heavy product, semantic content blocks, filter URL policy, admin operation model, cache strategy, content lifecycle, asset strategy, claim or fact registry, content graph, source collection flow, user-state layer, core/application/delivery/infra boundary, framework-magic boundary, core versus auxiliary path boundary, operational versus analytics boundary, HTTP-to-worker boundary, job or outbox model, backup/restore assumption, vendor or platform exit path, external-service truth ownership, search/queue/log/analytics portability, operational reproducibility, observability identifier flow, deployment-state portability, CI/CD dashboard dependency, ecosystem or maintainer-risk placement, multi-server state boundary, vertical-to-horizontal scaling boundary, AI usage cost boundary, AI gateway hard-limit boundary, pricing-growth boundary, failure-isolation boundary, or external service integration may require hidden structure decisions before coding | `.mustflow/skills/structure-discovery-gate/SKILL.md` | User request, intended capability, design gate classification, restated requirement, success criteria, non-goals, compatibility boundaries, hidden assumptions, named technologies or services, future content/API/rendering/data assumptions, database operating-shape assumptions, managed database feature assumptions, identity and provider-id assumptions, public URL assumptions, data location assumptions, runtime patch and portability assumptions, delivery/application/core/infra assumptions, global data assumptions, authorization assumptions, file-storage assumptions, source/provenance assumptions, lifecycle/asset/claim assumptions, user-state assumptions, admin/cache assumptions, core path and auxiliary path assumptions, async work assumptions, restore assumptions, vendor exit and replacement assumptions, external-service source-of-truth assumptions, search/queue/log/analytics reconstruction assumptions, operating-state reproduction assumptions, observability identifier assumptions, CI/CD reproducibility assumptions, dependency ecosystem and maintainer assumptions, pricing value/cost unit assumptions, failure-policy assumptions, AI gateway or cost assumptions, and relevant local patterns | Questions, assumptions, proposed file boundaries, and the smallest resulting implementation | brittle structure, vendor-name leakage, migration debt, lock-in debt, provider-id leakage, raw storage URL leakage, weak data location proof, unpatchable runtime, runtime-specific core logic, framework business-rule coupling, SaaS-only core state, weak search or queue reconstruction, weak global data model, weak server authorization, process-memory state leak, untracked AI cost, provider-budget-only AI protection, value/cost pricing mismatch, hidden dashboard deployment state, fragile single-maintainer core dependency, hidden operating state, broken traceability, file/storage drift, screen-shaped API coupling, core-path coupling, retry or worker coupling, unbounded failure radius, over-questioning, or speculative abstraction | `changes_status`, `changes_diff_summary`, `docs_validate_fast`, `test_release`, `mustflow_check` | Design gate classification, restated requirement, success criteria, blocking questions, recommended defaults, assumptions, proposed files and responsibilities, upfront versus deferred structure decisions, borrowed service versus owned contract boundary, dependency direction, database, identity, public URL, data residency, runtime patchability and portability, global data, authorization, file-storage, API, vendor exit, external-service truth ownership, search/queue/log/analytics portability, operational reproducibility, CI/CD reproducibility, dependency risk, observability identity flow, pricing value/cost boundary, AI gateway boundary, core/application/delivery/infra boundaries, core and auxiliary boundaries, async work boundary, local pattern, verification, and remaining structure risk |
114
115
 
115
116
  ### Tests and Regression
116
117