mustflow 2.22.12 → 2.22.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/explain-verify.js +8 -1
  3. package/dist/cli/commands/explain.js +269 -2
  4. package/dist/cli/commands/run.js +109 -77
  5. package/dist/cli/commands/verify.js +16 -1
  6. package/dist/cli/lib/run-plan.js +31 -5
  7. package/dist/core/active-run-locks.js +294 -0
  8. package/dist/core/check-issues.js +8 -0
  9. package/dist/core/command-contract-validation.js +179 -2
  10. package/dist/core/command-explanation.js +5 -3
  11. package/dist/core/command-preconditions.js +261 -0
  12. package/dist/core/skill-route-explanation.js +115 -9
  13. package/package.json +13 -12
  14. package/schemas/README.md +6 -3
  15. package/schemas/change-verification-report.schema.json +52 -0
  16. package/schemas/commands.schema.json +41 -0
  17. package/schemas/explain-report.schema.json +152 -4
  18. package/templates/default/i18n.toml +14 -14
  19. package/templates/default/locales/en/.mustflow/skills/INDEX.md +1 -1
  20. package/templates/default/locales/en/.mustflow/skills/codebase-orientation/SKILL.md +18 -7
  21. package/templates/default/locales/en/.mustflow/skills/contract-sync-check/SKILL.md +14 -7
  22. package/templates/default/locales/en/.mustflow/skills/diff-risk-review/SKILL.md +10 -5
  23. package/templates/default/locales/en/.mustflow/skills/docs-update/SKILL.md +12 -5
  24. package/templates/default/locales/en/.mustflow/skills/failure-triage/SKILL.md +26 -5
  25. package/templates/default/locales/en/.mustflow/skills/pattern-scout/SKILL.md +13 -7
  26. package/templates/default/locales/en/.mustflow/skills/performance-budget-check/SKILL.md +53 -181
  27. package/templates/default/locales/en/.mustflow/skills/readme-authoring/SKILL.md +8 -2
  28. package/templates/default/locales/en/.mustflow/skills/release-notes-authoring/SKILL.md +4 -1
  29. package/templates/default/locales/en/.mustflow/skills/repro-first-debug/SKILL.md +15 -8
  30. package/templates/default/locales/en/.mustflow/skills/requirement-regression-guard/SKILL.md +10 -5
  31. package/templates/default/locales/en/.mustflow/skills/source-freshness-check/SKILL.md +5 -1
  32. package/templates/default/locales/en/.mustflow/skills/structure-discovery-gate/SKILL.md +2 -2
  33. package/templates/default/locales/en/.mustflow/skills/test-maintenance/SKILL.md +17 -4
  34. package/templates/default/manifest.toml +1 -1
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.pattern-scout
3
3
  locale: en
4
4
  canonical: true
5
- revision: 1
5
+ revision: 2
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: pattern-scout
@@ -66,12 +66,17 @@ Find the closest local implementation pattern before creating new structure, nam
66
66
  ## Procedure
67
67
 
68
68
  1. Name the change shape: command, UI pane, schema, template document, skill, test, documentation page, or other local category.
69
- 2. Search for the nearest existing examples in that category and inspect enough surrounding code to understand ownership, naming, data flow, and verification style.
70
- 3. Choose the closest pattern and list the files that define it. If multiple patterns conflict, choose the one nearest to the files being changed.
71
- 4. Identify the parts that must stay aligned: file naming, frontmatter, schema keys, localization keys, test helper style, manifest entries, lock entries, or documentation routing.
72
- 5. Implement by extending the chosen pattern instead of inventing a parallel shape.
73
- 6. If the change intentionally differs from the closest pattern, state the reason in the final report.
74
- 7. Use the smallest configured verification that covers the changed pattern.
69
+ 2. Search for examples in this order:
70
+ - same directory or feature folder;
71
+ - same command, package, template, schema, or docs family;
72
+ - same architectural layer, such as core, CLI, tests, docs, or templates;
73
+ - repository-wide only after local evidence is insufficient.
74
+ 3. Inspect enough surrounding code to understand ownership, naming, data flow, and verification style. Prefer patterns with matching file names, exported names, registry entries, tests, and template or schema synchronization.
75
+ 4. Choose the closest pattern and list the files that define it. If multiple patterns conflict, choose the one nearest to the files being changed and explain why other candidates were rejected.
76
+ 5. Identify the parts that must stay aligned: file naming, frontmatter, schema keys, localization keys, test helper style, manifest entries, lock entries, or documentation routing.
77
+ 6. Implement by extending the chosen pattern instead of inventing a parallel shape.
78
+ 7. If the change intentionally differs from the closest pattern, state the reason in the final report.
79
+ 8. Use the smallest configured verification that covers the changed pattern.
75
80
 
76
81
  <!-- mustflow-section: postconditions -->
77
82
  ## Postconditions
@@ -108,3 +113,4 @@ Also run any narrower configured test, build, or documentation intent required b
108
113
  - Registries, manifests, or docs kept aligned
109
114
  - Command intents run
110
115
  - Skipped checks and reasons
116
+ - Remaining pattern risks
@@ -2,11 +2,11 @@
2
2
  mustflow_doc: skill.performance-budget-check
3
3
  locale: en
4
4
  canonical: true
5
- revision: 12
5
+ revision: 15
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: performance-budget-check
9
- description: Apply this skill when performance budgets, query-count budgets, N+1 risk, read/write workload shape, database concurrency pressure, app-server scaling, vertical versus horizontal scaling, process count, connection-pool pressure, read-model cost, operational database reporting load, analytics-query isolation, cache strategy, cache keys, cache invalidation, cache stampede, hot keys, stale fallback, ranking snapshots, search API cost, search index rebuild cost, search quality regression set, file upload bandwidth, external-dependency timeout cost, retry storms, worker queue starvation, provider rate limits, queue backlog or dead-letter growth, pricing-growth cost, vendor free-tier limits, value-pricing units, internal cost units, tenant usage limits, user-action fan-out, contribution margin, P50/P90/P99 heavy-user costs, AI usage cost budgets, AI gateway hard limits, provider budget guardrails, agent loop caps, model-call retries, token-cost tracking, bundle size, page weight, startup time, command duration, memory use, asset size, throughput, latency, benchmark output, or performance claims are planned, edited, reviewed, or reported.
9
+ description: Apply this skill when CLI execution duration, build time, bundle size, test execution scheduler bottlenecks, filesystem scanning latency, process spawning overhead, or dependency size budgets are planned, edited, or reported.
10
10
  metadata:
11
11
  mustflow_schema: "1"
12
12
  mustflow_kind: procedure
@@ -22,227 +22,99 @@ metadata:
22
22
  - mustflow_check
23
23
  ---
24
24
 
25
- # Performance Budget Check
25
+ # Performance Budget Check (CLI Core Condensed)
26
26
 
27
27
  <!-- mustflow-section: purpose -->
28
28
  ## Purpose
29
29
 
30
- Keep performance claims and budgets tied to declared thresholds, reproducible measurements, and explicit tradeoffs instead of guessing from local impressions.
30
+ Keep CLI performance claims and execution speed tied to reproducible, measured thresholds instead of qualitative statements.
31
31
 
32
32
  <!-- mustflow-section: use-when -->
33
33
  ## Use When
34
34
 
35
- - A task changes or reports performance budgets, bundle size, page weight, startup time, command duration, memory use, asset size, throughput, latency, search index size, build time, or benchmark output.
36
- - A change adds heavier dependencies, generated assets, static pages, search indexes, startup work, file scanning, command fan-out, or repeated process spawning.
37
- - A change introduces or reports caching, cache-control headers, cache keys, cache tags, purge rules, stale fallback, precomputed ranking, search-result caching, faceted-filter caching, CDN caching, or private versus shared cache behavior.
38
- - A list, feed, search, admin table, dashboard, or API response introduces relation loading, ORM includes, lazy loading, per-row counts, viewer-specific flags, aggregate counters, or read models that can hide N+1 queries or unbounded query cost.
39
- - A behavior analytics, dashboard, reporting, search ranking, event log, or experiment analysis path may scan operational tables, consume the same connection pool as user requests, or run grouped aggregates on high-growth data.
40
- - A database or storage choice is justified by "read-heavy", "write-heavy", "SQLite is enough", "PostgreSQL is safer", "cache it", "direct upload", or "local file upload" performance assumptions.
41
- - A performance issue is framed as "scale up", "add servers", "move to serverless", "move to edge", "add workers", or "use a larger instance" before CPU, database, external dependency, regional latency, and process-state bottlenecks are separated.
42
- - App servers may be multiplied and could increase database connections, queue load, retry volume, cron duplication, cache pressure, or external API calls instead of improving throughput.
43
- - A file upload, download, resize, conversion, object-storage, CDN, or app-server streaming path could consume request time, memory, bandwidth, or worker capacity.
44
- - A cache, queue, search service, analytics store, AI provider, email service, or other auxiliary dependency might cause core user requests to wait, retry, stampede, or fail.
45
- - HTTP requests perform AI, email, embedding, statistics, webhook follow-up, import, export, file conversion, or other slow work inline instead of accepting work and handing it to a bounded worker path.
46
- - A retry policy, worker pool, or provider integration can create retry storms, rate-limit feedback loops, dead-letter buildup, or queue starvation across unrelated work.
47
- - Search ranking, query behavior, search index rebuild, queue partitioning, job retry policy, dead-letter retention, log volume, or analytics event volume may affect latency, worker capacity, provider cost, storage cost, or operational visibility.
48
- - AI, embedding, reranking, image, audio, or tool-call features can create provider cost, token cost, retry cost, cache savings, rate-limit pressure, free-plan abuse, or worker starvation that needs a budget, usage ledger, or limit.
49
- - AI requests need a gateway-level cost stop before provider calls, including estimated-cost checks, hard budget decisions, model downgrade rules, request-size caps, token caps, tool-call caps, agent-step caps, timeout caps, or an emergency disable switch.
50
- - A third-party tool, hosted platform, analytics service, observability vendor, automation provider, database, file store, email provider, authentication provider, or AI provider has a free tier, seat price, API-call price, event price, storage price, bandwidth price, workspace price, audit-log price, export price, or usage limit that can become a product margin or growth bottleneck.
51
- - A pricing or plan design must compare the value unit users understand with the cost units the system consumes, such as seats, workspaces, requests, storage, bandwidth, AI tokens, search queries, image conversions, automation runs, events, realtime connections, or support.
52
- - A user action can fan out into several internal jobs such as thumbnail generation, OCR, AI summary, embeddings, search indexing, notifications, logs, analytics events, or webhook calls.
53
- - Free, unlimited, or generous plan limits touch high-cost surfaces such as AI calls, media conversion, file storage, download traffic, search, automation, webhooks, realtime connections, or log retention.
54
- - A margin claim depends on average customers but could be dominated by heavy users, high-volume tenants, or P90/P99 usage.
55
- - A report claims that a path is faster, slower, lightweight, optimized, cached, parallelized, cheap, expensive, within budget, or over budget.
56
- - A failure or slowdown suggests that measurement scope, command selection, concurrency, caching, or generated output size needs review.
35
+ - The task changes or reports CLI build time, bundle size, test scheduling logic, database cache initialization, or command execution duration.
36
+ - A change adds heavy dependencies, recursive file-system scanning, command fan-out, or repeated child process spawning (e.g., test harness overhead).
37
+ - A test optimization changes process isolation, in-process CLI execution, shared build outputs, or scheduler grouping.
38
+ - A report claims that a CLI path is "faster", "optimized", "efficient", or "lightweight".
57
39
 
58
40
  <!-- mustflow-section: do-not-use-when -->
59
41
  ## Do Not Use When
60
42
 
61
- - The task only changes wording and does not make a performance or size claim.
62
- - The number is only a local fixture or example with no budget or public reporting meaning.
63
- - The change is only image asset conversion; use `web-asset-optimization` for that asset pipeline and this skill only for budget reporting.
43
+ - The task only changes wording, translations, or docs with no runtime execution impact.
44
+ - The numbers represent local mocks or test-only fixtures with no operational baseline meaning.
64
45
 
65
46
  <!-- mustflow-section: required-inputs -->
66
47
  ## Required Inputs
67
48
 
68
- - The performance surface, such as command, page, asset, bundle, startup path, query, build, or generated output.
69
- - The budget source, if one exists: repository config, documented threshold, user-provided limit, benchmark baseline, package metadata, or current command result.
70
- - Measurement method, environment boundary, warm or cold run expectation, and whether the result is deterministic, sampled, local-only, or approximate.
71
- - Cache layer, cache key source, cache version, TTL or freshness rule, invalidation trigger, stale fallback, private or no-store boundary, and rebuild source when a cache or precomputed read model is involved.
72
- - Cache failure behavior, hot-key risk, stampede risk, TTL jitter or lock strategy, cache flush tolerance, and whether the cache is disposable or runtime storage.
73
- - Expected query count, row count, relation loading shape, aggregate strategy, read-model owner, and whether the measurement can detect query growth when a database-backed read path is involved.
74
- - Read/write workload profile, including repeated reads, freshness requirement, write bursts, same-row contention, index maintenance cost, ledger or audit write amplification, and whether a read projection can replace per-request calculation.
75
- - Operational database versus analytics or reporting boundary, including read replica, precomputed aggregate, queue, event store, separate connection pool, or external analytics system when available.
76
- - Timeout, retry, circuit-breaker, stale-response, feature-flag, and degraded-mode policy when an auxiliary dependency can affect the critical path.
77
- - Worker and provider capacity boundary, including queue separation, concurrency limits, retry delay, backoff with jitter, circuit-breaker threshold, dead-letter behavior, and whether one provider can consume shared worker or database resources.
78
- - Scaling boundary, including current process count, CPU and memory pressure, connection-pool limits, database maximum connections, serverless or edge timeout limits, worker concurrency, cron ownership, and whether adding app servers would increase pressure on the real bottleneck.
79
- - Search capacity and quality boundary, including index rebuild time, partial reindex trigger, query log volume, ranking snapshot cost, representative query set, and whether relevance changes are measured or only observed anecdotally.
80
- - Log and analytics volume boundary, including which events must be retained internally, which can be sampled or dropped, retention window, storage cost, and whether analysis scans are isolated from core user requests.
81
- - AI cost boundary, including feature key, account or workspace scope, request count, input and output token limits, cached-input treatment, provider price snapshot, retry grouping, cache-hit type, model tier, plan limit, and whether failed or cancelled provider calls can still cost money.
82
- - AI gateway boundary, including preflight estimated cost, hard limit decision, remaining budget, model downgrade, feature policy, provider budget role, maximum tool calls, maximum agent steps, maximum total tokens, timeout, and emergency kill switch.
83
- - Vendor cost boundary, including whether cost grows by users, seats, workspaces, API calls, events, storage, bandwidth, active users, projects, advanced permissions, audit logs, exports, AI tokens, or support tier, and whether that growth follows the product's revenue model.
84
- - Pricing and margin boundary, including the user-facing value unit, internal cost unit, included quota or credit pool, overuse policy, tenant-level limit, free-plan maximum loss, and customer contribution margin formula.
85
- - Usage metering boundary, including workspace or organization id, user id, feature key, request type, input size, output size, processing time, external API usage, retries, failures, plan, and whether one user action can create multiple billable or cost-bearing internal operations.
86
- - Heavy-user boundary, including P50, P90, and P99 customer cost, whether a few users can dominate provider or infrastructure bills, and which high-cost actions require hard limits instead of only reporting.
87
- - Free-to-paid transition boundary, including which operationally required features are outside the free tier, what usage cliffs exist, and whether growth creates a gradual cost curve or a sudden platform migration or plan upgrade.
88
- - Relevant command-intent contract entries for status, diff, build, tests, docs, release, or mustflow validation.
49
+ - **Performance Surface**: Target command path, build step, or test scheduling token model.
50
+ - **Measurement Method**: The exact execution tool (e.g., in-process execution vs. process spawning).
51
+ - **Baseline**: Current execution duration or bundle size before changes.
52
+ - **Measured Result**: Post-change metrics under identical sandbox constraints.
53
+ - **Isolation Surface**: Shared state touched by the optimization, such as `process.cwd()`, `process.env`, module cache, build output directories, database files, or child processes.
89
54
 
90
55
  <!-- mustflow-section: preconditions -->
91
56
  ## Preconditions
92
57
 
93
- - The task matches the Use When conditions and does not match the Do Not Use When exclusions.
94
- - Required inputs are available, or missing inputs can be reported without guessing.
95
- - Higher-priority instructions and `.mustflow/config/commands.toml` have been checked for the current scope.
58
+ - The task matches the Use When criteria and does not match the exclusions.
59
+ - Standard test suite intent (`test_related` or `test_fast`) is configured and functional.
96
60
 
97
61
  <!-- mustflow-section: allowed-edits -->
98
62
  ## Allowed Edits
99
63
 
100
- - Add or tighten budget checks, measurement notes, thresholds, cache boundaries, dependency tradeoff notes, tests, docs, and reports tied to the changed performance surface.
101
- - Replace vague claims such as "fast" or "lightweight" with measured, bounded, or explicitly unverified wording.
102
- - Prefer existing configured command intents and repository-local measurement paths before adding new tools.
103
- - Do not invent thresholds, benchmark numbers, hardware assumptions, network conditions, or release-blocking budgets without a source of truth.
64
+ - Tighten budget limits, add performance test fixtures, optimize scheduling tokens, or use in-process helpers instead of spawning heavy child processes.
65
+ - Replace fuzzy adjectives ("fast", "responsive") with exact duration (ms/sec) or file weight (KB/MB).
104
66
 
105
67
  <!-- mustflow-section: procedure -->
106
68
  ## Procedure
107
69
 
