Skip to content

Add twitch-vod-clipper, market-validator, and git-workflow skills - #1083

Open
gupsspam-netizen wants to merge 2 commits into
jeremylongshore:mainfrom
gupsspam-netizen:main
Open

Add twitch-vod-clipper, market-validator, and git-workflow skills#1083
gupsspam-netizen wants to merge 2 commits into
jeremylongshore:mainfrom
gupsspam-netizen:main

Conversation

@gupsspam-netizen

Copy link
Copy Markdown

Summary

Three community skills for the marketplace:

twitch-vod-clipper

Download Twitch VODs, detect viral moments from audio and transcript energy, render vertical 9:16 clips with animated captions, face tracking, watermarks, and thumbnails.

market-validator

Structured 40-minute business idea validation. Five-phase process: idea scrubbing → competition scan → demand signal check → monetization check → GREEN/YELLOW/RED verdict.

git-workflow

Execute common Git workflows safely — rebase, squash, conflict resolution, commit management, force-push with lease. 21-step methodology with safety rules baked in.

Submission checklist

  • Validated SKILL.md frontmatter (8 marketplace-required fields)
  • All 7 required body sections present
  • Contains trigger phrases for auto-activation
  • Sources auto-sync from gupsspam-netizen/clip-farmer-skills

Auto-sync

All three skills live in https://github.com/gupsspam-netizen/clip-farmer-skills and will sync to the marketplace weekly via Path B.

Three community skills for the Tons of Skills marketplace:
- twitch-vod-clipper: Download Twitch VODs, detect viral moments, render Shorts clips
- market-validator: Structured 40-min business idea validation
- git-workflow: Execute common Git workflows safely with 21-step methodology

All skills built using Claude Fable, validated against marketplace schema.
@greptile-apps

greptile-apps Bot commented Jul 17, 2026

Copy link
Copy Markdown

Greptile Summary

Adds three sources.yaml pointer entries — twitch-vod-clipper, market-validator, and git-workflow — all sourced from the same upstream monorepo (gupsspam-netizen/clip-farmer-skills) via different source_path subdirectories. The upstream content will be validated by validate-skills-schema.py at the next weekly sync run, not at PR merge time.

  • All required schema fields (name, description, repo, source_path, target_path, author, license, category, verified, include, exclude) are present and correctly formed. The multi-skill-from-one-repo pattern is established in this file (e.g. numman-ali/n-skills).
  • The include pattern in each entry uses the unanchored form 'SKILL.md' rather than '/SKILL.md'. The sync engine auto-prefixes this as **/SKILL.md and will emit an advisory warning (blocker 62ye.6) for all three entries; anchoring to '/SKILL.md' is the one-char fix and matches the format of the immediately-preceding quit-sponsor entry.
  • Each source gets its own independent sparse clone and lock entry, so there are no lockfile key collisions despite sharing the same upstream repo.

Confidence Score: 4/5

Safe to merge — the PR adds only sources.yaml pointers; actual skill content is gated by the weekly sync validator.

The three new entries are structurally complete and the upstream content will be scanned and validated before it ever lands in plugins/community/. The only actionable finding is the unanchored 'SKILL.md' include pattern, which the sync engine will flag as an advisory warning at run time — it doesn't block the sync, but it could silently admit nested SKILL.md files from within a skill's sparse-checkout subtree if any exist.

sources.yaml — the three new entries' include patterns should use '/SKILL.md' rather than 'SKILL.md'.

Important Files Changed

