Shipped and released
Now
Page 5 of 14. Every release ever published is still here — across these pages, in theAtom feed, and at its own permanent link. Nothing is dropped as it ages.
Released highlights, page 5
frame-intentnow refuses a configured destination before writing when resolving it follows a symlink out of its anchoring root. An ordinary absolute destination outside the repository still asks first, and a personal-scope destination remains legitimate.
- `loop-cohort status` now shows what each wave's dispatch records actually say. A wave whose every task was declined used to read exactly like one whose every task was implemented; both reported the same single flag. The new per-wave counts separate receipts, declines, superseded records and unaccounted tasks, so someone reading a finished run can tell which waves were implemented and which were not.
- The guides now describe the pre-flight the pack actually ships. The design-handoff how-to states the four-rung precedence in order and says what happens when a slot is empty; the tutorial walks the rung an adopter without a design tree actually uses, working from a stated premise rather than copying a named product.
- Where your token taxonomy already resolved a value, the build now uses that value as given instead of re-deriving its own. Re-deriving a number the design step already decided is how a surface drifts from the direction it was supposed to inherit; what the taxonomy left as a relationship, or recorded as unresolved, is still the build's work to settle.
- You can now see what the frontend reviewer actually checks. Its reference page documents all seven lenses, including the visual-authority lens, and says what evidence confirms each one — the diff for five, a rendered capture for one, the evidence manifest for the last.
- `design-system` now decides your product's visual system instead of handing you an empty table of token names. It resolves typography, color, spacing, shape, depth and motion. Each decision records the authority behind it, so you can tell an inherited value from a derived one at a glance.
- A system you already have is inherited, not replaced. The skill finds the source of visual truth your interface actually reads from and judges whether it is coherent. It fills only the gaps your current work needs, keeps your naming conventions, and will not build a second system beside your first.
- Nothing in the pack carries a palette, typeface, scale, radius, shadow or easing value. Your product's values come from your direction and your existing system, so two unrelated products no longer end up looking the same.
- Ask the agent to explain a diff, branch, commit, or pull request and you get back one self-contained offline HTML lesson — background, intuition, a code walkthrough, and a five-question quiz — written for that specific change rather than poured into a shared template. The agent reports the exact file path it wrote.
- Interrupted work-loop transitions now replay without separate cohort repair commands. The five registered cohort-effect transitions apply their effects through
loop-cohort.py, record one durable transition identity, and safely resume without double-advancing a wave, double-counting a retry, or duplicating a review round.
- Interrupted work-loop transitions now replay without separate cohort repair commands. The five registered cohort-effect transitions apply their effects through
- When your team has already agreed a visual direction, the frontend build now inherits it instead of quietly picking a different look. The skill resolves visual authority from the design artifacts your repository already points at, falls back to the visual system you already have, and only invents a premise when a surface is genuinely greenfield. It no longer names a product as an aesthetic anchor.
- Significant visual work is now looked at while it is being built. The agent renders a representative state, compares it against the direction it inherited, corrects once where the difference is material, and renders again to check — then goes on to the usual gates. The loop is bounded: a further pass happens only if you ask.
creative-directionnow turns product context into a buildable visual contract, not just a mood statement: it records the engagement mode, product-specific visual thesis, first-viewport thesis, honest evidence and asset status, and optional visual-target boundaries without requiring Product Engineering, Frontend Engineering, a comp, browser control, or image analysis.
- The first approval now happens where you can actually make it. The journey approval covers the journey *and* the screens derived from it, so it comes after the screen flow exists rather than before. The check that earns it — does every screen trace to a moment in the journey — needs both halves in front of you.
- The adopter guide opens with the work, not the roster. The
experience-designguide front door now answers "I have an experience to design — how do I get from the user's outcome to reviewed design intent?" It leads with one ordinary-language request, the stage sequence, the three decisions that are yours, what you end up holding, and which downstream pack consumes each artifact. The skill reference is still there, one level down.
- Feature and capability intents can now carry product facts for downstream experience work only when a surface is materially affected. The optional handoff names the affected journey or surface, first-success behavior, product proof, claim evidence, constraints, prohibited claims, and unknowns while backend-only work and product-level framing stay unchanged.
- Ask the agent to explain a diff, branch, commit, or pull request and you get back one self-contained offline HTML lesson — background, intuition, a code walkthrough, and a five-question quiz — written for that specific change rather than poured into a shared template. The agent reports the exact file path it wrote.
- The copy layer is now one skill with three modes.
content-designcovers message and narrative structure, per-surface acquisition copy goals, and the brand-level register. You pick a task, not a registration — the skill selects the mode from your request. Thecopy-directionandtone-of-voiceskills are removed. - Nothing you have already written moves. All three artifacts keep their paths and their
type:values:content/<slug>.md,copy/<surface-slug>.md, and the reservedcopy/brand-register.md, which still carriesscope: brand-levelbeside itstype:. An existing document needs no migration. - Shared copy references were reconciled rather than merged. Six references that shared a name across the folded skills disagreed; each was resolved deliberately, and the two whose variants differed only by scope are now one body with a named scope parameter that binds per mode.
- The copy layer is now one skill with three modes.
- Base freshness can now be unverified without stopping every work-loop. When network access, authentication, timeouts, or enterprise Git-metadata policy prevent the check from completing, the loop tells you freshness was not verified and continues so you can update the branch separately. A proven stale base or unsafe repository state still stops the run.
- Intent preambles can now say an outcome is shared with another intent by adding
Outcome co-owner:as a typed peer pointer. The corpus and traceability checks reject malformed, missing-target, and self-referential peers without turning the peer into a parent or delivery edge. Decomposed:can now record a finished childless decomposition withYYYY-MM-DD closed-empty. It stays distinct from the literalno, so an author can tell "we deliberately closed this with no child work" from "we decided not to decompose."
- Intent preambles can now say an outcome is shared with another intent by adding
- The intent template and product-engineering how-tos now show both closure declarations authors can copy: optional
Outcome co-owner:for a shared outcome, andclosed-emptyfor a decomposition that is complete with no child work.
- The intent template and product-engineering how-tos now show both closure declarations authors can copy: optional
- A `Shipped` brief now requires a `Cut-closed:` declaration. When you close a brief as
Shipped, add aCut-closed:preamble field recording that no further slices are coming: an ISO 8601 date then evidence, as in2026-08-25 All nine slices are Shipped.It must sit above the brief's first##heading; written below one it reads as absent. The coverage lint also refuses aDraftbrief that carries the field, and every other state may carry it or omit it. - A brief that passed the coverage lint yesterday can fail today, so this is a gate change to plan for rather than a new option to adopt. Any repository holding a
Status: Shippedbrief without the new field fails until it is backfilled — run it from your repository root aspython3 <skill>/scripts/lint-brief-coverage.py --root .before your pipeline does — it resolvesdocs/product/briefsbeneath the root you pass, so pointing it at the briefs directory itself finds nothing and exits 0. - A brief's states and legal moves are now documented once, so the reference guide and the lint cannot disagree about which transitions are legal or what each status requires of its children.
- A `Shipped` brief now requires a `Cut-closed:` declaration. When you close a brief as
information-architecturenow owns the surface-genre routing that previously required six separate registrations:analytical-design,conversion-design,documentation-design,informational-design,marketplace-design, andworkspace-design.- The removed registrations' methods now live as genre references under
information-architecture, so adopters should update direct skill references and invocations to callinformation-architecturewith the relevantsurface-genre:value.
- Frontend pre-flight now routes every
surface-genre:value through the consolidatedinformation-architecturehandoff whenexperience-designis co-installed, withinteraction-designstill owning transactional journeys. - The design-system handoff now names the shipped
design-systemskill slug, andexperience-design>=3.0.0is the recommended floor for the genre-aware route.
- Frontend pre-flight now routes every
- You can now see what each Jira Epic delivered beside what that work was meant to change, in one read-only view. Ask for a project's Epics and their outcomes: the view groups the project's work by Epic, counts delivery from the
flow-metricsskill's own per-issue rows, and renders each Epic's recorded outcome next to it. It writes nothing to Jira and leaves no file behind. - An Epic with no recorded outcome says so, and asks you for one. Instead of a blank row, the view states plainly that nothing is recorded and names the one place to write it — the block under an
Outcomeheading in the Epic's description. Hand your answer back with--outcome EPIC-KEY=<text>and your exact words come back as text you paste into Jira yourself, so the outcome stays something your team said. - A `flow-metrics` run can now touch the on-disk cache not at all. The new
--inert-cachemode performs no cache read, write, directory creation or stale-temporary-file cleanup, which--no-cachestill did. It is off by default, so every existingflow-metricsrun behaves exactly as before.
- You can now see what each Jira Epic delivered beside what that work was meant to change, in one read-only view. Ask for a project's Epics and their outcomes: the view groups the project's work by Epic, counts delivery from the
workspace-statuscan now tell you which delivery contracts are retirement candidates. It reads the repository, reports every blocker holding each candidate back, and names the migration obligations a candidate must discharge before its container can go. Being listed authorizes nothing: a human selects, and the separately confirmed prune executes.- Evidence the run could not read withholds eligibility rather than passing silently. Each blocker declares the input corpus its absence rests on, and a refusal naming any member of that corpus suppresses every candidate that blocker is evaluated over — including candidates carrying no blocker of their own, which are reported rather than dropped. A shorter list never means a cleaner one.
- Ages come from recorded change history and are labelled as such. They are not the thirty-day cooling clock, which runs from a delivery-completion event this capability does not read, so the report is a triage signal rather than a disposition.