@erclx/aitk 3.43.0 → 3.43.2
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.
|
@@ -25,7 +25,7 @@ The sequence also reaches the remote on work nothing re-checked. This skill is t
|
|
|
25
25
|
|
|
26
26
|
## Must not
|
|
27
27
|
|
|
28
|
-
- Auto-trigger. Shipping is a decision the user takes,
|
|
28
|
+
- Auto-trigger. Shipping is a decision the user takes, and the tool permission dialog on the push and the pull request is the gate that holds it now that the frontmatter no longer disables model invocation.
|
|
29
29
|
- Fix a failing check. The stop is the point, since a green pull request reached by auto-fix hides what broke.
|
|
30
30
|
- Run the memory Apply phase. Promoting an entry changes how the agent operates and ships as its own change.
|
|
31
31
|
- Attempt a fix for a failing verify. The user is already making one, which is what brought the run back here.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: git-ship
|
|
3
|
-
description: Runs the full post-feature workflow by syncing docs, staging commits, renaming the branch, and opening a PR. Use after implementing a feature, or when asked to "ship", "ship this", or "ship it".
|
|
4
|
-
disable-model-invocation: true
|
|
3
|
+
description: Runs the full post-feature workflow by syncing docs, staging commits, renaming the branch, and opening a PR. Use after implementing a feature, or when asked to "ship", "ship this", or "ship it". Do NOT auto-trigger. Shipping is a decision the user takes.
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Ship
|
|
@@ -14,7 +14,7 @@ Without this skill, linked worktrees accumulate past the point where any of them
|
|
|
14
14
|
- Resolve merge state per branch from the pull request first, and fall back to local ancestry when no pull request exists
|
|
15
15
|
- Match the ancestry fallback against the branch name alone. `git branch --merged` decorates the current branch and every branch checked out in a linked worktree, which is the whole set this skill enumerates.
|
|
16
16
|
- Remove the worktree and its local branch together, since either one left alone is the state the skill exists to prevent
|
|
17
|
-
- Exclude the main root, the current session's worktree,
|
|
17
|
+
- Exclude four kinds of row from the remove set: the main root, the current session's worktree, any dirty tree, and any worktree registered from outside the path prefix `claude-worktree` creates under
|
|
18
18
|
- Give every skipped row a one-word reason, so the skip is a decision the user can overturn rather than a silence
|
|
19
19
|
- Pick exactly one mode. Listing and removing are different requests and inferring both from one invocation removes worktrees the user meant to read about.
|
|
20
20
|
|
|
@@ -53,6 +53,8 @@ Determine dirtiness: `git -C <path> status --porcelain` non-empty means `dirty`.
|
|
|
53
53
|
|
|
54
54
|
Determine current: the row whose `path` equals `git rev-parse --show-toplevel`. Resolve the root rather than comparing `pwd`, which equals the worktree root only when the session sits at the top of it. A session in any subdirectory would match no row, and the current-worktree exclusion in `cleanup` would pass its own worktree into the remove set.
|
|
55
55
|
|
|
56
|
+
Determine provenance: a non-main row is `foreign` when its `path` does not start with `<MAIN_ROOT>/.claude/worktrees/`. That prefix is the folder `claude-worktree` creates under, a convention of that skill rather than a fact this one owns. A tree an operator registered by hand anywhere else on disk reads as `foreign`. Step 1 has already marked the main row `main`, so it never reaches this test.
|
|
57
|
+
|
|
56
58
|
## `list` mode
|
|
57
59
|
|
|
58
60
|
Print the enumeration as a table, then stop. `list` has no final command.
|
|
@@ -62,11 +64,11 @@ Print the enumeration as a table, then stop. `list` has no final command.
|
|
|
62
64
|
| -- | ---------------------------------- | ----------------- | -------- | ------ | -------- |
|
|
63
65
|
```
|
|
64
66
|
|
|
65
|
-
Notes column shows `current`, `dirty`, or empty. Show paths relative to `MAIN_ROOT` (`.claude/worktrees/<name>`).
|
|
67
|
+
Notes column shows the first that applies of `current`, `foreign`, `dirty`, or empty. Show paths relative to `MAIN_ROOT` (`.claude/worktrees/<name>`). A `foreign` row sits outside `MAIN_ROOT`, so print its path in full.
|
|
66
68
|
|
|
67
69
|
After the table, append a one-line hint:
|
|
68
70
|
|
|
69
|
-
- If any row is `merged` and clean and not current
|
|
71
|
+
- If any row is `merged` and clean and not current and not `foreign`: `Hint: /git-worktree cleanup to remove <count> merged worktrees.`
|
|
70
72
|
- Otherwise: `Hint: no worktrees ready for cleanup.`
|
|
71
73
|
|
|
72
74
|
## `cleanup` mode
|
|
@@ -75,10 +77,11 @@ From the enumeration, include a worktree in the remove set when all hold:
|
|
|
75
77
|
|
|
76
78
|
- Not the main row.
|
|
77
79
|
- Not the current session's worktree.
|
|
80
|
+
- Not a `foreign` tree.
|
|
78
81
|
- State is `merged` or `merged (local)`.
|
|
79
82
|
- Working tree is clean.
|
|
80
83
|
|
|
81
|
-
Every other non-main row goes to the skip set with a one-word reason: `current`, `dirty`, `open`, `closed`, `unmerged`.
|
|
84
|
+
Every other non-main row goes to the skip set with a one-word reason, the first that applies in this order: `current`, `foreign`, `dirty`, `open`, `closed`, `unmerged`. A `foreign` tree that is also dirty reports `foreign`, since `dirty` is a state the operator can clear and `foreign` is not. Leading with the transient reason invites a commit or stash that changes nothing, after which the row reports `foreign` and holds back anyway.
|
|
82
85
|
|
|
83
86
|
### Preview
|
|
84
87
|
|
|
@@ -94,7 +97,7 @@ Every other non-main row goes to the skip set with a one-word reason: `current`,
|
|
|
94
97
|
| ---- | ------ | ------ |
|
|
95
98
|
```
|
|
96
99
|
|
|
97
|
-
If the remove set is empty, stop with `❌ Nothing to remove. All linked worktrees are current, dirty, or
|
|
100
|
+
If the remove set is empty, stop with `❌ Nothing to remove. All linked worktrees are current, dirty, unmerged, or foreign.`
|
|
98
101
|
|
|
99
102
|
### Final command
|
|
100
103
|
|