feat: add guided setup prompt for coding agents (start.md) - #40
Yohan Lasorsa (sinedied) wants to merge 16 commits into
Conversation
|
aka.ms/rayfin/start.md url has been updated to https://raw.githubusercontent.com/microsoft/rayfin/content/start.md (which should be the URL after merge) |
|
How do we want to consolidate Could |
Sean Watson (seanwat-msft)
left a comment
There was a problem hiding this comment.
a couple of things caught my eye before this ships. the two bigger ones (the existing-app fallback pointing at an unpublished npm package, and the default template routing diverging from the current rayfin-getting-started skill) both feel blocking to me; the rest are smaller polish points. specifics left inline.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Delegate scaffolding to the getting-started skill instead of duplicating it. Step 3 now fetches skills/rayfin-getting-started/SKILL.md and follows it, so the default template, detection signals and CLI commands have a single source of truth and can no longer drift between the two entry points. Fix the stale init command in the skill. There is no public 'rayfin' package (404), and 'npx @microsoft/rayfin-cli' resolves a 'rayfin-cli' command that does not exist, exiting 1 with no output. The bin is 'rayfin', so npx needs the explicit -p form. Add a PowerShell equivalent for the README one-liner, and drop the 'plan mode' wording since 'copilot -i' does not enter that mode. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rely on editor and GitHub soft wrapping instead of fixed-width line breaks. Content is unchanged; only whitespace differs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The curl one-liner was POSIX-only: PowerShell aliases curl to Invoke-WebRequest, which rejects those flags, so the step failed on Windows. Ask the agent to fetch and read the URL with its own web fetch capability instead, which is cross-platform by construction. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
a587bb9 to
837d530
Compare
This one have been bothering me too, and since the divergence already happened I've taken another approach: leaning entirety on the This solves the divergence, command and templates issues at once and definitely needed given the speed Rayfin is progressing 🙂 I thought about the other option too: directly targeting the SKILL.md and adding the prereqs & customize steps there. It could always be done at a later point if you think that's better, but keeping the skill lean without these steps is best IMHO as it can be composed for cutomized starter workflows (for example in enterprise context). Note: I've also removed the final links section, as some smaller models tends to load every link they find and end up rotting the context. The built-in docs have everything needed anyways. |
Sean Watson (seanwat-msft)
left a comment
There was a problem hiding this comment.
requesting changes on two blockers: the existing-app command in the getting-started skill still fails without --project-name in non-interactive mode, and replies.md looks like an accidentally tracked scratch file. inline comments below, plus a couple of smaller things on the prereqs section.
c7b01df to
bd6194c
Compare
|
Fixed all remaining blockers and did an extra pass of review to make sure nothing slipped this time, thanks! |
Sean Watson (seanwat-msft)
left a comment
There was a problem hiding this comment.
requesting changes: the PowerShell one-liner on line 40 breaks the documented default Windows path because Windows PowerShell 5.1 splits the fetched prompt at the straight quotes inside start.md. two smaller cross-platform issues inline as well.
| > describe what you want to build: | ||
| > | ||
| > ```bash | ||
| > copilot -i "$(curl -sSfL https://aka.ms/rayfin/start.md)" |
There was a problem hiding this comment.
if curl fails here, command substitution still expands (to an empty string) and copilot gets launched with an empty prompt, so the user lands in an unprimed session instead of the rayfin flow. worth fetching first and gating launch on both success and non-empty content, something like:
prompt=$(curl -sSfL https://aka.ms/rayfin/start.md) && [ -n "$prompt" ] && copilot -i "$prompt"There was a problem hiding this comment.
I'd like to push back on this one: splitting the command like this would only catch network failures, but a wrong aka.ms or temp failures return HTML without a 404 or any error. Not sure the catch here is worth the added complexity, keeping the command simple is part of the quickstart appeal IMHO.
Worst case, having an empty starter prompt is harmless as it just start copilot CLI and idle.
I considered doing something like `copilot -i "$(curl -sSfL https://aka.ms/rayfin/start.md || echo 'Error while fetching rayfin starter')", but showing "error" or something alike in a starter command doesn't send a good message for folks just scanning text and it also triggers copilot CLI instead of standing by. I don't think the tradeoff is worth it.
For reference, other frameworks using this "start.md" command just keep the command simple, ie: https://plainframework.com/
Sean Watson (seanwat-msft)
left a comment
There was a problem hiding this comment.
The latest updates address my blocking feedback. This looks good to merge.
Description
content/start.mdis a self-contained, end-to-end setup prompt a coding agent (e.g. GitHub Copilot CLI) can run to go from zero to a customized Rayfin app: it checks prerequisites, installs what's missing, scaffolds the most appropriate template, then customizes with the user through guided questions. Linked from the README "Getting Started" section as an optional path.Complementary to the existing
rayfin-getting-startedskill: same routing/handoff philosophy, packaged as one runnable prompt that covers the full flow.Type of change
Checklist
AI disclosure
Drafted with GitHub Copilot CLI and reviewed by the author; the prompt was validated against its goals with two independent rubber-duck reviews (GPT-5.5 and Claude).