@fro.bot/systematic 1.14.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +29 -3
  2. package/package.json +4 -2
  3. package/skills/agent-browser/SKILL.md +1 -0
  4. package/skills/agent-native-architecture/SKILL.md +4 -4
  5. package/skills/agent-native-architecture/references/files-universal-interface.md +1 -1
  6. package/skills/agent-native-architecture/references/product-implications.md +1 -1
  7. package/skills/brainstorming/SKILL.md +1 -0
  8. package/skills/compound-docs/SKILL.md +14 -13
  9. package/skills/compound-docs/assets/critical-pattern-template.md +1 -1
  10. package/skills/compound-docs/assets/resolution-template.md +3 -3
  11. package/skills/compound-docs/references/yaml-schema.md +2 -2
  12. package/skills/create-agent-skills/SKILL.md +169 -192
  13. package/skills/create-agent-skills/references/api-security.md +24 -24
  14. package/skills/create-agent-skills/references/executable-code.md +1 -1
  15. package/skills/create-agent-skills/references/official-spec.md +74 -125
  16. package/skills/create-agent-skills/references/skill-structure.md +109 -329
  17. package/skills/create-agent-skills/workflows/add-reference.md +3 -3
  18. package/skills/create-agent-skills/workflows/add-script.md +2 -2
  19. package/skills/create-agent-skills/workflows/add-template.md +1 -1
  20. package/skills/create-agent-skills/workflows/add-workflow.md +5 -5
  21. package/skills/create-agent-skills/workflows/audit-skill.md +6 -6
  22. package/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +8 -8
  23. package/skills/create-agent-skills/workflows/create-new-skill.md +8 -8
  24. package/skills/create-agent-skills/workflows/upgrade-to-router.md +5 -5
  25. package/skills/create-agent-skills/workflows/verify-skill.md +4 -4
  26. package/skills/document-review/SKILL.md +88 -0
  27. package/skills/file-todos/SKILL.md +3 -2
  28. package/skills/file-todos/assets/todo-template.md +1 -1
  29. package/skills/frontend-design/SKILL.md +43 -0
  30. package/skills/git-worktree/SKILL.md +23 -22
  31. package/skills/git-worktree/scripts/worktree-manager.sh +2 -10
  32. package/skills/orchestrating-swarms/SKILL.md +1718 -0
@@ -18,7 +18,7 @@
18
18
  **If user just invoked skill without context:**
19
19
  → Ask what they want to build
20
20
 
21
- ### Using AskUserQuestion
21
+ ### Using question tool
22
22
 
23
23
  Ask 2-4 domain-specific questions based on actual gaps. Each question should:
24
24
  - Have specific options with descriptions
@@ -42,7 +42,7 @@ Options:
42
42
 
43
43
  ## Step 2: Research Trigger (If External API)
44
44
 
45
- **When external service detected**, ask using AskUserQuestion:
45
+ **When external service detected**, ask using question tool:
46
46
  "This involves [service name] API. Would you like me to research current endpoints and patterns before building?"
47
47
 
48
48
  Options:
@@ -90,13 +90,13 @@ See references/recommended-structure.md for templates.
90
90
  ## Step 4: Create Directory
91
91
 
92
92
  ```bash
93
- mkdir -p ~/.claude/skills/{skill-name}
93
+ mkdir -p ~/.config/opencode/skills/{skill-name}
94
94
  # If complex:
95
- mkdir -p ~/.claude/skills/{skill-name}/workflows
96
- mkdir -p ~/.claude/skills/{skill-name}/references
95
+ mkdir -p ~/.config/opencode/skills/{skill-name}/workflows
96
+ mkdir -p ~/.config/opencode/skills/{skill-name}/references
97
97
  # If needed:
98
- mkdir -p ~/.claude/skills/{skill-name}/templates # for output structures
99
- mkdir -p ~/.claude/skills/{skill-name}/scripts # for reusable code
98
+ mkdir -p ~/.config/opencode/skills/{skill-name}/templates # for output structures
99
+ mkdir -p ~/.config/opencode/skills/{skill-name}/scripts # for reusable code
100
100
  ```
101
101
 
102
102
  ## Step 5: Write SKILL.md
@@ -154,7 +154,7 @@ Check:
154
154
  ## Step 9: Create Slash Command
155
155
 
156
156
  ```bash
157
- cat > ~/.claude/commands/{skill-name}.md << 'EOF'
157
+ cat > ~/.config/opencode/commands/{skill-name}.md << 'EOF'
158
158
  ---
159
159
  description: {Brief description}
160
160
  argument-hint: [{argument hint}]
@@ -10,7 +10,7 @@
10
10
  ## Step 1: Select the Skill
11
11
 
12
12
  ```bash
13
- ls ~/.claude/skills/
13
+ ls ~/.config/opencode/skills/
14
14
  ```
15
15
 
16
16
  Present numbered list, ask: "Which skill should be upgraded to the router pattern?"
@@ -19,8 +19,8 @@ Present numbered list, ask: "Which skill should be upgraded to the router patter
19
19
 
20
20
  Read the skill:
21
21
  ```bash
22
- cat ~/.claude/skills/{skill-name}/SKILL.md
23
- ls ~/.claude/skills/{skill-name}/
22
+ cat ~/.config/opencode/skills/{skill-name}/SKILL.md
23
+ ls ~/.config/opencode/skills/{skill-name}/
24
24
  ```
25
25
 
26
26
  **Already a router?** (has workflows/ and intake question)
@@ -65,8 +65,8 @@ Ask: "Does this breakdown look right? Any adjustments?"
65
65
  ## Step 4: Create Directory Structure
66
66
 
67
67
  ```bash
68
- mkdir -p ~/.claude/skills/{skill-name}/workflows
69
- mkdir -p ~/.claude/skills/{skill-name}/references
68
+ mkdir -p ~/.config/opencode/skills/{skill-name}/workflows
69
+ mkdir -p ~/.config/opencode/skills/{skill-name}/references
70
70
  ```
71
71
 
72
72
  ## Step 5: Extract Workflows
@@ -15,7 +15,7 @@ Skills contain claims about external things: APIs, CLI tools, frameworks, servic
15
15
  ## Step 1: Select the Skill
16
16
 
17
17
  ```bash
18
- ls ~/.claude/skills/
18
+ ls ~/.config/opencode/skills/
19
19
  ```
20
20
 
21
21
  Present numbered list, ask: "Which skill should I verify for accuracy?"
@@ -24,9 +24,9 @@ Present numbered list, ask: "Which skill should I verify for accuracy?"
24
24
 
25
25
  Read the entire skill (SKILL.md + workflows/ + references/):
26
26
  ```bash
27
- cat ~/.claude/skills/{skill-name}/SKILL.md
28
- cat ~/.claude/skills/{skill-name}/workflows/*.md 2>/dev/null
29
- cat ~/.claude/skills/{skill-name}/references/*.md 2>/dev/null
27
+ cat ~/.config/opencode/skills/{skill-name}/SKILL.md
28
+ cat ~/.config/opencode/skills/{skill-name}/workflows/*.md 2>/dev/null
29
+ cat ~/.config/opencode/skills/{skill-name}/references/*.md 2>/dev/null
30
30
  ```
31
31
 
32
32
  Categorize by primary dependency type:
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: document-review
3
+ description: This skill should be used to refine brainstorm or plan documents before proceeding to the next workflow step. It applies when a brainstorm or plan document exists and the user wants to improve it.
4
+ ---
5
+
6
+ # Document Review
7
+
8
+ Improve brainstorm or plan documents through structured review.
9
+
10
+ ## Step 1: Get the Document
11
+
12
+ **If a document path is provided:** Read it, then proceed to Step 2.
13
+
14
+ **If no document is specified:** Ask which document to review, or look for the most recent brainstorm/plan in `docs/brainstorms/` or `docs/plans/`.
15
+
16
+ ## Step 2: Assess
17
+
18
+ Read through the document and ask:
19
+
20
+ - What is unclear?
21
+ - What is unnecessary?
22
+ - What decision is being avoided?
23
+ - What assumptions are unstated?
24
+ - Where could scope accidentally expand?
25
+
26
+ These questions surface issues. Don't fix yet—just note what you find.
27
+
28
+ ## Step 3: Evaluate
29
+
30
+ Score the document against these criteria:
31
+
32
+ | Criterion | What to Check |
33
+ |-----------|---------------|
34
+ | **Clarity** | Problem statement is clear, no vague language ("probably," "consider," "try to") |
35
+ | **Completeness** | Required sections present, constraints stated, open questions flagged |
36
+ | **Specificity** | Concrete enough for next step (brainstorm → can plan, plan → can implement) |
37
+ | **YAGNI** | No hypothetical features, simplest approach chosen |
38
+
39
+ If invoked within a workflow (after `/workflows:brainstorm` or `/workflows:plan`), also check:
40
+ - **User intent fidelity** — Document reflects what was discussed, assumptions validated
41
+
42
+ ## Step 4: Identify the Critical Improvement
43
+
44
+ Among everything found in Steps 2-3, does one issue stand out? If something would significantly improve the document's quality, this is the "must address" item. Highlight it prominently.
45
+
46
+ ## Step 5: Make Changes
47
+
48
+ Present your findings, then:
49
+
50
+ 1. **Auto-fix** minor issues (vague language, formatting) without asking
51
+ 2. **Ask approval** before substantive changes (restructuring, removing sections, changing meaning)
52
+ 3. **Update** the document inline—no separate files, no metadata sections
53
+
54
+ ### Simplification Guidance
55
+
56
+ Simplification is purposeful removal of unnecessary complexity, not shortening for its own sake.
57
+
58
+ **Simplify when:**
59
+ - Content serves hypothetical future needs, not current ones
60
+ - Sections repeat information already covered elsewhere
61
+ - Detail exceeds what's needed to take the next step
62
+ - Abstractions or structure add overhead without clarity
63
+
64
+ **Don't simplify:**
65
+ - Constraints or edge cases that affect implementation
66
+ - Rationale that explains why alternatives were rejected
67
+ - Open questions that need resolution
68
+
69
+ ## Step 6: Offer Next Action
70
+
71
+ After changes are complete, ask:
72
+
73
+ 1. **Refine again** - Another review pass
74
+ 2. **Review complete** - Document is ready
75
+
76
+ ### Iteration Guidance
77
+
78
+ After 2 refinement passes, recommend completion—diminishing returns are likely. But if the user wants to continue, allow it.
79
+
80
+ Return control to the caller (workflow or user) after selection.
81
+
82
+ ## What NOT to Do
83
+
84
+ - Do not rewrite the entire document
85
+ - Do not add new sections or requirements the user didn't discuss
86
+ - Do not over-engineer or add complexity
87
+ - Do not create separate review files or add metadata sections
88
+
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: file-todos
3
3
  description: This skill should be used when managing the file-based todo tracking system in the todos/ directory. It provides workflows for creating todos, managing status and dependencies, conducting triage, and integrating with slash commands and code review processes.
4
+ disable-model-invocation: true
4
5
  ---
5
6
 
6
7
  # File-Based Todo Tracking Skill
@@ -149,7 +150,7 @@ done
149
150
  ```markdown
150
151
  ### YYYY-MM-DD - Session Title
151
152
 
152
- **By:** Claude Code / Developer Name
153
+ **By:** OpenCode / Developer Name
153
154
 
154
155
  **Actions:**
155
156
  - Specific changes made (include file:line references)
@@ -244,7 +245,7 @@ grep -r "payment" todos/
244
245
  - Active Record CRUD operations
245
246
  - Different from this file-based system
246
247
 
247
- **TodoWrite tool:**
248
+ **todowrite tool:**
248
249
  - In-memory task tracking during agent sessions
249
250
  - Temporary tracking for single conversation
250
251
  - Not persisted to disk
@@ -129,7 +129,7 @@ Chronological record of work sessions, actions taken, and learnings.
129
129
 
130
130
  ### 2025-11-12 - Initial Discovery
131
131
 
132
- **By:** Claude Code
132
+ **By:** OpenCode
133
133
 
134
134
  **Actions:**
135
135
  - Identified 12 missing test scenarios
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: frontend-design
3
+ description: This skill should be used when creating distinctive, production-grade frontend interfaces with high design quality. It applies when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
4
+ license: Complete terms in LICENSE.txt
5
+ ---
6
+
7
+ This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
8
+
9
+ The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
10
+
11
+ ## Design Thinking
12
+
13
+ Before coding, understand the context and commit to a BOLD aesthetic direction:
14
+ - **Purpose**: What problem does this interface solve? Who uses it?
15
+ - **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
16
+ - **Constraints**: Technical requirements (framework, performance, accessibility).
17
+ - **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember?
18
+
19
+ **CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
20
+
21
+ Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
22
+ - Production-grade and functional
23
+ - Visually striking and memorable
24
+ - Cohesive with a clear aesthetic point-of-view
25
+ - Meticulously refined in every detail
26
+
27
+ ## Frontend Aesthetics Guidelines
28
+
29
+ Focus on:
30
+ - **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
31
+ - **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
32
+ - **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
33
+ - **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
34
+ - **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.
35
+
36
+ NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
37
+
38
+ Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
39
+
40
+ **IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
41
+
42
+ Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
43
+
@@ -28,7 +28,7 @@ The script handles critical setup that raw git commands don't:
28
28
 
29
29
  ```bash
30
30
  # ✅ CORRECT - Always use the script
31
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-name
31
+ bash scripts/worktree-manager.sh create feature-name
32
32
 
33
33
  # ❌ WRONG - Never do this directly
34
34
  git worktree add .worktrees/feature-name -b feature-name main
@@ -45,7 +45,7 @@ Use this skill in these scenarios:
45
45
 
46
46
  ## How to Use
47
47
 
48
- ### In Claude Code Workflows
48
+ ### In OpenCode Workflows
49
49
 
50
50
  The skill is automatically called from `/workflows:review` and `/workflows:work` commands:
51
51
 
@@ -60,19 +60,19 @@ You can also invoke the skill directly from bash:
60
60
 
61
61
  ```bash
62
62
  # Create a new worktree (copies .env files automatically)
63
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
63
+ bash scripts/worktree-manager.sh create feature-login
64
64
 
65
65
  # List all worktrees
66
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
66
+ bash scripts/worktree-manager.sh list
67
67
 
68
68
  # Switch to a worktree
69
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
69
+ bash scripts/worktree-manager.sh switch feature-login
70
70
 
71
71
  # Copy .env files to an existing worktree (if they weren't copied)
72
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-login
72
+ bash scripts/worktree-manager.sh copy-env feature-login
73
73
 
74
74
  # Clean up completed worktrees
75
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
75
+ bash scripts/worktree-manager.sh cleanup
76
76
  ```
77
77
 
78
78
  ## Commands
@@ -87,7 +87,7 @@ Creates a new worktree with the given branch name.
87
87
 
88
88
  **Example:**
89
89
  ```bash
90
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
90
+ bash scripts/worktree-manager.sh create feature-login
91
91
  ```
92
92
 
93
93
  **What happens:**
@@ -103,7 +103,7 @@ Lists all available worktrees with their branches and current status.
103
103
 
104
104
  **Example:**
105
105
  ```bash
106
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
106
+ bash scripts/worktree-manager.sh list
107
107
  ```
108
108
 
109
109
  **Output shows:**
@@ -118,7 +118,7 @@ Switches to an existing worktree and cd's into it.
118
118
 
119
119
  **Example:**
120
120
  ```bash
121
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
121
+ bash scripts/worktree-manager.sh switch feature-login
122
122
  ```
123
123
 
124
124
  **Optional:**
@@ -130,7 +130,7 @@ Interactively cleans up inactive worktrees with confirmation.
130
130
 
131
131
  **Example:**
132
132
  ```bash
133
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
133
+ bash scripts/worktree-manager.sh cleanup
134
134
  ```
135
135
 
136
136
  **What happens:**
@@ -144,39 +144,39 @@ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh clean
144
144
  ### Code Review with Worktree
145
145
 
146
146
  ```bash
147
- # Claude Code recognizes you're not on the PR branch
147
+ # OpenCode recognizes you're not on the PR branch
148
148
  # Offers: "Use worktree for isolated review? (y/n)"
149
149
 
150
150
  # You respond: yes
151
151
  # Script runs (copies .env files automatically):
152
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create pr-123-feature-name
152
+ bash scripts/worktree-manager.sh create pr-123-feature-name
153
153
 
154
154
  # You're now in isolated worktree for review with all env vars
155
155
  cd .worktrees/pr-123-feature-name
156
156
 
157
157
  # After review, return to main:
158
158
  cd ../..
159
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
159
+ bash scripts/worktree-manager.sh cleanup
160
160
  ```
161
161
 
162
162
  ### Parallel Feature Development
163
163
 
164
164
  ```bash
165
165
  # For first feature (copies .env files):
166
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
166
+ bash scripts/worktree-manager.sh create feature-login
167
167
 
168
168
  # Later, start second feature (also copies .env files):
169
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-notifications
169
+ bash scripts/worktree-manager.sh create feature-notifications
170
170
 
171
171
  # List what you have:
172
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
172
+ bash scripts/worktree-manager.sh list
173
173
 
174
174
  # Switch between them as needed:
175
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
175
+ bash scripts/worktree-manager.sh switch feature-login
176
176
 
177
177
  # Return to main and cleanup when done:
178
178
  cd .
179
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
179
+ bash scripts/worktree-manager.sh cleanup
180
180
  ```
181
181
 
182
182
  ## Key Design Principles
@@ -242,7 +242,7 @@ Switch out of the worktree first (to main repo), then cleanup:
242
242
 
243
243
  ```bash
244
244
  cd $(git rev-parse --show-toplevel)
245
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
245
+ bash scripts/worktree-manager.sh cleanup
246
246
  ```
247
247
 
248
248
  ### Lost in a worktree?
@@ -250,7 +250,7 @@ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh clean
250
250
  See where you are:
251
251
 
252
252
  ```bash
253
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
253
+ bash scripts/worktree-manager.sh list
254
254
  ```
255
255
 
256
256
  ### .env files missing in worktree?
@@ -258,7 +258,7 @@ bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
258
258
  If a worktree was created without .env files (e.g., via raw `git worktree add`), copy them:
259
259
 
260
260
  ```bash
261
- bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-name
261
+ bash scripts/worktree-manager.sh copy-env feature-name
262
262
  ```
263
263
 
264
264
  Navigate back to main:
@@ -300,3 +300,4 @@ cd $(git rev-parse --show-toplevel)
300
300
  - No repository duplication
301
301
  - Shared git objects for efficiency
302
302
  - Much faster than cloning or stashing/switching
303
+
@@ -91,14 +91,6 @@ create_worktree() {
91
91
  echo -e "${BLUE}Creating worktree: $branch_name${NC}"
92
92
  echo " From: $from_branch"
93
93
  echo " Path: $worktree_path"
94
- echo ""
95
- echo "Proceed? (y/n)"
96
- read -r response
97
-
98
- if [[ "$response" != "y" ]]; then
99
- echo -e "${YELLOW}Cancelled${NC}"
100
- return
101
- fi
102
94
 
103
95
  # Update main branch
104
96
  echo -e "${BLUE}Updating $from_branch...${NC}"
@@ -134,7 +126,7 @@ list_worktrees() {
134
126
 
135
127
  local count=0
136
128
  for worktree_path in "$WORKTREE_DIR"/*; do
137
- if [[ -d "$worktree_path" && -d "$worktree_path/.git" ]]; then
129
+ if [[ -d "$worktree_path" && -e "$worktree_path/.git" ]]; then
138
130
  count=$((count + 1))
139
131
  local worktree_name=$(basename "$worktree_path")
140
132
  local branch=$(git -C "$worktree_path" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
@@ -231,7 +223,7 @@ cleanup_worktrees() {
231
223
  local to_remove=()
232
224
 
233
225
  for worktree_path in "$WORKTREE_DIR"/*; do
234
- if [[ -d "$worktree_path" && -d "$worktree_path/.git" ]]; then
226
+ if [[ -d "$worktree_path" && -e "$worktree_path/.git" ]]; then
235
227
  local worktree_name=$(basename "$worktree_path")
236
228
 
237
229
  # Skip if current worktree