Filename Overview
sources.yaml Adds three new community skill pointer entries (twitch-vod-clipper, market-validator, git-workflow) all sourced from the same upstream monorepo (gupsspam-netizen/clip-farmer-skills). Schema fields are complete and correct, but include patterns are unanchored ('SKILL.md' vs '/SKILL.md'), which will trigger advisory warnings at sync time and could admit deeply-nested SKILL.md files from within each skill's sparse-checkout subtree.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant PR as PR Merge
    participant SY as sources.yaml
    participant SE as sync-external.mjs
    participant GH as gupsspam-netizen/clip-farmer-skills
    participant LF as sources.lock.json
    participant PC as plugins/community/

    PR->>SY: Adds 3 pointer entries
    Note over SY: Validated at sync time, not PR time

    SE->>GH: sparse-clone → twitch-vod-clipper/
    SE->>LF: new-source baseline (twitch-vod-clipper)
    SE->>PC: mirror twitch-vod-clipper/SKILL.md

    SE->>GH: sparse-clone → market-validator/
    SE->>LF: new-source baseline (market-validator)
    SE->>PC: mirror market-validator/SKILL.md

    SE->>GH: sparse-clone → git-workflow/
    SE->>LF: new-source baseline (git-workflow)
    SE->>PC: mirror git-workflow/SKILL.md

    SE->>SE: validate-skills-schema.py on each mirrored SKILL.md
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
    participant PR as PR Merge
    participant SY as sources.yaml
    participant SE as sync-external.mjs
    participant GH as gupsspam-netizen/clip-farmer-skills
    participant LF as sources.lock.json
    participant PC as plugins/community/

    PR->>SY: Adds 3 pointer entries
    Note over SY: Validated at sync time, not PR time

    SE->>GH: sparse-clone → twitch-vod-clipper/
    SE->>LF: new-source baseline (twitch-vod-clipper)
    SE->>PC: mirror twitch-vod-clipper/SKILL.md

    SE->>GH: sparse-clone → market-validator/
    SE->>LF: new-source baseline (market-validator)
    SE->>PC: mirror market-validator/SKILL.md

    SE->>GH: sparse-clone → git-workflow/
    SE->>LF: new-source baseline (git-workflow)
    SE->>PC: mirror git-workflow/SKILL.md

    SE->>SE: validate-skills-schema.py on each mirrored SKILL.md
Loading
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
sources.yaml:1713-1759
All three `include` patterns use the unanchored form `'SKILL.md'` (without a leading `/`). The sync engine's `matchesPattern` auto-prefixes these as `**/SKILL.md`, which matches at **any depth** within the sparse-checked-out subtree — not just the root. For a monorepo like `clip-farmer-skills` where multiple skill directories live side by side, this means any nested `SKILL.md` files inside `twitch-vod-clipper/`, `market-validator/`, or `git-workflow/` (e.g. in an `examples/` subdirectory) would be silently pulled in as unvetted content. The sync engine will also emit an advisory warning for each entry at run time (blocker 62ye.6 in `sync-external.mjs`). The entry immediately preceding these — `quit-sponsor` — uses the anchored form `'/SKILL.md'` correctly.

```suggestion
  - name: twitch-vod-clipper
    description: Download Twitch VODs, detect viral moments from audio energy and the transcript, and render vertical 9:16 clips with animated captions, face tracking, watermarks, and thumbnails
    repo: gupsspam-netizen/clip-farmer-skills
    source_path: twitch-vod-clipper
    target_path: plugins/community/twitch-vod-clipper
    author:
      name: Carl Johnson
      github: gupsspam-netizen
    license: MIT
    category: community
    verified: false
    include:
      - '/SKILL.md'
    exclude:
      - '.git/**'

  - name: market-validator
    description: Structured 40-minute process to validate a business idea — competition scan, demand signals, revenue estimate — outputs a GREEN/YELLOW/RED verdict with evidence
    repo: gupsspam-netizen/clip-farmer-skills
    source_path: market-validator
    target_path: plugins/community/market-validator
    author:
      name: Carl Johnson
      github: gupsspam-netizen
    license: MIT
    category: community
    verified: false
    include:
      - '/SKILL.md'
    exclude:
      - '.git/**'

  - name: git-workflow
    description: Execute common Git workflows safely — rebase, squash, conflict resolution, commit management, force-push with lease. 21 safe steps with recovery paths
    repo: gupsspam-netizen/clip-farmer-skills
    source_path: git-workflow
    target_path: plugins/community/git-workflow
    author:
      name: Carl Johnson
      github: gupsspam-netizen
    license: MIT
    category: community
    verified: false
    include:
      - '/SKILL.md'
    exclude:
      - '.git/**'
```


