Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/commands/ast.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: Parse F# source code to untyped AST
allowed-tools: Bash(dotnet fsi:*), Bash(echo:*)
allowed-tools: Bash(dotnet fsi:*), Bash(echo:*), Bash(dotnet build:*)
---

First build the project: `dotnet build src/Fantomas.Core/Fantomas.Core.fsproj`
Expand Down
8 changes: 4 additions & 4 deletions .claude/commands/update-fcs.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ mkdir -p .deps/.fcs-walk
grep -oE '"src/Compiler/[^"]+"' build.fsx | tr -d '"' | sort -u > .deps/.fcs-walk/vendored-files.txt
```

Regenerate it whenever `build.fsx` is newer than the cache file, otherwise reuse it. It is about
85 paths.
Regenerate it whenever `build.fsx` is newer than the cache file, otherwise reuse it.

`commits/<sha>.tsv` — the changed-file list of one upstream commit. A commit's file list never
changes, so this is cacheable forever and saves an API round trip on every later run. Read from
Expand All @@ -78,10 +77,11 @@ gh api repos/dotnet/fsharp/commits/<current-hash> --jq '.commit.committer.date,

```
gh api "repos/dotnet/fsharp/commits?path=src/Compiler/SyntaxTree&sha=main&since=<date>&per_page=100" \
--paginate --jq '.[] | [.sha, .commit.committer.date, (.commit.message | split("\n")[0])] | @tsv' | tail -r
--paginate --jq '.[] | [.sha, .commit.committer.date, (.commit.message | split("\n")[0])] | @tsv' \
| sort -t "$(printf '\t')" -k2,2
```

`tail -r` reverses to oldest-first (this is macOS, there is no `tac`). `since` is inclusive, so
The sort on the ISO date column puts the rows oldest-first on any platform. `since` is inclusive, so
the first row is the current hash itself. Drop it.

If nothing is left, report that Fantomas is up to date with the SyntaxTree folder and stop.
Expand Down
10 changes: 4 additions & 6 deletions .claude/skills/fantomas-issue/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,8 @@ Add an entry under the `## [Unreleased]` section. Never add to an already-publis
- For `bug (stylistic)` fixes related to a style guide, add under `### Changed`:
`- Update style of xyz. [#1234](https://github.com/fsprojects/fantomas/issues/1234)`

## 8. Run analyzers
## 8. Post-task steps

Run `dotnet msbuild /t:AnalyzeSolution` to check for analyzer warnings/errors.

## 9. Format edited files

Run `dotnet fantomas <file>` on all `.fs` and `.fsx` files you edited to ensure they conform to the project's formatting standard.
Run `dotnet fsi build.fsx -- -p FormatChanged`, then `dotnet fsi build.fsx -- -p AnalyzeChanged`,
and read `analysis.sarif` afterwards: the analyzer run exits 0 whatever it found. The Post-task
Steps section of `AGENTS.md` says what each one covers.
4 changes: 2 additions & 2 deletions .claude/skills/style-guides/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ fetch https://raw.githubusercontent.com/G-Research/fsharp-formatting-conventions
fetch https://raw.githubusercontent.com/G-Research/fsharp-formatting-conventions/master/.editorconfig g-research.editorconfig
```

The `.etag` files next to the documents are what make the second run free; keep them. Verified that
a repeat run leaves the file byte for byte intact rather than truncating it.
The `.etag` files next to the documents are what make the second run free; keep them. On a match
curl writes nothing, so the document is left intact.

## The sources

Expand Down
10 changes: 5 additions & 5 deletions .claude/skills/upgrade-trial/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ Say up front that the builds are long and CPU heavy, and run them in the backgro

Before touching any version, run the pinned version's `--check` and establish the scope it must
pass. When the docs and CI disagree on which paths to format, trust CI: that is the scope the
project actually enforces, and the rest is drift they have chosen to live with. FsAutoComplete's
CONTRIBUTING says to format `src/ test/`, but its CI has only ever checked `build.fsx src`; its
`test/` tree holds intentionally unparseable fixtures and has never been formatted. Reformatting
that scope on their behalf is churn they did not ask for, and can break fixture-sensitive tests in
ways a build will not catch. Only widen beyond the CI scope when they clearly want it.
project actually enforces, and the rest is drift they have chosen to live with. The usual shape is
a `test/` tree that the contributing guide says to format and CI never checks, full of fixtures
that are intentionally unparseable. Reformatting that scope on their behalf is churn they did not
ask for, and can break fixture-sensitive tests in ways a build will not catch. Only widen beyond
the CI scope when they clearly want it.

If the check fails on the enforced scope, the base state is dirty, and the first commit on the
trial branch is fixing that: format with the pinned version, build, and commit as the rung-zero
Expand Down
6 changes: 3 additions & 3 deletions .github/aw/actions-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
"version": "v9.0.0",
"sha": "3a2844b7e9c422d3c10d287c895573f7108da1b3"
},
"github/gh-aw-actions/setup@v0.87.9": {
"github/gh-aw-actions/setup@v0.88.7": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.87.9",
"sha": "49dc896ccb7d6d975514cfe232bcbd68cc12e2c1"
"version": "v0.88.7",
"sha": "5e508589e03a7757a7e05b26e834292f5445bfb6"
}
},
"containers": {
Expand Down
Loading
Loading