108
- 1. Identify the performance surface and whether the task affects runtime, build time, test time, docs generation, asset weight, package size, or user-facing load behavior.
109
- 2. Find the budget source before changing thresholds or claims. If no budget exists, report that the work is budget-discovery or measurement-only.
110
- 3. Check nearby code, docs, templates, tests, and command metadata for duplicated performance statements or stale thresholds.
111
- 4. Classify the measurement as deterministic, sampled, local-only, externally dependent, or unmeasured.
112
- 5. If the change adds dependencies, generated output, or repeated work, identify the likely cost path and whether an existing alternative is available.
113
- 6. For database-backed lists, feeds, search, dashboards, or admin tables, define the intended query shape before accepting a performance claim.
114
- - Count queries separately from returned rows when the local tooling supports it.
115
- - Watch for per-row author, tag, attachment, permission, count, reaction, bookmark, or viewer-state lookups.
116
- - Prefer joins for small required one-to-one data, batch queries for one-to-many data, aggregate or cached counters for counts, and read models or projections for complex feeds.
117
- - Treat ORM lazy loading as a performance risk until the query count is bounded or measured.
118
- - Treat repeated `GROUP BY`, `COUNT`, `SUM`, large date windows, free-form filtering, and dashboard scans on high-growth tables as reporting load. Prefer precomputed aggregates, read replicas, analytics stores, or bounded query windows over user-request database resources.
119
- - Protect core user requests from analytics or reporting load with separate connection pools, read-only replicas, queued jobs, cached summaries, or explicit rate limits when the architecture has those tools.
120
- 7. For read-heavy and write-heavy workload claims, check the ordering of mitigations before accepting the design.
121
- - For read-heavy paths, first stabilize query patterns, then indexes, then precomputed read tables or projections, then caches, then replicas or separate search engines. Do not add cache first when invalidation is unclear.
122
- - For write-heavy paths, account for index write cost, audit-log amplification, ledger writes, lock contention, hot counters, same-row balance or inventory updates, and retry or idempotency overhead.
123
- - Treat current-value fields such as balances, counts, or rankings as derived when a ledger, event, or snapshot is the real evidence source.
124
- 8. For caching work, classify the cache layer: browser, CDN, server response, query-result cache, search index, precomputed ranking or statistics, generated page, or generated API projection.
125
- 9. Check whether the cache key comes from normalized input rather than raw URL order, casing, default values, arbitrary range values, or temporary UI state. Include a cache version when the response shape, filter logic, ranking formula, or visibility rule can change.
126
- 10. Check invalidation before accepting a cache: name the source data, affected cache tags or dependencies, purge trigger, rebuild source, stale-response behavior, and whether failures degrade safely.
127
- - Ask whether the cache can be flushed. If flushing only increases latency, report it as cache; if it destroys sessions, queues, locks, rate-limit state, user state, or permissions, report it as runtime storage and require a different durability budget.
128
- - Check hot keys such as global home feeds, popular lists, pricing data, and common search terms. Report sharding, replication, request coalescing, local memoization, or CDN strategy when one key can receive disproportionate traffic.
129
- - Check stampede behavior. Prefer TTL jitter, single-flight refresh, stale-while-revalidate, background refresh, or prewarming over letting simultaneous misses hit the origin together.
130
- 11. For ranking, trending, search, and faceted-list APIs, prefer precomputed snapshots, generated indexes, or bounded caches over per-request full aggregation when traffic can spike.
131
- 12. For file upload and download paths, identify whether the app server handles raw bytes or only issues signed object-storage URLs.
132
- - Large uploads, image processing, document conversion, video conversion, and archive extraction should not monopolize request memory or bandwidth when they can be direct-to-storage or worker-driven.
133
- - Treat app-local file serving as a scalability and failure-isolation risk once user files are a product feature, especially with multiple servers, redeploys, or CDN needs.
134
- 13. Ensure admin, private, authenticated, or personalized responses use no shared cache. Require `no-store` or private-cache behavior where leaking data would be worse than serving slower responses.
135
- 14. For external or auxiliary dependencies on a critical path, check timeout, retry, backoff, circuit-breaker, fallback, and feature-flag behavior. A slow AI, search, analytics, email, or statistics dependency should not consume the whole request budget unless the user-visible operation truly depends on it.
136
- 15. For scaling choices, locate the bottleneck before accepting the mitigation.
137
- - If CPU is the bottleneck, consider a larger instance, more processes, worker processes, or worker threads for CPU-heavy work before distributing state across many app hosts.
138
- - If the database is the bottleneck, check query shape, indexes, slow queries, transaction length, connection pooling, and N+1 behavior before adding app servers that may exhaust connections faster.
139
- - If an external API is the bottleneck, use queueing, timeout budgets, limited retries, circuit breakers, degraded behavior, and rate limits rather than letting user requests wait indefinitely.
140
- - If regional latency is the bottleneck, consider edge or regional routing only for short, independent paths. Do not move database-write-heavy or dependency-heavy business logic to edge runtime only because the edge is faster for simple responses.
141
- - Treat serverless and edge scaling as capacity tools with their own limits: cold starts, timeouts, connection reuse, provider compatibility, bundle size, and cost cliffs still need budgets.
142
- 16. For worker and retry paths, check whether retryable work is bounded.
143
- - Prefer accepting work quickly, persisting a job or outbox record, and returning a queued or processing status over making HTTP wait for slow external completion.
144
- - Use backoff with jitter so many failing jobs or clients do not retry at the same time.
145
- - Separate queues, worker pools, rate limits, or concurrency budgets when AI, email, analytics, embeddings, webhooks, billing, and imports have different urgency or failure policies.
146
- - Report dead-letter growth, retry exhaustion, provider rate limits, and unknown provider outcomes as capacity and reliability risks, not just error-handling details.
147
- - Check that queues with different urgency do not share an unbounded worker pool when one backlog can delay payments, entitlement grants, password resets, webhook processing, or other critical work.
148
- - Treat manual replay and dead-letter review as operational capacity. A dead-letter queue that no one watches is a delayed outage, not a solved failure.
149
- 17. For search and analytics volume, check whether derived systems can be rebuilt and observed without overwhelming the core path.
150
- - Search indexes should be rebuildable from source records, and full or partial reindex cost should be bounded before relying on provider search as the only serving path.
151
- - Search relevance claims should cite a representative query set, expected top results, or explicit unmeasured status instead of relying on a dashboard impression.
152
- - Logs and analytics events should not grow without retention, sampling, aggregation, export, or cold-storage policy when storage, query, or SaaS event pricing can become the bottleneck.
153
- 18. For AI cost and provider-usage budgets, treat cost as a first-class performance and product limit.
154
- - Do not rely on provider dashboards as the only source for user, workspace, feature, model, cache, retry, or plan-level cost decisions.
155
- - Prefer a single AI call boundary that records request-level usage before cost is summarized. Scattered direct SDK calls hide feature economics and retry amplification.
156
- - Track user request id separately from provider call id so one user action with retries, fallbacks, embeddings, tool calls, or evaluations can be costed without being counted as multiple user actions.
157
- - Store usage in integer cost units plus a pricing snapshot or version reference. Do not recompute historical costs from the current provider price sheet.
158
- - Distinguish app response cache, provider prompt cache, embedding cache, and search-result cache. A cache hit that avoids a provider call is not the same as a discounted provider input.
159
- - Apply preflight limits for plan, account, request length, model tier, monthly cost, request count, input tokens, and output tokens; record actual usage afterward and update rollups or limits.
160
- - Treat provider console budgets, account-level spend caps, and rate-limit headers as secondary guardrails unless they are proven hard stops. Product-owned limits should block, downgrade, queue, or reject high-cost work before the provider call.
161
- - For agentic or multi-call AI work, cap steps, tool calls, total tokens, total estimated cost, and total time. One visible user request can create many provider calls, so request-count limits alone are not enough.
162
- - Keep budget decisions inspectable. Record allow, block, downgrade, or emergency-disable decisions with safe identifiers, estimated cost, remaining budget, selected model, and blocked reason.
163
- - Include failed, timed-out, cancelled, and retried calls in the budget review when they may consume provider quota or money.
164
- 19. For vendor pricing and free-tier claims, compare the tool's pricing unit with the product's revenue unit.
165
- - Check whether the product earns by customer, workspace, seat, transaction, storage, content item, automation run, active user, or AI usage, then compare that with how the vendor charges.
166
- - Treat user-seat, monthly-active-user, API-call, event, storage, bandwidth, workspace, project, advanced-permission, audit-log, export, and overage pricing as structural risk when the product can grow in a different direction.
167
- - Identify operationally required features that are plan-gated, such as backups, audit logs, SSO, role management, webhooks, API limits, data export, retention, monitoring, or support. A generous free tier can still be risky when the paid cliff lands on a feature that is hard to replace later.
168
- - Report pricing cliffs and unverified provider terms as margin risk rather than performance risk alone. "Cheap now" is not evidence that the tool remains cheap at the product's next scale.
169
- 20. For pricing and internal metering claims, separate user-perceived value from system cost.
170
- - Identify the value unit: seat, workspace, project, document, transaction, plan, or another unit customers can understand.
171
- - Identify the cost units: storage, transfer, database usage, search, AI or external API calls, log or analytics volume, email or notification sends, automation runs, file conversions, queue work, payment fees, and support load.
172
- - Prefer simple external plans plus internal limits for cost-bearing resources. A seat or workspace plan can include storage, AI credits, search quotas, automation runs, and shared tenant pools without exposing every raw request count to the customer.
173
- - Treat "unlimited" as a claim that must have a natural human limit, fair-use policy, rate limit, abuse detection, or hard internal cap. Do not let unlimited AI, media conversion, storage, traffic, search, automation, realtime, webhook, or log retention become an unbounded liability.
174
- - Model contribution margin as customer revenue minus customer variable cost. Report which variable costs are included and which are unmeasured.
175
- - Compare P50, P90, and P99 users or tenants when possible. Averages can hide a small number of heavy users who destroy margin.
176
- - Meter by workspace or organization as well as user when team usage is pooled. Seat-level credits may be sold, but shared tenant pools often better match real usage.
177
- 21. For user-action fan-out, count internal work rather than only the visible request.
178
- - Name the jobs triggered by one action, such as uploads, transforms, OCR, AI calls, embeddings, search indexing, notification sends, event writes, log writes, analytics exports, and webhook deliveries.
179
- - Identify which fan-out work is synchronous, queued, retryable, deduplicated, rate-limited, or skipped under load.
180
- - Treat hidden retries, failed calls, and duplicate worker execution as cost multipliers when they consume provider quota or infrastructure.
181
- 22. Keep claims conservative: state the command, input scope, query-count boundary, cache boundary, worker boundary, search rebuild or quality boundary, log and analytics volume boundary, AI cost boundary, vendor cost boundary, pricing value/cost boundary, critical-path dependency boundary, and whether caching, warm runs, parallelism, stale responses, precomputed snapshots, generated files, queues, provider limits, pricing cliffs, user-action fan-out, or external services influenced the result.
182
- 23. If a budget is exceeded, report the affected surface, budget source, measured value or unavailable measurement, likely cause, and smallest follow-up.
183
- 24. Run the narrowest configured verification that proves the changed performance, package, docs, or mustflow surface.
70
+ 1. Identify if the performance change affects:
71
+ - **Build Time**: bundle duration, generated file size, and rebuild behavior.
72
+ - **Test Scheduling**: scheduler token capacity, wave grouping, in-process execution, and subprocess fan-out.
73
+ - **CLI Boot Time**: Node process startup, module import cost, and command dispatch latency.
74
+ 2. Run the narrowest matching oneshot intent (e.g., `build` or `test_related`) to establish a deterministic local baseline.
75
+ 3. Before converting process-spawned tests to in-process execution, inventory global process state:
76
+ - current working directory reads or writes;
77
+ - environment variable mutation;
78
+ - `process.argv`, `process.exitCode`, signal handlers, module cache, timers, and singleton caches;
79
+ - shared filesystem outputs such as `dist/`, local indexes, or temporary database paths.
80
+ 4. Do not use `process.chdir()` as an in-process test isolation strategy when multiple tests can run in the same Node test runner. Use a context-aware current-directory adapter, serialize the affected tests, or keep those tests in separate processes.
81
+ 5. Treat build output directories that are deleted and recreated during build as exclusive resources. Lock the build/test runner before rebuilding or reading that output so an overlapping run cannot remove files from a live test process.
82
+ 6. Before measuring, check for an already-running build, profile, or test process for the same repository. Stop, wait, or report the overlap before recording timings.
83
+ 7. Eliminate process spawning loops. Where possible, invoke core logic directly in-process instead of using heavy CLI shell executions, but only after the isolation surface is controlled.
84
+ 8. Measure and document the metrics exactly:
85
+ - Command duration (ms or seconds).
86
+ - Bundle size (KB or MB) if `dist/` is affected.
87
+ 9. Identify any potential platform-specific latency differences (Windows PowerShell vs. Unix sh).
88
+ 10. Verify changes using `mustflow_check` and the narrowest test suite intent.
184
89
 
