ascii-video, minecraft-modpack-server, obsidian, pokemon-player, powerpoint, songwriting-and-ai-music: add version 1.0.0 — gitea: sync v1.2.0

This commit is contained in:
Hermes Agent
2026-07-05 17:42:06 -05:00
parent c6ca1d9a9b
commit c6d6db699c

View File

@@ -1,7 +1,7 @@
--- ---
name: gitea name: gitea
description: "Push Hermes skill updates to the local Gitea instance at 10.0.0.61:3000. Clone, copy, commit, push workflow." description: "Push Hermes skill updates to the local Gitea instance at 10.0.0.61:3000. Clone, copy, commit, push workflow."
version: 1.1.0 version: 1.2.0
author: Hermes Agent author: Hermes Agent
license: MIT license: MIT
platforms: [linux] platforms: [linux]
@@ -87,3 +87,50 @@ git push origin main
- **Skill directory names in the repo are flat** — e.g. `ask-claude/SKILL.md`, not `autonomous-ai-agents/ask-claude/SKILL.md`. The category hierarchy exists in `~/.hermes/profiles/general/skills/` but the Gitea repo uses flat skill names. - **Skill directory names in the repo are flat** — e.g. `ask-claude/SKILL.md`, not `autonomous-ai-agents/ask-claude/SKILL.md`. The category hierarchy exists in `~/.hermes/profiles/general/skills/` but the Gitea repo uses flat skill names.
- **Clone is disposable.** `/tmp/hermes-skills` is a working copy. Don't store anything there you need to keep. Re-clone if the directory is missing or stale. - **Clone is disposable.** `/tmp/hermes-skills` is a working copy. Don't store anything there you need to keep. Re-clone if the directory is missing or stale.
- **No credential helper needed.** The token-in-URL pattern works for one-shot pushes. Don't store the token in git config or credential files. - **No credential helper needed.** The token-in-URL pattern works for one-shot pushes. Don't store the token in git config or credential files.
- **Cross-profile pushes require `cross_profile=True`.** When pushing skills from the research profile (or any non-general profile), the write_file guard will block. Pass `cross_profile=True` to bypass. The Gitea repo is the canonical store for ALL profiles' skills, not just general.
- **New skills need a `version:` field.** If a skill is missing `version:` in its YAML frontmatter, add `version: 1.0.0` before pushing. The Gitea repo requires it.
## Sync Audit (Check All Skills Are Versioned and in Gitea)
Use this Python script to cross-reference all local skills against Gitea:
```python
import os, re
skills_dir = "/home/n8n/.hermes/profiles/general/skills"
skills = []
for root, dirs, files in os.walk(skills_dir):
if "SKILL.md" in files:
path = os.path.join(root, "SKILL.md")
content = open(path).read()
name = re.search(r'^name:\s*(.+)$', content, re.MULTILINE)
version = re.search(r'^version:\s*(.+)$', content, re.MULTILINE)
name = name.group(1).strip() if name else os.path.basename(root)
version = version.group(1).strip() if version else "unknown"
skills.append((name, version, path))
gitea_dir = "/tmp/hermes-skills"
gitea_skills = set()
gitea_versions = {}
for entry in os.listdir(gitea_dir):
skill_path = os.path.join(gitea_dir, entry, "SKILL.md")
if os.path.isfile(skill_path):
content = open(skill_path).read()
gname = re.search(r'^name:\s*(.+)$', content, re.MULTILINE)
gversion = re.search(r'^version:\s*(.+)$', content, re.MULTILINE)
gname = gname.group(1).strip() if gname else entry
gversion = gversion.group(1).strip() if gversion else "unknown"
gitea_skills.add(gname)
gitea_versions[gname] = gversion
for name, version, path in sorted(skills):
in_gitea = "" if name in gitea_skills else "✗ MISSING"
gitea_ver = gitea_versions.get(name, "")
ver_match = "" if version == gitea_ver else f"✗ (local:{version} vs gitea:{gitea_ver})"
print(f" {name:40s} v{version:10s} gitea:{in_gitea:12s} version:{ver_match}")
```
Run this after any batch of skill changes. Fix issues:
- **Missing `version:`** → add `version: 1.0.0` to the skill's YAML frontmatter
- **Missing from Gitea** → `mkdir` the directory and copy the SKILL.md
- **Version mismatch** → copy the updated local SKILL.md to Gitea