Install fstack skills for Cursor cloud sessions - #3
Conversation
Add .cursor/environment.json and an idempotent install script that copies skills into ~/.cursor/skills on each cloud environment boot. Expose the same skills via .cursor/skills symlinks for project discovery. Co-authored-by: Nayte <naytewilson@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 58145b69bf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| else | ||
| while IFS= read -r name; do | ||
| [ -n "$name" ] || continue | ||
| if [ ! -e "$cursor_skills/$name/SKILL.md" ]; then |
There was a problem hiding this comment.
Verify that each Cursor link targets the named skill
When a link is accidentally aimed at another valid skill—for example, .cursor/skills/fstack pointing to ../../skills/fstack-run—this check only confirms that some SKILL.md resolves, and the reverse loop still finds the canonical skills/fstack; the validator therefore passes while Cursor routes the interactive command to the autonomous runner. Validate the resolved target or its frontmatter name against the link name.
AGENTS.md reference: AGENTS.md:L56-L58
Useful? React with 👍 / 👎.
| done < "$names_file" | ||
|
|
||
| for entry in "$cursor_skills"/*; do | ||
| [ -e "$entry" ] || continue |
There was a problem hiding this comment.
Reject dangling entries in the Cursor skill mirror
When a skill is removed or renamed but its checked-in Cursor link remains, the link becomes dangling, causing [ -e "$entry" ] to return false and this loop to skip it; the validator then reports success even though .cursor/skills no longer mirrors the skills on disk. Inspect symlinks with -L or otherwise validate every directory entry before continuing.
AGENTS.md reference: AGENTS.md:L55-L56
Useful? React with 👍 / 👎.
| mkdir -p "$dest" | ||
|
|
||
| installed=0 | ||
| for skill_dir in "$src"/*/; do |
There was a problem hiding this comment.
Remove retired fstack skills from the home install
On a reused cloud environment after a skill is removed or renamed, this loop visits only current source directories, so the previous copy remains under ~/.cursor/skills and Cursor continues discovering retired instructions even though the refresh reports success. Track previously managed fstack names and remove obsolete ones without pruning unrelated personal skills.
AGENTS.md reference: AGENTS.md:L55-L58
Useful? React with 👍 / 👎.
What changed
Cursor Cloud Agents can now discover and retain all 14 fstack skills across sessions:
.cursor/skills/symlinks expose the canonicalskills/trees for project discovery.cursor/environment.jsonrunsscripts/install-cursor-cloud-skills.shon each environment boot~/.cursor/skillswithout installer metadataWhy this is the smallest complete change
Canonical skills stay in
skills/. No duplicated skill bodies. No vendor CLI required at boot. Interactive vs continuous skill behavior is unchanged.Evidence
Skill and documentation checks
sh -n scripts/validate.shsh -n scripts/test-validate.shsh scripts/test-validate.shsh scripts/validate.shgit diff --checkagainst the base branchREADME.mdMissing evidence or remaining risk
This session started without a saved cloud environment (
environment: null). After merge, a new cloud agent must check out a branch that includes.cursor/environment.json(or a saved environment snapshot) for the home install to run automatically at boot. Project.cursor/skillsdiscovery works from checkout alone once this lands.