18 Commits

Author SHA1 Message Date
pproenca f31cf6add3 Drop marketplace.json categorisation — let picker use default discovery
The custom .claude-plugin/marketplace.json split skills into 'curated'
and 'experimental' plugin groups for the npx skills picker, but the
groupings turned out to break the CLI tool in practice. Removing the
file (and its generator) restores the picker's default behavior, which
discovers skills directly from the .curated / .experimental priority
dirs without any manual grouping.
2026-05-27 14:55:36 +01:00
pproenca 693b61db2c Collapse picker groups to just Curated then Experimental
Drops the per-discipline split (Curated References / Curated Workflows /
Curated Extractors / Experimental References / etc.). Picker now shows
two sections in order — 'curated' < 'experimental' alphabetically gives
the natural ordering without any prefix tricks.

Removes detectDiscipline + classify helpers from the generator since they
are no longer needed.

  1. Curated      38
  2. Experimental 137

Still 175 total discoverable, zero orphans.
2026-05-27 13:22:56 +01:00
pproenca a3f550a6c5 Sort curated before experimental in picker; split experimental by discipline
The npx skills picker sorts groups alphabetically by raw plugin slug
(vercel-labs/skills add.ts:1192-1196 — pluginName.localeCompare). With the
previous slugs (references / workflows / extractors / experimental), the
experimental group sorted FIRST and put 137 items at the top of the picker,
making it unnavigable.

Two consumer-side fixes — no patch to vercel-skills needed:

1. Prefix curated slugs with `curated-` so 'c' < 'e' (experimental). Picker
   shows the curated tier first.
2. Split experimental into discipline sub-groups (experimental-references,
   -workflows, -runbooks, -extractors) so the largest single group drops
   from 137 to 107 skills.

Resulting picker order (alphabetical, fixed by the CLI):
  1. Curated Extractors          3
  2. Curated References          30
  3. Curated Workflows           5
  4. Experimental Extractors     6
  5. Experimental References     107
  6. Experimental Runbooks       6
  7. Experimental Workflows      18

Total still 175 — same set of discoverable skills as before. Cosmetic only:
users who installed in the past hour will see mixed group labels in
`npx skills list` until next `update` (pluginName is persisted to
~/.agents/.skill-lock.json:37 for display, but update/sync/remove match
by skill name + source, so no functional break).
2026-05-27 11:20:40 +01:00
pproenca e896b4a746 Flag experimental skills via picker group instead of hiding them
Reverses the metadata.internal=true approach from c6f1e4b's predecessor
(8b3b8c9). Experimental skills should be discoverable in `npx skills add`,
not hidden — but visually flagged as experimental.

Mechanism: marketplace.json now lists .experimental/ skills under an
`experimental` plugin entry, which the npx skills picker renders as
an "Experimental" section header (groupMultiselect, vercel-labs/skills
add.ts:1222). Curated skills remain grouped by discipline.

- Update scripts/generate-marketplace.mjs to scan .experimental/ and
  emit a 5th plugin entry alongside the 4 curated discipline groups.
- Regenerate .claude-plugin/marketplace.json (175 skills total:
  30 References, 5 Workflows, 3 Extractors, 137 Experimental).
- Restore .experimental/*/SKILL.md and metadata.json from parent commit
  (removes metadata.internal flag, undoes the patch bumps).
- Remove scripts/mark-experimental-internal.mjs (approach abandoned).
2026-05-27 10:50:27 +01:00
pproenca 8b3b8c9454 Hide .experimental skills from default browse + group curated by discipline
- Add .claude-plugin/marketplace.json grouping the 38 .curated skills
  into 4 discipline-based plugins (References / Workflows / Runbooks /
  Extractors). npx skills picker renders these as labelled sections.
- Add scripts/generate-marketplace.mjs that regenerates the manifest
  from .curated/, mirroring dev-skill validator's discipline detection
  (scripts/ -> composition, references/*-tree.md -> investigation,
  assets/templates/*.template -> extraction, else distillation).
- Add scripts/mark-experimental-internal.mjs that sets metadata.internal=true
  on every .experimental/*/SKILL.md (hidden from default npx skills browse,
  still installable by name or via INSTALL_INTERNAL_SKILLS=1) and patch-bumps
  the corresponding metadata.json. Idempotent.
- Apply the marker: 137 SKILL.md + 137 metadata.json updated.
2026-05-27 10:43:56 +01:00
pproenca 3efae1bf52 Add empirical skill quality measurement & tracking system
Standalone, calibrated-proxy quality system grounded in Anthropic's Agent
Skills guidance, the dev-skill discipline rubrics, and skills-ref.

- scripts/quality/: deterministic SQS scorer (score.mjs lib + score-skill,
  score-all, score-history, report, track CLIs)
- quality/: METRICS.md spec, snapshot.json (HEAD), history.json (full
  longitudinal replay), baseline.json (frozen anchor), REPORT.md,
  dashboard.html, and calibration/ (12-skill rubric + 3-skill functional eval)

Key calibration finding: SQS measures structural/authoring quality, NOT
usefulness (SQS<->FQD ~= -0.5). Three instruments triangulate quality: SQS
(structure/regression), rubric review (content correctness), FQD
(baseline-differential outcome). See quality/calibration/correlation.md.
2026-05-21 08:39:59 +01:00
pproenca ca52ecd37a Add check-versions script: flag skills with content changes since last version bump
Per-skill comparison of last_touch vs last_bump using git log -L for
line-history-based version detection and merge-base --is-ancestor for
topological STALE classification. Distinguishes OK / STALE / DIRTY /
NEVER_BUMPED. Exits 1 in human mode if any non-OK; --json always exits 0.

Includes a tests/check-versions.test.sh integration suite wired into
npm test, covering: fresh-OK, content-change-STALE, post-bump-OK,
working-tree-DIRTY, and never-bumped histories.
2026-05-13 07:50:03 +01:00
pproenca 78615fea02 Fix skill validation and discovery 2026-05-12 09:53:46 +01:00
pproenca 44d64bf13a Use js-yaml for SKILL.md frontmatter validation
The hand-rolled regex parser in scripts/skills-ref silently mishandled
folded block scalars (only the `>` marker was captured, never the body)
and inline YAML comments (everything after `# ` leaked into the value).
Three skills already had descriptions over Anthropic's 1024-char limit
without CI catching them.

- Add js-yaml@4.1.0 and a thin scripts/skills-ref-parse.js helper that
  exposes parse/check-yaml/read-properties/to-prompt.
- Replace the four hand-rolled YAML blocks in scripts/skills-ref with
  calls to the helper.
- CI now runs `npm install` and the test suite before validate-all.
- Trim effect-ts, marketplace-pre-member-personalisation, and
  marketplace-recsys-feature-engineering descriptions under 1024 chars.
- Add regression fixtures for folded block scalars over 1024 chars and
  for inline-comment stripping.
2026-05-11 10:57:27 +01:00
pproenca 252aa0da61 Rename rust back to rust-implement and add YAML safety validation
- Renamed skill from 'rust' to 'rust-implement' (directory + frontmatter)
- Added validate_yaml_safety() to skills-ref that catches unquoted
  description values containing colons — the exact bug that prevented
  npx skills from discovering this skill (gray-matter YAML parse error)
- Regenerated README tables
2026-03-19 08:56:15 +00:00
Pedro Proença e9ed053354 Merge pull request #2 from pproenca/codex/fix-xml-injection-in-skills-ref-tool
fix: prevent XML injection in skills-ref to-prompt output
2026-03-07 21:54:40 +00:00
Pedro Proença ed1250ecdc fix: prevent CDATA breakout in skills-ref to-prompt 2026-03-07 21:54:18 +00:00
Pedro Proença 2dc547f8b0 fix: prevent command injection in update-versions git log 2026-03-07 21:54:14 +00:00
pproenca 605576ef3b chore: bump skill versions to 1.x and add ios-ui-refactor skill
Standardize all skill metadata versions from 0.x pre-release to stable
1.x semver, reflecting the improvements and fixes applied across recent
commits. Includes the update-versions script and a new experimental
ios-ui-refactor skill.
2026-02-11 13:05:50 +00:00
pproenca f013bf40f1 refactor: standardize skill naming conventions
Rename 20 skills to follow new naming convention:
- Remove redundant suffixes (-best-practices, -style, -guide)
- Remove organization prefixes (charmbracelet-, google-)
- Use canonical package names (msw, playwright, vitest)
- Shorter intuitive names (debug, refactor, shell)

Curated renames (15):
- agent-skills → skill-authoring
- debugging → debug
- feature-architecture → feature-arch
- frontend-design → ui-design
- headless-ui-style → mui-base
- nextjs-16-app-router → nextjs
- python-311 → python
- react-19 → react
- refactoring → refactor
- shadcn-ui → shadcn
- tailwindcss-v4-style → tailwind
- test-msw → msw
- test-playwright → playwright
- test-tdd → tdd
- test-vitest → vitest

Experimental renames (5):
- charmbracelet-vhs → vhs
- chrome-extensions → chrome-ext
- human-writing → humanize
- rust-refactor → rust-idioms
- shell-scripts → shell

Also fixes 5 name/directory mismatches and adds script to
generate README skill tables from SKILL.md metadata.
2026-01-21 15:46:42 +00:00
pproenca 16556e548f feat: add skills-ref validation tool
Port skills-ref validator from agentskills/agentskills to enable
validation of all skills in this repository.

Features:
- validate: Check a single skill against all validation rules
- validate-all: Validate all skills in the repository
- read-properties: Output skill properties as JSON
- to-prompt: Generate XML prompt blocks for agents

Validation rules:
- Name format (lowercase alphanumeric + hyphens, 1-64 chars)
- No leading/trailing/consecutive hyphens
- Name must match directory name
- Required description field (max 1024 chars)
- SKILL.md under 500 lines
- Reference consistency (Quick Reference entries match files)
- AGENTS.md presence warning for curated skills

Includes test fixtures and test runner for validation logic.
2026-01-17 14:12:23 +00:00
pproenca f2971edcde Add playwright-nextjs testing best practices skill
New skill with 43 rules across 8 categories:
- Test Architecture (arch-): isolation, parallel, fixtures, POM
- Selectors & Locators (loc-): role-based, data-testid, accessibility
- Waiting & Assertions (wait-): web-first, auto-wait, timeouts
- Authentication & State (auth-): storage state, session reuse
- Mocking & Network (mock-): API mocking, HAR files, network simulation
- Next.js Integration (next-): hydration, RSC, App Router, Server Actions
- Performance & Speed (perf-): sharding, headless, browser selection
- Debugging & CI (debug-): traces, screenshots, reporters

Also includes minor debugging skill description update.
2026-01-17 11:28:34 +00:00
pproenca c919572827 fix: resolve skill prefix collisions and improve skill differentiation
- Merge bug-hunting and systematic-debugging into unified debugging skill
- Rename conflicting prefixes to domain-specific variants:
  - state- → fstate-, rstate-, formstate-, pstate-, tuistate-
  - config- → formcfg-, orvalcfg-, tscfg-, tuicfg-
  - query- → fquery-, oquery-, tquery-
  - comp- → fcomp-, rcomp-, pcomp-, tuicomp-
- Add negative cases to skill descriptions to prevent wrong activation
- Add Related Skills cross-references between interdependent skills
- Add validation script to detect future prefix collisions
2026-01-17 11:07:50 +00:00