Skip to content

fix(skills): make gstack slash skills visible in Cursor - #40

Merged
cursor[bot] merged 1 commit into
mainfrom
prax/gstack-cursor-discovery-3d82
Aug 30, 2026
Merged

fix(skills): make gstack slash skills visible in Cursor#40
cursor[bot] merged 1 commit into
mainfrom
prax/gstack-cursor-discovery-3d82

Conversation

@praxstack

Copy link
Copy Markdown
Owner

📋 Description

Cursor indexes slash skills one level deep (.cursor/skills/<name>/SKILL.md or a plugin skills/ tree). Vendored gstack lived only at .claude/skills/gstack/<skill>/SKILL.md, so /plan-ceo-review never appeared next to pstack commands like /setup-pstack.

This change flattens each gstack skill into project .cursor/skills/<name> (and home ~/.cursor/skills on environment boot), and vendors gstack bin/ so gstack-skill-start is present.

Official ./setup --host cursor is not used on boot: help text still lags issue #2361, and the clone installer requires bun.

🔗 Related Issue

No issue. Follow-up to skill-pack vendoring on main.

🔄 Type of Change

  • 🐛 Bug fix (Cursor could not see gstack slash skills)
  • 📝 Documentation update (installer / link script)

✅ Checklist

  • link-agent-skills.sh flattens gstack skills for Cursor
  • plan-ceo-review is at .cursor/skills/plan-ceo-review
  • Tests updated and npm test passed in the implementing run
  • Confirm /plan-ceo-review appears in the Cursor slash-command list after pulling this branch

📝 Additional Notes

Reload Cursor skills / reopen the project if the slash list is cached. Nested .claude/skills/gstack/ is unchanged for Claude Code and Codex.

Open in Web Open in Cursor 

Cursor indexes one-level skill dirs (.cursor/skills/<name>/SKILL.md), so
the nested .claude/skills/gstack/<skill> pack was invisible as
/plan-ceo-review. Flatten each skill into .cursor/skills and
~/.cursor/skills, and vendor gstack bin/setup so the skill-start
preamble is runnable.

Co-authored-by: Prax Lannister <praxstack@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 238 files, which is 138 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 02aea959-5770-48d4-9699-66c28ac6253f

📥 Commits

Reviewing files that changed from the base of the PR and between 37ac800 and 45fb5e4.

📒 Files selected for processing (238)
  • .agents/skills/gstack/ETHOS.md
  • .agents/skills/gstack/NOTICE.md
  • .agents/skills/gstack/VERSION
  • .agents/skills/gstack/bin/dev-setup
  • .agents/skills/gstack/bin/dev-teardown
  • .agents/skills/gstack/bin/gstack-analytics
  • .agents/skills/gstack/bin/gstack-artifacts-init
  • .agents/skills/gstack/bin/gstack-artifacts-url
  • .agents/skills/gstack/bin/gstack-brain-cache
  • .agents/skills/gstack/bin/gstack-brain-context-load.ts
  • .agents/skills/gstack/bin/gstack-brain-enqueue
  • .agents/skills/gstack/bin/gstack-brain-restore
  • .agents/skills/gstack/bin/gstack-brain-sync
  • .agents/skills/gstack/bin/gstack-brain-uninstall
  • .agents/skills/gstack/bin/gstack-builder-profile
  • .agents/skills/gstack/bin/gstack-code-intelligence
  • .agents/skills/gstack/bin/gstack-codex-probe
  • .agents/skills/gstack/bin/gstack-codex-session-import
  • .agents/skills/gstack/bin/gstack-community-dashboard
  • .agents/skills/gstack/bin/gstack-config
  • .agents/skills/gstack/bin/gstack-context-bill
  • .agents/skills/gstack/bin/gstack-decision-log
  • .agents/skills/gstack/bin/gstack-decision-search
  • .agents/skills/gstack/bin/gstack-detach
  • .agents/skills/gstack/bin/gstack-developer-profile
  • .agents/skills/gstack/bin/gstack-diff-scope
  • .agents/skills/gstack/bin/gstack-distill-apply
  • .agents/skills/gstack/bin/gstack-distill-free-text
  • .agents/skills/gstack/bin/gstack-egress
  • .agents/skills/gstack/bin/gstack-egress-lib.sh
  • .agents/skills/gstack/bin/gstack-egress-receipt
  • .agents/skills/gstack/bin/gstack-evidence
  • .agents/skills/gstack/bin/gstack-extension
  • .agents/skills/gstack/bin/gstack-first-task-detect
  • .agents/skills/gstack/bin/gstack-gbrain-detect
  • .agents/skills/gstack/bin/gstack-gbrain-install
  • .agents/skills/gstack/bin/gstack-gbrain-lib.sh
  • .agents/skills/gstack/bin/gstack-gbrain-mcp-verify
  • .agents/skills/gstack/bin/gstack-gbrain-repo-policy
  • .agents/skills/gstack/bin/gstack-gbrain-source-wireup
  • .agents/skills/gstack/bin/gstack-gbrain-supabase-provision
  • .agents/skills/gstack/bin/gstack-gbrain-supabase-verify
  • .agents/skills/gstack/bin/gstack-gbrain-sync.ts
  • .agents/skills/gstack/bin/gstack-global-discover.ts
  • .agents/skills/gstack/bin/gstack-ios-qa-daemon
  • .agents/skills/gstack/bin/gstack-ios-qa-mint
  • .agents/skills/gstack/bin/gstack-ios-qa-regen
  • .agents/skills/gstack/bin/gstack-issue-guard
  • .agents/skills/gstack/bin/gstack-jsonl-merge
  • .agents/skills/gstack/bin/gstack-learnings-log
  • .agents/skills/gstack/bin/gstack-learnings-search
  • .agents/skills/gstack/bin/gstack-memory-ingest.ts
  • .agents/skills/gstack/bin/gstack-model-benchmark
  • .agents/skills/gstack/bin/gstack-next-version
  • .agents/skills/gstack/bin/gstack-patch-names
  • .agents/skills/gstack/bin/gstack-paths
  • .agents/skills/gstack/bin/gstack-pr-title-rewrite.sh
  • .agents/skills/gstack/bin/gstack-question-log
  • .agents/skills/gstack/bin/gstack-question-preference
  • .agents/skills/gstack/bin/gstack-redact
  • .agents/skills/gstack/bin/gstack-redact-prepush
  • .agents/skills/gstack/bin/gstack-relink
  • .agents/skills/gstack/bin/gstack-repo-mode
  • .agents/skills/gstack/bin/gstack-retro-metrics
  • .agents/skills/gstack/bin/gstack-review-log
  • .agents/skills/gstack/bin/gstack-review-read
  • .agents/skills/gstack/bin/gstack-security-dashboard
  • .agents/skills/gstack/bin/gstack-session-kind
  • .agents/skills/gstack/bin/gstack-session-update
  • .agents/skills/gstack/bin/gstack-settings-hook
  • .agents/skills/gstack/bin/gstack-skill-end
  • .agents/skills/gstack/bin/gstack-skill-start
  • .agents/skills/gstack/bin/gstack-slug
  • .agents/skills/gstack/bin/gstack-specialist-stats
  • .agents/skills/gstack/bin/gstack-taste-update
  • .agents/skills/gstack/bin/gstack-team-init
  • .agents/skills/gstack/bin/gstack-telemetry-log
  • .agents/skills/gstack/bin/gstack-telemetry-sync
  • .agents/skills/gstack/bin/gstack-timeline-log
  • .agents/skills/gstack/bin/gstack-timeline-read
  • .agents/skills/gstack/bin/gstack-uninstall
  • .agents/skills/gstack/bin/gstack-update-check
  • .agents/skills/gstack/bin/gstack-verify-gate
  • .agents/skills/gstack/bin/gstack-version-bump
  • .agents/skills/gstack/bin/gstack-wtree
  • .agents/skills/gstack/setup
  • .claude/skills/gstack/ETHOS.md
  • .claude/skills/gstack/NOTICE.md
  • .claude/skills/gstack/VERSION
  • .claude/skills/gstack/bin/dev-setup
  • .claude/skills/gstack/bin/dev-teardown
  • .claude/skills/gstack/bin/gstack-analytics
  • .claude/skills/gstack/bin/gstack-artifacts-init
  • .claude/skills/gstack/bin/gstack-artifacts-url
  • .claude/skills/gstack/bin/gstack-brain-cache
  • .claude/skills/gstack/bin/gstack-brain-context-load.ts
  • .claude/skills/gstack/bin/gstack-brain-enqueue
  • .claude/skills/gstack/bin/gstack-brain-restore
  • .claude/skills/gstack/bin/gstack-brain-sync
  • .claude/skills/gstack/bin/gstack-brain-uninstall
  • .claude/skills/gstack/bin/gstack-builder-profile
  • .claude/skills/gstack/bin/gstack-code-intelligence
  • .claude/skills/gstack/bin/gstack-codex-probe
  • .claude/skills/gstack/bin/gstack-codex-session-import
  • .claude/skills/gstack/bin/gstack-community-dashboard
  • .claude/skills/gstack/bin/gstack-config
  • .claude/skills/gstack/bin/gstack-context-bill
  • .claude/skills/gstack/bin/gstack-decision-log
  • .claude/skills/gstack/bin/gstack-decision-search
  • .claude/skills/gstack/bin/gstack-detach
  • .claude/skills/gstack/bin/gstack-developer-profile
  • .claude/skills/gstack/bin/gstack-diff-scope
  • .claude/skills/gstack/bin/gstack-distill-apply
  • .claude/skills/gstack/bin/gstack-distill-free-text
  • .claude/skills/gstack/bin/gstack-egress
  • .claude/skills/gstack/bin/gstack-egress-lib.sh
  • .claude/skills/gstack/bin/gstack-egress-receipt
  • .claude/skills/gstack/bin/gstack-evidence
  • .claude/skills/gstack/bin/gstack-extension
  • .claude/skills/gstack/bin/gstack-first-task-detect
  • .claude/skills/gstack/bin/gstack-gbrain-detect
  • .claude/skills/gstack/bin/gstack-gbrain-install
  • .claude/skills/gstack/bin/gstack-gbrain-lib.sh
  • .claude/skills/gstack/bin/gstack-gbrain-mcp-verify
  • .claude/skills/gstack/bin/gstack-gbrain-repo-policy
  • .claude/skills/gstack/bin/gstack-gbrain-source-wireup
  • .claude/skills/gstack/bin/gstack-gbrain-supabase-provision
  • .claude/skills/gstack/bin/gstack-gbrain-supabase-verify
  • .claude/skills/gstack/bin/gstack-gbrain-sync.ts
  • .claude/skills/gstack/bin/gstack-global-discover.ts
  • .claude/skills/gstack/bin/gstack-ios-qa-daemon
  • .claude/skills/gstack/bin/gstack-ios-qa-mint
  • .claude/skills/gstack/bin/gstack-ios-qa-regen
  • .claude/skills/gstack/bin/gstack-issue-guard
  • .claude/skills/gstack/bin/gstack-jsonl-merge
  • .claude/skills/gstack/bin/gstack-learnings-log
  • .claude/skills/gstack/bin/gstack-learnings-search
  • .claude/skills/gstack/bin/gstack-memory-ingest.ts
  • .claude/skills/gstack/bin/gstack-model-benchmark
  • .claude/skills/gstack/bin/gstack-next-version
  • .claude/skills/gstack/bin/gstack-patch-names
  • .claude/skills/gstack/bin/gstack-paths
  • .claude/skills/gstack/bin/gstack-pr-title-rewrite.sh
  • .claude/skills/gstack/bin/gstack-question-log
  • .claude/skills/gstack/bin/gstack-question-preference
  • .claude/skills/gstack/bin/gstack-redact
  • .claude/skills/gstack/bin/gstack-redact-prepush
  • .claude/skills/gstack/bin/gstack-relink
  • .claude/skills/gstack/bin/gstack-repo-mode
  • .claude/skills/gstack/bin/gstack-retro-metrics
  • .claude/skills/gstack/bin/gstack-review-log
  • .claude/skills/gstack/bin/gstack-review-read
  • .claude/skills/gstack/bin/gstack-security-dashboard
  • .claude/skills/gstack/bin/gstack-session-kind
  • .claude/skills/gstack/bin/gstack-session-update
  • .claude/skills/gstack/bin/gstack-settings-hook
  • .claude/skills/gstack/bin/gstack-skill-end
  • .claude/skills/gstack/bin/gstack-skill-start
  • .claude/skills/gstack/bin/gstack-slug
  • .claude/skills/gstack/bin/gstack-specialist-stats
  • .claude/skills/gstack/bin/gstack-taste-update
  • .claude/skills/gstack/bin/gstack-team-init
  • .claude/skills/gstack/bin/gstack-telemetry-log
  • .claude/skills/gstack/bin/gstack-telemetry-sync
  • .claude/skills/gstack/bin/gstack-timeline-log
  • .claude/skills/gstack/bin/gstack-timeline-read
  • .claude/skills/gstack/bin/gstack-uninstall
  • .claude/skills/gstack/bin/gstack-update-check
  • .claude/skills/gstack/bin/gstack-verify-gate
  • .claude/skills/gstack/bin/gstack-version-bump
  • .claude/skills/gstack/bin/gstack-wtree
  • .claude/skills/gstack/setup
  • .cursor/skills/autoplan
  • .cursor/skills/benchmark
  • .cursor/skills/benchmark-models
  • .cursor/skills/browse
  • .cursor/skills/canary
  • .cursor/skills/careful
  • .cursor/skills/codex
  • .cursor/skills/context-restore
  • .cursor/skills/context-save
  • .cursor/skills/cso
  • .cursor/skills/design-consultation
  • .cursor/skills/design-html
  • .cursor/skills/design-review
  • .cursor/skills/design-shotgun
  • .cursor/skills/devex-review
  • .cursor/skills/diagram
  • .cursor/skills/document-generate
  • .cursor/skills/document-release
  • .cursor/skills/freeze
  • .cursor/skills/gstack
  • .cursor/skills/gstack-openclaw-ceo-review
  • .cursor/skills/gstack-openclaw-investigate
  • .cursor/skills/gstack-openclaw-office-hours
  • .cursor/skills/gstack-openclaw-retro
  • .cursor/skills/gstack-upgrade
  • .cursor/skills/guard
  • .cursor/skills/hackernews-frontpage
  • .cursor/skills/health
  • .cursor/skills/investigate
  • .cursor/skills/ios-clean
  • .cursor/skills/ios-design-review
  • .cursor/skills/ios-fix
  • .cursor/skills/ios-qa
  • .cursor/skills/ios-sync
  • .cursor/skills/land-and-deploy
  • .cursor/skills/landing-report
  • .cursor/skills/learn
  • .cursor/skills/make-pdf
  • .cursor/skills/office-hours
  • .cursor/skills/open-gstack-browser
  • .cursor/skills/pair-agent
  • .cursor/skills/plan-ceo-review
  • .cursor/skills/plan-design-review
  • .cursor/skills/plan-devex-review
  • .cursor/skills/plan-eng-review
  • .cursor/skills/plan-tune
  • .cursor/skills/qa
  • .cursor/skills/qa-only
  • .cursor/skills/retro
  • .cursor/skills/review
  • .cursor/skills/scrape
  • .cursor/skills/setup-browser-cookies
  • .cursor/skills/setup-deploy
  • .cursor/skills/setup-gbrain
  • .cursor/skills/ship
  • .cursor/skills/skillify
  • .cursor/skills/spec
  • .cursor/skills/sync-gbrain
  • .cursor/skills/unfreeze
  • docs/agent-skill-packs.md
  • docs/agent-skills.md
  • scripts/gen-skills-index.js
  • scripts/install-agent-skills.sh
  • scripts/link-agent-skills.sh
  • test/agent-skill-packs.test.js
  • test/link-agent-skills.test.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 29, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-29T17:15:49.078297Z 45fb5e4 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 45fb5e4850

ℹ️ 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".

local src="$1" dest="$2"
if [ -d "$src/bin" ]; then
mkdir -p "$dest/bin"
(cd "$src/bin" && find . -type f \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Vendor dependencies required by copied gstack binaries

When the documented installer refreshes gstack, this copies bin/ but omits pack-level dependencies such as lib/, scripts/, and package.json. Many newly exposed workflows directly invoke affected binaries—for example, /ship runs gstack-next-version, gstack-evidence, and gstack-redact, all of which import modules from ../lib; the committed vendor tree has no lib/, so these commands fail with module-not-found errors even when Bun is installed. Copy the runtime dependency closure or avoid exposing binaries that cannot run.

Useful? React with 👍 / 👎.

echo "link-agent-skills: left in place (not a symlink): $dest"
return 0
fi
ln -sfn "$src" "$dest"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve existing user-owned skill symlinks

When the boot linker encounters an existing symlink such as ~/.cursor/skills/review or spec that points to a user's personal or plugin skill, this unconditional ln -sfn replaces it with the gstack skill. The preceding guard protects only non-symlinks, despite the pruning logic claiming that only repository-managed gstack links are replaced; generic gstack names make collisions likely. Check that an existing symlink already targets this vendored pack before replacing it.

Useful? React with 👍 / 👎.

'--skill', 'plan-ceo-review',
'--model', 'claude',
'--parent-pid', String(process.pid)
], { encoding: 'utf8', cwd: ROOT });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Isolate gstack state in the runtime smoke test

