fix: correct SOURCE_KIRO path in Kiro installer#1025
Conversation
The script lives inside .kiro/, so SCRIPT_DIR already resolves to the .kiro directory. Appending /.kiro again produced an invalid path (.kiro/.kiro) causing the installer to find no source files to copy.
📝 WalkthroughWalkthroughThe installer script source directory resolution was updated from Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Greptile SummaryThis PR fixes a one-line path bug in Key changes:
The fix is correct for all three invocation forms documented in the script header and PR description ( Confidence Score: 5/5Safe to merge — the fix is minimal, correct, and well-tested across all documented invocation forms. Single-line bug fix with a clear root cause and correct resolution. No logic, security, or data concerns. The path derivation is straightforward and the fix is consistent with every described usage pattern. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["install.sh invoked"] --> B["SCRIPT_DIR = cd dirname($0) && pwd"]
B --> C{Invocation style}
C -- "./install.sh (from .kiro/)" --> D["SCRIPT_DIR = /repo/.kiro"]
C -- "bash .kiro/install.sh (from repo root)" --> E["SCRIPT_DIR = /repo/.kiro"]
C -- ".kiro/install.sh /target (with explicit target)" --> F["SCRIPT_DIR = /repo/.kiro"]
D --> G["SOURCE_KIRO = SCRIPT_DIR ✅"]
E --> G
F --> G
G --> H["Copy agents/skills/steering/hooks/scripts/settings"]
H --> I["TARGET/.kiro/subdir"]
style G fill:#22c55e,color:#fff
Reviews (1): Last reviewed commit: "fix: correct SOURCE_KIRO path in Kiro in..." | Re-trigger Greptile |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.kiro/install.sh:
- Around line 1-143: The install script .kiro/install.sh has CRLF line endings
(including the shebang) causing /bin/bash^M errors; convert the file to LF line
endings (preserve content like the shebang and variables such as SCRIPT_DIR and
SOURCE_KIRO) and commit the normalized file, and add a .gitattributes entry to
enforce LF for future commits (e.g. declare .kiro/*.sh as text with eol=lf) so
the installer and lines like the shebang are always written with LF.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
| #!/bin/bash | ||
| # | ||
| # ECC Kiro Installer | ||
| # Installs Everything Claude Code workflows into a Kiro project. | ||
| # | ||
| # Usage: | ||
| # ./install.sh # Install to current directory | ||
| # ./install.sh /path/to/dir # Install to specific directory | ||
| # ./install.sh ~ # Install globally to ~/.kiro/ | ||
| # | ||
|
|
||
| set -euo pipefail | ||
|
|
||
| # When globs match nothing, expand to empty list instead of the literal pattern | ||
| shopt -s nullglob | ||
|
|
||
| # Resolve the directory where this script lives | ||
| SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" | ||
|
|
||
| # The script lives inside .kiro/, so SCRIPT_DIR *is* the source. | ||
| # If invoked from the repo root (e.g., .kiro/install.sh), SCRIPT_DIR already | ||
| # points to the .kiro directory — no need to append /.kiro again. | ||
| SOURCE_KIRO="$SCRIPT_DIR" | ||
|
|
||
| # Target directory: argument or current working directory | ||
| TARGET="${1:-.}" | ||
|
|
||
| # Expand ~ to $HOME | ||
| if [ "$TARGET" = "~" ] || [[ "$TARGET" == "~/"* ]]; then | ||
| TARGET="${TARGET/#\~/$HOME}" | ||
| fi | ||
|
|
||
| # Resolve to absolute path | ||
| TARGET="$(cd "$TARGET" 2>/dev/null && pwd || echo "$TARGET")" | ||
|
|
||
| echo "ECC Kiro Installer" | ||
| echo "==================" | ||
| echo "" | ||
| echo "Source: $SOURCE_KIRO" | ||
| echo "Target: $TARGET/.kiro/" | ||
| echo "" | ||
|
|
||
| # Subdirectories to create and populate | ||
| SUBDIRS="agents skills steering hooks scripts settings" | ||
|
|
||
| # Create all required .kiro/ subdirectories | ||
| for dir in $SUBDIRS; do | ||
| mkdir -p "$TARGET/.kiro/$dir" | ||
| done | ||
|
|
||
| # Counters for summary | ||
| agents=0; skills=0; steering=0; hooks=0; scripts=0; settings=0 | ||
|
|
||
| # Copy agents (JSON for CLI, Markdown for IDE) | ||
| if [ -d "$SOURCE_KIRO/agents" ]; then | ||
| for f in "$SOURCE_KIRO/agents"/*.json "$SOURCE_KIRO/agents"/*.md; do | ||
| [ -f "$f" ] || continue | ||
| local_name=$(basename "$f") | ||
| if [ ! -f "$TARGET/.kiro/agents/$local_name" ]; then | ||
| cp "$f" "$TARGET/.kiro/agents/" 2>/dev/null || true | ||
| agents=$((agents + 1)) | ||
| fi | ||
| done | ||
| fi | ||
|
|
||
| # Copy skills (directories with SKILL.md) | ||
| if [ -d "$SOURCE_KIRO/skills" ]; then | ||
| for d in "$SOURCE_KIRO/skills"/*/; do | ||
| [ -d "$d" ] || continue | ||
| skill_name="$(basename "$d")" | ||
| if [ ! -d "$TARGET/.kiro/skills/$skill_name" ]; then | ||
| mkdir -p "$TARGET/.kiro/skills/$skill_name" | ||
| cp "$d"* "$TARGET/.kiro/skills/$skill_name/" 2>/dev/null || true | ||
| skills=$((skills + 1)) | ||
| fi | ||
| done | ||
| fi | ||
|
|
||
| # Copy steering files (markdown) | ||
| if [ -d "$SOURCE_KIRO/steering" ]; then | ||
| for f in "$SOURCE_KIRO/steering"/*.md; do | ||
| local_name=$(basename "$f") | ||
| if [ ! -f "$TARGET/.kiro/steering/$local_name" ]; then | ||
| cp "$f" "$TARGET/.kiro/steering/" 2>/dev/null || true | ||
| steering=$((steering + 1)) | ||
| fi | ||
| done | ||
| fi | ||
|
|
||
| # Copy hooks (.kiro.hook files and README) | ||
| if [ -d "$SOURCE_KIRO/hooks" ]; then | ||
| for f in "$SOURCE_KIRO/hooks"/*.kiro.hook "$SOURCE_KIRO/hooks"/*.md; do | ||
| [ -f "$f" ] || continue | ||
| local_name=$(basename "$f") | ||
| if [ ! -f "$TARGET/.kiro/hooks/$local_name" ]; then | ||
| cp "$f" "$TARGET/.kiro/hooks/" 2>/dev/null || true | ||
| hooks=$((hooks + 1)) | ||
| fi | ||
| done | ||
| fi | ||
|
|
||
| # Copy scripts (shell scripts) and make executable | ||
| if [ -d "$SOURCE_KIRO/scripts" ]; then | ||
| for f in "$SOURCE_KIRO/scripts"/*.sh; do | ||
| local_name=$(basename "$f") | ||
| if [ ! -f "$TARGET/.kiro/scripts/$local_name" ]; then | ||
| cp "$f" "$TARGET/.kiro/scripts/" 2>/dev/null || true | ||
| chmod +x "$TARGET/.kiro/scripts/$local_name" 2>/dev/null || true | ||
| scripts=$((scripts + 1)) | ||
| fi | ||
| done | ||
| fi | ||
|
|
||
| # Copy settings (example files) | ||
| if [ -d "$SOURCE_KIRO/settings" ]; then | ||
| for f in "$SOURCE_KIRO/settings"/*; do | ||
| [ -f "$f" ] || continue | ||
| local_name=$(basename "$f") | ||
| if [ ! -f "$TARGET/.kiro/settings/$local_name" ]; then | ||
| cp "$f" "$TARGET/.kiro/settings/" 2>/dev/null || true | ||
| settings=$((settings + 1)) | ||
| fi | ||
| done | ||
| fi | ||
|
|
||
| # Installation summary | ||
| echo "Installation complete!" | ||
| echo "" | ||
| echo "Components installed:" | ||
| echo " Agents: $agents" | ||
| echo " Skills: $skills" | ||
| echo " Steering: $steering" | ||
| echo " Hooks: $hooks" | ||
| echo " Scripts: $scripts" | ||
| echo " Settings: $settings" | ||
| echo "" | ||
| echo "Next steps:" | ||
| echo " 1. Open your project in Kiro" | ||
| echo " 2. Agents: Automatic in IDE, /agent swap in CLI" | ||
| echo " 3. Skills: Available via / menu in chat" | ||
| echo " 4. Steering files with 'auto' inclusion load automatically" | ||
| echo " 5. Toggle hooks in the Agent Hooks panel" | ||
| echo " 6. Copy desired MCP servers from .kiro/settings/mcp.json.example to .kiro/settings/mcp.json" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify whether .kiro/install.sh contains CRLF (\r) bytes
python - <<'PY'
from pathlib import Path
p = Path(".kiro/install.sh")
b = p.read_bytes()
crlf = b.count(b"\r\n")
bare_cr = b.count(b"\r") - crlf
print(f"{p}: CRLF={crlf}, bare_CR={bare_cr}")
print("HAS_CR" if b"\r" in b else "LF_ONLY")
PYRepository: affaan-m/everything-claude-code
Length of output: 119
Blocker: Script uses CRLF line endings and will fail on Unix systems.
The file contains 143 CRLF line endings (\r\n), including the shebang. On Unix, this causes /bin/bash^M: bad interpreter errors and will prevent the installer from running.
Fix:
- Convert
.kiro/install.shto LF line endings - Add to
.gitattributesto prevent future regressions:.kiro/*.sh text eol=lf
🧰 Tools
🪛 Shellcheck (0.11.0)
[error] 1-1: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 2-2: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 3-3: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 4-4: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 5-5: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 6-6: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 7-7: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 8-8: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 9-9: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 10-10: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 11-11: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 12-12: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 13-13: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 14-14: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 15-15: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 16-16: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 17-17: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 18-18: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 19-19: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 20-20: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 21-21: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 22-22: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 23-23: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 24-24: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 25-25: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 26-26: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 27-27: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 28-28: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[warning] 29-29: Tilde does not expand in quotes. Use $HOME.
(SC2088)
[error] 29-29: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 30-30: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 31-31: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 32-32: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 33-33: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 34-34: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 35-35: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 36-36: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 37-37: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 38-38: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 39-39: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 40-40: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 41-41: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 42-42: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 43-43: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 44-44: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 45-45: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 46-46: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 47-47: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 48-48: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 49-49: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 50-50: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 51-51: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 52-52: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 53-53: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 54-54: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 55-55: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 56-56: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 57-57: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 58-58: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 59-59: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 60-60: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 61-61: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 62-62: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 63-63: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 64-64: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 65-65: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 66-66: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 67-67: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 68-68: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 69-69: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 70-70: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 71-71: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 72-72: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 73-73: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 74-74: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 75-75: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 76-76: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 77-77: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 78-78: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 79-79: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 80-80: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 81-81: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 82-82: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 83-83: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 84-84: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 85-85: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 86-86: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 87-87: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 88-88: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 89-89: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 90-90: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 91-91: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 92-92: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 93-93: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 94-94: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 95-95: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 96-96: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 97-97: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 98-98: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 99-99: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 100-100: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 101-101: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 102-102: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 103-103: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 104-104: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 105-105: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 106-106: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 107-107: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 108-108: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 109-109: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 110-110: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 111-111: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 112-112: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 113-113: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 114-114: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 115-115: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 116-116: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 117-117: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 118-118: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 119-119: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 120-120: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 121-121: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 122-122: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 123-123: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 124-124: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 125-125: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 126-126: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 127-127: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 128-128: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 129-129: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 130-130: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 131-131: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 132-132: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 133-133: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 134-134: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 135-135: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 136-136: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 137-137: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 138-138: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 139-139: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 140-140: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 141-141: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 142-142: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
[error] 143-143: Literal carriage return. Run script through tr -d '\r' .
(SC1017)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.kiro/install.sh around lines 1 - 143, The install script .kiro/install.sh
has CRLF line endings (including the shebang) causing /bin/bash^M errors;
convert the file to LF line endings (preserve content like the shebang and
variables such as SCRIPT_DIR and SOURCE_KIRO) and commit the normalized file,
and add a .gitattributes entry to enforce LF for future commits (e.g. declare
.kiro/*.sh as text with eol=lf) so the installer and lines like the shebang are
always written with LF.
The script lives inside .kiro/, so SCRIPT_DIR already resolves to the .kiro directory. Appending /.kiro again produced an invalid path (.kiro/.kiro) causing the installer to find no source files to copy.
The script lives inside .kiro/, so SCRIPT_DIR already resolves to the .kiro directory. Appending /.kiro again produced an invalid path (.kiro/.kiro) causing the installer to find no source files to copy.
Problem
Running
.kiro/install.shfrom inside the.kiro/directory produces an incorrect source path.SCRIPT_DIRresolves to the.kiro/directory, thenSOURCE_KIRO="$SCRIPT_DIR/.kiro"appends/.kiroagain, resulting in.kiro/.kirowhich does not exist. The installer silently copies nothing.Fix
Change
SOURCE_KIRO="$SCRIPT_DIR/.kiro"toSOURCE_KIRO="$SCRIPT_DIR"since the script already lives inside.kiro/.Testing
Verified the installer correctly resolves the source path when invoked as:
./install.sh(from inside.kiro/)bash .kiro/install.sh(from repo root).kiro/install.sh /path/to/target(with explicit target)Summary by cubic
Fix incorrect source path resolution in
.kiro/install.sh. The installer now uses the script’s directory as the source, avoiding.kiro/.kiroand copying files as expected.SOURCE_KIRO="$SCRIPT_DIR"since the installer runs from.kiro/..kiro/, from repo root, and with an explicit target.Written for commit 6a4bbd5. Summary will update on new commits.
Summary by CodeRabbit