mustflow 1.15.97
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/LICENSE +16 -0
- package/README.md +422 -0
- package/dist/cli/commands/check.js +73 -0
- package/dist/cli/commands/classify.js +104 -0
- package/dist/cli/commands/context.js +95 -0
- package/dist/cli/commands/contract-lint.js +74 -0
- package/dist/cli/commands/dashboard.js +654 -0
- package/dist/cli/commands/docs.js +382 -0
- package/dist/cli/commands/doctor.js +232 -0
- package/dist/cli/commands/explain.js +293 -0
- package/dist/cli/commands/help.js +148 -0
- package/dist/cli/commands/impact.js +120 -0
- package/dist/cli/commands/index.js +70 -0
- package/dist/cli/commands/init.js +986 -0
- package/dist/cli/commands/line-endings.js +102 -0
- package/dist/cli/commands/map.js +95 -0
- package/dist/cli/commands/run.js +442 -0
- package/dist/cli/commands/search.js +166 -0
- package/dist/cli/commands/status.js +65 -0
- package/dist/cli/commands/update.js +443 -0
- package/dist/cli/commands/verify.js +448 -0
- package/dist/cli/commands/version-sources.js +79 -0
- package/dist/cli/commands/version.js +57 -0
- package/dist/cli/i18n/en.js +702 -0
- package/dist/cli/i18n/es.js +702 -0
- package/dist/cli/i18n/fr.js +702 -0
- package/dist/cli/i18n/hi.js +702 -0
- package/dist/cli/i18n/ko.js +702 -0
- package/dist/cli/i18n/zh.js +702 -0
- package/dist/cli/index.js +218 -0
- package/dist/cli/lib/agent-context.js +342 -0
- package/dist/cli/lib/browser-open.js +58 -0
- package/dist/cli/lib/cli-output.js +36 -0
- package/dist/cli/lib/command-contract.js +1 -0
- package/dist/cli/lib/command-registry.js +107 -0
- package/dist/cli/lib/dashboard-html.js +1866 -0
- package/dist/cli/lib/dashboard-locale.js +309 -0
- package/dist/cli/lib/dashboard-preferences.js +405 -0
- package/dist/cli/lib/doc-review-ledger.js +226 -0
- package/dist/cli/lib/filesystem.js +125 -0
- package/dist/cli/lib/git-changes.js +13 -0
- package/dist/cli/lib/i18n.js +55 -0
- package/dist/cli/lib/local-index.js +1014 -0
- package/dist/cli/lib/locale-tags.js +4 -0
- package/dist/cli/lib/manifest-lock.js +131 -0
- package/dist/cli/lib/npm-version-check.js +97 -0
- package/dist/cli/lib/package-info.js +13 -0
- package/dist/cli/lib/preferences-options.js +8 -0
- package/dist/cli/lib/project-root.js +23 -0
- package/dist/cli/lib/repo-map.js +635 -0
- package/dist/cli/lib/reporter.js +8 -0
- package/dist/cli/lib/run-receipt.js +1 -0
- package/dist/cli/lib/template-i18n.js +265 -0
- package/dist/cli/lib/templates.js +188 -0
- package/dist/cli/lib/toml.js +1 -0
- package/dist/cli/lib/validation.js +1639 -0
- package/dist/cli/lib/version-sources.js +1 -0
- package/dist/core/authority-resolution.js +155 -0
- package/dist/core/change-classification.js +122 -0
- package/dist/core/change-verification.js +80 -0
- package/dist/core/check-issues.js +67 -0
- package/dist/core/command-classification.js +22 -0
- package/dist/core/command-contract-rules.js +27 -0
- package/dist/core/command-contract-validation.js +197 -0
- package/dist/core/command-cwd.js +12 -0
- package/dist/core/command-effects.js +182 -0
- package/dist/core/command-explanation.js +135 -0
- package/dist/core/command-intent-eligibility.js +76 -0
- package/dist/core/config-loading.js +54 -0
- package/dist/core/contract-lint.js +110 -0
- package/dist/core/contract-models.js +53 -0
- package/dist/core/dashboard-verification.js +132 -0
- package/dist/core/doc-review-triage.js +92 -0
- package/dist/core/line-endings.js +144 -0
- package/dist/core/public-json-contracts.js +112 -0
- package/dist/core/public-surface-explanation.js +49 -0
- package/dist/core/release-version-validation.js +53 -0
- package/dist/core/retention-explanation.js +74 -0
- package/dist/core/retention-policy.js +57 -0
- package/dist/core/run-receipt.js +77 -0
- package/dist/core/skill-route-alignment.js +100 -0
- package/dist/core/skill-route-explanation.js +117 -0
- package/dist/core/source-anchor-explanation.js +33 -0
- package/dist/core/source-anchor-status.js +269 -0
- package/dist/core/source-anchor-symbols.js +181 -0
- package/dist/core/source-anchor-validation.js +158 -0
- package/dist/core/source-anchors.js +194 -0
- package/dist/core/surface-decision-model.js +18 -0
- package/dist/core/toml.js +11 -0
- package/dist/core/verification-plan.js +41 -0
- package/dist/core/verification-scheduler.js +92 -0
- package/dist/core/version-impact.js +54 -0
- package/dist/core/version-sources.js +235 -0
- package/dist/core/version-sync-policy.js +85 -0
- package/examples/README.md +13 -0
- package/examples/docs-only/README.md +72 -0
- package/examples/host-instruction-conflicts/README.md +47 -0
- package/examples/minimal-js/README.md +98 -0
- package/examples/missing-command-contracts/README.md +70 -0
- package/examples/nested-repos/README.md +62 -0
- package/package.json +80 -0
- package/schemas/README.md +32 -0
- package/schemas/change-verification-report.schema.json +319 -0
- package/schemas/classify-report.schema.json +113 -0
- package/schemas/commands.schema.json +116 -0
- package/schemas/context-report.schema.json +341 -0
- package/schemas/contract-lint-report.schema.json +61 -0
- package/schemas/docs-review-list.schema.json +72 -0
- package/schemas/doctor-report.schema.json +175 -0
- package/schemas/explain-report.schema.json +471 -0
- package/schemas/impact-report.schema.json +121 -0
- package/schemas/line-endings-report.schema.json +63 -0
- package/schemas/run-receipt.schema.json +75 -0
- package/schemas/verify-report.schema.json +67 -0
- package/schemas/version-sources-report.schema.json +42 -0
- package/templates/default/common/.mustflow/config/commands.toml +251 -0
- package/templates/default/common/.mustflow/config/mustflow.toml +424 -0
- package/templates/default/common/.mustflow/config/preferences.toml +125 -0
- package/templates/default/common/gitignore.mustflow +9 -0
- package/templates/default/i18n.toml +483 -0
- package/templates/default/locales/en/.mustflow/context/INDEX.md +39 -0
- package/templates/default/locales/en/.mustflow/context/PROJECT.md +66 -0
- package/templates/default/locales/en/.mustflow/docs/agent-workflow.md +345 -0
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +78 -0
- package/templates/default/locales/en/.mustflow/skills/adapter-boundary/SKILL.md +193 -0
- package/templates/default/locales/en/.mustflow/skills/artifact-integrity-check/SKILL.md +121 -0
- package/templates/default/locales/en/.mustflow/skills/behavior-preserving-refactor/SKILL.md +182 -0
- package/templates/default/locales/en/.mustflow/skills/code-review/SKILL.md +115 -0
- package/templates/default/locales/en/.mustflow/skills/codebase-orientation/SKILL.md +115 -0
- package/templates/default/locales/en/.mustflow/skills/command-pattern/SKILL.md +247 -0
- package/templates/default/locales/en/.mustflow/skills/composition-over-inheritance/SKILL.md +176 -0
- package/templates/default/locales/en/.mustflow/skills/contract-sync-check/SKILL.md +116 -0
- package/templates/default/locales/en/.mustflow/skills/date-number-audit/SKILL.md +116 -0
- package/templates/default/locales/en/.mustflow/skills/dependency-injection/SKILL.md +161 -0
- package/templates/default/locales/en/.mustflow/skills/dependency-reality-check/SKILL.md +115 -0
- package/templates/default/locales/en/.mustflow/skills/diff-risk-review/SKILL.md +143 -0
- package/templates/default/locales/en/.mustflow/skills/docs-prose-review/SKILL.md +119 -0
- package/templates/default/locales/en/.mustflow/skills/docs-update/SKILL.md +100 -0
- package/templates/default/locales/en/.mustflow/skills/external-prompt-injection-defense/SKILL.md +124 -0
- package/templates/default/locales/en/.mustflow/skills/facade-pattern/SKILL.md +210 -0
- package/templates/default/locales/en/.mustflow/skills/failure-triage/SKILL.md +97 -0
- package/templates/default/locales/en/.mustflow/skills/instruction-conflict-scope-check/SKILL.md +118 -0
- package/templates/default/locales/en/.mustflow/skills/line-ending-hygiene/SKILL.md +111 -0
- package/templates/default/locales/en/.mustflow/skills/migration-safety-check/SKILL.md +117 -0
- package/templates/default/locales/en/.mustflow/skills/multi-agent-work-coordination/SKILL.md +260 -0
- package/templates/default/locales/en/.mustflow/skills/null-object-pattern/SKILL.md +196 -0
- package/templates/default/locales/en/.mustflow/skills/pattern-scout/SKILL.md +110 -0
- package/templates/default/locales/en/.mustflow/skills/performance-budget-check/SKILL.md +121 -0
- package/templates/default/locales/en/.mustflow/skills/project-context-authoring/SKILL.md +107 -0
- package/templates/default/locales/en/.mustflow/skills/pure-core-imperative-shell/SKILL.md +212 -0
- package/templates/default/locales/en/.mustflow/skills/readme-authoring/SKILL.md +115 -0
- package/templates/default/locales/en/.mustflow/skills/repo-improvement-loop/SKILL.md +150 -0
- package/templates/default/locales/en/.mustflow/skills/repro-first-debug/SKILL.md +112 -0
- package/templates/default/locales/en/.mustflow/skills/requirement-regression-guard/SKILL.md +152 -0
- package/templates/default/locales/en/.mustflow/skills/result-option/SKILL.md +186 -0
- package/templates/default/locales/en/.mustflow/skills/security-privacy-review/SKILL.md +130 -0
- package/templates/default/locales/en/.mustflow/skills/security-regression-tests/SKILL.md +157 -0
- package/templates/default/locales/en/.mustflow/skills/skill-authoring/SKILL.md +110 -0
- package/templates/default/locales/en/.mustflow/skills/source-freshness-check/SKILL.md +111 -0
- package/templates/default/locales/en/.mustflow/skills/state-machine-pattern/SKILL.md +214 -0
- package/templates/default/locales/en/.mustflow/skills/strategy-pattern/SKILL.md +215 -0
- package/templates/default/locales/en/.mustflow/skills/structure-discovery-gate/SKILL.md +159 -0
- package/templates/default/locales/en/.mustflow/skills/test-maintenance/SKILL.md +122 -0
- package/templates/default/locales/en/.mustflow/skills/ui-quality-gate/SKILL.md +119 -0
- package/templates/default/locales/en/.mustflow/skills/visual-review-artifact/SKILL.md +127 -0
- package/templates/default/locales/en/.mustflow/skills/visual-review-artifact/assets/review-template.html +286 -0
- package/templates/default/locales/en/.mustflow/skills/visual-review-artifact/resources.toml +7 -0
- package/templates/default/locales/en/.mustflow/skills/web-asset-optimization/SKILL.md +108 -0
- package/templates/default/locales/en/AGENTS.md +114 -0
- package/templates/default/locales/es/.mustflow/context/INDEX.md +39 -0
- package/templates/default/locales/es/.mustflow/context/PROJECT.md +63 -0
- package/templates/default/locales/es/.mustflow/docs/agent-workflow.md +365 -0
- package/templates/default/locales/es/.mustflow/skills/INDEX.md +78 -0
- package/templates/default/locales/es/.mustflow/skills/adapter-boundary/SKILL.md +193 -0
- package/templates/default/locales/es/.mustflow/skills/artifact-integrity-check/SKILL.md +114 -0
- package/templates/default/locales/es/.mustflow/skills/behavior-preserving-refactor/SKILL.md +182 -0
- package/templates/default/locales/es/.mustflow/skills/code-review/SKILL.md +115 -0
- package/templates/default/locales/es/.mustflow/skills/codebase-orientation/SKILL.md +115 -0
- package/templates/default/locales/es/.mustflow/skills/command-pattern/SKILL.md +247 -0
- package/templates/default/locales/es/.mustflow/skills/composition-over-inheritance/SKILL.md +176 -0
- package/templates/default/locales/es/.mustflow/skills/contract-sync-check/SKILL.md +116 -0
- package/templates/default/locales/es/.mustflow/skills/date-number-audit/SKILL.md +116 -0
- package/templates/default/locales/es/.mustflow/skills/dependency-injection/SKILL.md +161 -0
- package/templates/default/locales/es/.mustflow/skills/dependency-reality-check/SKILL.md +115 -0
- package/templates/default/locales/es/.mustflow/skills/diff-risk-review/SKILL.md +136 -0
- package/templates/default/locales/es/.mustflow/skills/docs-prose-review/SKILL.md +119 -0
- package/templates/default/locales/es/.mustflow/skills/docs-update/SKILL.md +97 -0
- package/templates/default/locales/es/.mustflow/skills/external-prompt-injection-defense/SKILL.md +116 -0
- package/templates/default/locales/es/.mustflow/skills/facade-pattern/SKILL.md +210 -0
- package/templates/default/locales/es/.mustflow/skills/failure-triage/SKILL.md +97 -0
- package/templates/default/locales/es/.mustflow/skills/instruction-conflict-scope-check/SKILL.md +118 -0
- package/templates/default/locales/es/.mustflow/skills/line-ending-hygiene/SKILL.md +111 -0
- package/templates/default/locales/es/.mustflow/skills/migration-safety-check/SKILL.md +117 -0
- package/templates/default/locales/es/.mustflow/skills/multi-agent-work-coordination/SKILL.md +260 -0
- package/templates/default/locales/es/.mustflow/skills/null-object-pattern/SKILL.md +196 -0
- package/templates/default/locales/es/.mustflow/skills/pattern-scout/SKILL.md +110 -0
- package/templates/default/locales/es/.mustflow/skills/performance-budget-check/SKILL.md +121 -0
- package/templates/default/locales/es/.mustflow/skills/project-context-authoring/SKILL.md +107 -0
- package/templates/default/locales/es/.mustflow/skills/pure-core-imperative-shell/SKILL.md +212 -0
- package/templates/default/locales/es/.mustflow/skills/readme-authoring/SKILL.md +115 -0
- package/templates/default/locales/es/.mustflow/skills/repo-improvement-loop/SKILL.md +150 -0
- package/templates/default/locales/es/.mustflow/skills/repro-first-debug/SKILL.md +112 -0
- package/templates/default/locales/es/.mustflow/skills/requirement-regression-guard/SKILL.md +152 -0
- package/templates/default/locales/es/.mustflow/skills/result-option/SKILL.md +186 -0
- package/templates/default/locales/es/.mustflow/skills/security-privacy-review/SKILL.md +116 -0
- package/templates/default/locales/es/.mustflow/skills/security-regression-tests/SKILL.md +131 -0
- package/templates/default/locales/es/.mustflow/skills/skill-authoring/SKILL.md +110 -0
- package/templates/default/locales/es/.mustflow/skills/source-freshness-check/SKILL.md +111 -0
- package/templates/default/locales/es/.mustflow/skills/state-machine-pattern/SKILL.md +214 -0
- package/templates/default/locales/es/.mustflow/skills/strategy-pattern/SKILL.md +215 -0
- package/templates/default/locales/es/.mustflow/skills/structure-discovery-gate/SKILL.md +159 -0
- package/templates/default/locales/es/.mustflow/skills/test-maintenance/SKILL.md +122 -0
- package/templates/default/locales/es/.mustflow/skills/ui-quality-gate/SKILL.md +117 -0
- package/templates/default/locales/es/.mustflow/skills/visual-review-artifact/SKILL.md +127 -0
- package/templates/default/locales/es/.mustflow/skills/visual-review-artifact/assets/review-template.html +286 -0
- package/templates/default/locales/es/.mustflow/skills/visual-review-artifact/resources.toml +7 -0
- package/templates/default/locales/es/.mustflow/skills/web-asset-optimization/SKILL.md +108 -0
- package/templates/default/locales/es/AGENTS.md +83 -0
- package/templates/default/locales/fr/.mustflow/context/INDEX.md +39 -0
- package/templates/default/locales/fr/.mustflow/context/PROJECT.md +63 -0
- package/templates/default/locales/fr/.mustflow/docs/agent-workflow.md +368 -0
- package/templates/default/locales/fr/.mustflow/skills/INDEX.md +78 -0
- package/templates/default/locales/fr/.mustflow/skills/adapter-boundary/SKILL.md +193 -0
- package/templates/default/locales/fr/.mustflow/skills/artifact-integrity-check/SKILL.md +114 -0
- package/templates/default/locales/fr/.mustflow/skills/behavior-preserving-refactor/SKILL.md +182 -0
- package/templates/default/locales/fr/.mustflow/skills/code-review/SKILL.md +115 -0
- package/templates/default/locales/fr/.mustflow/skills/codebase-orientation/SKILL.md +115 -0
- package/templates/default/locales/fr/.mustflow/skills/command-pattern/SKILL.md +247 -0
- package/templates/default/locales/fr/.mustflow/skills/composition-over-inheritance/SKILL.md +176 -0
- package/templates/default/locales/fr/.mustflow/skills/contract-sync-check/SKILL.md +116 -0
- package/templates/default/locales/fr/.mustflow/skills/date-number-audit/SKILL.md +116 -0
- package/templates/default/locales/fr/.mustflow/skills/dependency-injection/SKILL.md +161 -0
- package/templates/default/locales/fr/.mustflow/skills/dependency-reality-check/SKILL.md +115 -0
- package/templates/default/locales/fr/.mustflow/skills/diff-risk-review/SKILL.md +136 -0
- package/templates/default/locales/fr/.mustflow/skills/docs-prose-review/SKILL.md +119 -0
- package/templates/default/locales/fr/.mustflow/skills/docs-update/SKILL.md +97 -0
- package/templates/default/locales/fr/.mustflow/skills/external-prompt-injection-defense/SKILL.md +116 -0
- package/templates/default/locales/fr/.mustflow/skills/facade-pattern/SKILL.md +210 -0
- package/templates/default/locales/fr/.mustflow/skills/failure-triage/SKILL.md +97 -0
- package/templates/default/locales/fr/.mustflow/skills/instruction-conflict-scope-check/SKILL.md +118 -0
- package/templates/default/locales/fr/.mustflow/skills/line-ending-hygiene/SKILL.md +111 -0
- package/templates/default/locales/fr/.mustflow/skills/migration-safety-check/SKILL.md +117 -0
- package/templates/default/locales/fr/.mustflow/skills/multi-agent-work-coordination/SKILL.md +260 -0
- package/templates/default/locales/fr/.mustflow/skills/null-object-pattern/SKILL.md +196 -0
- package/templates/default/locales/fr/.mustflow/skills/pattern-scout/SKILL.md +110 -0
- package/templates/default/locales/fr/.mustflow/skills/performance-budget-check/SKILL.md +121 -0
- package/templates/default/locales/fr/.mustflow/skills/project-context-authoring/SKILL.md +107 -0
- package/templates/default/locales/fr/.mustflow/skills/pure-core-imperative-shell/SKILL.md +212 -0
- package/templates/default/locales/fr/.mustflow/skills/readme-authoring/SKILL.md +115 -0
- package/templates/default/locales/fr/.mustflow/skills/repo-improvement-loop/SKILL.md +150 -0
- package/templates/default/locales/fr/.mustflow/skills/repro-first-debug/SKILL.md +112 -0
- package/templates/default/locales/fr/.mustflow/skills/requirement-regression-guard/SKILL.md +152 -0
- package/templates/default/locales/fr/.mustflow/skills/result-option/SKILL.md +186 -0
- package/templates/default/locales/fr/.mustflow/skills/security-privacy-review/SKILL.md +116 -0
- package/templates/default/locales/fr/.mustflow/skills/security-regression-tests/SKILL.md +131 -0
- package/templates/default/locales/fr/.mustflow/skills/skill-authoring/SKILL.md +110 -0
- package/templates/default/locales/fr/.mustflow/skills/source-freshness-check/SKILL.md +111 -0
- package/templates/default/locales/fr/.mustflow/skills/state-machine-pattern/SKILL.md +214 -0
- package/templates/default/locales/fr/.mustflow/skills/strategy-pattern/SKILL.md +215 -0
- package/templates/default/locales/fr/.mustflow/skills/structure-discovery-gate/SKILL.md +159 -0
- package/templates/default/locales/fr/.mustflow/skills/test-maintenance/SKILL.md +122 -0
- package/templates/default/locales/fr/.mustflow/skills/ui-quality-gate/SKILL.md +117 -0
- package/templates/default/locales/fr/.mustflow/skills/visual-review-artifact/SKILL.md +127 -0
- package/templates/default/locales/fr/.mustflow/skills/visual-review-artifact/assets/review-template.html +286 -0
- package/templates/default/locales/fr/.mustflow/skills/visual-review-artifact/resources.toml +7 -0
- package/templates/default/locales/fr/.mustflow/skills/web-asset-optimization/SKILL.md +108 -0
- package/templates/default/locales/fr/AGENTS.md +84 -0
- package/templates/default/locales/hi/.mustflow/context/INDEX.md +39 -0
- package/templates/default/locales/hi/.mustflow/context/PROJECT.md +65 -0
- package/templates/default/locales/hi/.mustflow/docs/agent-workflow.md +359 -0
- package/templates/default/locales/hi/.mustflow/skills/INDEX.md +78 -0
- package/templates/default/locales/hi/.mustflow/skills/adapter-boundary/SKILL.md +193 -0
- package/templates/default/locales/hi/.mustflow/skills/artifact-integrity-check/SKILL.md +114 -0
- package/templates/default/locales/hi/.mustflow/skills/behavior-preserving-refactor/SKILL.md +182 -0
- package/templates/default/locales/hi/.mustflow/skills/code-review/SKILL.md +115 -0
- package/templates/default/locales/hi/.mustflow/skills/codebase-orientation/SKILL.md +115 -0
- package/templates/default/locales/hi/.mustflow/skills/command-pattern/SKILL.md +247 -0
- package/templates/default/locales/hi/.mustflow/skills/composition-over-inheritance/SKILL.md +176 -0
- package/templates/default/locales/hi/.mustflow/skills/contract-sync-check/SKILL.md +116 -0
- package/templates/default/locales/hi/.mustflow/skills/date-number-audit/SKILL.md +116 -0
- package/templates/default/locales/hi/.mustflow/skills/dependency-injection/SKILL.md +161 -0
- package/templates/default/locales/hi/.mustflow/skills/dependency-reality-check/SKILL.md +115 -0
- package/templates/default/locales/hi/.mustflow/skills/diff-risk-review/SKILL.md +136 -0
- package/templates/default/locales/hi/.mustflow/skills/docs-prose-review/SKILL.md +119 -0
- package/templates/default/locales/hi/.mustflow/skills/docs-update/SKILL.md +97 -0
- package/templates/default/locales/hi/.mustflow/skills/external-prompt-injection-defense/SKILL.md +116 -0
- package/templates/default/locales/hi/.mustflow/skills/facade-pattern/SKILL.md +210 -0
- package/templates/default/locales/hi/.mustflow/skills/failure-triage/SKILL.md +97 -0
- package/templates/default/locales/hi/.mustflow/skills/instruction-conflict-scope-check/SKILL.md +118 -0
- package/templates/default/locales/hi/.mustflow/skills/line-ending-hygiene/SKILL.md +111 -0
- package/templates/default/locales/hi/.mustflow/skills/migration-safety-check/SKILL.md +117 -0
- package/templates/default/locales/hi/.mustflow/skills/multi-agent-work-coordination/SKILL.md +260 -0
- package/templates/default/locales/hi/.mustflow/skills/null-object-pattern/SKILL.md +196 -0
- package/templates/default/locales/hi/.mustflow/skills/pattern-scout/SKILL.md +110 -0
- package/templates/default/locales/hi/.mustflow/skills/performance-budget-check/SKILL.md +121 -0
- package/templates/default/locales/hi/.mustflow/skills/project-context-authoring/SKILL.md +107 -0
- package/templates/default/locales/hi/.mustflow/skills/pure-core-imperative-shell/SKILL.md +212 -0
- package/templates/default/locales/hi/.mustflow/skills/readme-authoring/SKILL.md +115 -0
- package/templates/default/locales/hi/.mustflow/skills/repo-improvement-loop/SKILL.md +150 -0
- package/templates/default/locales/hi/.mustflow/skills/repro-first-debug/SKILL.md +112 -0
- package/templates/default/locales/hi/.mustflow/skills/requirement-regression-guard/SKILL.md +152 -0
- package/templates/default/locales/hi/.mustflow/skills/result-option/SKILL.md +186 -0
- package/templates/default/locales/hi/.mustflow/skills/security-privacy-review/SKILL.md +116 -0
- package/templates/default/locales/hi/.mustflow/skills/security-regression-tests/SKILL.md +131 -0
- package/templates/default/locales/hi/.mustflow/skills/skill-authoring/SKILL.md +110 -0
- package/templates/default/locales/hi/.mustflow/skills/source-freshness-check/SKILL.md +111 -0
- package/templates/default/locales/hi/.mustflow/skills/state-machine-pattern/SKILL.md +214 -0
- package/templates/default/locales/hi/.mustflow/skills/strategy-pattern/SKILL.md +215 -0
- package/templates/default/locales/hi/.mustflow/skills/structure-discovery-gate/SKILL.md +159 -0
- package/templates/default/locales/hi/.mustflow/skills/test-maintenance/SKILL.md +122 -0
- package/templates/default/locales/hi/.mustflow/skills/ui-quality-gate/SKILL.md +117 -0
- package/templates/default/locales/hi/.mustflow/skills/visual-review-artifact/SKILL.md +127 -0
- package/templates/default/locales/hi/.mustflow/skills/visual-review-artifact/assets/review-template.html +286 -0
- package/templates/default/locales/hi/.mustflow/skills/visual-review-artifact/resources.toml +7 -0
- package/templates/default/locales/hi/.mustflow/skills/web-asset-optimization/SKILL.md +108 -0
- package/templates/default/locales/hi/AGENTS.md +83 -0
- package/templates/default/locales/ko/.mustflow/context/INDEX.md +39 -0
- package/templates/default/locales/ko/.mustflow/context/PROJECT.md +66 -0
- package/templates/default/locales/ko/.mustflow/docs/agent-workflow.md +506 -0
- package/templates/default/locales/ko/.mustflow/skills/INDEX.md +78 -0
- package/templates/default/locales/ko/.mustflow/skills/adapter-boundary/SKILL.md +193 -0
- package/templates/default/locales/ko/.mustflow/skills/artifact-integrity-check/SKILL.md +114 -0
- package/templates/default/locales/ko/.mustflow/skills/behavior-preserving-refactor/SKILL.md +182 -0
- package/templates/default/locales/ko/.mustflow/skills/code-review/SKILL.md +118 -0
- package/templates/default/locales/ko/.mustflow/skills/codebase-orientation/SKILL.md +115 -0
- package/templates/default/locales/ko/.mustflow/skills/command-pattern/SKILL.md +247 -0
- package/templates/default/locales/ko/.mustflow/skills/composition-over-inheritance/SKILL.md +176 -0
- package/templates/default/locales/ko/.mustflow/skills/contract-sync-check/SKILL.md +116 -0
- package/templates/default/locales/ko/.mustflow/skills/date-number-audit/SKILL.md +116 -0
- package/templates/default/locales/ko/.mustflow/skills/dependency-injection/SKILL.md +161 -0
- package/templates/default/locales/ko/.mustflow/skills/dependency-reality-check/SKILL.md +115 -0
- package/templates/default/locales/ko/.mustflow/skills/diff-risk-review/SKILL.md +136 -0
- package/templates/default/locales/ko/.mustflow/skills/docs-prose-review/SKILL.md +119 -0
- package/templates/default/locales/ko/.mustflow/skills/docs-update/SKILL.md +107 -0
- package/templates/default/locales/ko/.mustflow/skills/external-prompt-injection-defense/SKILL.md +116 -0
- package/templates/default/locales/ko/.mustflow/skills/facade-pattern/SKILL.md +210 -0
- package/templates/default/locales/ko/.mustflow/skills/failure-triage/SKILL.md +119 -0
- package/templates/default/locales/ko/.mustflow/skills/instruction-conflict-scope-check/SKILL.md +118 -0
- package/templates/default/locales/ko/.mustflow/skills/line-ending-hygiene/SKILL.md +111 -0
- package/templates/default/locales/ko/.mustflow/skills/migration-safety-check/SKILL.md +117 -0
- package/templates/default/locales/ko/.mustflow/skills/multi-agent-work-coordination/SKILL.md +259 -0
- package/templates/default/locales/ko/.mustflow/skills/null-object-pattern/SKILL.md +196 -0
- package/templates/default/locales/ko/.mustflow/skills/pattern-scout/SKILL.md +110 -0
- package/templates/default/locales/ko/.mustflow/skills/performance-budget-check/SKILL.md +121 -0
- package/templates/default/locales/ko/.mustflow/skills/project-context-authoring/SKILL.md +107 -0
- package/templates/default/locales/ko/.mustflow/skills/pure-core-imperative-shell/SKILL.md +212 -0
- package/templates/default/locales/ko/.mustflow/skills/readme-authoring/SKILL.md +115 -0
- package/templates/default/locales/ko/.mustflow/skills/repo-improvement-loop/SKILL.md +150 -0
- package/templates/default/locales/ko/.mustflow/skills/repro-first-debug/SKILL.md +112 -0
- package/templates/default/locales/ko/.mustflow/skills/requirement-regression-guard/SKILL.md +152 -0
- package/templates/default/locales/ko/.mustflow/skills/result-option/SKILL.md +186 -0
- package/templates/default/locales/ko/.mustflow/skills/security-privacy-review/SKILL.md +116 -0
- package/templates/default/locales/ko/.mustflow/skills/security-regression-tests/SKILL.md +131 -0
- package/templates/default/locales/ko/.mustflow/skills/skill-authoring/SKILL.md +110 -0
- package/templates/default/locales/ko/.mustflow/skills/source-freshness-check/SKILL.md +111 -0
- package/templates/default/locales/ko/.mustflow/skills/state-machine-pattern/SKILL.md +214 -0
- package/templates/default/locales/ko/.mustflow/skills/strategy-pattern/SKILL.md +215 -0
- package/templates/default/locales/ko/.mustflow/skills/structure-discovery-gate/SKILL.md +159 -0
- package/templates/default/locales/ko/.mustflow/skills/test-maintenance/SKILL.md +130 -0
- package/templates/default/locales/ko/.mustflow/skills/ui-quality-gate/SKILL.md +117 -0
- package/templates/default/locales/ko/.mustflow/skills/visual-review-artifact/SKILL.md +127 -0
- package/templates/default/locales/ko/.mustflow/skills/visual-review-artifact/assets/review-template.html +286 -0
- package/templates/default/locales/ko/.mustflow/skills/visual-review-artifact/resources.toml +7 -0
- package/templates/default/locales/ko/.mustflow/skills/web-asset-optimization/SKILL.md +108 -0
- package/templates/default/locales/ko/AGENTS.md +85 -0
- package/templates/default/locales/zh/.mustflow/context/INDEX.md +39 -0
- package/templates/default/locales/zh/.mustflow/context/PROJECT.md +64 -0
- package/templates/default/locales/zh/.mustflow/docs/agent-workflow.md +310 -0
- package/templates/default/locales/zh/.mustflow/skills/INDEX.md +78 -0
- package/templates/default/locales/zh/.mustflow/skills/adapter-boundary/SKILL.md +193 -0
- package/templates/default/locales/zh/.mustflow/skills/artifact-integrity-check/SKILL.md +114 -0
- package/templates/default/locales/zh/.mustflow/skills/behavior-preserving-refactor/SKILL.md +182 -0
- package/templates/default/locales/zh/.mustflow/skills/code-review/SKILL.md +115 -0
- package/templates/default/locales/zh/.mustflow/skills/codebase-orientation/SKILL.md +115 -0
- package/templates/default/locales/zh/.mustflow/skills/command-pattern/SKILL.md +247 -0
- package/templates/default/locales/zh/.mustflow/skills/composition-over-inheritance/SKILL.md +176 -0
- package/templates/default/locales/zh/.mustflow/skills/contract-sync-check/SKILL.md +116 -0
- package/templates/default/locales/zh/.mustflow/skills/date-number-audit/SKILL.md +116 -0
- package/templates/default/locales/zh/.mustflow/skills/dependency-injection/SKILL.md +161 -0
- package/templates/default/locales/zh/.mustflow/skills/dependency-reality-check/SKILL.md +115 -0
- package/templates/default/locales/zh/.mustflow/skills/diff-risk-review/SKILL.md +136 -0
- package/templates/default/locales/zh/.mustflow/skills/docs-prose-review/SKILL.md +119 -0
- package/templates/default/locales/zh/.mustflow/skills/docs-update/SKILL.md +97 -0
- package/templates/default/locales/zh/.mustflow/skills/external-prompt-injection-defense/SKILL.md +116 -0
- package/templates/default/locales/zh/.mustflow/skills/facade-pattern/SKILL.md +210 -0
- package/templates/default/locales/zh/.mustflow/skills/failure-triage/SKILL.md +96 -0
- package/templates/default/locales/zh/.mustflow/skills/instruction-conflict-scope-check/SKILL.md +118 -0
- package/templates/default/locales/zh/.mustflow/skills/line-ending-hygiene/SKILL.md +111 -0
- package/templates/default/locales/zh/.mustflow/skills/migration-safety-check/SKILL.md +117 -0
- package/templates/default/locales/zh/.mustflow/skills/multi-agent-work-coordination/SKILL.md +260 -0
- package/templates/default/locales/zh/.mustflow/skills/null-object-pattern/SKILL.md +196 -0
- package/templates/default/locales/zh/.mustflow/skills/pattern-scout/SKILL.md +110 -0
- package/templates/default/locales/zh/.mustflow/skills/performance-budget-check/SKILL.md +121 -0
- package/templates/default/locales/zh/.mustflow/skills/project-context-authoring/SKILL.md +107 -0
- package/templates/default/locales/zh/.mustflow/skills/pure-core-imperative-shell/SKILL.md +212 -0
- package/templates/default/locales/zh/.mustflow/skills/readme-authoring/SKILL.md +115 -0
- package/templates/default/locales/zh/.mustflow/skills/repo-improvement-loop/SKILL.md +150 -0
- package/templates/default/locales/zh/.mustflow/skills/repro-first-debug/SKILL.md +112 -0
- package/templates/default/locales/zh/.mustflow/skills/requirement-regression-guard/SKILL.md +152 -0
- package/templates/default/locales/zh/.mustflow/skills/result-option/SKILL.md +186 -0
- package/templates/default/locales/zh/.mustflow/skills/security-privacy-review/SKILL.md +116 -0
- package/templates/default/locales/zh/.mustflow/skills/security-regression-tests/SKILL.md +131 -0
- package/templates/default/locales/zh/.mustflow/skills/skill-authoring/SKILL.md +110 -0
- package/templates/default/locales/zh/.mustflow/skills/source-freshness-check/SKILL.md +111 -0
- package/templates/default/locales/zh/.mustflow/skills/state-machine-pattern/SKILL.md +214 -0
- package/templates/default/locales/zh/.mustflow/skills/strategy-pattern/SKILL.md +215 -0
- package/templates/default/locales/zh/.mustflow/skills/structure-discovery-gate/SKILL.md +159 -0
- package/templates/default/locales/zh/.mustflow/skills/test-maintenance/SKILL.md +122 -0
- package/templates/default/locales/zh/.mustflow/skills/ui-quality-gate/SKILL.md +117 -0
- package/templates/default/locales/zh/.mustflow/skills/visual-review-artifact/SKILL.md +127 -0
- package/templates/default/locales/zh/.mustflow/skills/visual-review-artifact/assets/review-template.html +286 -0
- package/templates/default/locales/zh/.mustflow/skills/visual-review-artifact/resources.toml +7 -0
- package/templates/default/locales/zh/.mustflow/skills/web-asset-optimization/SKILL.md +108 -0
- package/templates/default/locales/zh/AGENTS.md +86 -0
- package/templates/default/manifest.toml +339 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
MIT No Attribution
|
|
2
|
+
|
|
3
|
+
Copyright 2026 mustflow contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
6
|
+
software and associated documentation files (the "Software"), to deal in the Software
|
|
7
|
+
without restriction, including without limitation the rights to use, copy, modify,
|
|
8
|
+
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
permit persons to whom the Software is furnished to do so.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
12
|
+
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
13
|
+
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
14
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
15
|
+
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
16
|
+
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
# mustflow
|
|
2
|
+
|
|
3
|
+
Languages: [English](README.md) · [한국어](docs/i18n/ko/README.md) · [中文](docs/i18n/zh/README.md) · [Español](docs/i18n/es/README.md) · [Français](docs/i18n/fr/README.md) · [हिन्दी](docs/i18n/hi/README.md)
|
|
4
|
+
|
|
5
|
+
mustflow is a workflow CLI designed for LLM coding agents. It guides agents to enter a repository, understand the correct operating context, run only authorized commands, and verify their work without guessing.
|
|
6
|
+
|
|
7
|
+
The core concept is straightforward: place `AGENTS.md` at the project root and keep detailed workflows under `.mustflow/`. Agents start from `AGENTS.md` and then follow the command contract, skills, project context, and verification rules in sequence.
|
|
8
|
+
|
|
9
|
+
- Documentation site: <https://0disoft.github.io/mustflow/>
|
|
10
|
+
- Human-readable project examples: [`examples/`](examples/)
|
|
11
|
+
- Repository: <https://github.com/0disoft/mustflow>
|
|
12
|
+
- Issues: <https://github.com/0disoft/mustflow/issues>
|
|
13
|
+
- Contributing: [CONTRIBUTING.md](https://github.com/0disoft/mustflow/blob/main/CONTRIBUTING.md)
|
|
14
|
+
- Security: [SECURITY.md](https://github.com/0disoft/mustflow/blob/main/SECURITY.md)
|
|
15
|
+
- Changelog: [CHANGELOG.md](https://github.com/0disoft/mustflow/blob/main/CHANGELOG.md)
|
|
16
|
+
|
|
17
|
+
## No-guessing workflow
|
|
18
|
+
|
|
19
|
+
The initial mustflow path is deliberately narrow.
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
npm install -D mustflow
|
|
23
|
+
npx mf init --yes
|
|
24
|
+
npx mf check --strict
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
After changes to code, templates, schemas, or documentation, classify the changed paths and review the verification plan before running any commands.
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npx mf classify --changed --json > .mustflow/state/change-plan.json
|
|
31
|
+
npx mf verify --from-plan .mustflow/state/change-plan.json --plan-only --json
|
|
32
|
+
npx mf verify --from-plan .mustflow/state/change-plan.json --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The plan is based on change classification and the `required_after` metadata in `.mustflow/config/commands.toml`. A command runs only if its declared intent is configured, one-shot, agent-allowed, closed-stdin, bounded by a timeout, and backed by an explicit command source.
|
|
36
|
+
|
|
37
|
+
Source anchors, maps, and SQLite search results serve as navigation aids only. They do not grant command permission, bypass validation, or override `AGENTS.md` and `.mustflow/config/commands.toml`.
|
|
38
|
+
|
|
39
|
+
## Agent Read Flow
|
|
40
|
+
|
|
41
|
+
```mermaid
|
|
42
|
+
flowchart TD
|
|
43
|
+
A["AGENTS.md"] --> B["Workflow"]
|
|
44
|
+
B --> C["Config files"]
|
|
45
|
+
C --> D["Command rules"]
|
|
46
|
+
D --> E{"preferences.toml?"}
|
|
47
|
+
E -->|yes| F["preferences.toml"]
|
|
48
|
+
E -->|no| G["Skills index"]
|
|
49
|
+
F --> G
|
|
50
|
+
G --> H{"Need task context?"}
|
|
51
|
+
H -->|yes| I["Context files, matching skill, or REPO_MAP.md"]
|
|
52
|
+
H -->|no| J["Source, tests, docs"]
|
|
53
|
+
I --> J
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`read_order` defines the required reading sequence, while `optional_read_order` and `[context]` control how task-specific context loads. The `[refresh]` policy sets when agents reread the same instructions.
|
|
57
|
+
|
|
58
|
+
The skills index acts as an active routing step: agents compare the task with `.mustflow/skills/INDEX.md` and read matching `SKILL.md` files before editing that scope. Skills guide procedure only; command execution still comes from `.mustflow/config/commands.toml`.
|
|
59
|
+
|
|
60
|
+
## Quick start
|
|
61
|
+
|
|
62
|
+
Node.js 20 or newer is required. mustflow is distributed as an npm package with the CLI named `mf`.
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
npm install -D mustflow
|
|
66
|
+
npx mf init --yes
|
|
67
|
+
npx mf check --strict
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
In an interactive terminal, `mf init` prompts you to choose the document language, project profile, and agent report language. Use `mf init --yes` to install English defaults without prompts.
|
|
71
|
+
|
|
72
|
+
Run `mf init --dry-run` to preview the installation plan before writing files.
|
|
73
|
+
|
|
74
|
+
pnpm and Bun can use the same npm package:
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
pnpm add -D mustflow
|
|
78
|
+
pnpm exec mf init --yes
|
|
79
|
+
|
|
80
|
+
bun add -d mustflow
|
|
81
|
+
bunx mf init --yes
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Deno `npm:` execution is experimental until separately verified.
|
|
85
|
+
|
|
86
|
+
## What it does
|
|
87
|
+
|
|
88
|
+
mustflow installs and validates an agent workflow for user projects.
|
|
89
|
+
|
|
90
|
+
- Installs `AGENTS.md` and `.mustflow/**` workflow files.
|
|
91
|
+
- Declares runnable command rules in `.mustflow/config/commands.toml`.
|
|
92
|
+
- Checks installation health and configuration structure with `mf check` and `mf doctor`.
|
|
93
|
+
- Classifies changed files, public surfaces, and validation reasons with `mf classify`.
|
|
94
|
+
- Prints execution-free verification plans with `mf verify --plan-only --json`.
|
|
95
|
+
- Runs only allowed one-shot commands within a timeout via `mf run <intent>` or `mf verify` when the selected intent is runnable.
|
|
96
|
+
- Writes command receipts to `.mustflow/state/runs/latest.json`.
|
|
97
|
+
- Generates a concise repository navigation map, `REPO_MAP.md`, with `mf map`.
|
|
98
|
+
- Indexes and searches mustflow docs, skills, skill routes, command rules, command-effect locks, and opt-in source anchor metadata with SQLite via `mf index` and `mf search`. The local SQLite file is a rebuildable lookup cache, not a memory store, audit log, command transcript store, or source-content database.
|
|
99
|
+
- Tracks agent-created or agent-modified documentation needing prose review with `mf docs review`.
|
|
100
|
+
- Previews and applies bundled template updates safely with `mf update`.
|
|
101
|
+
- Publishes JSON Schemas for automation-facing reports and command contracts in `schemas/`.
|
|
102
|
+
|
|
103
|
+
## What it does not do
|
|
104
|
+
|
|
105
|
+
mustflow is not an automatic project editor and is not tied to a single agent product.
|
|
106
|
+
|
|
107
|
+
- It does not generate or modify application source code.
|
|
108
|
+
- It does not change project files just by being installed. Files are created only when `mf init` runs.
|
|
109
|
+
- It does not enforce tool-specific filenames such as `CLAUDE.md` or `GEMINI.md`.
|
|
110
|
+
- It does not replace a build system, test runner, package manager, or CI/CD setup.
|
|
111
|
+
- It does not add platform-specific files for GitHub, GitLab, or similar tools to the default template.
|
|
112
|
+
- It does not create a `justfile`, `Makefile`, or `Taskfile.yml` by default.
|
|
113
|
+
- `mf dashboard` inspects status, verification recommendations, command intents, release/version-source status, template update readiness, latest run receipts, skill routes, safe preferences, and documentation review state. It can copy or explain workflow information but does not run commands, apply fixes, start agents, merge branches, push changes, or update files automatically.
|
|
114
|
+
|
|
115
|
+
## Installed files
|
|
116
|
+
|
|
117
|
+
`mf init` installs only the agent workflow into the current directory.
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
your-project/
|
|
121
|
+
├─ AGENTS.md
|
|
122
|
+
├─ .gitignore
|
|
123
|
+
└─ .mustflow/
|
|
124
|
+
├─ config/
|
|
125
|
+
│ ├─ commands.toml
|
|
126
|
+
│ ├─ manifest.lock.toml
|
|
127
|
+
│ ├─ mustflow.toml
|
|
128
|
+
│ └─ preferences.toml
|
|
129
|
+
├─ context/
|
|
130
|
+
│ ├─ INDEX.md
|
|
131
|
+
│ └─ PROJECT.md
|
|
132
|
+
├─ docs/
|
|
133
|
+
│ └─ agent-workflow.md
|
|
134
|
+
└─ skills/
|
|
135
|
+
├─ INDEX.md
|
|
136
|
+
├─ artifact-integrity-check/
|
|
137
|
+
│ └─ SKILL.md
|
|
138
|
+
├─ behavior-preserving-refactor/
|
|
139
|
+
│ └─ SKILL.md
|
|
140
|
+
├─ code-review/
|
|
141
|
+
│ └─ SKILL.md
|
|
142
|
+
├─ codebase-orientation/
|
|
143
|
+
│ └─ SKILL.md
|
|
144
|
+
├─ contract-sync-check/
|
|
145
|
+
│ └─ SKILL.md
|
|
146
|
+
├─ date-number-audit/
|
|
147
|
+
│ └─ SKILL.md
|
|
148
|
+
├─ dependency-reality-check/
|
|
149
|
+
│ └─ SKILL.md
|
|
150
|
+
├─ diff-risk-review/
|
|
151
|
+
│ └─ SKILL.md
|
|
152
|
+
├─ docs-prose-review/
|
|
153
|
+
│ └─ SKILL.md
|
|
154
|
+
├─ docs-update/
|
|
155
|
+
│ └─ SKILL.md
|
|
156
|
+
├─ external-prompt-injection-defense/
|
|
157
|
+
│ └─ SKILL.md
|
|
158
|
+
├─ failure-triage/
|
|
159
|
+
│ └─ SKILL.md
|
|
160
|
+
├─ instruction-conflict-scope-check/
|
|
161
|
+
│ └─ SKILL.md
|
|
162
|
+
├─ migration-safety-check/
|
|
163
|
+
│ └─ SKILL.md
|
|
164
|
+
├─ multi-agent-work-coordination/
|
|
165
|
+
│ └─ SKILL.md
|
|
166
|
+
├─ performance-budget-check/
|
|
167
|
+
│ └─ SKILL.md
|
|
168
|
+
├─ project-context-authoring/
|
|
169
|
+
│ └─ SKILL.md
|
|
170
|
+
├─ pattern-scout/
|
|
171
|
+
│ └─ SKILL.md
|
|
172
|
+
├─ repo-improvement-loop/
|
|
173
|
+
│ └─ SKILL.md
|
|
174
|
+
├─ requirement-regression-guard/
|
|
175
|
+
│ └─ SKILL.md
|
|
176
|
+
├─ repro-first-debug/
|
|
177
|
+
│ └─ SKILL.md
|
|
178
|
+
├─ security-privacy-review/
|
|
179
|
+
│ └─ SKILL.md
|
|
180
|
+
├─ source-freshness-check/
|
|
181
|
+
│ └─ SKILL.md
|
|
182
|
+
├─ structure-discovery-gate/
|
|
183
|
+
│ └─ SKILL.md
|
|
184
|
+
├─ security-regression-tests/
|
|
185
|
+
│ └─ SKILL.md
|
|
186
|
+
├─ skill-authoring/
|
|
187
|
+
│ └─ SKILL.md
|
|
188
|
+
├─ test-maintenance/
|
|
189
|
+
│ └─ SKILL.md
|
|
190
|
+
├─ ui-quality-gate/
|
|
191
|
+
│ └─ SKILL.md
|
|
192
|
+
├─ visual-review-artifact/
|
|
193
|
+
│ ├─ SKILL.md
|
|
194
|
+
│ ├─ resources.toml
|
|
195
|
+
│ └─ assets/
|
|
196
|
+
│ └─ review-template.html
|
|
197
|
+
└─ web-asset-optimization/
|
|
198
|
+
└─ SKILL.md
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
The default template does not create project-owned root documents or contract files such as `README.md`, `PROJECT.md`, `ROADMAP.md`, `DESIGN.md`, `GOVERNANCE.md`, `TESTING.md`, `API.md`, `project.contract.json`, or `openapi.yaml`. It also does not create CI configuration, general `docs/`, or general `skills/`. User projects may already use those names for their own files.
|
|
202
|
+
|
|
203
|
+
`mf init` creates `.gitignore` if it is missing. If `.gitignore` exists, mustflow updates only its managed block and preserves user rules.
|
|
204
|
+
|
|
205
|
+
`REPO_MAP.md` is not copied from the template. Generate it when needed with `mf map --write`. `.mustflow/cache/mustflow.sqlite` is also a regenerable local index created by `mf index`. `.mustflow/review/docs.toml` is not copied from the template; `mf docs review` creates it only when a document is added to the review queue.
|
|
206
|
+
|
|
207
|
+
If a project already has optional root Markdown files such as `README.md`, `PROJECT.md`, `ROADMAP.md`, `DESIGN.md`, `GOVERNANCE.md`, `TESTING.md`, `DEPLOYMENT.md`, `ARCHITECTURE.md`, or `API.md`, the repository map can use them as navigation anchors. It can also discover purpose-specific machine-readable contracts such as `project.contract.json`, `project.constants.json`, `design-tokens.json`, `openapi.yaml`, `asyncapi.yaml`, `schema.graphql`, and `schema.prisma`. Generic catch-all names like `SSOT.json` are not default anchors. `mf init` does not create or overwrite those project-owned files by default.
|
|
208
|
+
|
|
209
|
+
## Basic workflow
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
npx mf init --yes
|
|
213
|
+
npx mf doctor
|
|
214
|
+
npx mf check --strict
|
|
215
|
+
npx mf classify --changed --json > .mustflow/state/change-plan.json
|
|
216
|
+
npx mf verify --from-plan .mustflow/state/change-plan.json --plan-only --json
|
|
217
|
+
npx mf verify --from-plan .mustflow/state/change-plan.json --json
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Create the optional local search index if search capabilities are needed.
|
|
221
|
+
|
|
222
|
+
```sh
|
|
223
|
+
npx mf index --dry-run --json
|
|
224
|
+
npx mf index
|
|
225
|
+
npx mf search mustflow_check
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Preview template updates before applying them. Files marked as customized in `.mustflow/config/manifest.lock.toml` remain as repository-specific baselines while their current content matches the lock.
|
|
229
|
+
|
|
230
|
+
```sh
|
|
231
|
+
npx mf status
|
|
232
|
+
npx mf update --dry-run
|
|
233
|
+
npx mf update --apply
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Agents should prefer the configured update intents so the repository receives a run receipt.
|
|
237
|
+
|
|
238
|
+
```sh
|
|
239
|
+
mf run mustflow_update_dry_run
|
|
240
|
+
mf run mustflow_update_apply
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Commands
|
|
244
|
+
|
|
245
|
+
| Command | Purpose |
|
|
246
|
+
| --- | --- |
|
|
247
|
+
| `mf init` | Install `AGENTS.md` and `.mustflow/**`. |
|
|
248
|
+
| `mf init --dry-run` | Show which files would be created without writing files. |
|
|
249
|
+
| `mf init --merge` | Merge the mustflow managed block into an existing `AGENTS.md`. |
|
|
250
|
+
| `mf init --force` | Back up conflicting files, then overwrite them. |
|
|
251
|
+
| `mf check` | Validate mustflow files, TOML configuration, and skill document shape. |
|
|
252
|
+
| `mf check --strict` | Run additional safety checks for document identity, authority/lifecycle metadata, skill index/body alignment, skill metadata, command boundaries, version-source discovery, retention policy, output limits, raw logs, and secret-like context. |
|
|
253
|
+
| `mf classify --changed` | Classify changed paths, public surfaces, and validation reasons without modifying files. |
|
|
254
|
+
| `mf contract-lint` | Inspect `.mustflow/config/commands.toml` for command-contract errors and warnings without running commands. |
|
|
255
|
+
| `mf doctor` | Inspect the current mustflow root without writing files. |
|
|
256
|
+
| `mf docs review list` | Show documents still waiting for prose review after agent edits. |
|
|
257
|
+
| `mf docs review add <path>` | Add or refresh a document review queue entry. |
|
|
258
|
+
| `mf docs review comment <path>` | Add multiline review guidance to an existing queue entry. |
|
|
259
|
+
| `mf docs review approve <path>` | Mark review complete and hide the document from the default queue. |
|
|
260
|
+
| `mf context --json` | Print read order, command rules, available capabilities, and recent run summary as JSON. |
|
|
261
|
+
| `mf map --stdout` | Print the current mustflow root map to stdout. |
|
|
262
|
+
| `mf map --write` | Create or update `REPO_MAP.md`. |
|
|
263
|
+
| `mf run <intent>` | Run an allowed one-shot command. |
|
|
264
|
+
| `mf index` | Build a SQLite index for mustflow docs, skill routes, command rules, and command-effect locks. |
|
|
265
|
+
| `mf search <query>` | Search docs, skills, skill routes, command rules, and command-effect locks in the SQLite index. |
|
|
266
|
+
| `mf status` | Inspect installed state and changed or missing files. |
|
|
267
|
+
| `mf update --dry-run` | Calculate a template update plan without writing files. |
|
|
268
|
+
| `mf update --apply` | Apply template updates when nothing is blocked. |
|
|
269
|
+
| `mf help <topic>` | Show installed mustflow help. |
|
|
270
|
+
| `mf dashboard` | Start a local inspection dashboard for status, verification recommendations, release/version-source status, template update readiness, latest run receipt, skill routes, safe preferences, and documentation review. It does not execute commands or apply fixes. |
|
|
271
|
+
| `mf version` | Print the installed mustflow package version. |
|
|
272
|
+
| `mf version --check` | Compare the installed package version with the latest npm release and print an update command if a newer version exists. |
|
|
273
|
+
| `mf version-sources` | Inspect detected package, template, and declared version sources without modifying files. |
|
|
274
|
+
| `mf impact --changed` | Report whether changed paths require a package or template version decision. |
|
|
275
|
+
| `mf verify --reason <event>` | Run configured verification intents selected by `required_after` metadata. |
|
|
276
|
+
| `mf verify --reason <event> --plan-only --json` | Print the required verification plan without running commands. |
|
|
277
|
+
| `mf explain authority [path]` | Explain managed Markdown authority decisions without modifying files. |
|
|
278
|
+
| `mf explain skill <skill_id>` | Explain the trigger, scope, risk, checks, and output contract for one skill route. |
|
|
279
|
+
| `mf explain skills` | Explain the strict skill index/body alignment summary used by `mf doctor --strict`. |
|
|
280
|
+
| `mf explain surface [path]` | Explain how a path maps to public-surface and validation categories. |
|
|
281
|
+
|
|
282
|
+
Automation and agents should use `--json` output instead of parsing human-facing text. Published JSON Schemas for stable outputs live in `schemas/`.
|
|
283
|
+
|
|
284
|
+
## Command execution policy
|
|
285
|
+
|
|
286
|
+
Runnable work is declared in `.mustflow/config/commands.toml` so agents do not guess commands.
|
|
287
|
+
|
|
288
|
+
`mf run` executes only commands that meet all these conditions:
|
|
289
|
+
|
|
290
|
+
- `status = "configured"`
|
|
291
|
+
- `lifecycle = "oneshot"`
|
|
292
|
+
- `run_policy = "agent_allowed"`
|
|
293
|
+
- `stdin = "closed"`
|
|
294
|
+
|
|
295
|
+
Development servers, watch modes, browser UIs, interactive commands, and background processes do not run directly.
|
|
296
|
+
|
|
297
|
+
Use `mf verify --reason <event> --plan-only --json` to inspect matching verification intents and missing runnable coverage without executing commands.
|
|
298
|
+
|
|
299
|
+
Each command run writes the latest run record to `.mustflow/state/runs/latest.json`. The record includes the intent name, working directory, timeout, exit code, timeout status, and the tail of stdout and stderr.
|
|
300
|
+
|
|
301
|
+
## Language and profiles
|
|
302
|
+
|
|
303
|
+
Installed workflow language, agent response language, and product-facing locale are separate settings.
|
|
304
|
+
|
|
305
|
+
```sh
|
|
306
|
+
npx mf init --profile product --locale ko --agent-lang ko
|
|
307
|
+
npx mf init --product-source-locale en --product-locale ko-KR
|
|
308
|
+
npx mf init --set git.auto_commit=true
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
- `--profile`: Project profile. The default is `minimal`. Profiles also select the installed skill surface: `minimal` installs core everyday coding skills, while `oss`, `team`, `product`, and `library` add opt-in skill groups without removing optional skill files from the package.
|
|
312
|
+
- `--locale`: Installed mustflow document language. The default template currently supports `en`, `ko`, `zh`, `es`, `fr`, and `hi`. The default template includes localized documents for all these locales.
|
|
313
|
+
- `--agent-lang`: Default language for final agent reports.
|
|
314
|
+
- `--interactive`: Choose init settings via prompts.
|
|
315
|
+
- `--yes`: Use default English init settings without prompts.
|
|
316
|
+
- `--set`: Set an allowed preference during installation. Supported keys include `git.auto_stage`, `git.auto_commit`, `git.auto_push=false`, `git.commit_message.style`, `git.commit_message.language`, `git.commit_message.max_suggestions`, `git.commit_message.include_body`, `git.commit_message.split_when_multiple_concerns`, `reporting.commit_suggestion.enabled`, `language.memory.summary`, and boolean `release.versioning.*` fields such as `release.versioning.suggest_bump=false`, `verification.selection.*` fields, and `testing.authoring.*` fields. Versioning preferences do not assume a fixed version file; agents must locate the repository-specific version source before suggesting or editing versions. Repositories needing an explicit version source can add `.mustflow/config/versioning.toml`; `mf init` does not install this optional file by default. `git.commit_message.style` accepts `conventional`, `descriptive`, or `gitmoji`; `gitmoji` only changes the suggested message format. `git.commit_message.language` accepts `preserve_existing`, `agent_response`, `docs`, or a locale tag such as `ja`, `de`, or `pt-BR`. `testing.authoring.new_test_policy` accepts `evidence_required`, `manual_approval`, or `broad`.
|
|
317
|
+
- `--product-source-locale`, `--product-locale`: Source and target locales for user-facing product strings.
|
|
318
|
+
- `--lang`: CLI output language. Current values are `en`, `ko`, `zh`, `es`, `fr`, and `hi`.
|
|
319
|
+
|
|
320
|
+
## Repository structure
|
|
321
|
+
|
|
322
|
+
The mustflow repository contains the CLI, templates, contract specifications, documentation site, and repository-level translation docs.
|
|
323
|
+
|
|
324
|
+
```text
|
|
325
|
+
mustflow/
|
|
326
|
+
├─ README.md
|
|
327
|
+
├─ ROADMAP.md
|
|
328
|
+
├─ LICENSE
|
|
329
|
+
├─ package.json
|
|
330
|
+
├─ schemas/
|
|
331
|
+
├─ tsconfig.json
|
|
332
|
+
├─ docs/
|
|
333
|
+
│ ├─ spec/
|
|
334
|
+
│ └─ i18n/
|
|
335
|
+
├─ docs-site/
|
|
336
|
+
├─ src/
|
|
337
|
+
│ └─ cli/
|
|
338
|
+
├─ templates/
|
|
339
|
+
│ └─ default/
|
|
340
|
+
└─ tests/
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Files copied into user projects come from `templates/default/common/` and `templates/default/locales/<locale>/`.
|
|
344
|
+
|
|
345
|
+
Versioned contract specifications live in `docs/spec/`. The documentation site links them under Design -> Contract specifications.
|
|
346
|
+
|
|
347
|
+
## Candidate features
|
|
348
|
+
|
|
349
|
+
These are ideas not yet officially supported:
|
|
350
|
+
|
|
351
|
+
- Community skill registry and skill pack installs
|
|
352
|
+
- Optional `.mustflow/work-items/`
|
|
353
|
+
- `mf orient`, `mf refresh`
|
|
354
|
+
- Tool-specific adapters
|
|
355
|
+
|
|
356
|
+
## Development
|
|
357
|
+
|
|
358
|
+
Development commands in this repository use Bun. Users do not need Bun to run `mf` in their own projects.
|
|
359
|
+
|
|
360
|
+
```sh
|
|
361
|
+
bun install
|
|
362
|
+
bun run check
|
|
363
|
+
bun run docs:check:fast
|
|
364
|
+
bun run docs:check
|
|
365
|
+
bun run check:install
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
Agents working in this repository should prefer the configured mustflow intents for routine verification.
|
|
369
|
+
|
|
370
|
+
```sh
|
|
371
|
+
mf run build
|
|
372
|
+
mf run test_fast
|
|
373
|
+
mf run test_related
|
|
374
|
+
mf run test
|
|
375
|
+
mf run test_coverage
|
|
376
|
+
mf run test_release
|
|
377
|
+
mf run docs_validate_fast
|
|
378
|
+
mf run docs_validate
|
|
379
|
+
mf run mustflow_check
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
The Bun scripts remain available for human maintainers and release packaging. `test_fast` runs the fast CLI regression baseline, `test_related` selects tests from changed files and falls back to the fast baseline, and `test_release` keeps package metadata and packaging checks out of routine local edits. `test_coverage` runs the fast CLI baseline through Node's built-in coverage report with no enforced threshold; set `MUSTFLOW_TEST_COVERAGE_CONCURRENCY=1`, `2`, or another positive integer to adjust worker count on local machines. `lint` and test-audit are configured as narrow repository-local gates. `docs_validate_fast` checks documentation navigation and localized content links without building the entire static site; `docs_validate` performs the full static documentation build, search index, and sitemap gate for release-sensitive changes.
|
|
383
|
+
|
|
384
|
+
`dist/` is a generated build output and is not committed. `npm pack` and `npm publish` run `npm run build` via `prepack`, so the npm package contains the built CLI.
|
|
385
|
+
|
|
386
|
+
Run the full release check before publishing:
|
|
387
|
+
|
|
388
|
+
```sh
|
|
389
|
+
bun run release:check
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
`release:check` validates the CLI, builds the documentation site, packs the npm tarball, installs it into a temporary project, and runs the public `mf` workflow. Maintainer npm publishing uses the `Publish npm package` GitHub Actions workflow from a published GitHub Release. The release tag must match the `package.json` version, with an optional leading `v`. npm Trusted Publishing must be configured for the workflow before maintainers publish through it.
|
|
393
|
+
|
|
394
|
+
## Documentation site
|
|
395
|
+
|
|
396
|
+
The documentation site lives in `docs-site/`.
|
|
397
|
+
|
|
398
|
+
```sh
|
|
399
|
+
bun run docs:dev
|
|
400
|
+
bun run docs:build
|
|
401
|
+
bun run docs:preview
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
GitHub Pages builds the `docs-site/` source from the `main` branch using GitHub Actions and deploys `docs-site/dist` as the Pages artifact. Do not commit `docs-site/dist`.
|
|
405
|
+
|
|
406
|
+
## Package contents
|
|
407
|
+
|
|
408
|
+
The npm package includes only:
|
|
409
|
+
|
|
410
|
+
```text
|
|
411
|
+
dist/
|
|
412
|
+
templates/
|
|
413
|
+
schemas/
|
|
414
|
+
README.md
|
|
415
|
+
LICENSE
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
`docs/`, `docs-site/`, `tests/`, `src/`, and work notes are not included in the npm package.
|
|
419
|
+
|
|
420
|
+
## License
|
|
421
|
+
|
|
422
|
+
MIT-0
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { printUsageError, renderHelp } from '../lib/cli-output.js';
|
|
2
|
+
import { t } from '../lib/i18n.js';
|
|
3
|
+
import { resolveMustflowRoot } from '../lib/project-root.js';
|
|
4
|
+
import { checkMustflowProjectReport, describeCheckIssues } from '../lib/validation.js';
|
|
5
|
+
export function getCheckHelp(lang = 'en') {
|
|
6
|
+
return renderHelp({
|
|
7
|
+
usage: 'mf check [options]',
|
|
8
|
+
summary: t(lang, 'check.help.summary'),
|
|
9
|
+
options: [
|
|
10
|
+
{ label: '--json', description: t(lang, 'cli.option.json') },
|
|
11
|
+
{
|
|
12
|
+
label: '--strict',
|
|
13
|
+
description: t(lang, 'check.help.option.strict'),
|
|
14
|
+
},
|
|
15
|
+
{ label: '-h, --help', description: t(lang, 'cli.option.help') },
|
|
16
|
+
],
|
|
17
|
+
examples: ['mf check', 'mf check --strict', 'mf check --strict --json'],
|
|
18
|
+
exitCodes: [
|
|
19
|
+
{
|
|
20
|
+
label: '0',
|
|
21
|
+
description: t(lang, 'check.help.exit.ok'),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: '1',
|
|
25
|
+
description: t(lang, 'check.help.exit.fail'),
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
}, lang);
|
|
29
|
+
}
|
|
30
|
+
export function runCheck(args, reporter, lang = 'en') {
|
|
31
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
32
|
+
reporter.stdout(getCheckHelp(lang));
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
const supported = new Set(['--json', '--strict']);
|
|
36
|
+
const unsupported = args.filter((arg) => !supported.has(arg));
|
|
37
|
+
if (unsupported.length > 0) {
|
|
38
|
+
printUsageError(reporter, t(lang, 'cli.error.unknownOption', { option: unsupported[0] }), 'mf check --help', getCheckHelp(lang), lang);
|
|
39
|
+
return 1;
|
|
40
|
+
}
|
|
41
|
+
const strict = args.includes('--strict');
|
|
42
|
+
const report = checkMustflowProjectReport(resolveMustflowRoot(), { strict });
|
|
43
|
+
const issues = report.issues;
|
|
44
|
+
const warnings = report.warnings;
|
|
45
|
+
const ok = issues.length === 0;
|
|
46
|
+
if (args.includes('--json')) {
|
|
47
|
+
reporter.stdout(JSON.stringify({
|
|
48
|
+
ok,
|
|
49
|
+
strict,
|
|
50
|
+
issueCount: issues.length,
|
|
51
|
+
issues,
|
|
52
|
+
warningCount: warnings.length,
|
|
53
|
+
warnings,
|
|
54
|
+
issueDetails: describeCheckIssues([...issues, ...warnings]),
|
|
55
|
+
}, null, 2));
|
|
56
|
+
return ok ? 0 : 1;
|
|
57
|
+
}
|
|
58
|
+
if (ok) {
|
|
59
|
+
for (const warning of warnings) {
|
|
60
|
+
reporter.stderr(warning);
|
|
61
|
+
}
|
|
62
|
+
if (strict) {
|
|
63
|
+
reporter.stdout(t(lang, 'check.result.strictPassed'));
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
reporter.stdout(t(lang, 'check.result.passed'));
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
for (const issue of issues) {
|
|
70
|
+
reporter.stderr(issue);
|
|
71
|
+
}
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { createChangeClassificationReport, } from '../../core/change-classification.js';
|
|
2
|
+
import { printUsageError, renderHelp } from '../lib/cli-output.js';
|
|
3
|
+
import { readGitChangedFiles } from '../lib/git-changes.js';
|
|
4
|
+
import { t } from '../lib/i18n.js';
|
|
5
|
+
import { resolveMustflowRoot } from '../lib/project-root.js';
|
|
6
|
+
const CLASSIFY_SCHEMA_VERSION = '1';
|
|
7
|
+
export function getClassifyHelp(lang = 'en') {
|
|
8
|
+
return renderHelp({
|
|
9
|
+
usage: 'mf classify --changed [options] | mf classify <path...> [options]',
|
|
10
|
+
summary: t(lang, 'classify.help.summary'),
|
|
11
|
+
options: [
|
|
12
|
+
{ label: '--changed', description: t(lang, 'classify.help.option.changed') },
|
|
13
|
+
{ label: '--json', description: t(lang, 'cli.option.json') },
|
|
14
|
+
{ label: '-h, --help', description: t(lang, 'cli.option.help') },
|
|
15
|
+
],
|
|
16
|
+
examples: ['mf classify --changed', 'mf classify README.md schemas/verify-report.schema.json --json'],
|
|
17
|
+
exitCodes: [
|
|
18
|
+
{ label: '0', description: t(lang, 'classify.help.exit.ok') },
|
|
19
|
+
{ label: '1', description: t(lang, 'cli.common.invalidInput') },
|
|
20
|
+
],
|
|
21
|
+
}, lang);
|
|
22
|
+
}
|
|
23
|
+
function parseClassifyArgs(args) {
|
|
24
|
+
const paths = [];
|
|
25
|
+
let json = false;
|
|
26
|
+
let changed = false;
|
|
27
|
+
for (const arg of args) {
|
|
28
|
+
if (arg === '--json') {
|
|
29
|
+
json = true;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (arg === '--changed') {
|
|
33
|
+
changed = true;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (arg.startsWith('-')) {
|
|
37
|
+
return { json, changed, paths, error: arg };
|
|
38
|
+
}
|
|
39
|
+
paths.push(arg);
|
|
40
|
+
}
|
|
41
|
+
return { json, changed, paths };
|
|
42
|
+
}
|
|
43
|
+
function getClassifyOutput(projectRoot, parsed) {
|
|
44
|
+
const source = parsed.changed ? 'changed' : 'paths';
|
|
45
|
+
const files = parsed.changed ? readGitChangedFiles(projectRoot) : parsed.paths;
|
|
46
|
+
return {
|
|
47
|
+
schema_version: CLASSIFY_SCHEMA_VERSION,
|
|
48
|
+
command: 'classify',
|
|
49
|
+
mustflow_root: projectRoot,
|
|
50
|
+
...createChangeClassificationReport(source, files),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function renderList(values, lang) {
|
|
54
|
+
return values.length > 0 ? values.join(', ') : t(lang, 'value.none');
|
|
55
|
+
}
|
|
56
|
+
function renderClassifyOutput(output, lang) {
|
|
57
|
+
const sourceLabel = output.source === 'changed' ? t(lang, 'classify.source.changed') : t(lang, 'classify.source.paths');
|
|
58
|
+
const lines = [
|
|
59
|
+
t(lang, 'classify.title'),
|
|
60
|
+
`${t(lang, 'label.mustflowRoot')}: ${output.mustflow_root}`,
|
|
61
|
+
`${t(lang, 'classify.label.source')}: ${sourceLabel}`,
|
|
62
|
+
`${t(lang, 'classify.label.files')}: ${output.summary.fileCount}`,
|
|
63
|
+
`${t(lang, 'classify.label.publicSurfaces')}: ${output.summary.publicSurfaceCount}`,
|
|
64
|
+
`${t(lang, 'classify.label.validationReasons')}: ${renderList(output.summary.validationReasons, lang)}`,
|
|
65
|
+
`${t(lang, 'classify.label.updatePolicies')}: ${renderList(output.summary.updatePolicies, lang)}`,
|
|
66
|
+
`${t(lang, 'classify.label.driftChecks')}: ${renderList(output.summary.driftChecks, lang)}`,
|
|
67
|
+
'',
|
|
68
|
+
t(lang, 'classify.label.classifications'),
|
|
69
|
+
];
|
|
70
|
+
if (output.classifications.length === 0) {
|
|
71
|
+
lines.push(`- ${t(lang, 'value.none')}`);
|
|
72
|
+
return lines.join('\n');
|
|
73
|
+
}
|
|
74
|
+
for (const classification of output.classifications) {
|
|
75
|
+
lines.push(`- ${classification.path}: ${classification.surface.kind} / ${classification.surface.category}`, ` ${t(lang, 'classify.label.changeKinds')}: ${renderList(classification.changeKinds, lang)}`, ` ${t(lang, 'classify.label.validationReasons')}: ${renderList(classification.surface.validationReasons, lang)}`, ` ${t(lang, 'classify.label.updatePolicy')}: ${classification.surface.updatePolicy}`, ` ${t(lang, 'classify.label.driftChecks')}: ${renderList(classification.surface.driftChecks, lang)}`);
|
|
76
|
+
}
|
|
77
|
+
return lines.join('\n');
|
|
78
|
+
}
|
|
79
|
+
export function runClassify(args, reporter, lang = 'en') {
|
|
80
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
81
|
+
reporter.stdout(getClassifyHelp(lang));
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
const parsed = parseClassifyArgs(args);
|
|
85
|
+
if (parsed.error) {
|
|
86
|
+
printUsageError(reporter, t(lang, 'cli.error.unknownOption', { option: parsed.error }), 'mf classify --help', getClassifyHelp(lang), lang);
|
|
87
|
+
return 1;
|
|
88
|
+
}
|
|
89
|
+
if (parsed.changed && parsed.paths.length > 0) {
|
|
90
|
+
printUsageError(reporter, t(lang, 'cli.error.unexpectedArgument', { argument: parsed.paths[0] }), 'mf classify --help', getClassifyHelp(lang), lang);
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
if (!parsed.changed && parsed.paths.length === 0) {
|
|
94
|
+
printUsageError(reporter, t(lang, 'classify.error.missingInput'), 'mf classify --help', getClassifyHelp(lang), lang);
|
|
95
|
+
return 1;
|
|
96
|
+
}
|
|
97
|
+
const output = getClassifyOutput(resolveMustflowRoot(), parsed);
|
|
98
|
+
if (parsed.json) {
|
|
99
|
+
reporter.stdout(JSON.stringify(output, null, 2));
|
|
100
|
+
return 0;
|
|
101
|
+
}
|
|
102
|
+
reporter.stdout(renderClassifyOutput(output, lang));
|
|
103
|
+
return 0;
|
|
104
|
+
}
|