Claude Skill

skillify

When you want to create, adapt, or update a Claude Code skill in one of your sibling repos (list your own repos in ~/.config/makerskills/skillify/repos.yaml; defaults to makerskills). Routes to the right mode automatically. Modes — CREATE (from-chat / from-video / from-dump / fro

LLM Mart · 0 points · 6 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download coreyhaines31-makerskills-skills_skillify-1868b81.zip · 17 KB
Part of coreyhaines31/makerskills — 18 skills

Install

skills CLI npx skills add https://github.com/coreyhaines31/makerskills/tree/main/skills/skillify
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install coreyhaines31-makerskills@llmmart
Git git clone https://github.com/coreyhaines31/makerskills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole coreyhaines31/makerskills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

/skillify — Create, adapt, or update a skill

One skill, three modes. Routes automatically to the right one based on input signal.

Consolidates and replaces the prior create-skill, adapt-skill, and update-skill (all merged as of v0.2.0 for vocabulary-moat consistency with the -ify trifecta).

Step 0 — Detect mode

Route by signal:

Signal Mode
Invoked mid-conversation with substantive recent workflow discussion CREATE / from-chat (default)
/skillify from-video <url> OR /skillify + a video URL CREATE / from-video
/skillify from-dump + pasted brief/transcript/notes CREATE / from-dump
/skillify from-scratch <name> OR "make a new skill called X" with no context CREATE / from-scratch
/skillify <github-url> OR "adapt this skill" / "port this skill" / "fork this skill" + external source ADAPT
/skillify <existing-skill> <change> OR "update X skill" / "propagate this learning" UPDATE / targeted
/skillify update (mid-conversation) UPDATE / from-chat — scan recent chat for learnings
/skillify usage <skill> UPDATE / usage — review recent runs, suggest improvements

If ambiguous, ask before proceeding. Never guess between CREATE and ADAPT if there's an external URL involved.


Mode: CREATE

Build a new skill from chat / video / dump / scratch.

Step 1 — Confirm the input source

Sub-mode What
from-chat (default) Extract the skill from the workflow discussed in this conversation. Most common case.
from-video User recorded a Loom / Zoom / screen-share. Calls watch-video in visual mode → transcript + key visual moments → SKILL.md. Best for visual/UI-heavy workflows.
from-dump User pastes a brief, prior conversation transcript, exported chat, or notes.
from-scratch Fresh idea with no source material — interactive Q&A.

Step 2 — Defer to Anthropic guidance for the schema

Don't reinvent SKILL.md format rules. For frontmatter, description-writing, references/ structure, and skill best practices:

  • compound-engineering:create-agent-skill (agent) — expert guidance for creating + editing Claude Code skills
  • compound-engineering:skill-creator (skill) — deeper guide for effective skills
  • compound-engineering:heal-skill (skill) — for fixing existing skills
  • anthropics/skills — official Anthropic examples
  • agentskills.io — open Agent Skills spec

Call those directly when in doubt about format. skillify orchestrates your workflow — which repo, which conventions, which cross-references. Format expertise lives upstream.

Step 3 — Pick target repo

Load the user's sibling repo list from ${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/skillify/repos.yaml if present. Otherwise default to makerskills (this repo). Example format:

# ~/.config/makerskills/skillify/repos.yaml
repos:
  - name: makerskills
    domain: Personal cross-cutting operator work
    path: ~/code/makerskills
  - name: marketingskills
    domain: Generic marketing tactics
    path: ~/code/marketingskills

Infer target if obvious from the skill's domain; ask if ambiguous.

Step 4 — Synthesize per sub-mode

from-chat:

  1. Read backward through this conversation. Look for a workflow repeated multiple times, a process re-explained, opinions restated, tooling/voice/output decisions.
  2. Identify the load-bearing pieces: trigger, steps, references, success shape, voice.
  3. Surface gaps that need clarification before scaffolding — ask 2–4 tight questions.
  4. Draft SKILL.md, citing chat moments inline ("Per your message about X…") so the user can verify.

from-dump:

  1. Parse the dump (Notion page, Slack thread, Loom transcript, teammate brief, exported ChatGPT conversation).
  2. Same synthesis logic as from-chat.
  3. Cite where in the dump each rule came from.

from-video:

  1. Take the URL or local path.
  2. Call watch-video <url> visual — get transcript + key visual moments + summary.
  3. Read outputs: <workdir>/transcript.txt, <workdir>/moments.md, <workdir>/summary.md.
  4. Synthesize: trigger (first 30s), steps (visual moments + matching transcript), tools used, decision points ("if X do Y" moments), success shape (last few seconds), voice cadence.
  5. Surface gaps — ambiguous moments needing clarification.
  6. Draft SKILL.md citing video moments by timestamp.
  7. Optionally save the source to second-brain as call-<slug>.md or note-<slug>.md.

Heuristic: recording >10 minutes = process probably too big for one skill. Suggest splitting before drafting.

from-scratch: Interactive Q&A:

  1. Name (kebab-case, verb-noun preferred — matches watch-video, read-book, paste)
  2. One-line purpose
  3. Trigger phrases (4–8)
  4. Initial reference files?
  5. Composes with which other skills?

Step 5 — Generate frontmatter

---
name: <kebab-case>
description: <rich, trigger-rich, ~2–4 sentences. Lead with "When you want to..." Include 4–8 trigger phrases in quotes. Differentiate from adjacent skills.>
metadata:
  version: 0.1.0
---

Description rules (load-bearing — Claude routes by description match):

  • Lead with the use case ("When you want to X…")
  • Include explicit trigger phrases
  • Differentiate from sibling skills
  • Mention key references the skill loads
  • Keep under ~500 characters

For deeper description-writing guidance, consult compound-engineering:skill-creator.

Step 6 — Scaffold the directory

<target-repo>/skills/<name>/
├── SKILL.md
└── references/
    └── ...

Body follows existing skills' pattern (pm, decide, second-brain):

  • # /<name> — <one-line purpose>
  • Numbered ## Step N — <phase> sections
  • Composes-with cross-references
  • Quality notes at the end

Step 7 — Update README, commit, push

Append to target repo's README skill table:

| [`<name>`](./skills/<name>/SKILL.md) | <one-line purpose> |

Commit + push. Report new skill path, commit hash, and reminder that /plugin install or symlink may need a refresh.

Step 8 — Offer follow-ups

  • "Flesh out a specific Step now, or come back to it?"
  • "Run through compound-engineering:heal-skill for a quality pass?"
  • "Should this compose with [adjacent skill]?"

Mode: ADAPT

Port an external skill (GitHub URL, agentskills.io, local disk, or pasted SKILL.md) into your namespace.

Step 1 — Fetch the source

Accept:

  • GitHub URL to a SKILL.md or repo (https://github.com/<owner>/<repo> or full path to SKILL.md)
  • agentskills.io URL or skills.sh URL
  • Local path to an existing skill on disk (other plugins in ~/.claude/plugins/)
  • Pasted SKILL.md content
# GitHub repo: clone shallow
git clone --depth 1 <url> /tmp/skillify-adapt-<short-id>/
# OR fetch a single file
gh api -H "Accept: application/vnd.github.raw" repos/<owner>/<repo>/contents/SKILL.md > /tmp/adapt-source.md

Capture the commit SHA so attribution can point at a stable revision.

Step 2 — Analyze + classify

Read source SKILL.md + any references/ it ships. Classify into three buckets per references/adapt-buckets.md:

Bucket What Example
Keep verbatim Format, schema, mechanic, scripts, frameworks Question banks, ffmpeg flags, regex patterns, JSON schemas
Adapt Tool defaults, paths, voice, naming, opinions Their video tool → your watch-video, their kanban → your pm, their voice → your voice
Add Cross-references to your existing skills, composition notes, your conventions "Composes with decide," "Saves to second-brain raw/," "Uses MLX-Whisper local"

Output classification as a table for approval before writing anything. Don't silently rewrite — surface the changes.

Step 3 — License check

Read the source's LICENSE. Per references/adapt-license-check.md:

License Action
MIT / Apache-2.0 / BSD / ISC / CC0 ✅ Green — proceed
MPL-2.0 / LGPL 🟡 Yellow — adapt OK; warn about file-level reciprocity
GPL-2.0 / GPL-3.0 / AGPL ❌ Red — contagion risk. Surface before proceeding.
Proprietary / no license ❌ Red — stop. No legal basis to copy.
Unclear 🟡 Yellow — ask, default to skip if uncertain

For permissive licenses, attribution is the only requirement — handled in Step 6.

Step 4 — Pick target repo

Same table as CREATE Step 3.

Step 5 — Rewrite

Keep verbatim: copy as-is; add <!-- from <source> --> marker if helpful.

Adapt:

  • Naming: rename to verb-noun if not (matches watch-video, read-book, paste)
  • Tool swaps: their generic kanban → pm, their video tool → watch-video, their note system → second-brain, their decision framework → decide
  • Voice: apply your voice rules — direct, conviction-coded. For social-adjacent skills, apply link-placement rule.
  • Paths: their ~/outputs/ → your ~/Documents/<skill>-<...>/ convention; their config → your references/ pattern
  • Names + context: generic examples → your portfolio context where the skill needs it

Add:

  • Cross-references to existing sibling skills
  • Composition notes (which other skills this calls or feeds)
  • Your conventions (frontmatter version, references/ subdir structure, BACKLOG entry if it spawns sub-ideas)

Step 6 — Attribution file

Write references/attribution.md:

# Attribution

- **Source**: <original SKILL.md URL>
- **Repository**: <repo URL>
- **Author**: <name + handle>
- **Commit SHA**: <SHA at time of adapt>
- **License**: <license name + URL>
- **Adapted**: <YYYY-MM-DD>

## What was kept verbatim
- ...

## What was adapted
- <old> → <new>

## What was added
- ...

## License compliance
<upstream LICENSE text if MIT/BSD/Apache requires it, OR reference where in this repo it lives>

## Upgrade path
Run `git ls-remote <repo-url> HEAD`. If SHA differs from above, re-run `/skillify <same-url>` for a 3-way merge.

For MIT / Apache / BSD, LICENSE text either gets copied into this file or the source LICENSE file gets copied to the skill dir.

Step 7 — Scaffold + commit

Same as CREATE Steps 6–7. Commit message: "Adapt <name> skill from <source-name>".

Step 8 — Report + offer follow-ups

  • Commit hash + new skill path
  • Show three-bucket classification one more time so the diff is clear
  • Offer:
    • "Flesh out the adaptations? Some defaults may still need your touch."
    • "Run compound-engineering:heal-skill for a QA pass?"
    • "Set up an upstream-check reminder via loopify?"

Mode: UPDATE

Improve existing skill(s) from learnings.

Step 1 — Confirm sub-mode

Sub-mode When
from-chat (default) Scan recent conversation for learnings, identify affected skill(s)
from-dump User provides a brief, feedback, transcript, postmortem
targeted User names the skill + change directly. Skip discovery.
usage Review recent runs of the named skill, identify gaps

Default when invoked mid-conversation with substantive recent activity: from-chat.

Step 2 — Extract learning(s)

For from-chat / from-dump / usage: look for change-worthy signals (full taxonomy in references/update-change-types.md):

  • Corrections — "no, don't do that anymore"
  • Validations — "yes that worked — bake it in"
  • New patterns — user just did an undocumented workflow; encode it
  • Voice / tone updates — like the spoken-aloud rule for slide-deck
  • Tool changes — switched defaults
  • Architectural decisions — naming conventions, file layout, frontmatter
  • Gaps — something the skill should have handled but didn't

Output: a clear list of N learnings, each phrased as a single change.

For targeted: skip extraction — user already named the change.

Step 3 — Identify affected skills

For each learning, search across all SKILL.md + references/ in the current repo (and optionally all sibling repos from your repos.yaml with --cross-repo):

grep -rln "<key terms>" ~/code/makerskills/skills/ --include="*.md"

# Across all sibling repos (list yours in $MAKERSKILLS_CONFIG/skillify/repos.yaml):
config="${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/skillify/repos.yaml"
for raw in $(yq -r '.repos[].path' "$config"); do
  repo="${raw/#\~/$HOME}"  # expand leading ~ to $HOME so grep resolves the real path
  grep -rln "<terms>" "$repo/skills/" --include="*.md" 2>/dev/null
done

Classify by confidence:

Confidence What Action
High Direct keyword match + clearly same topic Propose change
Medium Adjacent topic — rule might apply Surface for explicit approval
Low Tangential — rule could be stretched Mention but don't propose

See references/update-propagation.md for the cross-skill propagation playbook.

Step 4 — Memory-vs-skill check

For each learning: is this skill-specific or a broader principle?

Type Where it goes
Skill-specific rule Edit the SKILL.md / references file directly
Cross-cutting principle ~/.claude/memory/feedback_<topic>.md
Both Write the memory file AND update the skill(s) that immediately apply

Example: "links go in first comments, not body" → applies to jab-hook AND is a broader social principle → both update jab-hook AND save feedback_social_link_placement.md.

Offer the memory write explicitly: "This looks like a principle, not just a skill rule. Save to memory as feedback_<slug>.md?"

Step 5 — Propose diffs per file

For each affected file, show change as before/after or unified diff:

### `skills/<skill>/SKILL.md` — proposed change

**Before** (lines NN–NN):
> <existing text>

**After**:
> <new text>

**Why**: <one-line rationale>

**Version bump**: 0.2.0 → 0.2.1 (PATCH — clarification)

**Approve / edit / skip?**

Per-file approval. Don't batch — small changes are easy to OK; bundling forces all-or-nothing.

See references/update-versioning.md for semver rules.

Step 6 — Apply approved changes

  1. Use Edit to apply the exact change
  2. Bump metadata.version per the suggested level
  3. If the change involves a rename, follow the cross-reference update pattern (grep all files, update all references)

Batch multiple file changes within one skill into a single commit.

Step 7 — Commit + push

Group by skill. Examples:

  • One-skill update: "slide-deck: emphasize spoken-aloud voice (write for the ear, not the page)"
  • Multi-skill propagation: "jab-hook, marketingskills:social: link placement (no inline URLs)"
  • Cross-repo: one commit per repo. Don't atomic-commit across repos.

Step 8 — Report

Show:

  • Learnings extracted
  • Skill(s) updated (with version bumps)
  • Memory files written
  • Whether compound-engineering:heal-skill would be a useful QA pass
  • Anything flagged but skipped

When NOT to use UPDATE mode

Don't add ceremony to surgical edits. If the user says "add this one bullet to X.md," just Edit. UPDATE mode earns its keep when:

  1. Multiple skills are affected by one learning (cross-skill propagation)
  2. Bulk extraction from a long session
  3. Memory-vs-skill decision is unclear (need explicit triage)
  4. Version discipline matters (about to commit and want sane semver)

For one-line updates with no cross-skill implications: just Edit.


Composes with

  • watch-video — load-bearing for CREATE / from-video. Visual-mode output (transcript + key visual moments + summary) is the input for skill synthesis. Always call in visual mode for process recordings — UI state matters as much as words.
  • second-brain — optionally capture source video/dump as raw/call-<slug>.md or raw/note-<slug>.md so the source artifact lives alongside the skill it produced.
  • toolify — sibling in the -ify trifecta. Use toolify when the goal is adding an integration/MCP/API, not authoring a skill.
  • loopify — sibling in the -ify trifecta. Use loopify for agent-loop setup rather than a skill.
  • compound-engineering:create-agent-skill (agent) — call for format and best-practices expertise
  • compound-engineering:skill-creator (skill) — deeper best-practices reference
  • compound-engineering:heal-skill (skill) — QA pass after any mode

Notes on quality

  • Cite the source. Whether chat, video, dump, external URL, or user-named learning — the SKILL.md body should reference where each decision came from. Makes revising easier.
  • Don't over-engineer v0.1. Ship a minimal SKILL.md + 1–2 references files. Iterate after first use. Most generated skills are over-scoped.
  • Verb-noun naming where possible (matches watch-video, read-book, paste). Single-word noun names are fine for distinctive concepts (decide, pm, paste, skillify).
  • Always reference Anthropic's official guidance for the schema — don't invent format conventions.
  • Attribution is non-negotiable for ADAPT mode. Every adapted skill ships with references/attribution.md.
  • License is a hard gate. Don't proceed on GPL/proprietary without explicit approval.
  • Per-file approval in UPDATE mode. Small changes are easy to OK; bundling forces all-or-nothing.
Files (makerskills)
  • references
    • adapt-buckets.md 3.4 KB
      # Three-bucket classification
      
      When porting a skill, every piece of the source maps to one of three buckets. Surface this classification to the user **before** writing the adapted skill — never silently rewrite.
      
      ## Bucket 1: Keep verbatim
      
      What it is: format, schema, mechanic, scripts, frameworks, regex patterns, JSON shapes, math/algorithm details.
      
      Why: this is the *value* the source is bringing. Reinventing wastes effort and risks bugs.
      
      Examples:
      - The 38 decision questions from the 37signals decision skill
      - ffmpeg flag patterns for frame extraction
      - A regex for detecting URLs in a post
      - A JSON schema for the output payload
      - Specific API endpoints + auth patterns
      - The viewport-base.css from frontend-slides
      - The Karpathy LLM wiki schema rules
      
      Action: **copy as-is**. Optionally add a `<!-- from <source> -->` marker.
      
      ## Bucket 2: Adapt
      
      What it is: tool defaults, paths, voice, naming, opinions, user-context examples.
      
      Why: these are the source author's preferences. Yours differ.
      
      ### Sub-buckets to look for
      
      | Sub-bucket | Source has | Adapt to |
      |---|---|---|
      | **Naming** | Their convention | Verb-noun (matches `watch-video`, `read-book`, `create-skill`) when possible |
      | **Tool defaults** | Their video tool | Your `watch-video` |
      | | Their kanban | Your `pm` |
      | | Their transcript tool | Your `watch-video transcript` mode |
      | | Their notes / KB | Your `second-brain` (or `${SECOND_BRAIN_VAULT:-$HOME/Documents/SecondBrain}/`) |
      | | Their decision framework | Your `decide` |
      | | Their social drafting | Your `jab-hook` |
      | | Their research | Your `deep-research` |
      | **Paths** | `~/outputs/` or `~/notes/` | `~/Documents/<skill>-<...>` convention |
      | | Custom config dirs | Your `references/` pattern |
      | **Voice** | Generic / corporate / theirs | Yours — direct, conviction-coded, listener-perspective, no AI-slop |
      | **Context** | "The user," generic examples | Your specific context (your name, your products / portfolio / partnerships) where the skill needs it |
      | **Defaults** | Their assumed environment | Your Mac, MLX-Whisper, brew, uv, Notion API key, Typefully MCP, etc. |
      | **Cadence** | Their suggested frequency / WIP limits | Yours (e.g., 2 promo/week for social, 3 In-Progress WIP for pm) |
      
      Action: **rewrite** the affected lines, surface the change in the bucket report.
      
      ## Bucket 3: Add
      
      What it is: cross-references, composition notes, your conventions that the source doesn't know about.
      
      Why: the source is generic; your version sits in a network of other skills.
      
      Examples:
      - "Composes with `decide`" (when the skill hits a decision moment)
      - "Outputs to `second-brain raw/` as `<prefix>-`"
      - "Falls back to `social-fetch` for the URL fetch step"
      - "Uses MLX-Whisper local (see install in `watch-video` references)"
      - Memory references: `feedback_*` files in `~/.claude/memory/`
      - BACKLOG.md entry if the adapt spawns sub-ideas
      
      Action: **add net-new sections** to the adapted SKILL.md — typically a `## Composes with` section and inline references in the body.
      
      ## Bucket report format
      
      Present to the user before writing:
      
      ```markdown
      ## Three-bucket classification — <source skill name>
      
      ### Keep verbatim
      - <piece 1>
      - <piece 2>
      
      ### Adapt
      - <source piece> → <new version> (why: <reason>)
      - <source piece> → <new version> (why: <reason>)
      
      ### Add
      - <new piece> (compose with `<your skill>`)
      - <new piece>
      
      **Proceed?** y/n / edit
      ```
      
      the user approves, edits, or rejects. Only then proceed to write the adapted SKILL.md.
      
    • adapt-license-check.md 3.1 KB
      # License check
      
      Run this before adapting. Skill defaults to **stop** on unclear or restrictive licenses — don't proceed without explicit the user approval on red cases.
      
      ## Policy
      
      | License | Action | Why |
      |---|---|---|
      | **MIT** | ✅ Proceed | Permissive. Requires only attribution + license notice. |
      | **Apache 2.0** | ✅ Proceed | Permissive. Requires attribution + NOTICE file. |
      | **BSD (2-clause, 3-clause)** | ✅ Proceed | Permissive. Requires attribution. |
      | **ISC** | ✅ Proceed | Equivalent to MIT. |
      | **CC0 / Public Domain** | ✅ Proceed | No attribution required (but include anyway for credit). |
      | **Unlicense** | ✅ Proceed | Public domain equivalent. |
      | **MPL 2.0** | 🟡 Warn | File-level reciprocity — modified MPL files must stay MPL. Adapt sparingly; consider rewriting from scratch instead of copying. |
      | **LGPL** | 🟡 Warn | Library-linking exception, but skill files would be derivative. Usually rewrite from scratch is cleaner. |
      | **GPL 2.0 / 3.0** | ❌ Stop | Strong copyleft — adaptation creates a derivative work that must also be GPL. Stops your repo from being your-license-of-choice. Surface to the user. |
      | **AGPL** | ❌ Stop | Even stronger — network-use clause triggers. |
      | **Custom / proprietary** | ❌ Stop | No legal basis to copy. |
      | **No LICENSE file** | 🟡 Warn | Default copyright = no rights. Don't copy. Ask author OR rewrite from scratch using only the *ideas* (not the text). |
      | **Unclear / conflicting** | 🟡 Warn | Surface to the user for a call. |
      
      ## Detection script
      
      ```bash
      # In the source repo
      curl -s "https://api.github.com/repos/<owner>/<repo>/license" | jq -r .license.spdx_id
      ```
      
      Or read the LICENSE file directly:
      
      ```bash
      cat <repo>/LICENSE | head -5
      ```
      
      Standard SPDX identifiers: `MIT`, `Apache-2.0`, `BSD-2-Clause`, `BSD-3-Clause`, `ISC`, `MPL-2.0`, `LGPL-3.0`, `GPL-2.0`, `GPL-3.0`, `AGPL-3.0`, `CC0-1.0`, `Unlicense`.
      
      ## Required artifacts per license
      
      **MIT / BSD / ISC**: copy the LICENSE text into `references/attribution.md` (or as a separate `LICENSE-<source-name>` file in the skill dir). Include the copyright line verbatim.
      
      **Apache 2.0**: same as MIT + copy any `NOTICE` file from the source.
      
      **CC0 / Unlicense / Public Domain**: attribution not required, but include in `attribution.md` for credit.
      
      **MPL / LGPL / GPL**: don't proceed without the user's explicit call.
      
      ## When the source has no license
      
      This is the most common case for skills on personal GitHub repos. Treat it as ❌ red:
      - Default copyright applies — you have *no* right to copy or redistribute
      - Options:
        1. **Open an issue / PR** asking the author to add a permissive license
        2. **Email / DM** the author and ask permission, save the response
        3. **Rewrite from scratch** using only the *ideas* (mechanics, concepts) — not the text. Then it's a fresh independent work that happens to be similar. Document this clearly in `attribution.md` so it's not confused with a port.
      
      ## Edge case: skills you wrote yourself in another context
      
      If the source is YOUR OWN code in another repo of yours (e.g., personal note → adapt for a sibling plugin), license doesn't apply. Skip this step and just attribute for traceability.
      
    • update-change-types.md 4.4 KB
      # Change types — what to look for
      
      Taxonomy of update-worthy signals. When in `from-chat` or `from-dump` mode, scan for these.
      
      ## 1. Corrections
      
      User explicitly said the current behavior is wrong.
      
      **Signals:**
      - "no don't do that"
      - "stop doing X"
      - "this isn't right — should be Y"
      - "we got this wrong before"
      - Direct feedback after a skill ran
      
      **Examples from this session:**
      - "i dont always want to link somewhere" → updated jab-hook's link placement rule
      - "for the slide deck skill, we need to really emphasize for the voice and tone to be super conversational since its something that will literally be spoken out" → updated slide-deck voice rules
      
      **Version bump**: PATCH if clarification, MINOR if a real behavior change.
      
      ## 2. Validations
      
      User confirmed a behavior worked well — bake it in so it doesn't regress.
      
      **Signals:**
      - "yes that worked"
      - "perfect, do that again"
      - "this approach was right"
      - Accepted a draft without changes
      
      **Action**: lock in the choice as explicit rule (don't leave it as ad-hoc judgment).
      
      **Version bump**: PATCH.
      
      ## 3. New patterns
      
      the user used a workflow not documented in any skill. Encode it.
      
      **Signals:**
      - A multi-step process performed manually
      - A tool combination that worked
      - A specific decision-making chain
      
      **Action**: either:
      - Add the pattern to an existing skill if it fits
      - Spin off as a new skill via `create-skill`
      
      **Version bump**: MINOR (it's a new capability for the skill).
      
      ## 4. Voice / tone updates
      
      Refinements to how the skill writes / sounds.
      
      **Signals:**
      - Style feedback
      - "Make it more X" / "less Y"
      - Examples where the user rewrote the skill's output
      
      **Examples from this session:**
      - Spoken-aloud rule for slide-deck — overhauled the voice section
      - Conversational rules (contractions, "you" not "the audience," numbers said naturally)
      
      **Action**: edit the relevant `voice.md` / `narrative-and-voice.md` / equivalent reference.
      
      **Version bump**: PATCH for tweaks; MINOR if a major voice principle changes.
      
      ## 5. Tool changes
      
      the user switched default tools or learned a tool integration works better.
      
      **Signals:**
      - "Use X instead of Y"
      - "Set up Z" (during setup conversation)
      - "MLX-Whisper works on Mac"
      
      **Examples from this session:**
      - Installed `uv` + MLX-Whisper → `watch-video` references this in transcript backend selection
      - ScrapeCreators / Apify keys → `social-fetch` paid-fallback strategies
      
      **Action**: update the relevant references/adapters file. Propagate to other skills using the same tool.
      
      **Version bump**: PATCH if just preferences; MINOR if it changes the default behavior.
      
      ## 6. Architectural decisions
      
      Decisions about how skills themselves are structured.
      
      **Signals:**
      - Naming convention changes (verb-noun vs noun-verb)
      - File layout conventions (references/, templates/)
      - Frontmatter format
      - Cross-reference patterns
      
      **Examples from this session:**
      - Rename `video-watch` → `watch-video` for verb-noun consistency
      - Rename `my-social` → `jab-hook` for framework citation
      - "Don't add comments unless logic is non-obvious"
      
      **Action**: usually cross-cuts — apply to multiple skills + save the principle to memory.
      
      **Version bump**: MAJOR if it's a breaking rename; MINOR otherwise.
      
      ## 7. Gaps
      
      Something the skill should have handled but didn't.
      
      **Signals:**
      - A skill ran and missed an obvious case
      - "Why didn't it do X?"
      - An edge case surfaces in a real run
      
      **Action**: add the case to the skill's body — usually a new section, table row, or error-handling entry.
      
      **Version bump**: MINOR (capability added).
      
      ---
      
      ## How to phrase a learning
      
      Each learning extracted from chat / dump should be a **single change** stated as:
      
      > *"[skill or area] should [new behavior] because [reason]. Currently does [old behavior]."*
      
      Examples:
      - *"slide-deck voice should emphasize that slides are spoken aloud (write for the ear) because the current 'written voice' framing produced text that didn't sound natural when read out loud."*
      - *"jab-hook drafts should not include URLs in the post body (use first comments instead) because platforms downrank link-in-body posts."*
      - *"second-brain raw/ type catalog should include business-operational prefixes (call-, email-, sop-, etc.) because the user uses these for agency work, not just personal intellectual capture."*
      
      Format: skill (or area) + new behavior + because + (optional) current behavior contrast.
      
      If you can't phrase it this way, it's not concrete enough to be a change — push back / ask the user for specifics.
      
    • update-propagation.md 5.1 KB
      # Cross-skill propagation
      
      The unique value of `update-skill`. A learning often applies to multiple skills — surface all of them so the user can approve per file.
      
      ## Why this matters
      
      Examples from this session where a single learning crossed skills:
      
      | Learning | Affected skills |
      |---|---|
      | Link placement rule (no URLs in body) | `jab-hook` + memory `feedback_social_link_placement.md` (applies to any other social skills in your sibling repos too) |
      | Verb-noun naming convention | `watch-video`, `read-book`, `create-skill`, `adapt-skill`, `update-skill` (rename pass across multiple skills) |
      | Anti-AI-slop banned phrases | `slide-deck`, `jab-hook` (both write content; both should ban "dive deep," "leverage," etc.) |
      | Spoken-aloud voice rule | `slide-deck` (load-bearing); `jab-hook` partial relevance (social IS read silently usually, but voice still applies) |
      
      Without propagation, these rules drift — one skill knows about it, others don't. Subtle inconsistency creeps in.
      
      ## Discovery: how to find affected skills
      
      For each learning, do three passes:
      
      ### Pass 1: Keyword search
      
      Grep for terms that signal the topic. Cast a wide net.
      
      ```bash
      # Example: link placement learning
      grep -rln "URL\|link\|outbound\|first comment" ~/code/makerskills/skills/ --include="*.md"
      
      # Across all sibling repos (list yours in $MAKERSKILLS_CONFIG/skillify/repos.yaml):
      config="${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/skillify/repos.yaml"
      for raw in $(yq -r '.repos[].path' "$config" 2>/dev/null); do
        repo="${raw/#\~/$HOME}"  # expand leading ~ to $HOME
        if [ -d "$repo/skills/" ]; then
          grep -rln "URL\|link\|outbound\|first comment" "$repo/skills/" --include="*.md" 2>/dev/null
        fi
      done
      ```
      
      ### Pass 2: Semantic match (manual)
      
      For each grep hit, read the matching section and ask: *is this rule actually applicable here, or is the keyword match coincidental?*
      
      - **Direct match** — same topic + same activity (e.g., link rule in a social drafting skill): high confidence
      - **Adjacent match** — same topic, different activity (link rule mentioned in a research skill that cites URLs): medium confidence
      - **Coincidental match** — keyword present but unrelated context: skip
      
      ### Pass 3: Adjacent-skill scan (no grep)
      
      Some learnings won't have keyword matches but logically apply. Manually scan the list of all skills and ask: *does this rule apply here even if the keyword isn't present?*
      
      Example: a "voice should be spoken aloud" rule won't grep-match in `pm` (project management skill — no voice content), but it applies in any skill that produces user-facing text (`slide-deck`, `jab-hook`, `read-book` summaries, `create-skill` output).
      
      Use the skill's *output type* as the heuristic:
      - **Writes user-facing text** (drafts posts, slides, summaries): voice rules apply
      - **Generates structured data** (boards, archives, schemas): voice rules usually don't apply
      - **Wraps an external tool** (yt-dlp, ffmpeg, Playwright): tool rules apply
      
      ## Output: confidence-tagged candidate list
      
      Present to the user before proposing any diffs:
      
      ```markdown
      ## Learning: <one-line statement>
      
      ### High-confidence candidates (propose diff)
      - `<skill1>` — at `<file>:<line>` — direct match, same topic + activity
      - `<skill2>` — at `<file>:<line>` — direct match
      
      ### Medium-confidence candidates (ask before proposing)
      - `<skill3>` — at `<file>:<line>` — adjacent topic; rule might apply with adjustment
      
      ### Low-confidence (mentioned for awareness, no proposal)
      - `<skill4>` — keyword present but in unrelated context
      
      ### Memory candidate (cross-cutting principle?)
      - Yes / no. If yes, suggested path: `~/.claude/memory/feedback_<slug>.md`
      
      **Proceed with high-confidence diffs? Approve / edit / skip each.**
      ```
      
      Per-candidate approval (not batch) — small changes are easy to OK individually; bundled changes force all-or-nothing decisions.
      
      ## Scope control
      
      Default: search **only the current repo**. Most learnings are repo-local.
      
      Add `--cross-repo` flag when:
      - The learning is clearly meta (naming convention, file structure, frontmatter)
      - The skills span multiple repos (e.g., a voice rule that applies to social skills in several of your sibling plugins)
      - the user explicitly asks ("apply this to all my skills")
      
      Cross-repo propagation: produce one commit per repo. Don't try to atomic-commit across repo boundaries.
      
      ## When to skip a candidate
      
      Sometimes a candidate keyword-matches but applying the rule would be wrong. Reasons to skip:
      - The skill's context is genuinely different (e.g., `read-book` "summary" mode wants written voice, not spoken)
      - The rule has a documented exception (e.g., reading-first density mode in `slide-deck` exempts voice rules)
      - Applying it would over-constrain a deliberately flexible area
      
      When skipping, note in the report: *"Considered but skipped: `<skill>` because `<reason>`."* This makes the decision auditable later.
      
      ## Frequency heuristic
      
      If the same learning lands in update proposals 3+ times for related skills, it's probably a **principle, not a rule**. Promote to `feedback_*.md` in memory and reference from each affected skill rather than copy-pasting the same text 5 places.
      
    • update-versioning.md 3 KB
      # Versioning — semver for skills
      
      Per-skill `metadata.version` follows semantic versioning. Bumps are small signals, but they matter for "what changed since I last looked at this skill."
      
      ## The rules
      
      | Bump | When | Example |
      |---|---|---|
      | **PATCH** (0.1.0 → 0.1.1) | Clarification, typo fix, minor wording improvement, reference doc update, error-message tweak. Behavior unchanged. | Tightening a description, fixing a broken link, rewording a step for clarity. |
      | **MINOR** (0.1.0 → 0.2.0) | New capability — new mode, new reference file, new option, expanded scope. Backward-compatible. | Adding `from-chat` mode to `create-skill`. Adding density modes to `slide-deck`. New `--with-replies` flag on `social-fetch`. |
      | **MAJOR** (0.1.0 → 1.0.0) | Breaking change — rename, removed mode, incompatible output format change, removed reference file callers rely on. | Renaming `add-skill` → `create-skill`. Removing the `transcript` mode from `watch-video`. Renaming output JSON keys in `social-fetch`. |
      
      ## Pre-1.0 nuance
      
      Most skills start at `0.1.0`. While in 0.x, breaking changes can bump MINOR instead of MAJOR (e.g., `0.1.0` → `0.2.0` for a rename, as we did for `jab-hook`). This signals "still iterating, expect changes." Move to `1.0.0` when:
      - The skill has been used successfully ~10+ times
      - The interface is stable
      - the user explicitly says "lock it in"
      
      After `1.0.0`, the standard rules apply strictly.
      
      ## What NOT to bump
      
      - **Rewording the same idea** without changing behavior → don't bump (just commit)
      - **Adding a comment** → don't bump
      - **Fixing a typo in a non-load-bearing section** → don't bump (or PATCH if you must)
      
      Bumps should be meaningful. If every commit bumps, the version stops carrying information.
      
      ## Multi-file changes
      
      When an update touches multiple files within the same skill (SKILL.md + a references/ file), bump the version once for the skill — not per file.
      
      When an update spans multiple skills (cross-skill propagation), bump each affected skill independently per its own change scope. Example:
      - Slide-deck adds a new voice rule (MINOR for slide-deck)
      - Jab-hook adopts the same voice rule (PATCH for jab-hook — clarification, not new behavior)
      
      ## Where the version lives
      
      ```yaml
      ---
      name: <skill-name>
      description: <...>
      metadata:
        version: 0.2.0          # ← here
      ---
      ```
      
      If `metadata.version` is missing, treat as `0.1.0` and add it explicitly during the next update.
      
      ## What to put in the commit message
      
      Mention the bump:
      
      ```
      slide-deck: add ppt + export modes (0.1.0 → 0.2.0 — MINOR)
      
      <details>
      ```
      
      This makes the changelog grep-able:
      
      ```bash
      git log --oneline | grep -E "MAJOR|MINOR|PATCH"
      ```
      
      ## Bumping versions on rename
      
      Cross-skill renames (e.g., `video-watch` → `watch-video`, `add-skill` → `create-skill`) are MAJOR by definition — they break callers. Bump accordingly.
      
      For internal-only renames (a section heading inside SKILL.md, never referenced externally), no bump needed.
      
      ## When you're not sure
      
      Default to PATCH. It's better to undersell a change than oversell.
      
  • SKILL.md 18.4 KB
    ---
    name: skillify
    description: When you want to create, adapt, or update a Claude Code skill in one of your sibling repos (list your own repos in ~/.config/makerskills/skillify/repos.yaml; defaults to makerskills). Routes to the right mode automatically. Modes — CREATE (from-chat / from-video / from-dump / from-scratch) turns a workflow, brief, recording, or fresh idea into a new skill. ADAPT ports an external skill (GitHub URL, agentskills.io, local disk) into your namespace with three-bucket classification (keep/adapt/add) + license check + attribution. UPDATE improves existing skills from learnings with cross-skill propagation, memory-vs-skill triage, and semver discipline. Defers to Anthropic's guidance (compound-engineering:create-agent-skill, compound-engineering:skill-creator, compound-engineering:heal-skill) for schema and best-practice depth. Triggers on "/skillify," "create a skill," "make this a skill," "skill from this chat," "extract a skill from what we've been doing," "adapt this skill," "port this skill," "fork this skill," "borrow this skill," "update X skill," "apply this to the relevant skills," "propagate this learning," "improve [skill]," "fix [skill]," "iterate on [skill]." Part of the -ify trifecta (skillify / toolify / loopify) for extending Claude Code.
    metadata:
      version: 0.2.0
    ---
    
    # /skillify — Create, adapt, or update a skill
    
    One skill, three modes. Routes automatically to the right one based on input signal.
    
    Consolidates and replaces the prior `create-skill`, `adapt-skill`, and `update-skill` (all merged as of v0.2.0 for vocabulary-moat consistency with the `-ify` trifecta).
    
    ## Step 0 — Detect mode
    
    Route by signal:
    
    | Signal | Mode |
    |---|---|
    | Invoked mid-conversation with substantive recent workflow discussion | **CREATE / from-chat** (default) |
    | `/skillify from-video <url>` OR `/skillify` + a video URL | **CREATE / from-video** |
    | `/skillify from-dump` + pasted brief/transcript/notes | **CREATE / from-dump** |
    | `/skillify from-scratch <name>` OR "make a new skill called X" with no context | **CREATE / from-scratch** |
    | `/skillify <github-url>` OR "adapt this skill" / "port this skill" / "fork this skill" + external source | **ADAPT** |
    | `/skillify <existing-skill> <change>` OR "update X skill" / "propagate this learning" | **UPDATE / targeted** |
    | `/skillify update` (mid-conversation) | **UPDATE / from-chat** — scan recent chat for learnings |
    | `/skillify usage <skill>` | **UPDATE / usage** — review recent runs, suggest improvements |
    
    If ambiguous, ask before proceeding. Never guess between CREATE and ADAPT if there's an external URL involved.
    
    ---
    
    ## Mode: CREATE
    
    Build a new skill from chat / video / dump / scratch.
    
    ### Step 1 — Confirm the input source
    
    | Sub-mode | What |
    |---|---|
    | **from-chat** (default) | Extract the skill from the workflow discussed in this conversation. Most common case. |
    | **from-video** | User recorded a Loom / Zoom / screen-share. Calls `watch-video` in visual mode → transcript + key visual moments → SKILL.md. Best for visual/UI-heavy workflows. |
    | **from-dump** | User pastes a brief, prior conversation transcript, exported chat, or notes. |
    | **from-scratch** | Fresh idea with no source material — interactive Q&A. |
    
    ### Step 2 — Defer to Anthropic guidance for the schema
    
    Don't reinvent SKILL.md format rules. For frontmatter, description-writing, references/ structure, and skill best practices:
    
    - **`compound-engineering:create-agent-skill`** (agent) — expert guidance for creating + editing Claude Code skills
    - **`compound-engineering:skill-creator`** (skill) — deeper guide for effective skills
    - **`compound-engineering:heal-skill`** (skill) — for fixing existing skills
    - **[anthropics/skills](https://github.com/anthropics/skills)** — official Anthropic examples
    - **[agentskills.io](https://agentskills.io)** — open Agent Skills spec
    
    Call those directly when in doubt about format. `skillify` orchestrates *your* workflow — which repo, which conventions, which cross-references. Format expertise lives upstream.
    
    ### Step 3 — Pick target repo
    
    Load the user's sibling repo list from `${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/skillify/repos.yaml` if present. Otherwise default to `makerskills` (this repo). Example format:
    
    ```yaml
    # ~/.config/makerskills/skillify/repos.yaml
    repos:
      - name: makerskills
        domain: Personal cross-cutting operator work
        path: ~/code/makerskills
      - name: marketingskills
        domain: Generic marketing tactics
        path: ~/code/marketingskills
    ```
    
    Infer target if obvious from the skill's domain; ask if ambiguous.
    
    ### Step 4 — Synthesize per sub-mode
    
    **from-chat:**
    1. Read backward through this conversation. Look for a workflow repeated multiple times, a process re-explained, opinions restated, tooling/voice/output decisions.
    2. Identify the load-bearing pieces: trigger, steps, references, success shape, voice.
    3. Surface gaps that need clarification before scaffolding — ask 2–4 tight questions.
    4. Draft SKILL.md, citing chat moments inline ("Per your message about X…") so the user can verify.
    
    **from-dump:**
    1. Parse the dump (Notion page, Slack thread, Loom transcript, teammate brief, exported ChatGPT conversation).
    2. Same synthesis logic as from-chat.
    3. Cite where in the dump each rule came from.
    
    **from-video:**
    1. Take the URL or local path.
    2. Call `watch-video <url> visual` — get transcript + key visual moments + summary.
    3. Read outputs: `<workdir>/transcript.txt`, `<workdir>/moments.md`, `<workdir>/summary.md`.
    4. Synthesize: trigger (first 30s), steps (visual moments + matching transcript), tools used, decision points ("if X do Y" moments), success shape (last few seconds), voice cadence.
    5. Surface gaps — ambiguous moments needing clarification.
    6. Draft SKILL.md citing video moments by timestamp.
    7. Optionally save the source to `second-brain` as `call-<slug>.md` or `note-<slug>.md`.
    
    Heuristic: recording >10 minutes = process probably too big for one skill. Suggest splitting before drafting.
    
    **from-scratch:**
    Interactive Q&A:
    1. Name (kebab-case, verb-noun preferred — matches `watch-video`, `read-book`, `paste`)
    2. One-line purpose
    3. Trigger phrases (4–8)
    4. Initial reference files?
    5. Composes with which other skills?
    
    ### Step 5 — Generate frontmatter
    
    ```yaml
    ---
    name: <kebab-case>
    description: <rich, trigger-rich, ~2–4 sentences. Lead with "When you want to..." Include 4–8 trigger phrases in quotes. Differentiate from adjacent skills.>
    metadata:
      version: 0.1.0
    ---
    ```
    
    Description rules (load-bearing — Claude routes by description match):
    - Lead with the use case ("When you want to X…")
    - Include explicit trigger phrases
    - Differentiate from sibling skills
    - Mention key references the skill loads
    - Keep under ~500 characters
    
    For deeper description-writing guidance, consult `compound-engineering:skill-creator`.
    
    ### Step 6 — Scaffold the directory
    
    ```
    <target-repo>/skills/<name>/
    ├── SKILL.md
    └── references/
        └── ...
    ```
    
    Body follows existing skills' pattern (`pm`, `decide`, `second-brain`):
    - `# /<name> — <one-line purpose>`
    - Numbered `## Step N — <phase>` sections
    - Composes-with cross-references
    - Quality notes at the end
    
    ### Step 7 — Update README, commit, push
    
    Append to target repo's README skill table:
    
    ```markdown
    | [`<name>`](./skills/<name>/SKILL.md) | <one-line purpose> |
    ```
    
    Commit + push. Report new skill path, commit hash, and reminder that `/plugin install` or symlink may need a refresh.
    
    ### Step 8 — Offer follow-ups
    
    - *"Flesh out a specific Step now, or come back to it?"*
    - *"Run through `compound-engineering:heal-skill` for a quality pass?"*
    - *"Should this compose with [adjacent skill]?"*
    
    ---
    
    ## Mode: ADAPT
    
    Port an external skill (GitHub URL, agentskills.io, local disk, or pasted SKILL.md) into your namespace.
    
    ### Step 1 — Fetch the source
    
    Accept:
    - **GitHub URL** to a SKILL.md or repo (`https://github.com/<owner>/<repo>` or full path to SKILL.md)
    - **agentskills.io URL** or **skills.sh URL**
    - **Local path** to an existing skill on disk (other plugins in `~/.claude/plugins/`)
    - **Pasted SKILL.md content**
    
    ```bash
    # GitHub repo: clone shallow
    git clone --depth 1 <url> /tmp/skillify-adapt-<short-id>/
    # OR fetch a single file
    gh api -H "Accept: application/vnd.github.raw" repos/<owner>/<repo>/contents/SKILL.md > /tmp/adapt-source.md
    ```
    
    Capture the commit SHA so attribution can point at a stable revision.
    
    ### Step 2 — Analyze + classify
    
    Read source SKILL.md + any `references/` it ships. Classify into three buckets per `references/adapt-buckets.md`:
    
    | Bucket | What | Example |
    |---|---|---|
    | **Keep verbatim** | Format, schema, mechanic, scripts, frameworks | Question banks, ffmpeg flags, regex patterns, JSON schemas |
    | **Adapt** | Tool defaults, paths, voice, naming, opinions | Their video tool → your `watch-video`, their kanban → your `pm`, their voice → your voice |
    | **Add** | Cross-references to your existing skills, composition notes, your conventions | "Composes with `decide`," "Saves to `second-brain raw/`," "Uses MLX-Whisper local" |
    
    Output classification as a table for approval before writing anything. Don't silently rewrite — surface the changes.
    
    ### Step 3 — License check
    
    Read the source's LICENSE. Per `references/adapt-license-check.md`:
    
    | License | Action |
    |---|---|
    | MIT / Apache-2.0 / BSD / ISC / CC0 | ✅ Green — proceed |
    | MPL-2.0 / LGPL | 🟡 Yellow — adapt OK; warn about file-level reciprocity |
    | GPL-2.0 / GPL-3.0 / AGPL | ❌ Red — contagion risk. Surface before proceeding. |
    | Proprietary / no license | ❌ Red — stop. No legal basis to copy. |
    | Unclear | 🟡 Yellow — ask, default to skip if uncertain |
    
    For permissive licenses, attribution is the only requirement — handled in Step 6.
    
    ### Step 4 — Pick target repo
    
    Same table as CREATE Step 3.
    
    ### Step 5 — Rewrite
    
    **Keep verbatim**: copy as-is; add `<!-- from <source> -->` marker if helpful.
    
    **Adapt:**
    - Naming: rename to verb-noun if not (matches `watch-video`, `read-book`, `paste`)
    - Tool swaps: their generic kanban → `pm`, their video tool → `watch-video`, their note system → `second-brain`, their decision framework → `decide`
    - Voice: apply your voice rules — direct, conviction-coded. For social-adjacent skills, apply link-placement rule.
    - Paths: their `~/outputs/` → your `~/Documents/<skill>-<...>/` convention; their config → your `references/` pattern
    - Names + context: generic examples → your portfolio context where the skill needs it
    
    **Add:**
    - Cross-references to existing sibling skills
    - Composition notes (which other skills this calls or feeds)
    - Your conventions (frontmatter version, references/ subdir structure, BACKLOG entry if it spawns sub-ideas)
    
    ### Step 6 — Attribution file
    
    Write `references/attribution.md`:
    
    ```markdown
    # Attribution
    
    - **Source**: <original SKILL.md URL>
    - **Repository**: <repo URL>
    - **Author**: <name + handle>
    - **Commit SHA**: <SHA at time of adapt>
    - **License**: <license name + URL>
    - **Adapted**: <YYYY-MM-DD>
    
    ## What was kept verbatim
    - ...
    
    ## What was adapted
    - <old> → <new>
    
    ## What was added
    - ...
    
    ## License compliance
    <upstream LICENSE text if MIT/BSD/Apache requires it, OR reference where in this repo it lives>
    
    ## Upgrade path
    Run `git ls-remote <repo-url> HEAD`. If SHA differs from above, re-run `/skillify <same-url>` for a 3-way merge.
    ```
    
    For MIT / Apache / BSD, LICENSE text either gets copied into this file or the source LICENSE file gets copied to the skill dir.
    
    ### Step 7 — Scaffold + commit
    
    Same as CREATE Steps 6–7. Commit message: `"Adapt <name> skill from <source-name>"`.
    
    ### Step 8 — Report + offer follow-ups
    
    - Commit hash + new skill path
    - Show three-bucket classification one more time so the diff is clear
    - Offer:
      - *"Flesh out the adaptations? Some defaults may still need your touch."*
      - *"Run `compound-engineering:heal-skill` for a QA pass?"*
      - *"Set up an upstream-check reminder via `loopify`?"*
    
    ---
    
    ## Mode: UPDATE
    
    Improve existing skill(s) from learnings.
    
    ### Step 1 — Confirm sub-mode
    
    | Sub-mode | When |
    |---|---|
    | **from-chat** (default) | Scan recent conversation for learnings, identify affected skill(s) |
    | **from-dump** | User provides a brief, feedback, transcript, postmortem |
    | **targeted** | User names the skill + change directly. Skip discovery. |
    | **usage** | Review recent runs of the named skill, identify gaps |
    
    Default when invoked mid-conversation with substantive recent activity: **from-chat**.
    
    ### Step 2 — Extract learning(s)
    
    For from-chat / from-dump / usage: look for change-worthy signals (full taxonomy in `references/update-change-types.md`):
    
    - **Corrections** — "no, don't do that anymore"
    - **Validations** — "yes that worked — bake it in"
    - **New patterns** — user just did an undocumented workflow; encode it
    - **Voice / tone updates** — like the spoken-aloud rule for slide-deck
    - **Tool changes** — switched defaults
    - **Architectural decisions** — naming conventions, file layout, frontmatter
    - **Gaps** — something the skill should have handled but didn't
    
    Output: a clear list of *N learnings*, each phrased as a single change.
    
    For **targeted**: skip extraction — user already named the change.
    
    ### Step 3 — Identify affected skills
    
    For each learning, search across all SKILL.md + references/ in the current repo (and optionally all sibling repos from your `repos.yaml` with `--cross-repo`):
    
    ```bash
    grep -rln "<key terms>" ~/code/makerskills/skills/ --include="*.md"
    
    # Across all sibling repos (list yours in $MAKERSKILLS_CONFIG/skillify/repos.yaml):
    config="${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/skillify/repos.yaml"
    for raw in $(yq -r '.repos[].path' "$config"); do
      repo="${raw/#\~/$HOME}"  # expand leading ~ to $HOME so grep resolves the real path
      grep -rln "<terms>" "$repo/skills/" --include="*.md" 2>/dev/null
    done
    ```
    
    Classify by confidence:
    
    | Confidence | What | Action |
    |---|---|---|
    | **High** | Direct keyword match + clearly same topic | Propose change |
    | **Medium** | Adjacent topic — rule *might* apply | Surface for explicit approval |
    | **Low** | Tangential — rule could be stretched | Mention but don't propose |
    
    See `references/update-propagation.md` for the cross-skill propagation playbook.
    
    ### Step 4 — Memory-vs-skill check
    
    For each learning: **is this skill-specific or a broader principle?**
    
    | Type | Where it goes |
    |---|---|
    | Skill-specific rule | Edit the SKILL.md / references file directly |
    | Cross-cutting principle | `~/.claude/memory/feedback_<topic>.md` |
    | Both | Write the memory file AND update the skill(s) that immediately apply |
    
    Example: *"links go in first comments, not body"* → applies to `jab-hook` AND is a broader social principle → both update jab-hook AND save `feedback_social_link_placement.md`.
    
    Offer the memory write explicitly: *"This looks like a principle, not just a skill rule. Save to memory as `feedback_<slug>.md`?"*
    
    ### Step 5 — Propose diffs per file
    
    For each affected file, show change as before/after or unified diff:
    
    ```markdown
    ### `skills/<skill>/SKILL.md` — proposed change
    
    **Before** (lines NN–NN):
    > <existing text>
    
    **After**:
    > <new text>
    
    **Why**: <one-line rationale>
    
    **Version bump**: 0.2.0 → 0.2.1 (PATCH — clarification)
    
    **Approve / edit / skip?**
    ```
    
    Per-file approval. Don't batch — small changes are easy to OK; bundling forces all-or-nothing.
    
    See `references/update-versioning.md` for semver rules.
    
    ### Step 6 — Apply approved changes
    
    1. Use `Edit` to apply the exact change
    2. Bump `metadata.version` per the suggested level
    3. If the change involves a rename, follow the cross-reference update pattern (grep all files, update all references)
    
    Batch multiple file changes within one skill into a single commit.
    
    ### Step 7 — Commit + push
    
    Group by skill. Examples:
    
    - One-skill update: `"slide-deck: emphasize spoken-aloud voice (write for the ear, not the page)"`
    - Multi-skill propagation: `"jab-hook, marketingskills:social: link placement (no inline URLs)"`
    - Cross-repo: one commit per repo. Don't atomic-commit across repos.
    
    ### Step 8 — Report
    
    Show:
    - Learnings extracted
    - Skill(s) updated (with version bumps)
    - Memory files written
    - Whether `compound-engineering:heal-skill` would be a useful QA pass
    - Anything flagged but skipped
    
    ### When NOT to use UPDATE mode
    
    Don't add ceremony to surgical edits. If the user says "add this one bullet to X.md," just Edit. UPDATE mode earns its keep when:
    
    1. **Multiple skills are affected** by one learning (cross-skill propagation)
    2. **Bulk extraction** from a long session
    3. **Memory-vs-skill decision** is unclear (need explicit triage)
    4. **Version discipline matters** (about to commit and want sane semver)
    
    For one-line updates with no cross-skill implications: just Edit.
    
    ---
    
    ## Composes with
    
    - **`watch-video`** — load-bearing for CREATE / from-video. Visual-mode output (transcript + key visual moments + summary) is the input for skill synthesis. Always call in `visual` mode for process recordings — UI state matters as much as words.
    - **`second-brain`** — optionally capture source video/dump as `raw/call-<slug>.md` or `raw/note-<slug>.md` so the source artifact lives alongside the skill it produced.
    - **`toolify`** — sibling in the `-ify` trifecta. Use `toolify` when the goal is adding an integration/MCP/API, not authoring a skill.
    - **`loopify`** — sibling in the `-ify` trifecta. Use `loopify` for agent-loop setup rather than a skill.
    - **`compound-engineering:create-agent-skill`** (agent) — call for format and best-practices expertise
    - **`compound-engineering:skill-creator`** (skill) — deeper best-practices reference
    - **`compound-engineering:heal-skill`** (skill) — QA pass after any mode
    
    ## Notes on quality
    
    - **Cite the source.** Whether chat, video, dump, external URL, or user-named learning — the SKILL.md body should reference where each decision came from. Makes revising easier.
    - **Don't over-engineer v0.1.** Ship a minimal SKILL.md + 1–2 references files. Iterate after first use. Most generated skills are over-scoped.
    - **Verb-noun naming** where possible (matches `watch-video`, `read-book`, `paste`). Single-word noun names are fine for distinctive concepts (`decide`, `pm`, `paste`, `skillify`).
    - **Always reference Anthropic's official guidance** for the schema — don't invent format conventions.
    - **Attribution is non-negotiable** for ADAPT mode. Every adapted skill ships with `references/attribution.md`.
    - **License is a hard gate.** Don't proceed on GPL/proprietary without explicit approval.
    - **Per-file approval in UPDATE mode.** Small changes are easy to OK; bundling forces all-or-nothing.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related