Reviews (1): Last reviewed commit: "Add twitch-vod-clipper, market-validator..." | Re-trigger Greptile

Comment thread sources.yaml
Comment on lines +1713 to +1759
- name: twitch-vod-clipper
description: Download Twitch VODs, detect viral moments from audio energy and the transcript, and render vertical 9:16 clips with animated captions, face tracking, watermarks, and thumbnails
repo: gupsspam-netizen/clip-farmer-skills
source_path: twitch-vod-clipper
target_path: plugins/community/twitch-vod-clipper
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- 'SKILL.md'
exclude:
- '.git/**'

- name: market-validator
description: Structured 40-minute process to validate a business idea — competition scan, demand signals, revenue estimate — outputs a GREEN/YELLOW/RED verdict with evidence
repo: gupsspam-netizen/clip-farmer-skills
source_path: market-validator
target_path: plugins/community/market-validator
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- 'SKILL.md'
exclude:
- '.git/**'

- name: git-workflow
description: Execute common Git workflows safely — rebase, squash, conflict resolution, commit management, force-push with lease. 21 safe steps with recovery paths
repo: gupsspam-netizen/clip-farmer-skills
source_path: git-workflow
target_path: plugins/community/git-workflow
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- 'SKILL.md'
exclude:
- '.git/**'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 All three include patterns use the unanchored form 'SKILL.md' (without a leading /). The sync engine's matchesPattern auto-prefixes these as **/SKILL.md, which matches at any depth within the sparse-checked-out subtree — not just the root. For a monorepo like clip-farmer-skills where multiple skill directories live side by side, this means any nested SKILL.md files inside twitch-vod-clipper/, market-validator/, or git-workflow/ (e.g. in an examples/ subdirectory) would be silently pulled in as unvetted content. The sync engine will also emit an advisory warning for each entry at run time (blocker 62ye.6 in sync-external.mjs). The entry immediately preceding these — quit-sponsor — uses the anchored form '/SKILL.md' correctly.

Suggested change
- name: twitch-vod-clipper
description: Download Twitch VODs, detect viral moments from audio energy and the transcript, and render vertical 9:16 clips with animated captions, face tracking, watermarks, and thumbnails
repo: gupsspam-netizen/clip-farmer-skills
source_path: twitch-vod-clipper
target_path: plugins/community/twitch-vod-clipper
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- 'SKILL.md'
exclude:
- '.git/**'
- name: market-validator
description: Structured 40-minute process to validate a business idea — competition scan, demand signals, revenue estimate — outputs a GREEN/YELLOW/RED verdict with evidence
repo: gupsspam-netizen/clip-farmer-skills
source_path: market-validator
target_path: plugins/community/market-validator
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- 'SKILL.md'
exclude:
- '.git/**'
- name: git-workflow
description: Execute common Git workflows safely — rebase, squash, conflict resolution, commit management, force-push with lease. 21 safe steps with recovery paths
repo: gupsspam-netizen/clip-farmer-skills
source_path: git-workflow
target_path: plugins/community/git-workflow
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- 'SKILL.md'
exclude:
- '.git/**'
- name: twitch-vod-clipper
description: Download Twitch VODs, detect viral moments from audio energy and the transcript, and render vertical 9:16 clips with animated captions, face tracking, watermarks, and thumbnails
repo: gupsspam-netizen/clip-farmer-skills
source_path: twitch-vod-clipper
target_path: plugins/community/twitch-vod-clipper
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- '/SKILL.md'
exclude:
- '.git/**'
- name: market-validator
description: Structured 40-minute process to validate a business idea — competition scan, demand signals, revenue estimate — outputs a GREEN/YELLOW/RED verdict with evidence
repo: gupsspam-netizen/clip-farmer-skills
source_path: market-validator
target_path: plugins/community/market-validator
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- '/SKILL.md'
exclude:
- '.git/**'
- name: git-workflow
description: Execute common Git workflows safely — rebase, squash, conflict resolution, commit management, force-push with lease. 21 safe steps with recovery paths
repo: gupsspam-netizen/clip-farmer-skills
source_path: git-workflow
target_path: plugins/community/git-workflow
author:
name: Carl Johnson
github: gupsspam-netizen
license: MIT
category: community
verified: false
include:
- '/SKILL.md'
exclude:
- '.git/**'
Prompt To Fix With AI
This is a comment left during a code review.
Path: sources.yaml
Line: 1713-1759

Comment:
All three `include` patterns use the unanchored form `'SKILL.md'` (without a leading `/`). The sync engine's `matchesPattern` auto-prefixes these as `**/SKILL.md`, which matches at **any depth** within the sparse-checked-out subtree — not just the root. For a monorepo like `clip-farmer-skills` where multiple skill directories live side by side, this means any nested `SKILL.md` files inside `twitch-vod-clipper/`, `market-validator/`, or `git-workflow/` (e.g. in an `examples/` subdirectory) would be silently pulled in as unvetted content. The sync engine will also emit an advisory warning for each entry at run time (blocker 62ye.6 in `sync-external.mjs`). The entry immediately preceding these — `quit-sponsor` — uses the anchored form `'/SKILL.md'` correctly.

```suggestion
  - name: twitch-vod-clipper
    description: Download Twitch VODs, detect viral moments from audio energy and the transcript, and render vertical 9:16 clips with animated captions, face tracking, watermarks, and thumbnails
    repo: gupsspam-netizen/clip-farmer-skills
    source_path: twitch-vod-clipper
    target_path: plugins/community/twitch-vod-clipper
    author:
      name: Carl Johnson
      github: gupsspam-netizen
    license: MIT
    category: community
    verified: false
    include:
      - '/SKILL.md'
    exclude:
      - '.git/**'

  - name: market-validator
    description: Structured 40-minute process to validate a business idea — competition scan, demand signals, revenue estimate — outputs a GREEN/YELLOW/RED verdict with evidence
    repo: gupsspam-netizen/clip-farmer-skills
    source_path: market-validator
    target_path: plugins/community/market-validator
    author:
      name: Carl Johnson
      github: gupsspam-netizen
    license: MIT
    category: community
    verified: false
    include:
      - '/SKILL.md'
    exclude:
      - '.git/**'

  - name: git-workflow
    description: Execute common Git workflows safely — rebase, squash, conflict resolution, commit management, force-push with lease. 21 safe steps with recovery paths
    repo: gupsspam-netizen/clip-farmer-skills
    source_path: git-workflow
    target_path: plugins/community/git-workflow
    author:
      name: Carl Johnson
      github: gupsspam-netizen
    license: MIT
    category: community
    verified: false
    include:
      - '/SKILL.md'
    exclude:
      - '.git/**'
```

How can I resolve this? If you propose a fix, please make it concise.

@jeremylongshore jeremylongshore left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, @gupsspam-netizen — and for contributing the right way, through sources.yaml rather than dumping files. I read all three skills in full, and they're genuinely good:

  • git-workflow — real safety discipline, not just command lists: state inspection (git status + git log) before every destructive op, --force-with-lease always, git revert (not reset) for public history, and reflog/--abort treated as first-class recovery. Complete sections plus three worked examples. This is the kind of skill I'd actually want an agent running.
  • market-validator — a genuine 5-phase, time-boxed methodology on free public endpoints (Reddit .json, GitHub/HN APIs), honest about estimate-vs-forecast, with real red-flag detection ("everyone needs X" → nobody is the customer).
  • twitch-vod-clipper — a real technical pipeline (yt-dlp → Whisper word-timestamps → energy/transcript scoring → ffmpeg 9:16 with libass captions, mediapipe face-tracking, watermark, thumbnails), with correct commands and honest hardware notes.

