Skip to content

chore: ship 469 files in the core plugin, not 587 - #932

Merged
tractorjuice merged 1 commit into
mainfrom
chore/core-ship-fewer-files
Oct 12, 2026
Merged

tractorjuice merged 1 commit into
mainfrom
chore/core-ship-fewer-files

Conversation

@tractorjuice

Copy link
Copy Markdown
Owner

Summary

The Claude plugin directory holds a plugin for a reviewer when its folder has more than 512 files, a non-image file of 256 KiB or more, or an unreadable binary (pre-submission checklist). Core ArcKit has been on that hold since 6.17.3 for two reasons: 587 files and a 321 KiB CHANGELOG.md. This PR fixes the file count, and #918, which this PR is stacked on, fixes the CHANGELOG.

Core goes from 587 files to 469. Every published plugin folder passes the new check:

Folder Files
plugins/arckit (core) 469
largest overlay (uk/gcloud) 79
largest core file templates/pages-template.html, 206 KiB

What changed

  • Each overlay now ships its own guides. 111 guides move from plugins/arckit-claude/docs/guides/ to plugins/arckit-<overlay>/docs/guides/: uk-gcloud 15, fr/uae/ca 12 each, us/au 10, togaf-adm 9, eu 8, agent-architecture 6, at/uk-finance/uk-nhs 4, au-energy/repo 2, fde 1.
  • /arckit:pages still lists them for overlay users. sync-guides.mjs adds the guides of each overlay installed for the user or the repo. overlayGuideDirs() in hook-utils.mjs finds them through installed_plugins.json, or beside core in a source checkout. A site no longer lists guides for overlays that aren't installed.
  • The converter merges guides from every plugin it converts. Extensions keep the overlay guides they need and drop the guides for the Claude-only overlays (uk-gcloud, repo, fde), whose commands they don't have. That also stops the proprietary uk-gcloud guides from reaching the MIT extension repos.
  • check-guide-parity.py checks every plugin tree against docs/guides/. It fails on drift, on a guide in two trees, and on an overlay guide placed back in core.
  • push-extensions.sh leaves seven unused files out of core: the four Self-Harness modules (the autoresearch loop runs them from this repo), the status band's engine test, the skills lint config and check-prerequisites.sh. It also leaves out the untracked tsconfig.json and .claude-plugin/types/ that plugin tooling writes locally. The tar reads the working tree, so those would have shipped in the next release.
  • New scripts/check-plugin-directory-limits.py. test_claude_publish_layout.py runs it on the staged layout in CI, and push-extensions.sh runs it on the clone before pushing, so a release that would land back on the hold stops first.
  • Fix: two UAE guides pointed to /arckit:integration, which doesn't exist. The mirror's dangling-reference test caught it once the guides moved. They now point to /arckit:data-mesh-contract and /arckit:diagram.

What this does not change

Core still ships the status band mod, which carries its own reviewer hold ("This plugin includes a mod"), so core will still go to a reviewer. Once this and #918 are released, it will have one hold instead of two.

Merge order

  1. chore: keep the shipped plugin CHANGELOG small #918 (CHANGELOG trim). Without it, test_every_plugin_folder_keeps_to_the_directory_file_rules fails on the 321 KiB CHANGELOG.
  2. This PR. GitHub retargets it to main when chore: keep the shipped plugin CHANGELOG small #918's branch is deleted.
  3. One release ships both.

Test plan

  • pytest tests/: 2326 passed, 228 skipped (pre-existing command-standard skips)
  • node --test tests/plugin/*.test.mjs tests/plugin/test_*.mjs: 543 passed, including the new overlay-guides.test.mjs
  • New tests/plugin/test_plugin_directory_limits.py, plus four new layout tests in test_claude_publish_layout.py
  • All 34 checks in lint-markdown.yml run locally
  • python3 scripts/converter.py: every extension gets 221 guides (was 239)
  • Staged the full arckit-claude layout with namespacing and ran the limits check: all 18 folders pass, and the overlay guides carry /arckit-fr:-style commands
  • claude plugin validate plugins/arckit-claude/.claude-plugin/plugin.json

🤖 Generated with Claude Code

https://claude.ai/code/session_01QXuP2Pdr4xi49DKmAzpNqy

The Claude plugin directory holds a plugin with more than 512 files for a
reviewer ("Files or downloads the validator couldn't inspect"). Core
shipped 587, one of the two findings behind that hold on 6.17.3 to 6.18.0;
the other, the 321 KiB CHANGELOG, is the commit below this one.

- Each overlay now ships the guides for its own commands: 111 guides
  move from plugins/arckit-claude/docs/guides to
  plugins/arckit-<overlay>/docs/guides. check-guide-parity.py checks
  every plugin tree against docs/guides and fails on an overlay guide
  in core or a guide in two trees.
- /arckit:pages (sync-guides.mjs) adds the guides of each overlay
  installed for the user or the repo, found by overlayGuideDirs() in
  hook-utils.mjs through installed_plugins.json, or beside core in a
  source checkout.
- converter.py merges guides from every converted plugin, so the
  extensions keep the overlay guides they need and stop carrying the
  Claude-only overlays' guides (uk-gcloud's are proprietary).
- push-extensions.sh leaves out of core the four Self-Harness modules,
  the status band's engine test, the skills lint config and
  check-prerequisites.sh, none used by an installed plugin, plus the
  untracked tsconfig.json and .claude-plugin/types/ that plugin tooling
  writes locally.
- check-plugin-directory-limits.py fails any published plugin folder over
  512 files, any non-image file of 256 KiB or more, or an unreadable
  binary. test_claude_publish_layout.py runs it on the staged layout in
  CI, and push-extensions.sh runs it before it pushes.
- Two UAE guides pointed to /arckit:integration, which doesn't exist; the
  mirror's dangling-reference test caught it once the guides moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QXuP2Pdr4xi49DKmAzpNqy
@tractorjuice tractorjuice added the chore Maintenance, tooling, CI, releases — no user-facing change label Oct 12, 2026
@tractorjuice
tractorjuice deleted the branch main October 12, 2026 13:23
@tractorjuice tractorjuice reopened this Oct 12, 2026
@tractorjuice
tractorjuice changed the base branch from chore/trim-plugin-changelog to main October 12, 2026 13:25
@tractorjuice
tractorjuice merged commit 57026e6 into main Oct 12, 2026
6 checks passed
@tractorjuice
tractorjuice deleted the chore/core-ship-fewer-files branch October 12, 2026 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance, tooling, CI, releases — no user-facing change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant