fss-link 1.9.2 → 1.9.3

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.
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: worktrees
3
+ description: >
4
+ Git worktrees for isolated parallel development across agents.
5
+ Use when starting feature work that needs isolation, before executing
6
+ plans that risk breaking the main branch, or when another agent is
7
+ already working in the project.
8
+ category: workflow
9
+ triggers: [worktree, isolated, parallel, branch workspace]
10
+ version: 1
11
+ ---
12
+
13
+ # Git Worktrees — Isolated Parallel Development
14
+
15
+ **Use when:** Multiple agents need to work on different features simultaneously without interfering with each other.
16
+
17
+ ## When to Use
18
+
19
+ - Starting feature work that needs isolation from the current workspace
20
+ - Before executing implementation plans that risk breaking the main branch
21
+ - When another agent is already working in the project
22
+
23
+ ## When NOT to Use
24
+
25
+ - The user simply asks to fix a bug or implement a feature — those belong to the regular working directory
26
+ - You are already inside a worktree
27
+ - The project is not a git repository
28
+
29
+ ## Creating a Worktree
30
+
31
+ Use the `enter_worktree` tool:
32
+
33
+ ```
34
+ enter_worktree({ name: "fix-auth-bug" })
35
+ ```
36
+
37
+ Returns:
38
+ - `worktreePath` — absolute path (e.g., `/path/to/project/.fss-link/worktrees/fix-auth-bug`)
39
+ - `branch` — git branch name (e.g., `fss-link-fix-auth-bug`)
40
+
41
+ **CRITICAL:** Every tool call must use the full absolute `worktreePath`. Never use relative paths.
42
+
43
+ ```bash
44
+ # ✅ CORRECT — absolute path
45
+ write_file({ path: "/path/to/project/.fss-link/worktrees/fix-auth-bug/src/auth.ts", ... })
46
+
47
+ # ❌ WRONG — relative path modifies the MAIN checkout
48
+ write_file({ path: "src/auth.ts", ... })
49
+ ```
50
+
51
+ ## Verifying You Are in the Worktree
52
+
53
+ ```bash
54
+ pwd # Should show .../.fss-link/worktrees/<slug>/
55
+ git branch --show-current # Should show fss-link-<slug>
56
+ ```
57
+
58
+ ## Project Setup
59
+
60
+ Auto-detect and run appropriate setup:
61
+
62
+ ```bash
63
+ cd /path/to/project/.fss-link/worktrees/fix-auth-bug && npm install
64
+ cd /path/to/project/.fss-link/worktrees/fix-auth-bug && cargo build
65
+ cd /path/to/project/.fss-link/worktrees/fix-auth-bug && pip install -r requirements.txt
66
+ ```
67
+
68
+ ## Exiting a Worktree
69
+
70
+ ```
71
+ exit_worktree({ name: "fix-auth-bug", action: "keep" }) # Work in progress
72
+ exit_worktree({ name: "fix-auth-bug", action: "remove" }) # Work committed
73
+ exit_worktree({ name: "fix-auth-bug", action: "remove", discard_changes: true }) # Discard everything
74
+ ```
75
+
76
+ ## Quick Reference
77
+
78
+ | Situation | Action |
79
+ |-----------|--------|
80
+ | Need isolated workspace | `enter_worktree({ name: "feature-name" })` |
81
+ | Already in a worktree | Do NOT call enter_worktree again |
82
+ | Done, work in progress | `exit_worktree({ name, action: "keep" })` |
83
+ | Done, work committed | `exit_worktree({ name, action: "remove" })` |
84
+ | Done, discard everything | `exit_worktree({ name, action: "remove", discard_changes: true })` |
85
+
86
+ ## Common Mistakes
87
+
88
+ 1. **Using relative paths** — Always use full `worktreePath` for every tool call
89
+ 2. **Creating nested worktrees** — Check path first; if it contains `.fss-link/worktrees/`, you're already in one
90
+ 3. **Running `git worktree add` manually** — Always use the `enter_worktree` tool
91
+ 4. **Removing with uncommitted changes** — Commit or stash first, or use `discard_changes: true`
92
+
93
+ ## Global Flags
94
+
95
+ N/A — this is a workflow skill, not a CLI tool.
96
+
97
+ ---
98
+
99
+ *This skill is part of the FSS Parsers collection.*
100
+
101
+ **References:**
102
+ - Full procedural guide → `references/capabilities.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fss-link",
3
- "version": "1.9.2",
3
+ "version": "1.9.3",
4
4
  "engines": {
5
5
  "node": ">=20.0.0"
6
6
  },
@@ -13,7 +13,7 @@
13
13
  "url": "git+https://github.com/FSSCoding/fss-link.git"
14
14
  },
15
15
  "config": {
16
- "sandboxImageUri": "ghcr.io/fsscoding/fss-link:1.9.2"
16
+ "sandboxImageUri": "ghcr.io/fsscoding/fss-link:1.9.3"
17
17
  },
18
18
  "scripts": {
19
19
  "start": "node scripts/start.js",
@@ -46,4 +46,22 @@ for (const file of sbFiles) {
46
46
  copyFileSync(join(root, file), join(bundleDir, basename(file)));
47
47
  }
48
48
 
49
+ // Copy bundled default skills (SKILL.md files) alongside the bundled JS.
50
+ // bundledSkills.ts reads these via `path.join(__dirname, './<dir>/SKILL.md')`
51
+ // relative to the running bundle/fss-link-main.js, so the source tree layout
52
+ // (packages/core/src/bundled-skills/<dir>/SKILL.md) must be mirrored here as
53
+ // bundle/<dir>/SKILL.md — esbuild only bundles JS, it never copies these.
54
+ const skillFiles = glob.sync('packages/core/src/bundled-skills/**/SKILL.md', {
55
+ cwd: root,
56
+ });
57
+ for (const file of skillFiles) {
58
+ const rel = file.replace('packages/core/src/bundled-skills/', '');
59
+ const dest = join(bundleDir, rel);
60
+ mkdirSync(dirname(dest), { recursive: true });
61
+ copyFileSync(join(root, file), dest);
62
+ }
63
+ if (skillFiles.length > 0) {
64
+ console.log(`Bundled skills copied to bundle/ (${skillFiles.length} file(s))`);
65
+ }
66
+
49
67
  console.log('Assets copied to bundle/');