fix: skill upload 200-file cap + packaging hygiene (3.0.1)#242
Merged
fix: skill upload 200-file cap + packaging hygiene (3.0.1)#242
Conversation
Root vendor/package/ was an accidentally committed extracted npm tarball (steipete-bird-0.8.0). Zero importers: the real vendored X client lives at scripts/lib/vendor/bird-search/, referenced by scripts/lib/bird_x.py and tests/test_bird_x.py. Removes 215 files + 1 .tgz, dropping repo from 406 to 191 files and clearing the claude.ai skill-upload 200-file cap. Adds /vendor/ to .gitignore (leading slash so scripts/lib/vendor/ is unaffected).
Both plans describe work that was already shipped: - feat-add-websearch-source.md - websearch is in the v3 pipeline (scripts/lib/perplexity.py etc) - fix-strict-date-filtering.md - date filtering is enforced in scripts/lib/dates.py New planning goes in docs/plans/ following the ce:plan convention.
…kill Wraps git archive with --prefix=last30days/ so the zip contains a single top-level skill folder matching SKILL.md's name: frontmatter. Enforces: - refuses to build with a dirty working tree (prevents shipping untracked changes) - fails if zip exceeds 200 files (claude.ai's empirical upload cap) - fails if zip contains more than one SKILL.md (avoids name: confusion) Output at dist/last30days.skill (gitignored).
Atomic bump across all four manifests: - SKILL.md (root) - skills/last30days/SKILL.md (internal spec) - .claude-plugin/plugin.json - gemini-extension.json CHANGELOG entry documents the skill-upload packaging fix, vendor/ removal, legacy plans/ removal, and the new scripts/build-skill.sh builder.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
claude.ai's "Upload skill" UI rejects zips with more than 200 files. Zipping this repo produced 406 files, so direct upload failed. This PR fixes that plus related packaging hygiene.
vendor/(215 files from accidental PR feat: add Xiaohongshu source + Reddit public fallback (and probe reliability fix) #48 commit; real vendored X client stays atscripts/lib/vendor/bird-search/)plans/(superseded bydocs/plans/).gitattributeswithexport-ignoreentries that mirror Anthropic's canonical skill-packager exclusions plus repo-specific dev/docs/media/internal-skill excludesscripts/build-skill.sh- one-command builder that producesdist/last30days.skillwith a single top-levellast30days/directory, enforces =200 files and exactly oneSKILL.md, and refuses dirty-tree buildsSKILL.mddescription from 228 to 167 chars (Anthropic caps at 200)Verification
bash scripts/build-skill.sh- 90 files, 264K, exactly one SKILL.md, no symlinks in archivepython3 -m pytest tests/test_bird_x.py- 9 passed (proves bird-search runtime intact)python3 -m pytest tests/test_version_consistency.py- 2 passed (version alignment)lib.*,store, orscripts.*- zero reach into excluded pathstest_store.py/test_watchlist_commands.pyfailures confirmed present onmainbefore these changes (not introduced here)Plan
Full plan at
docs/plans/2026-04-14-001-fix-skill-upload-200-file-limit-plan.md.Out of scope (separate PRs)
"skills": ["./"]plugin-loader path-escapeTest plan
.skillfilelast30days/SKILL.mdskills/directories in archivebird_xtests pass aftervendor/deletedist/last30days.skillto claude.ai via the "Upload skill" UI and confirm acceptance (the final rejection-risk gate)Post-Deploy Monitoring & Validation
No runtime behavior changes ship in this PR - it is pure packaging hygiene and metadata updates. Skill consumers (Claude Code plugin via GitHub URL, ClawHub publish path, Gemini extension) see the same runtime.
Validation:
Owner: @mvanhorn. Window: 48 hours post-merge.
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com