31 KiB
🛠️ Repository Maintenance Guide (V5)
"If it's not documented, it's broken."
This guide details the exact procedures for maintaining agentic-awesome-skills.
It covers the Quality Bar, Documentation Consistency, and Release Workflows.
Maintainer shortcuts: Merge a PR · Reopen & merge a closed PR · Post-merge credits sync · Close issues · Create a release
0. 🤖 Agent Protocol (THE BIBLE)
AGENTS MUST READ AND FOLLOW THIS SECTION BEFORE MARKING ANY TASK AS COMPLETE.
Current-base instruction guard
After establishing the clean task base, re-read AGENTS.md, this guide, the repository-canonical maintainer skill, and package.json from that exact base. Do not rely on repository instructions inherited from a different checkout.
Every command, script, reviewer, or gate described as mandatory must exist on the current task base. If it does not, never import or run the retired implementation from another branch, worktree, stash, installed copy, or historical commit. Compare with origin/main, inspect the removal history, and use the current-base contract; stop and report only if the conflict cannot be resolved from repository history.
There are 5 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 -u origin <topic-branch>followed by a protected pull request
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.
For contributor PRs, the contract is now source-only:
- contributors should not commit
CATALOG.md,skills_index.json, ordata/*.json - PR CI previews generated drift but does not require those files in the branch
mainremains the only canonical owner of derived registry artifacts
If main CI fails with:
❌ Detected uncommitted changes produced by registry/readme/catalog scripts.
it means the repository could not auto-sync generated artifacts cleanly and maintainer intervention is required.
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. 🛡️ PROTECTED MAIN
- Never commit or push directly to
main. Branch protection applies to maintainers and administrators. - Make maintainer repairs on the contributor branch when allowed, or on a
codex/*,fix/*, or release branch and open a pull request. - Merge accepted source PRs with
npm run merge:batch; generated state follows through the protectedautomation/canonical-repo-statePR. - A request phrased as “push to main” names the final target state, not permission to bypass the protected PR lane.
5. 📦 RUNTIME DEPENDENCIES MUST BE RUNTIME DEPENDENCIES
If you change the published npm installer surface:
tools/bin/install.jstools/lib/**/*.jsused by the installerpackage.jsonbinentry or packaged files
…then every imported package needed by npx agentic-awesome-skills must live in dependencies, not devDependencies.
npm pack --dry-runis not enough to prove this.- A local repo test can pass while
npxstill fails in a clean environment. - If installer/runtime imports change, add or update a package-contents/runtime test in
tools/scripts/tests/. - Treat
Cannot find module 'X'from a cleannpxinstall as a release-blocking packaging failure.
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.
-
Enforce the frozen warning budget:
npm run check:warning-budgetThis is required before merging or releasing skill changes. It catches new repository-wide warnings, including missing
## When to Usesections, at PR time instead of letting them surface only duringrelease:preflight. -
Check README source credits for changed skills:
npm run check:readme-credits -- --base origin/main --head HEADThis verifies that changed skills with declared external upstream repos already have the required README credit under
### Official Sourcesor### Community Contributors. The first rollout is warning-first for missing structured metadata: if a changed skill clearly looks externally sourced but still lackssource_repo, the check warns instead of failing. Oncesource_repois declared, README coverage is mandatory. -
Build catalog:
npm run catalog -
Optional maintainer sweep shortcut:
npm run sync:repo-stateThis wraps
chain + catalog + sync:web-assets + sync:contributors + audit:consistencyfor a full local repo-state refresh. The scheduled GitHub Actions workflowRepo Hygieneruns this same sweep weekly to catch slow drift onmain. It also enforces the frozen validation warning budget, so new warnings do not creep in silently while the legacy135known warnings remain accepted.When you need the live GitHub repo metadata updated too, run:
npm run sync:github-about npm run audit:consistency:githubFor a read-only summary of current repo health, run:
npm run audit:maintainerRisk labels are declared metadata. Validate the declared value and review ambiguous
risk: unknowncases semantically; do not infer or rewrite risk from isolated words. -
COMMIT GENERATED FILES:
git add README.md skills_index.json data/skills_index.json data/catalog.json data/bundles.json data/aliases.json CATALOG.md git commit -m "chore: sync generated files"🔴 CRITICAL for maintainer pull requests: If you skip this, CI may detect canonical drift after merge and open a follow-up bot PR. Do not bypass protected
main. For contributor PRs, do not include derived registry artifacts. CI blocks direct edits to those files and previews drift separately. Seedocs/maintainers/ci-drift-fix.mdfor details. Protectedmainnever receives an automatic direct push. Canonical drift is published through the fixedautomation/canonical-repo-statePR only when it stays inside the generated-files contract; unmanaged drift fails closed.
B. When You Merge a PR (Step-by-Step)
Agent instruction (when analyzing or handling PRs): Always merge accepted PRs via GitHub (Squash and merge). Never integrate locally and then close the PR. If a PR is closed but its changes were integrated locally, reopen it and follow Reopen & merge so it ends up Merged. Contributors must get credit.
Before merging:
Skill-content review gate
For every canonical SKILL.md or tracked bundle-file change, run validation, reference validation, documentation security, changed-skill evidence, and relevant tests. Review semantics, provenance, declared risk, limitations, and bundled files directly. The separate skill-review workflow or an exact-head maintainer attestation remains authoritative; local heuristic scores and inferred risk labels are not merge gates.
- CI is green — Validation, warning-budget enforcement, README source-credit checks, reference checks, tests, and generated artifact steps passed (see
.github/workflows/ci.yml). If the PR changes anySKILL.md, the separateskill-reviewworkflow must also be green. - Generated drift understood — On pull requests, generator drift is informational only. Do not block a good PR solely because canonical artifacts would be regenerated. Also do not accept PRs that directly edit
CATALOG.md,skills_index.json, ordata/*.json; those files aremain-owned. - 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, drop derived registry files from the branch if they appear, push). For generated registry files, prefer keepingmain's side rather than hand-editing conflicts. 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.
If CI is blocked on fork approval or stale PR metadata:
This happens regularly on community PRs from forks. The common symptoms are:
gh pr checksshowsno checks reportedeven though Actions runs exist.gh run listshowsaction_requiredwithjobs: []forSkills Registry CIorSkill Review.- the PR body does not include the optional Quality Bar Checklist.
Use this playbook:
- Use the guarded maintainer command, never a raw run-approval API call. It recomputes the complete base-to-head diff from exact Git objects, rejects unsafe paths/modes/types, validates workflow identity and PR metadata, and checks the head SHA again around approval:
If canonical
npm run merge:batch -- --prs <PR_NUMBER> --dry-runSKILL.mdor its allowlisted supporting assets/references/resources changed, review the exact full head SHA shown by the command and supply it to the real run:npm run merge:batch -- --prs <PR_NUMBER> --reviewed-head <40-character-head-sha> - Treat the checklist as guidance, not evidence. A missing checklist emits a notice; objective path, blob, validation, reference, provenance, security, test, and exact-head review gates determine mergeability.
- Let
merge:batchapprove action-required fork runs. GitHub Actions materializes those runs asynchronously, so an empty first lookup is not evidence that approval is unnecessary. Do not approve them directly by run ID; the command binds every approval to the current PR, exact head SHA, allowlisted workflow, locally recomputed diff, and immutable PR tuple. - Wait for the required checks. Merge only after
pr-policy,pr-evidence,source-validation,artifact-preview, and a truthful skill-review outcome whenSKILL.mdchanged.reviewmeans Tessl semantic review actually passed or reused a successful result for the identical skill-content fingerprint.manual-review-requiredmeans credentials or credits were unavailable, or Tessl did not produce a passing result; it requires the exact-SHA maintainer judgment above. Never describemanual-review-requiredas “Tessl passed,” and never rerun Tessl merely because the PR head or base moved when the changed skill content is identical. - If the merge endpoint says
Base branch was modified, refresh the PR state and retry. This is normal when you are merging a batch andmainmoved between attempts.
If a PR was closed after local integration (reopen and merge):
If a PR was integrated via local squash and then closed (so it shows "Closed" instead of "Merged"), you can still give the contributor credit by reopening it and merging it on GitHub. The merge can be effectively "empty" (no new diff vs main); what matters is that the PR ends up Merged.
- Reopen the PR on GitHub (Reopen button on the closed PR page), or:
gh pr reopen <PR_NUMBER>. - Fetch the PR branch (the branch lives on the contributor's fork):
git fetch origin pull/<PR_NUMBER>/head:pr-<PR_NUMBER>-tmp git checkout pr-<PR_NUMBER>-tmp - Merge
maininto it and resolve conflicts:For conflicts in generated/registry files (git merge origin/main -m "chore: merge main to resolve conflicts"CATALOG.md,data/catalog.json, etc.), keep main's version and remove those derived files from the PR branch:git checkout --theirs CATALOG.md data/catalog.json(and any other derived files), thengit addthem. - Commit the merge (if not already done):
git commit -m "chore: merge main to resolve conflicts" --no-edit - Push to the contributor's fork. Add their fork as a remote if needed (replace
USERandBRANCHwith the PR head owner and branch from the PR page):This works if the contributor enabled "Allow edits from maintainers" (or you have push access). If push is denied, ask the contributor to mergegit remote add <user>-fork https://github.com/<USER>/agentic-awesome-skills.git git push <user>-fork pr-<PR_NUMBER>-tmp:<BRANCH>maininto their branch and push; then you use "Squash and merge" on GitHub. - Merge the PR on GitHub:
gh pr merge <PR_NUMBER> --squash
The PR will show as Merged and the contributor will get credit. - Switch back to
main:
git checkout main
We used this flow for PRs #220, #224, and #225 after they had been integrated locally and closed.
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. - Run the Post-Merge Credits Sync below — this is mandatory after every PR merge, including single-PR merges.
Maintainer shortcut for batched PRs:
- Use
npm run merge:batch -- --prs 450,449,446,451to automate the ordered maintainer flow for multiple PRs. See docs/maintainers/merge-batch.md for the short usage guide. - Pages is release-only: ordinary pushes to
mainnever deploy it. Dispatch.github/workflows/pages.ymlexplicitly only at an approved publication gate. Canonical-sync merges still use--skip-pagesand carry[skip pages]as a durable audit marker; the four routine app-bound checks and CodeQL remain enforced. The supported Core preview uses the targeted packed smoke workflow; retired certified-v1 verifier harnesses are not part of the repository workflow. - The script keeps the GitHub-only squash merge rule, handles fork-run approvals and stale PR metadata refresh, waits only on fresh required checks, retries
Base branch was modified, and runs the mandatory post-mergesync:contributorsfollow-up onmain. The fork content allowlist applies only to external PRs; same-repository maintainer PRs may change repository-wide source while remaining subject to protected checks, trusted changed-skill evidence, exact-head review, and immutable PR identity. - It is intentionally not a conflict resolver. If a PR is conflicting, stop and follow the manual conflict playbook.
C. Post-Merge Credits Sync (Mandatory After Every PR Merge)
This section is not optional. Every time a PR is merged, you must ensure both README credit surfaces are correct on main:
### Community Contributors/## Credits & Sourcesfor external repositories referenced by the merged work## Repo Contributorsfor the human contributor list
Do this immediately after each PR merge. Do not defer it to release prep.
-
Pull the merged
mainstate locally:git checkout main git pull --ff-only origin main -
Sync
Repo Contributors:- Run:
npm run sync:contributors - This refreshes
## Repo ContributorsinREADME.mdfrom the live GitHub contributor list while preserving custom bot/app links. - If you are already doing a full maintainer sweep,
npm run sync:repo-stateis also acceptable.
- Run:
-
Audit external-source credits for the merged PR:
- Read the merged PR description, changed files, linked issues, and any release-note draft text you plan to ship.
- If the PR added skills, references, or content sourced from an external GitHub repo that is not already credited in
README.md, add it immediately. - Treat skill frontmatter
source_repo+source_typeas the primary source of truth when present. - If the repo is from an official organization/project source, place it under
### Official Sources. - If the repo is a non-official ecosystem/community source, place it under
### Community Contributors. - If the PR reveals that a credited repo is dead, renamed, archived, or overstated, fix the README entry in the same follow-up pass instead of leaving stale metadata behind.
- Release notes are not a substitute for README attribution. If a repo appears in the merged work or planned release notes and belongs in credits, add it to the README at merge time.
-
Publish README credit updates through the protected sync lane:
- After the source batch, let the trusted canonical-sync workflow open or update
automation/canonical-repo-stateand merge that PR after its required checks. - If an unmanaged credit repair is still required, make it on a topic branch and merge it by pull request; never push the follow-up directly to
main. - Do not leave contributor or community-credit drift until the next release.
- After the source batch, let the trusted canonical-sync workflow open or update
-
Then continue with normal maintenance:
- Verify Table of Contents if you touched headings.
- Prepare the release 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?)
- Official Sources: Use this for official org/vendor/project repos.
- Rule: "This came from the official repo for the tool/company/project." -> Add to
### Official Sources.
- Rule: "This came from the official repo for the tool/company/project." -> Add to
- Community Contributors: Use this for non-official external repos that contributed skills, references, templates, or other source material.
- Rule: "This merged PR depends on or imports material from a community repo." -> Add to
### Community Contributors.
- Rule: "This merged PR depends on or imports material from a community repo." -> Add to
- Credits & Sources: This whole area is for external repos and upstream sources, split into Official vs Community.
- 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
Merge rule: after every PR merge, check both ### Community Contributors and ## Repo Contributors. A merge is not fully done until both sections are either confirmed unchanged or updated and pushed.
E. Badges & Links
- Antigravity Badge: Must point to
https://github.com/sickn33/agentic-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 6-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?
- Risk Limits: If the skill includes shell/network/filesystem/mutation guidance, instructions include explicit prerequisites and warnings.
- Repo Security Scan: Run
npm run security:docsfor command-heavy, network-execution, or token-like guidance inSKILL.md.
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):
Preflight verification → Changelog → npm run release:prepare -- X.Y.Z → npm run release:publish -- X.Y.Z → npm publish (manual or via CI) → Close remaining linked issues.
-
Run release verification:
npm run release:preflightThis now runs the deterministic
sync:release-statepath, refreshes tracked web assets, executes the local test suite, runs the web-app build, and performsnpm pack --dry-run --jsonbefore a release is considered healthy. Ifrelease:preflightfails oncheck:warning-budget, treat it as a PR-quality failure and fix the new warnings in source rather than bypassing the gate at release time. If the installer or packaged runtime code changed, you must also verify that new imports are satisfied bydependenciesrather thandevDependencies, and ensure the npm-package/runtime tests cover that path.npm pack --dry-runalone will not catch missing runtime deps in a cleannpxenvironment. Optional diagnostic pass:npm run validate:strict -
Update Changelog: Add the new release section to
CHANGELOG.md. -
Prepare the protected release PR:
npm run release:prepare -- X.Y.ZThis validates the release, aligns versioned files, writes the release notes artifact, creates the release commit on
release/vX.Y.Z, pushes it, and opens the protected release PR. The tag is created only after that exact PR is merged. -
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:
npm run release:publish -- X.Y.ZImportant: 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. Before publishing, that workflow re-runssync:release-state, checks for canonical drift withgit diff --exit-code, runs tests/docs security/web build, and performsnpm pack --dry-run --json.Or create the release manually via GitHub UI > Releases > Draft a new release, then publish.
-
Publish to npm (so
npx agentic-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
GitHub Release Notes Requirements
Every published GitHub Release should work as a discovery page, not just an internal changelog dump.
Required rules:
- Put the user-facing tool language early:
- mention Claude Code, Cursor, Codex CLI, Gemini CLI, or the specific supported tools that matter for that release.
- Add a short "Start here" block near the top:
- install command
- link to
README.md#choose-your-tool - link to
README.md#best-skills-by-tool - link to
docs/users/bundles.md - link to
docs/users/workflows.md
- Keep the first paragraph readable to someone arriving from Google or GitHub Releases.
- Prefer plain ASCII section headers in release notes.
- Do not rewrite historical releases in bulk. Improve the latest release and all future releases.
GitHub Release Notes Template
Use this structure for the published GitHub Release object:
## [X.Y.Z] - YYYY-MM-DD - "User-facing title"
> Installable skill library update for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and related AI coding assistants.
Start here:
- Install: `npx agentic-awesome-skills`
- Choose your tool: [README -> Choose Your Tool](https://github.com/sickn33/agentic-awesome-skills#choose-your-tool)
- Best skills by tool: [README -> Best Skills By Tool](https://github.com/sickn33/agentic-awesome-skills#best-skills-by-tool)
- Bundles: [docs/users/bundles.md](https://github.com/sickn33/agentic-awesome-skills/blob/main/docs/users/bundles.md)
- Workflows: [docs/users/workflows.md](https://github.com/sickn33/agentic-awesome-skills/blob/main/docs/users/workflows.md)
[Brief paragraph explaining what changed and who the release helps.]
## New Skills
- **skill-name** - user-facing summary
## Improvements
- **Area**: user-facing improvement summary
## Who should care
- **Claude Code users** ...
- **Cursor users** ...
- **Codex CLI users** ...
- **Gemini CLI users** ...
## Credits
- **@username** for `skill-name`
Upgrade now: `git pull origin main` to fetch the latest skills.
Social Preview
If you set a repository social preview image on GitHub, keep these rules:
- focus on the core value proposition;
- mention the primary supported tools when helpful;
- avoid dense text or tiny unreadable logos;
- refresh it when repository positioning changes materially.
Manual upload path on GitHub:
- Open the repository on GitHub.
- Go to Settings.
- Open the Social preview section.
- Upload the image you want to use.
Pinned Discussion Template
Canonical onboarding discussion:
- Title:
Start here: best skills by tool - Current live discussion:
https://github.com/sickn33/agentic-awesome-skills/discussions/361
When refreshing or recreating the pinned onboarding discussion, keep this structure:
If you are new to **Agentic Awesome Skills**, start here instead of browsing all skills at random.
## Install in 1 minute
```bash
npx agentic-awesome-skills
```
## Best starting pages by tool
- Claude Code
- Cursor
- Codex CLI
- Gemini CLI
## Start with a bundle
- Bundles
- Workflows
- Getting started
- Usage guide
## Best starter skills for most users
- `@brainstorming`
- `@lint-and-validate`
- `@systematic-debugging`
- `@create-pr`
- `@security-auditor`
## Compare before you install
- comparison pages
- best-of pages
If GitHub does not support pinning via API, create/update the discussion programmatically if possible and pin it manually in the UI.
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.