mustflow 2.39.1 → 2.58.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/dist/cli/commands/run/executor.js +16 -0
- package/dist/cli/commands/run/process-tree.js +6 -3
- package/dist/cli/commands/verify.js +3 -1
- package/dist/cli/lib/git-changes.js +11 -1
- package/dist/cli/lib/i18n.js +1 -1
- package/dist/cli/lib/local-index/index.js +8 -4
- package/dist/cli/lib/local-index/populate.js +17 -3
- package/dist/cli/lib/local-index/search-read-model.js +9 -7
- package/dist/cli/lib/local-index/search-text.js +2 -2
- package/dist/cli/lib/local-index/workflow-documents.js +17 -2
- package/dist/cli/lib/mustflow-read.js +14 -2
- package/dist/cli/lib/repo-map.js +16 -3
- package/dist/cli/lib/templates.js +8 -7
- package/dist/cli/lib/validation/constants.js +1 -1
- package/dist/core/active-run-locks.js +78 -20
- package/dist/core/change-classification.js +4 -0
- package/dist/core/command-contract-rules.js +1 -1
- package/dist/core/command-contract-validation.js +1 -1
- package/dist/core/command-cwd.js +13 -2
- package/dist/core/command-effects.js +22 -4
- package/dist/core/command-env.js +8 -6
- package/dist/core/command-preconditions.js +28 -2
- package/dist/core/completion-verdict.js +1 -1
- package/dist/core/line-endings.js +8 -4
- package/dist/core/safe-filesystem.js +9 -1
- package/dist/core/source-anchor-validation.js +7 -1
- package/dist/core/source-anchors.js +8 -2
- package/dist/core/verification-scheduler.js +8 -2
- package/package.json +1 -1
- package/templates/default/i18n.toml +330 -1
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +302 -5
- package/templates/default/locales/en/.mustflow/skills/agent-eval-integrity-review/SKILL.md +160 -0
- package/templates/default/locales/en/.mustflow/skills/agent-execution-control-review/SKILL.md +163 -0
- package/templates/default/locales/en/.mustflow/skills/ai-generated-code-hardening/SKILL.md +49 -13
- package/templates/default/locales/en/.mustflow/skills/api-access-control-review/SKILL.md +298 -0
- package/templates/default/locales/en/.mustflow/skills/api-misuse-resistance-review/SKILL.md +297 -0
- package/templates/default/locales/en/.mustflow/skills/api-request-performance-review/SKILL.md +189 -0
- package/templates/default/locales/en/.mustflow/skills/app-startup-performance-review/SKILL.md +309 -0
- package/templates/default/locales/en/.mustflow/skills/backend-log-evidence-review/SKILL.md +213 -0
- package/templates/default/locales/en/.mustflow/skills/business-rule-leakage-review/SKILL.md +295 -0
- package/templates/default/locales/en/.mustflow/skills/cache-integrity-review/SKILL.md +291 -0
- package/templates/default/locales/en/.mustflow/skills/change-blast-radius-review/SKILL.md +297 -0
- package/templates/default/locales/en/.mustflow/skills/client-bundle-pruning-review/SKILL.md +160 -0
- package/templates/default/locales/en/.mustflow/skills/cloud-cost-guardrail-review/SKILL.md +321 -0
- package/templates/default/locales/en/.mustflow/skills/concurrency-invariant-review/SKILL.md +193 -0
- package/templates/default/locales/en/.mustflow/skills/core-web-vitals-field-review/SKILL.md +161 -0
- package/templates/default/locales/en/.mustflow/skills/credit-ledger-integrity-review/SKILL.md +156 -0
- package/templates/default/locales/en/.mustflow/skills/database-json-modeling-review/SKILL.md +171 -0
- package/templates/default/locales/en/.mustflow/skills/database-lock-contention-review/SKILL.md +192 -0
- package/templates/default/locales/en/.mustflow/skills/database-migration-change/SKILL.md +76 -34
- package/templates/default/locales/en/.mustflow/skills/database-query-bottleneck-review/SKILL.md +194 -0
- package/templates/default/locales/en/.mustflow/skills/deletion-lifecycle-review/SKILL.md +171 -0
- package/templates/default/locales/en/.mustflow/skills/deployment-rollout-safety-review/SKILL.md +321 -0
- package/templates/default/locales/en/.mustflow/skills/desktop-auto-update-safety-review/SKILL.md +265 -0
- package/templates/default/locales/en/.mustflow/skills/desktop-background-process-stability-review/SKILL.md +318 -0
- package/templates/default/locales/en/.mustflow/skills/desktop-memory-footprint-review/SKILL.md +318 -0
- package/templates/default/locales/en/.mustflow/skills/error-message-integrity-review/SKILL.md +283 -0
- package/templates/default/locales/en/.mustflow/skills/failure-integrity-review/SKILL.md +193 -0
- package/templates/default/locales/en/.mustflow/skills/file-upload-security-review/SKILL.md +305 -0
- package/templates/default/locales/en/.mustflow/skills/frame-render-performance-review/SKILL.md +159 -0
- package/templates/default/locales/en/.mustflow/skills/frontend-accessibility-tree-review/SKILL.md +202 -0
- package/templates/default/locales/en/.mustflow/skills/frontend-localization-review/SKILL.md +202 -0
- package/templates/default/locales/en/.mustflow/skills/frontend-state-ownership-review/SKILL.md +183 -0
- package/templates/default/locales/en/.mustflow/skills/frontend-stress-layout-review/SKILL.md +193 -0
- package/templates/default/locales/en/.mustflow/skills/hot-path-performance-review/SKILL.md +159 -0
- package/templates/default/locales/en/.mustflow/skills/idempotency-integrity-review/SKILL.md +195 -0
- package/templates/default/locales/en/.mustflow/skills/image-delivery-performance-review/SKILL.md +161 -0
- package/templates/default/locales/en/.mustflow/skills/incident-triage-review/SKILL.md +185 -0
- package/templates/default/locales/en/.mustflow/skills/llm-hallucination-control-review/SKILL.md +155 -0
- package/templates/default/locales/en/.mustflow/skills/llm-response-latency-review/SKILL.md +155 -0
- package/templates/default/locales/en/.mustflow/skills/llm-service-ux-review/SKILL.md +2 -0
- package/templates/default/locales/en/.mustflow/skills/llm-token-cost-control-review/SKILL.md +155 -0
- package/templates/default/locales/en/.mustflow/skills/low-end-device-support-review/SKILL.md +340 -0
- package/templates/default/locales/en/.mustflow/skills/memory-lifetime-review/SKILL.md +169 -0
- package/templates/default/locales/en/.mustflow/skills/mobile-energy-efficiency-review/SKILL.md +329 -0
- package/templates/default/locales/en/.mustflow/skills/module-boundary-review/SKILL.md +278 -0
- package/templates/default/locales/en/.mustflow/skills/multi-agent-work-coordination/SKILL.md +1 -0
- package/templates/default/locales/en/.mustflow/skills/observability-debuggability-review/SKILL.md +208 -0
- package/templates/default/locales/en/.mustflow/skills/payment-integrity-review/SKILL.md +155 -0
- package/templates/default/locales/en/.mustflow/skills/prompt-contract-quality-review/SKILL.md +158 -0
- package/templates/default/locales/en/.mustflow/skills/quadratic-scan-review/SKILL.md +155 -0
- package/templates/default/locales/en/.mustflow/skills/queue-processing-integrity-review/SKILL.md +193 -0
- package/templates/default/locales/en/.mustflow/skills/race-condition-review/SKILL.md +188 -0
- package/templates/default/locales/en/.mustflow/skills/rate-limit-integrity-review/SKILL.md +344 -0
- package/templates/default/locales/en/.mustflow/skills/retry-policy-integrity-review/SKILL.md +195 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +330 -0
- package/templates/default/locales/en/.mustflow/skills/security-flow-review/SKILL.md +279 -0
- package/templates/default/locales/en/.mustflow/skills/testability-boundary-review/SKILL.md +295 -0
- package/templates/default/locales/en/.mustflow/skills/transaction-boundary-integrity-review/SKILL.md +196 -0
- package/templates/default/locales/en/.mustflow/skills/type-state-modeling-review/SKILL.md +179 -0
- package/templates/default/locales/en/.mustflow/skills/web-render-performance-review/SKILL.md +164 -0
- package/templates/default/manifest.toml +386 -1
|
@@ -546,6 +546,6 @@ export function validateCommandContractStrictDefaults(projectRoot, commandsToml)
|
|
|
546
546
|
issues.push(...validateCommandEnvInheritanceWarnings(commandsToml));
|
|
547
547
|
issues.push(...validateProjectLocalBinWarnings(projectRoot, commandsToml));
|
|
548
548
|
issues.push(...validateCommandEffects(projectRoot, commandsToml));
|
|
549
|
-
issues.push(...validateCommandEffectLockWarnings(commandsToml));
|
|
549
|
+
issues.push(...validateCommandEffectLockWarnings(projectRoot, commandsToml));
|
|
550
550
|
return issues;
|
|
551
551
|
}
|
package/dist/core/command-cwd.js
CHANGED
|
@@ -13,10 +13,21 @@ export function resolveSafeProjectCwd(projectRoot, rawCwd) {
|
|
|
13
13
|
const cwd = rawCwd ?? '.';
|
|
14
14
|
const resolved = path.resolve(projectRoot, cwd);
|
|
15
15
|
const rootRealPath = realpathSync.native(projectRoot);
|
|
16
|
-
|
|
16
|
+
try {
|
|
17
|
+
if (!existsSync(resolved) || !statSync(resolved).isDirectory()) {
|
|
18
|
+
throw new Error();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new Error(`Intent cwd must stay inside the current root and resolve to an existing directory: ${cwd}`);
|
|
23
|
+
}
|
|
24
|
+
let cwdRealPath;
|
|
25
|
+
try {
|
|
26
|
+
cwdRealPath = realpathSync.native(resolved);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
17
29
|
throw new Error(`Intent cwd must stay inside the current root and resolve to an existing directory: ${cwd}`);
|
|
18
30
|
}
|
|
19
|
-
const cwdRealPath = realpathSync.native(resolved);
|
|
20
31
|
if (!isInsideOrEqual(rootRealPath, cwdRealPath)) {
|
|
21
32
|
throw new Error(`Intent cwd must stay inside the current root and resolve to an existing directory: ${cwd}`);
|
|
22
33
|
}
|
|
@@ -161,11 +161,16 @@ export function validateCommandEffects(projectRoot, commandsToml) {
|
|
|
161
161
|
}
|
|
162
162
|
return issues;
|
|
163
163
|
}
|
|
164
|
-
export function validateCommandEffectLockWarnings(commandsToml) {
|
|
164
|
+
export function validateCommandEffectLockWarnings(projectRoot, commandsToml) {
|
|
165
165
|
const issues = [];
|
|
166
166
|
if (!commandsToml || !isRecord(commandsToml.intents)) {
|
|
167
167
|
return issues;
|
|
168
168
|
}
|
|
169
|
+
const commandContract = {
|
|
170
|
+
defaults: isRecord(commandsToml.defaults) ? commandsToml.defaults : {},
|
|
171
|
+
intents: commandsToml.intents,
|
|
172
|
+
resources: isRecord(commandsToml.resources) ? commandsToml.resources : {},
|
|
173
|
+
};
|
|
169
174
|
const lockToIntents = new Map();
|
|
170
175
|
for (const [intentName, intent] of Object.entries(commandsToml.intents)) {
|
|
171
176
|
if (!isRecord(intent)) {
|
|
@@ -177,9 +182,22 @@ export function validateCommandEffectLockWarnings(commandsToml) {
|
|
|
177
182
|
Array.isArray(intent.effects)) {
|
|
178
183
|
continue;
|
|
179
184
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
185
|
+
let effects;
|
|
186
|
+
try {
|
|
187
|
+
effects = normalizeCommandEffects(projectRoot, commandContract, intentName).filter((effect) => effect.source === 'writes');
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
for (const effect of effects) {
|
|
193
|
+
const lock = effect.lock;
|
|
194
|
+
const intents = lockToIntents.get(lock);
|
|
195
|
+
if (intents) {
|
|
196
|
+
intents.push(intentName);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
lockToIntents.set(lock, [intentName]);
|
|
200
|
+
}
|
|
183
201
|
}
|
|
184
202
|
}
|
|
185
203
|
for (const [lock, intents] of lockToIntents) {
|
package/dist/core/command-env.js
CHANGED
|
@@ -105,14 +105,16 @@ function removeProjectLocalBinFromPath(env, projectRoot) {
|
|
|
105
105
|
const pathKey = getPathEnvKey(env);
|
|
106
106
|
const currentPath = env[pathKey];
|
|
107
107
|
if (!currentPath) {
|
|
108
|
-
return env;
|
|
108
|
+
return { ...env };
|
|
109
109
|
}
|
|
110
110
|
const localBinPath = path.join(projectRoot, 'node_modules', '.bin');
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
return {
|
|
112
|
+
...env,
|
|
113
|
+
[pathKey]: currentPath
|
|
114
|
+
.split(path.delimiter)
|
|
115
|
+
.filter((entry) => entry.length > 0 && !sameResolvedPath(entry, localBinPath))
|
|
116
|
+
.join(path.delimiter),
|
|
117
|
+
};
|
|
116
118
|
}
|
|
117
119
|
export function resolveCommandEnv(contract, intent) {
|
|
118
120
|
const policy = readEnvPolicy(intent) ?? readEnvPolicy(contract.defaults) ?? DEFAULT_COMMAND_ENV_POLICY;
|
|
@@ -84,6 +84,10 @@ function globToRegExp(pattern) {
|
|
|
84
84
|
expression += '[^/]*';
|
|
85
85
|
continue;
|
|
86
86
|
}
|
|
87
|
+
if (character === '?') {
|
|
88
|
+
expression += '[^/]';
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
87
91
|
expression += escapeRegExp(character);
|
|
88
92
|
}
|
|
89
93
|
return new RegExp(`${expression}$`, 'u');
|
|
@@ -219,10 +223,32 @@ function evaluateArtifactFreshness(projectRoot, declaration, satisfyIntent, cont
|
|
|
219
223
|
satisfyIntent,
|
|
220
224
|
};
|
|
221
225
|
}
|
|
222
|
-
|
|
226
|
+
let artifactMtime;
|
|
227
|
+
try {
|
|
228
|
+
artifactMtime = statSync(artifactPath).mtimeMs;
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
return {
|
|
232
|
+
kind: declaration.kind,
|
|
233
|
+
label: declaration.label,
|
|
234
|
+
status: 'missing',
|
|
235
|
+
detail: `artifact "${artifact}" is missing.`,
|
|
236
|
+
path: null,
|
|
237
|
+
artifact,
|
|
238
|
+
sources: declaration.sources,
|
|
239
|
+
newestSource: null,
|
|
240
|
+
satisfyIntent,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
223
243
|
let newest = null;
|
|
224
244
|
for (const source of sourceFiles) {
|
|
225
|
-
|
|
245
|
+
let mtime;
|
|
246
|
+
try {
|
|
247
|
+
mtime = statSync(path.join(projectRoot, ...source.split('/'))).mtimeMs;
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
226
252
|
if (!newest || mtime > newest.mtime) {
|
|
227
253
|
newest = { source, mtime };
|
|
228
254
|
}
|
|
@@ -219,7 +219,7 @@ export function createVerifyCompletionVerdict(input) {
|
|
|
219
219
|
failed_intents: normalizedInput.failedIntents,
|
|
220
220
|
skipped_intents: normalizedInput.skippedIntents,
|
|
221
221
|
receipt_count: normalizedInput.receiptCount,
|
|
222
|
-
gap_count: normalizedInput.
|
|
222
|
+
gap_count: normalizedInput.gapCount ?? 0,
|
|
223
223
|
source_anchor_risk_count: normalizedInput.sourceAnchorRiskCount ?? 0,
|
|
224
224
|
scope_diff_risk_count: normalizedInput.scopeDiffRiskCount ?? 0,
|
|
225
225
|
repeated_failure_count: normalizedInput.repeatedFailureCount ?? 0,
|
|
@@ -21,6 +21,7 @@ function gitList(projectRoot, args) {
|
|
|
21
21
|
encoding: 'buffer',
|
|
22
22
|
env: createCommandEnv(projectRoot, { policy: 'minimal', allowlist: [] }),
|
|
23
23
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
24
|
+
timeout: 30_000,
|
|
24
25
|
windowsHide: true,
|
|
25
26
|
});
|
|
26
27
|
if (result.status !== 0) {
|
|
@@ -71,19 +72,22 @@ function detectLineEnding(buffer) {
|
|
|
71
72
|
return crlfCount === lfCount ? 'crlf' : 'mixed';
|
|
72
73
|
}
|
|
73
74
|
function normalizeLf(buffer) {
|
|
74
|
-
const bytes =
|
|
75
|
+
const bytes = Buffer.allocUnsafe(buffer.length);
|
|
76
|
+
let writeIndex = 0;
|
|
75
77
|
for (let index = 0; index < buffer.length; index += 1) {
|
|
76
78
|
const byte = buffer[index];
|
|
77
79
|
if (byte === 0x0d) {
|
|
78
|
-
bytes
|
|
80
|
+
bytes[writeIndex] = 0x0a;
|
|
81
|
+
writeIndex += 1;
|
|
79
82
|
if (buffer[index + 1] === 0x0a) {
|
|
80
83
|
index += 1;
|
|
81
84
|
}
|
|
82
85
|
continue;
|
|
83
86
|
}
|
|
84
|
-
bytes
|
|
87
|
+
bytes[writeIndex] = byte;
|
|
88
|
+
writeIndex += 1;
|
|
85
89
|
}
|
|
86
|
-
return
|
|
90
|
+
return bytes.subarray(0, writeIndex);
|
|
87
91
|
}
|
|
88
92
|
export function inspectLineEndings(projectRoot, mode, options = {}) {
|
|
89
93
|
const root = path.resolve(projectRoot);
|
|
@@ -14,7 +14,15 @@ function tempFilePath(targetPath) {
|
|
|
14
14
|
return path.join(path.dirname(targetPath), `.${path.basename(targetPath)}.${suffix}.tmp`);
|
|
15
15
|
}
|
|
16
16
|
function sleep(milliseconds) {
|
|
17
|
-
|
|
17
|
+
try {
|
|
18
|
+
Atomics.wait(WRITE_SLEEP_BUFFER, 0, 0, milliseconds);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
const end = Date.now() + milliseconds;
|
|
22
|
+
while (Date.now() < end) {
|
|
23
|
+
// Fall back only for short retry delays when Atomics.wait is unavailable on this runtime.
|
|
24
|
+
}
|
|
25
|
+
}
|
|
18
26
|
}
|
|
19
27
|
function isRetryableWindowsRenameError(error) {
|
|
20
28
|
if (process.platform !== 'win32' || !error || typeof error !== 'object' || !('code' in error)) {
|
|
@@ -131,7 +131,13 @@ export function validateSourceAnchorsInProject(projectRoot) {
|
|
|
131
131
|
const anchorsById = new Map();
|
|
132
132
|
for (const relativePath of sourceFiles) {
|
|
133
133
|
const absolutePath = path.join(projectRoot, ...relativePath.split('/'));
|
|
134
|
-
|
|
134
|
+
let content;
|
|
135
|
+
try {
|
|
136
|
+
content = readFileSync(absolutePath, 'utf8');
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
135
141
|
const anchors = parseSourceAnchorsInContent(relativePath, content);
|
|
136
142
|
issues.push(...validateSourceAnchorDensity(relativePath, content, anchors));
|
|
137
143
|
for (const anchor of anchors) {
|
|
@@ -321,10 +321,16 @@ export function collectSourceAnchorSummaries(projectRoot) {
|
|
|
321
321
|
const anchors = [];
|
|
322
322
|
for (const relativePath of listSourceAnchorFiles(projectRoot)) {
|
|
323
323
|
const filePath = path.join(projectRoot, ...relativePath.split('/'));
|
|
324
|
-
|
|
324
|
+
let content;
|
|
325
|
+
try {
|
|
326
|
+
if (!existsSync(filePath) || !statSync(filePath).isFile()) {
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
content = readFileSync(filePath, 'utf8');
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
325
332
|
continue;
|
|
326
333
|
}
|
|
327
|
-
const content = readFileSync(filePath, 'utf8');
|
|
328
334
|
for (const anchor of parseSourceAnchorsInContent(relativePath, content)) {
|
|
329
335
|
if (!anchor.idValid || sourceAnchorTextContainsSecretLike(anchor.rawText)) {
|
|
330
336
|
continue;
|
|
@@ -19,12 +19,18 @@ function toScheduleEffect(effect) {
|
|
|
19
19
|
function isObject(value) {
|
|
20
20
|
return !!value && typeof value === 'object';
|
|
21
21
|
}
|
|
22
|
+
function isMissingPathError(error) {
|
|
23
|
+
return error instanceof Error && 'code' in error && error.code === 'ENOENT';
|
|
24
|
+
}
|
|
22
25
|
function readJsonFile(projectRoot, filePath) {
|
|
23
26
|
try {
|
|
24
27
|
return JSON.parse(readUtf8FileInsideWithoutSymlinks(projectRoot, filePath, { maxBytes: MUSTFLOW_JSON_MAX_BYTES }));
|
|
25
28
|
}
|
|
26
|
-
catch {
|
|
27
|
-
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (isMissingPathError(error)) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
36
|
function getUndeclaredWriteIntent(value) {
|
package/package.json
CHANGED
|
@@ -62,7 +62,7 @@ translations = {}
|
|
|
62
62
|
[documents."skills.index"]
|
|
63
63
|
source = "locales/en/.mustflow/skills/INDEX.md"
|
|
64
64
|
source_locale = "en"
|
|
65
|
-
revision =
|
|
65
|
+
revision = 167
|
|
66
66
|
translations = {}
|
|
67
67
|
|
|
68
68
|
[documents."skill.adapter-boundary"]
|
|
@@ -116,6 +116,270 @@ translations = {}
|
|
|
116
116
|
[documents."skill.ai-generated-code-hardening"]
|
|
117
117
|
source = "locales/en/.mustflow/skills/ai-generated-code-hardening/SKILL.md"
|
|
118
118
|
source_locale = "en"
|
|
119
|
+
revision = 2
|
|
120
|
+
translations = {}
|
|
121
|
+
|
|
122
|
+
[documents."skill.module-boundary-review"]
|
|
123
|
+
source = "locales/en/.mustflow/skills/module-boundary-review/SKILL.md"
|
|
124
|
+
source_locale = "en"
|
|
125
|
+
revision = 1
|
|
126
|
+
translations = {}
|
|
127
|
+
|
|
128
|
+
[documents."skill.change-blast-radius-review"]
|
|
129
|
+
source = "locales/en/.mustflow/skills/change-blast-radius-review/SKILL.md"
|
|
130
|
+
source_locale = "en"
|
|
131
|
+
revision = 1
|
|
132
|
+
translations = {}
|
|
133
|
+
|
|
134
|
+
[documents."skill.business-rule-leakage-review"]
|
|
135
|
+
source = "locales/en/.mustflow/skills/business-rule-leakage-review/SKILL.md"
|
|
136
|
+
source_locale = "en"
|
|
137
|
+
revision = 1
|
|
138
|
+
translations = {}
|
|
139
|
+
|
|
140
|
+
[documents."skill.payment-integrity-review"]
|
|
141
|
+
source = "locales/en/.mustflow/skills/payment-integrity-review/SKILL.md"
|
|
142
|
+
source_locale = "en"
|
|
143
|
+
revision = 1
|
|
144
|
+
translations = {}
|
|
145
|
+
|
|
146
|
+
[documents."skill.credit-ledger-integrity-review"]
|
|
147
|
+
source = "locales/en/.mustflow/skills/credit-ledger-integrity-review/SKILL.md"
|
|
148
|
+
source_locale = "en"
|
|
149
|
+
revision = 1
|
|
150
|
+
translations = {}
|
|
151
|
+
|
|
152
|
+
[documents."skill.api-misuse-resistance-review"]
|
|
153
|
+
source = "locales/en/.mustflow/skills/api-misuse-resistance-review/SKILL.md"
|
|
154
|
+
source_locale = "en"
|
|
155
|
+
revision = 1
|
|
156
|
+
translations = {}
|
|
157
|
+
|
|
158
|
+
[documents."skill.api-access-control-review"]
|
|
159
|
+
source = "locales/en/.mustflow/skills/api-access-control-review/SKILL.md"
|
|
160
|
+
source_locale = "en"
|
|
161
|
+
revision = 1
|
|
162
|
+
translations = {}
|
|
163
|
+
|
|
164
|
+
[documents."skill.file-upload-security-review"]
|
|
165
|
+
source = "locales/en/.mustflow/skills/file-upload-security-review/SKILL.md"
|
|
166
|
+
source_locale = "en"
|
|
167
|
+
revision = 1
|
|
168
|
+
translations = {}
|
|
169
|
+
|
|
170
|
+
[documents."skill.error-message-integrity-review"]
|
|
171
|
+
source = "locales/en/.mustflow/skills/error-message-integrity-review/SKILL.md"
|
|
172
|
+
source_locale = "en"
|
|
173
|
+
revision = 1
|
|
174
|
+
translations = {}
|
|
175
|
+
|
|
176
|
+
[documents."skill.memory-lifetime-review"]
|
|
177
|
+
source = "locales/en/.mustflow/skills/memory-lifetime-review/SKILL.md"
|
|
178
|
+
source_locale = "en"
|
|
179
|
+
revision = 1
|
|
180
|
+
translations = {}
|
|
181
|
+
|
|
182
|
+
[documents."skill.desktop-memory-footprint-review"]
|
|
183
|
+
source = "locales/en/.mustflow/skills/desktop-memory-footprint-review/SKILL.md"
|
|
184
|
+
source_locale = "en"
|
|
185
|
+
revision = 1
|
|
186
|
+
translations = {}
|
|
187
|
+
|
|
188
|
+
[documents."skill.hot-path-performance-review"]
|
|
189
|
+
source = "locales/en/.mustflow/skills/hot-path-performance-review/SKILL.md"
|
|
190
|
+
source_locale = "en"
|
|
191
|
+
revision = 1
|
|
192
|
+
translations = {}
|
|
193
|
+
|
|
194
|
+
[documents."skill.api-request-performance-review"]
|
|
195
|
+
source = "locales/en/.mustflow/skills/api-request-performance-review/SKILL.md"
|
|
196
|
+
source_locale = "en"
|
|
197
|
+
revision = 1
|
|
198
|
+
translations = {}
|
|
199
|
+
|
|
200
|
+
[documents."skill.web-render-performance-review"]
|
|
201
|
+
source = "locales/en/.mustflow/skills/web-render-performance-review/SKILL.md"
|
|
202
|
+
source_locale = "en"
|
|
203
|
+
revision = 1
|
|
204
|
+
translations = {}
|
|
205
|
+
|
|
206
|
+
[documents."skill.core-web-vitals-field-review"]
|
|
207
|
+
source = "locales/en/.mustflow/skills/core-web-vitals-field-review/SKILL.md"
|
|
208
|
+
source_locale = "en"
|
|
209
|
+
revision = 1
|
|
210
|
+
translations = {}
|
|
211
|
+
|
|
212
|
+
[documents."skill.image-delivery-performance-review"]
|
|
213
|
+
source = "locales/en/.mustflow/skills/image-delivery-performance-review/SKILL.md"
|
|
214
|
+
source_locale = "en"
|
|
215
|
+
revision = 1
|
|
216
|
+
translations = {}
|
|
217
|
+
|
|
218
|
+
[documents."skill.client-bundle-pruning-review"]
|
|
219
|
+
source = "locales/en/.mustflow/skills/client-bundle-pruning-review/SKILL.md"
|
|
220
|
+
source_locale = "en"
|
|
221
|
+
revision = 1
|
|
222
|
+
translations = {}
|
|
223
|
+
|
|
224
|
+
[documents."skill.frame-render-performance-review"]
|
|
225
|
+
source = "locales/en/.mustflow/skills/frame-render-performance-review/SKILL.md"
|
|
226
|
+
source_locale = "en"
|
|
227
|
+
revision = 1
|
|
228
|
+
translations = {}
|
|
229
|
+
|
|
230
|
+
[documents."skill.app-startup-performance-review"]
|
|
231
|
+
source = "locales/en/.mustflow/skills/app-startup-performance-review/SKILL.md"
|
|
232
|
+
source_locale = "en"
|
|
233
|
+
revision = 1
|
|
234
|
+
translations = {}
|
|
235
|
+
|
|
236
|
+
[documents."skill.desktop-background-process-stability-review"]
|
|
237
|
+
source = "locales/en/.mustflow/skills/desktop-background-process-stability-review/SKILL.md"
|
|
238
|
+
source_locale = "en"
|
|
239
|
+
revision = 1
|
|
240
|
+
translations = {}
|
|
241
|
+
|
|
242
|
+
[documents."skill.desktop-auto-update-safety-review"]
|
|
243
|
+
source = "locales/en/.mustflow/skills/desktop-auto-update-safety-review/SKILL.md"
|
|
244
|
+
source_locale = "en"
|
|
245
|
+
revision = 1
|
|
246
|
+
translations = {}
|
|
247
|
+
|
|
248
|
+
[documents."skill.low-end-device-support-review"]
|
|
249
|
+
source = "locales/en/.mustflow/skills/low-end-device-support-review/SKILL.md"
|
|
250
|
+
source_locale = "en"
|
|
251
|
+
revision = 1
|
|
252
|
+
translations = {}
|
|
253
|
+
|
|
254
|
+
[documents."skill.mobile-energy-efficiency-review"]
|
|
255
|
+
source = "locales/en/.mustflow/skills/mobile-energy-efficiency-review/SKILL.md"
|
|
256
|
+
source_locale = "en"
|
|
257
|
+
revision = 1
|
|
258
|
+
translations = {}
|
|
259
|
+
|
|
260
|
+
[documents."skill.frontend-state-ownership-review"]
|
|
261
|
+
source = "locales/en/.mustflow/skills/frontend-state-ownership-review/SKILL.md"
|
|
262
|
+
source_locale = "en"
|
|
263
|
+
revision = 1
|
|
264
|
+
translations = {}
|
|
265
|
+
|
|
266
|
+
[documents."skill.frontend-stress-layout-review"]
|
|
267
|
+
source = "locales/en/.mustflow/skills/frontend-stress-layout-review/SKILL.md"
|
|
268
|
+
source_locale = "en"
|
|
269
|
+
revision = 1
|
|
270
|
+
translations = {}
|
|
271
|
+
|
|
272
|
+
[documents."skill.frontend-accessibility-tree-review"]
|
|
273
|
+
source = "locales/en/.mustflow/skills/frontend-accessibility-tree-review/SKILL.md"
|
|
274
|
+
source_locale = "en"
|
|
275
|
+
revision = 1
|
|
276
|
+
translations = {}
|
|
277
|
+
|
|
278
|
+
[documents."skill.frontend-localization-review"]
|
|
279
|
+
source = "locales/en/.mustflow/skills/frontend-localization-review/SKILL.md"
|
|
280
|
+
source_locale = "en"
|
|
281
|
+
revision = 1
|
|
282
|
+
translations = {}
|
|
283
|
+
|
|
284
|
+
[documents."skill.cache-integrity-review"]
|
|
285
|
+
source = "locales/en/.mustflow/skills/cache-integrity-review/SKILL.md"
|
|
286
|
+
source_locale = "en"
|
|
287
|
+
revision = 1
|
|
288
|
+
translations = {}
|
|
289
|
+
|
|
290
|
+
[documents."skill.quadratic-scan-review"]
|
|
291
|
+
source = "locales/en/.mustflow/skills/quadratic-scan-review/SKILL.md"
|
|
292
|
+
source_locale = "en"
|
|
293
|
+
revision = 1
|
|
294
|
+
translations = {}
|
|
295
|
+
|
|
296
|
+
[documents."skill.type-state-modeling-review"]
|
|
297
|
+
source = "locales/en/.mustflow/skills/type-state-modeling-review/SKILL.md"
|
|
298
|
+
source_locale = "en"
|
|
299
|
+
revision = 1
|
|
300
|
+
translations = {}
|
|
301
|
+
|
|
302
|
+
[documents."skill.race-condition-review"]
|
|
303
|
+
source = "locales/en/.mustflow/skills/race-condition-review/SKILL.md"
|
|
304
|
+
source_locale = "en"
|
|
305
|
+
revision = 1
|
|
306
|
+
translations = {}
|
|
307
|
+
|
|
308
|
+
[documents."skill.concurrency-invariant-review"]
|
|
309
|
+
source = "locales/en/.mustflow/skills/concurrency-invariant-review/SKILL.md"
|
|
310
|
+
source_locale = "en"
|
|
311
|
+
revision = 1
|
|
312
|
+
translations = {}
|
|
313
|
+
|
|
314
|
+
[documents."skill.failure-integrity-review"]
|
|
315
|
+
source = "locales/en/.mustflow/skills/failure-integrity-review/SKILL.md"
|
|
316
|
+
source_locale = "en"
|
|
317
|
+
revision = 1
|
|
318
|
+
translations = {}
|
|
319
|
+
|
|
320
|
+
[documents."skill.backend-log-evidence-review"]
|
|
321
|
+
source = "locales/en/.mustflow/skills/backend-log-evidence-review/SKILL.md"
|
|
322
|
+
source_locale = "en"
|
|
323
|
+
revision = 2
|
|
324
|
+
translations = {}
|
|
325
|
+
|
|
326
|
+
[documents."skill.observability-debuggability-review"]
|
|
327
|
+
source = "locales/en/.mustflow/skills/observability-debuggability-review/SKILL.md"
|
|
328
|
+
source_locale = "en"
|
|
329
|
+
revision = 1
|
|
330
|
+
translations = {}
|
|
331
|
+
|
|
332
|
+
[documents."skill.incident-triage-review"]
|
|
333
|
+
source = "locales/en/.mustflow/skills/incident-triage-review/SKILL.md"
|
|
334
|
+
source_locale = "en"
|
|
335
|
+
revision = 1
|
|
336
|
+
translations = {}
|
|
337
|
+
|
|
338
|
+
[documents."skill.deployment-rollout-safety-review"]
|
|
339
|
+
source = "locales/en/.mustflow/skills/deployment-rollout-safety-review/SKILL.md"
|
|
340
|
+
source_locale = "en"
|
|
341
|
+
revision = 2
|
|
342
|
+
translations = {}
|
|
343
|
+
|
|
344
|
+
[documents."skill.cloud-cost-guardrail-review"]
|
|
345
|
+
source = "locales/en/.mustflow/skills/cloud-cost-guardrail-review/SKILL.md"
|
|
346
|
+
source_locale = "en"
|
|
347
|
+
revision = 1
|
|
348
|
+
translations = {}
|
|
349
|
+
|
|
350
|
+
[documents."skill.rate-limit-integrity-review"]
|
|
351
|
+
source = "locales/en/.mustflow/skills/rate-limit-integrity-review/SKILL.md"
|
|
352
|
+
source_locale = "en"
|
|
353
|
+
revision = 1
|
|
354
|
+
translations = {}
|
|
355
|
+
|
|
356
|
+
[documents."skill.idempotency-integrity-review"]
|
|
357
|
+
source = "locales/en/.mustflow/skills/idempotency-integrity-review/SKILL.md"
|
|
358
|
+
source_locale = "en"
|
|
359
|
+
revision = 1
|
|
360
|
+
translations = {}
|
|
361
|
+
|
|
362
|
+
[documents."skill.retry-policy-integrity-review"]
|
|
363
|
+
source = "locales/en/.mustflow/skills/retry-policy-integrity-review/SKILL.md"
|
|
364
|
+
source_locale = "en"
|
|
365
|
+
revision = 1
|
|
366
|
+
translations = {}
|
|
367
|
+
|
|
368
|
+
[documents."skill.queue-processing-integrity-review"]
|
|
369
|
+
source = "locales/en/.mustflow/skills/queue-processing-integrity-review/SKILL.md"
|
|
370
|
+
source_locale = "en"
|
|
371
|
+
revision = 1
|
|
372
|
+
translations = {}
|
|
373
|
+
|
|
374
|
+
[documents."skill.transaction-boundary-integrity-review"]
|
|
375
|
+
source = "locales/en/.mustflow/skills/transaction-boundary-integrity-review/SKILL.md"
|
|
376
|
+
source_locale = "en"
|
|
377
|
+
revision = 1
|
|
378
|
+
translations = {}
|
|
379
|
+
|
|
380
|
+
[documents."skill.testability-boundary-review"]
|
|
381
|
+
source = "locales/en/.mustflow/skills/testability-boundary-review/SKILL.md"
|
|
382
|
+
source_locale = "en"
|
|
119
383
|
revision = 1
|
|
120
384
|
translations = {}
|
|
121
385
|
|
|
@@ -140,6 +404,29 @@ translations = {}
|
|
|
140
404
|
[documents."skill.database-migration-change"]
|
|
141
405
|
source = "locales/en/.mustflow/skills/database-migration-change/SKILL.md"
|
|
142
406
|
source_locale = "en"
|
|
407
|
+
revision = 2
|
|
408
|
+
translations = {}
|
|
409
|
+
|
|
410
|
+
[documents."skill.database-query-bottleneck-review"]
|
|
411
|
+
source = "locales/en/.mustflow/skills/database-query-bottleneck-review/SKILL.md"
|
|
412
|
+
source_locale = "en"
|
|
413
|
+
revision = 2
|
|
414
|
+
translations = {}
|
|
415
|
+
|
|
416
|
+
[documents."skill.database-json-modeling-review"]
|
|
417
|
+
source = "locales/en/.mustflow/skills/database-json-modeling-review/SKILL.md"
|
|
418
|
+
source_locale = "en"
|
|
419
|
+
revision = 1
|
|
420
|
+
translations = {}
|
|
421
|
+
|
|
422
|
+
[documents."skill.deletion-lifecycle-review"]
|
|
423
|
+
source = "locales/en/.mustflow/skills/deletion-lifecycle-review/SKILL.md"
|
|
424
|
+
source_locale = "en"
|
|
425
|
+
revision = 1
|
|
426
|
+
translations = {}
|
|
427
|
+
[documents."skill.database-lock-contention-review"]
|
|
428
|
+
source = "locales/en/.mustflow/skills/database-lock-contention-review/SKILL.md"
|
|
429
|
+
source_locale = "en"
|
|
143
430
|
revision = 1
|
|
144
431
|
translations = {}
|
|
145
432
|
|
|
@@ -227,6 +514,12 @@ source_locale = "en"
|
|
|
227
514
|
revision = 2
|
|
228
515
|
translations = {}
|
|
229
516
|
|
|
517
|
+
[documents."skill.security-flow-review"]
|
|
518
|
+
source = "locales/en/.mustflow/skills/security-flow-review/SKILL.md"
|
|
519
|
+
source_locale = "en"
|
|
520
|
+
revision = 1
|
|
521
|
+
translations = {}
|
|
522
|
+
|
|
230
523
|
[documents."skill.config-env-change"]
|
|
231
524
|
source = "locales/en/.mustflow/skills/config-env-change/SKILL.md"
|
|
232
525
|
source_locale = "en"
|
|
@@ -670,6 +963,42 @@ source_locale = "en"
|
|
|
670
963
|
revision = 2
|
|
671
964
|
translations = {}
|
|
672
965
|
|
|
966
|
+
[documents."skill.prompt-contract-quality-review"]
|
|
967
|
+
source = "locales/en/.mustflow/skills/prompt-contract-quality-review/SKILL.md"
|
|
968
|
+
source_locale = "en"
|
|
969
|
+
revision = 1
|
|
970
|
+
translations = {}
|
|
971
|
+
|
|
972
|
+
[documents."skill.llm-hallucination-control-review"]
|
|
973
|
+
source = "locales/en/.mustflow/skills/llm-hallucination-control-review/SKILL.md"
|
|
974
|
+
source_locale = "en"
|
|
975
|
+
revision = 1
|
|
976
|
+
translations = {}
|
|
977
|
+
|
|
978
|
+
[documents."skill.llm-token-cost-control-review"]
|
|
979
|
+
source = "locales/en/.mustflow/skills/llm-token-cost-control-review/SKILL.md"
|
|
980
|
+
source_locale = "en"
|
|
981
|
+
revision = 1
|
|
982
|
+
translations = {}
|
|
983
|
+
|
|
984
|
+
[documents."skill.llm-response-latency-review"]
|
|
985
|
+
source = "locales/en/.mustflow/skills/llm-response-latency-review/SKILL.md"
|
|
986
|
+
source_locale = "en"
|
|
987
|
+
revision = 1
|
|
988
|
+
translations = {}
|
|
989
|
+
|
|
990
|
+
[documents."skill.agent-execution-control-review"]
|
|
991
|
+
source = "locales/en/.mustflow/skills/agent-execution-control-review/SKILL.md"
|
|
992
|
+
source_locale = "en"
|
|
993
|
+
revision = 1
|
|
994
|
+
translations = {}
|
|
995
|
+
|
|
996
|
+
[documents."skill.agent-eval-integrity-review"]
|
|
997
|
+
source = "locales/en/.mustflow/skills/agent-eval-integrity-review/SKILL.md"
|
|
998
|
+
source_locale = "en"
|
|
999
|
+
revision = 1
|
|
1000
|
+
translations = {}
|
|
1001
|
+
|
|
673
1002
|
[documents."skill.ui-quality-gate"]
|
|
674
1003
|
source = "locales/en/.mustflow/skills/ui-quality-gate/SKILL.md"
|
|
675
1004
|
source_locale = "en"
|