|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [0.17.0](https://github.com/TitusKirch/skills/compare/v0.16.0...v0.17.0) (2026-08-03) |
| 4 | + |
| 5 | + |
| 6 | +### ⚠ BREAKING CHANGES |
| 7 | + |
| 8 | +* **work:** a repo setting work.queueBranch: true now needs a workflow that cuts the queue branch and opens its PR. The drain previously did both and stopped the whole run when it could not. |
| 9 | +* **skills:** a config mapping `work.linear.states.done` no longer moves the board on the accept verdict; add `states.accepted` (and list it in `statuses`) to restore it. Until then the accept verdict leaves the state untouched, which is the existing "unmapped step" behaviour and the intended failure direction — a board that lags rather than one that claims a ship. |
| 10 | + |
| 11 | +### Features |
| 12 | + |
| 13 | +* **ci:** run the skill conformance check in CI ([026417c](https://github.com/TitusKirch/skills/commit/026417c570d05957dc8db9864b98ab1875185208)), closes [#105](https://github.com/TitusKirch/skills/issues/105) |
| 14 | +* **issue:** pin the untriaged marker as a configured label ([#179](https://github.com/TitusKirch/skills/issues/179)) ([885d243](https://github.com/TitusKirch/skills/commit/885d2435f78fc3a7fee31b9b8ee543ba1cc4b8c2)) |
| 15 | +* **issue:** select the grilling interview engine with a root grillWith key ([#214](https://github.com/TitusKirch/skills/issues/214)) ([5e44797](https://github.com/TitusKirch/skills/commit/5e44797eeb4f24cbce1a8616780b16ff0b3325d1)) |
| 16 | +* **merge-deps:** extend to the GitLab forge ([#219](https://github.com/TitusKirch/skills/issues/219)) ([638ec05](https://github.com/TitusKirch/skills/commit/638ec051badad8117aba92abf7d8521aa35c08ba)) |
| 17 | +* **prune-comments:** scope the Bash grant to read-only git ([e7c3465](https://github.com/TitusKirch/skills/commit/e7c3465b4c9dc529b2e7a8d5d67b5d94c8d020bd)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 18 | +* **pull-request:** base a stacked branch on the PR below it ([#200](https://github.com/TitusKirch/skills/issues/200)) ([850ca90](https://github.com/TitusKirch/skills/commit/850ca904bd4c35c49005c8e003c50829ae2d628b)) |
| 19 | +* **refine-issue:** add skill that takes an issue to ai-ready ([#180](https://github.com/TitusKirch/skills/issues/180)) ([73e3d6e](https://github.com/TitusKirch/skills/commit/73e3d6e7b1e7f799b8a737d08856678ee35d093a)) |
| 20 | +* **release:** mark shipped work Done at the default-branch merge ([7267e00](https://github.com/TitusKirch/skills/commit/7267e00fb865079b9936883ff2383499a7826ecf)), closes [#160](https://github.com/TitusKirch/skills/issues/160) |
| 21 | +* **release:** state the GitHub-only limitation as a decision ([#218](https://github.com/TitusKirch/skills/issues/218)) ([e3cf795](https://github.com/TitusKirch/skills/commit/e3cf795af1f20cff0aef4d0e3b2e4636d02466a3)) |
| 22 | +* **skills:** add a local file-based issue tracker driver ([#202](https://github.com/TitusKirch/skills/issues/202)) ([0cefe26](https://github.com/TitusKirch/skills/commit/0cefe2600462731876b2bd1e70e5d25e93e5cf27)) |
| 23 | +* **skills:** add GitLab as a third forge and issue tracker ([#216](https://github.com/TitusKirch/skills/issues/216)) ([975d4a0](https://github.com/TitusKirch/skills/commit/975d4a06a0a96e97c0b081c6ab9b0575f8a81b8d)) |
| 24 | +* **skills:** lead every run report with a TL;DR ([#212](https://github.com/TitusKirch/skills/issues/212)) ([af5e031](https://github.com/TitusKirch/skills/commit/af5e031864c1c3180ad338868f9cb9e0fb5e3fcc)) |
| 25 | +* **skills:** link into every client's skills path ([c925b7e](https://github.com/TitusKirch/skills/commit/c925b7e2956dd86b15a3317a6ca244c495e2dfd0)), closes [#118](https://github.com/TitusKirch/skills/issues/118) |
| 26 | +* **skills:** make a blanket Bash grant a named exception ([8e8a98a](https://github.com/TitusKirch/skills/commit/8e8a98a2136c5f85d2e55020f4be036e13dc01ab)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 27 | +* **skills:** make a cross-skill call optional by default ([#192](https://github.com/TitusKirch/skills/issues/192)) ([1b1a684](https://github.com/TitusKirch/skills/commit/1b1a6844c6bc0f14a77d484948d93462dfb6b82e)) |
| 28 | +* **skills:** permit a thin shape for alias-style skills ([#195](https://github.com/TitusKirch/skills/issues/195)) ([7a1cc4e](https://github.com/TitusKirch/skills/commit/7a1cc4eafa53a54469f36a76f19b9b5731ac2d15)) |
| 29 | +* **skills:** pin grant minimality against the calls a skill drives ([#201](https://github.com/TitusKirch/skills/issues/201)) ([5d09445](https://github.com/TitusKirch/skills/commit/5d094454c585fa901d5657f48e1b10db55a88bda)) |
| 30 | +* **skills:** separate drain concurrency from the run cap ([#199](https://github.com/TitusKirch/skills/issues/199)) ([f3933ba](https://github.com/TitusKirch/skills/commit/f3933ba282e423cd24c362b9be039b13839cdfc6)) |
| 31 | +* **skills:** stop the work loop loading the config and lock blocks twice ([#198](https://github.com/TitusKirch/skills/issues/198)) ([6a63d1e](https://github.com/TitusKirch/skills/commit/6a63d1ed95a10b699ea7bdf531f3c9a157b5cf9f)) |
| 32 | +* **tldr:** add a summariser skill with a fixed section frame ([#196](https://github.com/TitusKirch/skills/issues/196)) ([cb6001e](https://github.com/TitusKirch/skills/commit/cb6001ee9fce95794357f94b54cfb266d65b3a43)) |
| 33 | +* **update-deps:** add Go as a fourth ecosystem ([#194](https://github.com/TitusKirch/skills/issues/194)) ([bcd07bc](https://github.com/TitusKirch/skills/commit/bcd07bcd14d54d6796a8ce782438c4f4bc4dced6)) |
| 34 | +* **validate-skills:** map client extensions across four clients ([8b094ed](https://github.com/TitusKirch/skills/commit/8b094ed4a3c8569f276242bbf52ac41467313e64)), closes [#109](https://github.com/TitusKirch/skills/issues/109) |
| 35 | +* **validate-skills:** scope the Bash grant to what it drives ([60cbd2d](https://github.com/TitusKirch/skills/commit/60cbd2dee3ea8e8c2850d339e591c3911fd1deb7)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 36 | +* **work-implement-queue:** report a drain's queue state so a loop knows to wait or stop ([#190](https://github.com/TitusKirch/skills/issues/190)) ([c56f166](https://github.com/TitusKirch/skills/commit/c56f166f189875881ed696f45417680bcbae07df)) |
| 37 | +* **work-implement:** drive tdd where a test can reach the change ([#171](https://github.com/TitusKirch/skills/issues/171)) ([48236af](https://github.com/TitusKirch/skills/commit/48236af76f1167729c67d110e69715a3179e1ef8)) |
| 38 | +* **work-implement:** give the block clause a diagnosis discipline ([#172](https://github.com/TitusKirch/skills/issues/172)) ([5bf95df](https://github.com/TitusKirch/skills/commit/5bf95df8d18ceb19b5cd45d76930ee8471e53193)) |
| 39 | +* **work-implement:** group a worktree drain's PRs behind one queue branch ([#217](https://github.com/TitusKirch/skills/issues/217)) ([fbe31b9](https://github.com/TitusKirch/skills/commit/fbe31b9d9eda6e69d923a1bf8e0f7bc5cdfb134d)) |
| 40 | +* **work-implement:** honour blockedBy relations under branch worktree ([#174](https://github.com/TitusKirch/skills/issues/174)) ([2c30e74](https://github.com/TitusKirch/skills/commit/2c30e74f5c165bd11abce0fbace4486c022885f0)) |
| 41 | +* **work-implement:** name the collision gap in worktree + parallel mode ([#188](https://github.com/TitusKirch/skills/issues/188)) ([e2c24e7](https://github.com/TitusKirch/skills/commit/e2c24e7fda4e1bfc6d2dbebc0e0cb49dfdb5ce5b)) |
| 42 | +* **work-implement:** pace the backpressure wait by mode, not a fixed interval ([#210](https://github.com/TitusKirch/skills/issues/210)) ([a14a2ba](https://github.com/TitusKirch/skills/commit/a14a2ba6a318546a6ea8cba9fb8c95fcb7f6db4b)) |
| 43 | +* **work-implement:** read an order-free relation as a parallel-batch mutex ([#184](https://github.com/TitusKirch/skills/issues/184)) ([087e5ad](https://github.com/TitusKirch/skills/commit/087e5ade6f6fa58a3f4615df84a94289041c04f9)) |
| 44 | +* **work-implement:** route the loops' feedback to the pull request ([#193](https://github.com/TitusKirch/skills/issues/193)) ([8c0292b](https://github.com/TitusKirch/skills/commit/8c0292b7f943de17b22cd927c510608d7fca8351)) |
| 45 | +* **work-implement:** rule a rebase conflict on a shared branch ([#173](https://github.com/TitusKirch/skills/issues/173)) ([c829f7c](https://github.com/TitusKirch/skills/commit/c829f7c88a8b721eb1a0619cdc096cae7327ae30)) |
| 46 | +* **work-implement:** state the recommended effort per loop ([#213](https://github.com/TitusKirch/skills/issues/213)) ([3c53efd](https://github.com/TitusKirch/skills/commit/3c53efdc1c8e6db46bf86ab06636ce47e75056ff)) |
| 47 | +* **work-implement:** withhold issues whose labels contradict each other ([#177](https://github.com/TitusKirch/skills/issues/177)) ([f28ef33](https://github.com/TitusKirch/skills/commit/f28ef330c560f830c891e2851ae9df7b1ddc1f14)) |
| 48 | +* **work:** keep AI pull requests in draft until review is confident ([#215](https://github.com/TitusKirch/skills/issues/215)) ([84f2f55](https://github.com/TitusKirch/skills/commit/84f2f55f62f8a3a19d32d701c5b373b77d5a15d0)) |
| 49 | +* **work:** let the repo own the queue branch, not the drain ([240f740](https://github.com/TitusKirch/skills/commit/240f740b53a267b68d5074e1508a477010bc0e03)) |
| 50 | +* **work:** settle the owner decisions behind the needs-human backlog ([#207](https://github.com/TitusKirch/skills/issues/207)) ([e76e050](https://github.com/TitusKirch/skills/commit/e76e05044557faa48996c828db2d508f7e9c3ef6)) |
| 51 | +* **write-contributing:** add skill that writes and maintains CONTRIBUTING.md ([#178](https://github.com/TitusKirch/skills/issues/178)) ([2fb2b1f](https://github.com/TitusKirch/skills/commit/2fb2b1faa5f01d35dc5befe9130fb4ef5e2d4ef5)) |
| 52 | +* **write-contributing:** apply "never transcribe" to every list ([#208](https://github.com/TitusKirch/skills/issues/208)) ([442c1d5](https://github.com/TitusKirch/skills/commit/442c1d506427e5c17f4bfa1fdccac066dc06bd58)) |
| 53 | +* **write-docs:** reconcile ADRs written in a foreign format ([#197](https://github.com/TitusKirch/skills/issues/197)) ([e17ccfb](https://github.com/TitusKirch/skills/commit/e17ccfb974036bc687151cf336d1c7601db63e2d)) |
| 54 | +* **write-docs:** reconcile the ADR contract with Nygard ([#189](https://github.com/TitusKirch/skills/issues/189)) ([330de14](https://github.com/TitusKirch/skills/commit/330de141d1eee049b8cacb95a640b24889be7ce9)) |
| 55 | +* **write-docs:** state when a decision earns an ADR ([#183](https://github.com/TitusKirch/skills/issues/183)) ([48e0aa6](https://github.com/TitusKirch/skills/commit/48e0aa6268e1eb74144c223069734df173c95d1f)) |
| 56 | + |
| 57 | + |
| 58 | +### Bug Fixes |
| 59 | + |
| 60 | +* **merge-deps:** check out the PR head detached so cleanup needs no force ([1557d6a](https://github.com/TitusKirch/skills/commit/1557d6a33e4623d7745b9646443e71130f9ded28)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 61 | +* **merge-deps:** derive the verify worktree's path instead of carrying it ([3669551](https://github.com/TitusKirch/skills/commit/3669551b5c3f05b00245c7039d86649c7e3160a9)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 62 | +* **merge-deps:** reclaim the verify worktree and move it out of work/ ([0c057cd](https://github.com/TitusKirch/skills/commit/0c057cd544ddcd025ddfe38894658e3b2d505296)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 63 | +* **merge-deps:** resolve the PR head in the shell that fetched it ([75ded77](https://github.com/TitusKirch/skills/commit/75ded7725810082965bbf1dd3ace2b2b14d65240)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 64 | +* **prune-branches:** describe the branch grants by what they do ([309719c](https://github.com/TitusKirch/skills/commit/309719c09d41144c3fb7ffb688683dc3364e8364)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 65 | +* **prune-comments:** drop the shell and the stream editor from the grant ([652c661](https://github.com/TitusKirch/skills/commit/652c661e4783d7984df4926af695ad6e71d9e5cf)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 66 | +* **prune-comments:** grant git symbolic-ref at the read the skill drives ([9214d48](https://github.com/TitusKirch/skills/commit/9214d4886f637310ecbdd80aba93f3b6a4383a92)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 67 | +* **pull-request:** grant gh api at the one call the skill drives ([3402543](https://github.com/TitusKirch/skills/commit/3402543bd071593980be645c8b7b0d21992d13f8)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 68 | +* **pull-request:** grant git branch at the read the skill drives ([9b0ae27](https://github.com/TitusKirch/skills/commit/9b0ae2742321dbaba0e050b54a3a5036bd8916e2)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 69 | +* **release:** keep the shipped-marking step inert when a filter is missing ([1eeee97](https://github.com/TitusKirch/skills/commit/1eeee97da29a3e42acef4d4b2213a73195f5de72)), closes [#160](https://github.com/TitusKirch/skills/issues/160) |
| 70 | +* **skills:** clear git log, and treat gh as the exec route it is ([18ff2fa](https://github.com/TitusKirch/skills/commit/18ff2fa33ed8a850d1b1501d43c89ef88af67429)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 71 | +* **skills:** declare the cache reads two grants still left out ([fc5c089](https://github.com/TitusKirch/skills/commit/fc5c089e751139637e744a2a8ae1f2d9b108a36b)) |
| 72 | +* **skills:** declare the reads every run already makes ([93615a0](https://github.com/TitusKirch/skills/commit/93615a078f9d464e6de8ec1867caa7515758e336)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 73 | +* **skills:** make a presented plan render where it is read ([fccccc2](https://github.com/TitusKirch/skills/commit/fccccc2153b3d1a6cd513abe0f85555ef57595ff)), closes [#157](https://github.com/TitusKirch/skills/issues/157) |
| 74 | +* **skills:** scope every remaining grant to what its skill drives ([7d5a9e5](https://github.com/TitusKirch/skills/commit/7d5a9e56c66017d92a13d8358c769c1b9f63909b)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 75 | +* **skills:** stop the AI verdict writing a Linear state that means shipped ([cbdd577](https://github.com/TitusKirch/skills/commit/cbdd577e15bae902820060e8dd367cb43f2f9f7f)), closes [#160](https://github.com/TitusKirch/skills/issues/160) |
| 76 | +* **skills:** write the two read-only grants at the subcommand they drive ([fc3a2b7](https://github.com/TitusKirch/skills/commit/fc3a2b7cca1c9af0fb8fc73502496f5d23b2beff)) |
| 77 | +* **validate-skills:** drop the commands that can reach a shell ([fc5fb9e](https://github.com/TitusKirch/skills/commit/fc5fb9e6e4dae49bcee554f7fa65e35aab840291)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 78 | +* **validate-skills:** tag an extension with every client that defines it ([#181](https://github.com/TitusKirch/skills/issues/181)) ([09a7f4c](https://github.com/TitusKirch/skills/commit/09a7f4c979e2a05cb0b663ab22d6965385975a53)) |
| 79 | +* **work-implement:** install dependencies before verifying in a worktree ([e14f27c](https://github.com/TitusKirch/skills/commit/e14f27c599454e472f51c441649dcdb87f563356)), closes [#152](https://github.com/TitusKirch/skills/issues/152) |
| 80 | +* **work-implement:** state that a mapped Linear state is best-effort ([#191](https://github.com/TitusKirch/skills/issues/191)) ([931bea5](https://github.com/TitusKirch/skills/commit/931bea53a4bb8ae04ad5c388a4318217f772c796)) |
| 81 | +* **work-review:** derive the gate worktree's path instead of carrying it ([d3e17b1](https://github.com/TitusKirch/skills/commit/d3e17b1d3ed320f3ac99cfcae3860a8a3008caa2)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 82 | +* **work-review:** reclaim the gate worktree before creating it ([4aabf00](https://github.com/TitusKirch/skills/commit/4aabf002bf4ffe3cfd6ac9d7b0c389c9bb8ab5f0)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 83 | +* **work-review:** remove the throwaway worktree without --force ([6b64fb4](https://github.com/TitusKirch/skills/commit/6b64fb44b97fcee695cb3c849c82688885d09864)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 84 | +* **work-review:** say that a deny rule refuses rather than prompts ([e9e5980](https://github.com/TitusKirch/skills/commit/e9e5980b3133b85fad8e636fa92b128e7e61cc55)), closes [#135](https://github.com/TitusKirch/skills/issues/135) |
| 85 | + |
3 | 86 | ## [0.16.0](https://github.com/TitusKirch/skills/compare/v0.15.0...v0.16.0) (2026-07-27) |
4 | 87 |
|
5 | 88 |
|
|
0 commit comments