Complete frontmatter on all three, verified: false (honest). Nice work.

One thing to fix before we can track the source: your upstream repo gupsspam-netizen/clip-farmer-skills declares license: MIT in each entry, but the repo itself has no LICENSE file (just a README). Because we mirror your content and always preserve the upstream license and credit, the license has to actually exist in the source repo — otherwise the MIT grant we'd be relying on isn't real.

To unblock: add a standard LICENSE file (MIT, with your name/year) to the root of clip-farmer-skills, then drop a comment here. That's the only blocker — the sources.yaml entries themselves are well-formed and correctly pointed.

What happens next, so you know the path: once the license is in place, we pin your source and the weekly external-sync pipeline mirrors the SKILL.md files into plugins/community/ and runs them through our full grading. That grade — not this PR — is the real quality gate (our bar is high; see CONTRIBUTING.md and the rubric at https://tonsofskills.com/grading). Given how these read, I expect them to do well.

Leaving this open pending the LICENSE file. Thanks again — this is a solid contribution.

  • Jeremy Longshore
    intentsolutions.io

jeremylongshore pushed a commit that referenced this pull request Jul 30, 2026
…d an external-PR playbook

WHY THIS WAS URGENT

The CI/CD teaching material handed to the incoming CTO on 2026-07-16 said branch
protection requires "exactly two" status checks. `skill-conform` became a third
required context on 2026-07-23, so the doc had been wrong for six days — and the
error was not confined to a footnote. Section 8 is a verbatim CLIENT-FACING
SCRIPT, so the doc was actively coaching him to say "two required checks" in the
exact room it was written to prepare him for.

CORRECTED, ALL FOUR SURFACES

  704 §1        exactly two -> exactly three, with skill-conform named
  704 §1        added WHY skill-conform is NOT in ci-required's needs: per doc 110
                §5 a skippable/path-scoped job must never green the aggregate,
                because inside needs: a `skipped` result counts as a PASS
  704 §8        the client script now says three, and "~19 jobs" -> "19 jobs"
  705 Q1        deepened to ask which context stands outside needs: and why
  705 Q6        now names all three green contexts
  706 A1        rewritten: Three, plus the needs: rationale as the Approver-level
                discriminator
  706 A6        gate list updated
  CLAUDE.md     "needs: all 17 gate jobs" -> 19

VERIFIED, NOT ASSUMED

Every count was read off the live system rather than copied between documents,
which is how the drift happened in the first place:

  required contexts   gh api branches/main/protection -> ci-required, gitleaks,
                      skill-conform  (exactly 3)
  aggregate jobs      yaml.safe_load(validate-plugins.yml) -> len(needs) == 19,
                      so the doc's "19" was RIGHT and CLAUDE.md's "17" was the
                      stale one. Corrected the file that was actually wrong.
  curated sources     3 (tonone, servicegraph, schedule-after-usage-reset), all
                      verified=false. A `grep -c 'curated: true'` said 8; the YAML
                      parse said 3. The parser is right — grep was matching prose.
                      Caught before it reached the new doc.
  baseline semantics  check-internal-doc-links.mjs refuses outright;
                      lint-design-tokens.mjs ratchets DOWN only via
                      --update-baseline. Different mechanics, so the new doc
                      states them separately instead of flattening both to
                      "refuses".

NEW: 709 — reviewing external PRs

704 teaches the pipeline but not the judgement call, which is the part that
actually consumes a maintainer's time. 709 covers what a gate cannot:

  - Classify FIRST by which files changed. The live queue splits cleanly:
    lane A = sources.yaml only (#1083 #1103 #1144), lane B = new plugin dir
    (#1070 #1101 #1125 #1131). Written against the real 7-PR queue, not invented
    examples.
  - Lane A's CI failure is BY DESIGN — sources-change-unscanned is a waivable
    CHALLENGE that exists to force a human to vet the source. Documents the
    allowlist line, that the reason field is required, and that a malformed
    waiver fails CLOSED (ignored, not honoured).
  - REFUSE is never waivable.
  - curated: true is a FREEZE, and why: a --force sync once reverted ~100 A-graded
    agents to upstream stubs, an 18,900-line deletion.
  - curated: and verified: are orthogonal.
  - Two traps that have each cost real time: an EMPTY check list means CI never
    ran (merging on one broke main in July), and an absent ci-required means the
    19 jobs are still running.
  - The AI reviewers are not a gate and right now are not even running: Kilo is
    out of credits and fails every PR, Gemini's consumer product is sunset,
    Greptile is advisory and quota-limited.
  - Upstreaming flow, with the hard rule that contributor-facing wording gets
    Jeremy's sign-off BEFORE posting.
  - How to close a PR well. ~1 in 10 external-sync PRs merges, so closing is the
    normal outcome and the doc says so plainly.
  - A 6-stage ramp ending at the CODEOWNERS flip to Approver.

CHOSE A SEPARATE DOC over extending 704 because the two answer different
questions — 704 is "how does the gate work" and is quiz-backed for the Approver
promotion, while 709 is "how do I decide" and is judgement, not mechanics.
Merging them would have buried the judgement material inside reference text.

NOTE ON LINTING: 000-docs/** is excluded in .markdownlint-cli2.jsonc, so these
files are not lint-gated. Formatting was kept consistent with 704 by hand.
@opeyemiariyo-netizen

Copy link
Copy Markdown
Collaborator

Hi @gupsspam-netizen — the three skills the PR claims to add are well-structured (Path B pattern is correct, multi-skill-from-one-repo is the established pattern used by numman-ali/n-skills), and pointing at auto-sync from a single monorepo is the right move for low maintenance cost. A few real issues before this can merge:

P0 — docker-deploy is added but undocumented in the PR body and missing from sources.yaml

Counting the diff: 9 files, 1,119 insertions — but the title and description both say "three skills". The fourth skill (plugins/community/docker-deploy/, 426 lines of SKILL.md + README) is silently committed to the marketplace plugin tree without a corresponding sources.yaml entry. Consequences:

  • When the weekly sync runs, docker-deploy will be invisible to it — no source pointer means no baseline, no drift detection, no re-sync. The user has to manually vendor any future updates.
  • This is a maintenance tax on the repo for the lifetime of the merge.
  • It's also a transparency issue: PR reviewers are looking at "three skills" and the diff shows four.

Either:

  • Add a fourth sources.yaml entry pointing at gupsspam-netizen/clip-farmer-skills with source_path: docker-deploy (the upstream has it — gh api repos/gupsspam-netizen/clip-farmer-skills/contents confirms docker-deploy/ is a top-level dir there), so all four skills sync uniformly; or
  • Remove plugins/community/docker-deploy/ from this PR and submit it standalone.

The first option is consistent with the pattern you've already established.

P1 — Include pattern triggers an advisory warning at sync time

Three entries use:

include:
  - 'SKILL.md'

instead of the anchored form '/SKILL.md'. The sync engine auto-prefixes **/ regardless, but the unanchored form will trigger an advisory warning (blocker 62ye.6) for all three sources at the next weekly sync. One-character fix per entry, matches the format of the immediately preceding quit-sponsor entry. Greptile caught this; it's the canonical fix.

P1 — All four SKILL.md files fail the marketplace validator pre-screen

Ran validate-skills-schema.py --marketplace on each:

twitch-vod-clipper  → B (88/100)  1 ERROR: allowed-tools: unscoped 'Bash' is not allowed
                                1 ERROR: Required section missing: '# '
                                1 ERROR: [tier2:tool-safety] Unscoped Bash + Write/WebFetch without ## Safety Justification
market-validator    → B (89/100)  same Bash + safety-justification errors
git-workflow        → B (83/100)  same Bash + safety-justification errors
docker-deploy       → B (80/100)  same Bash + safety-justification errors

The same pattern in all four: allowed-tools: Bash, Read, Write, Edit, Glob (unscoped Bash) without a ## Safety Justification section. The PR description claims "All 7 required body sections present" — that's true at the per-skill spec level but the marketplace tier adds a Safety Justification requirement when Bash + Write/WebFetch are requested unscoped. The PR's submission checklist pre-dates that requirement.

This isn't unique to this PR — I checked a few other community plugins and several have the same pattern — but it's now a hard ERROR per the validator and would be flagged on the next sync.

Per-skill surgical fixes (each ~5 min):

  • twitch-vod-clipper: replace allowed-tools: Bash, Read, Write, Edit, Glob with allowed-tools: Read, Write, Edit, Glob (Bash isn't actually referenced in the body for this skill — the VOD download is yt-dlp from a Bash block, so narrow to Bash(yt-dlp:*)). Add ## Safety Justification with what the bash scope is and why.
  • market-validator: same — Bash is rarely used; narrow or remove.
  • git-workflow: this is the trickiest one — git operations legitimately need Bash. Use Bash(git:*), Bash(gh:*) etc. and add a Safety Justification covering force-push-with-lease and --no-ff merge handling.
  • docker-deploy: same — narrow to Bash(docker:*), Bash(docker-compose:*) and justify.

P2 — git-workflow contains placeholder text

WARN: [content-quality] SKILL.md contains placeholder text: {n}

Search for {n} in git-workflow/skills/git-workflow/SKILL.md and replace with the intended variable name. Easy grep-able fix.

P2 — twitch-vod-clipper magic numbers

WARN: [scripts] Code block 2: Magic number '1080' - add comment explaining why
WARN: [scripts] Code block 3: Magic number '16000' - add comment explaining why

These are reasonable constants (1920×1080 vertical output, 16kHz audio) but the validator wants an inline comment.

P2 — docker-deploy is 390 lines

Validator says "approaching limit" (300-500). Consider extracting the longer example blocks into references/ for progressive disclosure. Optional.

Looks good

  • 4-of-4 skills graded B (80-89) — pre-screen-blocking errors are narrow and fixable in <30 min per file.
  • The Path B pattern is correctly used (single upstream monorepo, three independent lock entries).
  • Upstream provenance is clear (gupsspam-netizen/clip-farmer-skills).
  • The SPDX license: MIT and verified: false are appropriately set.

Path to merge

  1. Add docker-deploy to sources.yaml (matches the gupsspam-netizen/clip-farmer-skills upstream).
  2. Anchor the three include patterns to '/SKILL.md'.
  3. Fix the four allowed-tools lines (narrow Bash scope, add Safety Justification).
  4. Fix the {n} placeholder in git-workflow.
  5. Re-run validate-skills-schema.py --marketplace against all four and confirm pre-screen clean.

Once those land, this is a clean four-skill marketplace addition.

jeremylongshore pushed a commit that referenced this pull request Aug 14, 2026
…rections to the blueprint

WHAT
Nine corrections the owner attached to his conditional ratification of the master
modernization blueprint, applied as documentation and planning only. No code, no
production architecture, no corpus, no adapter, no catalog, no package, no bead, no
issue, no external setting was touched.

1. Root README landing contract (727 § 6A, new). 728 C6 and 729 § 6 both REJECT
   "README as catalog surface" and named no successor. § 6A is the successor: a
   governed landing contract — model-agnostic platform identity, scale stated as a
   strength with cohort labels, five navigation axes (harness/model, application,
   category, plugin, certification tier), four artifact classes distinguished on
   sight, harness support stated only where a generated adapter exists, the frozen
   install slug and plugins//skills/ contracts preserved, tonsofskills.com live and
   the dead domain retired outside frozen records. Ships R1–R10 acceptance criteria,
   an information architecture, and one PROPOSED bead (2.13) — documented, not created.
2. Activation completed, not weakened. The STANDARDS.md § Canonical documents pointer
   lands in this PR, satisfying the Status condition verbatim; 727 § 11.1 proves the
   resulting graph has exactly one owner per fact class.
3. Disputed figures corrected from a re-measurement at HEAD 49210ec, embedded in
   727 § 3.1 with SHA, commands and cohort definitions so the correction is
   self-proving: 962 A/B failing (not 963); 132 A-graded CONFIRMED; those 132 carry
   219 errors (not 469). 469 has no measured source and every near-miss (1,101 /
   1,320 / 2,155 / 7,433) was excluded rather than substituted. Three totals are now
   named separately and never merged: SKILL.md 7,433 over 3,680 rows, agent lane 253
   over 353 files, terminal marketplace headline 7,687.
4. Benchmark licensing repaired. 728 § 4.0 is a binding preamble — unlicensed repos
   may be studied for ideas only; files, schema wording, prose and implementation
   text may not be copied; adoption is independent reimplementation; every decision
   preserves its source's license constraint; absence of a license means ALL RIGHTS
   RESERVED. Rows A2, A4, A5, A6, B4, B7 and D1 now carry that constraint inline.
5. Mission 01 is not Epic 1. 727 Epic 1 gains a delivery table (PRs #1174#1184) and
   a per-bead disposition: 0 satisfied, 0 superseded, 1.7/1.8 narrowed, 1.0 partially
   informed — so Epic 1 stays at 15 and no filler bead was invented to protect it.
6. Progressive activation is binding. Beads/Dolt is task authority; GitHub and Plane
   are projections; no uncontrolled 151-bead batch; one owner-authorized slice at a
   time behind review + AAR + evidence + owner gate. § 15.1 is now the single
   unambiguous launch sequence and reconciles the Epic 7 bead 7.1 recommendation with
   the Day-0 diagram: slice 1 is a named PRE-PROGRAM CONTAINMENT MISSION of two beads.
7. npm token resolution RECORDED, not performed (§ 18.9): treat as potentially live,
   revoke, minimum-scope replacement, protected npm-production Environment, verify
   without exposing. Marked OWNER-AUTHORIZED EXTERNAL ACTION.
8. Honest independent review preserved (§ 18.5, rewritten + Epic 10 precondition):
   one approval is the target and is not reduced to zero; an implementer-controlled
   alternate identity is not independence; admin bypasses stay disclosed; Epic 10
   cannot claim independent certification before the machine boundary is real.
9. Contributor wording DRAFTED, NOT POSTED (709 § 8A): a close-and-reopen note that
   puts the delay on the repository, excludes #1131 (active) and #1181 (0 days), adds
   the fork-CI clause only for the four PRs with zero checks (#1181, #1173, #1172,
   #1083), preserves credit and gives a one-click reopen. Awaiting owner sign-off.

WHY THIS WAY
Correction 3 is embedded with its commands rather than stated, because a corrected
number that cannot be re-derived is the same defect wearing a new value. The 3,680 vs
3,678 cohort discrepancy is recorded and deliberately NOT reconciled by hand — that is
bead 1.0's job. Section 6A is numbered 6A rather than renumbering §§ 7–20, so every
existing cross-reference in the document survives.

VERIFICATION
  node scripts/check-docs-ignore-policy.mjs   → 21 assertions OK
  node scripts/check-doc-citations.mjs        → OK (20 pre-existing baselined, 0 new)
  node scripts/check-generated-artifacts.mjs  → OK (2 projection globs, 0 tracked)
  pnpm format:check                           → All matched files use Prettier code style
  npx markdownlint-cli2 (10,629 files)        → exit 0
709 is already tracked, so no filing-ledger line was required and 000-INDEX.md is
unchanged (no new document).

RISK / ROLLBACK
Documentation only; no runtime, schema, workflow or catalog surface changes. Revert
this commit to restore the pre-correction text byte-identically; the observable is
`git diff --stat` reporting five files and the three gates above still green.

UNFINISHED
Bead count moves 140→141 task / 150→151 total (Epic 2 gains 2.13). No bead, issue or
Plane record was created. Escalations 18.1–18.9 remain open owner decisions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants