chore(tooling): wire the project's own MCP server - #6
Conversation
Mirrors uptizm#102. This repo had bin/fsa, .artisan/plugins.json and a verification loop written entirely in `./bin/fsa dusk:*` form, but no .mcp.json at all, so a fork inherited the CLI and none of the tools. `.mcp.json` runs `./bin/fsa mcp:serve`: the same dusk, telescope and artisan verbs, offered to an agent as tools in the session that edits the code. The binary is already tracked and executable, and it is byte-identical to uptizm's, so nothing new is installed. docs/verification-loop.md gains the note that the two routes are interchangeable, since both resolve the same running app through the same per-project state under ~/.artisan/sessions/, and that the file stays in CLI form because that form pastes into a terminal. AGENTS.md names it under agent infrastructure, alongside the skills and the reviewer, because that paragraph is what a fork reads to learn what it inherited.
|
Note Kodizm (AI-generated). May contain mistakes; verify before acting. Config-and-docs only, and the wiring is correct on POSIX - Major
Minor
TestsNothing here is testable code; no repo test asserts the Checks I ran
|
The committed entry is the POSIX shape and nothing said so. `bin/fsa` is a `sh` script, and `fluttersdk_artisan`'s own `mcp:install` refuses that shape on Windows for exactly that reason (`useFsa = _hasFsa() && !_isWindows()`), falling back to a `dart run` command. This repo ships a windows/ runner target and is the thing production apps fork, so a Windows fork opened a server that could not spawn its command with nothing telling them why. The fix is to re-run `mcp:install`, not to hand-edit the file: the tool already knows which of its three shapes a machine has, it is idempotent, and it preserves other server entries. Verified that `dart run :dispatcher mcp:install` resolves here. Keeping the fast shape committed is a measured choice, not an oversight: `./bin/fsa list` is 0.63s against 5.21s for `dart run :dispatcher list`, and a dusk walk pays that per command rather than once per session. Also drops a false clause I had written into the same paragraph: a fresh clone cannot run `mcp:install` either, since `dart run` needs resolved dependencies too. `flutter pub get` is what a clone needs, and it is already the documented first step.
|
Note Kodizm (AI-generated). May contain mistakes; verify before acting. The one new commit is docs-only and it closes both findings from the previous review - nothing further to flag. Since Both earlier findings are answered rather than argued: the Major (POSIX-only entry with no Windows escape hatch) now points Windows forks at I checked the new prose against the implementation rather than taking it on trust, and every claim in it holds:
The only unverified claim is the TestsUnchanged from the previous review: docs and generated mirrors, nothing testable. Checks I ran
|
What
Mirrors uptizm#102, per the mirroring rule in
AGENTS.md.This repo already ships
bin/fsa(tracked,100755) and a verification loop written entirely in./bin/fsa dusk:*form. It had no.mcp.jsonat all, so a fork inherited the CLI surface and none of the tool surface..mcp.jsonnow runs./bin/fsa mcp:serve: the same dusk, telescope and artisan verbs offered to an agent as tools in the session that edits the code. The binary is byte-identical to uptizm's (git ls-files -s bin/fsagives the same blob8a853d0in both repos), so nothing new is installed and no dependency is added.Docs
docs/verification-loop.mdgains a note at the top of its dusk section: the two routes are interchangeable because both resolve the same running app through the same per-project state under~/.artisan/sessions/(seeartisan/lib/src/state/state_file.dart), and the file stays in CLI form because that form pastes into a terminal and reads back in a log.AGENTS.mdnames it in the "Other agent infrastructure" paragraph, next to the skills and thecomponent-visual-reviewer, because that paragraph is what a fork reads to learn what it inherited.bin/sync-instructionsregenerated.github/copilot-instructions.mdfrom it.Verification
bin/sync-instructionswas run, so the.github/mirror is current and the instruction-mirror check will pass.