Skip to content

Commit b7ae505

Browse files
committed
Add Copilot instructions for Ionide.ProjInfo project
1 parent 22c3e3f commit b7ae505

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

.github/copilot-instructions.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Copilot Instructions for Ionide.ProjInfo
2+
3+
## Project Overview
4+
- **Ionide.ProjInfo** is a set of F# libraries and tools for parsing and evaluating `.fsproj` and `.sln` files, used by F# tooling (e.g., Ionide, FSAC, Fable, FSharpLint).
5+
- Major components:
6+
- `Ionide.ProjInfo`: Core project/solution parsing logic (uses Microsoft.Build APIs).
7+
- `Ionide.ProjInfo.FCS`: Maps project data to FSharp.Compiler.Service types.
8+
- `Ionide.ProjInfo.ProjectSystem`: High-level project system for editor tooling (change tracking, notifications, caching).
9+
- `Ionide.ProjInfo.Tool`: CLI for debugging project cracking.
10+
11+
## Build & Test Workflows
12+
- **Restore tools:** `dotnet tool restore`
13+
- **Build solution:** `dotnet build ionide-proj-info.sln`
14+
- **Run all tests:** `dotnet run --project build -- Test`
15+
- **Multi-TFM testing:**
16+
- For specific TFM:
17+
- LTS (net8.0) `dotnet run --project build -- Test:net8.0`
18+
- STS (net9.0) `dotnet run --project build -- Test:net9.0`
19+
20+
- **Test assets:** Test projects in `test/examples/` cover a wide range of real-world project structures (multi-TFM, C#/F#, old/new SDK, solution filters, etc.).
21+
22+
## Key Patterns & Conventions
23+
- **Project loading:** Prefer using the MSBuild loader; use `--graph` for graph-based loading in CLI tool.
24+
- **Output formats:** CLI tool supports structured text, FCS options (`--fcs`), or JSON (`--serialize`).
25+
- **Cross-language:** Handles both F# and C# projects/references.
26+
- **Persistent caching:** ProjectSystem caches data for fast reloads.
27+
- **Testing:** Uses Expecto for tests; see `test/Ionide.ProjInfo.Tests/` for patterns.
28+
- **Release process:** Update `CHANGELOG.md`, tag, and push (see `CONTRIBUTING.md`).
29+
30+
## Integration Points
31+
- Consumed by Fable, FSAC, Ionide, FSharpLint, and F# Formatting.
32+
- External dependencies: Microsoft.Build, FSharp.Compiler.Service (FCS).
33+
- Nightly builds may require custom NuGet feeds (see `CONTRIBUTING.md`).
34+
35+
## Where to Look
36+
- **Architecture:** See `README.md` (root), `src/` for main libraries, `test/examples/` for project scenarios.
37+
- **Developer workflow:** `CONTRIBUTING.md` for build/test/release details.
38+
- **Tool usage:** `src/Ionide.ProjInfo.Tool/README.md` and `Program.fs`.
39+
- **Test patterns:** `test/Ionide.ProjInfo.Tests/` and helpers in `FileUtils.fs`.
40+
41+
## Code of Conduct
42+
- See `CODE_OF_CONDUCT.md` for community standards.
43+
44+
---
45+
For more, see https://github.com/ionide/dotnet-proj-info and linked docs.
46+
47+
48+
### MCP Tools
49+
50+
> [!IMPORTANT]
51+
52+
You have access to a long-term memory system via the Model Context Protocol (MCP) at the endpoint `memorizer`. Use the following tools:
53+
- `store`: Store a new memory. Parameters: `type`, `content` (markdown), `source`, `tags`, `confidence`, `relatedTo` (optional, memory ID), `relationshipType` (optional).
54+
- `search`: Search for similar memories. Parameters: `query`, `limit`, `minSimilarity`, `filterTags`.
55+
- `get`: Retrieve a memory by ID. Parameter: `id`.
56+
- `getMany`: Retrieve multiple memories by their IDs. Parameter: `ids` (list of IDs).
57+
- `delete`: Delete a memory by ID. Parameter: `id`.
58+
- `createRelationship`: Create a relationship between two memories. Parameters: `fromId`, `toId`, `type`.
59+
Use these tools to remember, recall, relate, and manage information as needed to assist the user. You can also manually retrieve or relate memories by their IDs when necessary.

0 commit comments

Comments
 (0)