- Add docs/maintainers/merging-prs.md: policy to always use Squash and merge, resolve conflicts on PR branch so PR shows Merged; Co-authored-by for rare local integration - Update .github/MAINTENANCE.md: merge via GitHub only, never close after local integration; conflict resolution on branch then merge - Update CONTRIBUTING.md Recognition: we always merge accepted PRs on GitHub, never close after integrating locally Addresses feedback from @sraphaz on #225 (attribution when PRs are integrated locally). Going forward PRs will show as Merged so contributors get full credit.
13 KiB
🛠️ Repository Maintenance Guide (V5)
"If it's not documented, it's broken."
This guide details the exact procedures for maintaining antigravity-awesome-skills.
It covers the Quality Bar, Documentation Consistency, and Release Workflows.
Maintainer shortcuts: Merge a PR · Post-merge & contributors · Close issues · Create a release
0. 🤖 Agent Protocol (THE BIBLE)
AGENTS MUST READ AND FOLLOW THIS SECTION BEFORE MARKING ANY TASK AS COMPLETE.
There are 3 things that usually fail/get forgotten. DO NOT FORGET THEM:
1. 📤 ALWAYS PUSH (Non-Negotiable)
Committing is NOT enough. You must PUSH to the remote.
- BAD:
git commit -m "feat: new skill"(User sees nothing) - GOOD:
git commit -m "..." && git push origin main
2. 🔄 SYNC GENERATED FILES (Avoid CI Drift)
If you touch any of these:
skills/(add/remove/modify skills)- the Full Skill Registry section of
README.md - counts/claims about the number of skills (
1,200+ Agentic Skills...,(1,200+/1,200+), etc.)
…then you MUST run the Validation Chain BEFORE committing.
- Running
npm run chainis NOT optional. - Running
npm run catalogis NOT optional.
If CI fails with:
❌ Detected uncommitted changes produced by registry/readme/catalog scripts.
it means you did not run or commit the Validation Chain correctly.
3. 📝 EVIDENCE OF WORK
- You must create/update
walkthrough.mdorCHANGELOG.mdto document what changed. - If you made something new, link it in the artifacts.
4. 🚫 NO BRANCHES
- ALWAYS use the
mainbranch. - NEVER create feature branches (e.g.,
feat/new-skill). - We commit directly to
mainto keep history linear and simple.
1. 🚦 Daily Maintenance Routine
A. Validation Chain
Before ANY commit that adds/modifies skills, run the chain:
-
Validate, index, and update readme:
npm run chainMust return 0 errors for new skills.
-
Build catalog:
npm run catalog -
COMMIT GENERATED FILES:
git add README.md skills_index.json data/catalog.json data/bundles.json data/aliases.json CATALOG.md git commit -m "chore: sync generated files"🔴 CRITICAL: If you skip this, CI will fail with "Detected uncommitted changes". See
docs/maintainers/ci-drift-fix.mdfor details.
B. When You Merge a PR (Step-by-Step)
Before merging:
- CI is green — Validation, reference checks, tests, and generated artifact steps passed (see
.github/workflows/ci.yml). - No drift — PR does not introduce uncommitted generated-file changes; if the "Check for Uncommitted Drift" step failed, ask the author to run
npm run chainandnpm run catalogand commit the result. - Quality Bar — PR description confirms the Quality Bar Checklist (metadata, risk label, credits if applicable).
- Issue link — If the PR fixes an issue, the PR description should contain
Closes #NorFixes #Nso GitHub auto-closes the issue on merge.
How you merge:
- Always merge via GitHub so the PR shows as Merged and the contributor gets credit. Use "Squash and merge". Do not integrate locally and then close the PR — that would show "Closed" and the contributor would not get proper attribution.
- If the PR has merge conflicts: Resolve them on the PR branch (you or the contributor: merge
maininto the PR branch, fix conflicts, runnpm run chainandnpm run catalogif needed, push). Then use "Squash and merge" on GitHub. Full steps: docs/maintainers/merging-prs.md. - Rare exception: Only if merging via GitHub is not possible, you may integrate locally and close the PR; in that case you must add a Co-authored-by line to the commit and explain in a comment. Prefer to avoid this so PRs are always Merged.
Right after merging:
- If the PR had
Closes #N— The issue is closed automatically; no extra action. - If an issue was fixed but not linked — Close it manually and add a comment, e.g.:
Fixed in #<PR_NUMBER>. Shipped in release vX.Y.Z. - Single PR or small batch — Optionally run the full Post-Merge Routine below. For a single, trivial PR you can defer it to the next release prep.
C. Post-Merge Routine (Must Do Before a Release)
After you have merged several PRs or before cutting a release:
-
Sync Contributors List:
- Run:
git shortlog -sn --all - Update
## Repo Contributorsin README.md.
- Run:
-
Verify Table of Contents:
- Ensure all new headers have clean anchors.
- NO EMOJIS in H2 headers.
-
Prepare for release — Draft the release and tag when ready (see §4 Release Workflow below).
2. 📝 Documentation "Pixel Perfect" Rules
We discovered several consistency issues during V4 development. Follow these rules STRICTLY.
A. Table of Contents (TOC) Anchors
GitHub's anchor generation breaks if headers have emojis.
- BAD:
## 🚀 New Here?-> Anchor:#--new-here(Broken) - GOOD:
## New Here?-> Anchor:#new-here(Clean)
Rule: NEVER put emojis in H2 (##) headers. Put them in the text below if needed.
B. The "Trinity" of Docs
If you update installation instructions or tool compatibility, you MUST update all 3 files:
README.md(Source of Truth)docs/users/getting-started.md(Beginner Guide)docs/users/faq.md(Troubleshooting)
Common pitfall: Updating the clone URL in README but leaving an old one in FAQ.
C. Statistics Consistency (CRITICAL)
If you add/remove skills, you MUST ensure generated counts and user-facing claims stay aligned.
Locations to check:
README.mdpackage.jsondescriptionskills_index.jsonand generated catalog artifacts- Any user docs that deliberately hardcode counts
D. Credits Policy (Who goes where?)
- Credits & Sources: Use this for External Repos.
- Rule: "I extracted skills from this link you sent me." -> Add to
## Credits & Sources.
- Rule: "I extracted skills from this link you sent me." -> Add to
- Repo Contributors: Use this for Pull Requests.
- Rule: "This user sent a PR." -> Add to
## Repo Contributors.
- Rule: "This user sent a PR." -> Add to
E. Badges & Links
- Antigravity Badge: Must point to
https://github.com/sickn33/antigravity-awesome-skills, NOTanthropics/antigravity. - License: Ensure the link points to
LICENSEfile.
F. Workflows Consistency (NEW in V5)
If you touch any Workflows-related artifact, keep all workflow surfaces in sync:
docs/users/workflows.md(human-readable playbooks)data/workflows.json(machine-readable schema)skills/antigravity-workflows/SKILL.md(orchestration entrypoint)
Rules:
- Every workflow id referenced in docs must exist in
data/workflows.json. - If you add/remove a workflow step category, update prompt examples accordingly.
- If a workflow references optional skills not yet merged (example:
go-playwright), mark them explicitly as optional in docs. - If workflow onboarding text is changed, update the docs trinity:
README.mddocs/users/getting-started.mddocs/users/faq.md
3. 🛡️ Governance & Quality Bar
A. The 5-Point Quality Check
Reject any PR that fails this:
- Metadata: Has
name,description? - Safety:
risk: offensiveused for red-team tools? - Clarity: Does it say when to use it?
- Examples: Copy-pasteable code blocks?
- Limitations / Safety Notes: Edge cases and risk boundaries are stated clearly.
B. Risk Labels (V4)
- ⚪ Safe: Default.
- 🔴 Risk: Destructive/Security tools. MUST have
[Authorized Use Only]warning. - 🟣 Official: Vendor mirrors only.
4. 🚀 Release Workflow
When cutting a new version, follow the maintainer playbook in docs/maintainers/release-process.md.
Release checklist (order matters):
Operational verification → Changelog → Bump package.json (and README if needed) → Commit & push → Create GitHub Release with tag matching package.json → npm publish (manual or via CI) → Close remaining linked issues.
-
Run release verification:
npm run validate npm run validate:references npm run sync:all npm run test npm run app:buildOptional diagnostic pass:
npm run validate:strict -
Update Changelog: Add the new release section to
CHANGELOG.md. -
Bump Version:
- Update
package.json→"version": "X.Y.Z"(source of truth for npm). - Update version header in
README.mdif it displays the number. - One-liner:
npm version patch(orminor/major) — bumpspackage.jsonand creates a git tag; then amend if you need to tag after release.
- Update
-
Create GitHub Release (REQUIRED):
⚠️ CRITICAL: Pushing a tag (
git push --tags) is NOT enough. You must create a GitHub Release Object for it to appear in the sidebar and trigger the NPM publish workflow.Use the GitHub CLI:
# Prepare release notes (copy the new section from CHANGELOG.md into docs/maintainers/release-process.md, or use CHANGELOG excerpt) # Then create the tag AND the release page (tag must match package.json version, e.g. v4.1.0) gh release create v4.0.0 --title "v4.0.0 - [Theme Name]" --notes-file docs/maintainers/release-process.mdImportant: The release tag must match
package.json's version. The Publish to npm workflow runs on Release published and will runnpm publish; npm rejects republishing the same version.Or create the release manually via GitHub UI > Releases > Draft a new release, then publish.
-
Publish to npm (so
npx antigravity-awesome-skillsworks):- Option A (manual): From repo root, with npm logged in and 2FA/token set up:
You cannot republish the same version; always bump
npm publishpackage.jsonbefore publishing. - Option B (CI): On GitHub, create a Release (tag e.g.
v4.6.1). The workflow Publish to npm runs on Release published and runsnpm publishif the repo secretNPM_TOKENis set (npm → Access Tokens → Granular token with Publish, then add as repo secretNPM_TOKEN).
- Option A (manual): From repo root, with npm logged in and 2FA/token set up:
-
Close linked issue(s):
- Issues that had
Closes #N/Fixes #Nin a merged PR are already closed. - For any issue that was fixed by the release but not auto-closed, close it manually and add a comment, e.g.:
gh issue close <ID> --comment "Shipped in vX.Y.Z. See CHANGELOG.md and release notes."
- Issues that had
When to Close an Issue
| Situation | Action |
|---|---|
PR merges and PR body contains Closes #N or Fixes #N |
GitHub closes the issue automatically. |
| PR merges but did not reference the issue | After merge, close manually: gh issue close N --comment "Fixed in #<PR>. Shipped in vX.Y.Z." |
| Fix/feature shipped in a release, no PR referenced | Close with: gh issue close N --comment "Shipped in vX.Y.Z. See CHANGELOG." |
📋 Changelog Entry Template
Each new release section in CHANGELOG.md should follow Keep a Changelog and this structure:
## [X.Y.Z] - YYYY-MM-DD - "[Theme Name]"
> **[One-line catchy summary of the release]**
[Brief 2-3 sentence intro about the release's impact]
## 🚀 New Skills
### [Emoji] [Skill Name](skills/skill-name/)
**[Bold high-level benefit]**
[Description of what it does]
- **Key Feature 1**: [Detail]
- **Key Feature 2**: [Detail]
> **Try it:** `(User Prompt) ...`
---
## 📦 Improvements
- **Registry Update**: Now tracking [N] skills.
- **[Component]**: [Change detail]
## 👥 Credits
A huge shoutout to our community contributors:
- **@username** for `skill-name`
- **@username** for `fix-name`
---
_Upgrade now: `git pull origin main` to fetch the latest skills._
5. 🚨 Emergency Fixes
If a skill is found to be harmful or broken:
- Move to broken folder (don't detect):
mv skills/bad-skill skills/.broken/ - Or Add Warning: Add
> [!WARNING]to the top ofSKILL.md. - Push Immediately.
6. 📁 Data directory note
data/package.json exists for historical reasons; the build and catalog scripts run from the repo root and use root node_modules. You can ignore or remove data/package.json and data/node_modules if present.