Phase 2: universal installer (Claude Code · Cursor · Kiro · VS Code) - #26
Merged
Conversation
Rewrite install.sh as a vendor-neutral installer that wires up any of the four editors and emits the right config for each (no lock-in): - Claude Code: .claude/skills + .claude/commands + CLAUDE.md - Cursor: .cursor/rules/ai-dev-team.mdc + AGENTS.md - Kiro: .kiro/steering/ai-dev-team.md + AGENTS.md - VS Code (Copilot): .github/copilot-instructions.md + AGENTS.md Flags: --editors=, --scope=project|user, --preset=solo|small-team|regulated, --dry-run, --yes, --link, --uninstall. Applies the chosen preset to workflow.yaml. Preserves the previous Claude advanced-backend setup as scripts/setup-claude-backends.sh. README Quick Start updated; .gitignore guards self-install artifacts (.claude/, .cursor/, .kiro/, .mcp.json).
There was a problem hiding this comment.
Pull request overview
This PR introduces a vendor-neutral “universal installer” that can wire up AI Dev Team instructions for multiple editors (Claude Code, Cursor, Kiro, VS Code/Copilot), updates the README quick start accordingly, and adds ignore rules for generated install artifacts. It also adds a preserved Claude-only “advanced backends” setup script.
Changes:
- Rewrites
install.shinto a multi-editor installer supporting--editors,--scope,--preset,--dry-run,--link, and--uninstall. - Adds
scripts/setup-claude-backends.shto preserve the legacy Claude advanced setup path (venvs/RAG/MCP integrations). - Updates
README.mdand.gitignorefor the universal installation flow and generated artifacts.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
install.sh |
New universal installer logic, editor config emitters, preset selection, and uninstall support. |
scripts/setup-claude-backends.sh |
Preserved legacy Claude advanced setup/installer script, now located under scripts/. |
README.md |
Quick Start rewritten to describe the universal installer and editor outputs. |
.gitignore |
Ignores local install artifacts like .claude/, .cursor/, .kiro/, .mcp.json. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…er link/uninstall - scripts/setup-claude-backends.sh: SCRIPT_DIR resolves to the repo root (the script lives in scripts/), fixing the claude/, multi-llm/, rag/ paths used by prerequisites / venvs / rag / multi-llm / hooks. Updated header usage examples. - install.sh: --link now COPIES workflow/ (symlinks the rest) so --preset applies per-project without mutating the source repo; --uninstall no longer prompts for editors (it removes all known configs regardless).
- run() executes args directly ("$@"), no eval — safe with quotes/spaces in paths.
- Validate --editors; fail fast on unknown names.
- Confirm before overwriting existing content unless --yes (guards ~/.claude).
- Preset edit replaces only the value, preserving the inline comment in workflow.yaml.
- Emit AGENTS.md whenever Cursor/Kiro/VS Code is selected, even in user scope.
- Uninstall removes project-level editor configs regardless of scope, and removes
AGENTS.md/CLAUDE.md only if they carry our header.
- scripts/setup-claude-backends.sh: silent API-key prompts (read -rsp).
- show_help prints only the leading comment block (no code lines leaked). - write_instructions won't clobber a pre-existing AGENTS.md/CLAUDE.md that isn't AI Dev Team-managed (prompts unless --yes; skips on no). - scripts/setup-claude-backends.sh: 'setup_venvs || true' so a venv skip doesn't abort under set -e; fix docs URL to olehsvyrydov/AI-development-team.
…rride The active preset resolves from .aidevteam/workflow.yaml (project) or ~/.aidevteam/workflow.yaml (user) before the shipped default, so the installer now writes the chosen preset there (a copy of workflow.yaml) instead of editing the default — which also lets --link symlink all content. Instruction text + the final hint point to the override; --uninstall removes it (and the .aidevteam dir if empty). Also: emit_mcp drops the unused 'ref' + fixes its comment; backends find uses NUL-delimited -print0 / read -d '' for paths with spaces.
…failure handling
- install.sh: fail fast with a clear message if the framework content
(SOURCE_DIR/claude/{skills,commands,templates,workflow}) is missing.
- emit_vscode uses write_instructions so it won't clobber a pre-existing
.github/copilot-instructions.md that isn't AI Dev Team-managed.
- README: add --yes to the non-interactive example so it truly doesn't prompt.
- scripts/setup-claude-backends.sh: pip install '|| return 1' so a venv failure
returns to the caller (which tolerates it) instead of aborting under set -e.
…+ backends polish - install.sh: --uninstall confirms before removing anything (unless --yes/--dry-run), and removes .github/copilot-instructions.md only if it carries our header (so it won't delete an unrelated Copilot file the install previously skipped). - scripts/setup-claude-backends.sh: guard the Qdrant health check on curl being present (don't hang/confuse when curl is missing); fix the startup banner to 'AI Dev Team — Backend Setup'.
Comment on lines
+106
to
+112
| info "Installing framework content → $dest" | ||
| run mkdir -p "$dest" | ||
| for d in skills commands templates workflow; do | ||
| run rm -rf "$dest/$d" | ||
| if [ "$LINK" = 1 ]; then run ln -s "$SOURCE_DIR/claude/$d" "$dest/$d" | ||
| else run cp -R "$SOURCE_DIR/claude/$d" "$dest/$d"; fi | ||
| done |
Comment on lines
+228
to
+229
| local dest d f; dest="$(content_dir)" | ||
| for d in skills commands templates workflow; do run rm -rf "$dest/$d"; done |
| # the workflow override (+ its dir if now empty) | ||
| run rm -f "$(override_path)" | ||
| [ "$DRY_RUN" = 1 ] || rmdir "$(dirname "$(override_path)")" 2>/dev/null || true | ||
| [ "$SCOPE" = user ] && run rm -f "$HOME/.claude/CLAUDE.md" |
olehsvyrydov
added a commit
that referenced
this pull request
Jun 6, 2026
…26) * Phase 2: universal installer (Claude Code, Cursor, Kiro, VS Code) Rewrite install.sh as a vendor-neutral installer that wires up any of the four editors and emits the right config for each (no lock-in): - Claude Code: .claude/skills + .claude/commands + CLAUDE.md - Cursor: .cursor/rules/ai-dev-team.mdc + AGENTS.md - Kiro: .kiro/steering/ai-dev-team.md + AGENTS.md - VS Code (Copilot): .github/copilot-instructions.md + AGENTS.md Flags: --editors=, --scope=project|user, --preset=solo|small-team|regulated, --dry-run, --yes, --link, --uninstall. Applies the chosen preset to workflow.yaml. Preserves the previous Claude advanced-backend setup as scripts/setup-claude-backends.sh. README Quick Start updated; .gitignore guards self-install artifacts (.claude/, .cursor/, .kiro/, .mcp.json). * Address Copilot review on PR #26: fix backends-script paths + installer link/uninstall - scripts/setup-claude-backends.sh: SCRIPT_DIR resolves to the repo root (the script lives in scripts/), fixing the claude/, multi-llm/, rag/ paths used by prerequisites / venvs / rag / multi-llm / hooks. Updated header usage examples. - install.sh: --link now COPIES workflow/ (symlinks the rest) so --preset applies per-project without mutating the source repo; --uninstall no longer prompts for editors (it removes all known configs regardless). * Address Copilot re-review on PR #26: installer robustness - run() executes args directly ("$@"), no eval — safe with quotes/spaces in paths. - Validate --editors; fail fast on unknown names. - Confirm before overwriting existing content unless --yes (guards ~/.claude). - Preset edit replaces only the value, preserving the inline comment in workflow.yaml. - Emit AGENTS.md whenever Cursor/Kiro/VS Code is selected, even in user scope. - Uninstall removes project-level editor configs regardless of scope, and removes AGENTS.md/CLAUDE.md only if they carry our header. - scripts/setup-claude-backends.sh: silent API-key prompts (read -rsp). * Address Copilot re-review on PR #26: help/overwrite/venv/url - show_help prints only the leading comment block (no code lines leaked). - write_instructions won't clobber a pre-existing AGENTS.md/CLAUDE.md that isn't AI Dev Team-managed (prompts unless --yes; skips on no). - scripts/setup-claude-backends.sh: 'setup_venvs || true' so a venv skip doesn't abort under set -e; fix docs URL to olehsvyrydov/AI-development-team. * Address Copilot re-review on PR #26: write preset to the workflow override The active preset resolves from .aidevteam/workflow.yaml (project) or ~/.aidevteam/workflow.yaml (user) before the shipped default, so the installer now writes the chosen preset there (a copy of workflow.yaml) instead of editing the default — which also lets --link symlink all content. Instruction text + the final hint point to the override; --uninstall removes it (and the .aidevteam dir if empty). Also: emit_mcp drops the unused 'ref' + fixes its comment; backends find uses NUL-delimited -print0 / read -d '' for paths with spaces. * Address Copilot re-review on PR #26: prereq check, vscode guard, pip failure handling - install.sh: fail fast with a clear message if the framework content (SOURCE_DIR/claude/{skills,commands,templates,workflow}) is missing. - emit_vscode uses write_instructions so it won't clobber a pre-existing .github/copilot-instructions.md that isn't AI Dev Team-managed. - README: add --yes to the non-interactive example so it truly doesn't prompt. - scripts/setup-claude-backends.sh: pip install '|| return 1' so a venv failure returns to the caller (which tolerates it) instead of aborting under set -e. * Address Copilot re-review on PR #26: uninstall confirmation + guards + backends polish - install.sh: --uninstall confirms before removing anything (unless --yes/--dry-run), and removes .github/copilot-instructions.md only if it carries our header (so it won't delete an unrelated Copilot file the install previously skipped). - scripts/setup-claude-backends.sh: guard the Qdrant health check on curl being present (don't hang/confuse when curl is missing); fix the startup banner to 'AI Dev Team — Backend Setup'.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Rewrites
install.shinto a vendor-neutral, multi-editor installer — the core of the 'works everywhere, no lock-in' promise. Pick your editor(s); it emits the right config for each:.claude/skills+.claude/commands+CLAUDE.md.cursor/rules/ai-dev-team.mdc+AGENTS.md.kiro/steering/ai-dev-team.md+AGENTS.md.github/copilot-instructions.md+AGENTS.mdEach config is a short pointer to the installed content (workflow-engine first, then the roster + disambiguation + personas).
Flags
--editors=claude,cursor,kiro,vscode|all·--scope=project|user·--preset=solo|small-team|regulated·--dry-run·--yes(CI) ·--link(dev) ·--uninstall·--help. The chosen preset is written intoworkflow.yaml.Notes
scripts/setup-claude-backends.shand offered for Claude installs.--dry-runprints every action and changes nothing;--uninstallreverses it..gitignoreguards self-install artifacts.Verification
bash -n install.shclean.--help,--dry-run --editors=all, and a real--editors=all --preset=small-team --linkinstall in a temp project — all four editor configs + AGENTS.md/CLAUDE.md + content +.mcp.json.examplecreated correctly;--uninstallreverses it.