185
90
  <!-- mustflow-section: postconditions -->
186
91
  ## Postconditions
187
92
 
188
- - Performance claims have a budget source, measurement method, or explicit unverified status.
189
- - Database-backed read paths have an explicit query-count, row-count, relation-loading, or unmeasured-risk note when N+1 or aggregate cost is plausible.
190
- - Read-heavy and write-heavy claims identify query patterns, indexes, projections, cache invalidation, write contention, audit or ledger amplification, and retry overhead before claiming a store or cache is sufficient.
191
- - File upload and download paths identify app-server bandwidth, memory, conversion, object-storage, CDN, and worker boundaries when those costs are plausible.
192
- - Cache behavior has an owner, key source, freshness rule, invalidation path, private/shared boundary, and rebuild or fallback story when cache is part of the claim.
193
- - Analytics, dashboard, and reporting paths do not silently share unbounded operational query cost with core user requests, or the remaining risk is reported.
194
- - Critical-path external dependencies have timeout, retry, fallback, feature-flag, or degraded-mode boundaries when performance or availability can affect core use.
195
- - Vertical scaling, horizontal scaling, serverless, edge, worker, and process-count claims identify the actual bottleneck and the state, connection, cron, queue, or provider limits that could make the chosen scaling path worse.
196
- - Worker queues, retry policies, provider rate limits, and dead-letter paths have capacity boundaries when auxiliary work can starve core flows.
197
- - Search index rebuilds, search quality checks, log volume, analytics event volume, and queue dead-letter review have explicit measured or unmeasured status when they affect latency, cost, or operational visibility.
198
- - AI usage and cost claims have request, provider-call, feature, model, cache, retry, pricing-snapshot, and plan-limit boundaries when model calls can affect cost or quota.
199
- - AI gateway claims have preflight hard-limit, provider-budget, downgrade, agent-step, tool-call, timeout, and emergency-disable boundaries when autonomous or high-cost model work can affect margin.
200
- - Vendor pricing, free-tier, plan-gated feature, and usage-growth claims are tied to the product's revenue unit or reported as unverified margin risk.
201
- - Pricing claims separate customer-visible value units from internal cost units, and identify included limits, credit pools, overuse behavior, tenant-level controls, free-plan loss budget, and unverified margin risk.
202
- - Usage-cost claims account for user-action fan-out, hidden retries, P50/P90/P99 heavy-user shape, and contribution margin when high-cost actions can dominate customer economics.
203
- - Thresholds and benchmark-facing docs, tests, package metadata, generated output notes, and command contracts are synchronized where they overlap.
204
- - Final reports separate measured evidence from estimates, local observations, and suggested follow-up work.
93
+ - All speed or weight claims are backed by measured data or explicitly marked as "unverified local estimate".
94
+ - No hidden process-spawning bottlenecks or N+1 file scan loops are introduced.
95
+ - In-process performance work documents how global process state and shared build outputs are isolated.
205
96
 
