@laitszkin/apollo-toolkit 2.14.17 → 2.14.19

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 CHANGED
@@ -7,6 +7,17 @@ All notable changes to this repository are documented in this file.
7
7
  ### Changed
8
8
  - None yet.
9
9
 
10
+ ## [v2.14.19] - 2026-04-14
11
+
12
+ ### Changed
13
+ - Update `version-release` so same-version prerelease hotfixes retarget the existing prerelease tag and GitHub release instead of forcing an extra semver bump.
14
+
15
+ ## [v2.14.18] - 2026-04-13
16
+
17
+ ### Changed
18
+ - Update `review-codebases` so issue-publishing runs must search for overlapping open or recent issues first and skip publishing duplicates when the root cause already has a tracker.
19
+ - Tighten `implement-specs-with-worktree` so archived or already-landed spec requests must verify whether the work is already present before creating a fresh worktree, and report a no-op with evidence when appropriate.
20
+
10
21
  ## [v2.14.17] - 2026-04-12
11
22
 
12
23
  ### Changed
@@ -23,8 +23,8 @@ description: >-
23
23
 
24
24
  ## Standards
25
25
 
26
- - Evidence: Read and understand the complete specs set before starting implementation, identify the authoritative parent branch that the worktree should inherit from, and when the requested plan path is missing from the current worktree verify where the authoritative copy actually lives before substituting any nearby spec.
27
- - Execution: Create or use an isolated worktree for implementation, sync the exact approved plan set into that worktree when it is missing there, create the worktree branch from the same parent branch as the worktree base, use the spec-set name as the canonical branch/worktree name, follow the implementation standards from the dependent skills, and commit to a local branch when done.
26
+ - Evidence: Read and understand the complete specs set before starting implementation, identify the authoritative parent branch that the worktree should inherit from, verify whether the requested scope is already implemented on that parent branch or current main working tree, and when the requested plan path is missing from the current worktree verify where the authoritative copy actually lives before substituting any nearby spec.
27
+ - Execution: Create or use an isolated worktree for implementation only when the requested spec still needs work, sync the exact approved plan set into that worktree when it is missing there, create the worktree branch from the same parent branch as the worktree base, use the spec-set name as the canonical branch/worktree name, follow the implementation standards from the dependent skills, and commit to a local branch when done.
28
28
  - Quality: Complete all planned tasks, run relevant tests, backfill the spec documents with actual completion status, and avoid dragging unrelated sibling specs into the worktree just because they share a batch directory.
29
29
  - Output: Keep the worktree branch clean with only the intended implementation commits.
30
30
 
@@ -63,10 +63,14 @@ Implement approved spec planning sets in an isolated git worktree, ensuring the
63
63
  - if the current checkout already comes from a branch, reuse that branch as the base
64
64
  - if the current session is inside a detached worktree, identify the parent branch that owns that worktree before creating another branch from it
65
65
  - do not default to `main` unless `main` is actually the parent branch of the worktree you are extending
66
+ - Before creating a new worktree, inspect the parent branch and current main working tree for evidence that the requested spec is already implemented:
67
+ - search the codebase, tests, and recent git history for the exact feature boundary or cutover named by the spec
68
+ - if the requested plan is archived, treat that as a signal to verify whether the implementation already landed before starting any new branch
69
+ - when the requested behavior is already present and verified, report a `no-op` result with concrete evidence instead of recreating the same work in a fresh worktree
66
70
 
67
71
  ### 3) Create a new worktree if needed
68
72
 
69
- If not already in a worktree, or if the user explicitly requests a fresh worktree:
73
+ If not already in a worktree, or if the user explicitly requests a fresh worktree, and the spec is not already implemented:
70
74
 
71
75
  - Derive the canonical spec name from the requested `change_name` directory.
72
76
  - Use that spec name as the shared branch/worktree identifier:
@@ -132,6 +136,7 @@ After implementation and testing:
132
136
  ## Working Rules
133
137
 
134
138
  - Always work in an isolated worktree to keep the parent checkout clean.
139
+ - Treat an already-landed spec as complete work, not as a reason to recreate a duplicate worktree.
135
140
  - Keep the new branch based on the same parent branch as the worktree base; do not silently rebase the workflow onto a different branch.
136
141
  - Use the spec-set name as the canonical identifier for the branch and worktree unless the user explicitly asks for a different naming scheme.
137
142
  - Complete all planned tasks before committing; do not stop with partial work.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@laitszkin/apollo-toolkit",
3
- "version": "2.14.17",
3
+ "version": "2.14.19",
4
4
  "description": "Apollo Toolkit npm installer for managed skill copying across Codex, OpenClaw, and Trae.",
5
5
  "license": "MIT",
6
6
  "author": "LaiTszKin",
@@ -8,7 +8,7 @@ description: Repository-wide code review workflow that requires reading the full
8
8
  ## Dependencies
9
9
 
10
10
  - Required: none.
11
- - Conditional: `open-github-issue` when confirmed findings should be tracked as GitHub issues.
11
+ - Conditional: `read-github-issue` when issue publication requires duplicate checks; `open-github-issue` when confirmed findings should be tracked as GitHub issues.
12
12
  - Optional: none.
13
13
  - Fallback: If publication is needed and `open-github-issue` is unavailable, return draft issue bodies instead of inventing another publisher.
14
14
 
@@ -58,7 +58,11 @@ Only continue to the next level when the current level has no confirmed findings
58
58
  5. Review edge cases last
59
59
  - Run this step only when there are no architecture or code-quality findings.
60
60
  - Check null or empty inputs, boundary values, partial failures, retries, concurrency, ordering assumptions, idempotency, and invalid state transitions.
61
- 6. Publish each confirmed finding
61
+ 6. Check for duplicate issues before publication
62
+ - When findings will be published, use `read-github-issue` to search the target repository for open and recently closed issues that match the same module, failure mode, or architectural boundary.
63
+ - Treat an existing issue as a duplicate when the underlying root cause, affected boundary, and requested outcome materially overlap, even if the wording differs.
64
+ - If a duplicate exists, cite it in the final report and do not publish a new issue for that finding.
65
+ 7. Publish each confirmed non-duplicate finding
62
66
  - Invoke `open-github-issue` once per finding.
63
67
  - Use a tier-specific title prefix:
64
68
  - `[Architecture] <short finding>`
@@ -99,6 +103,7 @@ Use this structure in responses:
99
103
  - impact
100
104
  - confidence
101
105
  4. GitHub issue publication status
106
+ - duplicate-check status and any matching existing issue URLs
102
107
  - publication mode (`gh-cli` / `github-token` / `draft-only`)
103
108
  - created issue URL or draft output per finding
104
109
  5. Deferred follow-up
@@ -15,7 +15,7 @@ description: "Guide the agent to prepare and publish a versioned release (versio
15
15
  ## Standards
16
16
 
17
17
  - Evidence: Inspect the active change set, current version files, existing tag format, existing remote tags/releases, and root `CHANGELOG.md` `Unreleased` content before touching version files, tags, or release metadata.
18
- - Execution: Use this workflow only for explicit release intent, run the required quality gates when applicable, and treat every conditional gate whose scenario is met as blocking before versioning or publication; hand the repository to `submission-readiness-check` before versioning work, invoke `archive-specs` directly whenever completed plan sets should be converted or project docs need alignment, and if the worktree is already clean inspect the current version, local/remote tag state, and existing GitHub release state before deciding whether the request is already satisfied; then cut the release directly from `CHANGELOG.md` `Unreleased`, update versions and docs, commit, tag, push, and publish the GitHub release with actual release tooling rather than PR-surrogate directives; run git mutations sequentially and verify both the branch tip and release tag exist remotely before publishing the GitHub release.
18
+ - Execution: Use this workflow only for explicit release intent, run the required quality gates when applicable, and treat every conditional gate whose scenario is met as blocking before versioning or publication; hand the repository to `submission-readiness-check` before versioning work, invoke `archive-specs` directly whenever completed plan sets should be converted or project docs need alignment, and if the worktree is already clean inspect the current version, local/remote tag state, and existing GitHub release state before deciding whether the request is already satisfied; when the user explicitly wants the same prerelease version to point at newer fixes, retarget the existing prerelease tag and GitHub release instead of inventing an extra version bump; otherwise cut the release directly from `CHANGELOG.md` `Unreleased`, update versions and docs, commit, tag, push, and publish the GitHub release with actual release tooling rather than PR-surrogate directives; run git mutations sequentially and verify both the branch tip and release tag exist remotely before publishing the GitHub release.
19
19
  - Quality: Never guess versions, align user-facing docs with actual code, do not bypass readiness blockers from `submission-readiness-check`, do not reconstruct release notes from `git diff` when curated changelog content already exists, and do not report release success until the commit, tag, and GitHub release all exist for the same version.
20
20
  - Output: Produce a versioned release commit and tag, publish a matching GitHub release, and keep changelog plus relevant repository documentation synchronized.
21
21
 
@@ -69,11 +69,13 @@ Load only when needed:
69
69
  - Read existing version files (for example `project.toml`, `package.json`, or repo-specific version files).
70
70
  - Infer existing tag format (`vX.Y.Z` or `X.Y.Z`) from repository tags.
71
71
  - Inspect existing local and remote tags plus any existing GitHub Release for the target version before creating new release metadata, so duplicate or conflicting releases are caught early.
72
+ - If the user explicitly asks to keep the same prerelease version or to `repoint`, `retarget`, or `move` an existing prerelease after follow-up fixes, treat that as a retarget flow: keep the version unchanged, confirm the existing prerelease tag/release name, and plan to move that tag/release to the new commit instead of bumping semver.
72
73
  - If the requested version tag and matching published GitHub release already exist and point at the intended commit, report that the release is already complete instead of creating duplicate metadata.
73
74
  - If the user provides the target version, use it directly.
74
75
  - If it is missing, ask the user for the target version or semver bump type.
75
76
  - Provide recommendations only when explicitly requested.
76
77
  - Do not continue until you can state the current version, the intended next version, and the exact tag name that will be created.
78
+ - For retarget flows, explicitly state that the intended next version stays unchanged and that the existing tag name will be moved to the new commit.
77
79
  6. Update version files
78
80
  - Update every detected version file consistently.
79
81
  - Preserve file formatting; change only version values.
@@ -87,15 +89,18 @@ Load only when needed:
87
89
  - Update `AGENTS.md` only when agent workflow/rules changed.
88
90
  8. Commit and tag
89
91
  - Create a release-oriented commit message (for example `chore(release): publish 2.12.1`) when applicable.
90
- - Create the version tag locally after commit.
92
+ - For new-version flows, create the version tag locally after commit.
93
+ - For prerelease retarget flows, move the existing tag locally only after the new fix commit exists, and verify the target commit hash before rewriting the tag.
91
94
  - Re-read the version files after editing and before tagging to confirm they all match the intended release version.
92
95
  9. Push
93
96
  - Push commit(s) and the release tag to the current branch before publishing the GitHub release when the hosting platform requires the tag to exist remotely.
97
+ - For prerelease retarget flows, push the rewritten tag explicitly (for example `--force-with-lease` for the single tag only), then verify the remote tag hash matches local `HEAD` before touching the GitHub release.
94
98
  - Do not overlap `git commit`, `git tag`, `git push`, or release-publish steps; wait for each mutation to finish before starting the next one.
95
99
  - After pushing, verify the remote branch tip matches local `HEAD`, and verify the release tag exists remotely via `git ls-remote --tags <remote> <tag>`.
96
100
  - If any git step finishes ambiguously or the remote hashes do not match local state, rerun the missing step sequentially and re-check before publishing the GitHub release.
97
101
  10. Publish the GitHub release
98
102
  - Create a non-draft GitHub release that matches the pushed version tag.
103
+ - For prerelease retarget flows, update the existing GitHub prerelease so it points at the rewritten tag/commit and refresh its notes when the new fix changes the shipped behavior.
99
104
  - Use the release notes from the new `CHANGELOG.md` entry unless the repository has a stronger established release-note source.
100
105
  - If the repository has publish automation triggered by `release.published`, ensure the GitHub release is actually published rather than left as a draft.
101
106
  - Prefer `gh release create <tag>` or the repository's existing release tool when available.