@laitszkin/apollo-toolkit 2.14.6 → 2.14.8
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.
- package/CHANGELOG.md +10 -0
- package/generate-spec/README.md +3 -2
- package/generate-spec/SKILL.md +7 -2
- package/generate-spec/agents/openai.yaml +1 -1
- package/generate-spec/references/templates/coordination.md +6 -3
- package/merge-changes-from-local-branches/SKILL.md +17 -1
- package/merge-changes-from-local-branches/agents/openai.yaml +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ All notable changes to this repository are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [v2.14.8] - 2026-04-08
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Tighten `generate-spec` so multi-spec batch planning must slice work into independently completable specs that can each be approved, implemented, tested, and merged without depending on another spec in the same batch landing first.
|
|
11
|
+
- Update `generate-spec` coordination guidance and templates so batch-level merge order may be a convenience only, never a functional prerequisite between specs.
|
|
12
|
+
## [v2.14.7] - 2026-04-08
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- Update `merge-changes-from-local-branches` so it removes successfully merged source branches and any detached worktrees only after the merge commit and verification both succeed, while refusing forced deletion for branches that are not actually merged.
|
|
16
|
+
|
|
7
17
|
## [v2.14.6] - 2026-04-08
|
|
8
18
|
|
|
9
19
|
### Added
|
package/generate-spec/README.md
CHANGED
|
@@ -5,7 +5,7 @@ A shared planning skill for feature work. It centralizes creation and maintenanc
|
|
|
5
5
|
## Core capabilities
|
|
6
6
|
|
|
7
7
|
- Generates single-spec plans under `docs/plans/{YYYY-MM-DD}/{change_name}/`.
|
|
8
|
-
- Generates multi-spec parallel batches under `docs/plans/{YYYY-MM-DD}/{batch_name}/{change_name}/` with a shared `coordination.md
|
|
8
|
+
- Generates multi-spec parallel batches under `docs/plans/{YYYY-MM-DD}/{batch_name}/{change_name}/` with a shared `coordination.md`, while keeping every batch spec independently completable.
|
|
9
9
|
- Uses shared templates so spec-first and brownfield workflows follow the same planning structure.
|
|
10
10
|
- Requires clarification handling and explicit user approval before implementation starts.
|
|
11
11
|
- Backfills task and checklist status after implementation and testing.
|
|
@@ -84,10 +84,11 @@ docs/plans/<today>/membership-cutover/
|
|
|
84
84
|
- `checklist.md`: use `- [ ]` only, adapt items to real scope, and record actual results.
|
|
85
85
|
- `contract.md`: when external dependencies materially shape the change, record their official-source-backed invocation surface, constraints, and caller obligations in the standard dependency-record format.
|
|
86
86
|
- `design.md`: record the architecture/design delta in the standard format, including affected modules, flow, invariants, tradeoffs, and validation plan.
|
|
87
|
-
- `coordination.md`: for multi-spec batches only, record shared preparation, ownership boundaries, replacement direction, merge order, and cross-spec integration checkpoints.
|
|
87
|
+
- `coordination.md`: for multi-spec batches only, record shared preparation, ownership boundaries, replacement direction, merge order, and cross-spec integration checkpoints, but never use it to make one spec depend on another spec's implementation before it can be completed.
|
|
88
88
|
- If clarification responses change the plan, update the docs and obtain approval again before coding.
|
|
89
89
|
|
|
90
90
|
## Notes
|
|
91
91
|
|
|
92
92
|
- `scripts/...` and `references/...` are skill-folder paths, not project-folder paths.
|
|
93
93
|
- The generator replaces `[YYYY-MM-DD]`, `[Feature Name]`, `[功能名稱]`, `[change_name]`, and `[batch_name]` placeholders.
|
|
94
|
+
- If a batch split produces specs that must land in a functional sequence, re-slice the work so each spec becomes independently implementable, testable, and mergeable.
|
package/generate-spec/SKILL.md
CHANGED
|
@@ -15,9 +15,9 @@ description: Generate and maintain shared feature planning artifacts (`spec.md`,
|
|
|
15
15
|
## Standards
|
|
16
16
|
|
|
17
17
|
- Evidence: Review the relevant code, configs, and authoritative docs before filling requirements or test plans; when external dependencies, libraries, frameworks, APIs, or platforms are involved, checking their official documentation is mandatory during spec creation.
|
|
18
|
-
- Execution: Generate the planning files first, keep each spec set tightly scoped, split broader work into multiple independent spec sets when needed, complete them with traceable requirements and risks, handle clarification updates, then wait for explicit approval before implementation.
|
|
18
|
+
- Execution: Generate the planning files first, keep each spec set tightly scoped, split broader work into multiple independent spec sets when needed, ensure every batch spec is independently completable without depending on another spec set to land first, complete them with traceable requirements and risks, handle clarification updates, then wait for explicit approval before implementation.
|
|
19
19
|
- Quality: Keep `spec.md`, `tasks.md`, `checklist.md`, `contract.md`, and `design.md` synchronized, map each planned test to a concrete risk or requirement, and tailor the templates so only applicable items remain active.
|
|
20
|
-
- Output: Store planning artifacts under `docs/plans/{YYYY-MM-DD}/{change_name}/` for single-spec work, or `docs/plans/{YYYY-MM-DD}/{batch_name}/{change_name}/` plus `coordination.md` for multi-spec parallel work, and keep them concise, executable, and easy to update.
|
|
20
|
+
- Output: Store planning artifacts under `docs/plans/{YYYY-MM-DD}/{change_name}/` for single-spec work, or `docs/plans/{YYYY-MM-DD}/{batch_name}/{change_name}/` plus `coordination.md` for multi-spec parallel work whose member specs remain independently approvable and independently implementable, and keep them concise, executable, and easy to update.
|
|
21
21
|
|
|
22
22
|
## Goal
|
|
23
23
|
|
|
@@ -45,6 +45,8 @@ Own the shared planning-doc lifecycle for feature work so other skills can reuse
|
|
|
45
45
|
- If the requested work would span more than three modules, do not draft one oversized coupled plan.
|
|
46
46
|
- Instead, split the work into multiple spec sets, each independently valid and each covering no more than three modules.
|
|
47
47
|
- Define those spec sets so they do not conflict with each other and do not require another spec set to land first in order to be approved or implemented safely.
|
|
48
|
+
- For batch generation, treat cross-spec implementation dependency as a planning bug: if Spec B cannot be completed safely until Spec A lands, they should be one spec set or be re-sliced so each spec has its own self-contained outcome.
|
|
49
|
+
- Allow shared preparation in `coordination.md` only when each spec can still complete that preparation or operate against an already-existing baseline without waiting for another spec's code changes.
|
|
48
50
|
- Use:
|
|
49
51
|
- `SKILL_ROOT=<path_to_generate-spec_skill>`
|
|
50
52
|
- `WORKSPACE_ROOT=<target_project_root>`
|
|
@@ -98,9 +100,11 @@ Own the shared planning-doc lifecycle for feature work so other skills can reuse
|
|
|
98
100
|
- Create `coordination.md` only when one user request is intentionally split into multiple spec sets that may be implemented in parallel.
|
|
99
101
|
- Place it at `docs/plans/{YYYY-MM-DD}/{batch_name}/coordination.md`.
|
|
100
102
|
- Use it as the batch-level source of truth for shared preparation, ownership boundaries, merge order, and cross-spec constraints.
|
|
103
|
+
- Record explicitly that each spec set must remain independently completable and must not rely on another spec set's code changes, unfinished tasks, or merge order to achieve its own approved outcome.
|
|
101
104
|
- Record shared fields, shared contracts, or shared data-shape preparation that multiple spec sets must align on before implementation starts.
|
|
102
105
|
- When one spec set replaces or removes legacy behavior, state that direction explicitly so all worktrees implement toward the same target rather than preserving the old behavior accidentally.
|
|
103
106
|
- Capture which spec set may touch which modules, which files require coordination, and whether any landing order or cutover sequence must be respected.
|
|
107
|
+
- If the batch still needs a recommended merge order, make that order operationally convenient rather than functionally required for any single spec to work correctly.
|
|
104
108
|
- Keep single-spec concerns in that spec's own `design.md`; reserve `coordination.md` for batch-wide rules only.
|
|
105
109
|
|
|
106
110
|
### 7) Fill `checklist.md`
|
|
@@ -142,6 +146,7 @@ Own the shared planning-doc lifecycle for feature work so other skills can reuse
|
|
|
142
146
|
- Keep requirement IDs, task IDs, and test IDs traceable across all three files.
|
|
143
147
|
- Never allow one spec set to cover more than three modules.
|
|
144
148
|
- When a request exceeds that scope, split it into independent, non-conflicting, non-dependent spec sets before approval.
|
|
149
|
+
- For batch specs, independence is mandatory: each spec must describe a complete slice that can be implemented, tested, reviewed, and merged without waiting for another spec in the same batch.
|
|
145
150
|
- When multiple spec sets are created for one batch, keep their shared implementation direction in one `coordination.md` instead of duplicating cross-spec rules in every `design.md`.
|
|
146
151
|
- Prefer realistic coverage over boilerplate: add or remove checklist items based on actual risk.
|
|
147
152
|
- When external dependencies materially shape the change, `contract.md` is required and must capture the official-source-backed contract in the standardized record format.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "generate-spec"
|
|
3
3
|
short_description: "Generate shared feature spec, task, and checklist docs before coding"
|
|
4
|
-
default_prompt: "Use $generate-spec to create or update single-spec plans under docs/plans/<date>/<change_name>/ or parallel batches under docs/plans/<date>/<batch_name>/<change_name>/ with a shared coordination.md, fill BDD requirements and risk-driven test planning, document external dependency contracts in contract.md when they materially constrain the change, write the architecture/design delta in design.md, record shared preparation and legacy-replacement direction in coordination.md when multiple specs will be implemented in parallel, process clarification updates, and wait for explicit approval before implementation."
|
|
4
|
+
default_prompt: "Use $generate-spec to create or update single-spec plans under docs/plans/<date>/<change_name>/ or parallel batches under docs/plans/<date>/<batch_name>/<change_name>/ with a shared coordination.md, but ensure every spec in a batch remains independently approvable and independently implementable without depending on another batch spec landing first; fill BDD requirements and risk-driven test planning, document external dependency contracts in contract.md when they materially constrain the change, write the architecture/design delta in design.md, record shared preparation and legacy-replacement direction in coordination.md when multiple specs will be implemented in parallel, process clarification updates, and wait for explicit approval before implementation."
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
- Included spec sets: [[spec-name-1], [spec-name-2]]
|
|
11
11
|
- Shared outcome: [what the batch delivers when all spec sets land]
|
|
12
12
|
- Out of scope: [shared exclusions for the batch]
|
|
13
|
+
- Independence rule: [state how each spec remains independently implementable, testable, and mergeable without another spec in this batch landing first]
|
|
13
14
|
|
|
14
15
|
## Shared Context
|
|
15
16
|
- Current baseline: [the current system shape that all spec sets must assume]
|
|
@@ -35,17 +36,19 @@
|
|
|
35
36
|
- Primary concern: [what this spec owns]
|
|
36
37
|
- Allowed touch points: [files/modules it may change]
|
|
37
38
|
- Must not change: [files/modules owned by another spec unless explicitly coordinated]
|
|
38
|
-
- Depends on shared preparation: [None / specific shared item above]
|
|
39
|
+
- Depends on shared preparation: [None / specific shared item above that already exists or can be completed within this spec]
|
|
40
|
+
- Cross-spec implementation dependency: [None; if not None, re-slice the batch]
|
|
39
41
|
|
|
40
42
|
### Spec Set 2: [spec-name-2]
|
|
41
43
|
- Primary concern: [what this spec owns]
|
|
42
44
|
- Allowed touch points: [files/modules it may change]
|
|
43
45
|
- Must not change: [files/modules owned by another spec unless explicitly coordinated]
|
|
44
|
-
- Depends on shared preparation: [None / specific shared item above]
|
|
46
|
+
- Depends on shared preparation: [None / specific shared item above that already exists or can be completed within this spec]
|
|
47
|
+
- Cross-spec implementation dependency: [None; if not None, re-slice the batch]
|
|
45
48
|
|
|
46
49
|
## Conflict Boundaries
|
|
47
50
|
- Shared files requiring coordination: [file/module list or `None`]
|
|
48
|
-
- Merge order / landing order: [independent /
|
|
51
|
+
- Merge order / landing order: [independent / optional convenience order only, never a functional prerequisite]
|
|
49
52
|
- Worktree notes: [branch naming, rebase expectations, or `None`]
|
|
50
53
|
|
|
51
54
|
## Integration Checkpoints
|
|
@@ -23,7 +23,7 @@ description: >-
|
|
|
23
23
|
## Standards
|
|
24
24
|
|
|
25
25
|
- Evidence: Inspect the current branch state, local branches, ahead/behind status, and actual conflicting files before deciding what to merge.
|
|
26
|
-
- Execution: Merge only the relevant local branches into `main` sequentially, resolve conflicts by reading both sides and editing the merged result to preserve shipped behavior, verify the merged state, then hand the final local branch state to `commit-and-push` so commit/changelog/spec-archival work happens through the shared submission workflow.
|
|
26
|
+
- Execution: Merge only the relevant local branches into `main` sequentially, resolve conflicts by reading both sides and editing the merged result to preserve shipped behavior, verify the merged state, delete each successfully merged branch and its detached worktree only after the merged result is confirmed, then hand the final local branch state to `commit-and-push` so commit/changelog/spec-archival work happens through the shared submission workflow.
|
|
27
27
|
- Quality: Never use blanket timestamp rules or default `-X ours/theirs` conflict resolution as the primary merge strategy, and do not declare success until the final `main` state has been checked and verified.
|
|
28
28
|
- Output: Produce a clean local main branch with all local changes integrated and ready for the shared submit workflow.
|
|
29
29
|
|
|
@@ -98,6 +98,21 @@ For each local branch (excluding main):
|
|
|
98
98
|
|
|
99
99
|
### 5) Hand off the merged result for shared submission handling
|
|
100
100
|
|
|
101
|
+
- After a branch has been merged successfully and the merged `main` state has been verified, remove the source branch worktree if one exists:
|
|
102
|
+
```bash
|
|
103
|
+
git worktree list
|
|
104
|
+
git worktree remove <worktree-path>
|
|
105
|
+
```
|
|
106
|
+
- Delete only branches that were merged successfully:
|
|
107
|
+
```bash
|
|
108
|
+
git branch -d <branch-name>
|
|
109
|
+
```
|
|
110
|
+
- If a branch still has an attached worktree, remove the worktree before deleting the branch.
|
|
111
|
+
- Never delete:
|
|
112
|
+
- `main`
|
|
113
|
+
- the currently checked-out branch
|
|
114
|
+
- branches that were skipped, failed to merge, or still need manual follow-up
|
|
115
|
+
- If `git branch -d` refuses deletion because the branch is not actually merged, stop and report the branch instead of forcing deletion with `-D`.
|
|
101
116
|
- Once merge verification passes, invoke `commit-and-push` for the authoritative local branch so the final submission flow owns:
|
|
102
117
|
- `CHANGELOG.md` readiness
|
|
103
118
|
- any required `archive-specs` run
|
|
@@ -123,6 +138,7 @@ For each local branch (excluding main):
|
|
|
123
138
|
- Keep the main branch history clean and readable.
|
|
124
139
|
- If a branch's merge breaks tests, resolve the conflict differently before committing.
|
|
125
140
|
- Do not stash or discard unrelated work automatically; stop when the working tree state makes the merge ambiguous.
|
|
141
|
+
- Delete merged source branches and their detached worktrees only after the merge commit and verification both succeed.
|
|
126
142
|
|
|
127
143
|
## Conflict Resolution Examples
|
|
128
144
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Merge Changes from Local Branches"
|
|
3
3
|
short_description: "Merge relevant local branches into main with verified conflict resolution"
|
|
4
|
-
default_prompt: "Use $merge-changes-from-local-branches to inventory local branches, merge only the relevant ones into local main, resolve conflicts by reading and composing the correct behavior instead of relying on blanket merge strategies, run targeted verification after conflictful merges, and leave remote state untouched."
|
|
4
|
+
default_prompt: "Use $merge-changes-from-local-branches to inventory local branches, merge only the relevant ones into local main, resolve conflicts by reading and composing the correct behavior instead of relying on blanket merge strategies, run targeted verification after conflictful merges, delete successfully merged source branches and detached worktrees only after verification succeeds, and leave remote state untouched."
|
package/package.json
CHANGED