vernet
Copilot instructions566 starsChanged 13 days agoApache-2.0View on GitHub
Apply these instructions to all work in this repository. They are ranked by recurrence and practical impact across the indexed chat history and repository guidance. Keep changes focused and preserve existing project conventions.
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- android-fastlane-releaseSkill
- close-chatSkill
- firebase-hosting-configSkill
- flutter-feature-iterationSkill
- flutter-test-repairSkill
- github-actions-repository-workflowsSkill
- github-issue-creatorSkill
- github-issue-implementationSkill
- github-project-managerSkill
- project-taskSkill
The file
Show its rules and text
We split this copilot-instructions.md into the rules it gives an agent
73 rules. About 2 are common, 57 are distinctive, and 14 are very specific to this project.
≈2
Common · estimate
Many files like this have a rule of this kind.
≈57
Distinctive · estimate
This author's own choices. Worth a look.
14
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 9
Start from the concrete error, failing test, named file, or requested behavior.
- Distinctive: line 13
Keep each change narrowly scoped to the requested behavior.
- Distinctive: line 15
Follow the repository's existing architecture and local conventions.
- Distinctive: line 16
Do not refactor unrelated code while fixing a targeted problem.
- Distinctive: line 17
Treat user edits and dirty-worktree changes as intentional.
- Distinctive: line 18
Do not commit or create branches unless explicitly requested.
- Distinctive: line 19
Prefer fixing the root cause over masking the symptom.
- Distinctive: line 21
After the first substantive edit, run a focused validation immediately.
- Distinctive: line 22
If validation fails, repair the same slice before expanding the investigation.
- Distinctive: line 23
If validation disproves the hypothesis, move one hop toward the controlling code.
- Distinctive: line 24
Use a neighboring test or call site to resolve ambiguous ownership.
- Distinctive: line 25
Keep the user informed with concise progress updates during longer work.
- Very specific: line 32
Keep primary application logic under lib/.
- Very specific: line 33
Keep UI in lib/pages/ and reusable UI in lib/widgets/.
- Distinctive: line 34
Keep network operations in services, never directly in widgets.
- Very specific: line 36
Keep structured data in lib/models/.
- Very specific: line 37
Keep reusable helpers in lib/utils/.
- Distinctive: line 38
Keep feature state local whenever possible.
- Very specific: line 39
Prefer Provider, scoped state, or simple StatefulWidget state already used nearby.
- Distinctive: line 40
Avoid introducing global mutable state.
- Distinctive: line 41
Keep services independent of UI dependencies.
- Distinctive: line 44
Keep functions small and focused.
- Distinctive: line 45
Prefer composition over duplication.
- Distinctive: line 46
Add a model when a result has multiple related fields or lifecycle states.
- Distinctive: line 47
Keep platform-specific changes isolated to the relevant platform directory.
- Distinctive: line 48
Avoid editing Android, iOS, Linux, macOS, or Windows glue unless necessary.
- Distinctive: line 49
Use plugins and platform channels through their established abstraction.
- Very specific: line 50
Read ARCHITECTURE.md before structural changes.
- Distinctive: line 51
Keep new network tools organized as page, service, model, and tests.
- Distinctive: line 55
Read the complete stack trace and locate the first project-owned frame.
- Distinctive: line 56
Verify dependency APIs against the installed package version before changing callers.
- Distinctive: line 57
Use the dependency's expected types and serialization formats exactly.
- Very specific: line 58
Do not infer a package object's identifier from toString() when a typed property exists.
- Distinctive: line 62
Use UTC or another explicit fallback for missing timezone data.
- Common: line 63
Do not hide a real initialization error behind a broad catch without logging or rationale.
- Distinctive: line 64
Keep fallback behavior observable and testable.
- Very specific: line 65
Prefer lightweight dependencies already present in pubspec.yaml.
- Distinctive: line 66
Avoid adding a package when the existing SDK or repository helper is sufficient.
- Distinctive: line 67
Check cross-platform compatibility before adding or changing a dependency.
- Distinctive: line 68
Keep dependency lockfile changes limited to dependency changes.
- Distinctive: line 69
Never edit generated files by hand unless the project workflow requires it.
- Distinctive: line 71
Treat SQLite locking as a lifecycle and concurrency problem first.
- Distinctive: line 72
Ensure database handles, statements, and transactions are closed or awaited correctly.
- Distinctive: line 73
Avoid overlapping database initialization and test cleanup operations.
- Distinctive: line 78
Add or update a focused regression test for every behavior fix when practical.
- Distinctive: line 79
Run the narrowest relevant test before the full suite.
- Very specific: line 80
Use flutter test path/to/test.dart for a focused unit or widget test.
- Distinctive: line 81
Use the repository's actual integration-test command rather than a guessed command.
- Distinctive: line 84
Use an explicit testing flag or injected fake for external network behavior.
- Distinctive: line 85
Do not make production behavior depend on test-only assumptions.
- Distinctive: line 87
Test plugin-unavailable paths without requiring a native plugin implementation.
- Distinctive: line 88
Test notification and timezone setup with valid typed identifiers.
- Distinctive: line 89
Test reverse DNS with a stable fixture when external resolution is not the subject.
- Distinctive: line 90
Keep integration tests focused on user-visible workflows.
- Distinctive: line 92
Avoid parallel test work that can contend for the same SQLite database.
- Distinctive: line 93
Add coverage tests around parsing and conversion logic rather than native calls.
- Very specific: line 94
Use const fixtures where the analyzer recommends them and they are valid.
- Distinctive: line 96
Run the analyzer after test or production edits that affect types or APIs.
- Distinctive: line 97
Do not claim a platform test passed when the required SDK or device is unavailable.
- Very specific: line 101
Run flutter analyze after a coherent set of Dart changes.
- Common: line 102
Treat analyzer warnings as actionable unless there is a documented exception.
- Distinctive: line 106
Check available Flutter devices before attempting integration tests.
- Very specific: line 107
Check for required native tooling such as xcodebuild before macOS or iOS tests.
- Distinctive: line 108
If a platform cannot run locally, validate the platform-independent code and say what remains.
- Very specific: line 110
Use rg for repository searches and include the relevant path scope.
- Distinctive: line 111
Use package-cache inspection only to confirm an installed API or implementation detail.
- Distinctive: line 112
Do not use invalid command flags.
- Distinctive: line 113
Keep terminal commands noninteractive unless interaction is genuinely required.
- Distinctive: line 114
Stop and report when a command needs unavailable credentials, SDKs, or devices.
- Distinctive: line 115
Prefer one focused validation command over a broad command with noisy unrelated failures.
- Distinctive: line 122
Avoid speculative claims, unnecessary verbosity, and unrelated recommendations.
- Distinctive: line 123
Leave the code clearer, testable, analyzer-clean, and consistent with the existing project.
- Very specific: line 136
If graphify-out/wiki/index.md exists, use it for broad navigation.
≈ “Common” is an estimate: at least 1 in 5 of the 3,779 Copilot instructions 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
Vernet Copilot Instructions
Apply these instructions to all work in this repository. They are ranked by recurrence and practical impact across the indexed chat history and repository guidance. Keep changes focused and preserve existing project conventions.
Workflow and Scope
- Start from the concrete error, failing test, named file, or requested behavior.
- Inspect the smallest nearby code path that controls the behavior before editing.
- State one falsifiable hypothesis about the failure before making a change.
- Identify one cheap validation check that could disprove the hypothesis.
- Keep each change narrowly scoped to the requested behavior.
- Preserve existing public APIs unless the request requires a contract change.
- Follow the repository's existing architecture and local conventions.
- Do not refactor unrelated code while fixing a targeted problem.
- Treat user edits and dirty-worktree changes as intentional; never discard them.
- Do not commit or create branches unless explicitly requested.
- Prefer fixing the root cause over masking the symptom.
- Make the smallest reversible edit that can test the current hypothesis.
- After the first substantive edit, run a focused validation immediately.
- If validation fails, repair the same slice before expanding the investigation.
- If validation disproves the hypothesis, move one hop toward the controlling code.
- Use a neighboring test or call site to resolve ambiguous ownership.
- Keep the user informed with concise progress updates during longer work.
- Finish the task end to end when the environment permits it.
- Report blockers plainly instead of implying that unrun checks passed.
- Summarize changed files, verification, and remaining limitations at the end. When asked to close or wrap up a chat, use
.github/skills/close-chat/SKILL.mdto record only durable, verified context and update relevant guidance.
Flutter Architecture
- Keep primary application logic under
lib/. - Keep UI in
lib/pages/and reusable UI inlib/widgets/. - Keep network operations in services, never directly in widgets.
- Route feature actions through the UI, provider/controller, and service layers.
- Keep structured data in
lib/models/. - Keep reusable helpers in
lib/utils/. - Keep feature state local whenever possible.
- Prefer Provider, scoped state, or simple
StatefulWidgetstate already used nearby. - Avoid introducing global mutable state.
- Keep services independent of UI dependencies.
- Make services reusable across screens and platforms.
- Return structured models from services instead of presentation strings.
- Keep functions small and focused.
- Prefer composition over duplication.
- Add a model when a result has multiple related fields or lifecycle states.
- Keep platform-specific changes isolated to the relevant platform directory.
- Avoid editing Android, iOS, Linux, macOS, or Windows glue unless necessary.
- Use plugins and platform channels through their established abstraction.
- Read
ARCHITECTURE.mdbefore structural changes. - Keep new network tools organized as page, service, model, and tests.
Errors and Dependencies
- Read the complete stack trace and locate the first project-owned frame.
- Verify dependency APIs against the installed package version before changing callers.
- Use the dependency's expected types and serialization formats exactly.
- Do not infer a package object's identifier from
toString()when a typed property exists. - Handle plugin initialization explicitly on platforms where it may be unavailable.
- Guard platform plugin calls in tests and unsupported environments.
- Provide a documented, deterministic fallback when an external service is unavailable.
- Use UTC or another explicit fallback for missing timezone data.
- Do not hide a real initialization error behind a broad catch without logging or rationale.
- Keep fallback behavior observable and testable.
- Prefer lightweight dependencies already present in
pubspec.yaml. - Avoid adding a package when the existing SDK or repository helper is sufficient.
- Check cross-platform compatibility before adding or changing a dependency.
- Keep dependency lockfile changes limited to dependency changes.
- Never edit generated files by hand unless the project workflow requires it.
- Regenerate generated artifacts with the repository's prescribed command.
- Treat SQLite locking as a lifecycle and concurrency problem first.
- Ensure database handles, statements, and transactions are closed or awaited correctly.
- Avoid overlapping database initialization and test cleanup operations.
- Reproduce database failures with the smallest relevant test or command.
Testing
- Add or update a focused regression test for every behavior fix when practical.
- Run the narrowest relevant test before the full suite.
- Use
flutter test path/to/test.dartfor a focused unit or widget test. - Use the repository's actual integration-test command rather than a guessed command.
- Separate unit, widget, and integration-test claims in the final report.
- Make tests deterministic and independent of live DNS, network timing, or host state.
- Use an explicit testing flag or injected fake for external network behavior.
- Do not make production behavior depend on test-only assumptions.
- Cover success, failure, fallback, and unsupported-platform branches.
- Test plugin-unavailable paths without requiring a native plugin implementation.
- Test notification and timezone setup with valid typed identifiers.
- Test reverse DNS with a stable fixture when external resolution is not the subject.
- Keep integration tests focused on user-visible workflows.
- Reset test databases before and after tests when the suite expects a clean store.
- Avoid parallel test work that can contend for the same SQLite database.
- Add coverage tests around parsing and conversion logic rather than native calls.
- Use
constfixtures where the analyzer recommends them and they are valid. - Re-run the exact failing test after each local repair.
- Run the analyzer after test or production edits that affect types or APIs.
- Do not claim a platform test passed when the required SDK or device is unavailable.
Verification and Diagnostics
- Run
flutter analyzeafter a coherent set of Dart changes. - Treat analyzer warnings as actionable unless there is a documented exception.
- Confirm fresh command output rather than relying on an earlier run.
- Capture the exact command and result for every verification claim.
- Distinguish test failures from environment or toolchain failures.
- Check available Flutter devices before attempting integration tests.
- Check for required native tooling such as
xcodebuildbefore macOS or iOS tests. - If a platform cannot run locally, validate the platform-independent code and say what remains.
- Reproduce CI failures locally only after identifying the closest matching command.
- Use
rgfor repository searches and include the relevant path scope. - Use package-cache inspection only to confirm an installed API or implementation detail.
- Do not use invalid command flags; verify the command's help or use the repository's tooling.
- Keep terminal commands noninteractive unless interaction is genuinely required.
- Stop and report when a command needs unavailable credentials, SDKs, or devices.
- Prefer one focused validation command over a broad command with noisy unrelated failures.
Communication and Code Quality
- Explain the cause and behavior change in plain engineering language.
- Link changed workspace files using their repository-relative paths.
- Mention important limitations, especially platform coverage and unavailable tooling.
- Avoid speculative claims, unnecessary verbosity, and unrelated recommendations.
- Leave the code clearer, testable, analyzer-clean, and consistent with the existing project.
graphify
For any question about this repo's architecture, structure, components, or how to add/modify/find
code, your first action should be graphify query "<question>" when graphify-out/graph.json
exists. Use graphify path "<A>" "<B>" for relationship questions and graphify explain "<concept>"
for focused-concept questions. These return a scoped subgraph, usually much smaller than the full
report or raw grep output.
Triggers: "how do I…", "where is…", "what does … do", "add/modify a <component>",
"explain the architecture", or anything that depends on how files or classes relate.
If graphify-out/wiki/index.md exists, use it for broad navigation. Read graphify-out/GRAPH_REPORT.md
only for broad architecture review or when query/path/explain do not surface enough context. Only read
source files when (a) modifying/debugging specific code, (b) the graph lacks the needed detail, or
(c) the graph is missing or stale.
Type /graphify in Copilot Chat to build or update the graph.
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.