When a developer or CI runner has an existing ~/.gstack, this invocation inherits the real HOME and GSTACK_HOME. gstack-skill-start creates session and analytics files, removes stale session entries and pending analytics, reads the user's configuration, and may perform the update-check HTTP request, so an ordinary npm test can mutate real gstack state, contaminate telemetry, and become network-dependent. Run it with a temporary HOME/GSTACK_HOME and clean that directory afterward.

Useful? React with 👍 / 👎.

@@ -0,0 +1 @@
1.74.0.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the vendored gstack version metadata consistent

This runtime declares itself as gstack 1.74.0.0, while PACK_META.gstack.version and the generated skills index still identify the newly vendored bin/setup payload as 1.72.0.0. As a result, regenerating the index after the documented refresh preserves incorrect provenance, making it unclear which upstream runtime is being audited or updated. Derive the index version from this file or update the metadata to the same version.

Useful? React with 👍 / 👎.

@@ -341,4 +378,6 @@ for entry in "${PACKS[@]}"; do
extract_pack "$pack" "$repo" "$subdir" "$license_rel" "$allow" "$ref"
done

echo "Flattening gstack skills for Cursor discovery..."
bash "$REPO_ROOT/scripts/link-agent-skills.sh"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Avoid deleting global skill packs during a repository refresh

When a developer runs the documented repository refresh, this new call also invokes link_packs, which executes rm -rf on every colliding real directory under both ~/.claude/skills and ~/.agents/skills before replacing it with a repository symlink. A locally installed or customized pack named gstack, aws, microsoft, or any other vendored pack is therefore permanently deleted even though the command is presented as refreshing the repository checkout. Keep global activation separate from the vendor refresh, or make the linker preserve user-owned directories.

AGENTS.md reference: AGENTS.md:L42-L43

Useful? React with 👍 / 👎.

const PROJECT_SKILLS = path.join(ROOT, '.cursor/skills');

function runLink(home) {
execFileSync('bash', [SCRIPT], {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the test suite runnable without Bash on Windows

On supported Windows installations that do not provide Git Bash or WSL, this test unconditionally spawns a bash executable and fails with ENOENT, preventing the otherwise Node-based npm test suite from running. The existing CI jobs are Ubuntu-only, so they do not catch this cross-platform regression. Skip this shell integration test when Bash is unavailable or provide a platform-neutral test harness.

Useful? React with 👍 / 👎.

@cursor
cursor Bot merged commit 45fb5e4 into main Aug 30, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants