is-skill/SKILL.md
This skill should be used when the user asks "is this a skill", "can we extract a skill", "skill extraction", "is there a reusable pattern here", "should this be a skill", "extract skill", or wants to analyze the current session for reusable patterns that could become a Claude Code skill. Also triggered by the /is-skill command.
npx skillsauth add pmatos/skills is-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyze the current session's conversation, context, and work patterns to determine whether the knowledge, workflow, or problem-solving approach used could be extracted into a reusable Claude Code skill. If a skill is worth extracting, classify it as user-level (general, cross-project) or project-specific, then create a GitHub issue in the appropriate repository.
Run Steps 1 and 2 in parallel (they are independent). Then run Steps 3-7 sequentially.
Mine the current session's conversation to reconstruct what has been happening. Review:
To check for recurring patterns across sessions, mine session logs:
git rev-parse --show-toplevel
Compute the project session directory. The path encoding replaces / with -. For example, /home/user/myproject becomes ~/.claude/projects/-home-user-myproject/.
For up to the 5 most recent session logs, extract user messages and assistant text responses to look for recurring patterns:
python3 -c "
import json, sys, os
log_dir = sys.argv[1]
if not os.path.isdir(log_dir):
print('No Claude session history found for this project.')
sys.exit(0)
files = sorted(
[f for f in os.listdir(log_dir) if f.endswith('.jsonl')],
key=lambda f: os.path.getmtime(os.path.join(log_dir, f)),
reverse=True
)[:5]
if not files:
print('No Claude session logs found.')
sys.exit(0)
for fname in files:
path = os.path.join(log_dir, fname)
session_id = fname.replace('.jsonl', '')
print(f'\n=== Session: {session_id} ===')
with open(path, encoding='utf-8') as fh:
for line in fh:
line = line.strip()
if not line:
continue
try:
obj = json.loads(line)
except json.JSONDecodeError:
continue
msg = obj.get('message', {})
role = msg.get('role')
if role not in ('user', 'assistant'):
continue
content = msg.get('content', '')
if isinstance(content, list):
texts = []
for block in content:
if isinstance(block, dict):
if block.get('type') == 'text':
texts.append(block['text'][:300])
elif block.get('type') == 'tool_use':
texts.append(f'[tool: {block.get(\"name\", \"?\")}]')
elif isinstance(block, str):
texts.append(block[:300])
content = ' | '.join(texts)
elif isinstance(content, str):
content = content[:300]
else:
continue
if not content.strip():
continue
if '<system-reminder>' in content:
continue
print(f' [{role}] {content[:200]}')
" "$HOME/.claude/projects/<encoded-path>/"
Determine what project is being worked on and collect metadata needed for issue routing:
git rev-parse --show-toplevel
git remote get-url origin 2>/dev/null
Extract the GitHub owner/repo from the remote URL (supports both https:// and git@ formats).
Read the project's CLAUDE.md or AGENTS.md if present — understand what conventions and workflows are already codified.
Check if this is the pmatos/skills repository itself (if so, a "user-level" skill means adding it directly rather than filing an issue).
With the session context and project metadata in hand, evaluate whether a reusable skill can be extracted. Consider each of these skill indicators:
If no indicators are present, report that no skill extraction is warranted and explain why. Stop here.
Determine whether the extracted skill should be user-level or project-specific:
| Criterion | User-Level Skill | Project-Specific Skill |
|-----------|-----------------|----------------------|
| Scope | Works across any project | Tied to this project's architecture, APIs, or conventions |
| Dependencies | General tools (git, GitHub, language runtimes) | Project-specific frameworks, configs, or domain models |
| Knowledge | General engineering patterns | Project-internal knowledge (custom CLI, internal APIs, deployment) |
| Audience | Any developer using Claude Code | Contributors to this specific project |
| Issue target | pmatos/skills | Current project's repository |
Compose a structured skill proposal with:
debug-flaky-tests, generate-api-client).Present this proposal to the user and ask:
Do NOT proceed to Step 6 until the user approves.
After user approval, create a GitHub issue with the skill proposal.
New skill: <skill-name> — <one-line summary>
Use this template:
## Skill Proposal: `<skill-name>`
**Type:** User-level / Project-specific
**Complexity:** Simple / Medium / Complex
**Extracted from:** Session on <today's date>, working on <brief description of what was being done>
### Description
<description from Step 5>
### Trigger Phrases
- "<phrase 1>"
- "<phrase 2>"
- ...
### Proposed Workflow
1. <step 1>
2. <step 2>
3. ...
### Key Knowledge to Capture
<extracted knowledge from Step 5 — the insights that make this skill valuable>
### Example Session Excerpt
<Brief, anonymized excerpt showing the pattern in action — 3-5 lines max>
### Notes
- <any caveats, dependencies, or design considerations>
Try the following methods in order to create the issue:
mcp__github__create_issue or similar tools via ToolSearch. If available, use them.gh CLI: If available, use a heredoc to avoid shell escaping issues with multi-line markdown:
gh issue create --repo <owner/repo> --title "<title>" --body "$(cat <<'EOF'
<body>
EOF
)"
For user-level skills, the target repo is pmatos/skills — unless the current repo IS pmatos/skills, in which case skip issue creation and instead add the skill directly (create the <skill-name>/SKILL.md file and update CLAUDE.md and README.md).
For project-specific skills, the target repo is the current project's owner/repo (from Step 2).
Present a summary to the user:
## Skill Extraction Summary
**Skill:** `<name>`
**Type:** <user-level / project-specific>
**Issue:** <link to created issue, or "manual creation needed">
**Repository:** <target repo>
### What Was Captured
<1-2 sentence summary of the key knowledge extracted>
### Next Steps
- [ ] Implement the skill (create `<skill-name>/SKILL.md`)
- [ ] Add to CLAUDE.md and README.md
- [ ] Test with a real session
data-ai
Upscale raster images with a local OpenCV EDSR super-resolution model, then produce an exact target pixel size. Use when the user asks to upscale, enlarge, super-resolve, make a higher-resolution version, or create a wallpaper/print-size raster from an existing image while preserving the original artwork.
tools
This skill should be used when the user asks to "investigate issue", "investigate
development
This skill should be used when the user asks "what's going on", "wigo", "status", "where was I", "what were we doing", "catch me up", "tree status", "branch status", or wants a comprehensive situational briefing on the current git tree, session history, and associated PR. Also triggered by the /wigo command.
development
This skill should be used when the user asks to "plan this", "make a plan", "create an implementation plan", "how should I implement", "design the implementation", "plan the refactor", "plan the migration", "plan the feature", "break this down into steps", "implementation strategy", "deep plan", "thorough plan", or wants a thorough, multi-phase implementation plan with codebase exploration before writing any code.