mustflow 2.115.11 → 2.115.13
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/README.md +1 -1
- package/dist/cli/i18n/en.js +3 -3
- package/dist/cli/i18n/es.js +3 -3
- package/dist/cli/i18n/fr.js +3 -3
- package/dist/cli/i18n/hi.js +3 -3
- package/dist/cli/i18n/ko.js +3 -3
- package/dist/cli/i18n/zh.js +3 -3
- package/package.json +1 -1
- package/templates/default/common/.mustflow/config/mustflow.toml +0 -2
- package/templates/default/i18n.toml +2 -2
- package/templates/default/locales/en/.mustflow/skills/state-machine-pattern/SKILL.md +5 -1
- package/templates/default/locales/en/.mustflow/skills/svelte-code-change/SKILL.md +6 -1
- package/templates/default/manifest.toml +1 -1
package/README.md
CHANGED
|
@@ -302,7 +302,7 @@ mf run mustflow_update_apply
|
|
|
302
302
|
| `mf script-pack list` | List bundled script packs, script refs, routing hints, side-effect flags, input/output labels, and JSON schema files. |
|
|
303
303
|
| `mf script-pack suggest --changed --json` | Rank optional read-only helpers for current changed files without running those helpers or granting command authority. |
|
|
304
304
|
| `mf script-pack suggest --path <path> --phase before_change` | Rank helpers for an explicit path and workflow phase before deciding which script to run. |
|
|
305
|
-
| `mf script-pack run code/outline scan <path...> --json` | Scan
|
|
305
|
+
| `mf script-pack run code/outline scan <path...> --json` | Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers, line ranges, source anchors, return metadata, and content hashes. |
|
|
306
306
|
| `mf script-pack run code/dependency-graph scan <path...> --json` | Trace bounded relative import, export, require, and dynamic import edges for TypeScript and JavaScript source files. |
|
|
307
307
|
| `mf script-pack run code/module-boundary check <path...> --json` | Check configured module-boundary import rules, import cycles, public entrypoints, feature imports, and shared budgets. |
|
|
308
308
|
| `mf script-pack run code/change-impact analyze --base HEAD --json` | Analyze changed files and return bounded impact candidates, script-pack hints, and verification intent hints. |
|
package/dist/cli/i18n/en.js
CHANGED
|
@@ -797,7 +797,7 @@ Read these files before working:
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ Read these files before working:
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ Read these files before working:
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/es.js
CHANGED
|
@@ -797,7 +797,7 @@ Lee estos archivos antes de trabajar:
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ Lee estos archivos antes de trabajar:
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ Lee estos archivos antes de trabajar:
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/fr.js
CHANGED
|
@@ -797,7 +797,7 @@ Lisez ces fichiers avant de travailler :
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ Lisez ces fichiers avant de travailler :
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ Lisez ces fichiers avant de travailler :
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/hi.js
CHANGED
|
@@ -797,7 +797,7 @@ export const hiMessages = {
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ export const hiMessages = {
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ export const hiMessages = {
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/dist/cli/i18n/ko.js
CHANGED
|
@@ -797,7 +797,7 @@ export const koMessages = {
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "TypeScript
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "TypeScript, JavaScript, Astro, Svelte, Go, Rust, Python 파일에서 symbol header와 라인 범위를 스캔합니다",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ export const koMessages = {
|
|
|
825
825
|
"scriptPack.error.unknownScript": "알 수 없는 script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "추천 입력을 하나 이상 제공하세요: --path <path>, --changed, --phase <phase>, 또는 --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "알 수 없는 script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "TypeScript
|
|
828
|
+
"codeOutline.help.summary": "TypeScript, JavaScript, Astro, Svelte, Go, Rust, Python 소스 파일에서 declaration header, 라인 범위, export flag, content hash를 스캔합니다.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "스캔할 최대 소스 파일 수입니다. 기본값: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "각 소스 파일에서 읽을 최대 바이트입니다. 기본값: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "code outline을 finding 없이 스캔했습니다",
|
|
@@ -842,7 +842,7 @@ export const koMessages = {
|
|
|
842
842
|
"codeOutline.error.missingPath": "스캔할 소스 파일이나 디렉터리를 하나 이상 제공하세요",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option}은 양의 safe integer여야 합니다: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option}은 0 이상의 safe integer여야 합니다: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "source anchor, symbol 라인, 또는 명시 라인 범위에서
|
|
845
|
+
"codeSymbolRead.help.summary": "source anchor, symbol 라인, 또는 명시 라인 범위에서 지원되는 소스의 제한된 snippet을 읽습니다.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "target symbol로 해석할 source anchor id입니다",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "symbol 또는 범위로 해석할 1-based source line입니다",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "선택적 1-based end line입니다. 생략하면 포함하는 outline symbol을 읽습니다",
|
package/dist/cli/i18n/zh.js
CHANGED
|
@@ -797,7 +797,7 @@ export const zhMessages = {
|
|
|
797
797
|
"scriptPack.pack.docs.summary": "Documentation reference utility scripts",
|
|
798
798
|
"scriptPack.pack.test.summary": "Test evidence and performance utility scripts",
|
|
799
799
|
"scriptPack.pack.repo.summary": "Repository-boundary utility scripts",
|
|
800
|
-
"scriptPack.script.codeOutline.summary": "Scan TypeScript and
|
|
800
|
+
"scriptPack.script.codeOutline.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python files for symbol headers and line ranges",
|
|
801
801
|
"scriptPack.script.codeDependencyGraph.summary": "Trace relative TypeScript and JavaScript dependency graph edges",
|
|
802
802
|
"scriptPack.script.codeImportCycle.summary": "Detect relative TypeScript and JavaScript import cycles with line evidence",
|
|
803
803
|
"scriptPack.script.codeModuleBoundary.summary": "Check configured module boundary import rules and shared budgets",
|
|
@@ -825,7 +825,7 @@ export const zhMessages = {
|
|
|
825
825
|
"scriptPack.error.unknownScript": "Unknown script-pack script: {script}",
|
|
826
826
|
"scriptPack.error.missingSuggestInput": "Provide at least one suggestion input: --path <path>, --changed, --phase <phase>, or --skill <skill>",
|
|
827
827
|
"scriptPack.error.unknownPhase": "Unknown script-pack phase: {phase}",
|
|
828
|
-
"codeOutline.help.summary": "Scan TypeScript and
|
|
828
|
+
"codeOutline.help.summary": "Scan TypeScript, JavaScript, Astro, Svelte, Go, Rust, and Python source files for declaration headers, line ranges, export flags, and content hashes.",
|
|
829
829
|
"codeOutline.help.option.maxFiles": "Maximum number of source files to scan. Default: 200",
|
|
830
830
|
"codeOutline.help.option.maxFileBytes": "Maximum bytes to read from each source file. Default: 1048576",
|
|
831
831
|
"codeOutline.help.exit.ok": "The code outline was scanned without findings",
|
|
@@ -842,7 +842,7 @@ export const zhMessages = {
|
|
|
842
842
|
"codeOutline.error.missingPath": "Provide at least one source file or directory to scan",
|
|
843
843
|
"codeOutline.error.invalidPositiveInteger": "{option} must be a positive safe integer: {value}",
|
|
844
844
|
"codeOutline.error.invalidNonNegativeInteger": "{option} must be a non-negative safe integer: {value}",
|
|
845
|
-
"codeSymbolRead.help.summary": "Read a bounded
|
|
845
|
+
"codeSymbolRead.help.summary": "Read a bounded supported-source snippet from a source anchor, symbol line, or explicit line range.",
|
|
846
846
|
"codeSymbolRead.help.option.anchor": "Source anchor id to resolve to its target symbol",
|
|
847
847
|
"codeSymbolRead.help.option.startLine": "1-based source line to resolve to a symbol or range",
|
|
848
848
|
"codeSymbolRead.help.option.endLine": "Optional explicit 1-based end line; when omitted, the containing outline symbol is read",
|
package/package.json
CHANGED
|
@@ -889,7 +889,7 @@ translations = {}
|
|
|
889
889
|
[documents."skill.svelte-code-change"]
|
|
890
890
|
source = "locales/en/.mustflow/skills/svelte-code-change/SKILL.md"
|
|
891
891
|
source_locale = "en"
|
|
892
|
-
revision =
|
|
892
|
+
revision = 5
|
|
893
893
|
translations = {}
|
|
894
894
|
|
|
895
895
|
[documents."skill.tailwind-code-change"]
|
|
@@ -1146,7 +1146,7 @@ translations = {}
|
|
|
1146
1146
|
[documents."skill.state-machine-pattern"]
|
|
1147
1147
|
source = "locales/en/.mustflow/skills/state-machine-pattern/SKILL.md"
|
|
1148
1148
|
source_locale = "en"
|
|
1149
|
-
revision =
|
|
1149
|
+
revision = 5
|
|
1150
1150
|
translations = {}
|
|
1151
1151
|
|
|
1152
1152
|
[documents."skill.strategy-pattern"]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.state-machine-pattern
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 5
|
|
6
6
|
lifecycle: mustflow-owned
|
|
7
7
|
authority: procedure
|
|
8
8
|
name: state-machine-pattern
|
|
@@ -66,6 +66,7 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
66
66
|
## Required Inputs
|
|
67
67
|
|
|
68
68
|
- The entity and state field under change.
|
|
69
|
+
- The intended initial state, the user-visible entry state, and the first event or command that should leave it.
|
|
69
70
|
- Complete state list and which states are terminal.
|
|
70
71
|
- Complete event list and the facts each event carries.
|
|
71
72
|
- Current places that change state, validate actions, check state, or render available actions.
|
|
@@ -118,6 +119,8 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
118
119
|
5. Write the transition table first.
|
|
119
120
|
- Include every source state, allowed event, guard name, target state, and effect description.
|
|
120
121
|
- Include terminal states explicitly with no outgoing transitions when they are truly terminal.
|
|
122
|
+
- Declare the initial state explicitly and verify it matches the real entry experience. Do not initialize directly into an active state such as `PLAYING`, `RUNNING`, or `PROCESSING` when the user must first see a menu, confirmation, setup, or start action.
|
|
123
|
+
- Model the first user or system action as a real transition. Test that the expected entry action leaves the initial state and that missing runtime prerequisites produce a visible failure or unavailable action instead of a silent no-op.
|
|
121
124
|
- Do not hide transition rules inside handler branches, repository filters, database queries, adapter code, or UI code.
|
|
122
125
|
- Do not let direct `deleted_at` assignment bypass allowed archive, soft-delete, restore, purge, anonymize, or redirect transitions when deletion is a meaningful lifecycle.
|
|
123
126
|
6. Keep guards pure.
|
|
@@ -167,6 +170,7 @@ Two states can still require this skill when the lifecycle is meaningful, such a
|
|
|
167
170
|
- For important domains, document state list, event list, transition table, terminal states, guards, effects, concurrency method, duplicate-event handling, and any cross-machine invariants.
|
|
168
171
|
- Diagrams are secondary. The code transition table is the source of truth.
|
|
169
172
|
17. Test from the transition table.
|
|
173
|
+
- Test the declared initial state and the first permitted transition before testing later lifecycle branches.
|
|
170
174
|
- Test every valid transition.
|
|
171
175
|
- Test representative invalid transitions, especially terminal states and dangerous skipped states.
|
|
172
176
|
- Test guard success and guard failure separately.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.svelte-code-change
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 5
|
|
6
6
|
lifecycle: mustflow-owned
|
|
7
7
|
authority: procedure
|
|
8
8
|
name: svelte-code-change
|
|
@@ -98,6 +98,10 @@ Preserve Svelte component reactivity, SvelteKit SSR/server/client execution mode
|
|
|
98
98
|
20. Keep `$effect` dependencies narrow and synchronous. Read dependencies before `await`, `setTimeout`, or callbacks; use `untrack` for incidental logging, snapshots, or non-dependency reads.
|
|
99
99
|
21. Return cleanup from effects that create subscriptions, intervals, observers, sockets, editors, charts, canvas loops, or external library instances.
|
|
100
100
|
22. Treat props as parent-owned. Use callback props for changes and `$bindable` only for narrow form-control-like two-way APIs. Preserve wrapper binding chains or convert them to explicit callbacks.
|
|
101
|
+
- In Svelte 5 runes mode, do not expose local `$state` through an `export { local as prop }` alias and expect a parent `bind:` directive to update. Declare a bindable prop through `$props()` and `$bindable()` when two-way binding is the intended public contract.
|
|
102
|
+
- Do not remove a child component merely to hide a broken DOM-reference handoff. Prefer keeping canvas, editor, chart, media, or other imperative resource creation and cleanup in the component that owns the DOM node. When a parent must coordinate initialization, expose an explicit ready callback carrying the node or initialized handle after the child has mounted.
|
|
103
|
+
- Treat `bind:this` values as unavailable before mount and possibly unavailable again after conditional unmount. Do not assume a parent `onMount` runs after a child-provided reference has propagated through an invalid or indirect binding chain.
|
|
104
|
+
- Do not silently return from required imperative initialization when the DOM node is unexpectedly absent. Distinguish an expected conditional absence from a broken ownership or binding contract, expose the failure during development, and provide a bounded reinitialization path when the node can appear later.
|
|
101
105
|
23. In Svelte 5, treat DOM event handlers as props. When spreading rest props through wrappers, intentionally compose external handlers with internal policy instead of relying on spread order.
|
|
102
106
|
24. Treat snippets as typed render callbacks. Require optional snippet guards, pass row or slot-like data as parameters, and avoid hidden parent-state capture in reusable library components.
|
|
103
107
|
25. In the official-source snapshot checked on 2026-07-11, SvelteKit remote functions were
|
|
@@ -141,6 +145,7 @@ Preserve Svelte component reactivity, SvelteKit SSR/server/client execution mode
|
|
|
141
145
|
- Use `$state.snapshot` before sending proxy state to serializers, workers, chart libraries, equality tools, or external APIs that should see plain data.
|
|
142
146
|
- Use `$derived` for calculations from props, route data, page state, URL state, or local state.
|
|
143
147
|
- Use `$effect` only for browser-side effects, subscriptions, DOM, canvas, analytics, timers, third-party browser libraries, and cleanup.
|
|
148
|
+
- Keep imperative DOM resources in the component that owns the bound node when practical. If ownership must cross a component boundary, use an explicit `$bindable` prop or ready callback and test the handoff instead of exporting local rune state by alias.
|
|
144
149
|
- Use stores for external streams or manual subscribe/unsubscribe interop, not ordinary component state.
|
|
145
150
|
- Use context for parent-owned values shared down the component tree, especially request-scoped layout data.
|
|
146
151
|
- Do not reassign reactive context objects after placing them in context; update their properties or pass getter functions when needed.
|