Skip to content

Epic 19 · An agent shrinks an image with ncly image shrink #494

Open
0 of 4 issues completed
Open

Description

@pascalandy

Outcome

Pascal tells a fresh agent "Use Nicely to shrink the image ". The agent finds ncly image shrink through ncly describe or the image-shrink skill, runs a dry run, and writes a smaller copy beside the input, without its location.

The extension lives in its own public repository, pascalandy/ncly-image-shrink, created from the extension template. This Epic also proves the template on a new extension: an agent that did not read ncly-video-convert builds it, up to "Done when" in the template's AGENTS.md. Each time that the agent stops on the template, the contract, or the SDK, it opens an issue in pascalandy/nicely and links it here.

Plan: XT-107 image shrink. Milestone: XT-107 image shrink.

The chain, step by step

This table is the one place to follow the work. The agent updates it at each merge. Each pull request of this Epic says Part of pascalandy/nicely#494 and names its card.

Step Card What it gives Where State
1 XT-107-T1 The repository, rendered from the template of the latest release, with green checks pascalandy/ncly-image-shrink done: initial push 3af2232 (no PR, new repository), checks Linux and macOS
2 XT-107-T2 ncly image shrink <file>, built through the loop in at most 5 rounds, just finish passes pascalandy/ncly-image-shrink done: PR #1 merged at f83de69, Ready in round 4, just finish and signoff pass
3 XT-107-T3 Release v0.1.0, installed on om1 and on the Mini pascalandy/ncly-image-shrink done: tag v0.1.0 at f83de69, release receipt, om1 and Mini runs
4 UAT "Use Nicely to shrink the image " a separate UAT issue todo

Boundaries

  • In scope: one command, ncly image shrink <file>. One JPEG, PNG, or WebP in, one file out in the same format at <stem>.shrunk.<ext>. Longest side at most 2048 pixels by default, one flag for another value, never enlarged. Success means fewer bytes than the input; otherwise the command refuses and writes nothing. Orientation applied, color profile kept, location, author, camera, and capture date removed. --dry-run and --force. No key, no network, no cost
  • Out of scope: HEIC, batches, folders, other image jobs (crop, convert), records and progress display

Issues opened against Nicely

The agent adds one row for each stop on the template, the contract, or the SDK.

Issue What stopped the agent State
#497 protect hashes an unreadable input before its refusal case can run open
#496 The txtar example-fixture transport adds a newline to binary image bytes open
#498 Follow-up: the published-install gate leaves checkout independence to a manual check; both machine installs passed that check open, nonblocking follow-up
#500 D043 and release-nicely trigger a Nicely release for an extension item shipped from its own repository; D065 says it keeps its own versions open, nonblocking follow-up
#501 The transcript_cancel response assertion failed before its saved-run inspection; retain failed-state diagnostics open, retrospective follow-up

Done when

The UAT passes on Pascal's machine, just finish passed on the merged build, and each issue in the table above is fixed or has a decision.

by GPT-6.1-Sol via Codex

Metadata

Metadata

Assignees

No one assigned

    Labels

    1-ready-for-agentValidated work, sufficiently specified for an autonomous agent3-pty:p1High priority; takes precedence over ordinary planned work4-epicGroups Stories around a shared outcome through native sub-issues

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions