set -euo pipefail + `... | grep -iE '^Bump-Type:' | head -1 | awk ...`
inside `bump=$(...)`: when the last commit has no Bump-Type footer (the
normal default-to-patch case), grep exits 1 on no-match. Under
pipefail, that propagates as the whole pipeline's exit status even
though head/awk both succeed -- set -e then kills the script before it
ever reaches the case statement. Broke on every push since 2026-06-22
once a footer-less commit landed after the last one that happened to
carry a Bump-Type line. Appended `|| true` to swallow the expected
no-match case.
Verified this session: `task install` (and its sub-targets) wipe/skip the
per-skill symlinks (0/40 across all harnesses), while install.sh wires 40/40
reliably. Point the wiring docs at install.sh until the Taskfile bug is fixed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The index still described local-dev's old wire-skills.sh / ~/dev/.skills
mechanism. This repo is now the canonical home; wiring is `task install`
(claude global+repo, crush, antigravity, vibe) or the curl|bash install.sh.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ports the Vibe wiring from local-dev's wire-skills.sh so this repo's installer
covers all four harnesses. Vibe uses a flat layout — ~/.vibe/skills/<name>.md
symlinked to the skill's SKILL.md file (not the directory, unlike Claude/Crush/
Antigravity). Added to both `task install` and install.sh, idempotent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Consolidating the divergence between this repo and local-dev's embedded
~/dev/.skills/ (the two had drifted; the 19 overlapping skills were byte-identical).
- Import the 17 skills that existed only in local-dev: discovery-framing,
stage-gate-review, web-shot, and the 14 superpowers-* skills. This repo is now
the superset / single source of truth.
- SKILLS_INDEX.md: add rows for the 17.
- install.sh + Taskfile.yml: git.d-ma.be host (was stale gitea.d-ma.be, which
broke the one-line curl|bash installer post-rename).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The two new skills shipped without the name/description frontmatter every
other skill carries, so harnesses surfaced them as a bare directory name
with no description to match against intent. Add frontmatter (body unchanged).
Bump-Type: patch
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The koala act_runner has labels [self-hosted, linux, amd64]. The
default ubuntu-latest label doesn't match, so the release workflow
silently produced zero runs on every push. Matches the convention
used by hyperguild + infra workflows.
Runner is offline at time of this commit — bring it up on koala via
the act_runner systemd unit before expecting tags to appear.
[skip-release]
Phase 2 of mathias/skills extraction. Adds two new per-tool wirers
alongside Claude Code:
- Crush — ~/.config/crush/skills/<name>/SKILL.md (charmbracelet/crush,
successor to opencode-ai/opencode which is archived)
- Antigravity — ~/.gemini/antigravity/skills/<name>/SKILL.md (Google
VS Code extension). Our SKILL.md frontmatter (name + description)
is already in the format Antigravity expects — no manifest
translation step needed.
Both wirers added to Taskfile.yml (install:crush + install:antigravity)
and install.sh (wire_crush + wire_antigravity). The aggregate `install`
target now calls all four targets (claude:global, claude:repo, crush,
antigravity). Idempotent symlinks, same shape as the Claude Code wirer.
Per-host env overrides documented in README: SKILLS_REF for tag pinning,
CRUSH_SKILLS_DIR + ANTIGRAVITY_SKILLS_DIR for non-default paths.
Skipped:
- opencode (opencode-ai/opencode): archived, succeeded by Crush; its
Custom Commands surface is user prompt templates, not system skills
- gitea-resident agents: consume via per-repo .claude/skills or brain
MCP, no special target needed
Bump-Type: minor
Phase 1 of mathias/skills extraction (infra#62 Track D — homelab
next-step plan addendum). Imports ~/dev/.skills/ verbatim (19 skill
dirs + SKILLS_INDEX.md) and adds the installation surface:
- Taskfile.yml — install / update / list / release / check targets
- install.sh — bootstrap installer for hosts without Task. Idempotent
symlink wirer; default checkout at ~/.local/share/skills/ on every
host; SKILLS_REF env var pins a tag (default: main).
- .gitea/workflows/release.yml — auto-tag every push to main by
Bump-Type footer (major/minor/patch, default patch). Skipped when
commit contains [skip-release].
- README — usage, versioning, contribution flow, secret-hygiene rule.
Phase 1 wires Claude Code only (~/.claude/skills/<name> global +
<repo>/.claude/skills/<name> per-repo). Phase 2 adds Crush, opencode,
antigravity, and gitea-resident agents (cobalt-dingo, agentsquad)
once their skill conventions are researched.
Public repo, markdown-only — no secrets, no client names. Verified
via pre-push grep before initial push.
[skip-release]