206
97
  <!-- mustflow-section: verification -->
207
98
  ## Verification
208
99
 
209
- Use configured oneshot command intents when available:
210
-
211
- - `changes_status`
212
- - `changes_diff_summary`
213
- - `build`
214
- - `test_related`
215
- - `docs_validate_fast`
216
- - `test_release`
100
+ Use configured oneshot command intents:
101
+ - `build` (to check bundle weight/correctness)
102
+ - `test_related` or `test_fast` (to verify execution speed)
217
103
  - `mustflow_check`
218
104
 
219
- Use a narrower configured benchmark, asset, build, docs, or test intent when it better proves the changed performance surface.
220
-
221
105
  <!-- mustflow-section: failure-handling -->
222
106
  ## Failure Handling
223
107
 
224
- - If no budget source exists, do not invent one. Report the missing source and keep the claim qualitative or measurement-only.
225
- - If a measurement depends on local hardware, cache state, network, registry state, or generated output from a previous run, state that boundary.
226
- - If verification is too slow or no configured command exists, report the missing or skipped intent instead of running an inferred command.
227
- - If a performance fix conflicts with correctness, security, accessibility, or data safety, preserve the stricter correctness boundary and report the tradeoff.
108
+ - If local execution hardware makes metrics non-deterministic, state the sandbox CPU/environment variables explicitly.
109
+ - If timings are distorted by an orphaned or overlapping process, stop and classify the measurement as invalid before taking a new baseline.
110
+ - If correctness conflicts with performance, prioritize correctness, revert the optimization, and report the trade-off.
228
111
 
229
112
  <!-- mustflow-section: output-format -->
230
113
  ## Output Format
231
114
 
232
- - Performance surface reviewed
233
- - Budget source or missing budget
234
- - Measurement method and boundary
235
- - Query-count, N+1, read-model, and aggregate-cost boundary when relevant
236
- - Operational versus analytics query boundary when relevant
237
- - Cache layer, key, freshness, invalidation, hot-key, stampede, flush-tolerance, and private/shared boundary when relevant
238
- - Critical-path external dependency timeout, retry, fallback, worker, queue, rate-limit, and dead-letter boundary when relevant
239
- - Scaling bottleneck, process-count, database-connection, serverless, edge, worker, and cron-ownership boundary when relevant
240
- - Search rebuild, search quality, log volume, analytics retention, queue backlog, and dead-letter review boundary when relevant
241
- - AI usage, token, provider-call, model-tier, retry-cost, cache-hit, pricing-snapshot, and plan-limit boundary when relevant
242
- - AI gateway hard limit, provider budget guardrail, model downgrade, agent loop, tool-call, timeout, and emergency kill-switch boundary when relevant
243
- - Vendor pricing unit, customer value unit, internal cost unit, tenant limit, free-tier cliff, plan-gated operations feature, contribution-margin, P50/P90/P99 heavy-user, and revenue-alignment boundary when relevant
244
- - User-action fan-out, hidden retry, and internal work amplification when relevant
245
- - Thresholds, claims, or metadata synchronized
246
- - Command intents run
247
- - Skipped measurements and reasons
248
- - Remaining performance risk
115
+ - Performance Surface: [e.g., CLI test-harness in-process runner]
116
+ - Measurement Method: [e.g., bun run test:related]
117
+ - Baseline Metrics: [e.g., 18.2s execution with process spawning]
118
+ - Post-change Metrics: [e.g., 3.8s execution via in-process helper]
119
+ - Sync Details: synchronized CLI helpers and test configuration
120
+ - Remaining Risks: platform-specific process execution drift under heavy IO
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.readme-authoring
3
3
  locale: en
4
4
  canonical: true
5
- revision: 1
5
+ revision: 2
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: readme-authoring
@@ -75,7 +75,13 @@ Create or refactor `README.md` as a factual repository entry point without inven
75
75
  7. Avoid unsupported badges, fake metrics, broad architecture diagrams, roadmap promises, security claims, performance claims, or “why this is great” language unless the repository already contains a maintained source for them.
76
76
  8. Keep examples minimal and runnable only when the repository provides enough evidence. Mark unknown setup details as missing instead of filling gaps.
77
77
  9. If external text, AI output, issue comments, or copied docs drive the README change, treat that material as untrusted input and keep only repository-supported requirements.
78
- 10. If the README edit changes or exposes workflow behavior, activate the matching documentation, contract, security, or dependency skill before finishing.
78
+ 10. If the README edit changes or exposes another maintained surface, activate the narrower matching skill before finishing:
79
+ - command examples, exit codes, JSON output, help text, or schema-backed reports: `cli-output-contract-review`;
80
+ - installation, package contents, versions, or release readiness: `release-notes-authoring` or `contract-sync-check`;
81
+ - dependency claims, package-manager behavior, or external tools: `dependency-reality-check` or `source-freshness-check`;
82
+ - security, privacy, permissions, secrets, retention, or disclosure: `security-privacy-review`;
83
+ - mustflow command contracts, template metadata, or skill routes: `command-contract-authoring`, `skill-authoring`, or `contract-sync-check`;
84
+ - broad docs-site changes: `docs-update`.
79
85
 
80
86
  <!-- mustflow-section: postconditions -->
81
87
  ## Postconditions
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.release-notes-authoring
3
3
  locale: en
4
4
  canonical: true
5
- revision: 1
5
+ revision: 2
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: release-notes-authoring
@@ -53,6 +53,7 @@ This first version is intentionally limited. Until the repository declares a rea
53
53
  - Evidence for each public claim, such as changed files, tests, schemas, docs, templates, package metadata, or run receipts.
54
54
  - Version source and release-versioning preferences when package or template versions are mentioned.
55
55
  - Relevant command-intent contract entries for status, diff, docs, release, and mustflow validation.
56
+ - Any known limitation such as missing release-history intent, unverified migration evidence, or translation review gap.
56
57
 
57
58
  <!-- mustflow-section: preconditions -->
58
59
  ## Preconditions
@@ -76,6 +77,7 @@ This first version is intentionally limited. Until the repository declares a rea
76
77
  1. Establish the evidence set.
77
78
  - Use user-provided summaries, current diff summaries, release preparation notes, and directly relevant changed files.
78
79
  - If historical commits, tags, or prior releases are needed and no configured read-only intent exists, report the missing release-history intent.
80
+ - State the current limitation explicitly when the note is only based on the active diff or user-provided summary.
79
81
  2. Identify public surfaces.
80
82
  - CLI behavior, installed templates, schemas, command contracts, package metadata, user-visible docs, migrations, security or privacy behavior, and contributor-facing workflow can be release-note material.
81
83
  - Internal refactors, test-only changes, generated-output refreshes, formatting, and private planning notes stay out unless they change a public contract.
@@ -140,4 +142,5 @@ Use release checks when notes mention package metadata, template metadata, schem
140
142
  - Version or migration claims checked
141
143
  - Command intents run
142
144
  - Skipped release-history checks and reasons
145
+ - Current limitations of the release-note evidence
143
146
  - Remaining release-note risks
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.repro-first-debug
3
3
  locale: en
4
4
  canonical: true
5
- revision: 2
5
+ revision: 3
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: repro-first-debug
@@ -74,13 +74,20 @@ This skill keeps debugging anchored to symptom evidence, deterministic reproduct
74
74
  2. Locate the smallest fast, deterministic reproduction path: an existing command intent, test file, route, UI action, fixture, or function boundary.
75
75
  3. Prefer existing targeted verification before adding a new test. If no targeted path exists, record the gap and create the smallest reproduction only when it is supported by the symptom.
76
76
  4. Keep the first reproduction focused on one failing condition. Avoid turning the reproduction into a broad regression suite.
77
- 5. If the cause is not obvious, list three to five plausible hypotheses. For each hypothesis, write the observation that would confirm or reject it before changing production code.
78
- 6. Inspect the source that controls the reproduced behavior and gather the smallest observation needed to choose between hypotheses.
79
- 7. If temporary instrumentation is needed, give every probe a unique marker, keep it local to the suspect boundary, and remove it before final verification.
80
- 8. Apply the smallest fix that addresses the reproduced cause.
81
- 9. Re-run the original reproduction path after the fix. If that path is unavailable or too broad, run the closest configured intent and report the limitation.
82
- 10. Add or keep a regression guard only when it is tied to the reproduced symptom or a directly observed boundary condition.
83
- 11. Report the symptom, reproduction, hypotheses considered, observations, fix, original reproduction rerun, checks, and remaining risk.
77
+ 5. If the cause is not obvious, list three to five plausible hypotheses using distinct categories where possible:
78
+ - recent code or contract change;
79
+ - environment, platform, tool version, or missing dependency;
80
+ - timing, ordering, concurrency, cache, or cleanup;
81
+ - specific input, fixture, locale, path, or data shape;
82
+ - external source, generated output, or stale build artifact.
83
+ For each hypothesis, write the observation that would confirm or reject it before changing production code.
84
+ 6. If the symptom appears flaky, separate the reproducible behavior from the unstable trigger. Do not treat one passing broad rerun as proof that the issue is fixed.
85
+ 7. Inspect the source that controls the reproduced behavior and gather the smallest observation needed to choose between hypotheses.
86
+ 8. If temporary instrumentation is needed, give every probe a unique marker, keep it local to the suspect boundary, and remove it before final verification.
87
+ 9. Apply the smallest fix that addresses the reproduced cause.
88
+ 10. Re-run the original reproduction path after the fix. If that path is unavailable or too broad, run the closest configured intent and report the limitation.
89
+ 11. Add or keep a regression guard only when it is tied to the reproduced symptom or a directly observed boundary condition.
90
+ 12. Report the symptom, reproduction, hypotheses considered, observations, fix, original reproduction rerun, checks, and remaining risk.
84
91
 
