Skip to content

Instantly share code, notes, and snippets.

View yjwong's full-sized avatar

Wong Yong Jie yjwong

View GitHub Profile

How Claude Code Implements Skills

This document explains how the Skills system works in Claude Code, based on analysis of the Skill tool documentation and observed behavior.

Overview

Skills are a mechanism for injecting domain-specific knowledge and instructions into Claude's context at runtime. They don't execute code directly—instead, they provide detailed guidance that Claude follows when performing tasks.

Architecture

Execute a skill within the main conversation
<skills_instructions>
When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.
When users ask you to run a "slash command" or reference "/<something>" (e.g., "/commit", "/review-pr"), they are referring to a skill. Use this tool to invoke the corresponding skill.
<example>
User: "run /commit"
Assistant: [Calls Skill tool with skill: "commit"]
Document Pages Mean Time Pages/sec GPU Memory
Academic paper (equations) 10 49.3s 0.20 26.7GB
Research paper 40 103.6s 0.39 26.7GB
Programming textbook 240 482.5s 0.50 26.7GB
Parser 10 pages 40 pages License
DeepSeek-OCR (VLLM) 49.3s 103.6s MIT
marker-pdf v1.10.1 319.2s 625.9s GPL-3.0
marker-pdf v1.8.0 4.6s 9.2s GPL-3.0
markitdown 0.25s 1.0s MIT
name: No Fill vs FFFFFF Detection Test
description: Demonstrates that getCellProperties() and format.fill.color both return FFFFFF even when a cell has No Fill in Excel.
host: EXCEL
api_set: {}
script:
content: |-
document.getElementById("setup").addEventListener("click", setup);
document.getElementById("run").addEventListener("click", runRead);
async function setup() {
@yjwong
yjwong / lark-wayland-binary-patch.md
Last active January 18, 2026 14:23
Lark client patch for Wayland

Version 7.59.12

The process to make this version work is similar to version 7.28.10. Simply modify /usr/share/applications/bytedance-lark.desktop, adding the --ozone-platform-hint=auto flag to the Exec line.

Set app_id

To fix this, look for this pattern in libframe.so at file offset 0x8c1bc8b (ui::XDGToplevelWrapperImpl::SetAppId):

80 7e 17 00 79 03 4d 8b 09
@yjwong
yjwong / dsdt.dsl
Created June 24, 2023 19:29
Patched DSDT for UM3402YA for CS35L42
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20200925 (64-bit version)
* Copyright (c) 2000 - 2020 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of dsdt.dat, Sat Jun 17 23:19:04 2023
*
* Original Table Header:
@yjwong
yjwong / gist:fc837e35a88d666eb342aa001bdca9a9
Created June 24, 2023 19:27
Brain dump of debugging why AX200 Bluetooth is missing under Linux
Key E slot
Key A+E cards
/sys/devices/pci0000:00/0000:00:08.1/0000:04:00.4
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 13d3:5463 IMC Networks USB2.0 HD UVC WebCam
Bus 001 Device 002: ID 04f3:0c6e Elan Microelectronics Corp. ELAN:Fingerprint
@yjwong
yjwong / WebpackAssetsPlugin.ts
Created April 15, 2023 04:31
Redirect missing Webpack assets to S3 bucket
import * as path from 'path';
import * as Boom from '@hapi/boom';
import { plugin as H2O2 } from '@hapi/h2o2';
import * as Hapi from '@hapi/hapi';
export interface WebpackAssetsPluginOptions {
bundleStore: {
enabled: boolean;
uri: string;
@yjwong
yjwong / gist:e5f8b9cc20c0547dc13b817b27e4e48a
Created March 5, 2023 20:03
Things I found on the ASUS UM3402
#define ASUS_WMI_DEVID_CAMERA_LED 0x60079
#define ASUS_WMI_DEVID_FANL_CTRL 0x110019
-> 0x1 whisper mode
-> 0x2 performance mode
-> 0x3 balanced mode