mustflow 2.27.0 → 2.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cli/commands/context.js +1 -0
- package/dist/cli/commands/help.js +55 -1
- package/dist/cli/commands/tech.js +346 -0
- package/dist/cli/i18n/en.js +1 -0
- package/dist/cli/i18n/es.js +1 -0
- package/dist/cli/i18n/fr.js +1 -0
- package/dist/cli/i18n/hi.js +1 -0
- package/dist/cli/i18n/ko.js +1 -0
- package/dist/cli/i18n/zh.js +1 -0
- package/dist/cli/index.js +1 -0
- package/dist/cli/lib/agent-context.js +16 -0
- package/dist/cli/lib/command-registry.js +6 -0
- package/dist/cli/lib/run-plan.js +11 -3
- package/dist/cli/lib/validation/index.js +11 -0
- package/dist/cli/lib/validation/primitives.js +5 -0
- package/dist/core/command-contract-validation.js +15 -12
- package/dist/core/command-env.js +43 -0
- package/dist/core/command-intent-eligibility.js +2 -1
- package/dist/core/contract-lint.js +2 -1
- package/dist/core/technology-preferences.js +189 -0
- package/package.json +1 -1
- package/schemas/commands.schema.json +4 -1
- package/schemas/context-report.schema.json +61 -0
- package/templates/default/common/.mustflow/config/commands.toml +1 -0
- package/templates/default/common/.mustflow/config/mustflow.toml +8 -0
- package/templates/default/common/.mustflow/config/technology.toml +20 -0
- package/templates/default/i18n.toml +78 -12
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +33 -1
- package/templates/default/locales/en/.mustflow/skills/code-review/SKILL.md +15 -5
- package/templates/default/locales/en/.mustflow/skills/codebase-orientation/SKILL.md +15 -8
- package/templates/default/locales/en/.mustflow/skills/command-intent-mapping-gate/SKILL.md +124 -0
- package/templates/default/locales/en/.mustflow/skills/completion-evidence-gate/SKILL.md +178 -0
- package/templates/default/locales/en/.mustflow/skills/contract-sync-check/SKILL.md +9 -3
- package/templates/default/locales/en/.mustflow/skills/dependency-reality-check/SKILL.md +6 -3
- package/templates/default/locales/en/.mustflow/skills/evidence-stall-breaker/SKILL.md +166 -0
- package/templates/default/locales/en/.mustflow/skills/external-prompt-injection-defense/SKILL.md +8 -6
- package/templates/default/locales/en/.mustflow/skills/provenance-license-gate/SKILL.md +131 -0
- package/templates/default/locales/en/.mustflow/skills/public-json-contract-change/SKILL.md +133 -0
- package/templates/default/locales/en/.mustflow/skills/restricted-handoff-resume/SKILL.md +122 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +60 -0
- package/templates/default/locales/en/.mustflow/skills/runtime-target-selection/SKILL.md +203 -0
- package/templates/default/locales/en/.mustflow/skills/rust-code-change/SKILL.md +55 -18
- package/templates/default/locales/en/.mustflow/skills/secret-exposure-response/SKILL.md +125 -0
- package/templates/default/locales/en/.mustflow/skills/security-privacy-review/SKILL.md +10 -1
- package/templates/default/locales/en/.mustflow/skills/skill-authoring/SKILL.md +9 -5
- package/templates/default/locales/en/.mustflow/skills/source-freshness-check/SKILL.md +3 -2
- package/templates/default/locales/en/.mustflow/skills/structure-first-engineering/SKILL.md +205 -0
- package/templates/default/locales/en/.mustflow/skills/template-install-surface-sync/SKILL.md +131 -0
- package/templates/default/locales/en/AGENTS.md +8 -7
- package/templates/default/locales/ko/AGENTS.md +8 -7
- package/templates/default/manifest.toml +66 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.structure-first-engineering
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 1
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: structure-first-engineering
|
|
9
|
+
description: Apply this skill as an adjunct for non-trivial code changes where early structure decisions affect domain rules, public contracts, external I/O, operational safety, testability, error handling, concurrency, data flow, or future change cost.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.structure-first-engineering
|
|
15
|
+
command_intents:
|
|
16
|
+
- changes_status
|
|
17
|
+
- changes_diff_summary
|
|
18
|
+
- test_related
|
|
19
|
+
- test
|
|
20
|
+
- lint
|
|
21
|
+
- build
|
|
22
|
+
- docs_validate_fast
|
|
23
|
+
- test_release
|
|
24
|
+
- mustflow_check
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Structure-First Engineering
|
|
28
|
+
|
|
29
|
+
<!-- mustflow-section: purpose -->
|
|
30
|
+
## Purpose
|
|
31
|
+
|
|
32
|
+
Make structural decisions before coding when the wrong boundary would be expensive to unwind.
|
|
33
|
+
|
|
34
|
+
This skill is not anti-abstraction. It assumes high-quality structure can be cheap to create with
|
|
35
|
+
LLM help, while late boundary repair can be expensive. Invest early in hard-to-reverse boundaries,
|
|
36
|
+
but reject abstractions that do not lower change cost, failure risk, or cognitive load.
|
|
37
|
+
|
|
38
|
+
<!-- mustflow-section: use-when -->
|
|
39
|
+
## Use When
|
|
40
|
+
|
|
41
|
+
- A code task changes domain rules, public contracts, external I/O, persistence, authorization, concurrency, operational behavior, or error semantics.
|
|
42
|
+
- A task needs a new module boundary, use case, adapter, DTO, schema, state transition, result type, provider boundary, or testable core.
|
|
43
|
+
- The user asks to think like a senior or long-experienced engineer, design well up front, avoid later rewrites, or prevent structural debt.
|
|
44
|
+
- A proposed implementation could mix validation, transformation, domain decisions, I/O, formatting, and output mapping in one place.
|
|
45
|
+
- A change could create hard-to-reverse coupling to a framework, provider response, database shape, CLI/API schema, local filesystem, time, randomness, environment, process memory, queue, webhook, or worker behavior.
|
|
46
|
+
- A bug fix reveals that failures, retries, partial success, or duplicated effects are not modeled clearly.
|
|
47
|
+
|
|
48
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
49
|
+
## Do Not Use When
|
|
50
|
+
|
|
51
|
+
- The task is a surface-only documentation, copy, comment, log wording, or UI text change with no execution-path risk.
|
|
52
|
+
- A narrow pattern skill is already sufficient and the risk block would add no new decision.
|
|
53
|
+
- The user explicitly asks for analysis-only code review; use `code-review` or `architecture-deepening-review` unless implementation will follow.
|
|
54
|
+
- The task is a tiny local logic change with obvious inputs, outputs, tests, and no contract or I/O boundary.
|
|
55
|
+
- The proposed structure is only a file split, naming wrapper, `Service`, `Manager`, `Handler`, factory, or interface without a concrete pressure it removes.
|
|
56
|
+
|
|
57
|
+
<!-- mustflow-section: required-inputs -->
|
|
58
|
+
## Required Inputs
|
|
59
|
+
|
|
60
|
+
- User request, target files, project context if known, and current repository instructions.
|
|
61
|
+
- Existing source, tests, schemas, templates, contracts, docs, and nearby local patterns for the affected boundary.
|
|
62
|
+
- Current or expected data flow: input, validation, transformation, storage or external calls, and output.
|
|
63
|
+
- Failure classes: user input, authorization, business rule, external system, transient fault, concurrency, partial failure, and recovery path.
|
|
64
|
+
- Public contracts affected: API response, CLI output, config schema, database schema, event, queue, webhook, migration, docs example, or user-visible behavior.
|
|
65
|
+
- Relevant command-intent contract entries for verification.
|
|
66
|
+
|
|
67
|
+
<!-- mustflow-section: preconditions -->
|
|
68
|
+
## Preconditions
|
|
69
|
+
|
|
70
|
+
- The task matches the Use When conditions and does not match the Do Not Use When exclusions.
|
|
71
|
+
- Higher-priority instructions and `.mustflow/config/commands.toml` have been checked for the current scope.
|
|
72
|
+
- Skill-selection has chosen one main implementation skill when applicable; this skill normally acts as an adjunct gate.
|
|
73
|
+
- Missing product, domain, compatibility, security, or migration decisions are either safely inferable from repository evidence or routed through a clarification gate.
|
|
74
|
+
|
|
75
|
+
<!-- mustflow-section: allowed-edits -->
|
|
76
|
+
## Allowed Edits
|
|
77
|
+
|
|
78
|
+
- Add or adjust boundaries, types, DTOs, pure domain functions, adapters, mappers, result/error models, tests, and docs that are directly required by the changed behavior.
|
|
79
|
+
- Structure the implementation at module scale when it lowers change cost, isolates external volatility, or makes failure and tests explicit.
|
|
80
|
+
- Do not add vague layers named only `Service`, `Manager`, `Handler`, `Helper`, or `Factory` unless the responsibility and volatility hidden by that layer are named.
|
|
81
|
+
- Do not split files solely because they are large.
|
|
82
|
+
- Do not invent dependency installation, migration execution, external services, or command authority.
|
|
83
|
+
|
|
84
|
+
<!-- mustflow-section: procedure -->
|
|
85
|
+
## Procedure
|
|
86
|
+
|
|
87
|
+
1. Print or internally prepare a risk block before editing. If the host or user-facing flow makes pre-edit output noisy, keep the block as working notes and include the relevant parts in the final report.
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
[Work risk]: surface change | local logic change | domain rule change | public contract change | external I/O change | operational risk change
|
|
91
|
+
[Project context]: prototype | staging | production | unknown
|
|
92
|
+
[Core boundary]: domain/API/I/O/contract being touched
|
|
93
|
+
[Data flow]: input -> validation -> transformation -> storage/call -> output
|
|
94
|
+
[Failure points]: expected failures and handling strategy
|
|
95
|
+
[Test contract]: tests or reproduction/verification commands to add, update, or run
|
|
96
|
+
[Structure change]: needed/not needed, with reason
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
2. Classify the highest applicable work risk.
|
|
100
|
+
- Surface change: keep edits narrow and avoid structure changes.
|
|
101
|
+
- Local logic change: keep cleanup within the module and add or update focused tests.
|
|
102
|
+
- Domain rule change: isolate rules from I/O and framework delivery; prefer pure functions or use-case boundaries.
|
|
103
|
+
- Public contract change: preserve compatibility when possible and pin schema, fixture, snapshot, or contract tests.
|
|
104
|
+
- External I/O change: isolate the adapter, timeout and retry behavior, partial failure, and provider response mapping.
|
|
105
|
+
- Operational risk change: treat security, money, audit, deletion, concurrency, and recovery as highest intensity.
|
|
106
|
+
3. Decide whether structure is allowed. Require at least one real pressure:
|
|
107
|
+
- responsibility separation is necessary;
|
|
108
|
+
- tests are tied to external factors;
|
|
109
|
+
- public contracts and internal representation are mixed;
|
|
110
|
+
- error categories are implicit or wrong;
|
|
111
|
+
- domain rules are duplicated;
|
|
112
|
+
- change impact is too broad;
|
|
113
|
+
- provider, framework, filesystem, network, time, randomness, or environment volatility leaks into domain logic.
|
|
114
|
+
4. Control abstraction.
|
|
115
|
+
- Create an interface, factory, strategy, mapper, adapter, or use case only when there are at least two implementations, external volatility to hide, tests need control, a public contract must stay stable, a high-change area needs isolation, or duplicated domain rules need one owner.
|
|
116
|
+
- Name the responsibility in domain words. If the best name is only `Service`, `Manager`, `Handler`, or `Helper`, the boundary is probably still unclear.
|
|
117
|
+
5. Trace data flow end to end.
|
|
118
|
+
- Keep system boundaries behind DTOs, schemas, interfaces, or mappers.
|
|
119
|
+
- Convert external API, database, CLI, event, or UI payloads into internal types near the boundary.
|
|
120
|
+
- Keep domain data immutable when practical.
|
|
121
|
+
- Avoid spreading raw `any`, broad `unknown`, provider response shapes, request bodies, or ORM records through the domain core.
|
|
122
|
+
6. Model expected failures explicitly.
|
|
123
|
+
- Use local Result, Option, typed error, status object, or existing project convention for expected failures.
|
|
124
|
+
- Separate user-facing messages from debugging detail.
|
|
125
|
+
- Do not swallow exceptions or convert all failures into generic false, null, or success-with-warning states.
|
|
126
|
+
- Classify failures as input, auth/permission, business rule, external system, transient, concurrency, or partial failure.
|
|
127
|
+
7. Isolate external I/O and unstable inputs.
|
|
128
|
+
- Keep domain rules from directly calling network, database, filesystem, clock, random, UUID, process environment, or framework request objects.
|
|
129
|
+
- Inject time, randomness, UUID, environment, and external clients when tests or determinism need control.
|
|
130
|
+
- Guard duplicate execution, timeout-unknown state, concurrent updates, partial failure, and compensation failure in code or explicitly report why the risk is not relevant.
|
|
131
|
+
8. Protect public contracts.
|
|
132
|
+
- Treat API response/status codes, CLI output/exit codes, config schemas, database schemas/migrations, event/queue/webhook payloads, and docs examples as more stable than implementation shape.
|
|
133
|
+
- When a contract changes, synchronize docs, fixtures, schema, migration, generated clients, and tests that encode that contract.
|
|
134
|
+
9. Set the test contract before or during implementation.
|
|
135
|
+
- Test pure logic without I/O.
|
|
136
|
+
- Make time, randomness, and environment controllable.
|
|
137
|
+
- For bug fixes, include a failing reproduction or explain why one is impossible.
|
|
138
|
+
- Name tests after the guarantee, not the implementation detail.
|
|
139
|
+
- Avoid mock-only confidence, meaningless copied fixtures, and snapshot-heavy approval unless the snapshot is the real contract.
|
|
140
|
+
10. Check observability, security, and performance for risky paths.
|
|
141
|
+
- Add structured logs or trace/request IDs for important state transitions when the project has logging conventions.
|
|
142
|
+
- Keep authentication and authorization separate from untrusted input parsing and business rules.
|
|
143
|
+
- Remove I/O from tight loops or name why it is bounded. Include cache invalidation or freshness strategy when adding cache behavior.
|
|
144
|
+
11. Handle verification failure by classifying the cause before changing more code:
|
|
145
|
+
- real regression;
|
|
146
|
+
- existing failure;
|
|
147
|
+
- wrong contract test;
|
|
148
|
+
- environment, dependency, or flaky issue.
|
|
149
|
+
If the cause is unknown, do not claim completion.
|
|
150
|
+
12. If you intentionally skip a rule, record the exception:
|
|
151
|
+
|
|
152
|
+
```text
|
|
153
|
+
[Exception applied]: skipped rule and reason
|
|
154
|
+
[Risk]: possible consequence
|
|
155
|
+
[Compensation]: test, TODO, docs, or follow-up
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
<!-- mustflow-section: postconditions -->
|
|
159
|
+
## Postconditions
|
|
160
|
+
|
|
161
|
+
- The highest work risk is named and the structure decision matches that risk.
|
|
162
|
+
- Domain rules, public contracts, adapters, data flow, and error handling have clear owners when touched.
|
|
163
|
+
- External I/O and unstable inputs are behind testable boundaries when relevant.
|
|
164
|
+
- Concurrency, partial failure, idempotency, and recovery are handled or explicitly marked not relevant.
|
|
165
|
+
- Tests or verification commands cover the behavior and contract actually changed.
|
|
166
|
+
- Any exception to the structure-first rules is reported with risk and compensation.
|
|
167
|
+
|
|
168
|
+
<!-- mustflow-section: verification -->
|
|
169
|
+
## Verification
|
|
170
|
+
|
|
171
|
+
Use configured oneshot command intents when available:
|
|
172
|
+
|
|
173
|
+
- `changes_status`
|
|
174
|
+
- `changes_diff_summary`
|
|
175
|
+
- `lint`
|
|
176
|
+
- `build`
|
|
177
|
+
- `test_related`
|
|
178
|
+
- `test`
|
|
179
|
+
- `docs_validate_fast`
|
|
180
|
+
- `test_release`
|
|
181
|
+
- `mustflow_check`
|
|
182
|
+
|
|
183
|
+
Choose the narrowest configured verification that covers the highest work risk. Use release or docs checks when public contracts, templates, package metadata, schemas, or docs examples change.
|
|
184
|
+
|
|
185
|
+
<!-- mustflow-section: failure-handling -->
|
|
186
|
+
## Failure Handling
|
|
187
|
+
|
|
188
|
+
- If the risk block exposes a missing product, security, migration, or compatibility decision, stop and ask or use the clarifying-question gate.
|
|
189
|
+
- If structure pressure is weak, do the narrow implementation and report that structure was intentionally deferred.
|
|
190
|
+
- If the implementation starts becoming a broad rewrite, stop and split the work into a smaller boundary-preserving step.
|
|
191
|
+
- If tests require too many mocks, revisit the boundary instead of weakening assertions.
|
|
192
|
+
- If a configured command fails, switch to `failure-triage` before claiming completion.
|
|
193
|
+
|
|
194
|
+
<!-- mustflow-section: output-format -->
|
|
195
|
+
## Output Format
|
|
196
|
+
|
|
197
|
+
- Work risk and project context
|
|
198
|
+
- Core boundary and data flow
|
|
199
|
+
- Structure decision and reason
|
|
200
|
+
- Failure model, I/O boundary, concurrency, and partial-failure notes
|
|
201
|
+
- Public contract impact
|
|
202
|
+
- Tests added, updated, or intentionally not added
|
|
203
|
+
- Command intents run
|
|
204
|
+
- Exceptions applied, if any
|
|
205
|
+
- Remaining structure risk
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.template-install-surface-sync
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 1
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: template-install-surface-sync
|
|
9
|
+
description: Apply this skill when mustflow template install surfaces, template manifests, skill profiles, locale source files, init or update behavior, managed file lists, package inclusion, template command contracts, or source-to-template workflow copies are created, changed, reviewed, or reported.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.template-install-surface-sync
|
|
15
|
+
command_intents:
|
|
16
|
+
- changes_status
|
|
17
|
+
- changes_diff_summary
|
|
18
|
+
- test_related
|
|
19
|
+
- docs_validate_fast
|
|
20
|
+
- test_release
|
|
21
|
+
- mustflow_check
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Template Install Surface Sync
|
|
25
|
+
|
|
26
|
+
<!-- mustflow-section: purpose -->
|
|
27
|
+
## Purpose
|
|
28
|
+
|
|
29
|
+
Keep the source repository's mustflow workflow files, install templates, manifests, profiles, locale policy, init/update behavior, and package tests aligned without blindly copying surfaces that must intentionally differ.
|
|
30
|
+
|
|
31
|
+
<!-- mustflow-section: use-when -->
|
|
32
|
+
## Use When
|
|
33
|
+
|
|
34
|
+
- A mustflow-owned file is added, removed, renamed, or materially changed and that file may be installed by the default template.
|
|
35
|
+
- Template `creates`, `skill_profiles`, locale source files, install policy, conflict policy, managed targets, generated targets, or forbidden targets change.
|
|
36
|
+
- `.mustflow/skills/*`, `.mustflow/skills/INDEX.md`, `.mustflow/skills/routes.toml`, `AGENTS.md`, `.mustflow/docs/agent-workflow.md`, template configs, or template command contracts are changed.
|
|
37
|
+
- `mf init`, `mf update`, manifest locks, backup behavior, package inclusion, release tests, or docs examples depend on installed template files.
|
|
38
|
+
|
|
39
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
40
|
+
## Do Not Use When
|
|
41
|
+
|
|
42
|
+
- The task changes only a normal downstream project that consumes mustflow and does not modify the template source or install/update behavior.
|
|
43
|
+
- The change affects a declared contract but no install template, profile, locale, init, update, or package surface; use `contract-sync-check`.
|
|
44
|
+
- The task is only creating or editing a skill procedure; use `skill-authoring` first, then use this skill only if the skill is installed by a template.
|
|
45
|
+
- The user explicitly requests a local experiment that should not be reflected in install templates.
|
|
46
|
+
|
|
47
|
+
<!-- mustflow-section: required-inputs -->
|
|
48
|
+
## Required Inputs
|
|
49
|
+
|
|
50
|
+
- Changed-file list and the intended installed behavior.
|
|
51
|
+
- Source repository file, canonical template copy, and any localized source files.
|
|
52
|
+
- `templates/default/manifest.toml` entries: `creates`, `skill_profiles`, locale metadata, install policy, managed targets, generated targets, forbidden targets, and conflict policy.
|
|
53
|
+
- Init/update source code, package inclusion metadata, release or install tests, docs examples, and manifest-lock behavior that mention the changed surface.
|
|
54
|
+
- Intentional divergence rules between source and template copies.
|
|
55
|
+
- Relevant command-intent entries for related tests, docs validation, release checks, and mustflow validation.
|
|
56
|
+
|
|
57
|
+
<!-- mustflow-section: preconditions -->
|
|
58
|
+
## Preconditions
|
|
59
|
+
|
|
60
|
+
- The task matches the Use When conditions and does not match the Do Not Use When exclusions.
|
|
61
|
+
- Canonical source locale and template locale policy are known.
|
|
62
|
+
- Existing template manifest and nearby tests have been inspected before adding or removing installed files.
|
|
63
|
+
- Command execution remains governed by `.mustflow/config/commands.toml`; this skill does not authorize raw commands.
|
|
64
|
+
|
|
65
|
+
<!-- mustflow-section: allowed-edits -->
|
|
66
|
+
## Allowed Edits
|
|
67
|
+
|
|
68
|
+
- Update source workflow files, canonical template copies, route metadata, manifest `creates`, profile membership, locale metadata, install/update tests, docs examples, and package file lists that own the same installed surface.
|
|
69
|
+
- Add explicit divergence notes in skill or docs text when source and template behavior must differ.
|
|
70
|
+
- Do not blindly copy the source repository's real command contract into a default template.
|
|
71
|
+
- Do not install specialist skills into every profile unless the trigger is broadly useful for that profile.
|
|
72
|
+
- Do not update localized skill copies unless that locale intentionally maintains translated skill text and review is available.
|
|
73
|
+
- Do not manually edit generated manifest locks or generated repository maps unless a configured intent owns the generated output.
|
|
74
|
+
|
|
75
|
+
<!-- mustflow-section: procedure -->
|
|
76
|
+
## Procedure
|
|
77
|
+
|
|
78
|
+
1. Name the installed surface being changed: root instructions, workflow docs, skill body, skill index, route metadata, context file, config file, command contract, preference, template manifest, locale file, init/update behavior, package artifact, docs example, or release test.
|
|
79
|
+
2. Classify each surface as must-match, intentionally-divergent, generated, package-only, docs-only, or not-installed.
|
|
80
|
+
3. For must-match surfaces, update the source file and canonical template copy together. Examples include skill bodies, route metadata, skill index entries, managed workflow docs, and installable context or config defaults.
|
|
81
|
+
4. For intentionally-divergent surfaces, preserve the divergence and document the reason in the procedure or final report. Source repository command contracts usually contain real maintainer commands, while template command contracts should remain placeholders, unknown, or manual-only until a downstream project configures them.
|
|
82
|
+
5. Check `templates/default/manifest.toml`. Add new installable files to `creates`, remove deleted files, and place new skills only in profiles that would genuinely benefit from the route.
|
|
83
|
+
6. Check locale policy. Use the source locale as canonical. Non-source template locales may fall back to source-locale skill text unless translated skill text is intentionally maintained and review is available.
|
|
84
|
+
7. Check route alignment. `.mustflow/skills/INDEX.md` and `.mustflow/skills/routes.toml` must agree on route names, category, route type, priority intent, and expected verification intent names.
|
|
85
|
+
8. Check install/update behavior. If new files, profile membership, conflict policy, or managed targets change, inspect init/update tests and package tests that assert installed output, manifest lock behavior, backups, or diff previews.
|
|
86
|
+
9. Check package and release surfaces. Installed template files must be included in package output and covered by release-sensitive tests when the package includes templates.
|
|
87
|
+
10. Check public docs and examples only when they list installed files, profiles, init/update behavior, or workflow expectations.
|
|
88
|
+
11. Keep generated files generated. Refresh generated maps or package output only with configured intents, and report generated surfaces that are stale but outside the current allowed command set.
|
|
89
|
+
12. Verify with related tests first, then release and docs checks when package, template, manifest, or docs surfaces changed.
|
|
90
|
+
|
|
91
|
+
<!-- mustflow-section: postconditions -->
|
|
92
|
+
## Postconditions
|
|
93
|
+
|
|
94
|
+
- Source and template surfaces match where they should match and intentionally diverge where they should diverge.
|
|
95
|
+
- Manifest `creates`, skill profiles, locale policy, install/update behavior, package inclusion, tests, and docs agree with the installed surface.
|
|
96
|
+
- Any deferred locale, docs, package, or generated surface is named with risk.
|
|
97
|
+
|
|
98
|
+
<!-- mustflow-section: verification -->
|
|
99
|
+
## Verification
|
|
100
|
+
|
|
101
|
+
Use configured oneshot command intents when available:
|
|
102
|
+
|
|
103
|
+
- `changes_status`
|
|
104
|
+
- `changes_diff_summary`
|
|
105
|
+
- `test_related`
|
|
106
|
+
- `docs_validate_fast`
|
|
107
|
+
- `test_release`
|
|
108
|
+
- `mustflow_check`
|
|
109
|
+
|
|
110
|
+
Use broader configured tests when init, update, package inclusion, or release behavior is cross-cutting or no narrower related test covers the template surface.
|
|
111
|
+
|
|
112
|
+
<!-- mustflow-section: failure-handling -->
|
|
113
|
+
## Failure Handling
|
|
114
|
+
|
|
115
|
+
- If `mustflow_check` reports route or manifest drift, fix the source/template metadata mismatch before changing unrelated files.
|
|
116
|
+
- If template tests fail after adding a file, check `creates`, profile membership, package inclusion, locale metadata, and generated map freshness before changing behavior.
|
|
117
|
+
- If source and template command contracts differ, do not normalize them unless the divergence is proven accidental.
|
|
118
|
+
- If a skill seems useful but profile impact is unclear, keep it out of narrow profiles and report the profile decision.
|
|
119
|
+
- If localized surfaces cannot be confidently updated, keep canonical source metadata accurate and mark translation review instead of guessing.
|
|
120
|
+
|
|
121
|
+
<!-- mustflow-section: output-format -->
|
|
122
|
+
## Output Format
|
|
123
|
+
|
|
124
|
+
- Installed template surface changed
|
|
125
|
+
- Must-match surfaces synchronized
|
|
126
|
+
- Intentional divergences preserved
|
|
127
|
+
- Manifest creates and profiles updated
|
|
128
|
+
- Locale, init/update, package, docs, and tests checked
|
|
129
|
+
- Command intents run
|
|
130
|
+
- Skipped checks and reasons
|
|
131
|
+
- Remaining template drift risk
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: agents.root
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 14
|
|
6
6
|
lifecycle: user-editable
|
|
7
7
|
authority: binding
|
|
8
8
|
---
|
|
@@ -20,13 +20,14 @@ mustflow-managed details are under `.mustflow/`.
|
|
|
20
20
|
3. `.mustflow/config/mustflow.toml`
|
|
21
21
|
4. `.mustflow/config/commands.toml`
|
|
22
22
|
5. `.mustflow/config/preferences.toml` if present
|
|
23
|
-
6. `.mustflow/
|
|
24
|
-
7. `.mustflow/
|
|
23
|
+
6. `.mustflow/config/technology.toml` if present
|
|
24
|
+
7. `.mustflow/skills/INDEX.md`
|
|
25
|
+
8. `.mustflow/context/INDEX.md` only when the task needs project, product, domain,
|
|
25
26
|
UI, backend, data, security, or operations context
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
9. The matching `.mustflow/context/<name>.md` files, only when selected by the context index
|
|
28
|
+
10. The matching `.mustflow/skills/<name>/SKILL.md`
|
|
29
|
+
11. `REPO_MAP.md` only when broader repository navigation is needed
|
|
30
|
+
12. Relevant source, test, and documentation files
|
|
30
31
|
|
|
31
32
|
## Core Rules
|
|
32
33
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: agents.root
|
|
3
3
|
locale: ko
|
|
4
4
|
canonical: false
|
|
5
|
-
revision:
|
|
5
|
+
revision: 21
|
|
6
6
|
lifecycle: user-editable
|
|
7
7
|
authority: binding
|
|
8
8
|
---
|
|
@@ -20,13 +20,14 @@ mustflow가 관리하는 세부 문서와 설정은 `.mustflow/` 폴더 아래
|
|
|
20
20
|
3. `.mustflow/config/mustflow.toml`
|
|
21
21
|
4. `.mustflow/config/commands.toml`
|
|
22
22
|
5. `.mustflow/config/preferences.toml` (있다면)
|
|
23
|
-
6. `.mustflow/
|
|
24
|
-
7.
|
|
23
|
+
6. `.mustflow/config/technology.toml` (있다면)
|
|
24
|
+
7. `.mustflow/skills/INDEX.md`
|
|
25
|
+
8. 프로젝트, 제품, 도메인, UI, 백엔드, 데이터, 보안, 운영 컨텍스트가 필요한 경우
|
|
25
26
|
`.mustflow/context/INDEX.md`
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
9. 컨텍스트 색인에서 선택된 `.mustflow/context/<name>.md` 파일
|
|
28
|
+
10. 현재 작업과 관련된 `.mustflow/skills/<name>/SKILL.md`
|
|
29
|
+
11. 넓은 저장소 탐색이 필요할 때만 `REPO_MAP.md`
|
|
30
|
+
12. 관련 소스, 테스트, 문서 파일
|
|
30
31
|
|
|
31
32
|
## 핵심 규칙
|
|
32
33
|
|