Skill Workshop logo

Skill Workshop

Community
grayodesa
skill-workshop

Analyze Claude Code session history to discover skill candidates. Finds repeating explanations, tool chains, and workaround patterns across project sessions. Use when user wants to find what should become a skill, mine session history, or extract tribal knowledge.

Overview

Publishergrayodesa
Repositoryskill-workshop
Skill nameskill-workshop
Stars
70
Forks
5
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by grayodesa on GitHub. Read the source before you install it.

Installation

Install the Skill Workshop AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/grayodesa/skill-workshop/tree/main/skills/skill-workshop
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/grayodesa/skill-workshop.git /tmp/skill-workshop
mkdir -p .claude/skills
cp -r /tmp/skill-workshop/skills/skill-workshop .claude/skills/skill-workshop
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Skill Workshop in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Skill Workshop on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Skill Workshop is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Skill Workshop

Mine project session history for repeating patterns and propose new skills.

Overview

This skill works in two phases:

  1. Extract & Analyze — delegate to the session-analyzer subagent (Haiku) which parses JSONL session files and identifies pattern candidates
  2. Present & Generate — read the analysis results, present candidates to the user, and generate SKILL.md drafts for approved candidates

Step 1: Determine target project

Use $ARGUMENTS as the project path. If empty, use the current working directory.

bash
PROJECT_PATH="${ARGUMENTS:-$(pwd)}"
echo "Target project: $PROJECT_PATH"

Verify sessions exist by checking the encoded project directory:

bash
ENCODED=$(echo "$PROJECT_PATH" | sed 's|^/||; s|/|-|g')
for PREFIX in "-${ENCODED}" "${ENCODED}"; do
  DIR="$HOME/.claude/projects/${PREFIX}"
  if [ -d "$DIR" ]; then
    COUNT=$(ls "$DIR"/*.jsonl 2>/dev/null | grep -v '/agent-' | wc -l | tr -d ' ')
    echo "Found $COUNT session files in $DIR"
    break
  fi
done

If no sessions found, inform the user:

  • Check if the path is correct
  • Note that Claude Code deletes sessions after 30 days by default
  • Suggest: "cleanupPeriodDays": 100000 in ~/.claude/settings.json

If sessions found, report the count and proceed.

Step 2: Delegate extraction to session-analyzer

Clean previous temporary files:

bash
rm -f /tmp/sw-*.jsonl /tmp/sw-*.json /tmp/sw-*.txt

Delegate the extraction and analysis work to the session-analyzer subagent. Tell it the project path and session directory. It will:

  • Parse all JSONL session files via bash extraction
  • Identify repeated explanations, tool chain patterns, and workaround patterns
  • Score and rank candidates
  • Write results to /tmp/skill-workshop-results.json

Wait for the subagent to complete.

Step 3: Read and present results

Read /tmp/skill-workshop-results.json. Present to the user:

Header:

  • Project path
  • Sessions analyzed (count and date range)
  • Extraction stats (messages, tool calls, errors found)

Candidates table:

For each candidate (sorted by rank):

### #{rank}: {suggested_name}
Type: {signal_type} → proposed skill: {proposed_skill_type}
Score: {score} | Found in {frequency} sessions

{description}

Evidence:
- Session {id}: "{example}"
- Session {id}: "{example}"

Would create: {draft_content_hint}

After listing all candidates, ask: "Which candidates should I develop into skill drafts? (numbers, 'all', or 'none')"

Step 4: Generate SKILL.md drafts

For each approved candidate, generate a proper SKILL.md following these practices:

Skill authoring rules

  1. Frontmatter:

    • name: kebab-case, match the suggested_name
    • description: CRITICAL field — Claude uses this to decide when to load the skill. Format: "What it does. Use when [trigger conditions]." Write in third person. Max 200 characters. Include trigger words.
  2. Body structure:

    • Start with a 1-2 sentence purpose statement
    • Use imperative language ("Run...", "Check...", not "You should...")
    • Include concrete examples from the evidence
    • Keep under 500 lines total
  3. By skill type:

    knowledge (from repeated_explanation):

    • State the facts/rules directly
    • Include the exact terminology, values, configs the user kept repeating
    • Add a "Common mistakes" section listing what Claude gets wrong

    workflow (from tool_chain):

    • Step-by-step procedure
    • Include the tool sequence as explicit steps
    • Add validation checkpoints between steps

    gotcha (from workaround):

    • Lead with the error pattern (what goes wrong)
    • Then the fix (what to do instead)
    • Make it a concise "DO this, NOT that" format
    • If possible, include a validation command
  4. Write to: .claude/skills/{name}/SKILL.md Create the directory if needed.

  5. DO NOT auto-enable. Tell the user to review and test.

Example gotcha skill

markdown
---
name: pip-break-system-packages
description: >
  Prevents pip externally-managed-environment errors on this system.
  Use when installing Python packages with pip.
---

# pip install configuration

On this system, always use the `--break-system-packages` flag with pip.

## The problem
Bare `pip install <package>` fails with:
`error: externally-managed-environment`

## The fix
Always run:
```bash
pip install <package> --break-system-packages

This applies to ALL pip install commands including:

  • pip install -r requirements.txt --break-system-packages
  • pip install -e . --break-system-packages
  • pip install --upgrade <package> --break-system-packages

### Example knowledge skill

```markdown
---
name: milvus-collection-config
description: >
  Milvus connection details and collection schema for this project.
  Use when working with vector database, embeddings, or Milvus queries.
---

# Milvus Configuration

## Connection
- Host: localhost
- Port: 19530
- No authentication required in dev

## Collection: expert_tax_chunks
- Fields: id (int64, primary), text (varchar), vector (float_vector, dim=1024), metadata (json)
- Index: IVF_FLAT on vector field, nlist=128
- Metric: COSINE

## Common queries
[... concrete examples from evidence ...]

Step 5: Summary

After generating drafts, report:

  • How many skills created, where
  • Remind user to review each SKILL.md
  • Suggest testing: "Try asking Claude something that should trigger the skill"
  • Note: newly created skills may need a session restart or /context refresh to be discovered

Frequently asked questions

What does the Skill Workshop AI skill do?

Analyze Claude Code session history to discover skill candidates. Finds repeating explanations, tool chains, and workaround patterns across project sessions. Use when user wants to find what should become a skill, mine session history, or extract tribal knowledge.

Why use Skill Workshop on TypingMind?

Because you install it once and use it with any model. Skill Workshop is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Skill Workshop in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/grayodesa/skill-workshop/tree/main/skills/skill-workshop. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Skill Workshop?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Skill Workshop?

As many as you like. As long as a model supports skills, you can use Skill Workshop with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Skill Workshop AI skill free?

It is published on GitHub by grayodesa. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