Skip to content

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 Graph section on every source page, rendering the file's outgoing calls as Mermaid from the same edges the Depends On table 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 Nx rather 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/END fence 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.py now checks file:line citations in prose, not just realized_by. Line numbers rot differently from names: a rename breaks realized_by loudly, 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-refs skips 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, so Terminal never matches SpectreTerminalView. Reports say which evidence they found (defined at vs appears at) and prefer a definition over a text match at equal distance.
  • 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 by seed-areas.py. Both check-sources.py and scaffold-sources.py now skip Wiki/. This could only surface on re-ingest, since the file does not exist when a virgin repo is indexed.
  • SKILL.md documents scoping: pass the same --only globs to the checker and the scaffolder, and record deliberate skips in Wiki/log.md so they are not re-litigated each run.

Fixes

  • Skill scripts are directly executable. Modes were inconsistent (four 755, two 644), and the bit was decorative either way — none carried a shebang, so ./check-sources.py would have been handed to the shell. All nine now start with #!/usr/bin/env -S uv run --script and are 755. Both uv run <script> and direct execution work.
  • seed-areas.py recognises constant as a symbol kind, matching scaffold-sources.py; without it code-areas.yml and the source pages disagreed about what a symbol is.
  • seed-areas.py and backfill-hashes.py now print the codegraph init --index remediation 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, and jdx/hk has 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 generationscaffold-sources.py writes every graph-derivable part of a source page (frontmatter, source_hash, symbol table, Depends On, Used By) into BEGIN/END fences, 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 fresh source_hash over a section that did not regenerate.
  • Grounding is now checked, not claimedverify-grounding.py resolves every realized_by entry against the index and exits non-zero on failure, so the Symbols column in index.md reports verified evidence rather than an unchecked count.
  • Change-driven re-ingestcheck-sources.py --mode code compares each file's codegraph content_hash against the source_hash on its wiki page, so refactored files resurface instead of going stale.

Fixes

  • code-ingest — Cold-start path was unusable: the documented codegraph -p flag does not exist (the path is positional), index fails before init, and check-sources.py demanded a Wiki/ directory that the first ingest is supposed to create. The calls query also lacked DISTINCT (one row per call site, not per edge) and the symbol query omitted constant, 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 when ANALYZE stats 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-toolkitagent-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 --description flag and @filepath syntax.
  • get and delete commands for full card CRUD.
  • Linked note support for rich card descriptions.
  • promote command for atomic Backlog→Ready moves.

Fixes

  • Fixed typos config to allowlist SHAL identifier and prevent SHALLs mangling.

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.