@laitszkin/apollo-toolkit 2.14.16 → 2.14.18
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 +12 -0
- package/enhance-existing-features/SKILL.md +2 -1
- package/enhance-existing-features/agents/openai.yaml +1 -1
- package/implement-specs-with-worktree/SKILL.md +8 -3
- package/package.json +1 -1
- package/review-codebases/SKILL.md +7 -2
- package/version-release/SKILL.md +2 -1
- package/version-release/agents/openai.yaml +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ All notable changes to this repository are documented in this file.
|
|
|
7
7
|
### Changed
|
|
8
8
|
- None yet.
|
|
9
9
|
|
|
10
|
+
## [v2.14.18] - 2026-04-13
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- 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.
|
|
14
|
+
- 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.
|
|
15
|
+
|
|
16
|
+
## [v2.14.17] - 2026-04-12
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Tighten `version-release` so explicit semver wording such as `patch update`, `minor update`, or `major update` counts as release intent and still requires publishing the matching GitHub release.
|
|
20
|
+
- Tighten `enhance-existing-features` so it must not report an enabling intermediate milestone as complete when the user asked for the final scoped behavior.
|
|
21
|
+
|
|
10
22
|
## [v2.14.16] - 2026-04-11
|
|
11
23
|
|
|
12
24
|
### Changed
|
|
@@ -24,7 +24,7 @@ description: >-
|
|
|
24
24
|
## Standards
|
|
25
25
|
|
|
26
26
|
- Evidence: Explore the existing codebase first and verify the latest authoritative docs for the involved stack or integrations.
|
|
27
|
-
- Execution: Decide whether specs are required from the actual change surface, run `generate-spec` when needed, then continue through implementation, testing, and backfill until the active scope is fully reconciled.
|
|
27
|
+
- Execution: Decide whether specs are required from the actual change surface, run `generate-spec` when needed, then continue through implementation, testing, and backfill until the active scope is fully reconciled; when the user asks for a specific final behavior or architectural end state, do not substitute a preparatory or partial milestone unless the user explicitly re-scopes the request.
|
|
28
28
|
- Quality: Add risk-based tests with property-based, regression, integration, E2E, adversarial, and rollback coverage when relevant.
|
|
29
29
|
- Output: Keep implementation and any planning artifacts traceable, updated, and aligned with actual completion results.
|
|
30
30
|
|
|
@@ -97,6 +97,7 @@ If not triggered:
|
|
|
97
97
|
- Update environment examples only when new inputs are required.
|
|
98
98
|
- If specs exist, treat every unchecked in-scope task and applicable checklist item as part of the required deliverable for this run.
|
|
99
99
|
- Do not stop after partial code changes, partial tests, or partial backfill when approved planned work remains.
|
|
100
|
+
- Do not present an enabling first stage, temporary coalescing step, or other intermediate milestone as complete when the user asked for the final scoped behavior.
|
|
100
101
|
- Only pause before completion if:
|
|
101
102
|
- the user changes scope or explicitly asks to stop
|
|
102
103
|
- new clarification requires plan updates and renewed approval
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "enhance-existing-features"
|
|
3
3
|
short_description: "Extend brownfield features with conditional generate-spec planning and risk-driven tests"
|
|
4
|
-
default_prompt: "Use $enhance-existing-features to extend a brownfield feature: map the affected code and dependencies first, decide whether the change is high complexity / critical module / cross-module, run $generate-spec when specs are required, wait for explicit approval before coding, document material external dependency contracts in contract.md, document the architecture/design delta in design.md, and when one change is split into parallel spec sets maintain a shared coordination.md for common preparation, ownership boundaries, and legacy-replacement direction; always add risk-driven tests plus clear N/A reasons when a category truly does not apply; if a spec set exists, finish the approved tasks and applicable checklist items and backfill spec.md, tasks.md, checklist.md, contract.md, design.md, and when applicable coordination.md before yielding unless the user changes scope or an external blocker prevents safe completion."
|
|
4
|
+
default_prompt: "Use $enhance-existing-features to extend a brownfield feature: map the affected code and dependencies first, decide whether the change is high complexity / critical module / cross-module, run $generate-spec when specs are required, wait for explicit approval before coding, document material external dependency contracts in contract.md, document the architecture/design delta in design.md, and when one change is split into parallel spec sets maintain a shared coordination.md for common preparation, ownership boundaries, and legacy-replacement direction; always add risk-driven tests plus clear N/A reasons when a category truly does not apply; if the user asked for a specific final behavior or architecture state, do not stop at an enabling intermediate milestone unless the user explicitly narrows scope; if a spec set exists, finish the approved tasks and applicable checklist items and backfill spec.md, tasks.md, checklist.md, contract.md, design.md, and when applicable coordination.md before yielding unless the user changes scope or an external blocker prevents safe completion."
|
|
@@ -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
|
@@ -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.
|
|
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
|
package/version-release/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: version-release
|
|
3
|
-
description: "Guide the agent to prepare and publish a versioned release (version bump, changelog, tag, GitHub release, and push). Use only when users explicitly request version/tag/release work. Depend directly on `archive-specs` when completed plan sets should become durable docs or when project docs need alignment, and let that skill own the downstream documentation synchronization work."
|
|
3
|
+
description: "Guide the agent to prepare and publish a versioned release (version bump, changelog, tag, GitHub release, and push). Use only when users explicitly request version/tag/release work, including direct semver wording such as patch/minor/major updates. Depend directly on `archive-specs` when completed plan sets should become durable docs or when project docs need alignment, and let that skill own the downstream documentation synchronization work."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Version Release
|
|
@@ -47,6 +47,7 @@ Load only when needed:
|
|
|
47
47
|
- Inventory repository planning artifacts and project docs, not only staged files, to detect repo specs and non-standard documentation layouts.
|
|
48
48
|
2. Confirm release intent
|
|
49
49
|
- Use this skill only when the user explicitly requests version/tag/release work.
|
|
50
|
+
- Treat explicit semver-delivery wording such as `patch update`, `minor update`, `major update`, `patch release`, `bump the version`, or requests to trigger release-published automation as release intent even when the user does not separately say `make a release`.
|
|
50
51
|
- If no release intent is present, use `commit-and-push` instead.
|
|
51
52
|
3. Classify changes and run dependencies when required
|
|
52
53
|
- `code-affecting`: runtime code, tests, build scripts, CI logic, or behavior-changing config.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Version Release"
|
|
3
3
|
short_description: "Prepare a versioned release with bump, changelog, tag, GitHub release, and push"
|
|
4
|
-
default_prompt: "Use $version-release only for explicit release/version/tag requests: inspect the current repository state, read the current version plus existing tag/release state, and inspect root CHANGELOG.md Unreleased content. Treat every conditional gate whose scenario is met as blocking before any version bump, tag, or release step: if the release includes code changes, run $review-change-set; if the reviewed risk profile says edge-case or security review is needed, run $discover-edge-cases and $harden-app-security as blocking gates too; if completed specs should be converted or docs need normalization, ensure $archive-specs runs through $submission-readiness-check; if changelog synchronization is needed, complete it before continuing. Then run any additional required code-quality skills, hand the repository to $submission-readiness-check so completed plan archives, project docs, AGENTS.md, and changelog readiness are settled before any version bump or tag, confirm CHANGELOG.md Unreleased is release-ready, update version files, cut the release directly from CHANGELOG.md Unreleased, create the release commit and matching tag, push commits and tags, and publish the matching GitHub release before reporting success."
|
|
4
|
+
default_prompt: "Use $version-release only for explicit release/version/tag requests, including direct semver wording like patch/minor/major update or requests to trigger release-published automation: inspect the current repository state, read the current version plus existing tag/release state, and inspect root CHANGELOG.md Unreleased content. Treat every conditional gate whose scenario is met as blocking before any version bump, tag, or release step: if the release includes code changes, run $review-change-set; if the reviewed risk profile says edge-case or security review is needed, run $discover-edge-cases and $harden-app-security as blocking gates too; if completed specs should be converted or docs need normalization, ensure $archive-specs runs through $submission-readiness-check; if changelog synchronization is needed, complete it before continuing. Then run any additional required code-quality skills, hand the repository to $submission-readiness-check so completed plan archives, project docs, AGENTS.md, and changelog readiness are settled before any version bump or tag, confirm CHANGELOG.md Unreleased is release-ready, update version files, cut the release directly from CHANGELOG.md Unreleased, create the release commit and matching tag, push commits and tags, and publish the matching GitHub release before reporting success."
|