kennyg/agent-skills
unversioned · 83c09769b832MIT
A collection of portable skills for AI coding agents.
Changelog
v1.5.0 (2026-08-09)
Source pages now draw the call graph instead of only tabulating it.
code-ingest
- New generated
Call Graphsection on every source page, rendering the file's outgoing calls as Mermaid from the same edges theDepends Ontable lists. Convergence is what a table hides and a diagram shows: four arrows landing on one node is a design fact you see at a glance, where the table makes you count rows.- Solid arrows stay inside the file, dashed arrows leave it, so the file boundary reads without labels; the legend only prints when there are dashed arrows.
- Repeated call sites are labelled
Nxrather than drawn as parallel edges —buildThemeFromObsidian --> |21x| getCssVar. - Past 40 edges the section says so and defers to the table. A hairball is worse than no diagram, because it still looks informative.
- Node ids are sanitized, since Mermaid rejects punctuation. Two names can squash to the same id and would otherwise be silently merged into one node, asserting a call that does not exist; collisions take a numeric suffix and any mangled id carries a label with the real identifier.
- Mermaid renders natively in Obsidian and on GitHub, adds no dependency, and is plain text — so it regenerates deterministically inside a
BEGIN/ENDfence like every other section. Pages written before this release self-heal the new fence on the next run.
v1.4.0 (2026-08-09)
Hardening pass on code-ingest, driven by re-ingesting a repo that had been renamed and refactored since its first ingest — the first time the skill ran against a wiki that already existed.
code-ingest
verify-grounding.pynow checksfile:linecitations in prose, not justrealized_by. Line numbers rot differently from names: a rename breaksrealized_byloudly, but inserting lines above a function shifts every citation below it silently — each still resolves, still lands in the file, just no longer at what the sentence says. A citation is judged against the identifiers named in the same paragraph (plus the page's own title); stale ones fail the gate. Also flags unknown files and lines past EOF.--no-line-refsskips it.- Anchors resolve against the index first and the source text second. codegraph records definitions, so a call into a dependency —
term.attachCustomKeyEventHandler(...)— creates no node, no edge and no unresolved ref, leaving any citation anchored to one silently unchecked. Reading the file catches those; matching is whole-word, soTerminalnever matchesSpectreTerminalView. Reports say which evidence they found (defined atvsappears at) and prefer a definition over a text match at equal distance.
- Anchors resolve against the index first and the source text second. codegraph records definitions, so a call into a dependency —
- The wiki no longer ingests its own output. codegraph indexes whatever is in the repo, which after step 8 includes
Wiki/code-areas.yml— generated byseed-areas.py. Bothcheck-sources.pyandscaffold-sources.pynow skipWiki/. This could only surface on re-ingest, since the file does not exist when a virgin repo is indexed. SKILL.mddocuments scoping: pass the same--onlyglobs to the checker and the scaffolder, and record deliberate skips inWiki/log.mdso they are not re-litigated each run.
Fixes
- Skill scripts are directly executable. Modes were inconsistent (four
755, two644), and the bit was decorative either way — none carried a shebang, so./check-sources.pywould have been handed to the shell. All nine now start with#!/usr/bin/env -S uv run --scriptand are755. Bothuv run <script>and direct execution work. seed-areas.pyrecognisesconstantas a symbol kind, matchingscaffold-sources.py; without itcode-areas.ymland the source pages disagreed about what a symbol is.seed-areas.pyandbackfill-hashes.pynow print thecodegraph init --indexremediation hint that the other scripts gained in v1.3.0.__pycache__/and*.py[cod]are ignored.
Repo
- Release tags are lightweight. An annotated tag creates a tag object, and hk's pre-push hook passes the pushed ref into a merge-base computation without peeling it —
object is no commit object; class=Invalid (3). Reproduced on hk 1.49.0 and 1.54.0, so bumping does not help, andjdx/hkhas issues disabled. A lightweight tag points straight at the commit, so hk resolves it, finds 0 changed files and exits clean — the hook keeps running rather than being disabled.mise run release-tag <version>creates and pushes it.
v1.3.0 (2026-08-08)
Added a code wiki skill and a runbook skill for landing a first mate and its fleet on a remote host.
New Skills
- code-ingest — Turn a codegraph-indexed codebase into a repo-local
Wiki/. Same sources → entities → concepts taxonomy as wiki-ingest, but grounded in codegraph's symbol/edge graph rather than re-reading every file. - going-ashore — Runbook for standing up a first mate and its fleet on a remote host over SSH + herdr; covers survey, provision, raise-the-flag, land, boot, and bridge.
code-ingest Details
- Deterministic page generation —
scaffold-sources.pywrites every graph-derivable part of a source page (frontmatter,source_hash, symbol table, Depends On, Used By) intoBEGIN/ENDfences, leaving Purpose and Notes as prose. Same index in, same bytes out; prose and hand-added frontmatter survive regeneration. A missing fence is repaired by appending under its heading, never by stamping a freshsource_hashover a section that did not regenerate. - Grounding is now checked, not claimed —
verify-grounding.pyresolves everyrealized_byentry against the index and exits non-zero on failure, so the Symbols column inindex.mdreports verified evidence rather than an unchecked count. - Change-driven re-ingest —
check-sources.py --mode codecompares each file's codegraphcontent_hashagainst thesource_hashon its wiki page, so refactored files resurface instead of going stale.
Fixes
- code-ingest — Cold-start path was unusable: the documented
codegraph -pflag does not exist (the path is positional),indexfails beforeinit, andcheck-sources.pydemanded aWiki/directory that the first ingest is supposed to create. Thecallsquery also lackedDISTINCT(one row per call site, not per edge) and the symbol query omittedconstant, dropping module-level API surface. - code-ingest — Edge queries suppress
idx_edges_kind, whose poor selectivity on the largest edge kind caused a near-full edge scan per file (8.6s vs 38ms on a 275-file repo whenANALYZEstats are absent). - wiki-ingest — Migrated to the shared
check-sources.py, which adds content-hash change detection: an edited clipping now resurfaces for re-ingest instead of being treated as done. - wiki-lint — Wikilinks inside code spans and fenced blocks are no longer reported as broken links. Obsidian renders these as literal text, so quoted example links and Dataview queries containing
[[...]]were false positives.
v1.2.0 (2026-04-05)
Renamed project from Agent Toolkit to Agent Skills. Retired the monolithic obsidian skill in favor of focused wiki skills and a standalone annotation skill.
New Skills
- annotate — Annotate git commits with structured context using gh-annotate.
- wiki-ingest — Ingest raw sources into the LLM wiki from Clippings or Twitter exports.
- wiki-lint — Health-check the LLM wiki for broken links, orphan pages, stale content, and missing cross-references.
Breaking Changes
- obsidian skill retired — replaced by wiki-ingest and wiki-lint for wiki workflows; vault management now handled by separate obsidian-cli and obsidian-markdown skills.
- Project renamed:
agent-toolkit→agent-skills.
v1.1.0 (2026-03-08)
Added specification and BDD skills; improved kanban card management.
New Skills
- openspec-to-gherkin — Generate Cucumber/Gherkin feature files from OpenSpec delta specifications.
- gherkin-step-scaffold — Generate skeleton step definition files from Gherkin feature files.
Kanban Improvements
- Card descriptions via
--descriptionflag and@filepathsyntax. getanddeletecommands for full card CRUD.- Linked note support for rich card descriptions.
promotecommand for atomic Backlog→Ready moves.
Fixes
- Fixed typos config to allowlist
SHALidentifier and preventSHALLsmangling.
v1.0.0 (2026-02-28)
Initial release of the Agent Skills collection — portable skills for AI coding agents.
Skills
- obsidian — Read, write, search, and manage Obsidian vault notes using the native Obsidian CLI. Includes scripts for daily notes, task management, incident tracking, and agent mission control (kanban). (Retired in v1.2.0)
- hk-setup — Set up hk git hooks with pre-commit linters. Detects project type and configures appropriate tools.
- mise-setup — Set up mise dev tool version manager. Configures tools, virtual environments, and tasks for your project.
- jenkins-migrate — Convert Jenkins pipelines (Jenkinsfiles) to GitHub Actions workflows.
- zensical-setup — Generate documentation sites using Zensical.