Skip to content

Add the imgproxy-docs-sync skill - #92

Open
11bit wants to merge 2 commits into
mainfrom
add-imgproxy-docs-sync-skill
Open

Add the imgproxy-docs-sync skill#92
11bit wants to merge 2 commits into
mainfrom
add-imgproxy-docs-sync-skill

Conversation

@11bit

@11bit 11bit commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Adds a Claude Code skill at .claude/skills/imgproxy-docs-sync/ for working through the auto-generated "Usage docs of imgproxy have been updated" issues.

Those issues all have the same shape — a link to an imgproxy-docs compare range — and turning one into a PR is the same set of steps every time. The skill encodes them:

  1. Resolve the issue (number, URL, or pick from the open ones) and extract the <base>...<head> shas.
  2. Pull the diff via gh api, filtered to docs/usage/**; docs/configuration/** and friends are reported as ignored rather than dropped silently. Cross-check each option against the rendered docs page, since a hunk alone doesn't carry defaults or ranges.
  3. Classify every hunk: new option / changed option / removed or deprecated / prose only / out of scope.
  4. Print a plan and stop for approval — including the exact URL strings the change would emit, which is the quickest way to catch a misread of the docs.
  5. Only then implement, run lint && check-types && test && build, write a changeset by hand, and open a PR with Closes #N.

references/repo-conventions.md holds the things that are easy to get wrong here:

  • the four alphabetical wiring edits, and that src/options/index.ts order is the URL segment order at runtime
  • forgetting the Options intersection in src/types/index.ts — builds fine, type-errors for consumers
  • the optional-positional-argument rules from the gradient fix: gate on !== undefined, default with ??, trim trailing colons once at the end
  • the full guard table with the exact error strings the tests assert against
  • routing by docs section (processing / image info / shared), ((pro))**PRO feature** JSDoc, and npm run test -- --run rather than watch mode

Also gitignores .claude/settings.local.json, so the skill can be tracked without local permission settings tagging along.

Using it

gh auth login             # one-time: the skill reads the issue and the docs diff through gh
cd imgproxy-js-core
claude

Then, at the Claude Code prompt:

/imgproxy-docs-sync 82

82 is the auto-generated issue's number; an issue URL works too, and /imgproxy-docs-sync with no
argument lists the open ones and asks which. It runs unattended until it prints the plan, then asks
one question — Proceed as planned / Proceed with changes / Report only / Cancel. Nothing is
written to disk before that answer, and it never merges the PR it opens.

README.md gained a "Syncing with imgproxy docs" section covering this, plus the dispatch → issue
chain that produces the issues in the first place.

Only the README and the skill files are touched; no production code changes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UoYDgwBavVrxfoRrXn4ZHb

11bit and others added 2 commits August 21, 2026 11:57
The imgproxy-docs repo dispatches to this one whenever the Usage section
of the documentation changes, and the workflow opens an issue linking to
a compare range. Working through one of those issues is the same set of
steps every time: read the diff, decide which hunks are actually URL
options we emit, map them onto this repo's layout, then implement.

This skill encodes that. It resolves the issue, pulls the docs diff
filtered to docs/usage/**, classifies each hunk (new option / changed
option / removed / prose only / out of scope), prints a plan with the
URL strings the change would emit, and only implements it after
approval, finishing with a changeset and a PR that closes the issue.

The reference file captures the conventions that are easy to get wrong:
the four alphabetical wiring edits, the Options intersection in
src/types/index.ts, the guard table with its exact error strings, and
the optional-positional-argument rules from the gradient fix.

.claude/settings.local.json is gitignored so the skill can be tracked
without dragging local permissions along with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoYDgwBavVrxfoRrXn4ZHb
The skill was committed without any entry point for someone who doesn't
already know it exists. Adds a "Syncing with imgproxy docs" section: how
the dispatch/issue chain works, the one-time setup, the literal command
to type, and what the approval gate asks.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gvc3eYgQS7juqk4LnaUG4J
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant