Files
Seth Hobson c80732de69 feat: support gh skill and npx skills installers (#693)
* feat: support gh skill and npx skills installers

Both Agent Skills installers already discover every skill in this repo through
the plugins/<plugin>/skills/<skill>/ layout, so support is documentation plus a
real-CLI gate rather than a layout change.

- docs: README quick start block; docs/harnesses.md "Skills-only installers"
  (selectors, install paths, release-freeze rule, local-checkout caveat);
  docs/agent-skills.md pointer; AGENTS.md bullet; authoring note that a skill's
  name must equal its directory name
- smoke tests: gh skill local discovery, gh skill publish --dry-run spec
  validation, npx skills discovery, and skill-name uniqueness across plugins
  (both installers install under the bare skill name)
- ci: set up Node for npx and fail loudly if the runner's gh predates gh skill
- rename database-design/skills/postgresql to postgresql-table-design so the
  directory matches the frontmatter name, the one spec error the dry-run found

* test: type the smoke helper env as dict[str, str]

* fix(database-design): correct three PostgreSQL facts in postgresql-table-design

Flagged by review once the rename made the file appear new. Pre-existing
content, separate commit so it can be dropped if the rename should stay
content-free.

- UNIQUE NULLS NOT DISTINCT (...) places the clause before the column list
- the RLS example used current_user_id(), which is not a built-in; use
  current_user or an app-set setting
- foreign keys on partitioned tables work from PG11 (from) and PG12
  (referencing); triggers are only the pre-11 fallback

* refactor(database-design): split postgresql-table-design under the Codex 8 KB cap

SKILL.md keeps the rules, decision points, a When to Use section, and the
three quick-start DDL examples (7.6 KB body, 126 lines). The full data-type
catalog, table types, row-level security, constraint and index notes,
partitioning DDL, workload patterns, generated columns, extensions, and JSONB
indexing move verbatim to references/details.md. The "avoid these types" list
becomes a table. Clears the SKILL_OVER_CODEX_CAP warning this skill carried.

Claude-Session: https://claude.ai/code/session_01LjJmzuuxXSwGNEYdBvsmFs

* test(smoke): capture opencode agent list through a file, tighten npx parser

`opencode agent list` prints every agent's expanded permission array (about
330k lines) and exits before a pipe drains, so pipe capture intermittently
lost the alphabetically last agents (measured: 1 in 5 runs short via
subprocess pipes, 0 in 5 via a file sink). Both OpenCode tests now write
stdout to a file. The npx parser matches only the `│    <name>` line shape.

Claude-Session: https://claude.ai/code/session_01LjJmzuuxXSwGNEYdBvsmFs

* docs,ci: cover the skills installers everywhere install is documented

- docs/usage.md, docs/plugins.md, docs/architecture.md, ARCHITECTURE.md,
  README multi-harness section, docs/harnesses.md supported table, and
  CONTRIBUTING's portability checklist now name gh skill and npx skills
- docs/round-trip-results.md gains summary rows and a reproduce recipe
- docs/authoring.md: skill directory names are identities for installers
  and adapters alike, so a rename is user-visible
- CI installs GitHub CLI from the official apt repository when the runner
  build predates `gh skill`, so the job no longer depends on the image

Claude-Session: https://claude.ai/code/session_01LjJmzuuxXSwGNEYdBvsmFs
2026-09-01 18:28:17 -04:00
..