.cursor/skills/root/project-setup/SKILL.md
Configure which projects are connected to a root repo via nested git clones. Applies when the repo has shared .cursor/ and imported projects as normal clone folders. Use when adding, removing, or soft/hard switching projects. Soft switch = toggle .gitignore (no push, WIP stays). Hard switch = remove/add clone folders. Handles progress storage and window reload reminders.
npx skillsauth add JuroOravec/agents root-project-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guides the user through configuring imported projects in a root repo. This skill covers adding projects, removing projects, and switching between projects. See docs/project-setup.md for the conceptual overview.
This skill applies only when you have a root repo with this setup:
.cursor config — The root repo stores a single .cursor/ directory (agents, skills, rules) at its root.git clone directories; they are real directories, not symlinks..cursor/.root-repo/ ← root (this skill applies here)
├── .cursor/ ← shared config (one definition for all)
│ ├── agents/
│ ├── rules/
│ └── skills/
├── project-a/ ← nested git clone (imported)
├── project-b/ ← nested git clone (imported)
└── ...
If the workspace is a plain single-project repo (or a monorepo without this imported-clone pattern), this skill does not apply.
Trigger this skill when:
.gitignore) or hard (remove one project folder, clone another)..cursor/ and projects as nested clones).Format: All skills MUST use ### Phase N: Title for each workflow step. Enforced by validation script in CI.
Skill-eval (meta-evaluation): From the project root, run ./scripts/skill-eval.sh start {conversation_id} root-project-setup at workflow start (conversation_id is injected at session start—look for "Conversation ID (for skill-eval)" in context). Capture the printed skill_id from the terminal output. Preserve both conversation_id and skill_id for the duration—if context gets summarized, ensure these IDs are retained. After each phase (or when skipping a phase), run ./scripts/skill-eval.sh complete {skill_id} {phase_no} or ./scripts/skill-eval.sh complete {skill_id} {phase_no} --skipped from the project root.
Create todo tasks for each phase before proceeding.
Ask the user which operation they want:
.gitignore so tooling skips projects you're not using. Prettier and Cursor (when no .cursorignore) respect .gitignore; ESLint needs includeIgnoreFile from @eslint/compat. No folder deletion; WIP stays local.If the user says "switch" or "change projects" and the intent is unclear, ask: "Do you want a soft switch (toggle .gitignore to reduce focus — no push, WIP stays) or a hard switch (remove one folder and clone another — requires storing progress first)?" If still ambiguous after asking, default to soft.
When switching projects without removing project folders:
.gitignore — add paths for projects to ignore (e.g. crawlee-one/), remove or comment out paths to activate. If you have a separate .cursorignore, manage it together with .gitignore; otherwise Cursor uses .gitignore. For ESLint at root: ensure eslint.config.js uses includeIgnoreFile from @eslint/compat to import .gitignore.For each project to add:
Ask for repo URL — e.g. https://github.com/owner/repo.git or [email protected]:owner/repo.git.
Ask for branch — which branch to track. Default: main if the user does not specify.
Choose path — typically the repo name (e.g. crawlee-one, actor-spec). Confirm with the user if ambiguous.
Run clone:
git clone -b <branch> <repo-url> <path>
Ensure root ignore is set so imported projects are not tracked by the root repo:
# add if missing
echo "<path>/" >> .gitignore
Commit root metadata only if requested (typically .gitignore updates).
Reminder: After adding, switching, or removing imported projects, the workspace may need a window reload (e.g. Cursor: Developer: Reload Window) for indexing to pick up the changes. Remind the user at the end of the workflow.
Before removing any project:
Ask about progress storage — "Do you want to store progress before removing? Where? (e.g. push to the project's own repo, create a backup branch, or skip if there is no uncommitted work)"
If storing progress:
cd <path> && git push origin <branch> (or the user's chosen destination).git checkout -b backup-<date> && git push origin backup-<date>.Then remove the project folder:
rm -rf <path>
If desired, update .gitignore (keep entry if it may be re-cloned later; remove entry if fully retiring path).
Commit root metadata only if requested (usually .gitignore updates).
If hard switching: After removing, proceed to Phase 2b to clone the replacement project.
Reminder: Switching or removing imported projects may require a window reload for Cursor to refresh indexing. Remind the user at the end.
After any add, remove, or switch operation, tell the user:
Project import changes may require a window reload for Cursor to re-index. Use Developer: Reload Window (Cmd+Shift+P) if the new project does not appear in search or if the removed project still appears.
.gitignore if needed.rm -rf <path> only after the user confirms.meta-skill-create, project-polish, etc.development
Execute development work from a pool of GitHub issues. Take one at a time, implement via act-dev, close the issue when done. Use when architect/PM has produced a backlog of issues to implement in parallel.
testing
Adversarial reviewer that independently checks completed work for incomplete output, non-holistic approach, glaring issues, and skill discovery.
development
Project manager agent for capture, triage, and prioritization. Use when capturing ideas, going over inbox (elevate/drop/prioritize), triaging backlog, asking "what's next?", or restoring context. First local, then GitHub — never auto-create issues.
development
Design and break down large work into actionable pieces. Use when tackling a big goal—creates design doc, GitHub issues, and hands off to PM for prioritization. Start with the most straightforward chunk.