flutter-lints-static-analysis-engineering
Skill8 starsChanged 48 days agoMITView on GitHub
Configure, review, migrate, debug, and enforce Flutter/Dart static analysis with flutter_lints, analysis_options.yaml, analyzer strict modes, generated-code policy, CI gates, monorepos, dart fix, and lint-rule governance. Use this skill whenever a Flutter/Dart task mentions flutter_lints, analyzer warnings, flutter analyze, analysis_options.yaml, strict-casts/inference/raw-types, lint debt, generated-code ignores, CI analysis failures, SDK/lint upgrades, or deciding which lints to enable—even when the user only asks to “fix the lints” or improve code quality.
In this repository70 other files it gives its agents.
- camerawesome-flutterSkill
- dart-args-production-cliSkill
- dart-flutter-equatable-engineeringSkill
- dart-flutter-ffi-systems-engineeringSkill
- dart-metaSkill
- document-camera-frameSkill
- document-scan-flutterSkill
- figma-to-flutter-expertSkill
- flutter-animations-production-engineeringSkill
- flutter-app-hardening-reverse-engineeringSkill
- flutter-app-icon-engineeringSkill
- flutter-application-security-engineeringSkill
- flutter-app-links-deep-link-engineeringSkill
- flutter-cachingSkill
- flutter-concurrency-memory-performanceSkill
- flutter-confetti-engineeringSkill
- flutter-dart-package-engineeringSkill
- flutter-design-system-from-design-mdSkill
- flutter-dio-cache-interceptor-engineeringSkill
- flutter-dio-engineeringSkill
- flutter-doc-scannerSkill
- flutter-drift-persistence-engineeringSkill
- flutter-expert-tipsSkill
- flutter-firebase-analyticsSkill
- flutter-firebase-core-engineeringSkill
- flutter-firebase-messagingSkill
- flutter-get-it-injectable-dependency-injectionSkill
- flutter-go-router-engineeringSkill
- flutter-hive-persistence-engineeringSkill
- flutter-image-performanceSkill
- flutter-image-picker-production-engineeringSkill
- flutter-local-notifications-production-engineeringSkill
- flutter-memory-leak-engineeringSkill
- flutter-mobile-developmentSkill
- flutter-motion-engineeringSkill
- flutter-multi-environmentSkill
- flutter-native-splash-engineeringSkill
- flutter-package-plugin-selectionSkill
- flutter-path-provider-production-storageSkill
- flutter-performance-jank-optimizationSkill
- flutter-permission-handler-engineeringSkill
- flutter-pinputSkill
- flutter-production-build-releaseSkill
- flutter-production-engineeringSkill
- flutter-production-loggingSkill
- flutter-pro-image-editor-engineeringSkill
- flutter-secure-storage-security-engineeringSkill
- flutter-sentry-engineeringSkill
- flutter-share-plus-engineeringSkill
- flutter-skeletonizer-engineeringSkill
- flutter-squadron-concurrency-engineeringSkill
- flutter-supabase-engineeringSkill
- flutter-svg-engineeringSkill
- flutter-ui-performance-engineeringSkill
- flutter-url-launcher-engineeringSkill
- flutter-video-player-production-engineeringSkill
- flutter-webview-production-engineeringSkill
- freezed-production-engineeringSkill
- html-to-flutterSkill
- hydrated-blocSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
77 rules. About 0 are common, 57 are distinctive, and 20 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈57
Distinctive · estimate
This author's own choices. Worth a look.
20
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 8
Treat static analysis as an engineering-quality system, not a rule-count competition.
- Distinctive: line 20
Start with the official compatible Flutter lint baseline, inspect the effective configuration, then add or remove policy only when the …
- Very specific: line 34
Read references/01-baseline-effective-rules.md for what flutter_lints does, the current baseline, effective/transitive rule-set resolution, …
- Very specific: line 35
Read references/02-analyzer-strictness-generated.md for analyzer configuration, exclusions, severities, strict-casts, strict-inference, …
- Very specific: line 36
Read references/03-repository-ci-tooling.md for app/package/test/example differences, monorepos, Pub workspaces, shared configs, analyzer …
- Very specific: line 37
Read references/04-rule-selection-migration-debugging.md for rule selection, async/resource/API/style rules, signal-to-noise, …
- Very specific: line 38
Read references/05-antipatterns-workflows-checklists.md for the full anti-pattern catalog, new/existing-project workflows, lint-adoption …
- Distinctive: line 40
When exact version behavior matters, verify the repository's installed SDK/package graph instead of assuming the bundled baseline is still …
- Very specific: line 42
Prefer the official compatible flutter_lints configuration as the starting point.
- Very specific: line 43
Keep analysis_options.yaml version-controlled and review changes as repository policy changes.
- Distinctive: line 46
Use local suppression for genuine local exceptions.
- Distinctive: line 47
Keep generated-code ownership explicit.
- Distinctive: line 48
Keep tests and examples analyzed unless there is a deliberate, documented exception.
- Distinctive: line 49
Do not exclude production code to make analysis faster or green.
- Distinctive: line 50
Treat SDK/lint upgrades as migrations, not dependency bumps.
- Distinctive: line 51
Keep IDE and CI toolchains aligned.
- Distinctive: line 53
Prefer a smaller trusted rule set over a large ignored one.
- Distinctive: line 55
Follow this sequence for every static-analysis task.
- Very specific: line 80
Do not infer the effective rule set from the top-level flutter_lints constraint alone.
- Distinctive: line 96
If multiple includes are used, preserve their order intentionally.
- Distinctive: line 98
Do not duplicate inherited rules manually unless a local override requires explicit map syntax.
- Very specific: line 109
Do not respond to every diagnostic by changing linter.rules.
- Very specific: line 118
Do not invent a separate configurable hint severity.
- Distinctive: line 124
Add a compatible dev dependency according to the repository's SDK and dependency policy.
- Distinctive: line 126
Do not copy a historical Flutter template or a random 150-rule internet configuration.
- Distinctive: line 128
Before enabling a lint manually, answer:
- Distinctive: line 144
Treat these as analyzer language modes, not lints:
- Distinctive: line 154
Use this decision logic:
- Very specific: line 159
Do not assume strict_top_level_inference means analyzer strict-inference is already enabled.
- Distinctive: line 171
Avoid turning strict-mode adoption into hundreds of suppressions.
- Distinctive: line 184
Prefer rules that catch likely incorrect behavior or unsafe async/type patterns over purely aesthetic preferences.
- Very specific: line 188
Use dart format for formatting.
- Distinctive: line 194
Do not add style lints solely to fight current formatter behavior.
- Very specific: line 196
If using modern formatter configuration in analysis_options.yaml, ensure the repository's Dart language version supports those options.
- Distinctive: line 198
Use narrow ignores only after understanding the diagnostic.
- Distinctive: line 206
Use file-level ignores only when the entire file truly follows different policy.
- Distinctive: line 214
If the repository has many ignores, consider enabling governance rules such as stale-ignore detection or documented-ignore requirements …
- Distinctive: line 217
Analyze normally: when generated output is owned, published, or generator correctness should be checked.
- Distinctive: line 219
Suppress lints but preserve analyzer diagnostics: when generated code should remain type-correct but style policy is irrelevant.
- Distinctive: line 221
Exclude narrowly: only when vendor/generated output is intentionally outside analyzer ownership or measured cost/noise justifies losing …
- Distinctive: line 223
Never hand-edit generated output to silence diagnostics when regeneration will overwrite the fix.
- Very specific: line 233
Treat package example/ code as executable documentation and analyze it where practical.
- Distinctive: line 235
Do not impose package-authoring documentation policy on every private app class without a reason.
- Very specific: line 245
Do not create identical analysis_options.yaml files in every package.
- Distinctive: line 247
Use package-local policy only when package roles genuinely differ.
- Distinctive: line 249
Consider Pub workspaces when shared dependency resolution is appropriate.
- Distinctive: line 251
Verify CI actually analyzes every intended Flutter and pure Dart package.
- Distinctive: line 272
Do not claim linting replaces tests.
- Distinctive: line 295
read relevant changelogs/release notes when current verification is available.
- Distinctive: line 296
update only to a compatible version.
- Distinctive: line 299
run analysis before auto-fixing.
- Very specific: line 304
remove obsolete rules/overrides/ignores.
- Distinctive: line 306
commit policy and migration together.
- Distinctive: line 308
Do not leave obsolete lint names in configuration after the toolchain no longer recognizes them.
- Distinctive: line 312
Do not normalize thousands of warnings/infos indefinitely.
- Distinctive: line 314
If existing debt is large:
- Distinctive: line 325
When a lint is unknown, unexpectedly active, or unexpectedly absent, inspect:
- Distinctive: line 335
When IDE and CI disagree, compare the exact SDK, lockfile, working directory, generated files, and command-line analysis before changing …
- Distinctive: line 337
When analyzer performance is poor, investigate workspaces, analysis contexts, generated roots, symlinks, plugins, dependency graph, file …
- Distinctive: line 341
Use package boundaries, architecture tests, review, or modern analyzer plugins only when the constraint is stable and machine-checkable.
- Distinctive: line 351
Do not claim that enabling more lints makes a release binary faster.
- Distinctive: line 376
When the user asks for a lint/static-analysis review, report:
- Distinctive: line 398
Before completing a configuration or migration:
- Very specific: line 399
ensure the selected flutter_lints version is SDK-compatible.
- Distinctive: line 401
ensure include paths resolve.
- Distinctive: line 402
ensure no unknown/removed lint names remain.
- Distinctive: line 403
verify strict modes are intentional.
- Distinctive: line 404
verify excludes are narrow.
- Distinctive: line 405
verify ignores are justified.
- Distinctive: line 406
verify generated-code handling is reproducible.
- Distinctive: line 408
run the repository's formatter check if enforced.
- Very specific: line 409
run flutter analyze for Flutter targets.
- Distinctive: line 410
run appropriate Dart analysis for pure Dart packages.
- Distinctive: line 412
verify CI uses the same toolchain/configuration.
- Very specific: line 414
Do not declare success because analysis_options.yaml parses.
- Distinctive: line 421
no stale/removed rules remain.
- Very specific: line 434
Use flutter_lints as the official high-signal baseline, then add only rules whose engineering value justifies their migration and noise …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Flutter Lints & Static Analysis Engineering
Mission
Treat static analysis as an engineering-quality system, not a rule-count competition.
Optimize for:
- correctness;
- type safety;
- maintainability;
- diagnostic signal;
- migration safety;
- CI reliability;
- understandable repository policy;
- analyzer performance only after coverage is correct.
Start with the official compatible Flutter lint baseline, inspect the effective configuration, then add or remove policy only when the engineering value is clear.
Do not equate:
dart format
!= flutter_lints
!= flutter analyze
!= flutter test
!= runtime correctness
!= security
!= runtime performanceReference routing
Load detailed references only when needed:
- Read
references/01-baseline-effective-rules.mdfor whatflutter_lintsdoes, the current baseline, effective/transitive rule-set resolution, includes, inheritance, overrides, and analyzer/lint mental models. - Read
references/02-analyzer-strictness-generated.mdfor analyzer configuration, exclusions, severities,strict-casts,strict-inference,strict-raw-types, ignore governance, and generated-code policy. - Read
references/03-repository-ci-tooling.mdfor app/package/test/example differences, monorepos, Pub workspaces, shared configs, analyzer plugins, CI,flutter analyze,dart analyze, formatter,dart fix, and IDE alignment. - Read
references/04-rule-selection-migration-debugging.mdfor rule selection, async/resource/API/style rules, signal-to-noise, deprecated/removed rules, lint debt, upgrade workflows, analyzer performance, architecture/security boundaries, and debugging. - Read
references/05-antipatterns-workflows-checklists.mdfor the full anti-pattern catalog, new/existing-project workflows, lint-adoption workflow, review rules, and production checklists.
When exact version behavior matters, verify the repository's installed SDK/package graph instead of assuming the bundled baseline is still current.
Non-negotiable engineering principles
- Prefer the official compatible
flutter_lintsconfiguration as the starting point. - Keep
analysis_options.yamlversion-controlled and review changes as repository policy changes. - Inspect inherited and transitive policy before manually adding rules.
- Fix code before suppressing diagnostics when the diagnostic is valid.
- Use local suppression for genuine local exceptions; use global policy changes only when the team rejects the rule globally.
- Keep generated-code ownership explicit; never hand-edit generated output merely to satisfy analysis.
- Keep tests and examples analyzed unless there is a deliberate, documented exception.
- Do not exclude production code to make analysis faster or green.
- Treat SDK/lint upgrades as migrations, not dependency bumps.
- Keep IDE and CI toolchains aligned.
- Prevent new lint debt while legacy debt is being removed.
- Prefer a smaller trusted rule set over a large ignored one.
Required workflow
Follow this sequence for every static-analysis task.
1. Inspect the repository before editing policy
Record:
Flutter SDK version
Dart SDK version
flutter_lints declared version
flutter_lints resolved version
lints resolved version
analysis_options.yaml locations
nested analysis_options.yaml files
pubspec / workspace structure
CI analysis commands
generated-code workflow
current diagnosticsUseful commands include:
flutter --version
dart --version
flutter pub deps
flutter analyzeFor pure Dart packages, use the repository's Dart-specific analysis command instead.
Do not infer the effective rule set from the top-level flutter_lints constraint alone. Its transitive lints dependency can change the inherited rule set within an allowed version range.
2. Find the actual policy chain
Resolve configuration in precedence order:
package:flutter_lints/flutter.yaml
↓
shared organization config, if any
↓
root analysis_options.yaml
↓
package/subtree analysis_options.yaml
↓
local analyzer/linter overrides
↓
source ignore directivesIf multiple includes are used, preserve their order intentionally; later configuration can override earlier configuration.
Do not duplicate inherited rules manually unless a local override requires explicit map syntax.
3. Classify each diagnostic correctly
Determine whether it comes from:
- Dart language/type rules;
- analyzer diagnostics;
- linter diagnostics;
- formatter changes;
- generated-code incompatibility;
- analyzer plugin diagnostics;
- deprecated/removed API use.
Do not respond to every diagnostic by changing linter.rules.
Current analyzer severity policy uses:
info
warning
error
ignoreDo not invent a separate configurable hint severity.
4. Establish the baseline
For a modern Flutter repository, prefer a minimal baseline:
include: package:flutter_lints/flutter.yamlAdd a compatible dev dependency according to the repository's SDK and dependency policy.
Do not copy a historical Flutter template or a random 150-rule internet configuration.
5. Inspect effective rule membership before adding rules
Before enabling a lint manually, answer:
- Is it already inherited from
flutter_lints? - Is it inherited transitively from
package:lints? - Is it already enforced as an analyzer/language diagnostic?
- Is the rule still stable, deprecated, removed, or merely absent from Flutter defaults?
Do not confuse:
not in flutter_lintswith:
removed from DartA valid optional lint may simply no longer be part of the official Flutter baseline.
6. Evaluate strict analyzer modes independently
Treat these as analyzer language modes, not lints:
analyzer:
language:
strict-casts: true
strict-inference: true
strict-raw-types: trueAdopt each independently.
Use this decision logic:
strict-casts: strong candidate when dynamic data is isolated at typed boundaries.strict-inference: valuable when failed inference silently becomesdynamic; migration can be noisy in generic/legacy code.strict-raw-types: valuable when raw generic types erode type information.
Do not assume strict_top_level_inference means analyzer strict-inference is already enabled; they are different mechanisms.
For legacy repositories:
measure violations
→ enable one mode
→ fix typed core
→ isolate dynamic boundaries
→ update generators
→ enforce clean CI
→ consider next modeAvoid turning strict-mode adoption into hundreds of suppressions.
7. Add project-specific rules only after a value/noise review
For every candidate rule, document:
Problem caught:
Affected scope:
Existing violation count:
False-positive/noise rate:
Automated fix availability:
Migration cost:
Long-term value:
Why formatter/tests/review are insufficient:Prefer rules that catch likely incorrect behavior or unsafe async/type patterns over purely aesthetic preferences.
Possible high-value candidates in some repositories include Future-handling, ignore-governance, or resource-lifecycle rules, but do not enable them automatically.
8. Keep formatting policy separate
Use dart format for formatting.
Typical CI check:
dart format -o none --set-exit-if-changed .Do not add style lints solely to fight current formatter behavior.
If using modern formatter configuration in analysis_options.yaml, ensure the repository's Dart language version supports those options.
9. Govern ignores explicitly
Use narrow ignores only after understanding the diagnostic.
Preferred exception pattern:
// Rationale explaining why the normal fix is inappropriate here.
// ignore: diagnostic_name
someCode();Use file-level ignores only when the entire file truly follows different policy.
Reserve:
// ignore_for_file: type=lintprimarily for generated boundaries where suppressing lints is intentional.
If the repository has many ignores, consider enabling governance rules such as stale-ignore detection or documented-ignore requirements after measuring migration cost.
10. Choose an explicit generated-code policy
Choose one strategy per generated-code family: Analyze normally when generated output is owned, published, or generator correctness should be checked.
Suppress lints but preserve analyzer diagnostics when generated code should remain type-correct but style policy is irrelevant.
Exclude narrowly only when vendor/generated output is intentionally outside analyzer ownership or measured cost/noise justifies losing diagnostics.
Never hand-edit generated output to silence diagnostics when regeneration will overwrite the fix.
Change the source annotations, generator, template, version, or analysis boundary instead.
11. Keep app/package/test/example policy intentional
For applications, prioritize correctness, type safety, async/lifecycle safety, and maintainability.
For published packages/plugins, additionally review public API quality, documentation, dependency boundaries, and deprecation policy.
Analyze tests by default. Tests can contain real type/async/resource bugs.
Treat package example/ code as executable documentation and analyze it where practical.
Do not impose package-authoring documentation policy on every private app class without a reason.
12. Design monorepo policy for discoverability
Prefer:
root baseline
↓
small shared organization policy, if justified
↓
rare package-specific overrideDo not create identical analysis_options.yaml files in every package.
Use package-local policy only when package roles genuinely differ.
Consider Pub workspaces when shared dependency resolution is appropriate; they can reduce duplicated analyzer contexts in large repositories.
Verify CI actually analyzes every intended Flutter and pure Dart package.
13. Enforce analysis in CI
For Flutter packages/apps, prefer:
flutter analyzeFor pure Dart packages, use:
dart analyzeand add --fatal-infos when a zero-info policy is intended.
A typical Flutter quality pipeline is:
dependency resolution
→ generated code, if required
→ format check, if policy requires it
→ flutter analyze
→ tests
→ build/integration validationDo not claim linting replaces tests.
14. Use dart fix as a reviewed migration tool
Use:
dart fix --dry-run
dart fix --applyWorkflow:
clean git state
→ dry run
→ inspect fix categories
→ apply
→ review diff
→ format
→ analyze
→ testReview behavior-sensitive rewrites involving async flow, null handling, deprecated APIs, collection semantics, or generated code.
15. Treat lint/SDK upgrades as migrations
Before upgrading:
- record Flutter/Dart versions;
- record resolved
flutter_lintsandlints; - read relevant changelogs/release notes when current verification is available;
- update only to a compatible version;
- resolve dependencies;
- inspect the new resolved
lintsversion; - run analysis before auto-fixing;
- group new diagnostics by source/rule;
- review
dart fix --dry-run; - fix architectural cases manually;
- regenerate generated code when needed;
- remove obsolete rules/overrides/ignores;
- format and test;
- commit policy and migration together.
Do not leave obsolete lint names in configuration after the toolchain no longer recognizes them.
16. Keep a zero-diagnostic policy only if the suite is trusted
A mature repository should normally aim for clean analysis.
Do not normalize thousands of warnings/infos indefinitely.
If existing debt is large:
inventory by rule
→ rank by correctness/value
→ freeze new violations
→ migrate one category
→ enable clean gate for that category
→ repeatA low-signal suite teaches developers to ignore high-value diagnostics.
17. Debug configuration before suppressing symptoms
When a lint is unknown, unexpectedly active, or unexpectedly absent, inspect:
- SDK versions;
- resolved
flutter_lintsandlints; - rule spelling/status;
- include chain/order;
- nested options files;
- local rule overrides;
- analyzer root/workspace;
- plugin diagnostics.
When IDE and CI disagree, compare the exact SDK, lockfile, working directory, generated files, and command-line analysis before changing policy.
When analyzer performance is poor, investigate workspaces, analysis contexts, generated roots, symlinks, plugins, dependency graph, file I/O, and analyzer diagnostics before excluding useful source.
18. Keep architecture, security, and runtime performance as separate gates
Static analysis can support architecture indirectly through type/import/API rules, but it does not automatically enforce application layering.
Use package boundaries, architecture tests, review, or modern analyzer plugins only when the constraint is stable and machine-checkable.
Static analysis does not replace:
- secret scanning;
- dependency vulnerability scanning;
- authorization tests;
- cryptographic/security review;
- runtime profiling;
- performance benchmarks.
Do not claim that enabling more lints makes a release binary faster.
High-value decision tables
Suppression decision
| Situation | Preferred action |
| Diagnostic is valid | Fix code |
| One deliberate exception | Narrow local ignore with rationale |
| Whole generated family has style-only noise | Generator-emitted type=lint suppression |
| Rule is globally unsuitable | Explicit project-wide override |
| Rule causes large debt but is valuable | Stage migration; freeze new violations |
| Rule name is unknown | Verify SDK/rule status; do not suppress blindly |
Generated-code decision
| Situation | Preferred policy |
| Generated public/owned code | Analyze normally |
| Type correctness matters, style does not | Suppress lints, keep analyzer diagnostics |
| Vendor/unowned output outside responsibility | Narrow exclusion may be justified |
| Generator emits invalid Dart | Fix generator/version/input, not output manually |
Strict-mode decision
| Setting | Main purpose | Default approach |
strict-casts | Reject implicit downcasts from dynamic | Strong candidate for typed modern code |
strict-inference | Flag inference failures that become dynamic | Adopt after measuring generic/legacy noise |
strict-raw-types | Require generic type arguments | Usually valuable; stage legacy migration |
Required output when reviewing a repository
When the user asks for a lint/static-analysis review, report:
- Toolchain — Flutter, Dart,
flutter_lints, resolvedlints. - Effective policy — includes, nested configs, strict modes, overrides, plugins.
- Diagnostic inventory — grouped by source/rule and severity.
- High-risk issues — correctness/type/async/lifecycle issues first.
- Policy problems — stale rules, broad ignores/excludes, duplicate config, SDK drift.
- Generated-code strategy — analyze/suppress/exclude and why.
- Recommended changes — smallest justified set, ordered by value.
- Migration plan — including
dart fixonly where appropriate. - CI gates — exact commands and fatality policy.
- Validation — analyzer, formatter, tests, and package/build checks relevant to the repository.
Separate:
source-observed factfrom:
recommended policy changewhen reviewing an existing codebase.
Validation gate
Before completing a configuration or migration:
- ensure the selected
flutter_lintsversion is SDK-compatible; - confirm the resolved
lintsversion; - ensure include paths resolve;
- ensure no unknown/removed lint names remain;
- verify strict modes are intentional;
- verify excludes are narrow;
- verify ignores are justified;
- verify generated-code handling is reproducible;
- regenerate code if the project requires it;
- run the repository's formatter check if enforced;
- run
flutter analyzefor Flutter targets; - run appropriate Dart analysis for pure Dart packages;
- run tests independently;
- verify CI uses the same toolchain/configuration.
Do not declare success because analysis_options.yaml parses. Validate the effective repository behavior.
Production definition of done
Static-analysis work is complete only when:
- the effective policy is known rather than guessed;
- the official compatible Flutter baseline is inherited;
- additions solve explicit engineering problems;
- disabled rules have deliberate rationale;
- no stale/removed rules remain;
- strict modes are intentional and sustainable;
- generated-code policy is explicit;
- production source is not broadly excluded;
- ignores are narrow and stale ignores are removed;
- tests/examples are analyzed where appropriate;
- monorepo/package scopes are correct;
- IDE and CI toolchains are aligned;
- CI enforces the intended diagnostic levels;
- analysis remains high-signal;
- analyzer-performance changes did not weaken coverage without evidence;
- runtime correctness, security, and performance remain covered by their own validation systems.
Final rule
Use flutter_lints as the official high-signal baseline, then add only rules whose engineering value justifies their migration and noise cost.
The goal is not to maximize diagnostics. The goal is to make important problems difficult to miss while keeping the policy trusted, explainable, and maintainable.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

