Imported from tw0po1nt/FsHttp.Studio (
AGENTS.md). Install upstream withnpx skills add tw0po1nt/FsHttp.Studio. Copyright stays with the author.
FsHttp.Studio
A VSCode extension that runs a single FsHttp request from an F# script and renders its response richly.
The standards in docs/standards/ bind a person and an agent equally. CONTRIBUTING.md routes a
person to the same files.
Rules that bind everything you write
Verify every .fs change with dotnet build FsHttp.Studio.slnx. Fable accepts code that the F#
compiler rejects, so a clean Fable build does not prove that the solution compiles. CI runs this
command, and it fails on errors that a Fable-only loop never shows.
Run the simplified-technical-english skill on every piece of prose you write. All prose means
all prose: docs, specs, ADRs, issue text, pull request text, commit messages, and code comments. Run
the skill before you post the text. A one-line code comment is still prose.
Name a domain concept with the term that CONTEXT.md defines. This binds an identifier, a
comment, a log string, an envelope tag, a test name, an issue title, and a commit message. A concept
that you cannot state in glossary terms is a signal: either the glossary is missing it, or your
language is wrong. Resolve that instead of reaching for a synonym.
Keep your prose clear of the patterns in .banned-patterns. The file at the repo root holds
one pattern for each line, with the message that a hit reports, and
scripts/check-banned-patterns.sh runs in CI and fails the build on a hit. A backstop hook refuses
a Write or an Edit that carries one. To name banned text inside a rule that forbids it, put that
text in backticks. To ban more text, add one line to the file.
Assert a fact directly. Do not state a fact by denying its opposite. "A backstop, not the
mechanism" states one fact and pads it with a second, and the padding tires the reader. Write the
fact alone. Do not write an em dash. Use a comma, a colon, or a period. Both rules bind your reply
to the user in an interactive session as much as they bind a file, and
docs/standards/technical-prose.md holds the forms and the rewrites.
Use American spellings in every piece of prose: code comments, identifiers, docs, the README, issues, and commit messages.
A vendored skill is never edited. .agents/ holds skills that other authors wrote, and
skills-lock.json tracks them. They keep their authors' prose and spelling. Where this repo needs
different behavior, a document of its own overlays the skill, and the overlay wins. Where a
hook fires before a risky command, that hook is a backstop: it states the rule at the moment of
risk, and it cannot check that you obeyed. The rule is still the requirement.
Read before you act
- Before you write F#, read
docs/standards/coding-standards.md. It holds the house rules that Fantomas and.editorconfigcannot check. - Before you run a build, test, or package command, read
docs/standards/build-and-verify.md. It lists the full command set that CI runs. - Before you explore the codebase, read
CONTEXT.mdand the ADRs indocs/adr/that touch your area.docs/agents/domain.mdstates how to use them, and what to do when your output contradicts an ADR. - Before you create, edit, or comment on a GitHub issue or pull request, read
docs/agents/issue-tracker.md. Issues live as GitHub issues ontw0po1nt/FsHttp.Studio, and that file holds theghcommand lines and the wayfinding operations. - Before you write a spec, read
docs/standards/spec-writing.md. The full text belongs indocs/spec/, and the issue keeps a short summary and a link to it. - Before you open a pull request that changes
src/renderer/,src/webview/, orsrc/host/ResponseViewer.fs, readdocs/standards/ui-screenshots.md. That pull request must carry a screenshot of the running editor. - Before you publish a release, read
docs/standards/release-gate.md. The UI suite is the release gate, and that file states the gaps it leaves open.
Terminology
"spec", never PRD. The document that /to-spec produces is a spec. .banned-patterns holds the
other word, so CI fails on it. Some vendored skill files still carry the old wording, and this rule
overlays them.
Triage labels. The five triage roles, where each label string is equal to its role name:
needs-triage: a maintainer must evaluate this issueneeds-info: the reporter must supply more informationready-for-agent: fully specified, ready for an AFK agentready-for-human: a person must implement thiswontfix: this will not be fixed
When a skill names a role, use the label string of the same name.