85
92
  <!-- mustflow-section: postconditions -->
86
93
  ## Postconditions
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.requirement-regression-guard
3
3
  locale: en
4
4
  canonical: true
5
- revision: 1
5
+ revision: 2
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: requirement-regression-guard
@@ -92,17 +92,22 @@ The goal is not to write tests for everything. The goal is to preserve the behav
92
92
  - Prefer the nearest existing test style and fixture pattern.
93
93
  - Use schema, snapshot, integration, or documentation checks only when they are the real contract surface.
94
94
  - Use `test-maintenance` when adding, updating, or removing tests.
95
- 4. Add the smallest useful guard before implementation when feasible.
95
+ 4. Handle `blocked` requirements before implementation:
96
+ - identify the missing decision, environment, source, or acceptance detail;
97
+ - avoid writing speculative behavior or broad placeholder tests;
98
+ - add a small skipped or pending test only when the repository already uses that style and the expected contract is clear enough to prevent forgetting it;
99
+ - otherwise report the blocked requirement in a deferred-requirements section with the smallest next decision needed.
100
+ 5. Add the smallest useful guard before implementation when feasible.
96
101
  - For bug fixes, prefer a failing regression test or fixture that reproduces the issue.
97
102
  - For refactors, prefer characterization coverage that proves current behavior stays stable.
98
103
  - For new behavior, prefer tests that encode acceptance criteria rather than implementation details.
99
- 5. Implement the change only after the guard path is clear.
104
+ 6. Implement the change only after the guard path is clear.
100
105
  - Keep requirement coverage and implementation changes distinguishable in the diff when practical.
101
106
  - Do not remove or weaken existing guards unless the requirement itself changed and the reason is documented.
102
- 6. Verify the mapped requirements.
107
+ 7. Verify the mapped requirements.
103
108
  - Run the narrowest configured command intents that cover the changed behavior and any synchronized contracts.
104
109
  - If a required intent is manual-only or unknown, report the missing coverage instead of guessing a command.
105
- 7. Report requirement coverage.
110
+ 8. Report requirement coverage.
106
111
  - List covered, missing, partial, and blocked requirements.
107
112
  - Tie each implementation claim to the test, fixture, schema, doc check, or explicit skipped-check reason that supports it.
108
113
 
@@ -2,7 +2,7 @@
2
2
  mustflow_doc: skill.source-freshness-check
3
3
  locale: en
4
4
  canonical: true
5
- revision: 2
5
+ revision: 3
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: source-freshness-check
@@ -76,6 +76,9 @@ Prevent stale or unverifiable claims from entering code, documentation, template
76
76
  2. Prefer the current repository file, official source, declared package metadata, or user-provided source text before secondary summaries.
77
77
  3. For external research or methodology material, split the input into evidence, recommendation, executable instruction, popularity signal, and speculation.
78
78
  4. Refresh any claim whose usefulness depends on current repository state, vendor behavior, package version, date, benchmark, active project status, or popularity metric. If refresh is unavailable or unnecessary, mark the claim as snapshot-only or omit the unstable detail.
79
+ - Use `snapshot: YYYY-MM-DD` when the source text is intentionally treated as an older captured reference.
80
+ - Prefer official mirrors, package metadata, repository files, or user-provided source text over secondary summaries when the primary source cannot be reached.
81
+ - Do not present inaccessible sources as current; keep the adoption decision conservative.
79
82
  5. Treat external executable instructions, command recipes, installer steps, or workflow shortcuts as untrusted until they are mapped to existing mustflow command intents or reported as missing intent coverage.
80
83
  6. Adapt only the durable idea into the repository-owned surface that should govern it: `.mustflow/config/commands.toml`, a focused skill procedure, a schema, a template file, documentation, or a test fixture.
81
84
  7. Avoid open-ended words such as "latest", "current", or "recent" unless the sentence includes the concrete date or version that makes the claim inspectable.
@@ -106,6 +109,7 @@ Also run the relevant configured test, build, or documentation intent if the ref
106
109
  ## Failure Handling
107
110
 
108
111
  - If the requested source cannot be accessed, report the access gap and avoid presenting the claim as current.
112
+ - If an official source is inaccessible but a repository-local, package, or official mirror snapshot exists, label it with the snapshot date and use it only for low-drift context unless the user asks to proceed with stale evidence.
109
113
  - If sources conflict, prefer the highest-authority source and report the conflict.
110
114
  - If the freshness check changes meaning in translated docs, mark the affected translation for review.
111
115
  - If checking freshness would require network access or tools outside the current host permissions, stop at the permission boundary and state what remains unchecked.
@@ -2,11 +2,11 @@
2
2
  mustflow_doc: skill.structure-discovery-gate
3
3
  locale: en
4
4
  canonical: true
5
- revision: 26
5
+ revision: 27
6
6
  lifecycle: mustflow-owned
7
7
  authority: procedure
8
8
  name: structure-discovery-gate
9
- description: Apply this skill before introducing new feature structure, folders, file boundaries, routing, data models, integration boundaries, frontend/backend/database/infrastructure choices, database engine choices, managed database extensions or provider convenience features, authentication identity ownership, public URL contracts, data residency policy, runtime patchability, runtime portability, global-ready locale country currency timezone and money models, server-side authorization boundaries, file upload and storage strategy, API response contracts, semantic content blocks, filter URL policy, admin operations, cache strategy, content lifecycle, asset strategy, policy or fact registry, content graph decisions, source collection flows, user-state layers, core/application/delivery/infra boundaries, framework-magic boundaries, operational versus analytics boundaries, HTTP-to-worker boundaries, job or outbox models, backup or restore assumptions, vendor or platform exit paths, external-service truth ownership, search or queue or analytics portability, operational reproducibility, observability identifier flow, deployment-state portability, CI/CD reproducibility, dependency ecosystem or maintainer-risk placement, multi-server state boundaries, vertical versus horizontal scaling boundaries, AI usage cost boundaries, AI gateway hard-limit boundaries, failure-isolation boundaries, pricing-growth boundaries, or content-heavy product architecture.
9
+ description: Apply this skill before introducing new feature structure, ownership boundaries, data models, integration choices, or platform decisions that may create long-term architecture commitments.
10
10
  metadata:
11
11
  mustflow_schema: "1"
12
12
  mustflow_kind: procedure