730 Commits

Author SHA1 Message Date
Eddie a0994f733b chore: remove dead files, generate MARKETPLACE.md, refresh stale docs (#97)
* chore: remove dead files, generate MARKETPLACE.md, refresh stale docs

Dead tracked files removed:
- 19 plugins/*/SKILL-ORIGINAL-BACKUP.md (720KB, referenced by nothing)
- 6 finished one-off/stale scripts: renumber-skills.py (target gone),
  extract-keywords.rb + remove-category-from-plugins.sh (migrations fully
  applied), fix-frontmatter.mjs (unwired), release-check.sh (caller removed),
  audit-keywords.sh (stale since Dec 2025)
- plans/ (12 docs; cybersecurity skill shipped July 2026)
- .agents/skills/grill-me/ + skills-lock.json (personal npx-skills install
  artifact shipping to marketplace consumers)
- 2 empty unreferenced files in cloudflare-workers-multi-lang,
  playwright bun.lock

MARKETPLACE.md is now generated:
- generate-marketplace.sh emits a category-grouped catalog derived purely
  from marketplace.json (145 plugins, v3.9.0) — replaces the retired
  18-suite document that README had to warn about
- generator now prunes marketplace.json.backup-* to the 5 newest
  (28 had accumulated)

Docs refreshed to match reality:
- README: MARKETPLACE.md caveats → pointers at the generated catalog
- CLAUDE.md: rebuilt stale directory tree (no commands/, examples/,
  skills-review/), removed dead CLOUDFLARE_SKILLS_AUDIT link, replaced
  rotten "Current Status (2025-11-20)" snapshot, counts 139/142 → 145
- PROJECT_STRUCTURE.md: stats + counts refreshed (145 plugins / 186
  skills / v3.9.0), deleted entries removed
- MARKETPLACE_MANAGEMENT.md: documents MARKETPLACE.md generation

Verified: marketplace.json and .agents/plugins/marketplace.json regenerate
byte-identical; npm run validate (145/145), validate:codex (186/186),
validate-frontmatter all pass. No lockstep bump (hygiene, not a release).

* fix(review): reconcile PROJECT_STRUCTURE stats, guard multiline descriptions

CodeRabbit findings on #97:
- PROJECT_STRUCTURE.md: remaining 183-skill / 2,495-file values updated to
  186 / 2,647; multi-skill arithmetic corrected (4 multi-skill plugins =
  45 skills, 141 single-skill plugins, 186 total); tooling category 24→27
- generate-marketplace.sh: normalize \r\n to spaces in descriptions before
  pipe-escaping so a future multiline description cannot break the catalog
  table (output verified byte-identical today)
2026-09-17 21:10:56 +02:00
dependabot[bot] f3383acb1b chore(deps): bump the actions-minor group with 4 updates (#93)
Bumps the actions-minor group with 4 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/autobuild](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action).


Updates `github/codeql-action/init` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/autobuild` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/analyze` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `zizmorcore/zizmor-action` from 0.6.2 to 0.6.3
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/3dc1ecc9bcb9e94e9b2c709687979e1298497054...70fb788f84895a7701f5643d103d587e460b5c99)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-13 22:03:31 +02:00
dependabot[bot] f930a3cf0e chore(deps): bump fast-uri from 3.1.5 to 3.1.7 (#92)
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.5 to 3.1.7.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.5...v3.1.7)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-13 22:03:02 +02:00
Eddie 00d6097723 Merge pull request #95 from secondsky/docs/changelog-readme-refresh
docs: backfill CHANGELOG 3.7.0/3.8.0; refresh README to 145 skills
2026-09-09 17:35:20 +02:00
secondsky c02cad53b1 docs(readme): address CodeRabbit — qualify stale MARKETPLACE.md links
Point the 'complete catalog' references at .claude-plugin/marketplace.json
and the README category table instead, and mark MARKETPLACE.md as outdated
pending a rewrite (it still documents the retired 18-suite layout).
2026-09-09 17:31:23 +02:00
secondsky edc05965d7 docs: backfill CHANGELOG 3.7.0/3.8.0; refresh README to 145 skills
- CHANGELOG: add missing [3.7.0] (tech-debt + unknowns-discovery plugins,
  adversarial script audit #85/#86) and [3.8.0] (zod v2.1.0 fidelity audit)
  entries; fold PRs #90/#91 into [3.9.0] since they shipped with it
- README: 142 -> 145 everywhere, version header 3.6.3 -> 3.9.0,
  tooling category count 24 -> 27 with new examples, and Recent
  Additions entries for Aug/Sep 2026

Docs-only; no version bump (still 3.9.0).
2026-09-09 17:23:37 +02:00
Eddie f5d2fe57b0 Merge pull request #94 from secondsky/feat/humanize-writing-plugin
feat(humanize-writing): add skill plugin, lockstep 3.9.0
2026-09-09 17:09:49 +02:00
secondsky 292c93845e feat(humanize-writing): add skill plugin, lockstep 3.9.0
- Rewrites AI-sounding text to read human; 8 editing passes + review-only mode
- Adapted from jpeggdev/humanize-writing (MIT); npm installer scaffolding dropped
- Frontmatter condensed to 238 chars (sync enforces 250 max for single-skill plugins)
- Lockstep bump 3.8.0 -> 3.9.0: all 145 plugins, both marketplaces, package.json
- CHANGELOG entry for 3.9.0
2026-09-09 17:02:38 +02:00
dependabot[bot] ac5905b4f0 chore(deps): bump the actions-minor group across 1 directory with 3 updates (#88)
Bumps the actions-minor group with 3 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/autobuild](https://github.com/github/codeql-action) and [github/codeql-action/analyze](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

Updates `github/codeql-action/autobuild` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

Updates `github/codeql-action/analyze` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.37.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eddie <5509203+secondsky@users.noreply.github.com>
2026-08-30 08:36:44 +02:00
Eddie 1af2269ecc fix(ci): harden GitHub Actions against 2025–2026 threat landscape (#91)
* fix(ci): harden live workflows — persist-credentials off, job timeouts, concurrency groups

* ci: add blocking zizmor gate — SHA-pinned action, online audits, scans live workflows + shipped templates

* ci: dependabot cooldown + explicit CODEOWNERS guard for workflow edits

* fix(templates): close template-injection + cache-poisoning in shipped workflows

- pr-checks.yml: pass head_ref, PR SHAs, number and mergeable state via
  env instead of interpolating event data into run: scripts (the HIGH
  template-injection via attacker-controlled branch names); quote all
  expansions so shellcheck is clean
- release.yml: disable dependency caching in the release/publish path
  (cache-poisoning hardening); replace third-party action-gh-release
  with the first-party gh CLI (zizmor superfluous-actions); document
  the trusted-publishing tradeoff for npm publish
- scheduled-maintenance.yml: quote expansions in cache-cleanup and
  health-check scripts

All six HIGH baseline findings and the actionlint script-injection
warning are resolved; release.yml is now informational-clean.

* fix(templates): SHA-pin all action refs to current verified releases

Resolve every uses: in the 12 shipped workflow templates to a full
40-hex commit SHA with a tag comment. Replaces the known-vulnerable
github/codeql-action v3.27.4 pins (GHSA-vqf5-2xx6-9wfm) with the same
v4.37.6 pin the live workflows use, aligns checkout with v7.0.1 and
dependency-review-action with v5.0.0, and bumps setup-node v5.0.0,
setup-python v6.3.0, upload-artifact v5.0.0, download-artifact v6.0.0,
codecov-action v5.5.5. SHAs resolved via git ls-remote, annotated tags
dereferenced.

* fix(templates): least-privilege permissions, timeouts, concurrency everywhere

Add to all 12 shipped workflow templates:
- explicit least-privilege workflow-level permissions (contents: read
  is the norm; job-level scopes: contents: write only for the release
  publisher, pull-requests: read for label inspection, pull-requests:
  write for dependency-review PR comments, actions: write for cache
  cleanup, security-events: write for CodeQL SARIF uploads)
- timeout-minutes on every job (10 validate / 15 build+test / 20-30
  release and CodeQL/CD)
- concurrency groups matching the live workflows, with
  cancel-in-progress: false for the scheduled maintenance template
- persist-credentials: false on every checkout — no template ships a
  git push; releases are created via the GITHUB_TOKEN API
- pass github.sha through env in the cd-production summary step

Closes all 47 medium baseline findings (27 excessive-permissions +
20 artipacked); full zizmor scan of the templates now reports no
findings.
2026-08-30 08:30:03 +02:00
Eddie 7ecf0250de docs: add absolute plain-language communication rule to CLAUDE.md and AGENTS.md (#90)
- New top rule in CLAUDE.md: always use clear, easy, short, plain
  language with the user, never jargon — placed above all other rules
- New AGENTS.md with the same rule plus a pointer to CLAUDE.md
2026-08-30 00:17:50 +02:00
Eddie ad16332a30 feat(zod): fidelity audit vs zod@4.4.3 + best-practices rulebook; lockstep 3.8.0 (#89)
Skill v2.1.0 — all documented APIs verified by typecheck + 22 runtime
tests against zod@4.4.3 (probe artifacts in .audit/zod-probe):

Fidelity fixes:
- Install block (bun/npm/pnpm/yarn — was 'bun add zod' ×3)
- z.string().uuid() → z.uuid() everywhere (11+ sites)
- v3 .merge() → .extend(other.shape) in all examples
- v3 z.function().args().returns() chain → v4 {input, output} factory
- .deepPartial() documented as removed (does not exist in 4.4.3)
- single-arg z.record → two-arg (required in v4)
- toJSONSchema 'metadata: true' → registry param (boolean was invalid)
- migration guide: format methods are deprecated, not removed;
  rollback pin 3.25.76; v4 error-code renames
- v3 error codes (invalid_string/invalid_enum_value/invalid_date) →
  v4 (invalid_format/invalid_value/unrecognized_keys); issue.received →
  expected/input; superRefine ctx.addIssue → ctx.issues.push
- codec decodeSafe/encodeSafe removed (never existed); real surface is
  decode/encode/decodeAsync/encodeAsync
- bundle claim corrected (~5kb core / ~1.9kb mini, was '2kb')

New coverage (both prior skills lacked):
- zod/mini (incl. the .check() pattern — piping bare checks crashes)
- .check() + check factories, z.preprocess, z.custom, z.templateLiteral,
  catchall, z.xor, z.file, z.json, z.stringbool, z.exactOptional,
  .safeExtend, z.fromJSONSchema, import-path guide, new format
  validators (guid/httpUrl/e164/hash/hostname/mac/uuidv4/uuidv7)

New references/best-practices.md: 12-rule Incorrect/Correct/
When-NOT-to-use rulebook with impact ratings (structure ported from
pproenca/dot-skills, examples rewritten against verified v4 APIs).

Verification: common-patterns.ts now typechecks strict against
zod@4.4.3 and passes a runtime smoke suite (codecs compose through
.extend, formatZodError, lazy recursion).

Lockstep bump 3.7.0 → 3.8.0 across all 144 plugins via sync-plugins.sh.
2026-08-20 10:18:21 +02:00
dependabot[bot] 84802a4841 chore(deps): bump the actions-minor group with 4 updates (#87)
Bumps the actions-minor group with 4 updates: [actions/checkout](https://github.com/actions/checkout), [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/autobuild](https://github.com/github/codeql-action) and [github/codeql-action/analyze](https://github.com/github/codeql-action).


Updates `actions/checkout` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)

Updates `github/codeql-action/init` from 4.37.5 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/d1ba80a13dd99fba24a470575428917156a28b43...5595ccaf912efad79be6eef63a5619ff05969be3)

Updates `github/codeql-action/autobuild` from 4.37.5 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/d1ba80a13dd99fba24a470575428917156a28b43...5595ccaf912efad79be6eef63a5619ff05969be3)

Updates `github/codeql-action/analyze` from 4.37.5 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/d1ba80a13dd99fba24a470575428917156a28b43...5595ccaf912efad79be6eef63a5619ff05969be3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.37.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 16:37:49 +02:00
Eddie b9627cae5d fix(scripts): address CodeRabbit PR #85 review — 4 findings (#86)
- generate-marketplace.sh: set -o pipefail (added in #85) made
  find|wc -l on a missing skills/ dir abort the whole generator.
  Append || true so a plugin lacking skills/ reports count 0.
- generate-marketplace.sh: reject an empty marketplace (plugin_count=0)
  before publishing — all-skipped runs previously produced {"plugins":[]}
  violating the schema minItems. Now exits 1.
- review-skill.sh: strip YAML trailing comment/whitespace BEFORE quotes
  so 'value' # comment and "value" # comment both parse; the prior order
  left a stray closing quote on single-quoted-with-comment values.
- sync-plugins.sh: fold mv into the jq && jq && mv chain so an mv failure
  routes to the else-cleanup branch instead of aborting under set -e.

All verified: pipefail missing-dir survives; empty-mp guard fires;
quote-strip handles 5 forms; sync dry-run green; validators green.
2026-08-08 16:43:56 +02:00
Eddie fb6e3f1c2b fix(scripts): adversarial audit — 15 bugs across generators, validators, review tooling (#85)
* fix(scripts): adversarial audit fixes across generators, validators, review tooling

Round-1 adversarial subagent review found 13 confirmed bugs across the
plugin-marketplace scripts. All verified fixed:

Critical:
- review-skill.sh: ((VAR++)) returned 1 under set -e when counter was 0,
  aborting the script on the first finding and making the entire report
  unreachable for any non-perfect skill. Add || true.
- review-skill.sh: date -d is GNU-only; on macOS every skill with
  last_verified was falsely flagged as ~20500 days stale. Use BSD date -jf
  with GNU fallback.

Important:
- validate-frontmatter.sh: set -e + validate_skill '$file' aborted on the
  first failing skill; summary never printed. Guard with || true
  (CRITICAL_COUNT already tracks failures).
- validate-json-schemas.sh: plugin_count=1 when zero files found
  (echo '' | wc -l); report falsely showed 'Total: 1'. Explicit empty guard.
- generate-marketplace.sh: version sync read .plugins[0] (always the
  alphabetically-first plugin), masking drift instead of detecting it.
  Now asserts all plugin versions agree; fails loudly on drift.
- baseline-audit-all.sh: wrote to planning/ which doesn't exist; died before
  processing any skill. mkdir -p the output dir.
- check-versions.sh: head -n -1 is GNU-only; silently zeroed the dep list
  on macOS. Use portable sed '$d'.
- sync-plugins.sh: codex loop counted updates even when jq/mv failed, no
  validation before mv, no .tmp cleanup. Now validates + cleans up + counts
  only on success. Corrected misleading 'lockstep' comment (version-only).
- generate-marketplace.sh: heredoc interpolated raw values into JSON (latent
  injection if a description gained a quote/backslash/newline). Build each
  entry with jq -nc --arg.
- fix-frontmatter.mjs: closing --- swallowed when description was last field;
  1-space indent emitted invalid >- content; merged unrelated lists;
  falsely re-folded already-valid descriptions (non-idempotent, churned 25
  files). Added block-scalar idempotency guard, non-blank-continuation
  check, delimiter stop, per-list indent scoping.

Minor/hygiene:
- Align divergent version defaults (1.0.0 vs 3.0.0) across codex/marketplace
  generators.
- Add pipefail to generate-marketplace.sh + generate-codex-manifests.sh.

* fix(scripts): round-2 adversarial findings — propagate ((VAR++)) fix + harden date parse

Round-2 adversarial review (on commit 154847fb) found two remaining
Important issues in the same bug families:

- baseline-audit-all.sh: the ((VAR++)) counters (COMPLETED, CRITICAL_SKILLS,
  HIGH_SKILLS, MEDIUM_SKILLS, CLEAN_SKILLS) had no || true guard, so under
  set -euo pipefail the audit aborted on the first skill — the same bug class
  fixed in review-skill.sh but not propagated to this caller. Also default
  `days=0` so a missing grep match can't throw 'integer expression expected'.
- review-skill.sh: the BSD/GNU date fallback left verified_epoch=0 when the
  last_verified value was a quoted scalar or non-YYYY-MM-DD format, silently
  flagging the skill as ~20,500 days stale (the exact false-positive the fix
  targeted). Now strips surrounding quotes, and if neither parser recognizes
  the value, skips the staleness check instead of computing a bogus age.

Both verified: baseline-audit-all now runs all 182 skills to completion;
review-skill date path handles quoted/ISO/unrecognized values correctly.

* fix(fix-frontmatter): cover all YAML block-scalar headers; preserve blank lines on list break

Addresses CodeRabbit review on PR #85:

- Idempotency regex only matched >| with optional chomping (-/+). YAML also
  allows indentation indicators (|2, >3) and header comments (| # c), plus
  any-order indicator combos (|3+, >2-). Now parses the header token
  (before any comment) against the full grammar, leaving all valid
  block-scalar headers untouched.
- fixListIndentation dropped buffered blank lines when the list block broke
  on a different-indentation line: the blanks were consumed (j advanced)
  but never pushed to out. Buffer them as pendingBlanks and push on the
  break path so trailing blanks survive in the output.

Verified: 15-case regex test all-correct; idempotent on clean repo (0 files);
validate-frontmatter + validate-json-schemas still green.
2026-08-08 16:16:10 +02:00
Eddie 2b93f5ac24 Add tech-debt + unknowns-discovery plugins; bump version to 3.7.0 (#84)
* Add tech-debt skill; bump version to 3.7.0

- New two-mode routed skill (prevent during change / triage backlog)
- Bundles jnsahaj/zero-tech-debt + anthropics/tech-debt stances
- sync-plugins.sh propagated 3.7.0 to all 143 manifests

* Add unknowns-discovery plugin (Claude port from suedzucker-codex-plugins)

Port the unknowns-discovery skill from the suedzucker-codex-plugins Codex
plugin into the Claude Code plugin format. Claude manifest is source of
truth; Codex manifest and both marketplace entries are derived via the
repo's existing generate-marketplace.sh / sync-plugins.sh tooling.

Adaptations:
- SKILL.md frontmatter description trimmed 341 -> 150 chars (sync-plugins.sh
  skips single-skill plugins whose description exceeds 250 chars).
- 3 slash commands get name: unknowns-discovery:<cmd> frontmatter and drop
  the Codex $unknowns-discovery token; $ARGUMENTS and allowed-tools kept.
- README rewritten for Claude/Codex install; auto-trigger keywords preserved.
- 7 references, 12 templates, 4 examples, 2 scripts copied verbatim.
- Codex-only files dropped (.codex-plugin/plugin.json regenerated,
  agents/openai.yaml x2, assets/*.svg) — no icon support on the Claude side.

Also sync package.json 3.6.3 -> 3.7.0 to match marketplace + plugins
(the bump scripts don't touch package.json; resolves a pre-existing drift).

Plugin count: 143 -> 144. All versions held at 3.7.0.
2026-08-06 23:41:26 +02:00
Eddie 9e1ca6496b feat(codex): add Codex CLI native marketplace support for all 142 plugins (#83)
Add .codex-plugin/plugin.json manifests for every plugin (derived from
.claude-plugin/ manifests) and .agents/plugins/marketplace.json (Codex's
standard marketplace location). Codex CLI users can now install plugins
natively via Added marketplace `claude-skills` from https://github.com/secondsky/claude-skills.git.
Installed marketplace root: /Users/eddie/.codex/.tmp/marketplaces/claude-skills.

New files:
- scripts/generate-codex-manifests.sh — derives Codex manifests from Claude
  manifests (Claude remains source of truth)
- schemas/codex-plugin.schema.json + codex-marketplace.schema.json — AJV
  validation for generated Codex artifacts
- 142 × .codex-plugin/plugin.json — one per plugin
- .agents/plugins/marketplace.json — Codex marketplace catalog

Changed:
- scripts/sync-plugins.sh — syncs .codex-plugin/ version in lockstep pass
- scripts/generate-marketplace.sh — calls generate-codex-manifests.sh after
  regenerating the Claude marketplace
- scripts/validate-json-schemas.sh — validates Codex schemas alongside Claude
- package.json — added validate:codex + generate:codex scripts
- README/CHANGELOG/CLAUDE.md/PROJECT_STRUCTURE.md — Codex CLI now ✅ Native
- Version bump 3.6.2 → 3.6.3 (all 142 plugins + both marketplaces + package.json)

Not carried into Codex: commands/ and agents/ arrays (no Codex equivalent;
use Codex /import for that). mcpServers carried through where present (3 nuxt
plugins).

Fixes stale delegate-my-work/.codex-plugin/plugin.json (was 3.4.0).
2026-08-06 17:30:58 +02:00
Eddie c6c0f80139 fix(codeql): exclude hugo-book Go-template .js files from analysis (#82)
The vendored hugo-book theme ships 3 .js files (sw.js, sw-register.js,
search.js) that contain Hugo {{ }} Go-template directives — valid Hugo syntax
processed at build time, but not valid JavaScript on disk. CodeQL's JS parser
reports 'Unexpected token' on the {{ }} and skips them.

Added the 3 files to paths-ignore. Scoped narrowly: the theme's other 8 .js
files are real JS and remain scanned. This clears the last 3 parse-error
diagnostics (post-PR-#81 main had 49 → 3 → expected 0).
2026-08-06 01:50:46 +02:00
Eddie 89cb5f2bdd fix(codeql): resolve parse-error diagnostics (JSDoc premature close + .vue.ts artifacts) (#81)
* fix(codeql): resolve parse-error diagnostics (JSDoc premature close + .vue.ts)

Two root causes for the ~49 parse errors + 291 truncated diagnostics in the
CodeQL run:

1. JSX-comment-inside-JSDoc: 6 .tsx template files used '{/* ... */}' syntax
   inside /** ... */ doc-comment blocks. The '*/' in the JSX comment closes the
   outer JSDoc block prematurely, so everything after is parsed as real code at
   module scope -> cascade of 'Declaration or statement expected' errors.
   Fixed by converting the inline notes to parenthetical prose (preserves the
   teaching intent, no premature close).
   - plugins/base-ui-react/.../Accordion.tsx (was 32 errors)
   - plugins/base-ui-react/.../NumberField.tsx (was 17 errors)
   - plugins/base-ui-react/.../Popover.tsx
   - plugins/base-ui-react/.../Select.tsx
   - plugins/base-ui-react/.../Tooltip.tsx
   - plugins/motion/.../layout-transitions.tsx

2. .vue transpile artifacts: autobuild compiles .vue SFCs to intermediate
   .vue.ts files that the TypeScript extractor can't parse. Added paths_exclude
   for '**/*.vue.ts' in codeql.yml. The .vue sources themselves aren't directly
   analyzable by CodeQL either, so excluding the artifacts loses no real
   coverage.

* fix(codeql): resolve remaining parse errors (8 more files)

Follow-up to the initial parse-error fix. The first CodeQL run after PR #81
showed 8 more files with parse errors that the initial grep missed (my pattern
only caught JSX-comment syntax, not the broader '*/ inside block comment' class
plus real syntax defects).

Premature-close class (5 files):
- multiple-crons.ts: cron expressions '*/5' and '*/6' inside JSDoc close the
  block early. Rewrote comment to describe schedules in prose.
- route-handler-api.ts: 'app/api/*/route.ts' path inside JSDoc. Changed to
  'app/api/[segment]/route.ts'.
- wasm-worker.ts: '**/*.wasm' glob inside /* */ JSON block. Converted the block
  to // line comments (which don't have the premature-close problem).
- remix-integration.tsx: '{/* ... */}' inside a /* */ example block. Converted
  the example to // line comments.

Real syntax defects CodeQL surfaced (3 files):
- rpc-client.ts: file contains JSX (a React component) but was named .ts.
  Renamed to rpc-client.tsx; updated the one SKILL.md reference.
- turnstile-react-component.tsx: 'useT turnstileSiteKey' typo (space in
  identifier) — call sites already used the correct 'useTurnstileSiteKey', so
  this was a real ReferenceError waiting to happen.
- queues-dlq-pattern.ts: 'storeFailed Message' typo (space in identifier); the
  function is defined correctly as 'storeFailedMessage' elsewhere.
- worker-trigger.ts: '...params: "any"' spread in an object literal value
  position is invalid JS. Removed the spread.

* fix(codeql): resolve last 2 parse-error files + self-inflicted comment

- multiple-crons.ts: the previous fix's explanatory comment contained the
  literal '"*/" sequence' text, which itself prematurely closed the JSDoc
  block. Rewrote to avoid the literal sequence ('star-slash-N' prose instead).
- server-validation.ts: like rpc-client.ts, contains JSX (a React form) but
  was named .ts. Renamed to server-validation.tsx; updated 3 references in
  README.md and SKILL.md.

* fix(codeql): rename default-query-function.ts → .tsx (JSX in .ts, last 4 errors)

Same root cause as rpc-client.ts and server-validation.ts: the file contains
JSX (<QueryClientProvider>) but was named .ts. Updated 2 references in SKILL.md
and examples/README.md.

* fix(codeql): use documented 'paths-ignore' key, not 'paths_exclude'

The CodeQL config schema's documented key for excluding paths is 'paths-ignore'
(see GitHub CodeQL docs), not 'paths_exclude'. The undocumented key was silently
ignored, so the '**/*.vue.ts' exclusion never actually applied — the drop in
.vue.ts mentions in the logs came from the template fixes, not this config.
Keeping the same exclusion pattern, just under the correct key.
2026-08-06 01:44:13 +02:00
Eddie 9a5d6ddf12 chore(governance): add CODEOWNERS for code-owner review routing (#80)
Required-reviews branch protection (ruleset 11240677) enables
require_code_owner_review, which needs a CODEOWNERS file to assign reviews.
Single-maintainer marketplace — @secondsky owns all paths; split per-plugin
ownership out as maintainers are added.
2026-08-05 23:19:56 +02:00
Eddie 58890710c4 fix(security): remediate all 8 open CodeQL code-scanning alerts (#79)
* fix(security): remediate 8 open CodeQL code-scanning alerts

Fixes 7 alerts via code change; 1 dismissed as false positive.

- js/request-forgery (critical, #1): nextjs server-actions-form.tsx — encode
  user-provided postId with encodeURIComponent before URL interpolation.
- js/xss-through-dom (high, #2): cloudflare-images basic-upload index.html —
  replace innerHTML template literal (interpolated file.name → DOM XSS) with
  createElement + textContent construction.
- js/xss-through-dom (high, #3): cloudflare-images responsive-images-srcset.html
  — dismissed as false positive; data-src is a developer-set static attribute,
  not attacker-controlled.
- js/biased-cryptographic-random (high, #4): cloudflare-workers
  crypto-operations.ts — rejection sampling (discard byte >= 248) for unbiased
  modulo over 62-char alphabet.
- js/incomplete-sanitization (high, #5): scripts/fix-frontmatter.mjs — escape
  backslashes before quotes in YAML double-quoted wrapping (prevents invalid
  YAML on values ending in backslash).
- js/incomplete-multi-character-sanitization (high, #6,#7) + js/bad-tag-filter
  (high, #8): cloudflare-vectorize document-ingestion.ts — replace regex HTML
  stripping with HTMLRewriter-based extractTextFromHtml helper.

Expected after PR rescan: open alert count drops 8 -> 0 (7 auto-closed + 1
dismissed).

* fix(review): address CodeRabbit PR review comments

- document-ingestion.ts (Critical, #3723591991): HTMLRewriter has no
  standalone endTag handler — move skipDepth decrement into element.onEndTag.
  As written, the endTag key was silently ignored, so skipDepth incremented on
  every <script>/<style>/etc. and never decremented, suppressing all visible
  text after the first skipped element. Real functional bug.
- document-ingestion.ts (#3723591996): clarify the rewriter.transform().text()
  drain is load-bearing — draining the output stream is what drives the
  element/text callbacks; the resolved string is intentionally unused. No code
  change, only an explanatory comment.
- crypto-operations.ts (Minor, #3723592003): correct modulo-bias percentage.
  256 = 62*4 + 8 means the first 8 chars get 5 byte values vs 4 for the rest
  = 25% more likely, not ~1.6%. Logic (max = 248) unchanged, comment text only.
2026-08-05 23:19:22 +02:00
Eddie 7856ff31e2 Merge pull request #78 from secondsky/skills/opennext-cloudflare-rebuild
feat(cloudflare-nextjs): rebuild as the OpenNext Cloudflare adapter s…
2026-08-05 21:32:29 +02:00
secondsky acc7a83f64 feat(cloudflare-nextjs): rebuild as the OpenNext Cloudflare adapter skill (v3.6.2)
Rebuild the cloudflare-nextjs plugin in place as the comprehensive OpenNext
Cloudflare adapter skill, expanded with all 20 official doc URLs + the live
GitHub issues tracker. Bump repo to v3.6.2 (lockstep).

cloudflare-nextjs plugin:
- SKILL.md: full rewrite (321 lines). Critical requirements table, quick
  start (C3 + migrate), four scripts (dev/preview/deploy/upload),
  getCloudflareContext() bindings (replaces the old process.env guidance),
  three-tier caching matrix, condensed integrations, top 8 errors, live
  GitHub open-bugs table (12 issues), refreshed feature matrix, sources
  block with all 20 doc URLs.
- plugin.json: broadened description (OpenNext-led), curated 20 keywords.
- References: rewrote/expanded 12 files.
  - open-next.config.ts: 3 tiers (SSG / small / large) + skew protection.
  - wrangler.jsonc: full small-site + large-site configs, reserved bindings.
  - caching.md (NEW): components, tiers, regional cache, purge, PPR caveat.
  - bindings-and-services.md (rebuilt from service-integration-patterns.md):
    getCloudflareContext, D1/R2/KV/AI/Hyperdrive, Drizzle/Prisma/Stripe.
  - dev-deploy-and-env.md (NEW): dual dev workflow, Workers Builds CI, env vars.
  - advanced.md (NEW): custom worker, multi-worker, skew protection, assets,
    keep_names, workerd packages, image optimization.
  - known-issues.md (NEW): DO warnings + 0.6->1.0.0-beta migration.
  - error-catalog-extended.md: 13 errors + GitHub issues cross-reference.
  - troubleshooting.md, feature-support.md, database-client-example.ts,
    package.json: aligned to getCloudflareContext + current versions.
- Scripts: setup-new-project.sh uses --platform=workers; setup-existing
  runs npx @opennextjs/cloudflare migrate.
- README: rewritten with expanded keywords + full doc URL list.

nextjs plugin (cross-references, both directions):
- SKILL.md L97/L498 + README.md L50/L195-211/L442 now name the OpenNext
  adapter explicitly and flag the proxy.ts caveat (keep middleware.ts on
  Cloudflare; issue #1277).

Repo-level (lockstep v3.6.2):
- marketplace.json metadata.version + cloudflare-nextjs entry.
- package.json.
- 140 plugin.json files stamped via scripts/sync-plugins.sh.

Compatibility: standard repo convention (.claude-plugin/plugin.json only).
Codex/Cursor/etc. install via 'npx skills add secondsky/claude-skills
--skill cloudflare-nextjs --agent codex'.

Sources: https://opennext.js.org/cloudflare (+ 19 subpages) and
https://github.com/opennextjs/opennextjs-cloudflare/issues
2026-08-05 18:05:25 +02:00
Eddie 1792ee0176 Merge pull request #77 from secondsky/release/v3.6.1-marketplace-skills-sh-docs
Release v3.6.1 — marketplace/skills.sh docs + installer cleanup
2026-08-05 17:03:41 +02:00
secondsky 6d7ec06212 chore(release): bump to v3.6.1 — marketplace/skills.sh docs + installer cleanup
Lockstep version bump (repo convention): package.json, all 142 plugin.json, and all 142 marketplace.json entries -> 3.6.1.

- README: accurate per-harness marketplace support table (Claude Code + ZCode native; Codex CLI + Cursor adaptation needed; opencode + Gemini CLI no marketplace); new 'Installing with skills.sh' section with verified npx skills examples and a security-scanning caveat.
- Removed dead scripts scripts/install-skill.sh and scripts/install-all.sh (targeted non-existent skills/ dir); updated 30 docs/plugins referencing them to use /plugin install (Claude Code) or npx skills add (cross-harness).
- Fixed skill-count inconsistency (139 -> 142 standardized; categories table updated).
- Fixed generate-marketplace.sh bug: hardcoded metadata.version=3.5.0 in heredoc reset the marketplace version on every regen; now syncs from plugin entries.
- Security-audit findings D-001, D-002, D-016, D-019, D-020 marked resolved (install scripts removed).
2026-08-05 16:51:17 +02:00
Eddie 61cb874bc0 chore(repo): untrack local agent-tooling state + close gitignore gaps (#76)
.zcode/ (ZCode session plans), .superpowers/ (SDD branch work), and
.factory/ (Factory.ai tool mirror) are machine-local state that leaked
into main via the v3.6.0 PR #75 squash-merge. Untrack via --cached
(local files preserved on developer machines) and gitignore to prevent
recurrence.

Verified: scripts/{review,check-versions,baseline-audit-all}.sh only
read .agents/skills/ (unchanged, stays tracked).
2026-08-05 01:06:33 +02:00
Eddie 1518b6caa5 Merge pull request #75 from secondsky/skills/exhaustive-dep-audit-upgrade
fix(deps): exhaustive dependency audit + stale instruction fixes
2026-08-05 00:46:14 +02:00
secondsky 8e73f2c312 chore(release): bump to v3.6.0 — dependency audit + stale-instruction modernization
Lockstep version bump (repo convention): package.json, all 142 plugin.json,
and all 142 marketplace.json entries 3.5.0 -> 3.6.0. Documents the exhaustive
dependency-version audit and stale-instruction fixes from this branch in
CHANGELOG.md, and updates the README version line.

See CHANGELOG.md [3.6.0] entry for the full breakdown: 67/142 plugins
updated, version alignment across Cloudflare/Bun/Next.js/TanStack/Nuxt/
hono/drizzle/better-auth/Hugo/WP/UI skills, Zod 3->4 and Tailwind v3->v4
instruction fixes, Cloudflare node_compat->nodejs_compat, Next 16
middleware->proxy (with OpenNext caveat), CI hardening, and the broken
gitleaks hook / audit-script repairs.
2026-08-05 00:22:26 +02:00
secondsky 3b93704776 fix(scripts): replace 'head -1' with 'sed -n 1p' in validate-frontmatter.sh
The 'head' command is shadowed by lwp-request's HTTP HEAD client on some
machines (e.g. this host), which broke piped lookups like 'head -1'. Use
'sed -n "1p"' which is unaffected by the alias. Completes the T0
script-repair pass (check-versions/review-skill/baseline-audit were fixed
earlier; validate-frontmatter still had two head -1 calls).
2026-08-05 00:16:18 +02:00
secondsky b3575c49ac Merge remote-tracking branch 'origin/main' into skills/exhaustive-dep-audit-upgrade
# Conflicts:
#	.github/workflows/codeql.yml
#	.github/workflows/dependency-review.yml
#	.github/workflows/validate-frontmatter.yml
#	.github/workflows/validate-json-schemas.yml
2026-08-05 00:04:32 +02:00
secondsky 55439cc913 fix(stale): add OpenNext/Cloudflare caveat to middleware->proxy.ts rename
Next.js 16 renamed middleware.ts -> proxy.ts, but @opennextjs/cloudflare does
not yet recognize the proxy.ts filename — renaming silently disables
middleware when deployed to Cloudflare Workers. Added the 'keep middleware.ts
on Cloudflare' warning to the three places the rename is taught:
- nextjs migration guide (canonical Next 16 migration instructions)
- bun-nextjs SKILL.md (Proxy section)
- cloudflare-nextjs feature-support.md (Middleware row, the Cloudflare home)
2026-08-04 23:31:18 +02:00
secondsky 156ff9e3e4 fix(stale): convert remaining z.string().email() -> z.email() examples (zod4 follow-up) 2026-08-04 02:02:18 +02:00
secondsky 01cc4143b1 fix(stale): low-severity instruction fixes — vitest verbose reporter note, motion Workers framing, base-ui rc description
- vitest-testing: note that --reporter=verbose prints a flat list in Vitest 2+ (use --reporter=tree for the hierarchy)
- motion: Cloudflare Workers bullet no longer frames framer-motion as the active recommendation (motion v12.43+ works on Workers)
- base-ui-react: description 'v1.0 beta issues' -> 'v1.0 rc / pre-GA issues' to match the rc.0 body
2026-08-04 01:57:55 +02:00
secondsky ed52a05cd9 fix(stale): better-auth 1.6 + drizzle 0.45 instruction fixes — DBAdapter, defineErrorCodes, drizzle-kit config 2026-08-04 01:55:28 +02:00
secondsky bbf808c113 fix(stale): Bun 1.2/1.3 follow-ups — Bun.build rejects, await server.stop(), routes note 2026-08-04 01:50:51 +02:00
secondsky 74c08bd296 fix(stale): Biome 2.x + Bun 1.3 instruction fixes — organizeImports->assist, linker default note 2026-08-04 01:46:21 +02:00
secondsky 7d95ec3836 fix(stale): Hugo 0.164 instruction fixes — resources.PostProcess deprecation, template/permalink notes
Update hugo skill (targets 0.164.0) for the 0.146 template-engine rewrite.

- advanced-topics.md: rewrite Template Overrides section with the 0.146+
  layout conventions (_default/ removed -> root, partials/ -> _partials/,
  shortcodes/ -> _shortcodes/, index.html -> home.html, baseof naming),
  with a migration table and back-compat note; update shortcode examples
  and taxonomy/data/output-format template paths to the modern locations.
- common-patterns.md: update landing-page directory structure, home-page
  (home.html), language-switcher, project-list, single (root), and newsletter
  partial paths to the 0.146+ layout.
- tailwind-integration.md: update baseof.html (root) and single.html (root)
  and dark-mode-toggle partial paths; note base-template move.
- templates/hugo-landing/README.md, templates/minimal-starter/README.md:
  add a banner noting these bundled templates ship the legacy layout
  (still functional via Hugo back-compat mapping) and pointing to the
  modern 0.146+ paths for greenfield projects.

Investigated and confirmed STILL VALID (no change needed):
- resources.PostProcess: not present anywhere in the skill (nothing to deprecate)
- image.DecodeConfig / deprecated imaging: absent; image examples use .Resize/.Fill/images.Filter (valid in 0.164)
- uglyURLs / permalink config examples: absent
- template "_internal/..." includes: absent
- css.TailwindCSS / Node-floor notes: SKILL.md already documents the 0.159.2+ security floor and Extended edition
- resources.PostCSS usage (tailwind-integration.md): still valid in 0.164 (not to be confused with deprecated resources.PostProcess)
2026-08-04 01:43:05 +02:00
secondsky 3e4faaecc1 fix(stale): Cloudflare wrangler 4.x config — node_compat -> compatibility_flags nodejs_compat, publish -> deploy 2026-08-04 01:40:37 +02:00
secondsky ccebcfa1b8 fix(stale): Zod 3->4 instruction fixes — z.string().email() -> z.email(), error API updated 2026-08-04 01:34:55 +02:00
secondsky 7b07acf23f fix(stale): Tailwind v3->v4 instruction fixes — @import, @theme, renamed utilities 2026-08-04 01:25:45 +02:00
secondsky 18d8ae9e91 fix(stale): Next.js 16 instruction fixes — async cookies/headers/params, next lint removed 2026-08-04 01:22:22 +02:00
secondsky c3102f85a0 docs(audit): exhaustive dependency audit report (2026-08-03)
Evidence report for the skills/exhaustive-dep-audit-upgrade branch:
file-ledger reconciliation, per-group changes, validation evidence,
decisions/deferred items, and merge guidance.
2026-08-04 00:31:31 +02:00
secondsky 6c47f2ac7e fix(review): residual review fixes — ultracite biome >=2.0.0, thesys C1 API matrix honesty note
- ultracite SKILL.md package-versions list: @biomejs/biome >=1.9.0 -> >=2.0.0
  (align with frontmatter/install cmd now that Biome 2.x is the target)
- thesys common-errors.md compatibility matrix: the C1 API tag v-20250930
  predated SDK 0.9.x, so reword to clarify SDK versions are current-recommended
  and the API tag should be verified in Thesys docs (don't imply a strict
  exclusive mapping we can't verify)
2026-08-04 00:29:39 +02:00
secondsky 628621c70f fix(review): address whole-branch review findings — Miniflare Node 18 fact, hono/drizzle under-reach, ultracite consistency, @main example, motion/next stale 2026-08-04 00:27:13 +02:00
secondsky cb9a3c10a6 chore(T10): global sweep — fix unsafe @master action tags, bump @v2/@v3->@v4 actions, Node 18->20 floor claims 2026-08-04 00:16:02 +02:00
secondsky 6d19bf642a chore(T5): align Nuxt/Vue/Pinia/UI skills — shadcn-vue zod 3->4, vitest ^2.0.0, maz-ui 4.9.3, Node >=20 2026-08-04 00:10:20 +02:00
secondsky 875f1a837b chore(T9): align misc UI/utility skills — motion ^12.43, auto-animate ^0.10, base-ui rc.0, ultracite@7, playwright ^1.62.1, Node >=20 2026-08-04 00:10:04 +02:00
secondsky 0b1c48dc2a chore(T8): Hugo/WP/Woo — hugo 0.164.0, WP floor 6.0+/PHP 8.0+, Woo 10.x, actions-hugo@v3 2026-08-04 00:04:15 +02:00
secondsky ddd6f10d6e chore(T6): align backend/data skills — hono ^4.12.12, drizzle ^0.45.2/^0.31.10, better-auth ^1.6.0, workers-types ^4.20260408.0, Node >=20 2026-08-04 00:03:44 +02:00
secondsky 76d3746249 chore(T1): align Cloudflare skills — workers-types ^4.20260408.0, wrangler ^4.81.0, hono ^4.12.12, Node >=20 2026-08-03 23:54:13 +02:00